更好的附魔

更好的附魔

将原版附魔效果带到食物和药水上——让它们也拥有附魔能力。

魔法

Better Enchanted

Fabric 模组 | Minecraft 1.20.4 | Java 17
将原版附魔效果带到食物和药水上——让它们也能拥有附魔能力。


介绍

Better Enchanted 是一个 Minecraft Fabric 模组,其核心玩法围绕创造性地将原版武器、弓、弩和三叉戟附魔效果应用于食物和投掷药水。食物附魔在食用时对食用者生效,而药水附魔在击中目标时生效。所有伤害公式均尽可能参考 MC 1.20.4 原版附魔机制,以保证平衡性和一致性。


0. 附魔获取机制

默认情况下,原版附魔台和铁砧会拒绝食物和药水。本模组通过 Mixin 连接了完整的附魔流程,使食物/药水可以像武器一样被附魔:

  • 附魔台
    • FoodPotionEnchantableMixin 使 Item.isEnchantable() 对食物/药水返回 true,并提供合理的附魔能力值(普通食物 10,药水 15,超级/终极附魔金苹果 22)。
    • EnchantingTableMixin 注入 EnchantmentHelper.getPossibleEntries(),为食物/药水返回本模组的自定义可用附魔列表。
  • 铁砧(附魔书)
    • EnchantmentAcceptItemMixin 注入 Enchantment.isAcceptableItem(),使匹配的附魔书可以应用于食物/药水。
  • 可附魔范围
    • 食物:锋利、击退、火焰附加、效率、冰霜行者、耐久
    • 药水:锋利、力量、冲击、火焰、无限、耐久、多重射击、快速装填、穿透、引雷、忠诚、迅捷投掷
    • 超级/终极附魔金苹果:支持完整的食物 + 药水附魔集合

I. 食物附魔

食物附魔适用于所有可食用物品,也兼容蛋糕方块(蛋糕使用专用的方块附魔存储系统)。

1.1 锋利

  • 效果:食用时对食用者造成伤害
  • 公式伤害 = 0.5 × 等级 + 0.5
    • 锋利 I = 1.0 伤害,II = 1.5,III = 2.0,IV = 2.5,V = 3.0
  • 自定义伤害来源:拥有独特的死亡消息(“XXX 被锋利的食物割开了喉咙”)
  • 蛋糕支持:从蛋糕位置的 CakeEnchantmentStorage 读取锋利等级

1.2 击退

  • 效果:食用时对食用者施加击退
  • 方向:随机方向(360° 随机角度),模拟被食物“甩飞”的效果
  • 强度公式
    • 水平方向:强度 = 0.5 × 等级
    • 垂直方向:若在地面,给予小幅向上助推(最大 0.4)
  • 参考:改编自 MC 1.20.4 PlayerEntity.attack() 的击退逻辑

1.3 火焰附加

  • 效果:食用时点燃食用者
  • 持续时间等级 × 4
    • 火焰附加 I = 4 秒,火焰附加 II = 8 秒
  • 参考:与 MC 1.20.4 原版火焰附加逻辑相同(target.setOnFireFor(level * 4)

1.4 效率

  • 效果:加快食用速度
  • 公式:每级减少 10% 食用时间
    • 效率 I = 快 10%,效率 V = 快 50%
  • 实现:Mixin 注入 Item.getMaxUseTime() 以减少食用滴答数

1.5 冰霜行者

  • 效果:食用后获得冰霜行者效果
  • 持续时间:基础 20 秒 + 每级 10 秒
    • 冰霜行者 I = 30 秒,II = 40 秒,III = 50 秒
  • 结冰:效果期间,玩家脚下的水会冻结成霜冰
  • 持续伤害:每 4 秒受到 1 点冰冻伤害,每级减少 0.5 秒间隔
    • 冰霜行者 I = 每 3.5 秒,II = 每 3 秒
  • 视觉效果:生命条以蓝色冰冻风格显示
  • 可配置:冰霜行者日志可通过调试菜单切换

1.6 耐久

  • 效果:食用后有一定几率不消耗食物
  • 概率公式:参考 MC 1.20.4 原版耐久公式
    • 消耗概率 = 1 / (等级 + 1)
    • 不消耗概率 = 等级 / (等级 + 1)
    • 耐久 I = 50% 不消耗,II = 66.7%,III = 75%
  • 蛋糕特殊处理:触发时,恢复一块蛋糕(BITES - 1);如果蛋糕刚被完全吃完,则恢复到最后一口状态

II. 药水附魔 — 武器/弓类别

药水附魔在投掷型药水(喷溅/滞留)被抛出并击中物体时触发。所有伤害/效果对直接命中的实体全额生效,对溅射范围内(4 格)的实体则随距离衰减。

2.1 锋利 [药水]

  • 效果:投掷的药水对命中的实体造成伤害
  • 公式伤害 = 0.5 × 等级 + 0.5(与食物锋利相同)
  • 溅射:4 格内随距离衰减的伤害(伤害 × (1 - 距离/4)
  • 叠加:与力量附魔伤害相加叠加
  • 自定义伤害来源:独特的死亡消息(“XXX 被锋利的药水击碎了”)

2.2 力量 [药水]

  • 效果:投掷的药水对命中的实体造成伤害
  • 公式:参考 MC 1.20.4 弓的力量附魔
    • 伤害 = 等级 + 1(模拟箭基础=2 的力量加成)
    • 力量 I = 2.0,II = 3.0,III = 4.0,IV = 5.0,V = 6.0
  • 叠加:直接与锋利伤害相加
  • 伤害来源:当力量伤害 ≥ 锋利伤害时,使用力量专属死亡消息(“XXX 被强力药水摧毁了”)

2.3 冲击 [药水]

  • 效果:投掷的药水对命中的实体施加击退
  • 公式:参考 MC 1.20.4 弓的冲击附魔(AbstractArrowEntity.onHit
    • 击退强度 = 冲击等级 × 0.6
  • 方向
    • 直接命中:沿药水飞行方向(归一化的水平分量)
    • 溅射范围:从落点指向实体,强度随距离衰减

2.4 火焰 [药水]

  • 效果:投掷的药水命中时点燃目标
  • 直接命中:5 秒火焰(100 tick),与 MC 1.20.4 弓的火焰规则一致
  • 溅射范围:火焰持续时间随距离衰减(ceil(5 × (1 - 距离/4)) 秒)
  • 等级:仅限 I 级(与原版一致)

2.5 引雷 [药水]

  • 效果:MC 1.20.4 三叉戟引雷规则改编为 AOE 版本
  • 条件
    1. 必须为雷暴天气(world.isThundering()
    2. 目标实体位置必须对天空可见(isSkyVisible
  • 范围:药水落点 4 格内的所有生物实体
  • 结果:每个符合条件的实体在其位置召唤一道闪电
  • 闪电归属:闪电召唤者设为投掷者(影响掉落物和经验)
  • 等级:仅限 I 级(与原版一致)

III. 药水附魔 — 弩类别

3.1 多重射击 [药水]

  • 效果:单次投掷产生多瓶呈锥形散开的药水
  • 数量公式:总弹射物 = 2 + 等级
    • 多重射击 I = 3,II = 4,III = 5
  • 分布规则
    • 第一瓶药水(主药水)沿瞄准方向直线飞行(锥体中心)
    • 前 8 个额外弹射物均匀分布在 10° 锥体圆周上
    • 超过 8 个额外弹射物:在锥体内随机分布(0°–10°,使用平方根实现面积均匀分布)
  • 消耗:仅消耗 1 瓶药水
  • 兼容性:与所有迅捷投掷模式(物理/射线检测)完全兼容

3.2 快速装填 [药水]

  • 效果:减少无限附魔的冷却时间
  • 公式:每级减少 20% 冷却时间(基础 30 秒)
    • I 级 = 24 秒,II 级 = 18 秒,III 级 = 12 秒,IV 级 = 6 秒,V 级 = 0 秒(无冷却)
  • 前置条件:必须与无限附魔一起使用;单独使用无效

3.3 穿透 [药水]

  • 效果:参考 MC 1.20.4 弩的穿透规则
  • 机制
    • 药水可穿过 等级 个实体(总共命中 等级 + 1 个)
    • 对每个被穿透的实体施加附魔效果(锋利/力量/冲击/火焰)
    • 已被穿透的实体不会再次被击中
    • 击中方块或达到穿透上限时正常销毁并触发溅射效果

IV. 药水附魔 — 三叉戟类别

4.1 忠诚 [药水]

  • 效果:改编自 MC 1.20.4 三叉戟忠诚规则
  • 机制
    • 药水抛出 2 秒后自动返回投掷者
    • 返回速度 = 0.5 × 等级 格/tick
      • I 级 = 10 格/秒,II 级 = 20 格/秒,III 级 = 30 格/秒
    • 如果在飞行/返回过程中击中实体或方块,则正常消耗(不会返回)
    • 成功返回时,药水物品归还给玩家
  • 消耗逻辑:药水在抛出时即被消耗(实体本身携带返回逻辑)

V. 通用药水附魔

5.1 无限 [药水]

  • 效果:投掷药水不消耗它
  • 冷却系统
    • 基于 NBT 标签(InfinityMarked)的自定义冷却系统
    • 仅影响带有无限附魔的物品,不影响其他相同物品
    • 基础冷却时间:30 秒(可由快速装填减少)
  • 与耐久的交互
    • 有耐久时:进行耐久判定 — 通过 → 无冷却,失败 → 进入冷却
    • 无耐久时:总是进入冷却
  • 客户端显示:通过联网同步的灰色半透明冷却覆盖层
  • 冷却阻挡:冷却期间无法再次使用该物品

5.2 耐久 [药水]

  • 效果:投掷后有一定几率不消耗药水
  • 公式:与食物耐久相同(消耗概率 = 1/(等级+1)
  • 与无限的交互:判定结果决定是否触发冷却(见上文)

VI. 自定义附魔

6.1 迅捷投掷

  • 效果:提高药水投掷速度和弹道平直度
  • 附魔台最高等级:10(仅限附魔书;不能直接应用于药水/物品)
  • 铁砧最高合法等级:19(无法达到 >20 的射线检测模式,保护超级金苹果迅捷投掷 25 的稀有性)
  • 速度公式实际速度 = 基础速度 (0.5) × (1 + 0.5 × 等级)
  • 角度公式:向上偏移角度 y = 80 / (4 + 等级)
    • 等级越高 = 弹道越平直
    • 当偏移角度 < 1° 时,设为 0(完全平直投掷)
  • 两种模式
    • 等级 1–20(物理模式):正常物理投掷,速度和方向按公式计算,受重力影响
    • 等级 >20(射线检测模式):通过每 tick 射线检测传送实现瞬间命中;药水实体隐形且无重力;沿发射方向每 0.5 格生成暴击粒子(最多 64 格)
  • 兼容性:与多重射击完全兼容 — 额外弹射物也使用相同的迅捷投掷模式

VII. 超级附魔金苹果

7.1 物品概览

属性 描述
物品 ID hello-mod:super_enchanted_golden_apple
文本颜色 淡紫色(LIGHT_PURPLE)
内置附魔 迅捷投掷 25
获取方式 3×3 合成台(金块 ×4 + 喷溅药水 ×2 + 滞留药水 ×2 + 金苹果 ×1)

7.2 模式切换

  • 手持时左键点击可在食用/投掷模式间切换,5 游戏 tick 冷却
  • 动态名称:食用模式为“超级附魔金苹果”,投掷模式为“可投掷的超级附魔金苹果”

7.3 食用模式

  • 食用时间 32 tick(1.6 秒),可由效率附魔加速
  • 食用效果 = 基础效果 + 喷溅药水效果 + 滞留药水效果(100% 持续时间)
  • 基础效果:生命恢复 V(30 秒)+ 伤害吸收 IV(2 分钟)+ 抗性提升 I(5 分钟)+ 防火 I(5 分钟)

7.4 投掷模式

  • 内置迅捷投掷 25(射线检测瞬间命中)
  • 命中时:首先触发喷溅效果(基础增益 + 喷溅药水效果,随距离衰减),然后生成区域效果云(基础增益 + 滞留药水效果)
  • 附魔额外效果(锋利/力量/冲击/火焰/引雷/多重射击)全部生效

7.5 药水效果存储

  • 合成时,从配方中的喷溅/滞留药水读取药水效果,按规则合并并存储在 NBT 中
  • 提示文本显示完整的喷溅效果和云效果信息

7.6 铁砧兼容性

  • 绕过“过于昂贵”39 级上限:超级附魔金苹果在铁砧操作时忽略原版 39 级经验费用限制,因此始终可以进行附魔
  • RepairCost 锁定为 10,防止指数级惩罚增长
  • 可通过铁砧附加其他附魔(锋利/力量/冲击/火焰/无限/耐久/快速装填/引雷/多重射击/穿透/忠诚)

VIII. 终极附魔金苹果

8.1 物品概览

属性 描述
物品 ID hello-mod:ultimate_enchanted_golden_apple
文本颜色 亮金色(GOLD)
内置附魔 效率 9,耐久 10,迅捷投掷 25,无限 1
获取方式 自定义进度奖励(持有全部 14 种合法附魔且均为最高等级的超级附魔金苹果)

8.2 模式切换

  • 手持时左键点击可在食用/投掷模式间切换,2 游戏 tick 冷却(比超级版更快)
  • 动态名称变化:食用模式为“终极附魔金苹果”,投掷模式为“可投掷的终极附魔金苹果”

8.3 食用模式

  • 效率 9 将食用时间缩短至约 3 tick(几乎瞬间)
  • 固定效果(无药水 NBT):
效果 等级 持续时间
生命恢复 V 60 秒
抗性提升 III 60 秒
力量 V 60 秒
  • 消耗:耐久 10 判定通过(91% 几率)→ 不消耗 + 3 秒使用冷却;失败(9%)→ 消耗,无冷却

8.4 投掷模式

  • 迅捷投掷 25(>20)→ 射线检测瞬间命中模式
  • 命中时 4 格半径检测
    • 敌对生物:100 点真实伤害(无视护甲)+ 无条件闪电打击
    • 友好生物/玩家:生命恢复 V(60 秒)
  • 附魔额外效果(锋利/力量/冲击/火焰/引雷)作用于范围内所有实体
  • 消耗:内置无限 + 耐久 10;投掷不消耗,进入 30 秒冷却(可由快速装填减少);耐久判定通过 = 无冷却

8.5 铁砧兼容性

  • 与超级版共享铁砧机制:绕过“过于昂贵”39 级上限,RepairCost 锁定为 10
  • 可通过铁砧附加其他附魔(与超级版附魔列表相同)

8.6 进度要求

  • 超级附魔金苹果上全部 14 种合法附魔达到其合法最高等级:
    • 迅捷投掷 25,锋利 V,力量 V,冲击 II,火焰 I,引雷 I,多重射击 10,无限 I,耐久 III,快速装填 III,击退 II,火焰附加 II,效率 V,冰霜行者 II
  • 触发时机:当玩家从铁砧中取出符合条件的超级附魔金苹果时,SuperAppleAnvilMixin 检测到并授予进度
  • 完成后,AdvancementRewardMixin 发放奖励:1 个终极附魔金苹果(带 4 个内置附魔)+ 1000 级经验
  • 如果玩家背包已满,奖励物品掉落在地面

IX. 实用功能

9.1 实体生命值 HUD

  • 当准星对准实体时,在屏幕上显示目标当前生命值 / 最大生命值
  • 检测距离可配置(默认 128 格)
  • 可通过调试菜单独立开关

9.2 手持物品 HUD

  • 在左上角显示主手物品名称和数量
  • 高级模式:额外显示物品耐久度和完整 NBT 标签数据
  • 可通过调试菜单独立开关

9.3 调试菜单

  • 通过自定义按键打开(默认未绑定,可在按键设置中配置)
  • 提供子菜单:
    • 实体生命值显示设置(开关 + 检测距离滑块)
    • 手持物品显示设置(开关 + 高级模式开关)
    • 调试日志开关(独立控制 10 个日志模块:蛋糕/放置/食物/药水/伤害/迅捷投掷/客户端/冰霜行者/无限冷却/玩家行为)

9.4 持久化配置

  • 配置文件位于 config/hello-mod.json
  • 所有设置更改自动保存;启动时自动加载
  • 人类可读的 JSON 格式,支持手动编辑

X. 技术架构

10.1 核心技术栈

组件 技术
模组框架 Fabric Loader 0.15.3 + Fabric API 0.97.1
游戏版本 Minecraft 1.20.4
Java 版本 Java 17
构建工具 Gradle + Fabric Loom 1.7
代码修改 Mixin 注入
映射 Yarn 1.20.4+build.3:v2

10.2 Mixin 注入点

Mixin 类 目标 用途
FoodPotionEnchantableMixin Item.isEnchantable() / Item.getEnchantability() 使食物/药水可在附魔台附魔并提供附魔能力值
EnchantingTableMixin EnchantmentHelper.getPossibleEntries() 在附魔台中为食物/药水返回自定义附魔列表
EnchantmentAcceptItemMixin Enchantment.isAcceptableItem() 允许食物/药水在铁砧上通过附魔书附魔
PlayerEatFoodMixin PlayerEntity.eatFood() 食物附魔触发(锋利/击退/火焰/冰霜)
CakeBlockMixin CakeBlock.tryEat() 蛋糕附魔触发
CakePlaceMixin CakeBlock.onPlaced() 放置蛋糕时存储附魔数据
EfficientEatingMixin Item.getMaxUseTime() 效率附魔食用速度提升
UnbreakingFoodMixin PlayerEntity.eatFood() RETURN 食物耐久判定
PotionItemMixin ThrowablePotionItem.use() 药水投掷逻辑(无限/耐久/多重射击/消耗)
PotionEntityMixin PotionEntity.onCollision() 药水命中效果(锋利/力量/冲击/火焰/引雷)
SwiftThrowTickMixin PotionEntity.tick() 迅捷投掷射线检测模式
MultishotEnchantmentMixin 多重射击辅助
PiercingPotionMixin PotionEntity 碰撞 穿透逻辑
LoyaltyPotionMixin PotionEntity.tick() 忠诚返回逻辑
LoyaltyCollisionMixin PotionEntity 碰撞 忠诚返回碰撞处理
LivingEntityDamageCooldownMixin LivingEntity.damage() 清除药水/闪电伤害的无敌帧
SuperAppleCraftingMixin CraftingScreenHandler.updateResult 合成超级金苹果时添加迅捷投掷 + 药水数据
SuperAppleAnvilMixin AnvilScreenHandler.updateResult 绕过 39 级上限 + 锁定 RepairCost + 进度触发
AdvancementRewardMixin PlayerAdvancementTracker.grantCriterion() 终极金苹果进度奖励
PlayerBehaviorLogMixin PlayerEntity 行为 玩家行为日志(攻击/交互/受伤/死亡/丢弃/跳跃等)
PlayerBlockInteractLogMixin 方块交互 方块放置/破坏/交互日志
client/DrawContextCooldownMixin DrawContext.drawItemInSlot() 无限冷却覆盖层渲染
client/SwiftThrowRenderMixin 客户端 在射线检测模式下隐藏药水实体
client/SuperAppleAttackMixin MinecraftClient.doAttack() 金苹果左键模式切换
client/BehaviorLogClientMixin 客户端 tick 客户端行为日志(tick 事件)
client/BehaviorLogKeyboardMixin 客户端键盘 客户端行为日志(键盘输入)
client/BehaviorLogMouseMixin 客户端鼠标 客户端行为日志(鼠标点击)

10.3 包结构

com.example.hellomod
├── HelloMod.java                      # 主入口点,注册事件和系统
├── advancement/                       # 进度检查
│   └── UltimateAppleChecker.java      # 终极金苹果附魔检查器
├── block/                             # 蛋糕附魔存储、方块实体
│   ├── CakeEnchantmentStorage.java    # 内存中的蛋糕附魔数据管理
│   ├── EnchantedCakeBlockEntity.java
│   └── HelloModBlockEntities.java
├── client/                            # 客户端功能
│   ├── HelloModClient.java            # 客户端入口点
│   ├── EmptyEntityRenderer.java       # 空渲染器(投掷实体隐形,避免高速视觉效果错误)
│   ├── EntityHealthHud.java           # 实体生命值 HUD
│   ├── InfinityCooldownClientState.java # 无限冷却客户端同步
│   ├── DebugMenuScreen.java           # 调试菜单 UI
│   ├── DebugLogSettingScreen.java     # 日志开关 UI
│   ├── HealthHudSettingScreen.java    # 生命值 HUD 设置 UI
│   └── ItemHudSettingScreen.java      # 物品 HUD 设置 UI
├── config/                            # 配置持久化
│   └── ModConfig.java
├── damage/                            # 自定义伤害来源
│   ├── ModDamageTypes.java
│   ├── SharpFoodDamageSource.java
│   ├── SharpPotionDamageSource.java
│   ├── PowerPotionDamageSource.java
│   └── UltimateAppleDamageSource.java
├── debug/                             # 调试日志控制
│   └── DebugLogConfig.java
├── effect/                            # 自定义效果
│   └── FrostWalkerFoodEffect.java     # 冰霜行者食物效果(tick 事件)
├── enchantment/                       # 附魔系统
│   ├── ModEnchantments.java           # 自定义附魔注册
│   ├── SwiftThrowEnchantment.java     # 迅捷投掷附魔定义
│   ├── InfinityCooldownManager.java   # 无限冷却服务端管理
│   └── InfinityCooldownSync.java      # 冷却状态网络同步
├── entity/                            # 自定义实体
│   ├── ModEntities.java               # 实体注册
│   ├── SuperGoldenAppleEntity.java    # 超级金苹果投掷实体
│   └── UltimateGoldenAppleEntity.java # 终极金苹果投掷实体
├── item/                              # 自定义物品
│   ├── ModItems.java                  # 物品注册
│   ├── SuperEnchantedGoldenAppleItem.java   # 超级附魔金苹果
│   ├── UltimateEnchantedGoldenAppleItem.java # 终极附魔金苹果
│   ├── SuperAppleCraftingHandler.java        # 合成辅助(旧版,兼容)
│   └── SuperApplePotionMerger.java           # 药水效果合并辅助
├── network/                           # 网络
│   ├── SuperAppleModeSwitchC2SPacket.java   # 金苹果模式切换同步
│   ├── EntityNbtRequestC2SPacket.java       # 实体 NBT 请求(C2S)
│   ├── EntityNbtResponseS2CPacket.java      # 实体 NBT 响应(S2C)
│   └── EntityNbtCache.java                   # 客户端 NBT 缓存(500ms 过期)
└── mixin/                             # 所有 Mixin 注入类
    ├── client/                        # 客户端 Mixin
    └── ...                            # 见上表

10.4 关键设计决策

  1. 蛋糕特殊处理:蛋糕是方块而非物品,因此无法直接读取 ItemStack NBT。使用 CakeEnchantmentStorage 将附魔数据绑定到方块坐标 — 放置时写入,完全食用时清除。

  2. 药水附魔数据传输:附魔存储在药水 ItemStack 的 NBT 中。投掷时,完整的 ItemStack 通过 potionEntity.setItem(stack) 传递给弹射物实体。命中时,EnchantmentHelper.getLevel() 从实体的 stack 中读取。

  3. 无限冷却系统:不使用原版 ItemCooldownManager(它会影响所有同类物品)。而是使用以玩家 UUID + NBT 标签(InfinityMarked)为键的自定义冷却管理器,仅影响特定标记的物品。

  4. 迅捷投掷射线检测:在高速迅捷投掷等级(>20)下,基于物理的投掷速度过快,导致穿墙和碰撞检测失败。切换为每 tick 射线检测传送以确保正确的碰撞检测。

  5. 铁砧绕过“过于昂贵”上限:原版铁砧在经验费用超过 39 级时会拒绝操作。SuperAppleAnvilMixin 通过在 updateResult 开始时临时将玩家标记为创造模式,之后恢复原始状态来绕过此检查,确保超级/终极金苹果始终可以在铁砧上操作。

  6. 投掷实体的空渲染:超级/终极金苹果投掷实体使用 EmptyEntityRenderershouldRender() 返回 false),因为在迅捷投掷 25 射线检测模式下实体移动极快,渲染纹理会产生视觉伪影。玩家看到的是暴击粒子轨迹而非飞行的物品实体。

  7. 移除药水/闪电伤害的无敌帧LivingEntityDamageCooldownMixindamage() 开头检查伤害来源。如果是 sharp_potionpower_potionlightning_bolt,则将 timeUntilRegenhurtTime 重置为 0,确保同一 tick 内多个药水附魔伤害和引雷伤害正确叠加。

  8. 多重射击等级上限修改MultishotEnchantmentMixin 注入 Enchantment.getMaxLevel(),将多重射击附魔的原版最大等级从 1 提升到 10,支持更大范围的投掷弹射物散布。

  9. 实体 NBT 网络同步:实体详情 HUD 需要显示服务器的完整 NBT 数据(包括药水效果)。这是通过 EntityNbtRequestC2SPacket(客户端请求)→ EntityNbtResponseS2CPacket(服务器响应)→ EntityNbtCache(客户端缓存,500ms 后过期)的协作实现的跨端数据同步。


XI. 附魔总览表

附魔 食物 药水 最高等级 备注
锋利 V 食物伤害食用者,药水伤害目标
击退 II 随机方向
火焰附加 II 每级 4 秒
效率 V 每级 -10% 食用时间
冰霜行者 III 结冰 + 持续伤害
耐久 III 几率不消耗
力量 V 与锋利叠加
冲击 II 沿飞行方向击退
火焰 I 5 秒火焰
无限 I 不消耗 + 冷却
引雷 I 雷暴天气 AOE 闪电
多重射击 10 锥形散布(原版上限为 1,通过 Mixin 提升至 10)
快速装填 V 减少无限冷却
穿透 IV 穿过多个实体
忠诚 III 2 秒后返回
迅捷投掷 ∞(合法上限 19) 自定义附魔;附魔台最高 10(仅附魔书),铁砧合法上限 19

XII. 运行环境与依赖

  • Minecraft:1.20.4
  • Fabric Loader:≥ 0.15.0
  • Fabric API:任何兼容版本
  • Java:≥ 17
  • 许可证:MIT