原版工具削弱 Vanilla Tool Nerf

本 mod 的 Tweaks 模块把原版全部工具降到几乎不可用的程度,逼迫玩家转向 Tinkers’ Construct。这是本 mod 最激进的平衡改动。

  • 模块:Tweaks(脉冲 Tweaks)
  • 主类:iguanaman.iguanatweakstconstruct.tweaks.IguanaTweaks
  • 白名单:IguanaTweaks.toolWhitelist(Set<Item>)

豁免名单

所有削弱判定都先过 isUselessTool(item) 一类方法,其第一条逻辑是:

if (IguanaTweaks.toolWhitelist.contains(item)) return false;

toolWhitelist 由主配置 AllowedTools 分类填充(可按物品名或按 modid 整包豁免,语义见下方「白名单 vs 黑名单」)。原版钻石/黑曜石工具默认不在豁免名单(源码注释 // nerf vanilla tools (diamond tools, tools aren't nerfed unless they're on the whitelist))。

4 个削弱处理器

处理器 判定目标 削弱效果 事件
VanillaToolNerfHandler 所有 ItemTool(斧/镐/锹) event.newSpeed = 0(挖掘速度归零) PlayerEvent.BreakSpeed
VanillaHoeNerfHandler 所有 ItemHoe event.setCanceled(true)(完全不能锄地) UseHoeEvent
VanillaBowNerfHandler 所有 ItemBow event.setCanceled(true)(完全不能射箭) ArrowNockEvent
VanillaSwordNerfHandler 所有 ItemSword event.setCanceled(true)(完全打不出伤害) LivingHurtEvent(限 damageType == "player" 且来源是玩家)

每个处理器同时订阅 ItemTooltipEvent,在物品提示中追加两行深红(§4)本地化文本:

处理器 第一行 第二行
Tool tooltip.uselessTool1 tooltip.uselessTool2
Hoe tooltip.uselessHoe1 tooltip.uselessTool2
Bow tooltip.uselessBow1 tooltip.uselessTool2
Sword tooltip.uselessWeapon1 tooltip.uselessTool2

VanillaSwordNerfHandler 还有一处额外处理:它会移除提示中所有以 LevelingToolTipHandler.plusPrefix 开头的行(// remove +dmg stuff),避免被削弱的剑仍显示 +X 伤害 的伪造属性。

独立开关

四个削弱各有独立配置项(主配置 Tweaks 分类):

配置键 含义 默认 范围
disableRegularTools 削弱斧/镐/锹(挖掘速度归零) true —
disableRegularHoes 削弱锄(不能锄地) false —
disableRegularSwords 削弱剑(打不出伤害) false —
disableRegularBows 削弱弓(不能射箭) false —

默认只有斧/镐/锹被削弱;锄、剑、弓默认保留原版功能,需整合包主动关闭。

白名单 vs 黑名单

AllowedTools 分类的 exclusionType 选项决定列表语义:

值 语义
whitelist 列表内的工具仍可用,其余全部不可用
blacklist(默认) 列表内的工具被禁用

excludedToolsIsWhitelist = "whitelist".equals(type)。

另有 mods 列表,可按 modid 整包豁免(默认 8 个):

minecraft, Metallurgy, Natura, BiomesOPlenty, ProjRed|Exploration,
appliedenergistics2, MekanismTool, ThermalFoundation

excludedTools 只在对应削弱开关为 true 时才把对应列表并入(if (nerfVanillaTools) excludedTools.addAll(...)),所以关掉某个削弱后其豁免列表自动失效。

默认的豁免物品(按 mod 分):

列表 默认内容
tools Botania 魔力钢斧/镐/锹、Steamcraft 镀金与黄铜斧/镐/锹、IC2 青铜斧/镐/锹、Railcraft 钢斧/镐/锹
swords Botania 魔力钢剑、Steamcraft 镀金/黄铜剑、ThermalExpansion 战镐(Invar)、IC2 青铜剑、Railcraft 钢剑
hoes Steamcraft 镀金/黄铜锄、IC2 青铜锄、Railcraft 钢锄
bows 空(原版弓无豁免)

配置注释推荐用 /dumptools 指令 导出当前世界中所有相关物品名后直接粘贴。

VanillaToolTipHandler 读取 Config.nerfVanillaTools / Config.nerfVanillaHoes 来决定是否在已被削弱的物品上追加挖掘等级行——削弱后就不再重复提示挖掘等级了。

挖掘等级提示

harvestlevels/VanillaToolTipHandler 对任何 ItemTool(即使在白名单里、没被削弱)都会在其 tooltip 的第 1 位(索引 1)插入 LevelingTooltips.getMiningLevelTooltip(hlvl),其中 hlvl = item.getHarvestLevel(itemStack, "pickaxe")。

代码里有一段被注释掉的扩展:也想对 shovel / axe 显示挖掘等级,注释为 // disabled because it'll probably cause more confusion than help——目前只对镐生效。

其他 Tweaks 处理器

处理器 作用
FlintHandler 监听 BlockEvent.HarvestDropsEvent,挖砂砾时移除燧石掉落,改为保证掉 1 个 minecraft:gravel(源码意图:燧石应来自打怪而非砂砾)
StoneToolHandler 为原版石质工具路径提供 Tinkers’ 工具的替代获取方式
CastHandler 处理铸造相关的兼容修正
StringBindingHandler 监听 ToolBuildEvent / ToolCraftEvent,处理弓弦绑定的兼容修正(涉及 TConstructRegistry / TinkerTools)

挖掘等级处理

原版工具的挖掘等级重设见 挖掘等级系统 的「工具等级重设」一节:石镐被降到木级(0),铁镐提到 3 铁级。