Enchantment: XP Boost
基本信息
| 属性 | 值 |
|---|---|
| 本地名 | enchantment.xpboost |
| 类 | EnchantXPBoost extends Enchantment implements IAdvancedEnchant |
| 附魔 ID | 45(ConfigHandler.enchantIDXPBoost) |
| 稀有度 | 2 |
| 最大等级 | 3 |
| 最大附魔力 | super.getMaxEnchantability(level) + 30 |
| 适用类型 | breakable,但排除护甲 |
| 默认开关 | ConfigHandler.allowXPBoost = true |
来源:com/enderio/core/common/enchant/EnchantXPBoost.java:16-17,32-38,42-45、com/enderio/core/common/config/ConfigHandler.java:81,86。
数值:对数倍增,不是线性
private int getXPBoost(int xp, int level) {
return Math.round(xp * ((float) Math.log10(level + 1) * 2));
}
(com/enderio/core/common/handlers/XPBoostHandler.java:108-110)
倍率 = log10(level + 1) × 2,四舍五入后乘以原经验值:
| 等级 | 倍率计算 | 实际倍率 |
|---|---|---|
| 1 | log10(2) × 2 = 0.602 |
× 0.6(反而减少!) |
| 2 | log10(3) × 2 = 0.954 |
× 0.95(仍不足 1×) |
| 3 | log10(4) × 2 = 1.204 |
× 1.2 |
⚠️ 这是本 mod 最反直觉的数值:名为「经验加成」,但等级 1 和 2 实际都是降低经验。只有满级 3 才略微超出 1 倍。源码确实如此,不是笔误也不是我读错。
功能与触发路径
XPBoostHandler 有 3 条获取经验的路径,均经 getXPBoostLevel(ItemStack) 查手持物附魔(:112-126):
| 路径 | 说明 | 行号 |
|---|---|---|
| 箭矢命中 | 读取箭的 NBT ttCore:xpboost,沿射手回溯加成 |
:50-52 |
| 击杀生物 | 查玩家手持物 | :74-86 |
| 直接调用 | getXPBoost(EntityLivingBase, EntityPlayer, int) |
:96-102 |
加成后经 scheduleXP 延迟在实体位置生成 EntityXPOrb(:132-141),boost <= 0 时直接返回(:133-135)——即低等级算出 0 时不生成任何经验球。
获取方式
同 Auto Smelt,本 mod 不注册配方,通过 IMC 交给 EnderIO 的 Enchanter(EnchantXPBoost.java:56-61):
<enchantment name="enchantment.xpboost" costPerLevel="4">
<itemStack oreDictionary="ingotGold" number="16"/>
</enchantment>
每级成本 4 点、消耗 16 个金锭(比 Auto Smelt 的 30 点便宜得多)。
关闭时
allowXPBoost = false 时同样执行 Enchantment.enchantmentsList[this.effectId] = null(:62)。
相关条目
- Enchantment: Auto Smelt - 同一 handler 家族的熔炼附魔
- Config Handler - 管理上述开关与 ID