tinkerssearch-1.6.1-1.18.2.jar
Curse Maven Snippet
What's new
TinkersSearch-1.6.1
🆕 新增 / Added
-
全新统一动画系统:全局单例
AnimationManager+RenderTickEvent驱动,提供缓动枚举、ARGB 插值、触发型Animation、持久型Animator四层基础设施 -
面板滑入滑出动画迁移到统一动画系统,缓动
EASE_OUT_CUBIC,动画中途反向从当前 offset 平滑过渡 -
部件展开 / 收起动画:展开时尺寸先到位再淡入内容;收起时内容先淡出再收缩卡片,方向反转无跳变
-
部件邻居卡片位置平滑动画:展开 / 收起时其余卡片以 90ms 时间常数平滑让位,点击跟随动画中的视觉位置
-
详情页窗口开关动画:打开时 0.92 → 1.0 缩放 + 遮罩淡入;关闭时 1.0 → 0.96 缩放 + 遮罩淡出,完成后才切换屏幕
-
详情页翻页动画:点击
◀ / ▶或键盘← / →时,卡片网格先淡出滑出 40px,数据切换后从另一侧滑入淡入,标题、翻页按钮、页脚纹丝不动 -
触发型反馈动画:左键点击卡片缩放脉冲、点击收藏星标缩放脉冲、点击刷新按钮缩放脉冲,均带过冲缓动
-
持久型过渡动画:Tab hover 背景色过渡、Tab 指示器平滑滑动、卡片 hover 背景 / 边框过渡、刷新按钮 hover 颜色过渡、搜索框 focus 边框变亮、滚动条 thumb 位置平滑跟随(拖拽时立即跟随)
-
面板卡片图标延迟淡入淡出:面板滑入到 80% 位置时图标才开始淡入;面板刚开始滑出图标就淡出
-
详情页部件标题行显示浇筑模式标签:单页材料显示
[直接浇筑],复合页显示[浇筑于: 材料名],材料名跟随游戏语言动态本地化 -
1.19.2 完整移植:动画模块 + 详情页 + 面板层,全部重写适配
Component.literal/ForgeRegistries.FLUIDS.getKey()/GuiGraphics前的 API -
1.20.1 完整移植:
GuiGraphics全面替换PoseStack,renderWidget/updateWidgetNarration适配,AbstractWidget自有 x/y/width/height 字段 -
Brand-new unified animation system: global
AnimationManagersingleton driven byRenderTickEvent, with four-layer infrastructure — easing enum, ARGB interpolation, trigger-typeAnimation, persistentAnimator -
Panel slide in/out migrated to the unified animation system,
EASE_OUT_CUBICeasing, mid-animation reversal smoothly interpolates from the current offset -
Part card expand / collapse animation: expand grows size first then fades in content; collapse fades out content first then shrinks the card, no jump on direction reversal
-
Neighbor part card position smoothing: surrounding cards smoothly yield with a 90ms time constant, clicks follow the animated visual position
-
Detail window open/close animation: opens with 0.92 → 1.0 scale + mask fade-in; closes with 1.0 → 0.96 scale + mask fade-out, screen swap happens only after completion
-
Detail screen page-turn animation: clicking
◀ / ▶or pressing← / →fades + slides the card grid out by 40px, swaps data, then slides + fades the new page in from the opposite side — title, page buttons, and footer stay put -
Trigger-type feedback animations: card click pulse, favorite star pulse, refresh button pulse, all with overshoot easing
-
Persistent transition animations: Tab hover background, Tab indicator slide, card hover background / border, refresh button hover color, search box focus border, scrollbar thumb position (immediate while dragging, smooth otherwise)
-
Panel card icon delayed fade: icons only fade in once panel slide is at 80%; icons fade out immediately when panel starts sliding out
-
Detail screen part title row now shows the casting mode: single-page materials show
[Direct Casting], composite pages show[Cast onto: material], with the material name dynamically localized to the current language -
Full 1.19.2 port: animation module + detail screen + panel layer, all rewritten for
Component.literal/ForgeRegistries.FLUIDS.getKey()/ pre-GuiGraphicsAPI -
Full 1.20.1 port:
GuiGraphicsfully replacesPoseStack,renderWidget/updateWidgetNarrationadapted,AbstractWidgetuses its own x/y/width/height fields
🔄 变更 / Changed
-
面板滑入滑出动画状态外置:
PanelAnimationManager不再自持offset/targetOffset/animationStartTime/isAnimating,全部由AnimationManager的"panel.slide"动画 key 持有;对外接口保持不变 -
详情页部件收起流程重排:原来卡片立即缩小 + 内容立即消失,现改为先内容淡出(80ms)→ 卡片再收缩(180ms),节奏更清晰
-
详情页翻页仅作用于卡片网格:标题、翻页按钮、页脚不参与滑动,只有卡片网格先淡出滑出 → 数据切换 → 滑入淡入
-
窗口开关动画不做 alpha 合成:只做缩放 + 全屏遮罩 alpha,避免污染全局 GL 状态导致 tooltip 被"蒙层"覆盖
-
图标淡入淡出改为单曲线:
progress < 0.8时 alpha = 0,0.8 ≤ progress ≤ 1.0时线性到 1,同时表达"打开晚出现、关闭早消失" -
动画节奏整体加速:
EXPAND_DURATION250ms → 180ms,CONTENT_FADE_DURATION150ms → 80ms,PART_POS_TAU140ms → 90ms -
动画 key 命名约定化:
<模块>.<类型>[:<身份>],例如panel.slide/panel.card.hover:<fluidId>/detail.part.expand:<key>/detail.page.turn,便于按前缀批量清理 -
Panel slide animation state externalized:
PanelAnimationManagerno longer holdsoffset/targetOffset/animationStartTime/isAnimating; all of it lives in the"panel.slide"animation key insideAnimationManager; public API is unchanged -
Detail part collapse reordered: previously card shrank + content vanished at once; now content fades out first (80ms) → card shrinks after (180ms) for clearer pacing
-
Detail page turn only affects the card grid: title, page buttons, and footer do not slide — only the card grid fades + slides out, data is swapped, then slides + fades in
-
Window open/close no longer does alpha blending: only scale + full-screen mask alpha, avoiding pollution of global GL state that caused the "veil" over tooltips
-
Icon fade switched to a single curve: alpha = 0 while
progress < 0.8, linearly to 1 while0.8 ≤ progress ≤ 1.0, capturing both "late on open, early on close" -
Overall animation timing sped up:
EXPAND_DURATION250ms → 180ms,CONTENT_FADE_DURATION150ms → 80ms,PART_POS_TAU140ms → 90ms -
Animation key naming convention:
<module>.<type>[:<id>], e.g.panel.slide/panel.card.hover:<fluidId>/detail.part.expand:<key>/detail.page.turn, enabling prefix-based bulk cleanup
🐛 修复 / Fixed
-
修复面板关闭动画不播放:
startHideAnimation在读取当前 offset 之前就修改了targetVisible,导致动画起点与终点重合 -
修复面板渲染位置与命中检测不一致:
PanelRenderer在panel.getPanelX()之上再次叠加animationOffset,视觉位置是鼠标命中位置的两倍 -
修复面板关闭时滑出动画被立即杀死:
handleSmelteryClose改为调用forceHideImmediate(),不再启动随后被清空的滑出动画 -
修复详情页 tooltip 被"蒙层"覆盖:窗口内容不再修改全局
setShaderColor,改用缩放 + 颜色 alpha,tooltip 与窗口内容彻底分离 -
修复部件展开动画中途反向跳变:旧实现总从端点重新起播,新实现从当前插值位置起播
-
修复部件淡出 / 收缩过程中卡片溢出原槽位:布局尺寸由"视觉展开态"决定,淡出和收缩阶段保持扩展布局
-
修复
IMaterial.getDisplayName()在 1.19+ 被移除导致编译失败:材料名改为直接构造material.<ns>.<path>翻译键交给Component.translatable()解析,与流体卡片走同一套本地化机制 -
修复 1.19.2
Fluid#getRegistryName()被移除:统一替换为ForgeRegistries.FLUIDS.getKey(fluid) -
修复 1.19.2
TextComponent/TranslatableComponent弃用:统一替换为Component.literal/Component.translatable -
修复 1.20.1
AbstractWidget父类 x/y/width/height 变为私有:FloatingSearchPanel改为自有字段 + 独立 getter -
修复 1.20.1
renderButton被renderWidget取代:FloatingSearchPanel覆写renderWidget -
修复 1.20.1
updateNarration被updateWidgetNarration取代:同样覆写替换 -
Fixed panel close animation not playing:
startHideAnimationmutatedtargetVisiblebefore reading the current offset, making the animation start and end coincide -
Fixed panel render position mismatching hit detection:
PanelRendereraddedanimationOffseton top ofpanel.getPanelX(), making the visual position move at twice the mouse hit position -
Fixed slide-out animation being killed immediately on smeltery close:
handleSmelteryClosenow callsforceHideImmediate(), no longer spawning a slide-out that is subsequently cleared -
Fixed detail tooltip being covered by a "veil": window content no longer modifies global
setShaderColor, using scale + color alpha instead, fully separating tooltip from window content -
Fixed part expand animation jumping on mid-flight reversal: old implementation always restarted from an endpoint; new one restarts from the current interpolated value
-
Fixed part cards overflowing their slot during fade-out / shrink: layout size determined by "visual expanded state", keeping the expanded layout through fade-out and shrink
-
Fixed
IMaterial.getDisplayName()removal in 1.19+: material name now constructed directly as thematerial.<ns>.<path>translation key fed toComponent.translatable(), sharing the same localization path as fluid cards -
Fixed
Fluid#getRegistryName()removal in 1.19.2: uniformly replaced withForgeRegistries.FLUIDS.getKey(fluid) -
Fixed
TextComponent/TranslatableComponentdeprecation in 1.19.2: uniformly replaced withComponent.literal/Component.translatable -
Fixed
AbstractWidgetx/y/width/height becoming private in 1.20.1:FloatingSearchPanelswitched to its own fields + getters -
Fixed
renderButtonreplaced byrenderWidgetin 1.20.1:FloatingSearchPanelnow overridesrenderWidget -
Fixed
updateNarrationreplaced byupdateWidgetNarrationin 1.20.1: same override swap
⚡ 优化 / Improved
-
动画驱动统一化:移除
PanelRenderer每帧调用animationManager.updateAnimation()的旧驱动,改为TinkersSearch.onRenderTick每帧调用AnimationManager.update(),无活跃动画时几乎零成本 -
动画实例复用:同 key 的
Animation/Animator实例在AnimationManager内复用,避免每帧 new 对象 -
位置动画支持中途目标变化:使用
Animator的指数趋近模型,动画中途改变目标从当前值继续,不会跳变 -
详情页部件布局缓存优化:
useExpandedLayout一次判定视觉展开态,渲染与布局共用同一判据,避免每帧重复计算 -
详情页翻页 alpha 延迟应用:
currentPageAlpha ≤ 0.01时直接跳过卡片渲染并清空命中区,省去完全透明帧的绘制开销 -
Unified animation driving: removed the per-frame
animationManager.updateAnimation()call fromPanelRenderer, replaced withTinkersSearch.onRenderTickcallingAnimationManager.update()— nearly zero cost when no animation is active -
Animation instance reuse: same-key
Animation/Animatorinstances are reused insideAnimationManager, avoiding per-frame allocations -
Position animation supports mid-flight target changes: uses the
Animatorexponential-approach model, continuing from the current value when the target changes, no jump -
Detail part layout cache optimization:
useExpandedLayoutdecides the visual expanded state once and both render and layout share the same predicate, avoiding per-frame recomputation -
Detail page-turn alpha applied late: when
currentPageAlpha ≤ 0.01the card render is skipped and hit areas are cleared, saving draw cost on fully transparent frames
🔧 技术改进 / Technical Improvements
-
新增
client.animation.core包:Easing(11 种缓动)、ColorUtil(ARGB 插值 / 缩放)、Animation(触发型)、Animator(持久型)、AnimationManager(全局单例,注册 / 驱动 / 清理) -
新增
client.animation.controller包:PanelAnimations(卡片 hover / Tab / 指示器 / 空状态 / 刷新 / 脉冲)、WidgetAnimations(SearchBox focus / hover、ScrollBar thumb / hover)、DetailAnimations(窗口开关)、DetailPageAnimations(翻页) -
版本兼容层:
Easing/ColorUtil/Animation/Animator/AnimationManager为纯逻辑,无 MC 依赖,三版本共享同一份代码 -
SearchBox组件新增setAnimationId(String),focus / hover 平滑过渡;未指定 id 时退化为无动画,完全向后兼容 -
ScrollBar组件新增setAnimationId(String),thumb 位置平滑跟随、hover 颜色过渡;拖拽时立即跟随,滚轮滚动时平滑 -
SmelteryDataHelper.drawFluidIcon拆为两个重载,新增带外部alpha参数的版本,供面板图标延迟淡入淡出使用 -
PanelAnimationManager重写:新增hideImmediate()(父界面关闭时立即隐藏)与isTargetVisible()(暴露滑入滑出方向) -
FloatingSearchPanel新增forceHideImmediate()委托,与hideImmediate()语义对齐 -
TinkersSearch.onRenderTick挂载AnimationManager.update(),使用RenderTickEvent.Phase.START保证每帧渲染读到最新值 -
动画 key 前缀批量清理:
AnimationManager.stopPrefix("panel.")/stopPrefix("widget.")/stopPrefix("detail.part.")/stopPrefix("detail.page."),界面关闭时无残留 -
跨 1.18.2 / 1.19.2 / 1.20.1 三版本维护同一份动画系统代码,仅 UI 渲染入口有 API 差异(
PoseStack↔GuiGraphics) -
New
client.animation.corepackage:Easing(11 easings),ColorUtil(ARGB interpolation / scaling),Animation(trigger type),Animator(persistent type),AnimationManager(global singleton — register / drive / cleanup) -
New
client.animation.controllerpackage:PanelAnimations(card hover / Tab / indicator / empty state / refresh / pulses),WidgetAnimations(SearchBox focus / hover, ScrollBar thumb / hover),DetailAnimations(window open/close),DetailPageAnimations(page turn) -
Version-compat layer:
Easing/ColorUtil/Animation/Animator/AnimationManagerare pure logic with no MC dependency, shared across all three versions -
SearchBoxgainssetAnimationId(String)for smooth focus / hover transitions; falls back to no animation when unset, fully backward-compatible -
ScrollBargainssetAnimationId(String)for smooth thumb follow and hover color transition; immediate while dragging, smooth on wheel scroll -
SmelteryDataHelper.drawFluidIconsplit into two overloads, with a new version taking an externalalphaparameter for the panel icon delayed fade -
PanelAnimationManagerrewritten: addedhideImmediate()(immediate hide when parent screen closes) andisTargetVisible()(exposes slide direction) -
FloatingSearchPanelgains aforceHideImmediate()delegate aligned withhideImmediate() -
TinkersSearch.onRenderTickhooksAnimationManager.update(), usingRenderTickEvent.Phase.STARTso each frame reads the latest values -
Animation key prefix bulk cleanup:
AnimationManager.stopPrefix("panel.")/stopPrefix("widget.")/stopPrefix("detail.part.")/stopPrefix("detail.page."), no residue on screen close -
One animation system codebase maintained across 1.18.2 / 1.19.2 / 1.20.1, with only the UI rendering entry differing (
PoseStack↔GuiGraphics)

