Unbreaking(耐久)
基本信息
| 属性 | 值 |
|---|---|
| 附魔本体 | 原版 net.minecraft.enchantment.Enchantment.unbreaking(SC2 不注册自有附魔) |
| 附魔 ID | 无法核实——NBT 存的是原版 effectId(ModuleEnchants.java:270),数值由 vanilla 决定,本仓无 vanilla 源码 |
| 内部类型 | ENCHANTMENT_TYPE.TOOL |
| 等级上限 | 无法核实——取自 getEnchantment().getMaxLevel()(ModuleEnchants.java:166),即原版上限 |
| 基础价值 | 64000(EnchantmentInfo.java:49-52) |
| 折算公式 | value = 2^(level-1) * rank1Value(EnchantmentInfo.java:39) |
⚠️ 审计订正
- 原文「附魔等级要求:5」——源码中不存在铁砧等级要求,此数值无出处,已删除。
- 原文概率公式经复核正确,已补上精确实现(原文未给证据)。
效果
每次工具扣耐久时先掷一次判定,命中才真正扣:
public void damageTool(int val) {
int unbreaking = enchanter != null ? enchanter.getUnbreakingLevel() : 0;
if (getCart().rand.nextInt(100) < 100 / (unbreaking + 1)) {
currentDurability -= val;
if (currentDurability < 0) { currentDurability = 0; }
}
if (enchanter != null) {
enchanter.damageEnchant(ENCHANTMENT_TYPE.TOOL, val);
}
}
来源:ModuleTool.java:196-209
即:免消耗概率 = 1 − 1/(level+1) = level/(level+1)。逐级数值(100 / (level+1) 为整数除法):
| 等级 | 触发扣耐久的概率 | 免消耗概率 |
|---|---|---|
| 1 | 100/2 = 50% | 50% |
| 2 | 100/3 = 33% | 66.7% |
| 3 | 100/4 = 25% | 75% |
作用范围是所有 ModuleTool 子类模块(ModuleTool.damageTool 是基类方法),不只是钻头。
双重损耗:每次实际扣耐久后,还会按 val 扣掉本附魔自身的内部值;值降到 ≤0 时该附魔从 Enchanter 中移除(ModuleEnchants.java:131-133)。所以 Unbreaking 会随使用逐渐失效。
获取与生效方式
- 来源:附魔书(
EnchantmentInfo.java:61、EnchantmentInfo.java:85) - 载体:矿车上的 Enchanter 模块(ID 82,
ModuleData.java:943),3 格(ModuleEnchants.java:23) - 类型匹配:矿车上存在
ModuleTool子类模块才启用 TOOL 类型(ModuleTool.java:50) - 不可附魔:模块物品
setMaxDamage(0)(ItemCartModule.java:25)
相关附魔
- Fortune - 掉落数量
- Efficiency - 挖掘速度