TileKnowledgeBook 知识之书方块实体
基本信息
| 属性 | 值 |
|---|---|
| 类 | common/blocks/tiles/TileKnowledgeBook.java |
| 注册名 | gadomancy:TileKnowledgeBook |
| 注册位置 | common/registration/RegisteredBlocks.java:149 |
| 所属方块 | 知识之书 |
| 实现接口 | EntityPermNoClipItem.IItemMasterTile + IAspectContainer(TileKnowledgeBook.java:47) |
功能
知识之书需要持有玩家正在研究的实体物品(如神秘学onomicon、护目镜),而它不能真的吞掉这些物品——因此它是一个 IItemMasterTile,借助 穿透物品实体 暂存物品。
ItemMaster 机制
| 成员 | 位置 |
|---|---|
| 调度任务字段 | private EntityPermNoClipItem.ItemChangeTask scheduledTask;(:64) |
| 任务体 | new EntityPermNoClipItem.ItemChangeTask() { public void changeItem(EntityPermNoClipItem item) {...} }(:286-289) |
| 取出调度任务 | getAndRemoveScheduledChangeTask()(:362-364) |
| 生成穿透物品实体 | new EntityPermNoClipItem(...)(:431) |
移除通知
实体被移除时 EventHandlerEntityServer 回调 informItemRemoval()(EventHandlerEntityServer.java:94-99),知识之书据此清理自身持有的实体物品。
要素容器
实现 IAspectContainer,使书能保存并显示研究进度相关的要素。
数值
| 数值名 | 值 |
|---|---|
| 实现的接口数 | 2(IItemMasterTile、IAspectContainer) |
| 已注册的主人类方块数 | 2(本类 + TileAuraPylon) |
| 调度任务字段 | 1(scheduledTask) |