原版工具削弱 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 铁级。