更新日:
1. 準備(最初に1回だけ)
/scoreboard objectives add lucky_break minecraft.mined:minecraft.sponge
/scoreboard objectives add lucky dummy
/give @a minecraft:sponge 16
lucky_break はスポンジを壊すと1増えるスコアです。lucky には抽選で出た数を入れます。スポンジはふだんの遊びではあまり使わないので、ラッキーブロックの代わりにぴったりです。
2. 壊した人に抽選する
# 反復・常時実行
execute as @a[scores={lucky_break=1..}] store result score @s lucky run random value 1..4
スポンジを壊した人だけに、1〜4のどれかの数を入れます。execute store のしくみは execute storeの使い方、/random は ランダムな数を出すコマンド にまとめています。
3. 出た数で中身を分ける
# チェーン・常時実行(ここから下は全部チェーン)
execute as @a[scores={lucky_break=1..,lucky=1}] run give @s minecraft:diamond 5
execute as @a[scores={lucky_break=1..,lucky=2}] at @s run summon minecraft:zombie ~2 ~ ~
execute as @a[scores={lucky_break=1..,lucky=3}] at @s run summon minecraft:tnt ~ ~1 ~ {fuse:60}
execute as @a[scores={lucky_break=1..,lucky=4}] run effect give @s minecraft:speed 30 1
1はダイヤ5個、2はゾンビ、3は3秒後に爆発するTNT、4は移動速度アップです。TNTの時間の変え方は TNTをコマンドで出す方法 を見てください。
4. スポンジを落とさない・スコアを戻す
execute as @e[type=item] if items entity @s contents minecraft:sponge run kill @s
scoreboard players set @a[scores={lucky_break=1..}] lucky_break 0
1行目で、壊したときに落ちたスポンジを消します。これがないと同じスポンジを何度も置き直せてしまいます。最後の行でスコアを0に戻すので、1回壊すと1回だけ抽選されます。
5. 当たりを増やす
execute as @a[scores={lucky_break=1..}] store result score @s lucky run random value 1..10
2の行の数を1..10にして、5〜10の行を足せば中身を10種類にできます。同じ中身の行を2つ作ると、その中身が出やすくなります。
うまくいかないときの確認ポイント
- 何も起きない:反復ブロックが一番前にあり、残りがチェーンになっているか確認します。チェーンの最後がスコアを0に戻す行です。
- アイテムのスポンジも消える:地面に落ちているスポンジは全部消えます。ほかでスポンジを使うワールドでは、別のブロックに変えます。
- 統合版で使いたい:統合版には壊した数のスコアと /random がないので、この方法は使えません。
よくある質問
スポンジ以外のブロックにできますか?
できます。minecraft.mined:minecraft.sponge と if items の sponge を、使いたいブロックのIDに変えます。
1.20.4以前でも作れますか?
/random は1.20.2から、if items は1.20.5からです。古い版では使えない行があります。
全員に同じ結果を出せますか?
抽選を #lucky のような仮の名前で1回だけ行い、その数で全員に配ります。