コマンドブロックを遠隔で操作する方法を3つ紹介する。
1つめのレッドストーンブロックを置く方法は非常に有名。コマンドに慣れていない人向け。
2つめの方法はスコアボードを用いる。慣れると応用が効いて超便利(うぇるべい先生は統合版では基本こちらを利用)。そのままコピペで行けるので難しくない。
3つめの方法はJava版のみ。スコアボードを用いて時間をコマンド開始の合図にする方法。遠隔で打ち込むコマンドが短くて済む、時間差などの設定がしやすいのでJava版では基本こちらを利用
- 1. レッドストーンブロックを置く(シンプル!統合版・Java版)
- 2. スコアボードを用いる(便利!統合版・Java版)
- 3. スコアボードを用いる+時間をコマンド開始の合図にする(超便利!応用編:Java版のみ)
1. レッドストーンブロックを置く(シンプル!統合版・Java版)
1.1. 基本編(1回きりしか遠隔操作できない)
1.1.1.まず起動させたいコマンドをコマンドブロックに打ち込む。
ここではsay helloと入れた。
Command block: Impulse/Unconditional/Needs Redstone
/say hello
1.1.2. そのコマンドブロックに隣り合うブロックにレッドストーンブロックを置く。
これはコマンドで遠隔で打ち込めばよい。
/setblock x y z redstone_block
これで遠隔でコマンドブロックを起動させることが可能。ただし1回のみ。
1.2.応用編(何度も繰り返し使用可能)
1.2.1. 後ほど置くレッドストーンブロックをairに入れ替えるコマンドを先に入れる。
モードはRepeatになる。
Command block: Repeat/Unconditional/Needs Redstone
/setblock x y z air
x y zはこのコマンドブロックに隣り合うブロックの座標。
1.2.2.次に起動させたいコマンドをコマンドブロックに打ち込む。
ここではsay helloと入れた。モードはChain
Command block: Chain/Conditional/Always active
/say hello
1.2.3. 1個目のコマンドブロックに隣り合うブロックにレッドストーンブロックを置く。
これはコマンドで遠隔で打ち込めばよい。
/setblock x y z redstone_block
これで遠隔でコマンドブロックを起動させることが可能。複数回でも可能。
右側のリピートブロックに
注意
1.2.1.と1.2.2.のコマンドを逆にすると、そのコマンドが2回発動されてしまう(2 ticks起動時間があるため)
2. スコアボードを用いる(便利!統合版・Java版)
スコアボードを用いてどのコマンドブロックを起動するか数字を割り当てる。
2.1. スコアボードを作成する
/scoreboard objectives add command dummy
/scoreboard players set remote command 0
optional
/scoreboard objectives setdisplay sidebar command
解説
1行目:command というobjectivesを作成。commandは自由に決めて良い。
2行目:commandの中にremoteという変数を作る。remoteは最初0に設定する。
remoteも自由に決めてよい。設定も0である必要はない。
3行目:これは遠隔操作には必須でない。remoteに格納されている数字を確認するためにサイドバーに表示している。
2.2. コマンドブロックにスコアボードの数値が一致の条件文を入れる
下記の2つのコマンドブロックを作る。
Command block: Repeat/Unconditional/Always active
/execute if score remote command matches 1 run say hello
Command block: Chain/Conditional/Always active
/scoreboard players set remote command 0
この状態で、遠隔で下記のコマンドを入れることで遠隔操作可能となる。
/scoreboard players set remote command 1
解説
1つめのコマンドブロック:remoteが1だった場合のみ、run以降のコマンドが起動する。この1は任意の数字で、起動したいコマンドブロック毎に設定する。
2つめのコマンドブロック:remoteを1から別の数値に変える。ここでは0をリセットの数値にしている。この数値を別の数値にしていくことで離れたコマンドブロックに指示をつなげることも可能。
最後のコマンドで遠隔起動する。1という数値は各コマンドブロックに割り当てた数値を入れる。
3. スコアボードを用いる+時間をコマンド開始の合図にする(超便利!応用編:Java版のみ)
スコアボードを用いてどのコマンドブロックを起動するか数値を割り当てる。その数値は同時にマインクラフトの時間でもある仕組みにする。
3.1. スコアボードを作成する
/scoreboard objectives add command dummy
optional
/scoreboard objectives setdisplay sidebar command
解説
1行目:command というobjectivesを作成。commandは自由に決めて良い。
2行目:これは遠隔操作には必須でない。command(の3.2.で設定するremote)に格納されている数字を確認するためにサイドバーに表示している。
3.2. コマンド起動用のスコアボードに時間をリアルタイムに格納する
Command block:Repeat/Unconditional/Always Active
/execute store result score remote command run time query daytime
解説
これでremoteにそのマイクラの世界の時間(daytime)が格納される。executeの後storeが統合版では使用できないためJava版のみで利用可能な方法となる。このコマンドブロックは1個のみどこかに置いておけばよい。
3.3. 時間毎に起動するコマンドブロックを設定する。
まず、時間を止める。
/gamerule doDaylightCycle false
次に、操作したいコマンドブロックを作っていく。
Command block: Repeat/Unconditional/Always Active
/execute if score remote command matches 7000 run say hello
Command block: Chain/Conditional/Always Active
/time set 1000
解説
まず時間を止めないと勝手にコマンドが発動されたりするので止める。
コマンドブロック1つめ:時間が1001になったらrun以降のコマンドが発動する。1001は何でもよく、起動したいコマンドブロック毎に割り当てる。
コマンドブロック2つめ:コマンドが発動したら時間を変更する。ここでは1000にした(time set dayで時間は1000になる)
3.4. 起動したいコマンドブロックを遠隔操作する
割り当てた時間に設定すればコマンドブロックが起動する。
例えば
/time set 1001
で3.3.のコマンドが遠隔で操作できる。
この方法の利点は
・遠隔操作時に打つコマンドが短くて済む
・時間を止めたり流したりすることで、複数のコマンドブロックをある一定時間空けて起動させたりが可能(例えばAというコマンドブロックの5分後にBというコマンドブロックを起動とか)