石橋を叩いて壊すブログ

bukkitのeventの一覧ざっと作ってみた(改)

2015/8/30追記:
これは古い記事です。より新しいV1.8.3版を作成しました。

Bukkitプラグイン作成の要になるイベントの一覧。 以前既に作ってはあったが、
あの時はクラス名やクラスの説明などから動作を推測しただけだったので、
せっかくなので実際にイベントが出るかどうかまで9割方チェックしてみた。
あと、前回の記事時点ではなかったイベントとして、手綱系イベント数件が追加されたようだ。
手綱系イベントには"Leash"の名前がついているので、この記事をLeashで検索すれば手綱系イベントが出る。


イベントを湧かすための実験跡地。ここでなにかあったのか的意味不明な構造物の数々。
結構骨の折れる作業だった。

実際イベントを湧かしてみると、同じイベントが2回連続で出たり
予想に反してイベントが出たり出なかったり、正直首をかしげることが多かった。
プラグインを作るにあっては、イベントがなぜかうまく出ないときはすっぱりあきらめるほうがいいかもしれない。

ブロック操作関連のイベント

イベントクラス簡単な説明APIワンポイント
BlockBreakEventブロックが壊れる時API
BlockBurnEventブロックが燃え尽きて焼失する時API着火はBlockIgniteEvent、焼失はBlockBurnEvent
BlockCanBuildEventブロックを設置する時APIBlockPlaceEventに先立って発生する
BlockDamageEventブロックが殴られる時API殴りはじめに一度だけ発生する
BlockDispenseEventアイテムが発射される時APIディスペンサー・ドロッパーのどちらでも発生。ItemSpawnEventも同時発生。
BlockExpEventブロックが壊れて経験値オーブが生まれる時API発生しない?(V1.6.2#2879)
BlockFadeEventブロックが溶ける時API氷ブロックなど。なぜか羊毛や木材などが焼失する際にBlockBurnEventに代わって発生したりする(V1.6.2#2879)
BlockFormEvent気象効果でブロックが生成される時API水が凍る、雪が積もるなど
BlockFromToEvent液体が流れる時APIBlockFromToEventをキャンセルすると、液体が流れずに留まる
BlockGrowEvent植物が育つ時APIサボテン・小麦・かぼちゃなど。木の苗・きのこの成長はStructureGrowEvent。1回成長するごとにイベントが1回発生。骨粉で成長させた場合発生しない。
BlockIgniteEventブロックを着火する時API着火時は、着火(BlockIgniteEvent)のほかに落下判定(BlockPhysicsEvent)・炎ブロックの設置(BlockPlaceEvent)のイベントも発生する
BlockPhysicsEventブロックの落下判定をする時API落下するときではなくあくまで落下判定をするイベントなので、砂利や砂ではないブロックでも発生する。判定は直前に変更があったブロックの隣接ブロックで起こる。
BlockPistonExtendEventブロックをピストンで押し出す時API
BlockPistonRetractEventブロックをピストンで引き戻す時API
BlockPlaceEventブロックを設置する時API
BlockRedstoneEventレッドストーンの状態が変化する時API
BlockSpreadEvent炎が燃え広がる時API草ブロックが伝播して土ブロックに草が生えるときにも発生する。
EntityBlockFormEvent雪だるまが雪を作る時API
LeavesDecayEvent葉が枯れる時API葉が自然に枯れる場合のみ発生。手で壊すとBlockBreakEvent
NotePlayEvent音符ブロックが動作する時API
SignChangeEvent看板にテキストを書く時API看板を設置すると最初にテキスト未設定の看板が設置されてBlockPlaceEventが発生し、次にテキスト入力画面にテキストを入力して決定すると、看板にテキストが設定されSignChangeEventが発生する

エンチャント操作関連のイベント

イベントクラス簡単な説明APIワンポイント
EnchantItemEventアイテムをエンチャントする時APIアイテムをエンチャントした際に発生する
PrepareItemEnchantEventアイテムをエンチャントテーブルに載せる時APIアイテムをエンチャントテーブルに載せると、エンチャント画面に3つのエンチャント候補が表示されるが、この候補ひとつずつについてPrepareItemEnchantEventが1回発生する。このためアイテムを1回載せるごとにPrepareItemEnchantEventが3回発生する。なぜかエンチャント後にも1回発生する。(V1.6.2#2879)

エンティティ関連のイベント

イベントクラス簡単な説明APIワンポイント
CreatureSpawnEvent生き物が生まれる時API
CreeperPowerEventクリーパーが雷撃を受ける時API豚の雷撃はPigZapEvent
EntityBreakDoorEventドアが壊れる時API
EntityChangeBlockEventプレイヤー以外がブロックを変更する時API
EntityCombustByBlockEventブロックから火が燃え広がる時API
EntityCombustByEntityEventエンティティから火が燃え広がる時API
EntityCombustEventエンティティに着火する時API着火後のダメージ処理はEntityDamageEvent
EntityCreatePortalEventポータルを作成する時API
EntityDamageByBlockEventブロックからダメージを受ける時APIサボテンなど
EntityDamageByEntityEventエンティティからダメージを受ける時API
EntityDamageEventエンティティがダメージを受けるする時API
EntityDeathEvent死亡する時API
EntityExplodeEvent爆発する時API
EntityInteractEvent不明API
EntityPortalEnterEventポータルに入る時APIプレイヤーがポータルに立っている間、1秒に20回延々と発生する
EntityPortalEvent不明API
EntityPortalExitEventポータルから出る時API全くではないが、なぜかほとんど発生しない(V1.6.2#2879)
EntityRegainHealthEvent体力が回復する時API
EntityShootBowEvent矢を撃つ時API
EntityTameEvent飼いならす時API
EntityTargetEvent不明API
EntityTargetLivingEntityEvent攻撃目標を決めた時API
EntityTeleportEventテレポートする時API
EntityUnleashEvent首綱を外す時API
ExpBottleEvent経験値ボトルが破裂する時API
ExplosionPrimeEvent不明API
FoodLevelChangeEvent空腹度が変化する時API
HorseJumpEvent馬がジャンプする時API
ItemDespawnEvent地面に落ちたアイテムが消える時API
ItemSpawnEventアイテムがドロップする時API
PigZapEvent豚が雷撃を受ける時APIクリーパーの雷撃はCreeperPowerEvent
PlayerDeathEventプレイヤーが死ぬ時API
PlayerLeashEntityEventエンティティを首綱でつなぐ時API馬を首綱で柵に結ぶ場合、馬に首綱をつけた時と、その首綱を柵に結んだ時で2回PlayerLeashEntityEventが出る
PotionSplashEventスプラッシュポーションの効果を受ける時API
ProjectileHitEvent投げられた物に当たる時API矢など
ProjectileLaunchEvent物を投げる時API
SheepDyeWoolEvent羊を染色する時API
SheepRegrowWoolEvent羊に毛が生えた時API既に毛の生えている羊が草を食べたときも発生
SlimeSplitEventスライムが倒されて小さなスライムが生まれる時API

壁掛けアイテム操作関連のイベント

イベントクラス簡単な説明APIワンポイント
HangingBreakByEntityEvent壁掛けがエンティティによって壊される時API殴って壊したり爆発で壊れる場合など。なぜかイベントが2回連続で出る(V1.6.2#2879)
HangingBreakEvent壁掛けが壊されるする時API壁掛けの後ろのブロックが壊れて壁掛けがアイテム化した場合など
HangingPlaceEvent壁掛けが掛けられる時API

インベントリ操作関連のイベント

イベントクラス簡単な説明APIワンポイント
BrewEvent醸造する時API醸造完了時にイベント発生。醸造台に瓶を何本セットしていても、3本ばらばらのポーションをセットしていてもイベントは1回だけ
CraftItemEventアイテムを作成する時APIアイテムを1個作るたびになぜかイベントが2回発生する(V1.6.2#2879)。アイテムを複数個まとめて作るとイベントも複数発生する
FurnaceBurnEventかまどに火が点く時API
FurnaceExtractEventかまどからアイテムを取り出す時APIなぜか2回発生する(V1.6.2#2879)
FurnaceSmeltEventかまどでアイテムが精錬される時APIアイテムが一個精錬される度に発生
InventoryClickEventインベントリをクリックする時API
InventoryCloseEventインベントリを閉じる時API
InventoryCreativeEventクリエイティブモードでアイテムを作る時API
InventoryDragEventインベントリでアイテムをドラッグする時API
InventoryEvent不明API
InventoryInteractEvent不明API
InventoryMoveItemEventホッパーからアイテムが移動する時APIアイテムが1個移動する度に発生
InventoryOpenEventインベントリを開く時API
InventoryPickupItemEventアイテムがホッパーに吸い込まれる時API
PrepareItemCraftEventアイテム作成の準備が整った時API作業台などに材料を並べ、作業台ウィンドウの右に完成アイテムが表示されるたびに発生

プレイヤー操作関連のイベント

イベントクラス簡単な説明APIワンポイント
AsyncPlayerChatEventチャットする時API
AsyncPlayerPreLoginEventログインしようとする時APIPlayerJoinEventの直前に発生する。disallowメソッドでログインをキャンセルできる
PlayerAnimationEventアニメーションする時API主にクリック操作でよく出る
PlayerBedEnterEventベッドに寝る時API
PlayerBedLeaveEventベッドから起きる時API
PlayerBucketEmptyEventバケツを空にする時API水か溶岩かは問わない
PlayerBucketFillEventバケツを満たす時API水か溶岩かは問わない
PlayerChangedWorldEvent別の世界へ移動する時APIネザーと通常世界の行き来など
PlayerChannelEvent不明API
PlayerChatTabCompleteEvent不明API
PlayerCommandPreprocessEventコマンドを実行する時API
PlayerDropItemEventアイテムを投げる時APIここで言う投げるとは(デフォルトで)Qキーを押してアイテムを投げるという意味。鶏卵・スプラッシュポーション・経験値ボトルなどを使うのは「投げる」ではなく「使う」であり意味が違うので注意。
PlayerEditBookEvent本と羽ペンを編集する時API編集完了時に発生
PlayerEggThrowEvent卵を投げる時API
PlayerExpChangeEvent経験値が変わる時APIレベルの変化はPlayerLevelChangeEvent
PlayerFishEvent釣りを開始・終了する時API釣りを開始するとき・終了するときの両方で発生
PlayerGameModeChangeEventゲームモードが変化する時API/gamemode 0や1コマンドを使ってゲームモードが変わった時
PlayerInteractEntityEventエンティティを右クリックする時API
PlayerInteractEventクリックする時API@EventHandler(ignoreCancelled = true)で宣言すると空気を殴ったイベントが通知されなくなるので、単に@EventHandlerで宣言するのがお勧め
PlayerItemBreakEventアイテムが壊れる時API
PlayerItemConsumeEvent飲食物を食べた時APIポーションを飲んだ場合も発生
PlayerItemHeldEventホットバーを切り替えた時APIたとえばホットバー1(剣)からホットバー2(斧)に持ち替えたような場合に発生する。
PlayerJoinEventプレイヤーがログインする時APIログイン時にはAsyncPlayerPreLoginEvent→PlayerLoginEvent→PlayerJoinEventの3つのメッセージが発生する。BANされたプレイヤーがログインを試みた場合、AsyncPlayerPreLoginEventとPlayerLoginEventは発生するがPlayerJoinEventは発生しない
PlayerKickEventプレイヤーをキックする時API
PlayerLevelChangeEventレベルが変化する時APIレベルの変化を伴わない経験値の変更はPlayerExpChangeEvent
PlayerLoginEventプレイヤーがログインする時APIPlayerJoinEventの前に発生する
PlayerMoveEvent移動する時API
PlayerPickupItemEventアイテムを拾う時API
PlayerPortalEventポータルで移動する時APIポータルに触れただけでは発生しない
PlayerQuitEventプレイヤーがログアウトする時API
PlayerRegisterChannelEvent不明API
PlayerRespawnEventリスポーンする時API
PlayerShearEntityEvent羊の毛を刈る時API
PlayerTeleportEventテレポートする時APIベッドに寝る・起きる時やトロッコの乗降時にも発生する
PlayerToggleFlightEvent飛行状態が切り替わる時APIFlightとはクリエイティブの飛行モードのこと。飛行開始時・飛行終了時の両方でPlayerToggleFlightEventが発生
PlayerToggleSneakEventスニーク状態が切り替わる時APIスニーク開始時・スニーク終了時の両方でPlayerToggleSneakEventが発生
PlayerToggleSprintEvent走り状態が切り替わる時API歩くと走るの切り替え時に発生。
PlayerUnleashEntityEvent動物をつないでいた首綱を外す時API
PlayerUnregisterChannelEvent不明API
PlayerVelocityEvent不明API

サーバー操作関連のイベント

イベントクラス簡単な説明APIワンポイント
MapInitializeEvent白紙の地図を使用する時API白紙の地図を手に持って右クリックすると発生
PluginDisableEventプラグインを無効化する時API
PluginEnableEventプラグインを有効化する時API
RemoteServerCommandEvent不明API
ServerCommandEventコマンドが実行された時API
ServerListPingEventクライアントのサーバー選択画面が表示された時API
ServiceRegisterEventサービスが登録される時API
ServiceUnregisterEventサービスの登録が解除される時API

乗り物操作関連のイベント

イベントクラス簡単な説明APIワンポイント
VehicleBlockCollisionEvent乗り物とブロックが衝突する時API
VehicleCreateEvent乗り物が生まれた時API線路上にトロッコを配置するなどで発生
VehicleDamageEvent乗り物が殴られた時API
VehicleDestroyEvent乗り物が消滅する時API線路上のトロッコを殴ると、まずVehicleDamageEventが発生し、次にVehicleDestroyEventが発生する
VehicleEnterEvent乗り物に乗る時API
VehicleEntityCollisionEvent乗り物とエンティティが衝突する時API
VehicleExitEvent乗り物から降りる時API
VehicleMoveEvent乗り物が移動する時APIトロッコを障害物のないレール上に置いて走らせると、画面上でどう見ても停止しているのに(小数点レベルの速度で動いているのか)延々と1秒に20回イベントが発生し続ける。壁に衝突するなどで完全に停止するとイベントも止む。
VehicleUpdateEvent乗り物の状態を更新する時APIトロッコが1台あるだけで(速度やレールの傾きに関係なく)1秒間に20回イベントが発生する。

天候関連のイベント

イベントクラス簡単な説明APIワンポイント
LightningStrikeEvent落雷が起こる時API
ThunderChangeEvent落雷の有無が切り替わる時API雨天→晴天のような、落雷なし→落雷なしの天候変化でもなぜか発生(V1.6.2#2879)
WeatherChangeEvent天候が変化する時API

ワールド操作関連のイベント

イベントクラス簡単な説明APIワンポイント
ChunkLoadEventチャンクを読み込む時API
ChunkPopulateEvent新しいチャンクが作られた時API
ChunkUnloadEventチャンクをアンロードする時API
PortalCreateEventポータルを作成する時APIネザーポータルのみ発生、エンドポータルではイベント起こらず
SpawnChangeEventスポーンポイントが変わった時API
StructureGrowEvent木の苗・きのこが成長する時APIサボテン・小麦・かぼちゃなどの成長はBlockGrowEvent
WorldInitEvent不明API
WorldLoadEvent不明API
WorldSaveEvent不明API
WorldUnloadEvent不明API

例によってBukkitJapanWikiにイベントのページにも書いておいた。


関係ないけどBukkit作業中に偶然見つけたマップ。
草原・湖・ツンドラ・ジャングル・高山などがまとまって配置されていて結構楽しい。
シード:2213985808419502141

この記事を評価

178 50

コメント

  1. 古いコメント(26件)は省略されています。すべて表示
  2. 【ゲスト】 今更ですがEntityDamageEventの説明間違ってませんか? [2015/5/5 20:13]
  3. 【石橋】 あー「受けるする」になってますね。直しました。ありがとうございます。 [2015/5/5 21:56]
  4. 【あっきー】 PlayerChannelEventはMODが送信してるチャンネルを取得できるようです。 Forgeを入れてるとForgeという文字が出たので。 [2015/8/5 21:23]
  5. 【石橋】 ありがとうございます。…これは…サーバープラグインとクライアントプラグインがデータをやりとりするためのチャンネル…ってこと…なのかな?ちょっと調べてみます。 [2015/8/16 02:22]
  6. 【ゲスト】 どうやらExplosionPrimeEventは爆発物が爆発した時に呼ばれるみたいです。
    詳しくは検証してないですが、TNTが爆発するときには呼ばれていました。

    また、EntityExplodeEventではgetEntity().getYield(float)では爆発力を変更できなかったのに対し、ExplosionPrimeEvent.setRadius(float)では爆発力を変更できました。
    このことより、ExplosionPrimeEventはEntityが爆発する直前、EntityExplodeEventは爆発した後に呼ばれるのではないかと思います。 [2016/1/9 18:58]
  7. 【てんじゅたん。】 1秒間に20回ってやつはもしかしたらtickが関係してるんじゃないですかね。 [2016/1/9 22:43]
  8. 【石橋】 ゲストさんこんにちは。ご連絡ありがとうございます。ここは古い記事なので、新しい情報はhttp://www.jias.jp/blog/?85を確認してください。(記事中にも追記しました。)
    EntityExplodeEvent#setYield(float)は破壊力ではなく、ブロックが爆発で破壊されたときアイテム化する確率です。1を指定すれば、破壊されたブロックはすべてアイテム化して残り、0にするとアイテムはひとつも発生しなくなります。
    ただ、いただいた情報が興味深かったのでExplosionPrimeEventとEntityExplodeEventの違いを調べてみました。ExplosionPrimeEventはEntityExplodeEventより先に発生して、爆発の威力や引火性を設定でき、キャンセルすると爆発自体が起こらないの対し、EntityExplodeEventはアイテム化の確率を設定でき、キャンセルすると爆発自体は起きエンティティはダメージを受けるがブロックは破壊されませんでした。その旨は最新の記事に追記しました。 [2016/1/10 13:11]
  9. 【石橋】 てんじゅたんさんこんにちは。ご認識どおり、毎tickごとにイベントが飛んできているんだと思います。この記事では、そのイベントを捕まえて別の処理をさせようとすると毎秒20回(あるいはエンティティ数によってはそれ以上)処理が動作してしまう(=負荷を気にする必要がある)ことを認識していただくために毎秒20回と明記しています。 [2016/1/10 13:18]
  10. 【まぐ】 InventoryInteractEvent

    これはクリックのイベントになる 例えばブロックを右クリックするとしたら

    if (e.getAction() == Action.RIGHT_CLICK_BLOCK) { [2016/2/14 19:06]
  11. 【まぐ】 (よく見てなかったけどこれInventoryじゃん Playerじゃないじゃん oh...) [2016/2/14 19:07]

【この記事にコメント】
お名前:
コメント:

277,008

記事カテゴリー

最近の記事

  1. FF14を翻訳したら国によって結構特色が違った[12/11]
  2. ゼロから始めるFactorioの回路構築(実践例編)[7/24]
  3. ゼロから始めるFactorioの回路構築(条件回路・論理演算編)[7/24]
  4. ゼロから始めるFactorioの回路構築(定数回路・算術回路編)[7/24]
  5. ゼロから始めるFactorioの回路構築(入力・出力・混合編)[7/24]

RSS1.0 RSS2.0

最近のコメント

  1. 天晴れ!押したらポーションのモヤモヤでまし…[5/26]
  2. 習うより慣れろって感じで。この記事は記事冒…[4/7]
  3. もっと詳しく説明してください[3/21]
  4. みなさんと同じです、
    すみません
    [11/21]
  5. 上と同じ理由です。
    すみません
    [9/26]

記事を検索


管理人

石橋

ソースはブルドックに限る