promotional bannermobile promotional banner

Tinkers' Search

Tinkers' Construct Smeltery Fluid Search Mod. Adds fluid search, filtering, and JEI quick interaction to the Smeltery GUI.
Back to Files

tinkerssearch-1.6.0-1.20.1.jar

File nametinkerssearch-1.6.0-1.20.1.jar
Uploader
leipishuleipishu
Uploaded
Sep 19, 2026
Downloads
51
Size
608.2 KB
Mod Loaders
Forge
File ID
8920439
Type
R
Release
Supported game versions
  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:tinkers-search-1664879:8920439")

Learn more about Curse Maven

What's new

TinkersSearch-1.6.0

🆕 新增 / Added

  • 全新流体详情界面:右键点击流体卡片打开,展示该流体的全部下游信息

  • 浇筑配方列表:显示该流体能浇筑出的所有物品,含所需 mB、是否有模具、当前可浇筑次数

  • 部件网格视图:展示该流体可浇筑的全部工具部件(镐头、手柄、大剑刃、修补件等),带图标、材质染色、名称

  • 部件卡片展开动画:点击部件卡片展开详情,显示属性、词条、需求量、可制作数量,带缓动动画与内容淡入

  • 详情页多页翻页导航:一个流体对应多个材料页时(如玻璃本体 + 熟铁变体),顶部显示 ◀ 1/N ▶ 翻页栏,键盘 ←/→ 亦可切换

  • 详情页搜索框:实时过滤浇筑列表和部件网格

  • 详情页滚动条:内容超出时右侧显示可拖拽滚动条,支持鼠标滚轮和拖拽,3px 窄轨道提供 ±6px 命中扩展

  • 变体材料完整支持:正确识别并显示 tconstruct:iron#wrought(熟铁)等变体材料,含独立图标、独立页面、独立属性与词条

  • 复合浇筑页:正确解析"流体 + 基底材料 → 变体材料"配方,每个复合结果独立成页

  • 修补件显示规则:本体页显示材料所有可做部件(含修补件);复合页仅在材料具备工具部件 stats(head/handle/limb)时显示修补件

  • 浮动面板滚动位置保留:打开详情页前自动保存滚动快照,关闭后恢复原位

  • 合金搜索拼音支持:合金/材料页搜索框支持拼音全拼及首字母匹配

  • 流体卡片悬停提示:鼠标悬停显示完整显示名 + 注册名

  • New fluid detail screen: right-click any fluid card to open, showing all downstream information

  • Casting recipe list with mB cost, cast requirement, and available craft count

  • Part grid view: all tool parts castable from this fluid, with icon, material tint, and name

  • Card expand animation with easing and content fade-in, showing stats, traits, and craft counts

  • Detail screen multi-page navigation for fluids with multiple material pages (e.g. glass base + wrought iron variant), with ◀ 1/N ▶ bar and ←/→ keys

  • Detail screen search box filtering both recipe list and part grid in real time

  • Detail screen scrollbar with drag support, mouse wheel, and hoverExpandX hit-area expansion on 3px track

  • Full variant material support: recognizes and displays variant materials (e.g. tconstruct:iron#wrought), with independent icon, page, stats and traits

  • Composite casting pages: correctly parses "fluid + base material → variant material" recipes, each composite result gets its own page

  • Repair kit display rules: base page shows all craftable parts (incl. repair kit); composite pages only show repair kit when the material has tool part stats (head/handle/limb)

  • Floating panel scroll position preservation: saves scroll snapshot before opening detail screen, restores on close

  • Alloy search pinyin support: alloy/material tab search now supports full pinyin and initials matching

  • Fluid card hover tooltip: shows full display name + registry name on hover

🔄 变更 / Changed

  • 合金模式进入方式改变:合金 Tab 不再作为独立搜索结果页,与冶炼炉、全部材料 Tab 使用同一套卡片网格与搜索框。搜索框内容在切换 Tab 时保留,合金 Tab 会用当前关键词实时过滤材料列表。

  • Tab 分页逻辑重写:

    • 三个 Tab(冶炼炉 / 全部材料 / 合金)共用同一容器尺寸和滚动条位置,切 Tab 时重置滚动偏移到顶部
    • 每个 Tab 独立维护自己的滚动偏移(smeltery / allMaterials / alloy 三个字段),互不干扰
    • 合金 Tab 内部再分两级:材料列表页(默认)与结果页(选中材料后进入)。两级的滚动偏移独立维护(alloyMaterialsScrollOffset / alloyResultsScrollOffset),返回材料列表时不会丢失原来的滚动位置
    • 切换 Tab 或隐藏面板时,所有 Tab 的滚动偏移一并清零;打开详情页时通过快照机制保留并恢复
    • Tab 栏在标题栏下方独立成行,显示顺序固定:冶炼炉 → 全部材料 → 合金
  • 流体详情页改为右键进入:原先左键点击流体卡片是把流体移动到冶炼炉底部,现在保留该行为的同时,右键点击打开详情页

  • PanelLayoutCalculator.updatePanelPosition 不再重置滚动偏移:改由 switchTab / startHideAnimation / 快照机制显式管理

  • Alloy mode entry changed: Alloy tab is no longer a standalone search result page; it now shares the same card grid and search box with Smeltery and Materials tabs. Search box content is preserved when switching tabs, and Alloy tab uses the current keyword to filter the material list in real time.

  • Tab paging logic rewritten:

    • Three tabs (Smeltery / Materials / Alloy) share the same container size and scrollbar position; switching tabs resets the scroll offset to the top
    • Each tab maintains its own scroll offset (smeltery / allMaterials / alloy fields), independent of each other
    • The Alloy tab has two nested levels: material list (default) and result page (after selecting a material). The two levels maintain independent scroll offsets (alloyMaterialsScrollOffset / alloyResultsScrollOffset), so returning to the material list does not lose the previous scroll position
    • Switching tabs or hiding the panel clears all scroll offsets; opening the detail screen preserves them via the snapshot mechanism
    • Tab bar is a separate row below the title bar, fixed order: Smeltery → Materials → Alloy
  • Fluid detail screen now opens on right-click: previously left-click moved the fluid to the smeltery bottom; that behavior is preserved, and right-click now opens the detail screen

  • PanelLayoutCalculator.updatePanelPosition no longer resets scroll offsets: managed explicitly by switchTab / startHideAnimation / snapshot mechanism

🐛 修复 / Fixed

  • 修复合金 / 全部材料 Tab 遗漏流体:材料列表改为"注册表扫描 + 参与任意配方过滤",与合金配方解耦

  • 修复合金页重复页:跳过"结果材料 == 本体材料"的冗余复合页(如玫瑰金 + 线 → 玫瑰金)

  • 修复浮动面板关闭详情页后回到顶部:移除 updatePanelPosition 里的 resetScrollOffsets,改用快照恢复

  • 修复合金页返回时丢失材料列表位置:将合金滚动偏移拆分为 material / results 两个独立字段,按当前状态自动路由

  • 修复只有修补件的材料显示空白:只要材料 isCraftable() 就显示修补件,同时用黑名单排除 clay/lava/honey/water 等占位材料

  • 修复变体材料图标显示为基础材料:向 ItemStack NBT 强制写回完整变体 ID(base#variant),让匠魂渲染器走变体分支

  • 修复变体材料页面不出现:toMaterialIdStrict 正确解析 MaterialVariant{...} 包装,保留 #variant 信息

  • 修复复合页误判为自循环:变体 ID 用 __variant 后缀编码(ResourceLocation 不接受 #),与本体 ID 不再相等

  • 修复 MaterialResolver / PartRequirementsCache 后台线程拿到空 map:改为无条件同步构建,配合 volatile + 双重检查锁

  • 修复 RecipesUpdatedEvent 触发后缓存未重建:invalidate() 全部清空(含变体相关)

  • Fixed missing fluids in alloy / materials tabs: material list now uses "registry scan + participate-in-any-recipe filter", decoupled from alloy recipes

  • Fixed duplicate composite pages: skip redundant composite where "result material == base material" (e.g. rose gold + string → rose gold)

  • Fixed floating panel scrolling to top after closing detail screen: removed resetScrollOffsets from updatePanelPosition, switched to snapshot restore

  • Fixed alloy page losing material list position on back: split alloy scroll offset into separate material / results fields, auto-routed by current state

  • Fixed blank page for repair-kit-only materials: show repair kit when material isCraftable(), with blacklist excluding clay/lava/honey/water

  • Fixed variant material icons showing base material: force-write full variant ID (base#variant) to ItemStack NBT so Tinkers renders the variant

  • Fixed variant material pages not appearing: toMaterialIdStrict now correctly unwraps MaterialVariant{...} and preserves #variant

  • Fixed composite misidentified as self-loop: variants encoded as __variant suffix (ResourceLocation rejects #)

  • Fixed background thread getting empty map in MaterialResolver / PartRequirementsCache: switched to unconditional synchronous build with volatile + double-checked locking

  • Fixed caches not rebuilt on RecipesUpdatedEvent: invalidate() now clears everything including variant-related caches

⚡ 优化 / Improved

  • FluidPartDataCache 材料中心重构:判据从"配方的 fluidRecipe"改为 MaterialRegistry.getMaterialStats(mat, statType).isPresent(),与 JEI 一致

  • 全局索引一次构建:meltMap / compositeMap / castableParts 只扫一遍配方,之后查询 O(1)

  • 部件列表缓存:PARTS_CACHE 缓存"材料 → 部件列表",避免重复遍历

  • withMaterial 方法缓存:WITH_MATERIAL_CACHE 缓存 Class → Method,避免每次反射

  • 滚动条组件复用:ScrollBar 统一轨道 / thumb 绘制与拖拽,支持 hoverExpandX 命中扩展

  • 卡片高度自适应:合金卡片、部件展开卡片按内容动态计算高度

  • 详情页在 1.19.2 下的渲染层级修复:endBatch() + GlStateManager._clear(GL_DEPTH_BUFFER_BIT) 保证物品不被背景遮挡

  • FluidPartDataCache refactored around materials: judgment changed from "recipe's fluidRecipe" to MaterialRegistry.getMaterialStats(mat, statType).isPresent(), consistent with JEI

  • One-shot global index: meltMap / compositeMap / castableParts scanned once, subsequent queries O(1)

  • Part cache: PARTS_CACHE caches "material → part list", avoiding repeated traversal

  • withMaterial method cache: WITH_MATERIAL_CACHE caches Class → Method, avoiding repeated reflection

  • Reusable ScrollBar component: unified track / thumb rendering and drag, with hoverExpandX hit-area expansion

  • Adaptive card heights for alloy and expanded part cards

  • Detail screen 1.19.2 render order fix: endBatch() + GlStateManager._clear(GL_DEPTH_BUFFER_BIT) to prevent item occlusion from background

🔧 技术改进 / Technical Improvements

  • 新增 FluidDetailScreen 类:详情界面主体,包含窗口自适应、滚轮、拖拽、翻页、动画、搜索、卡片展开

  • 新增 ScrollBar 组件:通用滚动条,包含轨道 / thumb 绘制、拖拽逻辑、命中扩展

  • 新增 FluidPartData / FluidPartDataCache:部件数据结构与缓存(材料中心设计,含全局索引 meltMap / compositeMap / castableParts)

  • 新增 CastingRecipeHelper:浇筑配方读取(材料中心判据 MaterialRegistry.getMaterialStats(mat, statType).isPresent(),与 JEI 一致)

  • 新增 PartRequirementsCache:部件 → mB 需求量缓存(同步构建,避免后台线程拿到空 map)

  • 新增 MaterialResolver:流体 → 材料 ID 解析(MaterialFluidRecipe + 前缀剥离)

  • 新增 RecipeReflection:配方反射通用工具,含 FluidIngredient / MaterialFluidRecipe 暴力字段扫描

  • 新增 MaterialCompatibility:部件与材料兼容性判断,兼容 1.18.2(无参)与 1.19.2(带 ICastingContainer 参数)的 getFluidRecipe 签名

  • 版本兼容 API 层:Component.literal (1.19.2) ↔ new TextComponent (1.18.2) 差异封装;ForgeRegistries.FLUIDS.getKey() 替换所有 Fluid#getRegistryName()

  • 面板滚动状态解耦:PanelLayoutCalculator.updatePanelPosition 不再干预滚动,由 switchTab / startHideAnimation / 快照机制显式管理

  • Added FluidDetailScreen class: detail screen body with window adaptation, wheel, drag, paging, animation, search, card expansion

  • Added ScrollBar component: generic scrollbar with track / thumb rendering, drag logic, hit-area expansion

  • Added FluidPartData / FluidPartDataCache: part data structure and cache (material-centric design with global index meltMap / compositeMap / castableParts)

  • Added CastingRecipeHelper: casting recipe reader (material-centric judgment MaterialRegistry.getMaterialStats(mat, statType).isPresent(), consistent with JEI)

  • Added PartRequirementsCache: part → mB requirement cache (synchronous build, avoiding empty map on background thread)

  • Added MaterialResolver: fluid → material ID resolution (MaterialFluidRecipe + prefix stripping)

  • Added RecipeReflection: generic recipe reflection utility with brute-force field scanning for FluidIngredient / MaterialFluidRecipe

  • Added MaterialCompatibility: part-material compatibility judgment, compatible with both 1.18.2 (no-arg) and 1.19.2 (ICastingContainer param) getFluidRecipe signatures

  • Version-compat API layer: Component.literal (1.19.2) ↔ new TextComponent (1.18.2); ForgeRegistries.FLUIDS.getKey() replaces Fluid#getRegistryName()

  • Panel scroll state decoupled: PanelLayoutCalculator.updatePanelPosition no longer touches scroll; managed explicitly by switchTab / startHideAnimation / snapshot mechanism

Type
Name
Game Versions
Mod Loaders
Size
Downloads
Uploaded