2024-11-09
上个月发布1.21.3 java版的我的世界,趁着休息做个强化模组
https://github.com/zoyluoblue/mc_mods/tree/main/magic
这是一个 Minecraft 1.21.3 Fabric 模组,基于 Fabric Loader 0.18.4。模组新增功能方块“强化台”,用于给工具和武器添加独立强化属性。





magicmagic:strengthening_tablebuild/libs/magic-fabric-1.21.3-loader0.18.4-1.0.0.jar创造模式打开物品栏,在“功能性方块”分类里可以找到“强化台”。它会显示在原版“锻造台”后面。
也可以使用命令获取:
/give @p magic:strengthening_table
强化台使用有序合成,合成布局如下:
铁锭 绿宝石 铁锭
紫水晶碎片 锻造台 紫水晶碎片
铁锭 铁锭 铁锭
配方符号:
| 符号 | 物品 |
|---|---|
I |
铁锭 |
E |
绿宝石 |
A |
紫水晶碎片 |
S |
锻造台 |
实际配方:
I E I
A S A
I I I
单个强化台需要:
| 材料 | 数量 |
|---|---|
| 铁锭 | 5 |
| 绿宝石 | 1 |
| 紫水晶碎片 | 2 |
| 锻造台 | 1 |
强化台有两个槽位:
| 槽位 | 用途 | 规则 |
|---|---|---|
| 左侧槽位 | 放入工具或武器 | 每次只能放 1 个可强化物品 |
| 右侧槽位 | 放入强化材料 | 必须放入当前升级所需的材料 |
可强化物品包括:
不可强化物品:
界面中有 5 个中文强化按钮:
| 按钮 | 强化类型 |
|---|---|
| 暴击 | 暴击率强化 |
| 石化 | 石化概率强化 |
| 一击 | 一击必杀概率强化 |
| 力量 | 伤害加成强化 |
| 爆炸 | 爆炸概率强化 |
点击某个按钮时,只强化对应类型。5 种强化互相独立,同一件武器可以同时拥有多种强化。
每种强化都有 4 个大等级,每个大等级有 10 个小等级。
等级显示格式:
大等级-小等级
示例:
| 显示 | 含义 | 总等级 |
|---|---|---|
I-1 |
第 1 大等级第 1 小等级 | 1 |
I-10 |
第 1 大等级第 10 小等级 | 10 |
II-1 |
第 2 大等级第 1 小等级 | 11 |
III-10 |
第 3 大等级第 10 小等级 | 30 |
IV-10 |
第 4 大等级第 10 小等级 | 40 |
总等级计算:
总等级 = (大等级 - 1) * 10 + 小等级
最大等级:
IV-10 = 40 级
升级顺序:
未强化 -> I-1 -> I-2 -> ... -> I-10 -> II-1 -> ... -> IV-10
每种强化的材料规则完全一致,只是强化类型独立计算。
| 大等级 | 等级范围 | 所需材料 |
|---|---|---|
| I | 1-10 级 | 铁锭 |
| II | 11-20 级 | 金锭 |
| III | 21-30 级 | 钻石 |
| IV | 31-40 级 | 绿宝石 |
每个大等级内部,小等级消耗数量按 2 倍递增:
目标小等级消耗 = 2 ^ (目标小等级 - 1)
也就是:
| 目标小等级 | 单次升级消耗 |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 4 |
| 4 | 8 |
| 5 | 16 |
| 6 | 32 |
| 7 | 64 |
| 8 | 128 |
| 9 | 256 |
| 10 | 512 |
同一个大等级从 1 级升满 10 级,总材料消耗:
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 = 1023
单种强化升到满级 IV-10 的总材料:
| 材料 | 数量 |
|---|---|
| 铁锭 | 1023 |
| 金锭 | 1023 |
| 钻石 | 1023 |
| 绿宝石 | 1023 |
5 种强化全部升满时,总材料为:
| 材料 | 数量 |
|---|---|
| 铁锭 | 5115 |
| 金锭 | 5115 |
| 钻石 | 5115 |
| 绿宝石 | 5115 |
注意:
| 总等级 | 显示等级 | 单次升级材料 | 单次消耗 |
|---|---|---|---|
| 1 | I-1 | 铁锭 | 1 |
| 2 | I-2 | 铁锭 | 2 |
| 3 | I-3 | 铁锭 | 4 |
| 4 | I-4 | 铁锭 | 8 |
| 5 | I-5 | 铁锭 | 16 |
| 6 | I-6 | 铁锭 | 32 |
| 7 | I-7 | 铁锭 | 64 |
| 8 | I-8 | 铁锭 | 128 |
| 9 | I-9 | 铁锭 | 256 |
| 10 | I-10 | 铁锭 | 512 |
| 11 | II-1 | 金锭 | 1 |
| 12 | II-2 | 金锭 | 2 |
| 13 | II-3 | 金锭 | 4 |
| 14 | II-4 | 金锭 | 8 |
| 15 | II-5 | 金锭 | 16 |
| 16 | II-6 | 金锭 | 32 |
| 17 | II-7 | 金锭 | 64 |
| 18 | II-8 | 金锭 | 128 |
| 19 | II-9 | 金锭 | 256 |
| 20 | II-10 | 金锭 | 512 |
| 21 | III-1 | 钻石 | 1 |
| 22 | III-2 | 钻石 | 2 |
| 23 | III-3 | 钻石 | 4 |
| 24 | III-4 | 钻石 | 8 |
| 25 | III-5 | 钻石 | 16 |
| 26 | III-6 | 钻石 | 32 |
| 27 | III-7 | 钻石 | 64 |
| 28 | III-8 | 钻石 | 128 |
| 29 | III-9 | 钻石 | 256 |
| 30 | III-10 | 钻石 | 512 |
| 31 | IV-1 | 绿宝石 | 1 |
| 32 | IV-2 | 绿宝石 | 2 |
| 33 | IV-3 | 绿宝石 | 4 |
| 34 | IV-4 | 绿宝石 | 8 |
| 35 | IV-5 | 绿宝石 | 16 |
| 36 | IV-6 | 绿宝石 | 32 |
| 37 | IV-7 | 绿宝石 | 64 |
| 38 | IV-8 | 绿宝石 | 128 |
| 39 | IV-9 | 绿宝石 | 256 |
| 40 | IV-10 | 绿宝石 | 512 |
所有强化都会在物品 tooltip 中显示:
强化类型强化:等级(数值 百分比)
示例:
暴击强化:IV-10(数值 28.0%)
石化强化:IV-10(数值 40.0%)
不同强化的“数值”含义不同:
| 强化类型 | 数值含义 |
|---|---|
| 暴击 | 暴击触发概率 |
| 石化 | 石化触发概率 |
| 一击 | 一击必杀触发概率 |
| 力量 | 直接伤害加成比例 |
| 爆炸 | 爆炸触发概率 |
暴击使用分段权重计算,不是简单每级固定 1%。
每个小等级增加的暴击率:
| 大等级 | 每个小等级增加 |
|---|---|
| I | 0.1% |
| II | 0.2% |
| III | 0.5% |
| IV | 2.0% |
计算公式:
暴击率 =
I 阶已强化小等级数 * 0.1%
+ II 阶已强化小等级数 * 0.2%
+ III 阶已强化小等级数 * 0.5%
+ IV 阶已强化小等级数 * 2.0%
关键等级示例:
| 等级 | 暴击率 |
|---|---|
| I-1 | 0.1% |
| I-10 | 1.0% |
| II-1 | 1.2% |
| II-10 | 3.0% |
| III-1 | 3.5% |
| III-10 | 8.0% |
| IV-1 | 10.0% |
| IV-10 | 28.0% |
触发效果:
触发暴击时,本次攻击最终伤害 * 2
也就是增加 100% 伤害。
石化使用总等级直接计算概率。
计算公式:
石化概率 = 总等级 * 1%
最高等级 IV-10 为 40 级,因此最高石化概率为:
40 * 1% = 40%
石化持续时间:
持续秒数 = ceil(总等级 / 10)
持续时间按真实世界时间计算,不按游戏内白天黑夜时间计算。
| 总等级范围 | 石化持续时间 |
|---|---|
| 1-10 | 1 秒 |
| 11-20 | 2 秒 |
| 21-30 | 3 秒 |
| 31-40 | 4 秒 |
触发效果:
示例:
石化 IV-10 = 总等级 40
石化概率 = 40%
持续时间 = ceil(40 / 10) = 4 秒
一击使用总等级直接计算概率。
计算公式:
一击必杀概率 = 总等级 * 1%
最高等级 IV-10 为 40 级,因此最高一击必杀概率为:
40 * 1% = 40%
触发效果:
目标直接死亡
如果一击和其他效果在同一次攻击中同时触发,以目标直接死亡为主。
力量的数值计算方式与暴击完全一致,但力量不是概率效果。
每个小等级增加的伤害:
| 大等级 | 每个小等级增加 |
|---|---|
| I | 0.1% |
| II | 0.2% |
| III | 0.5% |
| IV | 2.0% |
计算公式:
力量伤害加成 =
I 阶已强化小等级数 * 0.1%
+ II 阶已强化小等级数 * 0.2%
+ III 阶已强化小等级数 * 0.5%
+ IV 阶已强化小等级数 * 2.0%
关键等级示例:
| 等级 | 伤害加成 |
|---|---|
| I-1 | 0.1% |
| I-10 | 1.0% |
| II-10 | 3.0% |
| III-10 | 8.0% |
| IV-10 | 28.0% |
触发规则:
力量不需要触发,每次攻击都会生效。
伤害计算:
强化后伤害 = 原本本次攻击伤害 * (1 + 力量伤害加成)
示例:
原本伤害 = 10
力量 IV-10 = 28.0%
强化后伤害 = 10 * (1 + 28.0%) = 12.8
如果同一次攻击还触发暴击:
最终伤害 = 原本本次攻击伤害 * (1 + 力量伤害加成) * 2
爆炸使用总等级直接计算概率。
计算公式:
爆炸概率 = 总等级 * 1%
最高等级 IV-10 为 40 级,因此最高爆炸概率为:
40 * 1% = 40%
触发效果:
当前实现参数:
| 参数 | 数值 |
|---|---|
| 爆炸引信 | 30 个服务器 tick |
| 爆炸强度 | 3.0 |
| 爆炸来源类型 | 生物爆炸 |
如果爆炸触发但本次攻击原本足以击杀目标,模组会阻止这一刀直接击杀目标,确保延迟爆炸能够发生。
| 强化类型 | 满级 | 满级数值 | 满级效果 |
|---|---|---|---|
| 暴击 | IV-10 | 28.0% | 28.0% 概率使本次伤害翻倍 |
| 石化 | IV-10 | 40.0% | 40.0% 概率停止目标移动 4 秒 |
| 一击 | IV-10 | 40.0% | 40.0% 概率直接击杀目标 |
| 力量 | IV-10 | 28.0% | 每次攻击直接增加 28.0% 伤害 |
| 爆炸 | IV-10 | 40.0% | 40.0% 概率使目标延迟爆炸并死亡 |
强化数据存储在物品的 minecraft:custom_data 中。
数据根节点:
MagicEnhancements
强化类型 ID:
| 强化类型 | NBT ID |
|---|---|
| 暴击 | crit |
| 石化 | petrify |
| 一击 | instant_kill |
| 力量 | power |
| 爆炸 | explosion |
等级字段:
| 字段 | 含义 |
|---|---|
Major |
大等级,范围 1-4 |
Minor |
小等级,范围 1-10 |
由总等级换算为 Major 和 Minor:
Major = ceil(总等级 / 10)
Minor = ((总等级 - 1) % 10) + 1
给一把钻石剑设置单个强化示例:
/give @p minecraft:diamond_sword[minecraft:custom_data={MagicEnhancements:{crit:{Major:2,Minor:5}}}] 1
这个命令会生成:
暴击 II-5
给一把钻石剑设置五种强化全部满级:
/give @p minecraft:diamond_sword[minecraft:custom_data={MagicEnhancements:{crit:{Major:4,Minor:10},petrify:{Major:4,Minor:10},instant_kill:{Major:4,Minor:10},power:{Major:4,Minor:10},explosion:{Major:4,Minor:10}}}] 1
给一把下界合金剑设置自定义等级示例:
/give @p minecraft:netherite_sword[minecraft:custom_data={MagicEnhancements:{crit:{Major:4,Minor:10},petrify:{Major:2,Minor:10},instant_kill:{Major:1,Minor:5},power:{Major:3,Minor:10},explosion:{Major:4,Minor:1}}}] 1
对应效果:
| 强化类型 | 等级 | 数值 |
|---|---|---|
| 暴击 | IV-10 | 28.0% |
| 石化 | II-10 | 20.0% |
| 一击 | I-5 | 5.0% |
| 力量 | III-10 | 8.0% |
| 爆炸 | IV-1 | 31.0% |
示例:把一把钻石剑的暴击从未强化升到 I-3:
| 步骤 | 目标等级 | 材料 | 数量 |
|---|---|---|---|
| 1 | I-1 | 铁锭 | 1 |
| 2 | I-2 | 铁锭 | 2 |
| 3 | I-3 | 铁锭 | 4 |
总消耗:
铁锭 7 个
最终暴击率:
I-3 = 3 * 0.1% = 0.3%
在项目根目录执行:
./gradlew build
构建后的可用模组 jar 位于:
build/libs/magic-fabric-1.21.3-loader0.18.4-1.0.0.jar