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 触发——这是内容开关能生效的机制。

相关条目