MC CommanderMinecraft非公式コマンド支援

ガチャをコマンドで作る方法

ボタンを押すとエメラルドが10個減り、ランダムに景品が出るガチャを作ります。random コマンドで1〜100の数を出し、その数で景品を分けるのがポイントです。Java版(1.20.2以降)の書き方で説明します。

ガチャrandomJava版

giveコマンドを作る

更新日:

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の行と入れかえます。景品の種類を増やすときは、範囲を細かく分けて行を足します。

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

よくある質問

エメラルドではなくスコアのお金で回せますか?

3の1行目を消し、coins の代わりにお金のスコアを使います。最後の clear の代わりに scoreboard players remove でお金を減らします。

ガチャの結果を全員に見せられますか?

6のように tellraw @a を使えば、はずれも含めて全員に表示できます。

村人の取引とどちらがいいですか?

決まった物と交換するなら村人ショップ、運で景品が変わる楽しさを出すならガチャが向いています。

関連ページ

ラッキーブロックを作る壊すとランダムで当たりが出ます。ランダムな数を出すコマンド /random の使い方

当たりを決める数の出し方です。

村人ショップを作るコマンド

決まった物と交換するお店です。

scoreboardでポイント・お金を作る

お金で回すガチャに。

lootコマンドの使い方

ルートテーブルで景品を出す方法です。

コマンド辞典

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