
更好的附魔
将原版附魔效果带到食物和药水上——让它们也拥有附魔能力。
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 版本
- 条件:
- 必须为雷暴天气(
world.isThundering()) - 目标实体位置必须对天空可见(
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 秒(可由快速装填减少)
- 基于 NBT 标签(
- 与耐久的交互:
- 有耐久时:进行耐久判定 — 通过 → 无冷却,失败 → 进入冷却
- 无耐久时:总是进入冷却
- 客户端显示:通过联网同步的灰色半透明冷却覆盖层
- 冷却阻挡:冷却期间无法再次使用该物品
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 关键设计决策
蛋糕特殊处理:蛋糕是方块而非物品,因此无法直接读取 ItemStack NBT。使用
CakeEnchantmentStorage将附魔数据绑定到方块坐标 — 放置时写入,完全食用时清除。药水附魔数据传输:附魔存储在药水 ItemStack 的 NBT 中。投掷时,完整的 ItemStack 通过
potionEntity.setItem(stack)传递给弹射物实体。命中时,EnchantmentHelper.getLevel()从实体的 stack 中读取。无限冷却系统:不使用原版
ItemCooldownManager(它会影响所有同类物品)。而是使用以玩家 UUID + NBT 标签(InfinityMarked)为键的自定义冷却管理器,仅影响特定标记的物品。迅捷投掷射线检测:在高速迅捷投掷等级(>20)下,基于物理的投掷速度过快,导致穿墙和碰撞检测失败。切换为每 tick 射线检测传送以确保正确的碰撞检测。
铁砧绕过“过于昂贵”上限:原版铁砧在经验费用超过 39 级时会拒绝操作。
SuperAppleAnvilMixin通过在updateResult开始时临时将玩家标记为创造模式,之后恢复原始状态来绕过此检查,确保超级/终极金苹果始终可以在铁砧上操作。投掷实体的空渲染:超级/终极金苹果投掷实体使用
EmptyEntityRenderer(shouldRender()返回 false),因为在迅捷投掷 25 射线检测模式下实体移动极快,渲染纹理会产生视觉伪影。玩家看到的是暴击粒子轨迹而非飞行的物品实体。移除药水/闪电伤害的无敌帧:
LivingEntityDamageCooldownMixin在damage()开头检查伤害来源。如果是sharp_potion、power_potion或lightning_bolt,则将timeUntilRegen和hurtTime重置为 0,确保同一 tick 内多个药水附魔伤害和引雷伤害正确叠加。多重射击等级上限修改:
MultishotEnchantmentMixin注入Enchantment.getMaxLevel(),将多重射击附魔的原版最大等级从 1 提升到 10,支持更大范围的投掷弹射物散布。实体 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
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。