更新日:
1. 準備(最初に一度だけ)
/scoreboard objectives add coins dummy
/scoreboard objectives add roll dummy
coins は持っているエメラルドの数、roll はガチャで出た数を入れるスコアです。
2. コマンドブロックの並べ方
ボタンを付けたインパルス(動力が必要)のコマンドブロックを1つ置き、その後ろにチェーンのコマンドブロックをつなげます。チェーンは「無条件」「常時実行」にします。3から6のコマンドを、上から順に入れていきます。
3. エメラルドが足りるか調べる
/execute as @p store result score @s coins run clear @s emerald 0
/execute as @p if entity @s[scores={coins=10..}] run tag @s add gacha
/execute as @p unless entity @s[tag=gacha] run tellraw @s {"text":"エメラルドが10個必要です","color":"red"}
/clear @a[tag=gacha] emerald 10
1行目の clear @s emerald 0 は、エメラルドを消さずに数だけ数える書き方です。その数を coins に入れます。10個以上ある人にだけ gacha タグを付け、足りない人にはメッセージを出します。最後にタグの付いた人からエメラルドを10個回収します。
@p はボタンに一番近い人です。条件を @p[scores={coins=10..}] のように書くと、エメラルドを持っている別の人が選ばれてしまうので、as @p で先に人を決めてから if entity @s[...] で調べます。
4. 1〜100の数を出す
/execute as @a[tag=gacha] store result score @s roll run random value 1..100
random value 1..100 は、1から100までのどれか1つの数を出すコマンドです。結果を roll に入れます。くわしくは randomコマンドの使い方 を見てください。
5. 出た数で景品を分ける
/give @a[tag=gacha,scores={roll=1..5}] diamond 3
/give @a[tag=gacha,scores={roll=6..30}] iron_ingot 5
/give @a[tag=gacha,scores={roll=31..100}] bread 3
1〜5が出たら大当たり(5%)、6〜30なら当たり(25%)、31〜100ならはずれ(70%)です。確率を変えるときは、数の範囲を変えます。範囲どうしが重ならないように、すき間なく決めるのがコツです。
6. 大当たりを知らせて終わる
/execute as @a[tag=gacha,scores={roll=1..5}] run tellraw @a [{"selector":"@s"},{"text":" が大当たり!","color":"gold"}]
/execute as @a[tag=gacha,scores={roll=1..5}] at @s run playsound minecraft:ui.toast.challenge_complete master @s
/tag @a[tag=gacha] remove gacha
大当たりのときだけ全員にメッセージを出し、本人に効果音を鳴らします。最後にタグを外すのを忘れないようにします。外さないと、次にほかの人が押したときにも景品が出てしまいます。
7. 景品をもっと豪華にする
景品の give は、エンチャントの付いた道具や名前の付いたアイテムにもできます。giveコマンド作成ツール で作ったコマンドを5の行と入れかえます。景品の種類を増やすときは、範囲を細かく分けて行を足します。
うまくいかないときの確認ポイント
- エメラルドがあるのに足りないと出る:1の
coinsを作ったか、チェーンが「常時実行」になっているか確認します。 - 何も出ない:
randomは1.20.2以降のコマンドです。バージョンを確認します。 - 2回出る・ほかの人にも出る:6の最後でタグを外しているか確認します。
- 統合版で作りたい:統合版では
scoreboard players random @p roll 1 100で数を出せます。
よくある質問
エメラルドではなくスコアのお金で回せますか?
3の1行目を消し、coins の代わりにお金のスコアを使います。最後の clear の代わりに scoreboard players remove でお金を減らします。
ガチャの結果を全員に見せられますか?
6のように tellraw @a を使えば、はずれも含めて全員に表示できます。
村人の取引とどちらがいいですか?
決まった物と交換するなら村人ショップ、運で景品が変わる楽しさを出すならガチャが向いています。