随机武器战利品 Random Weapon Chest Content
本 mod 世界生成的唯一内容生成器:向原版 6 类结构的箱子注入随机等级 Tinkers’ 武器。本条目讲算法,具体的箱子类别见各条目。
- 模块:
WorldGen(脉冲WorldGen) - Pulse 描述:
This module takes care of additional awesome dungeon loot. - 注册类:
worldgen/IguanaWorldGen.java - 本类:
worldgen/RandomWeaponChestContent.java→net.minecraft.item.ItemStack - 事件:
FMLInitializationEvent(@Handler init)
注册位置
IguanaWorldGen.init 用 ChestGenHooks.addItem(category, new RandomWeaponChestContent(...)) 向 Forge 的战利品系统注入 6 条规则:
ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST,
new RandomWeaponChestContent(0, 1, 10, 0, 0, HarvestLevels._1_flint, 3));
源码注释把这次注入分成两类意图:
| 注释 | 对应 |
|---|---|
// add some a starting weapon to bonus chests! |
奖励箱(BONUS_CHEST)——给一把起手武器 |
// awesome dungeon loot! |
其余 5 类地牢结构 |
本 mod 不生成任何新结构、不放置任何方块——它只往已存在的原版结构里注入战利品条目。验证:
$ grep -rn "IWorldGenerator\|WorldGenerator\|Structure\|biome" src/main/java
(无任何 WorldGenerator / 结构生成实现)
worldgen 包只有 2 个文件:IguanaWorldGen.java(37 行,6 次 ChestGenHooks.addItem)与 RandomWeaponChestContent.java(继承 ItemStack 的战利品条目)。
本 mod 的全部战利品注入(8 条,跨 2 个模块)
RandomWeaponChestContent 本身只有 6 条用法,但整个 mod 一共向 7 个不同的结构注入 8 条战利品条目:
| # | 结构 | 注入模块 | 内容 | 权重 | 条目 |
|---|---|---|---|---|---|
| 1 | 村庄铁匠铺 | MobHeads |
WeightedRandomChestContent:神秘道具 meta 0 |
1 | FMLPostInitializationEvent |
| 2 | 要塞图书馆 | MobHeads |
WeightedRandomChestContent:神秘道具 meta 3 |
1 | FMLPostInitializationEvent |
| 3 | 奖励箱 | WorldGen |
本类 | 10 | FMLInitializationEvent |
| 4 | 地牢箱 | WorldGen |
本类 | 2 | 同上 |
| 5 | 废弃矿井走廊 | WorldGen |
本类 | 2 | 同上 |
| 6 | 沙漠金字塔 | WorldGen |
本类 | 2 | 同上 |
| 7 | 丛林神庙 | WorldGen |
本类 | 2 | 同上 |
| 8 | 要塞图书馆 | WorldGen |
本类 | 2 | 同上 |
要塞图书馆被两个模块各注入一次,因此它有 2 条战利品条目。
此外 Tweaks 模块还会移除奖励箱中的 4 种原版工具并加入 2~4 把固定构造的 Tinkers’ 工具,详见 奖励箱战利品。
7 个构造参数
RandomWeaponChestContent(minM, maxM, rarity, minD, maxD, harvestLevel, quality)
| 参数 | 含义 | 说明 |
|---|---|---|
minM |
最小 metadata | 伤害值下界 |
maxM |
最大 metadata | 伤害值上界 |
rarity |
稀有度权重 | 在该箱子类别的总权重中的占比 |
minD |
最小等级 | 工具等级(ToolLevel)下界 |
maxD |
最大等级 | 工具等级上界 |
harvestLevel |
挖掘等级 | 用 HarvestLevels._N_xxx 常量,见 挖掘等级系统 |
quality |
品质 | 传给 ToolCore 的品质值 |
6 条规则一览
| 结构箱子 | 稀有度权重 | 工具等级范围 | metadata 范围 | 挖掘等级 | 品质 |
|---|---|---|---|---|---|
| 奖励箱 | 10 | 0 ~ 0 | 0 ~ 1 | _1_flint(1 燧石) |
3 |
| 地牢箱 | 2 | 1 ~ 2 | 0 ~ 0 | _5_diamond(5 钻石) |
4 |
| 废弃矿井走廊 | 2 | 0 ~ 0 | 0 ~ 0 | _2_copper(2 铜) |
2 |
| 沙漠金字塔 | 2 | 0 ~ 2 | 0 ~ 0 | _5_diamond(5 钻石) |
3 |
| 丛林神庙 | 2 | 1 ~ 1 | 0 ~ 0 | _5_diamond(5 钻石) |
3 |
| 要塞图书馆 | 2 | 2 ~ 2 | 0 ~ 0 | _5_diamond(5 钻石) |
4 |
对应的 ChestGenHooks 常量:
ChestGenHooks.BONUS_CHEST
ChestGenHooks.DUNGEON_CHEST
ChestGenHooks.MINESHAFT_CORRIDOR
ChestGenHooks.PYRAMID_DESERT_CHEST
ChestGenHooks.PYRAMID_JUNGLE_CHEST
ChestGenHooks.STRONGHOLD_LIBRARY
6 条规则全部是 new RandomWeaponChestContent(...),没有第二种内容类型。
设计意图
稀有度权重的对比很有说明性:
- 奖励箱权重 10,是其余(2)的 5 倍——确保玩家前期开箱大概率能拿到起手武器(等级固定 0、挖掘等级仅燧石级、品质 3)。
rarity越大越常见。 - 地牢箱 / 丛林神庙 / 要塞图书馆的工具等级分别是「1~2」「1~1」「2~2」——越难到达的结构给越高级的武器。
- 要塞图书馆是唯一带 metadata 范围 2~2 的(
minD = 2, maxD = 2),即固定 2 级工具,是全部 6 条中等级最高的一档。 - 废弃矿井走廊给的是最弱配置(等级 0、镐级、品质 2)——因为废弃矿井是最容易到达的结构。
品质(quality)的分布:奖励箱 3,地牢箱/要塞 4,废弃矿井 2,沙漠/丛林 3。
重要前提
注入的武器使用本 mod 重平衡后的材料等级与数值,因此必须与 挖掘等级系统 和 材料重平衡 一同理解。若整合包关闭了 HarvestLevelTweaks 模块,地牢箱里会出现「挖掘等级 5 但材料被重映射到别的等级」的错配工具。