【マイクラコマンド解説】新executeコマンドで便利になった「unless block / unless blocksサブコマンド」でロケットランチャーを作る!統合版、教育版マインクラフトVer1.20対応

executeコマンドのunless block / unless blocksサブコマンドについて解説します。
以前のexecuteコマンドにはunlessサブコマンドがなかったので、ロケットランチャーをつくるのに3つのコマンドブロックが必要でしたが、unlessサブコマンドを使えばコマンドブロック一つで作れます!

unless block / unless blocksサブコマンドでロケットランチャーを作ろう!

unlessサブコマンドを使用せず、ロケットランチャーを作る場合

unlessを使用しない場合
3つのコマンドブロックが必要

統合版マインクラフトの旧executeコマンドは、unlessサブコマンドがサポートされていませんでした。

そのため、ifサブコマンドとスコア(変数)を利用して、ロケットランチャー用の矢などが空気ブロック内にあるかを判別し(1つ目のコマンドブロック)、地面に落下したら状態になったらスコア(変数)を減少させ(2つ目のコマンドブロック)、スコア(変数)が0以下になったら爆発状態のエンダークリスタルを召喚していました(3つ目のコマンドブロック)。

unlessを使用しない場合
1つ目のコマンドブロック

unlessを使用しない場合
2つ目のコマンドブロック

unlessを使用しない場合
3つ目のコマンドブロック

新executeコマンド:unless blockサブコマンド

unless blockを利用した場合
コマンドブロックは1つでOK
unless blockを利用した場合
ブロックの種類:リピートに設定、レッドストーン:動力が必要のまま
unless blockを利用した場合
execute unless blockコマンドを入力

マイクラexecuteコマンド

/execute as @e[type=minecraft:arrow] at @s unless block ~~-1~ air run summon minecraft:ender_crystal ~~~ ~~ minecraft:crystal_explode

【解説】

executeコマンドにより、コマンド実行者は矢で、かつ、矢の真下が空気ブロックでなければ、矢が爆発状態のエンダークリスタルを召喚します。つまり、矢を放ったとき矢は空中にあり、矢の真下は空気ブロックであるため「unless block ~~-1~ air」という条件は成立せず、矢は爆発状態のエンダークリスタルを召喚しません。しかし、矢が地面に落下すると、矢の真下は空気ブロックでなくなり、「unless block ~~-1~ air」という条件が成立して矢は爆発状態のエンダークリスタルを召喚します。

unless blockを利用した場合
unless blockとunless blocksの違い

「unless block」では指定した位置のブロックを比較するため、「unless block ~~-1~ air」としたときは矢の真下が空気ブロックでなかったときに条件が成立するのに対して、上図のように真横から矢がブロックに当たった場合、条件が成立せず矢は爆発しない(エンダークリスタルを召喚しない)。

しかし、次に説明する「unless blocks」で指定した領域のブロックを比較することにより、矢が真横からブロックに当たった場合でも矢が爆発する(エンダークリスタルを召喚する)ように出来ます。

「unless block」

指定した位置のブロックが指定したブロックと比較します。

「unless blocks」

指定した領域のブロックを比較する。

新executeコマンド:unless blocksサブコマンド

unless blocksを利用した場合
ブロックの種類:リピートに設定、レッドストーン:動力が必要のまま
unless blocksを利用した場合
execute unless blocksコマンドを入力

マイクラexecuteコマンド

/execute as @e[type=minecraft:arrow] at @s unless blocks ~1~1~1 ~-1~-1~-1 ~~~ all run summon minecraft:ender_crystal ~~~ ~~ minecraft:crystal_explode

【解説】

executeコマンドにより、コマンド実行者は矢で、かつ、矢の周り(3x3x3範囲)のブロックと、矢(~~~)から~2~2~2の範囲のブロックに違いが生じたとき、矢は爆発状態のエンダークリスタルを召喚する。つまり、矢を放ったとき矢は空中にあり、矢の周り(3x3x3範囲)のブロックと、矢(~~~)から~2~2~2の範囲のブロックはすべて空気ブロックで同じであるため「unless blocks ~1~1~1 ~-1~-1~-1 ~~~ all」という条件は成立せず、矢は爆発状態のエンダークリスタルを召喚しません。しかし、矢が上下左右を問わずブロックに当たると、矢の周り(3x3x3範囲)のブロックと、矢(~~~)から~2~2~2の範囲のブロックで同じでなくなり、「unless blocks ~1~1~1 ~-1~-1~-1 ~~~ all」という条件が成立して矢は爆発状態のエンダークリスタルを召喚します。

unless blocksを利用した場合
unless blocksの比較対象

unless blocksを利用した場合
unless blocksなら横から当たっても爆発する

教育版マインクラフト(Minecraft: Education Edition)とは?

教育版マインクラフトは、教育のために特別に設計されたMinecraftのバージョンです。学生たちにクリエイティブな問題解決やコラボレーション、コミュニケーションのスキルを身につけさせることを目的としています。さらに、MakeCodeやPythonなどのプログラミングも学べることが特徴です。教師向けのツールや教材、教育コンテンツが追加されており、学習環境に適した機能が提供されています。

メイクコード(MakeCode)とは?

Microsoftが提供する、無料のプログラミング学習用プラットフォーム。MakeCodeエディターでは、ブロックを使ったビジュアルコーディング、PythonとJavaScriptによるテキストコーディングが可能。アプリやソフトウェアをインストールする必要はなく、https://makecode.microbit.org/にアクセスするだけで利用できる。
コンピューターボードmicro:bitを使ったプログラミングや、ゲームプログラミングなどが出来る。教育版マインクラフト、または、統合版マインクラフトにCode Connection for Minecraftをインストールすれば、MaCodeエディターでプログラミングもできる。