EventHandler
基本信息
| 属性 | 值 |
|---|---|
| 类名 | amerifrance.guideapi.util.EventHandler |
| 类型 | class,3 个 @SubscribeEvent 方法 |
| 事件 | EntityJoinWorldEvent、AnvilUpdateEvent 等 |
| 启用版本 | Minecraft 1.7.10 |
功能
Forge 事件处理:玩家进世界时发放初始指南书,以及铁砧合成相关处理。
实现要点
- 由 GuideAPI 在
init阶段把同一个实例 同时注册到FMLCommonHandler.instance().bus()与MinecraftForge.EVENT_BUS。 onPlayerJoinWorld(EntityJoinWorldEvent):- 先判
!event.entity.worldObj.isRemote(仅服务端)且实体是EntityPlayer; - 取玩家按
ModInformation.ID命名的专属 NBT 命名空间; - 当
ConfigHandler.canSpawnWithBooks为真时,遍历已注册的书, 对book.spawnWithBook == true且玩家 NBT 中"hasInitial" + book.unlocBookTitle未置位的书, 调player.inventory.addItemStackToInventory(...)发放, 随后detectAndSendChanges()并置位该标记。 - 标记键为字符串拼接
"hasInitial" + unlocBookTitle—— 即以书标题的本地化键作为唯一标识;换语言或改本地化键会导致重复发放。
- 先判
- NBT 命名空间用
ModInformation.ID(=guideapi), 而非 modName。 - 另处理
AnvilUpdateEvent(铁砧),与 ItemLostPage 残页的合成 / 修复相关。
相关条目
- ConfigHandler -
canSpawnWithBooks的定义处 - Book -
spawnWithBook/unlocBookTitle的定义处 - GuideRegistry - 遍历的书列表
- ItemLostPage - 铁砧事件相关
- GuideAPI - 注册方
- NBTBookTags - 相关 NBT 键(部分未集中)