初めに
この記事では、主にscriptAPIにおける全イベントを紹介します。
取得できるデータ、説明などメモ代わりに記しておきます。
記入日:2025/11/21
参照サイト1
参照サイト2
1.blockExplode
発火条件:ブロックが爆発によって破壊されたとき
beforeEventsの有無:なし
※破壊されたブロックごとにイベントが呼ばれるため、数十単位で発動することがある。
import { world } from "@minecraft/server";
world.afterEvents.blockExplode.subscribe(ev => {
let source = ev.source; // 爆発源。クリーパーなどのエンティティや、TNTなどのブロックが入る
let permutation = ev.explodedBlockPermutation; // 爆発前にあったブロック。
let block = ev.block; // 爆発後に残ったブロック(大体はair)
let dimension = ev.dimension; // 爆発がおきたディメンション
});
2.buttonPush
発火条件:ボタンが押されたとき
beforeEventsの有無:なし
import { world } from "@minecraft/server";
world.afterEvents.buttonPush.subscribe(ev => {
let source = ev.source; // 実行者(押したプレイヤー)
let block = ev.block; // ブロック(ボタン)
let dimension = ev.dimension; // イベントが発生したディメンション
})
3.dataDrivenEntityTrigger
発火条件:エンティティのDDEが変化
beforeEventsの有無:なし
※イメージしづらいですが、エンティティの「状態」が変化したときという理解でOKです。
例:クリーパーの爆発が始まる。村人がゾンビになる。等々
import { world } from "@minecraft/server";
world.afterEvents.dataDrivenEntityTrigger.subscribe(ev => {
let eventId = ev.eventId; // eventのIDが入る。例:村人がゾンビ化=>"become_zombie"
let modifiers = ev.getModifiers(); // イベントが発火した理由が入るらしい...使わないので割愛
let entity = ev.entity; // イベント対象のエンティティ
})
4.entityDie
発火条件:エンティティが死亡
beforeEventsの有無:なし
※クリーパーが爆発した場合は発火しない。アイテムをkillコマンドしても発火する。
import { world } from "@minecraft/server";
world.afterEvents.entityDie.subscribe(ev => {
let entity = ev.deadEntity; // 死んだエンティティ
let source = ev.damageSource; // 危害を加えたエンティティ
})
5.entityHealthChanged
発火条件:エンティティのHPが変動(増加or減少)
beforeEventsの有無:なし
import { world } from "@minecraft/server";
world.afterEvents.entityHealthChanged.subscribe(ev => {
let oldValue = ev.oldValue; // ダメージが変化する前のHP
let newValue = ev.newValue; // ダメージが変化した後のHP
let entity = ev.entity; // 対象のエンティティ
// HPが18から19に回復した場合、oldValue=18,newValue=19となる
})
6.effectAdd
発火条件:エンティティにエフェクトを付与
beforeEventsの有無:あり
import { world } from "@minecraft/server";
//afterイベントの場合
world.afterEvents.effectAdd.subscribe(ev => {
let entity = ev.entity;
let effect = ev.effect;
})
import { world } from "@minecraft/server";
//beforeイベントの場合
world.beforeEvents.effectAdd.subscribe(ev => {
let entity = ev.entity; // エンティティ
let effect = ev.effect; // エフェクト
ev.cancel = true; // イベントのキャンセル(付与を取り消し)が可能
})
7.entityHitBlock
発火条件:エンティティがブロックに対して左クリック
beforeEventsの有無:なし
import { world } from "@minecraft/server";
world.afterEvents.entityHitBlock.subscribe(ev => {
let blockFace = ev.blockFace; // 叩いた面(Up,Down,North等)
let damagingEntity = ev.damagingEntity; // 叩いたエンティティ
let block = ev.hitBlock; // 叩いたブロック
let blockPermutation = ev.hitBlockPermutation; // ブロックの状態
})
8.entityHitEntity
発火条件:エンティティがエンティティに近接攻撃を行ったとき
beforeEventsの有無:なし
※ダメージ量は取得できない。ダメージ量は次のイベントで
import { world } from "@minecraft/server";
world.afterEvents.entityHitEntity.subscribe(ev => {
let attacker = ev.damagingEntity; // 攻撃を与えたエンティティ
let victim = ev.hitEntity; // 攻撃を受けたエンティティ
})
9.entityHurt
発火条件:エンティティがダメージを受ける
beforeEventsの有無:なし
※上のイベントと違い、落下等の環境ダメージでも発火する
import { world } from "@minecraft/server";
world.afterEvents.entityHurt.subscribe(ev => {
let damage = ev.damage; // ダメージ量
let source = ev.damageSource; // ダメージ源
let victim = ev.hurtEntity; // ダメージを食らったエンティティ
})
10.entityLoad
発火条件:読み込まれていないチャンクにいるエンティティがチャンクと共に読み込まれる
beforeEventsの有無:なし
※条件がイマイチ分からず発火できなかったので、コードだけ掲載
import { world } from "@minecraft/server";
world.afterEvents.entityLoad.subscribe(ev => {
let entity = ev.entity; // ロードされたエンティティ
})
11.entityRemove
発火条件:エンティティが何らかの原因で消えたとき
beforeEventsの有無:あり
※殺されたとき、デスポーンしたとき等様々な要因があります。
import { world } from "@minecraft/server";
// afterの場合
world.afterEvents.entityRemove.subscribe(ev => {
let entityId = ev.removedEntityId; // エンティティid(スポーン時に割り振られる)
let typeId = ev.typeId; // エンティティのタイプ(minecraft:cow,minecraft:creeper等々)
})
import { world } from "@minecraft/server";
//beforeの場合
world.beforeEvents.entityRemove.subscribe(ev => {
let entityId = ev.removedEntityId; // エンティティid(スポーン時に割り振られる)
let typeId = ev.typeId; // エンティティのタイプ(minecraft:cow,minecraft:creeper等々)
ev.cancel = true; // エラーは出ないけど意味はないです
})
このイベントは特殊で、cancelプロパティは持ってるが、意味を持たないので、beforeもafterも特に違いはありません。
12.entitySpawn
発火条件:エンティティがスポーン
beforeEventsの有無:なし
import { world } from "@minecraft/server";
world.afterEvents.entitySpawn.subscribe(ev => {
let entity = ev.entity; // スポーンしたエンティティ
let cause = ev.cause; // スポーン理由(大体はSpawned,繁殖の場合はBorn)
})
13.explosion
発火条件:エンティティ又はブロックが爆発したとき
beforeEventsの有無:あり
※blockExplodeとは違い、爆発源に対してのみイベントが呼ばれる。
import { world } from "@minecraft/server";
// afterの場合
world.afterEvents.explosion.subscribe(ev => {
let source = ev.source; // 爆発源
let dimension = ev.dimension; // 爆発の起きたディメンション
let impactedBlocks = ev.getImpactedBlocks(); // 影響を受けたブロックのリスト
})
import { world } from "@minecraft/server";
// beforeの場合
world.beforeEvents.explosion.subscribe(ev => {
let source = ev.source; // 爆発源
let dimension = ev.dimension; // 爆発の起きたディメンション
let impactedBlocks = ev.getImpactedBlocks(); // 影響を受けたブロックのリスト
ev.cancel = true; // イベント(爆発)のキャンセル
})
14.gameRuleChange
発火条件:ゲームルールが変更されたとき
beforeEventsの有無:なし
import { world } from "@minecraft/server";
world.afterEvents.gameRuleChange.subscribe(ev => {
let rule = ev.rule; // 変更対象のルール(例:天候の変化="doWeatherCycle")
let value = ev.value; // 変更後の値(true / false)
})
15.itemCompleteUse
発火条件:アイテムの使用を完了した瞬間に発火
beforeEventsの有無:なし
※長押しで使用するアイテム(食べ物等)にのみ反応する。
import { world } from "@minecraft/server";
world.afterEvents.itemCompleteUse.subscribe(ev => {
let duration = ev.useDuration; // 使用時間
let source = ev.source; // 使用者
let item = ev.itemStack; // 使用されたアイテム
})
durationは実質使い物にならないらしい(常に0)
16.itemReleaseUse
発火条件:長押しで使用するアイテムの長押しを離したとき
beforeEventsの有無:なし
例:20tickで食べ終わる肉を19tick目で離したとき、durationは1になる。
import { world } from "@minecraft/server";
world.afterEvents.itemReleaseUse.subscribe(ev => {
let duration = ev.useDuration; // 完了までの残り時間(tick)
let source = ev.source; // 使用者
let item = ev.itemStack; // 使用されたアイテム
})
17.itemStartUse
発火条件:長押しで使用するアイテムの使用を始めたとき
beforeEventsの有無:なし
import { world } from "@minecraft/server";
world.afterEvents.itemStartUse.subscribe(ev => {
let duration = ev.useDuration; // 完了までにかかる時間(tick)
let source = ev.source; // 使用者
let item = ev.itemStack; // 使用されたアイテム
})
18.itemStartUseOn
発火条件:ブロックの対して右クリックで動作を行ったとき
beforeEventsの有無:なし
例:クワで土を耕す。水バケツで水を設置。ブロックをブロックの側面に設置等々
import { world } from "@minecraft/server";
world.afterEvents.itemStartUseOn.subscribe(ev => {
let face = ev.blockFace; // 右クリックしたブロックの面(Up,South,North等々)
let item = ev.itemStack; // 使用したアイテム
let source = ev.source; // 使用者
let block = ev.block; // 右クリックされたブロック
})
19.itemStopUse
発火条件:長押しで使用するアイテムの使用が途中でキャンセルされたとき
beforeEventsの有無:なし
16.itemReleaseUseとほぼ同じ。但し、itemStopUseは使用中にスロットを切り替えても発火するのに対し、itemReleaseUseは発火しないという微妙な違いがある。
例えば、肉を食べてる途中に長押しを離した場合、どちらも発火する。
しかし、肉を食べてる途中に手持ちのアイテムを入れ替えると、itemStopUseしか発火しない。
20.itemUse
発火条件:アイテムを右クリックしたとき
beforeEventsの有無:あり
import { world } from "@minecraft/server";
// afterの場合
world.afterEvents.itemUse.subscribe(ev => {
let source = ev.source; // 使用者
let item = ev.itemStack; // 使用されたアイテム
})
import { world } from "@minecraft/server";
// beforeの場合
world.beforeEvents.itemUse.subscribe(ev => {
let source = ev.source; // 使用者
let item = ev.itemStack; // 使用されたアイテム
ev.cancel = true; // イベントのキャンセル
})
※キャンセルをすると、長押しで使用する系のアイテムが使えなくなる。
21.leverAction
発火条件:レバーに状態変化があったとき
beforeEventsの有無:なし
import { world } from "@minecraft/server";
world.afterEvents.leverAction.subscribe(ev => {
let isPowered = ev.isPowered; // レバーの電源の状態(true / false)
let player = ev.player; // レバーをいじったプレイヤー
let dimension = ev.dimension; // イベントが発生したディメンション
let block = ev.block; // ブロック(対象のレバー)
})
22.pistonActivate
発火条件:ワールド内のピストンの伸縮に変化があったとき
beforeEventsの有無:なし
import { world } from "@minecraft/server";
world.afterEvents.pistonActivate.subscribe(ev => {
let piston = ev.piston; // ブロック(ピストン)の情報
let isExpanding = ev.isExpanding; // ピストンの伸縮状態(true / false)
let dimension = ev.dimension; // イベントが発生したディメンション
let block = ev.block; // ブロック(ピストン)
})
一旦ここでやる気が途切れたのでいつか追記します....
23.playerBreakBlock
発火条件:
beforeEventsの有無:なし
24.playerButtonInput
発火条件:
beforeEventsの有無:なし
25.playerDimensionChange
発火条件:
beforeEventsの有無:なし
26.playerEmote
発火条件:
beforeEventsの有無:なし
27.playerGameModeChange
発火条件:
beforeEventsの有無:なし
28.playerHotbarSelectedSlotChange
発火条件:
beforeEventsの有無:なし
29.playerInputModeChange
発火条件:
beforeEventsの有無:なし
30.playerInputPermissionCategoryChange
発火条件:
beforeEventsの有無:なし
31.playerInteractWithBlock
発火条件:
beforeEventsの有無:なし
32.playerInteractWithEntity
発火条件:
beforeEventsの有無:なし
33.playerInventoryItemChange
発火条件:
beforeEventsの有無:なし
34.playerJoin
発火条件:
beforeEventsの有無:なし
35.playerLeave
発火条件:
beforeEventsの有無:なし
36.playerPlaceBlock
発火条件:
beforeEventsの有無:なし
37.playerSpawn
発火条件:
beforeEventsの有無:なし
38.pressurePlatePop
発火条件:
beforeEventsの有無:なし
39.pressurePlatePush
発火条件:
beforeEventsの有無:なし
40.projectileHitBlock
発火条件:
beforeEventsの有無:なし
41.projectileHitEntity
発火条件:
beforeEventsの有無:なし
42.targetBlockHit
発火条件:
beforeEventsの有無:なし
43.tripWireTrip
発火条件:
beforeEventsの有無:なし
44.weatherChange
発火条件:
beforeEventsの有無:なし
45.worldLoad
発火条件:
beforeEventsの有無:なし