背包染色配方
[!INFO] 注册真源:
RecipeHelper.registerRecipes()中的for (int i = 1; i < 17; i++)循环
基本信息
RecipeHelper 用一个 dyes 字符串数组把颜色索引映射到原版染料 Item,
再对 16 种颜色各注册 3 个 ShapedOreRecipe:
String[] dyes = { "dyeBlack", "dyeRed", "dyeGreen", "dyeBrown", "dyeBlue", "dyePurple",
"dyeCyan", "dyeLightGray", "dyeGray", "dyePink", "dyeLime", "dyeYellow",
"dyeLightBlue", "dyeMagenta", "dyeOrange", "dyeWhite" };
16 × 3 = 48 个静态配方,全部为 "LLL" / "LDL" / "LLL" 形状(L=皮革类材料,D=染料)。
颜色索引表
索引 i 直接对应 metadata 的个位/末两位,dyes[i-1] 为所用染料:
| i | 名称 | 染料 | i | 名称 | 染料 | |
|---|---|---|---|---|---|---|
| 1 | 黑 | dyeBlack | 9 | 粉 | dyePink | |
| 2 | 红 | dyeRed | 10 | 黄绿 | dyeLime | |
| 3 | 绿 | dyeGreen | 11 | 黄 | dyeYellow | |
| 4 | 棕 | dyeBrown | 12 | 淡蓝 | dyeLightBlue | |
| 5 | 蓝 | dyeBlue | 13 | 品红 | dyeMagenta | |
| 6 | 紫 | dyePurple | 14 | 橙 | dyeOrange | |
| 7 | 青 | dyeCyan | 15 | 白 | dyeWhite | |
| 8 | 淡灰 | dyeLightGray | 16 | 灰 | dyeGray |
metadata 0 = 无色(由独立的无染料配方产出)。
三组配方对照
| 目标 metadata | 形状 | L | 开关条件 |
|---|---|---|---|
i(1…16) |
LLL/LDL/LLL |
Items.leather |
!DISABLE_BACKPACKS |
100 + i |
MD(2 格) |
M = backpack(100) |
!DISABLE_BIG_BACKPACKS && !BIG_BY_UPGRADE_ONLY |
200 + i |
LLL/LDL/LLL |
ItemsBackpack.tannedLeather |
同上 |
中等级(100 + i)的形状是 2 格而非 8 格,材料是一个已合成的中等级无色背包
(metadata 100)加染料 —— 与另两组的材料逻辑完全不同。
两个无色基础配方(i = 0)
| 目标 | 形状 | 条件 |
|---|---|---|
0 普通无色 |
LLL/L L/LLL,L = Items.leather |
!DISABLE_BACKPACKS |
100 中级无色 |
LLL/LNL/LLL,L = leather,N = backpack(0) |
!DISABLE_BACKPACKS 不适用;受 !DISABLE_BIG_BACKPACKS 控制 |
200 大级无色 |
LLL/L L/LLL,L = tannedLeather |
!DISABLE_BIG_BACKPACKS && !BIG_BY_UPGRADE_ONLY |
⚠️ 中等级无色包的代码在 !DISABLE_BACKPACKS 之外:它被放在
if (!DISABLE_BIG_BACKPACKS && !BIG_BY_UPGRADE_ONLY) 块内,
所以 disableBackpacks = true 不会阻止 metadata 100 的产出。
Airship Mod 兼容分支
AIRSHIP_MOD_COMPATIBILITY 为 true 时,无色普通背包的配方由
LLL/L L/LLL 变为中心放箱子的 LLL/LCL/LLL(C = Blocks.chest):
if (ConfigurationBackpack.AIRSHIP_MOD_COMPATIBILITY) {
GameRegistry.addRecipe(backpackStack, "LLL", "LCL", "LLL", 'L', Items.leather, 'C', Blocks.chest);
} else {
GameRegistry.addRecipe(backpackStack, "LLL", "L L", "LLL", 'L', Items.leather);
}
此分支只影响 metadata 0 这一个配方,16 种染色配方不受影响。
末位背包(ENDERBACKPACK)不参与染色
末位包的两种配方由 ENDER_RECIPE 配置切换,与本条目无关:
enderRecipe |
形状 | 材料 |
|---|---|---|
0(默认) |
LLL/LEL/LLL |
L = leather,E = Blocks.ender_chest |
1 |
LLL/LDL/LLL |
L = leather,D = Items.ender_eye |
相关条目
- 背包 - metadata 编码与 52 变体的由来
- 背包染色(自由重组) - 任意形状的 1 包 + 1 染色剂
- Backpack 配置 - 各
DISABLE_*开关