チャージに関するイベント
チャージに関する操作をしたときに発生するイベントです。
チャージとは「弓」や「クロスボウ」など、マウスをクリックした後も押し続ける動作のことです。 他にもトライデントや釣竿などでもチャージイベントが発生します。 スケルトンやピレジャーなどの弓攻撃では発生しません。
アイテム別の発生するイベント
主に弓系の操作とクロスボウの操作で分かれます。 すべてのアイテムで確認していませんが、ほとんどは弓系の操作になりそうです。
Start |
Stop |
Release |
Complete | |
---|---|---|---|---|
弓・トライデント(投) | クリックしたとき | -- | アイテムを放ったとき | -- |
クロスボウ | クリックしたとき | -- | 完了前にボタンを離したとき | 完了したとき |
ItemStopChargeEvent
はどのアイテムで発生するか未確認です。
ItemStartChargeEvent
チャージできるアイテムのチャージを開始したとき。
import * as mc from 'mojang-minecraft';
function onItemStartCharge(event: mc.ItemStartChargeEvent) {
// チャージに使用したアイテム
const item: mc.ItemStack = event.itemStack;
// 使用者
const user: mc.Entity = event.source;
// このアイテムのチャージが完了するまでのティック
const duration: number = event.useDuration;
// 内容を表示
user.dimension.runCommand(`say ${user.nameTag} が ${item.id} のチャージを開始。完了まで ${duration}ティック。`);
// 特定のアイテムを使ったら
if (item.id === mc.MinecraftItemTypes.bow.id) {
user.runCommand(`effect @s levitation 9999 5 true`);
} else if (item.id === mc.MinecraftItemTypes.crossbow.id) {
user.runCommand(`effect @s blindness 9999 0 true`);
}
}
mc.world.events.itemStartCharge.subscribe(onItemStartCharge);
ItemStopChargeEvent
チャージできるアイテムのチャージを停止したとき。
どのアイテムで発生するか未確認。
function onItemStopCharge(event: mc.ItemStopChargeEvent) {
// チャージに使用したアイテム
const item: mc.ItemStack = event.itemStack;
// 使用者
const user: mc.Entity = event.source;
// このアイテムのチャージが完了するまでのティック
const duration: number = event.useDuration;
// 内容を表示
user.dimension.runCommand(`${user.nameTag} が ${item.id} のチャージを停止`);
// 特定のアイテムを使ったら
if (item.id === mc.MinecraftItemTypes.bow.id) {
user.runCommand(`effect @s levitation 0`);
} else if (item.id === mc.MinecraftItemTypes.crossbow.id) {
user.runCommand(`effect @s blindness 0`);
}
}
mc.world.events.itemStopCharge.subscribe(onItemStopCharge);
ItemReleaseChargeEvent
チャージできるアイテムをチャージから解放したとき。
function onItemReleaseCharge(event: mc.ItemReleaseChargeEvent) {
// チャージに使用したアイテム
const item: mc.ItemStack = event.itemStack;
// 使用者
const user: mc.Entity = event.source;
// このアイテムのチャージが完了するまでのティック
const duration: number = event.useDuration;
// 内容を表示
user.dimension.runCommand(`say ${user.nameTag} が ${item.id} のチャージを解放。`);
// 特定のアイテムを使ったら
if (item.id === mc.MinecraftItemTypes.bow.id) {
user.runCommand(`effect @s levitation 0`);
} else if (item.id === mc.MinecraftItemTypes.crossbow.id) {
user.runCommand(`effect @s blindness 0`);
}
}
mc.world.events.itemReleaseCharge.subscribe(onItemReleaseCharge);
ItemCompleteChargeEvent
チャージできるアイテムのチャージを完了したとき。
function onItemCompleteCharge(event: mc.ItemCompleteChargeEvent) {
// チャージに使用したアイテム
const item: mc.ItemStack = event.itemStack;
// 使用者
const user: mc.Entity = event.source;
// このアイテムのチャージが完了するまでのティック
const duration: number = event.useDuration;
// 内容を表示
user.dimension.runCommand(`say ${user.nameTag} が ${item.id} のチャージを完了。`);
// 特定のアイテムを使ったら
if (item.id === mc.MinecraftItemTypes.bow.id) {
user.runCommand(`effect @s levitation 0`);
} else if (item.id === mc.MinecraftItemTypes.crossbow.id) {
user.runCommand(`effect @s blindness 0`);
}
}
mc.world.events.itemCompleteCharge.subscribe(onItemCompleteCharge);
「useDuration」について
使用したアイテムがチャージを完了するまでのティック数です。
クロスボウの初期値は25
ティック(1.25秒)ですが、弓は72000
ティック(1時間)です。
弓は最大まで引き絞っても、完了扱い(ItemCompleteChargeEvent
)になりません。
この大きな数は「完了しない」を意味していると考えられます。
0やundefinedではないので注意してください。