BlockExplodeEventは、爆発によって破壊された各BlockLocationに対して発生するイベントです。このイベントはBeforeExplosionEventとは異なり、ブロックがすでに破壊された後に発火します。したがってこのイベントでは爆発のキャンセルやブロックが破壊される前にブロックを保護する等はできません。
親クラス
- BlockEvent(公式サイト)
プロパティ
block
read-only block: Block;
このイベントで爆発の影響を受けたブロック。
Type: Block(公式サイト)
dimension
read-only dimension: Dimension;
このイベントの対象のブロックを含むディメンション。
Type: Dimension(公式サイト)
source
read-only source: Entity;
この爆発を発生させたエンティティ。(TNTやクリーパーなど)
Type: Entity(公式サイト)
サンプルコード
破壊されたブロックの場所にシルバーフィッシュを発生させる
TNTを使ったりクリーパーが爆発してブロックが壊れたら、その場所にシルバーフィッシュを発生させます。これだと無暗にTNTやクリーパーを爆発させられませんね。
import { MinecraftEntityTypes, world } from "@minecraft/server";
world.events.blockExplode.subscribe(blockExplodeEvent => {
const { x, y, z } = blockExplodeEvent.block.location;
blockExplodeEvent.dimension.runCommandAsync(`summon ${MinecraftEntityTypes.silverfish.id} ${x} ${y} ${z}`);
});
実行するとこんな感じです。(あまりに衝撃的な絵面だったので動画を撮りました。)
まとめ
BlockExplodeEventのポイントは、
- 爆発がすでに起こった後に発火する
- 爆発の影響を受けたブロックを知ることができる
って感じですね。BeforeExplosionEventに比べて使いどころが想像しづらいイベントですが、いろいろ試してみてください☆