更新日:
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のあともマイナスに減り続けるので、終了の表示がくり返されることはありません。
うまくいかないときの確認ポイント
- 点が入らない:コマンドブロックが「動力が必要」になっているか、矢が5マス以内に刺さっているか確認します。
- コマンドブロックの人に点が入る:
on originを書き忘れていないか確認します。 - 1回で何点も入る:3の最後で矢を消しているか確認します。
- 統合版で動かない:
on originはJava版だけの書き方です。
よくある質問
クロスボウでも点は入りますか?
クロスボウの矢も arrow なので、同じコマンドで点が入ります。
的をいくつも置けますか?
的ごとにダストとコマンドブロックを用意すれば、いくつでも置けます。遠い的は2点にするなど、的ごとに点数を変えることもできます。
雪玉でも反応しますか?
的ブロックは雪玉でも反応します。その場合は type=arrow を type=snowball に変えます。