Tile Entity Registry
基本信息
| 属性 | 值 |
|---|---|
| 注册类 | net.mcft.betterstorage.content.BetterStorageTileEntities |
| 注册方法 | BetterStorageTileEntities.register() |
| 调用时机 | preInit,src/main/java/net/mcft/betterstorage/BetterStorage.java:72 |
| 已注册数量 | 10(核心)+ 2(Thaumcraft 附属) |
来源:src/main/java/net/mcft/betterstorage/content/BetterStorageTileEntities.java:24-39。
功能
本 mod 注册 10 个 TileEntity,每个与一个方块一一对应,ID 取自 Constants 中的容器名常量。
核心注册表(10 项)
| # | TileEntity 类 | ID 常量 | ID 字符串 |
|---|---|---|---|
| 1 | tile.crate.TileEntityCrate |
Constants.containerCrate |
container.betterstorage.crate |
| 2 | tile.entity.TileEntityReinforcedChest |
Constants.containerReinforcedChest |
container.betterstorage.reinforcedChest |
| 3 | tile.entity.TileEntityLocker |
Constants.containerLocker |
container.betterstorage.locker |
| 4 | tile.stand.TileEntityArmorStand |
Constants.containerArmorStand |
container.betterstorage.armorStand |
| 5 | tile.entity.TileEntityBackpack |
Constants.containerBackpack |
container.betterstorage.backpack |
| 6 | tile.entity.TileEntityCardboardBox |
Constants.containerCardboardBox |
container.betterstorage.cardboardBox |
| 7 | tile.entity.TileEntityReinforcedLocker |
Constants.containerReinforcedLocker |
container.betterstorage.reinforcedLocker |
| 8 | tile.entity.TileEntityCraftingStation |
Constants.containerCraftingStation |
container.betterstorage.craftingStation |
| 9 | tile.entity.TileEntityPresent |
Constants.containerPresent |
container.betterstorage.present |
| 10 | tile.entity.TileEntityLockableDoor |
Constants.lockableDoor |
见 Constants.java:25 |
来源:BetterStorageTileEntities.java:28-37;ID 常量定义 src/main/java/net/mcft/betterstorage/misc/Constants.java:10-25。
10 个 ID 全部使用
container.betterstorage.*前缀,唯独TileEntityLockableDoor使用Constants.lockableDoor而非containerLockableDoor——命名不一致,但为源码原样。
注册末尾调用 Addon.registerTileEntitesAll()(BetterStorageTileEntities.java:38),追加附属的 TileEntity。
方块与 TileEntity 的对应缺口
已注册的 12 个方块中,有 2 个没有 TileEntity:
| 方块 | 状态 |
|---|---|
| 燧石块 | 无 TileEntity(纯装饰压缩块) |
| 末影背包 | 复用 TileEntityBackpack(src/main/java/net/mcft/betterstorage/tile/TileEnderBackpack.java:39) |
因此 12 方块 → 10 TileEntity 是自洽的。
Thaumcraft 附属(+2)
由 ThaumcraftAddon.registerTileEntities() 追加(src/main/java/net/mcft/betterstorage/addon/thaumcraft/ThaumcraftAddon.java:201-203):
| TileEntity | ID 字符串 |
|---|---|
TileEntityThaumcraftBackpack |
container.betterstorage.thaumcraftBackpack |
TileEntityThaumiumChest |
container.betterstorage.thaumiumChest |
来源:src/main/java/net/mcft/betterstorage/misc/Constants.java:23-24。
总计 12 个 TileEntity。
TileEntity 基类结构
| 类 | 作用 |
|---|---|
TileBetterStorage |
方块基类(继承 Block),负责 setBlockName 与 GameRegistry.registerBlock |
TileContainerBetterStorage |
有容器的方块基类 |
tile.entity.TileEntityContainer |
容器 TileEntity 基类,提供 getColumns / getRows / openGui |
TileBetterStorage 构造时自动完成方块注册(src/main/java/net/mcft/betterstorage/tile/TileBetterStorage.java:16-25):
setCreativeTab(BetterStorage.creativeTab);
setBlockName(BetterStorage.MODID + "." + getTileName());
registerBlock();
因此方块注册发生在方块对象构造时,由 BetterStorageTiles.initialize()(src/main/java/net/mcft/betterstorage/content/BetterStorageTiles.java:36-53)中的 MiscUtils.conditionalNew 触发——这是内容开关能生效的机制。
相关条目
- 木箱堆叠逻辑 -
TileEntityCrate的堆叠实现 - Thaumcraft 集成 - 附属追加的 2 个 TileEntity
- 内容开关设置 - 关闭方块会同时跳过其 TileEntity 的容器使用
- 内容开关设置 - 关闭方块会同时跳过 TileEntity 之外的注册