生物群系胶囊
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | RandomThings:biomeCapsule |
| 类 | lumien.randomthings.Items.ItemBiomeCapsule |
| 堆叠上限 | 1(ItemBiomeCapsule.java:31) |
| 充能间隔 | BiomeChargeTime,默认 20 tick(RTConfiguration.java:104-108) |
| 静态颜色表 | ItemBiomeCapsule.biomeColors(ItemBiomeCapsule.java:24) |
| 开关 | Items.BiomeSolution(RTConfiguration.java:213,配置名与注册名不同) |
功能
生物群系胶囊记录所在位置的生物群系并为其充能。充能满后配合生物群系画刷使用,可以把任意区块的群系改写为胶囊里记录的那个。
充能机制
onUpdate 每 20 tick(1 秒)检查一次并累加(ItemBiomeCapsule.java:42 起):
if (!worldObj.isRemote && worldObj.getTotalWorldTime() % 20 == 0 && stack.getItemDamage() != 0) {
int biomeID = stack.getItemDamage() - 1;
...
两个关键点:
- metadata 编码:
stack.getItemDamage() - 1得到群系 ID,所以 metadata 0 表示"未记录任何群系"(被条件排除),metadata N 表示群系 N-1 - 充能间隔:条件写死
% 20,而配置项BiomeChargeTime默认也是 20(RTConfiguration.java:104-108)—— 需注意条件是硬编码的 20,Settings.BIOME_CHARGE_TIME在别处使用
静态颜色表
构造函数预置 4 个维度的群系颜色(ItemBiomeCapsule.java:33-40):
| 群系 ID | 颜色值 | 注释 |
|---|---|---|
| 0 | 1452177 | Ozean(海洋) |
| 7 | 4303848 | Fluss(河流) |
| 8 | 6029312 | Nether(下界) |
| 9 | 8223332 | The End(末地) |
该表是 public static HashMap<Integer, Integer>,可被外部 mod 修改 —— RandomThings.imcMessages 处理 IMC 动作 setSolutionColor 往里写值(RandomThings.java:189-195):
if (action.equals("setSolutionColor")) {
int biomeID = nbt.getInteger("biomeID");
int color = nbt.getInteger("color");
ItemBiomeCapsule.biomeColors.put(biomeID, color);
}
这是本 mod 唯一的 IMC 公共接口。
设定群系
/rt setBiomeCapsule <biomeID> 可直接把手中胶囊的 metadata 设为 biomeID + 1(Core/Commands/RTCommand.java:146-169),并用 Preconditions 校验手持物确实是 ItemBiomeCapsule、群系必须存在(BiomeGenBase.getBiome(biomeID) != null)。
数值
| 数值名 | 值 |
|---|---|
| 堆叠上限 | 1 |
| 充能判定周期 | 20 tick(硬编码 % 20,:42) |
BiomeChargeTime 默认 |
20(RTConfiguration.java:104-108) |
| 预置群系颜色数 | 4(0 / 7 / 8 / 9) |
| metadata 语义 | 群系ID + 1;0 = 未记录 |
交互
| 触发 | 行为 |
|---|---|
| 携带移动 | 每 20 tick 记录当前群系并累加充能 |
| 充能满 | 供生物群系画刷 消耗 1 点 |
/rt setBiomeCapsule |
手动指定群系 |
合成配方
dte
qgq
ooo
| 字符 | 物品 |
|---|---|
d |
钻石块(blockDiamond) |
t |
转换核心(RandomThings:ingredient meta 5) |
e |
绿宝石(gemEmerald) |
q |
下界石英(gemQuartz) |
g |
玻璃(blockGlass) |
o |
黑曜石 |
来源:Library/Recipes.java:422-439,受 ConfigItems.biomeCapsule 约束。