コマンドブロックの概要

コマンドブロックは、Minecraft: Bedrock Edition の世界での特別な種類のブロックであり、ゲーム内でコンソール コマンドを使用することができます。 プレイヤーがチャットに入力できるのと同じコマンドを、レッドストーン パワーを使用してコマンドブロックで自動的に実行できます。

このチュートリアルでは、次の内容を学びます。

  • コマンドブロックとは何か、ゲーム内でどのようにアクセスするのか。
  • コマンドブロックでコマンドを使用する方法。
  • 複数のコマンドブロックをつなぐことでコマンドブロック チェーンが機能するしくみ。
  • プレイヤーがアクションを実行した後で報酬を与えるゲームプレイ ループの作成。

このガイドでは、設定した場所で特定の種類のブロックを探し、正しい場所にブロックを配置したプレイヤーに報酬を与えるコマンドブロック チェーンを設定します。

要件

マップの設定

コマンドブロックは Minecraft のどの世界でも使用できますが、単純でわかりやすい環境としてフラットな世界を使用します。

  1. Minecraft: Bedrock Edition を起動します。
  2. [Play (プレイ)] を選択し、[Create New (新しく作成)] を選択し、[Create New World (世界を新しく作成)] を選択します。
  3. 世界の設定で、世界の種類を [Flat (フラット)] に設定します。
  4. 世界の設定で、[Show Coordinates (座標を表示)] を有効にします。
  5. 世界の設定で、[Activate Cheats (チートを実行)] を有効にします。
  6. [Create (作成)] を選択します。

コマンドブロックを取得する方法

コマンドブロックを取得するにはコマンドを実行するしかありません。

  1. チャットを開きます。
  2. コマンド /give @p command_block を入力します。

持ち物に 1 つのコマンドブロックが追加されたことを確認します。

コマンドブロックを使用する方法

まず、コマンドブロックを他のブロックと同じように地面に置きます。 横からコマンドブロックを見ると、矢印に気が付きます。

コマンドブロックの右向きの矢印を示す画像。

これらの矢印は、必ず、配置した際のプレイヤーの方を指しています。 矢印は実行のフローを示します。 画像からわかるように、左側のブロックが最初に実行され、中央のコマンドブロックが続き、最終的に右側の最後のブロックが実行されます。

[Use (使用)] ボタンをクリック (PC では右クリック) して、コマンドブロック ユーザー インターフェイスを開きます。

コマンドブロック ユーザー インターフェイス

コマンドブロック グラフィック ユーザー インターフェイスの概要

  • [Block Type (ブロックの種類)] では、このコマンドブロックの種類を定義します。 3 つのオプションがあります。
    • [Impulse (インパルス)] コマンドブロックは、レッドストーン信号を受信したときに有効になります。
    • [Chain (チェーン)] コマンドブロックは、それ自体を指しているコマンドブロックが有効になると有効になります。
    • [Repeat (リピート)] コマンドブロックは、レッドストーン信号がある場合に限り、ゲーム内ティックごとに有効になります。 Minecraft のティック数は 1 秒あたり 20 回です。
  • [Condition (条件)] では、コマンドブロックがいつアクションを実行するかを定義します。 2 つのオプションがあります。
    • [Conditional (条件付き)] では、チェーン内の直前のブロックが成功した場合のみ実行します。
    • [Unconditional (条件なし)] では、チェーン内の直前のブロックが成功したかどうかに関係なく実行します。
  • [Redstone (レッドストーン)] では、コマンドブロックを有効にするためにレッドストーンが必要かどうかを定義します。 2 つのオプションがあります。
    • [Needs Redstone (レッドストーンが必要)] では、レッドストーンのパワーがあるときのみコマンドブロックが有効になります。
    • [Always Active (常時実行)] では、レッドストーンの有無に関係なく常にコマンドブロックが有効になります。 インパルス コマンドブロックの場合は、これによって 1 回しか実行されなくなるため、あまり役立ちません。 チェーン コマンドブロックの場合、これはデフォルトで有効です。
  • [Execute on First Tick (最初のティックで実行)] は、間を置いて繰り返すコマンドブロックのみで使用できます。 有効な場合、コマンドはブロックがパワーを受けるとすぐに実行し、その後待機してから、再度実行します。 無効な場合、待機時間が終わるまで、コマンドは最初の実行を行いません。
  • [Delay in Ticks (ティックの遅延)] は、コマンドブロックがレッドストーン パワーを受け取ってから実行するまでに待機する時間の値です。

ゲームプレイ ループの設計

クリエイターはコマンドブロックのユースケースを利用して、Minecraft 内でゲームプレイ ループを作成できます。 単純なゲームプレイ ループでは、アクションを完了したプレイヤーに報酬を与えます。 ゲームプレイ ループによって、特定の場所にダイヤモンド ブロックを置いたプレイヤーにエメラルドを与える場合、必要に応じて次のように各ステップを分解できます。

  1. ダイヤモンド ブロックが設定した場所に存在することを確認します。
  2. 存在する場合、プレイヤーが報酬を既に受け取ったかどうかを確認します。
  3. プレイヤーがまだ報酬を受け取っていない場合は、プレイヤーにエメラルドを与えます。
  4. プレイヤーにエメラルドを与えた後、プレイヤーが報酬を受け取ったとしてマークします。

最初のコマンドブロックの設定

コマンドブロックの設定について学んだところで、次は、ある場所で特定の種類のブロックを検出する最初のブロックを設定しましょう。

  1. 自分のプレイヤー キャラクターに近い場所の地面にコマンドブロックを配置します。
  2. コマンドブロック インターフェイスを開きます。
  3. [Block Type (ブロックの種類)][Repeat (リピート)] に設定します。
  4. [Redstone (レッドストーン)][Always Active (常時実行)] に設定します。

/testforblock コマンド

/testforblock コマンドは、世界の指定ポイントで特定のブロックを探します。

/testforblock <position: x y z> <tileName: Block> [dataValue: int]

  • position は、コマンドが特定のブロックを探す世界の座標です。 たとえば、0 4 0 です。
  • tileName は、探しているブロックの種類です。 たとえば、diamond_block です。
  • dataValue は、同一ブロックのバリエーションを処理するために使用されるオプション引数です。 このチュートリアルでは、これを使用する必要はありません。

このチュートリアルを進めている場合、フラットな世界に入っています。 歩き回っているとき、自分のプレイヤーの位置が画面の左上に見えます。 オリジンの近くのブロックを確認しましょう。

  1. [Command Input (コマンド入力)] セクションに、/testforblock 0 4 0 diamond_block と入力します。
  2. インターフェースを閉じます。

コマンドブロック チェーン

次のステップでは、チェーン コマンドブロックを配置する必要があります。 前述したように、チェーン コマンドブロックは、それ自体を指しているブロックが有効になると実行します。 矢印の画像のように、ブロックを配置してください。

/testforblock コマンドブロックの設定

  1. 既存のブロックの横にもう 1 つのコマンドブロックを配置します。 矢印が指している先に新しいブロックを配置するようにしてください。
  2. コマンドブロック インターフェイスを開きます。
  3. [Block Type (ブロックの種類)][Chain (チェーン)] に設定します。
  4. [Condition (条件)][Conditional (条件付き)] に設定します。
  5. [Redstone (レッドストーン)][Always Active (常時実行)] に設定します。
  6. [Command Input (コマンド入力)] に次を設定します: /testfor @p[tag=!placed_block]

2 番目のブロックは [Conditional (条件付き)] に設定されるため、この新しいブロックが実行されるのは、最初のコマンドブロックが成功した場合 (つまりダイヤモンド ブロックが存在していた場合) のみです。 このコマンドは、プレイヤーが報酬をまだ受け取ってないことを確認します。

報酬コマンドブロックの設定

3 番目のブロックを追加して、正しい位置にブロックを配置したことによりプレイヤーに報酬を与えるコマンドを設定します。

  1. 既存のブロックの横にもう 1 つのコマンドブロックを配置します。 矢印が指している先に新しいブロックを配置するようにしてください。
  2. コマンドブロック インターフェイスを開きます。
  3. [Block Type (ブロックの種類)][Chain (チェーン)] に設定します。
  4. [Condition (条件)][Conditional (条件付き)] に設定します。
  5. [Redstone (レッドストーン)][Always Active (常時実行)] に設定します。
  6. [Command Input (コマンド入力)]/give @p emerald を設定します。

ここでも、このコマンドが有効になるのは、直前のコマンドが成功した場合のみです。つまり、ダイヤモンド ブロックが存在しており、プレイヤーが報酬をまだ受け取っていない場合です。

ループを閉じる

ここで止めた場合、ダイヤモンド ブロックを 0 4 0 に配置することで、1 秒間に 20 個のエメラルドがプレイヤーに与えられます。 そのため、最後のステップを実行して、プレイヤーが報酬を受け取ったとしてマークする必要があります。

  1. 既存のブロックの横にもう 1 つのコマンドブロックを配置します。 矢印が指している先に新しいブロックを配置するようにしてください。
  2. コマンドブロック インターフェイスを開きます。
  3. [Block Type (ブロックの種類)][Chain (チェーン)] に設定します。
  4. [Condition (条件)][Conditional (条件付き)] に設定します。
  5. [Redstone (レッドストーン)][Always Active (常時実行)] に設定します。
  6. [Command Input (コマンド入力)] に次を設定します: /tag @p add placed_block

ループのテスト

すべてが正しく設定されていれば、ここでダイヤモンド ブロックを 0, 4, 0 の位置に配置すると、プレイヤーの持ち物に 1 個のエメラルドを受け取ります。