龙箱
基本信息
龙箱(Draconium Chest)是 Draconic Evolution 的复合存储方块,同时具备物品存储 + 自动熔炼 + 能量缓冲三种能力。
| 属性 | 值 | 来源 |
|---|---|---|
| 注册名 | draconicevolution:draconiumChest |
ModBlocks.java:122, 78 |
| 类 | BlockCustomDrop → TileDraconiumChest |
DraconiumChest.java:48、CommonProxy.java:236 |
| 实现的接口 | ISidedInventory、IEnergyReceiver、ICustomItemData |
TileDraconiumChest.java:34 |
| 碰撞箱 | (0.0625, 0, 0.0625) → (0.9375, 0.875, 0.9375) |
DraconiumChest.java:57 |
| 硬度 | 5.0(继承 BlockDE) |
BlockDE.java:19 |
| 爆炸抗性 | 2000.0 | DraconiumChest.java:58 |
| 材质 | Material.iron |
DraconiumChest.java:53 |
| 脚步声 | soundTypeStone |
DraconiumChest.java:56 |
| 创造标签 | DraconicEvolution.tabBlocksItems |
DraconiumChest.java:55 |
数值
| 数值名 | 值 | 来源 |
|---|---|---|
items 数组长度 |
240 | TileDraconiumChest.java:35 |
| 对外暴露槽位数 | 234(items.length - 6) |
TileDraconiumChest.java:422-423 |
| 合成槽位数组 | 10(itemsCrafting) |
TileDraconiumChest.java:36 |
| 单槽上限 | 64 | TileDraconiumChest.java:490-491 |
| 内置能量容量 | 1,000,000 RF | TileDraconiumChest.java:48 |
| 单次最大接收能量 | 10,000 RF | TileDraconiumChest.java:48 |
| 初始能量 | 0 | EnergyStorage(1000000, 10000, 0) |
| 熔炼完成时间 | 1600 tick | TileDraconiumChest.java:59 |
| 熔炼最大燃烧速度 | 50 | TileDraconiumChest.java:58 |
| 熔炼进度范围 | 0 – 1000 | TileDraconiumChest.java:52-53 |
| 自动投料档位 | 0 – 3 | TileDraconiumChest.java:61,对应 button.de.chestAutoFeed0 – 3 |
234 而非 240:
getSizeInventory()返回items.length - 6,即数组末尾 6 个槽位不对外开放(TileDraconiumChest.java:422-423)。这 6 个槽位的用途未在源码注释中说明。
功能
存储黑名单
STORAGE_BLACKLIST(DraconiumChest.java:49-50)禁止三类物品入箱:
| 黑名单项 | 说明 |
|---|---|
tile.thermalexpansion.strongbox |
Thermal Expansion 强化盒 |
item.thermalexpansion.satchel |
Thermal Expansion 背包 |
tile.draconicevolution:draconiumChest |
龙箱自身(防止箱子套箱子) |
判定实现(DraconiumChest.java:62-66)使用子串匹配而非精确相等:
public static boolean isStackValid(ItemStack stack) {
for (int i = 0; i < STORAGE_BLACKLIST.length; i++)
if (stack.getUnlocalizedName().contains(STORAGE_BLACKLIST[i])) return false;
return true;
}
因为 getUnlocalizedName() 返回的是 draconicevolution:<name> 形式,任何名字中包含上述子串的物品都会被拒绝——这是一个偏保守但符合预期的实现。
编辑模式
潜行右键切换编辑模式(DraconiumChest.java:70-80),对应本地化键 msg.draconiumChestEditmode。
颜色指示
箱子有 RGB 指示灯,默认 red = 100, green = 0, blue = 150(TileDraconiumChest.java:42-44),可切换红 / 绿 / 蓝 / 黄,对应本地化键 msg.draconiumChestRed / Green / Blue(外加编辑模式下的 EditL1 – EditL4)。
自动化
| 机制 | 本地化键 |
|---|---|
| 锁定输出槽 | button.de.chestLockOutput |
| 自动投料 0–3 档 | button.de.chestAutoFeed0 – chestAutoFeed3 |
| 分面访问 | TileDraconiumChest.java:664 getAccessibleSlotsFromSide(int side) |
TileDraconiumChest 实现了 ISidedInventory(TileDraconiumChest.java:34),因此不同朝向暴露不同的可访问槽位。
交互
| 触发 | 行为 |
|---|---|
| 右键箱子 | 打开存储 GUI |
| 潜行右键箱子 | 切换编辑模式(改颜色、锁定输出等) |
| 放入箱子 | 触发内置熔炼器逻辑,自动处理可熔炼物品 |
| 投入燃料 | 熔炼燃烧速度最高 50(TileDraconiumChest.java:58) |
| 从其他面访问 | 按朝向分配可访问槽位 |
| 接入 FE 网络 | 作为 IEnergyReceiver 缓冲 1,000,000 RF |
相关条目
- 存储与逻辑方块 - 箱子方块属性与黑名单判定
- TileEntity 一览 -
TileDraconiumChest注册行 - 合成配方系统