プレイヤーがブロックを破壊したときに発火するイベントのイベントクラスです。マイクラといえばブロック破壊といっても過言ではないので、BlockBreakEventイベントの利用頻度は高いと思います。
親クラス
プロパティ
block
read-only block: Block;
このイベントを引き起こした、壊されたブロック。BlockBreakEventイベントはブロックが破壊された直後に発火するため、blockプロパティで受け取れるブロックのタイプは空気(minecraft:air)になります。ブロックが壊れる前(実際に壊したブロック)の情報はbrokenBlockPermutationプロパティを参照して得られます。
Type: Block
brokenBlockPermutation
read-only brokenBlockPermutation: BlockPermutation;
ブロックが破壊される前のブロックの情報。
Type: BlockPermutation
dimension
read-only dimension: Dimension;
このイベントで破壊されたブロックを含むディメンション。
Type: Dimension
player
read-only player: Player;
ブロックを壊してこのイベントを発生させたプレイヤー。
Type: Player
利用例
ブロックを壊したときに何かする
BlockBreakEventイベントを利用すれば、ブロックの破壊をトリガーにして様々な処理を行なうことができます。ここでは例として壊したブロックのID(例:minecraft:dirt)とブロックを壊したプレイヤーの名前をチャットで通知するコードを記載します。
import { world } from "mojang-minecraft";
world.events.blockBreak.subscribe(ev => {
// 壊したブロックのID
const id = ev.brokenBlockPermutation.type.id;
// 壊したブロックの存在しているディメンション
const dimension = ev.dimension;
// ディメンション主体でメッセージを送る
dimension.runCommand(`say ${ev.player.name}が${id}を壊しました`);
})
壊したブロックを取得するのに「block」プロパティではなく「brokenBlockPermutation」プロパティを使うのがポイントです。
BlockBreakEnventを利用すれば壊したブロックの周囲のブロックを一気に壊すような、いわゆる一括破壊系アドオンを作ることもできます。なかなか利用頻度の高いイベントです。
このイベントを使ったアドオンをYouTubeで紹介しています。どんな動きになるのか確認してみるのも良いかもしれません。