原料

基本信息

属性 值
注册名 RandomThings:ingredient
类 lumien.randomthings.Items.ItemIngredient
变体数 8(metadata 0–7,一个类)
贴图 统一前缀 RandomThings:crafting/(ItemIngredient.java:27)
始终注册 是(ModItems.java:78)
物品形式 只有 ingredient,无对应方块(grep 'ModBlocks.ingredients' = 0)

功能

原料是本 mod 的通用中间材料集合,把 8 种零散材料收进单一物品 ID,用 metadata 区分。容器内部用 Ingredient 枚举记录每种的贴图名、显示名与堆叠上限(ItemIngredient.java:22-30)。

8 个变体

构造函数按固定顺序注册 8 项(ItemIngredient.java:37-44),metadata 即下标:

meta 中文名(zh_CN.lang) 堆叠上限 用途
0 玩家核心(:66) 64 玩家接口 配方
1 黑曜石手柄(:67) 64 黑曜石棒,3 个矿物辞典名
2 末影碎片(:68) 16 末影邮件 配方
3 灵气(:69) 64 灵魂玻璃、灵魂系列配方
4 灵魂之铁(:70) 64 灵魂盔甲 / 剑 / 钥匙 / 银瓶
5 转换核心(:71) 1 混色机器、生物群系画刷
6 末影钻石(:72) 64 末影能量分配器
7 充能水(:73) 16 能量分配器、白石

堆叠上限来自 new Ingredient("name", "name", maxStack) 的第三个参数(ItemIngredient.java:26),逐项见 :37-44。

meta 4(灵魂之铁)有半透明渲染特例:getColorFromItemStack 在 par2 == 4 时开启 alpha 混合(ItemIngredient.java:59-64)。

矿物辞典注册

meta 1 一次性注册了三个辞典名(ItemIngredient.java:46-48):

OreDictionary.registerOre("stickObsidian", new ItemStack(this, 1, 1));
OreDictionary.registerOre("obsidianStick",   new ItemStack(this, 1, 1));
OreDictionary.registerOre("obsidianRod",     new ItemStack(this, 1, 1));

三个名字指向同一物品,因此模组内配方用 stickObsidian,而 ModCompHandler.postInit 还会把其他 mod 注册的 obsidianRod 全部并入 stickObsidian(Handler/ModCompHandler.java:12-16)—— 这就是黑曜石棒配方能吃到异构模组黑曜石棒的原因。

战利品

meta 4(灵魂之铁)进入村庄铁匠铺箱子(ItemIngredient.java:50-52):

ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH,
        new WeightedRandomChestContent(new ItemStack(this, 1, 4), 1, 1, 3));

权重 3、堆叠 1–1。

数值

数值名 值
变体数 8
堆叠上限范围 1(转换核心)~ 64
辞典名数量 3(全部指向 meta 1)
战利品投放 1 处(meta 4,村庄铁匠铺,权重 3)

合成配方

产物 配方 来源
meta 0 玩家核心 xlx / lel / xlx,l=gemLapis、e=gemEmerald Recipes.java:102-103
meta 1 ×3 黑曜石手柄 o / o,o=黑曜石 Recipes.java:104-105
meta 2 ×4 末影碎片 fe,e=末影珍珠、f=燧石 Recipes.java:106-107
meta 4 灵魂之铁 ei,e=灵气、i=ingotIron Recipes.java:108-115
meta 5 转换核心 无序:dyeRed+dyeOrange+dyeYellow+dyeGreen+dyeCyan+dyePurple+dyeGray+dyeLime+dyeMagenta(9 种) Recipes.java:116-127
meta 6 末影钻石 xex / ede / xex,e=末影珍珠、d=gemDiamond Recipes.java:128-137
meta 7 充能水 自定义配方,非 GameRegistry Recipes.java:521-526
meta 3 灵气 无合成配方(击杀灵魂掉落) 无

灵气(meta 3)无 GameRegistry 配方 —— 它是击杀灵魂掉落的唯一产物。EntitySpirit.getDropItem() 返回 ModItems.ingredients(EntitySpirit.java:108-111),dropFewItems 以固定 meta 3 掉落:

int amount = this.rand.nextInt(3) + this.rand.nextInt(1 + looting);
this.entityDropItem(new ItemStack(ModItems.ingredients, amount, 3), 0.0F);

(EntitySpirit.java:114-117)—— 掉落量 nextInt(3)(0–2)加 nextInt(1 + looting),即 0 到 2 + looting 个。

相关条目