TinkersGregworks

Tinkers’ Gregworks 是 Tinkers’ Construct 与 GregTech 5 之间的一层薄兼容, 面向 Minecraft 1.7.10(GTNH 版本)。

  • modid:TGregworks(驼峰,资源域与语言文件是小写 tgregworks)
  • mod 名称:Tinkers’ Gregworks(zh_CN:匠魂|GT材料)
  • 作者:Vexatos
  • @Mod 类:vexatos.tgregworks.TGregworks(根包 vexatos.tgregworks)
  • 版本号:编译期注入(version = "GRADLETOKEN_VERSION",Gradle 替换)
  • 源版本:d37e35d(2024-09-04,GTNH 分支)
  • 代码规模:src/main/java 下 25 个 Java 文件(仓库根另有 unused/ 共 20 个文件,不参与编译)

这是什么模组

一句话概括:它不注册任何方块,只做两件事——把 GregTech 的材料注册成 Tinkers’ 的工具材料, 然后给 GregTech 的机器补上把这些材料加工成工具部件的配方。

核心是三条互相咬合的链:

  1. 材料 — GT Materials 枚举里带工具标记、且被 GT 生成的材料,全部拿到新的 Tinkers’ 材料 ID(从 1500 起),用 GT 自己的耐久/速度/攻击当数值;
  2. 部件 — 28 个 PartTypes 各注册一个 ItemTGregPart,metadata 存材料 ID、 NBT 存材料名;这些部件的配方只在 GregTech 机器上(挤压机 / 流固机 / 合金炉 / 流体抽取机), 工作台里用 pattern 消耗数量换取"更高等级的同类部件";
  3. 碎片 — 第 23 个部件是碎片(Shard),price = 1 且唯一没有 pattern 的部件, 它是整条链的"最小货币":1 锭 = 2 碎片,碎片既能修工具也能当部分部件的制作材料。

在这个基础上,本 mod 只新增了 1 个自己的 pattern 物品(碎片铸件)和 3 个工具修饰符。

注册名是驼峰的:物品是 TGregworks:tGregToolPartPickaxeHead 这类带大写 T/G 的名字, 而不是常见的小写风格。唯一带点的是碎片铸件 TGregworks:tgregworks.shardcast (注册名里把 modid 又写了一遍)。

本 mod 没有的内容

先说清楚没有什么,避免误解(每条都有 grep 证据,grep 范围为 src/main/java):

维度 是否存在 grep 证据
方块 无 grep -rnE "extends Block|registerBlock|registerTileEntity|extends TileEntity" → 零命中
多方块结构 无 grep -rniE "multiblock|IMultiblock|formation|Controller|isCompleteStructure|checkStructure" → 只命中 4 处无关的英文单词(crash / addInformation 上下文),无任何结构代码
TileEntity 无 同上一行的 registerTileEntity|extends TileEntity 零命中;find src -name "*TileEntity*.java" 零结果
实体 无 grep -rnE "extends Entity|EntityRegistry|registerModEntity" → 只命中 TGregRegistry 里被注释掉的一行(TGregDaggerEntity)
指令 无 grep -rnE "ICommand|CommandBase|addChatCommand" → 零命中
热键 无 grep -rn "KeyBinding" → 零命中
附魔 无 grep -rniE "Enchantment|PotionEffect|registerPotion|Achievement" → 零命中
Buff/Debuff 无 同上
成就 无 同上
维度 / 群系 / 结构 / 世界生成 无 grep -rniE "BiomeGen|WorldGen|Biome|IWorldGenerator|WorldProvider|Dimension" → 零命中;src/main/resources 下无任何世界生成配置文件
OreDict 注册 无 grep -rnE "OreDictionary.registerOre|registerPrefix" → 零命中(只读取 GT_OreDictUnificator,从不注册)
矿物 无 全 mod 不注册任何 Block,因此没有任何 ore 形态
机器方块 / GUI / 容器 无 无方块即无 GUI;grep -rn "IGuiHandler|Container" 零命中
能量 / 流体存储接口 无 无方块即无 IEnergyHandler|IFluidHandler 实现

关于"多方块"与"邻接加工"

任务描述里预期本 mod 可能有"GregWorks 风格的邻接矿石加工多方块"。实测:没有。

本 mod 不注册任何方块,因此不可能有任何结构检测——邻接加工、机器阵列、控制器、扫描全都不存在。 本 mod 做的全部加工都交给 GregTech 本体的单方块机器(挤压机 / 流固机 / 合金炉 / 流体抽取机), 它们是逐个输入槽的配方,不看邻居。所以 multiblock/ 目录未创建。

unused/ 目录下的 20 个 Java 文件(unused/tools/*.java 共 20 个工具类、 unused/entity/TGregDaggerEntity.java、unused/modifiers/TGregBatteryModifier.java、 unused/TGregElectricTool.java、unused/TGregAbilityHelper.java)不参与编译—— 它们在仓库根目录而不在 src/main/java 下,build.gradle 里没有任何 srcDir 改动把它们拉进 编译源集(grep -n "srcDir\|sourceSets" build.gradle 零命中)。 所以本 mod 没有电池修饰符、没有自造 20 把工具、没有飞刀实体。

语言文件的小坑

en_US.lang / zh_CN.lang 各只有 3 类键:itemGroup.tabTGregworks、 item.tgregworks.shardcast.*(2 条)、28 条 tgregworks.toolpart.*、加 tgregworks.tool.deprecated 与 tgregworks.materials.unknown。 没有任何 tile.* / entity.* / enchantment.* 键——这是"无方块无实体无附魔"的旁证。 de_DE / fr_FR / uk_UA 三个文件也存在。 物品贴图只有 1 张(assets/tgregworks/textures/items/cast_shard.png), 28 个部件的贴图 items/parts/*.png 在本仓库中不存在(由 Gradle 的资源任务从 minecraft.tgregworks 纹理包补齐,或由下游 mod 提供)。


物品(item)

本 mod 共注册 30 个物品:28 个工具部件(同一个类的 28 个实例)+ 1 个 pattern

  • 1 个条件注册的 legacy pattern。

工具部件(28 个)

全部是 ItemTGregPart 的实例,setHasSubtypes(true)、 metadata 存材料 ID(从 1500 起)、NBT 存 material(GT Materials.mName)。 PartTypes.getPrice() 决定制作消耗量与熔融量(288 × price mB)。

部件 PartTypes ID price 制作量 熔融量 纹理后缀
镐头 PickaxeHead 0 2 1 576 mB _pickaxe_head
铲头 ShovelHead 1 2 1 576 mB _shovel_head
斧刃 AxeHead 2 2 1 576 mB _axe_head
绑定结 Binding 3 1 1 288 mB _binding
坚韧绑定结 ToughBind 4 6 3 1728 mB _toughbind
手柄 ToolRod 5 1 1 288 mB _rod
坚韧手柄 ToughRod 6 6 3 1728 mB _toughrod
大板 LargePlate 7 16 8 4608 mB _largeplate
剑刃 SwordBlade 8 2 1 576 mB _sword_blade
宽护手 LargeGuard 9 1 1 288 mB _large_guard
护手 MediumGuard 10 1 1 288 mB _medium_guard
十字柄 Crossbar 11 1 1 288 mB _crossbar
刀刃 KnifeBlade 12 1 1 288 mB _knife_blade
大型护手 FullGuard 13 6 3 1728 mB _full_guard
盘 FrypanHead 14 2 1 576 mB _frypan_head
牌板 SignHead 15 2 1 576 mB _battlesign_head
凿刃 ChiselHead 16 2 1 576 mB _chisel_head
镰刀刀刃 ScytheHead 17 16 8 4608 mB _scythe_head
宽斧刃 LumberHead 18 16 8 4608 mB _lumberaxe_head
开掘铲头 ExcavatorHead 19 16 8 4608 mB _excavator_head
宽剑刃 LargeSwordBlade 20 16 8 4608 mB _large_sword_blade
锤头 HammerHead 21 16 8 4608 mB _hammer_head
碎片 Chunk 22 1 无 pattern — _chunk
箭头 ArrowHead 23 2 1 576 mB _arrowhead
回旋镖 Shuriken 24 1 1 288 mB _shuriken
弩臂 CrossbowLimb 25 8 4 2304 mB _crossbow_limb
弩身 CrossbowBody 26 10 5 2880 mB _crossbow_body
弓壁 BowLimb 27 3 2 864 mB _bow_limb

Fragment 一行的"制作量"列无意义:PartTypes.Chunk 是 28 个里唯一 pattern == null 的, 它不参与按 pattern 的任何配方。碎片只在 锭 ↔ 2 碎片 这一对配方里出现, 见 碎片与锭的互换。

铸件(2 个)

物品 说明
碎片铸件 本 mod 唯一自己 new 的物品,注册名 TGregworks:tgregworks.shardcast(带点),堆叠 1,贴图 cast_shard.png 是全 mod 唯一的物品贴图
部件铸件(legacy) 条件注册:仅当 Tinkers’ Smeltery 未加载时,自建一个 MetalPattern 实例并注册 23 个 subtype

兼容层(item-effect)

本 mod 全部的"行为"都在这一层:没有方块/实体可写,所有玩法改动都是通过调用 Tinkers’ 与 GregTech 的 API 完成的。

材料与部件

条目 说明
工具材料注册 addToolMaterial(11 参) / addBowMaterial(3 参) / addArrowMaterial(2 参);材料 ID 从 1500 起、上限 16383
部件材料 NBT metadata = 材料 ID、NBT material = 材料名;onUpdate 自动修复旧存档的 metadata 0
工具配方表 25 条 TGregToolRecipe;本 mod 部件与 TiC 原版部件在同一配方里双向通用

机器配方(4 种 GregTech 机器)

条目 默认状态 配方数
挤压机配方 默认开 锭/宝石/碎片 × 27 部件 + 锭→2 碎片 + 3 条碎片铸件
合金炉熔炼 默认开(两条都开) 部件回炉成碎片、2 碎片合 1 锭
流固机配方 默认全关(仅弩箭开) 熔融→部件、熔融→碎片、铸件、弩箭
流体抽取机配方 默认全关 部件→熔融、碎片→熔融
铸件配方 挤压机路径条件开,流固机路径关 黄铜/金板 → 23 种铸件 + 碎片铸件
碎片与锭的互换 锭↔2 碎片默认开 8 条碎片相关配方的完整对照表
弩箭配方 工作台路径看 TiC 配置,流固机路径默认开 无序合成 + 流固机 + 删除 TiC 的重复浇铸配方

⚠️ "配方"在本 mod 全部指 GregTech 机器配方。 本 mod 一条工作台配方都不注册(唯一例外是碎片铸件的 ShapedOreRecipe), 因为部件的"升一级"逻辑用的是 TiC 的 pattern + PatternBuilder,工作台里是 1 个低阶 pattern + 1 个高阶部件 → 1 个更高阶 pattern,不是本 mod 自己写的合成配方。

修饰符(3 个)

条目 注册时机 说明
碎片修复修饰符 postInit 标识 TGregRepair;修复量 = 50×件数 + 耐久×0.4×价值,经修饰符槽位 / 修复次数 / repairCost 三层衰减
限额修复修饰符 postInit 继承上者,只多加一条 RepairCount < maxToolRepairs(需 IguanaTweaksTConstruct)
部件替换修饰符 init 只认本 mod 的 25 条配方;getIdentifier() 是空字符串,工具台里无名字

同一时刻只注册一个修复类修饰符(ModLimitedTGregRepair 优先于 ModTGregRepair), 部件替换修饰符独立于该分支。

其他兼容点

条目 说明
流体类型注册 把 GT 材料的熔融流体注册成 FluidType;TGregFluidType 额外携带 matID,让弩箭不需要反查浇铸配方
Legacy Metal Pattern 兼容层 无 Smeltery 时自建 23 个 pattern;FMLMissingMappingsEvent 重映射
TiCTooltips 归类集成 28 个部件分进 17 个提示分类
客户端渲染映射 每材料一条 addMaterialRenderMapping;CommonProxy 两个方法体都是 // NO-OP

配置(setting)

配置文件 config/TGregworks.cfg,共 29 个非逐材料选项 + 4 类逐材料项。 Config.Category 常量表:materials / enable / recipe / global / general, 机器分类 4 个(alloysmelter / extruder / fluidsolidifier / fluidextractor)。

条目 内容
general 段 3 个:materialIDRangeStart=1500、addMaterialsAnyway=false、energyUsageMultiplier=1.0
配方开关 18 个 enable.recipe.* 布尔(castExtruderRecipes 的默认值是算出来的)
材料逐项开关 enable.<材料> 布尔(默认 true)+ 4 个入选条件
材料倍率 8 个逐材料倍率 + stoneboundlevel / reinforcedlevel / material-id
全局倍率 8 个 global.* 倍率(arrowfragility 默认 0.9,其余 1.0)
依赖门控 7 个"某个 mod 是否加载"判断 + 版本硬门控 + 4 阶段生命周期

完整选项表

general 段(3 个)

键 类型 默认 范围
materialIDRangeStart int 1500 300 – 15000
addMaterialsAnyway boolean false —
energyUsageMultiplier float 1.0 0 – 4500(但 120×值 > 524288 会被打回 1)

enable.recipe.* 段(18 个布尔)

键 默认
gemToolPartRecipes true
tinkersconstructcastrecipe true
gregtechcastrecipe true
addShardRepair true
addIngotRepair false
alloysmelter.reverseSmelting true
alloysmelter.shardToIngotSmelting true
extruder.extruderRecipes true
extruder.shardToToolPartRecipe true
extruder.ingotToShardRecipe true
extruder.castExtruderRecipes CastLegacy.metalPattern != null(有 Smeltery → false)
fluidsolidifier.solidifierRecipes false
fluidsolidifier.moltenToShardRecipe false
fluidsolidifier.castSolidifierRecipes false
fluidsolidifier.useNonGTFluidsForBolts true
fluidsolidifier.useNonGTToolRodsForBolts true
fluidextractor.fluidExtractorRecipes false
fluidextractor.shardExtractorRecipes false

global 段(8 个 double,范围 0 – 10000)

durability / miningspeed / attack / handlemodifier / bowdrawspeed / bowflightspeed / arrowmass 默认全为 1.0;arrowfragility 默认 0.9。

materials.*.<材料> 段(逐材料,10 类)

键后缀 类型 默认 范围
durability / miningspeed / attack / handlemodifier double 1.0 0 – 10000
bowdrawspeed / bowflightspeed / arrowmass / arrowfragility double 1.0 0 – 10000
stoneboundlevel int 钛/钨 +1,铀/铀 235 -1,其余 0 -3 – 3
reinforcedlevel int 9 种钢 1,锇/铱 2,黑铱 3,其余 0 0 – 3
material-id int 0(= 自动分配) 0 – 100000 / 0 – 30000

enable.<材料> 段:boolean,默认 true,逐材料开关节点。


阅读建议

若只读三篇:

  1. 工具材料注册 —— 理解本 mod 的主入口与全部数值来源
  2. 挤压机配方 —— 理解"pattern + 材料 = 部件"的配方模型
  3. 碎片与锭的互换 —— 理解维修材料与制作材料如何共用一种物品