チャージに関するイベント

チャージに関する操作をしたときに発生するイベントです。

チャージとは「弓」や「クロスボウ」など、マウスをクリックした後も押し続ける動作のことです。 他にもトライデントや釣竿などでもチャージイベントが発生します。 スケルトンやピレジャーなどの弓攻撃では発生しません。

アイテム別の発生するイベント

主に弓系の操作とクロスボウの操作で分かれます。 すべてのアイテムで確認していませんが、ほとんどは弓系の操作になりそうです。

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ではないので注意してください。

参考

次のページへ
チャットに関するイベント