bukkitでイベントリスナを登録するとIllegalPluginAccessExceptionが出る
[マインクラフト] [2013/07/28 18:51]
一部のイベントのリスナを登録しようとすると、以下のエラーが出る。
[SEVERE] Error occurred while enabling AllEventListening v1.6.2 (Is it up to date?) org.bukkit.plugin.IllegalPluginAccessException: Unable to find handler list for event org.bukkit.event.*****.*****Event
なんでエラーが出るのか理由は不明。
サブクラスがあるイベントクラスはエラー…とするとBlockExpEventが説明できないし、
コンストラクタがProtectedのイベントクラスはエラー…とするとBlockPistonEventが説明できないし。
うーん。
でもクラス名で、なんとなくこのクラスはエラーになりそうだというのはわかる。
WorldEventはエラーでもWorldInitEventはエラーにならないように、
ネーミングからして明らかにサブクラスがあるイベントはエラーになるようだ。
エラーが出るイベントリスナの一覧を作ってみた。
非推奨クラスは調べていない。
- ■org.bukkit.event
Event
- ■org.bukkit.event.block
BlockEvent BlockPistonEvent
- ■org.bukkit.event.enchantment
- なし
- ■org.bukkit.event.entity
EntityEvent
- ■org.bukkit.event.hanging
HangingEvent
- ■org.bukkit.event.inventory
- なし
- ■org.bukkit.event.painting
- 全イベントが非推奨クラスなので調べてない
- ■org.bukkit.event.player
PlayerBucketEvent PlayerEvent
- ■org.bukkit.event.server
PluginEvent ServerEvent ServiceEvent
- ■org.bukkit.event.vehicle
VehicleCollisionEvent VehicleEvent
- ■org.bukkit.event.weather
WeatherEvent
- ■org.bukkit.event.world
ChunkEvent WorldEvent
そんなわけで、何をすると、どんなイベントが発生するのかを勉強するため、
ありとあらゆるイベントをキャッチしてログに出すコードを書いてみた。
なお1箇所だけ、VehicleUpdateEventイベントは、
サーバーに誰もログインしていない状態でもなぜか
鬼のように常時大量発生し、他のログを押し流してしまうため、コメントアウトしてある。
//org.bukkit.event.block @EventHandler public void onEvent(BlockBreakEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockBurnEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockCanBuildEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockDamageEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockDispenseEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockExpEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockFadeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockFormEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockFromToEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockGrowEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockIgniteEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockPhysicsEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockPistonExtendEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockPistonRetractEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockPlaceEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockRedstoneEvent e) {log.info(e.toString());} @EventHandler public void onEvent(BlockSpreadEvent e) {log.info(e.toString());} //org.bukkit.event.enchantment @EventHandler public void onEvent(EnchantItemEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PrepareItemEnchantEvent e) {log.info(e.toString());} //org.bukkit.event.entity @EventHandler public void onEvent(CreatureSpawnEvent e) {log.info(e.toString());} @EventHandler public void onEvent(CreeperPowerEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityBreakDoorEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityChangeBlockEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityCombustByBlockEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityCombustByEntityEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityCombustEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityCreatePortalEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityDamageByBlockEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityDamageByEntityEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityDamageEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityDeathEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityExplodeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityInteractEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityPortalEnterEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityPortalEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityPortalExitEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityRegainHealthEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityShootBowEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityTameEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityTargetEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityTargetLivingEntityEvent e) {log.info(e.toString());} @EventHandler public void onEvent(EntityTeleportEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ExpBottleEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ExplosionPrimeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(FoodLevelChangeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ItemDespawnEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ItemSpawnEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PigZapEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerDeathEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PotionSplashEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ProjectileHitEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ProjectileLaunchEvent e) {log.info(e.toString());} @EventHandler public void onEvent(SheepDyeWoolEvent e) {log.info(e.toString());} @EventHandler public void onEvent(SheepRegrowWoolEvent e) {log.info(e.toString());} @EventHandler public void onEvent(SlimeSplitEvent e) {log.info(e.toString());} //org.bukkit.event.hanging @EventHandler public void onEvent(HangingBreakByEntityEvent e) {log.info(e.toString());} @EventHandler public void onEvent(HangingBreakEvent e) {log.info(e.toString());} @EventHandler public void onEvent(HangingPlaceEvent e) {log.info(e.toString());} //org.bukkit.event.inventory @EventHandler public void onEvent(BrewEvent e) {log.info(e.toString());} @EventHandler public void onEvent(CraftItemEvent e) {log.info(e.toString());} @EventHandler public void onEvent(FurnaceBurnEvent e) {log.info(e.toString());} @EventHandler public void onEvent(FurnaceExtractEvent e) {log.info(e.toString());} @EventHandler public void onEvent(FurnaceSmeltEvent e) {log.info(e.toString());} @EventHandler public void onEvent(InventoryClickEvent e) {log.info(e.toString());} @EventHandler public void onEvent(InventoryCloseEvent e) {log.info(e.toString());} @EventHandler public void onEvent(InventoryCreativeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(InventoryDragEvent e) {log.info(e.toString());} @EventHandler public void onEvent(InventoryEvent e) {log.info(e.toString());} @EventHandler public void onEvent(InventoryInteractEvent e) {log.info(e.toString());} @EventHandler public void onEvent(InventoryMoveItemEvent e) {log.info(e.toString());} @EventHandler public void onEvent(InventoryOpenEvent e) {log.info(e.toString());} @EventHandler public void onEvent(InventoryPickupItemEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PrepareItemCraftEvent e) {log.info(e.toString());} //org.bukkit.event.player @EventHandler public void onEvent(AsyncPlayerChatEvent e) {log.info(e.toString());} @EventHandler public void onEvent(AsyncPlayerPreLoginEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerAnimationEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerBedEnterEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerBedLeaveEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerBucketEmptyEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerBucketFillEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerChangedWorldEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerChannelEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerChatTabCompleteEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerCommandPreprocessEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerDropItemEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerEditBookEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerEggThrowEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerExpChangeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerFishEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerGameModeChangeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerInteractEntityEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerInteractEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerItemBreakEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerItemConsumeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerItemHeldEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerJoinEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerKickEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerLevelChangeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerLoginEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerMoveEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerPickupItemEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerPortalEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerQuitEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerRegisterChannelEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerRespawnEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerShearEntityEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerTeleportEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerToggleFlightEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerToggleSneakEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerToggleSprintEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerUnregisterChannelEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PlayerVelocityEvent e) {log.info(e.toString());} //org.bukkit.event.server @EventHandler public void onEvent(MapInitializeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PluginDisableEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PluginEnableEvent e) {log.info(e.toString());} @EventHandler public void onEvent(RemoteServerCommandEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ServerCommandEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ServerListPingEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ServiceRegisterEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ServiceUnregisterEvent e) {log.info(e.toString());} //org.bukkit.event.vehicle @EventHandler public void onEvent(VehicleBlockCollisionEvent e) {log.info(e.toString());} @EventHandler public void onEvent(VehicleCreateEvent e) {log.info(e.toString());} @EventHandler public void onEvent(VehicleDamageEvent e) {log.info(e.toString());} @EventHandler public void onEvent(VehicleDestroyEvent e) {log.info(e.toString());} @EventHandler public void onEvent(VehicleEnterEvent e) {log.info(e.toString());} @EventHandler public void onEvent(VehicleEntityCollisionEvent e) {log.info(e.toString());} @EventHandler public void onEvent(VehicleExitEvent e) {log.info(e.toString());} @EventHandler public void onEvent(VehicleMoveEvent e) {log.info(e.toString());} //@EventHandler //public void onEvent(VehicleUpdateEvent e) {log.info(e.toString());} //org.bukkit.event.weather @EventHandler public void onEvent(LightningStrikeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ThunderChangeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(WeatherChangeEvent e) {log.info(e.toString());} //org.bukkit.event.world @EventHandler public void onEvent(ChunkLoadEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ChunkPopulateEvent e) {log.info(e.toString());} @EventHandler public void onEvent(ChunkUnloadEvent e) {log.info(e.toString());} @EventHandler public void onEvent(PortalCreateEvent e) {log.info(e.toString());} @EventHandler public void onEvent(SpawnChangeEvent e) {log.info(e.toString());} @EventHandler public void onEvent(StructureGrowEvent e) {log.info(e.toString());} @EventHandler public void onEvent(WorldInitEvent e) {log.info(e.toString());} @EventHandler public void onEvent(WorldLoadEvent e) {log.info(e.toString());} @EventHandler public void onEvent(WorldSaveEvent e) {log.info(e.toString());} @EventHandler public void onEvent(WorldUnloadEvent e) {log.info(e.toString());}
これを使って、火を左クリックで消火するとき、どんなイベントが起きるか見てみた。
PlayerInteractEvent プレイヤーが右クリック(火打石でブロックを着火する) BlockIgniteEvent ブロックが着火される BlockPhysicsEvent ブロックが重力で落下するかチェックされる BlockPlaceEvent ブロックが設置される PlayerAnimationEvent プレイヤーがアニメーションする PlayerAnimationEvent プレイヤーがアニメーションする PlayerInteractEvent プレイヤーが左クリック(火を左クリックで消化する) BlockPhysicsEvent ブロックが重力で落下するかチェックされる PlayerAnimationEvent プレイヤーがアニメーションする
「火が消える」というイベントは無いようだ。残念。
この記事を評価
この記事にコメント
- ...