微砖结构
基本信息
| 属性 | 值 |
|---|---|
| 注册入口 | LittleStructure.initStructures(),LittleTiles.java:143 调用 |
| 实现文件 | src/main/java/com/creativemd/littletiles/common/structure/ |
| 已注册结构 | 5 |
| 基类 | LittleStructure(抽象) |
功能
结构(Structure)让一组微砖成为一个可整体操作的整体,而不是各自独立的小块。LittleStructure 抽象类持有 public LittleTile mainTile(LittleStructure.java:95),并被 LittleTile.structure 字段反向引用(LittleTile.java:438,public LittleStructure structure;)。
结构通过 NBT 的 id 字符串序列化:createAndLoadStructure(nbt, mainTile) 读出 id,用 getEntryByID 查到类后反射 getConstructor().newInstance() 实例化,再 loadFromNBT(nbt)。找不到或实例化失败时打印 Found invalid structureID=<id>(LittleStructure.java:85)。
registerLittleStructure 带去重保护:id 重复时打印 ID is already taken! id=,类重复时打印 Already registered class=。
结构表
LittleStructure.java:66-72 注册的 5 个结构:
| id | 类 | 说明 |
|---|---|---|
fixed |
LittleFixedStructure |
固定结构,不参与合并/拆分 |
chair |
LittleChair |
椅子 |
door |
LittleDoor |
门(带开合交互,使用 n247s 事件系统 @CustomEventSubscribe) |
ladder |
LittleLadder |
梯子 |
bed |
LittleBed |
床 |
LittleStructure 的静态注册表还提供双向查询:getIDByClass / getClassByID / getEntryByID / getStructureNames。
getStructureNames() 返回 structures.keySet() 的副本,因此顺序不保证稳定。
数值
| 数值名 | 值 |
|---|---|
| 已注册结构数 | 5 |
| NBT 键 | id(结构标识) |
| 反序列化失败提示 | Found invalid structureID=<id> |
交互
| 触发 | 行为 |
|---|---|
| 放置含结构的微砖 | 结构整体写入 NBT,id 字段标记类型 |
| 加载世界 | createAndLoadStructure 按 id 反射重建 |
| 拆分微砖 | 含结构的微砖被跳过(oldTile.structure == null 才拆分),见 Little Rubber Mallet |
| Little Door | 走 n247s 自定义事件系统 |
合成配方
无。结构由微砖交互产生,不通过合成。
相关条目
- 微砖类型与 TileEntity -
LittleTile.structure字段的宿主 - Little Wrench -
combineTiles(LittleStructure)的调用方 - Little Recipe - 录制图案的物品