BeforeItemUseEventは使用中のアイテムに関する情報が含まれるイベントクラスです。このイベントは実際にアイテムを使う「前に」使おうとしているアイテムと使ったエンティティの情報を取得することができます。また、アイテムの使用をキャンセルすることも可能です。
プロパティ
cancel
cancel: boolean;
trueにセットすることでこのアイテムの使用をキャンセルすることができる。
Type: boolean
item
item: ItemStack;
使おうとしているアイテム(アイテムスタック)
Type: ItemStack(公式サイト)
source
read-only source: Entity;
このイベントを発生させた(=アイテムを使おうとしている)エンティティ。
Type: Entity(公式サイト)
サンプルコード
特定アイテムの使用を無効化する
cancel
プロパティを利用することでアイテムの使用をなかったことにできます。ここでは「釣り竿(minecraft:fishing_rod)」の使用をキャンセルして釣りができない状態にしてみます。
import { world } from "@minecraft/server";
world.events.beforeItemUse.subscribe(ev => {
if(ev.item.id === "minecraft:fishing_rod"){
ev.cancel = true;
}
});
特定のアイテムが使われたら特定のコマンドを実行する
source
プロパティとitem
プロパティを組み合わせれば特定のアイテムを使ったときにコマンドを実行することができます。以下の例は棒(minecraft:stick)を使ったときに、棒を使ったプレイヤーがsummonコマンドを使って自分に雷を落とすコードです。
import { world } from "mojang-minecraft";
world.events.beforeItemUse.subscribe(ev => {
if(ev.item.id === "minecraft:stick"){
ev.source.runCommand("summon lightning_bolt ~~~");
}
});
マルチプレイ時の特定の道具禁止縛りなんかに使えそうです。