工具微调修饰符 Tweaks Modifiers
Tweaks 模块中不属于「削弱原版工具」的两个自定义修饰符变体,用于给 Tinkers’ 的强力修饰符加上额外成本。
- 模块:
Tweaks - 实现:
tweaks/modifiers/ModFluxExpensive.java、tweaks/modifiers/ModLimitedToolRepair.java - 装配:
tweaks/ToolCraftingRecipe.java(强制这几种组合走自定义配方)、tweaks/RepairCraftingRecipe.java、tweaks/PartCraftingRecipe.java
ModFluxExpensive(耗能电池)
继承 tconstruct.modifiers.tools.ModFlux,用于替换 Tinkers’ 的「红石电池 / 金电池 / 钻石电池 / 末影电池」等耗能部件。
额外成本
canModify 要求至少 2 个修饰符槽:
return tags.getInteger("Modifiers") > 1 && !tags.getBoolean(key);
modify 在 super.modify 之后再扣 1 个修饰符槽:
int modifiers = tags.getCompoundTag("InfiTool").getInteger("Modifiers");
modifiers -= 1;
tags.getCompoundTag("InfiTool").setInteger("Modifiers", modifiers);
matches 同时要求 super.matches(input, tool) 与 canModify(tool, input) 都成立。
即:装耗能电池的净成本是普通电池的 2 倍修饰符槽。这是源码注释
// needs 2 modifiers的实际含义。
ModLimitedToolRepair(限额修复)
继承 tconstruct.modifiers.tools.ModToolRepair,为工具修复增加次数上限。
protected boolean canModify(ItemStack tool, ItemStack[] input) {
NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool");
int repairCount = tags.getInteger("RepairCount");
if (repairCount >= Config.maxToolRepairs) return false;
return super.canModify(tool, input);
}
- 计数器:NBT 键
RepairCount(整数) - 上限来源:配置
maxToolRepairs(配置键maxToolRepairs,见 Tweaks 配置) - 达到上限后
canModify返回false,无法再装修复槽
强制配方
Tweaks 模块用三个自定义配方类替换 Tinkers’ 的默认工具台配方,以确保上述修饰符与部件替换的组合被正确处理:
| 配方类 | 作用 |
|---|---|
ToolCraftingRecipe |
工具合成配方,处理修饰符槽与材料绑定 |
PartCraftingRecipe |
部件合成配方,配合 部件替换 |
RepairCraftingRecipe |
修复配方,配合 ModLimitedToolRepair |
ToolUpdateRecipe(iguanaman.iguanatweakstconstruct.ToolUpdateRecipe)额外提供旧版 Iguana 工具的数据迁移配方——把早期版本产出的工具 NBT 升级到当前格式,override/OldToolConversionHandler 配合完成反序列化兼容。