Punch(冲击)
基本信息
| 属性 | 值 |
|---|---|
| 附魔本体 | 原版 net.minecraft.enchantment.Enchantment.punch(SC2 不注册自有附魔) |
| 附魔 ID | 无法核实——NBT 存的是原版 effectId(ModuleEnchants.java:270),数值由 vanilla 决定,本仓无 vanilla 源码 |
| 内部类型 | ENCHANTMENT_TYPE.SHOOTER |
| 等级上限 | 无法核实——取自 getEnchantment().getMaxLevel()(ModuleEnchants.java:166),即原版上限 |
| 基础价值 | 1000(EnchantmentInfo.java:55) |
| 折算公式 | value = 2^(level-1) * rank1Value(EnchantmentInfo.java:39) |
⚠️ 审计订正
- 原文「附魔等级要求:12」——源码中不存在铁砧等级要求,此数值无出处,已删除。
- 原文「等级越高,击退效果越强」未给实现——已补上确切实现与限制条件。
效果
对箭矢(EntityArrow)设置击退强度,等级值直接作为 knockbackStrength:
protected void setProjectileKnockback(Entity projectile) {
if (enchanter != null && projectile instanceof EntityArrow) {
int punch = enchanter.getPunchLevel();
if (punch > 0) {
EntityArrow arrow = (EntityArrow) projectile;
arrow.setKnockbackStrength(punch);
}
}
}
来源:ModuleShooter.java:424-432
这是 set 而非 add——直接覆盖原版箭矢已有的击退强度(普通箭 0 / 强装箭 1)。仅对箭矢生效,火球等抛射物不吃 Punch。
获取与生效方式
- 来源:附魔书(
EnchantmentInfo.java:61、EnchantmentInfo.java:85) - 载体:矿车上的 Enchanter 模块(ID 82,
ModuleData.java:943),3 格(ModuleEnchants.java:23) - 类型匹配:矿车上存在
ModuleShooter系模块才启用 SHOOTER 类型(ModuleShooter.java:51) - 不可附魔:模块物品
setMaxDamage(0)(ItemCartModule.java:25) - 损耗:每次射击固定扣 1 点内部值(
ModuleShooter.java:402-407)