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 残页的合成 / 修复相关。

相关条目