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 的机器补上把这些材料加工成工具部件的配方。
核心是三条互相咬合的链:
- 材料 — GT
Materials枚举里带工具标记、且被 GT 生成的材料,全部拿到新的 Tinkers’ 材料 ID(从 1500 起),用 GT 自己的耐久/速度/攻击当数值; - 部件 — 28 个
PartTypes各注册一个ItemTGregPart,metadata 存材料 ID、 NBT 存材料名;这些部件的配方只在 GregTech 机器上(挤压机 / 流固机 / 合金炉 / 流体抽取机), 工作台里用 pattern 消耗数量换取"更高等级的同类部件"; - 碎片 — 第 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,逐材料开关节点。
阅读建议
若只读三篇: