若烹小鲜

我的世界模组——强化模组

# 项目地址:
https://github.com/zoyluoblue/mc_mods/tree/main/magic

# Magic 强化台模组规则说明

这是一个 Minecraft 1.21.3 Fabric 模组,基于 Fabric Loader 0.18.4。模组新增功能方块“强化台”,用于给工具和武器添加独立强化属性。

## 演示


## 版本信息

- Minecraft:1.21.3
- Fabric Loader:0.18.4
- Fabric API:0.114.1+1.21.3
- 模组 ID:`magic`
- 强化台方块 ID:`magic:strengthening_table`
- 打包文件:`build/libs/magic-fabric-1.21.3-loader0.18.4-1.0.0.jar`

## 强化台获取方式

### 创造模式获取

创造模式打开物品栏,在“功能性方块”分类里可以找到“强化台”。它会显示在原版“锻造台”后面。

也可以使用命令获取:

```mcfunction
/give @p magic:strengthening_table
```

### 生存模式合成

强化台使用有序合成,合成布局如下:

```text
铁锭       绿宝石       铁锭
紫水晶碎片 锻造台       紫水晶碎片
铁锭       铁锭         铁锭
```

配方符号:

| 符号 | 物品 |
| --- | --- |
| `I` | 铁锭 |
| `E` | 绿宝石 |
| `A` | 紫水晶碎片 |
| `S` | 锻造台 |

实际配方:

```text
I E I
A S A
I I I
```

单个强化台需要:

| 材料 | 数量 |
| --- | ---: |
| 铁锭 | 5 |
| 绿宝石 | 1 |
| 紫水晶碎片 | 2 |
| 锻造台 | 1 |

## 强化台界面规则

强化台有两个槽位:

| 槽位 | 用途 | 规则 |
| --- | --- | --- |
| 左侧槽位 | 放入工具或武器 | 每次只能放 1 个可强化物品 |
| 右侧槽位 | 放入强化材料 | 必须放入当前升级所需的材料 |

可强化物品包括:

- 剑、镐、斧、锹、锄等工具。
- 弓、弩、三叉戟等武器。
- 其他具有耐久度的非护甲物品。

不可强化物品:

- 护甲。
- 鞘翅。
- 没有耐久度且不属于工具或武器的普通物品。

界面中有 5 个中文强化按钮:

| 按钮 | 强化类型 |
| --- | --- |
| 暴击 | 暴击率强化 |
| 石化 | 石化概率强化 |
| 一击 | 一击必杀概率强化 |
| 力量 | 伤害加成强化 |
| 爆炸 | 爆炸概率强化 |

点击某个按钮时,只强化对应类型。5 种强化互相独立,同一件武器可以同时拥有多种强化。

## 强化等级规则

每种强化都有 4 个大等级,每个大等级有 10 个小等级。

等级显示格式:

```text
大等级-小等级
```

示例:

| 显示 | 含义 | 总等级 |
| --- | --- | ---: |
| `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 |

总等级计算:

```text
总等级 = (大等级 - 1) * 10 + 小等级
```

最大等级:

```text
IV-10 = 40 级
```

升级顺序:

```text
未强化 -> I-1 -> I-2 -> ... -> I-10 -> II-1 -> ... -> IV-10
```

## 强化材料规则

每种强化的材料规则完全一致,只是强化类型独立计算。

| 大等级 | 等级范围 | 所需材料 |
| --- | --- | --- |
| I | 1-10 级 | 铁锭 |
| II | 11-20 级 | 金锭 |
| III | 21-30 级 | 钻石 |
| IV | 31-40 级 | 绿宝石 |

每个大等级内部,小等级消耗数量按 2 倍递增:

```text
目标小等级消耗 = 2 ^ (目标小等级 - 1)
```

也就是:

| 目标小等级 | 单次升级消耗 |
| ---: | ---: |
| 1 | 1 |
| 2 | 2 |
| 3 | 4 |
| 4 | 8 |
| 5 | 16 |
| 6 | 32 |
| 7 | 64 |
| 8 | 128 |
| 9 | 256 |
| 10 | 512 |

同一个大等级从 1 级升满 10 级,总材料消耗:

```text
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 = 1023
```

单种强化升到满级 `IV-10` 的总材料:

| 材料 | 数量 |
| --- | ---: |
| 铁锭 | 1023 |
| 金锭 | 1023 |
| 钻石 | 1023 |
| 绿宝石 | 1023 |

5 种强化全部升满时,总材料为:

| 材料 | 数量 |
| --- | ---: |
| 铁锭 | 5115 |
| 金锭 | 5115 |
| 钻石 | 5115 |
| 绿宝石 | 5115 |

注意:

- 材料槽必须至少放入 1 个当前等级需要的材料。
- 如果升级需要超过 64 个材料,强化台会从材料槽和玩家背包中一起统计并扣除。
- 创造模式玩家点击强化按钮时不会消耗材料。

## 完整升级材料表

| 总等级 | 显示等级 | 单次升级材料 | 单次消耗 |
| ---: | --- | --- | ---: |
| 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 中显示:

```text
强化类型强化:等级(数值 百分比)
```

示例:

```text
暴击强化:IV-10(数值 28.0%)
石化强化:IV-10(数值 40.0%)
```

不同强化的“数值”含义不同:

| 强化类型 | 数值含义 |
| --- | --- |
| 暴击 | 暴击触发概率 |
| 石化 | 石化触发概率 |
| 一击 | 一击必杀触发概率 |
| 力量 | 直接伤害加成比例 |
| 爆炸 | 爆炸触发概率 |

## 暴击数值计算

暴击使用分段权重计算,不是简单每级固定 1%。

每个小等级增加的暴击率:

| 大等级 | 每个小等级增加 |
| --- | ---: |
| I | 0.1% |
| II | 0.2% |
| III | 0.5% |
| IV | 2.0% |

计算公式:

```text
暴击率 =
  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% |

触发效果:

```text
触发暴击时,本次攻击最终伤害 * 2
```

也就是增加 100% 伤害。

## 石化数值计算

石化使用总等级直接计算概率。

计算公式:

```text
石化概率 = 总等级 * 1%
```

最高等级 `IV-10` 为 40 级,因此最高石化概率为:

```text
40 * 1% = 40%
```

石化持续时间:

```text
持续秒数 = ceil(总等级 / 10)
```

持续时间按真实世界时间计算,不按游戏内白天黑夜时间计算。

| 总等级范围 | 石化持续时间 |
| --- | ---: |
| 1-10 | 1 秒 |
| 11-20 | 2 秒 |
| 21-30 | 3 秒 |
| 31-40 | 4 秒 |

触发效果:

- 目标被施加最高等级缓慢效果。
- 目标速度会被持续归零。
- 到达真实时间截止后解除控制。

示例:

```text
石化 IV-10 = 总等级 40
石化概率 = 40%
持续时间 = ceil(40 / 10) = 4 秒
```

## 一击数值计算

一击使用总等级直接计算概率。

计算公式:

```text
一击必杀概率 = 总等级 * 1%
```

最高等级 `IV-10` 为 40 级,因此最高一击必杀概率为:

```text
40 * 1% = 40%
```

触发效果:

```text
目标直接死亡
```

如果一击和其他效果在同一次攻击中同时触发,以目标直接死亡为主。

## 力量数值计算

力量的数值计算方式与暴击完全一致,但力量不是概率效果。

每个小等级增加的伤害:

| 大等级 | 每个小等级增加 |
| --- | ---: |
| I | 0.1% |
| II | 0.2% |
| III | 0.5% |
| IV | 2.0% |

计算公式:

```text
力量伤害加成 =
  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% |

触发规则:

```text
力量不需要触发,每次攻击都会生效。
```

伤害计算:

```text
强化后伤害 = 原本本次攻击伤害 * (1 + 力量伤害加成)
```

示例:

```text
原本伤害 = 10
力量 IV-10 = 28.0%
强化后伤害 = 10 * (1 + 28.0%) = 12.8
```

如果同一次攻击还触发暴击:

```text
最终伤害 = 原本本次攻击伤害 * (1 + 力量伤害加成) * 2
```

## 爆炸数值计算

爆炸使用总等级直接计算概率。

计算公式:

```text
爆炸概率 = 总等级 * 1%
```

最高等级 `IV-10` 为 40 级,因此最高爆炸概率为:

```text
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` 中。

数据根节点:

```text
MagicEnhancements
```

强化类型 ID:

| 强化类型 | NBT ID |
| --- | --- |
| 暴击 | `crit` |
| 石化 | `petrify` |
| 一击 | `instant_kill` |
| 力量 | `power` |
| 爆炸 | `explosion` |

等级字段:

| 字段 | 含义 |
| --- | --- |
| `Major` | 大等级,范围 1-4 |
| `Minor` | 小等级,范围 1-10 |

由总等级换算为 `Major` 和 `Minor`:

```text
Major = ceil(总等级 / 10)
Minor = ((总等级 - 1) % 10) + 1
```

给一把钻石剑设置单个强化示例:

```mcfunction
/give @p minecraft:diamond_sword[minecraft:custom_data={MagicEnhancements:{crit:{Major:2,Minor:5}}}] 1
```

这个命令会生成:

```text
暴击 II-5
```

给一把钻石剑设置五种强化全部满级:

```mcfunction
/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
```

给一把下界合金剑设置自定义等级示例:

```mcfunction
/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% |

## 使用流程示例

1. 合成或获取强化台。
2. 将强化台放置在世界中。
3. 右键打开强化台。
4. 左侧槽位放入要强化的工具或武器。
5. 右侧槽位放入当前等级需要的材料。
6. 点击“暴击”“石化”“一击”“力量”或“爆炸”按钮。
7. 强化成功后,物品 tooltip 会显示新的强化等级和数值。

示例:把一把钻石剑的暴击从未强化升到 `I-3`:

| 步骤 | 目标等级 | 材料 | 数量 |
| ---: | --- | --- | ---: |
| 1 | I-1 | 铁锭 | 1 |
| 2 | I-2 | 铁锭 | 2 |
| 3 | I-3 | 铁锭 | 4 |

总消耗:

```text
铁锭 7 个
```

最终暴击率:

```text
I-3 = 3 * 0.1% = 0.3%
```

## 构建

在项目根目录执行:

```sh
./gradlew build
```

构建后的可用模组 jar 位于:

```text
build/libs/magic-fabric-1.21.3-loader0.18.4-1.0.0.jar
```