MC CommanderMinecraft非公式コマンド支援

弓の的当てゲームをコマンドで作る方法

的(ターゲットブロック)に矢が当たると、その矢を射った人に1点が入るミニゲームです。矢から射った人をたどる execute on origin を使うのがポイントです。Java版(1.19.4以降)の書き方で説明します。

ミニゲーム弓Java版

executeコマンドを作る

更新日:

1. 準備(最初に一度だけ)

/scoreboard objectives add points dummy "得点"
/scoreboard objectives setdisplay sidebar points
/scoreboard players set @a points 0

points は的に当てた回数を入れるスコアです。サイドバーに出しておくと、誰が何点か全員が見られます。

2. 的とコマンドブロックを置く

的には target(的ブロック)を使います。矢が当たると、しばらくの間レッドストーン信号を出すブロックです。的の後ろか下からレッドストーンダストを引いて、その先にインパルス(動力が必要)のコマンドブロックを置きます。コマンドブロックの後ろにはチェーンのコマンドブロックを2つつなげます。

/give @s target
/give @s command_block

コマンドブロックは的から3〜4マス以内に置きます。次の3のコマンドが「コマンドブロックの近くにある矢」を探すためです。

3. 当てた人に得点を入れる

/execute as @e[type=arrow,distance=..5,limit=1,sort=nearest] on origin run scoreboard players add @s points 1
/execute as @e[type=arrow,distance=..5,limit=1,sort=nearest] on origin run tellraw @a [{"selector":"@s"},{"text":" が的に命中!","color":"gold"}]
/kill @e[type=arrow,distance=..5]

1行目をインパルスのコマンドブロックに、2〜3行目をチェーンに入れます。on origin は、矢からその矢を射った人に実行者を切りかえる書き方です。これで的の近くに刺さった矢を射った人に1点が入ります。最後に矢を消すので、同じ矢で何回も点が入ることはありません。

4. 弓と矢を配る

/clear @a arrow
/give @a bow
/give @a arrow 10
/scoreboard players set @a points 0

ボタンを押したときに上から順に動くように並べます。矢を10本に決めておくと、10本で何点取れるかの勝負になります。無限エンチャントの付いた弓を配ると矢が減らないので、数を決めるときは付けないでおきます。弓の作り方は 最強の弓を出すコマンド にまとめています。

5. 中心に当てたときだけ点にする

的ブロックは、中心に近いところに当たるほど強い信号を出します。レッドストーンダストは1マス進むごとに信号が1ずつ弱くなるので、コマンドブロックまでのダストを長くすると、中心の近くに当てたときだけコマンドブロックまで信号が届くようになります。ダストを8マスくらいにして、実際に射って試しながら長さを決めます。コマンドブロックが的から離れるので、3のコマンドの distance=..5 は、的までの距離より少し大きい数(たとえば distance=..10)に変えます。

6. 制限時間を付ける

/scoreboard objectives add timer dummy
/scoreboard players set #game timer 1200

1行目は最初に一度だけ、2行目は4の弓を配るコマンドの後ろに足します。1200は60秒(1秒は20ティック)です。

/scoreboard players remove #game timer 1
/execute if score #game timer matches 0 run title @a title {"text":"終了!","color":"red"}
/execute if score #game timer matches 0 run clear @a arrow

1行目をくり返しのコマンドブロックに入れ、残りをチェーンでつなげます。毎ティック1ずつ減り、ちょうど0になった瞬間に1回だけ終了を知らせて矢を回収します。0のあともマイナスに減り続けるので、終了の表示がくり返されることはありません。

うまくいかないときの確認ポイント

よくある質問

クロスボウでも点は入りますか?

クロスボウの矢も arrow なので、同じコマンドで点が入ります。

的をいくつも置けますか?

的ごとにダストとコマンドブロックを用意すれば、いくつでも置けます。遠い的は2点にするなど、的ごとに点数を変えることもできます。

雪玉でも反応しますか?

的ブロックは雪玉でも反応します。その場合は type=arrow を type=snowball に変えます。

関連ページ

最強の弓・クロスボウを出すコマンド

配る弓を作るときに。

scoreboardでミニゲームを作る

得点の使い方です。

executeコマンドは何ができるのか

as と at の基本です。

ミニゲームの作り方:コマンドの流れ

ゲーム全体の組み立て方です。

コマンド辞典

基本構文とコマンド別の使い方を確認できます。