虚空箱与运输信标
基本信息
| 属性 | 值 |
|---|---|
| 虚空箱方块 | void_chest(BlockVoidChest),硬度 5.0,抗性 140,脚步声 piston |
| 虚空箱 TileEntity | TileEntityVoidChest,注册名 VoidChest(init/BlockList.java:512) |
| 虚空箱槽位数 | 27(InventoryVoidChest 构造第 3 参) |
| 运输信标方块 | transport_beacon(BlockTransportBeacon),不可破坏,抗性 6000000,发光 1.0 |
| 运输信标 TileEntity | TileEntityTransportBeacon,注册名 TransportBeacon(init/BlockList.java:513) |
| 玩家数据键 | HardcoreEnderExpansion~VoidChest / HardcoreEnderExpansion~TransportBeacons |
功能
虚空箱(Void Chest)
虚空箱是每玩家私有的 27 格容器:无论箱体放在末地哪里,同一个玩家打开任何虚空箱看到的都是同一份物品。物品存在玩家扩展属性里,不随区块/实体保存。
- GUI 标题 key:
container.voidChest(mechanics/voidchest/InventoryVoidChest.java:14) - 堆叠合并判据
isSameItem:物品实例相同,或物品 + 伤害值相同且 NBT 完全相同(InventoryVoidChest.java:22-26) putItem优先向已有同类槽位合并,合并上限为is.getMaxStackSize()(InventoryVoidChest.java:28-45)- 容器通过
setChest(TileEntityVoidChest chest)绑定到具体箱体(InventoryVoidChest.java:17-20) - 玩家侧持有者
PlayerVoidChest implements IExtendedEntityProperties(mechanics/voidchest/PlayerVoidChest.java:15),通过PlayerDataHandler.registerProperty("HardcoreEnderExpansion~VoidChest", …)注册(:19-28),读取入口getInventory(EntityPlayer)(:30-32) - 相关实体:
EntityTechnicalVoidChest(init/EntityList.java:118),用于箱子被破坏时的物品回收 - 事件:
VoidChestEvents,注册于HardcoreEnderExpansion.java:142 - GUI:
gui/GuiVoidChest.java:16,背景复用原版generic_54.png
运输信标(Transport Beacon)
运输信标是不可破坏的地标方块,成对使用:站在一个信标上使用 temple_caller 之类的传送机制可以跳到已激活的另一个信标。
- 激活列表存在玩家扩展属性
HardcoreEnderExpansion~TransportBeacons(mechanics/misc/PlayerTransportBeacons.java:21) - 有效半径 960 格:
locations.contains(new LocationXZ(x, z)) && MathUtil.distance(fromX - x, fromZ - z) <= 960D(PlayerTransportBeacons.java:49) - 同上,
loc.distance(center) <= 960D收集附近已激活信标(PlayerTransportBeacons.java:57) - 内部位置类
PlayerTransportBeacons.LocationXZ(:89),distance用MathUtil.distance(dx, dz)(:98-100) - 数据同步包:
C13TransportBeaconData(客户端)、S04TransportBeaconTravel(服务端) - GUI:
gui/GuiTransportBeacon.java:25 - 注册于
HardcoreEnderExpansion.java:146
数值
| 项 | 值 | 位置 |
|---|---|---|
| 虚空箱槽位数 | 27 | InventoryVoidChest.java:14 |
| 运输信标有效半径 | 960.0 格 | PlayerTransportBeacons.java:49、57 |
transport_beacon 抗性 |
6000000(setBlockUnbreakable()) |
init/BlockList.java:329 |
void_chest 抗性 |
140 | init/BlockList.java:309 |
void_chest 能量价值 |
4.30 energyUnits | mechanics/energy/EnergyValues.java:53 |
交互
| 触发 | 行为 |
|---|---|
| 右键虚空箱 | 打开私有 27 格 GUI(container.voidChest) |
| 破坏虚空箱 | 由 EntityTechnicalVoidChest 回收物品,不影响其他玩家的物品 |
| 右键运输信标 | 打开 GuiTransportBeacon,选择已激活的信标位置 |
| 传送 | 只能传到激活列表中 960 格内的信标 |
| 多人 | 虚空箱与信标列表都是按玩家隔离的(IExtendedEntityProperties) |
合成配方
虚空箱
PPP
ECE
PPP
| 符号 | 物品 |
|---|---|
P |
end_powder |
E |
endium_block |
C |
Blocks.ender_chest(末影箱) |
产出 1 个。位置:mechanics/RecipeList.java:50-60。
运输信标
没有合成配方。 已核对 mechanics/RecipeList.java 全部 37 个 GameRegistry 调用点,没有任何一条以 BlockList.transport_beacon 为产物。它是末地生态岛结构的自然产物(world/structure/island/feature/island/ 体系)与末影传送门周边的地标。