Minecraft【基本装置】乱数を作る装置。

Java版1.20.2、統合版はv1.20.31で動作確認。
毎回違った結果を出力する、擬似乱数をコマンドで作成。
コマンドで擬似乱数を作り、出力結果を変える事で、サイコロやおみくじのような抽選装置を作ることが出来ます。乱数はゲームを面白くするのに重要で、欠かせない要素になります。敵の攻撃をパターンを変えたり、もらえる報酬を変えたりなど使い所は多いです。
乱数を作る方法はいくつかありますが、回転式と統合版、Java版専用の抽選装置紹介します。※Java版の1.20.2で「random」コマンドが追加されましたが、詳細不明なため保留。
◻︎装置の特徴
・回転式の乱数装置(Java版/統合版)。
・UUIDを使った乱数装置(Java版)。
・randomコマンド使った乱数装置(統合版)。
目次
1.【Java版/統合版】 回転式の抽選装置。
・防具立ての召喚。
・抽選装置(回転式)。
・角度の検知。
2.【Java版】専用。UUID式の抽選装置。
・スコアボード作成。
・抽選装置(UUID式)。
3.【統合版】専用。コマンド式の抽選装置。
・スコアボード作成。
・抽選装置(randomコマンド)。
【Java版/統合版】 回転式の抽選装置。
防具立てを回転し、向きを検知します。回転が速ければ、狙った角度で止めるのが難しいので、擬似乱数発生装置として使用することが出来ます。防具立ては綺麗に回転するので、見た目も面白くなります。機械的に同じタイミングで止めると、同じ結果になってしまうのがデメリットです。
スコアボード不要。ひとつの装置でクロック信号、乱数を作る装置としてマルチな使い方も出来ます。
防具立ての召喚。
【Java版/統合版】
◻︎チャットコマンドで入力。
/summon armor_stand ~ ~ ~ |
/防具立てを召喚。※帽子を被せておくと方向が分かりやすい。※統合版の場合は名前を付けて召喚。/summon armor_stand 防具立て ~~~
抽選装置(回転式)。
リピートブロックは1秒間で20回の信号(20ティック)を繰り返すので、防具立てのy軸を「18度」でテレポートすれば、1周約1秒で回転します。
テレポートする時、防具立ては回転するように動きますが、検知出来るのは「指定した角度」または「指定した角度を含む範囲」だけです。
例えば「0度」1箇所を検知するには、開始点を「0度」にして、防具立てのy軸を360度で割り切れる角度にします。
【Java版/統合版】
◻︎チャットコマンドに入力。
/execute at @e[name="防具立て"] run tp @e[name="防具立て"] ~ ~ ~ 0 ~ |
/防具立てを南に向きにします。※開始点を設定(角度の初期化)。
◻︎リピートブロック(動力が必要)にレバーを設置。
①execute at @e[name="防具立て"] run tp @e[name="防具立て"] ~ ~ ~ ~18 ~ |
①信号がある時、防具立てを「18度」回転します(回転角度の大きさ)。
角度の検知。
南が原点で「0度」。南西北は正の数「0度〜180度」。北東南は負の数「-180度〜0度」になります。※北は正の数と負の数が被っています。「180度、または-180度」のどちらでも検知出来ます。
◻︎角度表
東西南北の範囲角度。円を4等分して、抽選結果を4通り作る場合。
【Java版】
◻︎インパルス(動力が必要)からチェーンで繋ぐ(常に実行)。
①execute if entity @e[name="防具立て",y_rotation=0..90] run say 1等 ②execute if entity @e[name="防具立て",y_rotation=91..180] run say 2等 ③execute if entity @e[name="防具立て",y_rotation=-179..-90] run say 3等 ④execute if entity @e[name="防具立て",y_rotation=-89..-1] run say 4等 |
【統合版】
◻︎インパルス(動力が必要)からチェーンで繋ぐ(常に実行)。
①execute if entity @e[name="防具立て",rym=0,ry=90] run say 1等 ②execute if entity @e[name="防具立て",rym=91,ry=180] run say 2等 ③execute if entity @e[name="防具立て",rym=-179,ry=-90] run say 3等 ④execute if entity @e[name="防具立て",rym=-89,ry=-1] run say 4等 |
※「rym=」開始角度〜「ry=」終了角度の指定が必要。
①南から西。②西から北。③北から東。④東から南。
信号がある時、防具立ての向いている方向を検知して、コマンドを実行。方向の角度を決める時、検知が被らないように数字を1度ずらしておきます。※抽選数分のコマンドブロックが必要です。
開始点を「45度」にして、「90度」で回転すれば、1/4の抽選装置が出来ます。1等は30度、2等は60度など、角度は均等にしなくても自由に変更出来ます。抽選結果の数や角度に合わせて、回転角度の大きさを調整します。
【Java版】専用。UUID式の抽選装置。
エンティティのUUID番号を利用した、擬似乱数発生装置です。
reddit 参考サイト。
スコアボード作成。
【Java版】
◻︎チャットコマンドで入力。
/scoreboard objectives add count dummy /scoreboard objectives setdisplay sidebar count /scoreboard players set 範囲 count 3 |
/スコアボード「count」を作成。
/サイドバーに「count」を表示。※確認用
/「count」に範囲を作成。数字は好きな数字に変更。※「3」の場合「0〜3」の範囲で抽選。
抽選装置(UUID式)。
【Java版】
◻︎インパルス(動力が必要)からチェーンで繋ぐ(常に実行)。
①summon armor_stand ~ ~ ~ {CustomName:"\"ランダム\""} ②execute store result score 乱数 count run data get entity @e[name="ランダム",limit=1] UUID[0] 1 ③scoreboard players operation 乱数 count %= 範囲 count ④kill @e[name="ランダム"] |
◻︎インパルス(動力が必要)からチェーンで繋ぐ(常に実行)。
⑤execute if score 乱数 count matches 1..1 run say 1等 |
①防具立て「ランダム」を召喚。
②防具立て「ランダム」のUUIDを「count」の乱数に代入。
③乱数を範囲で割り算し余りを表示。
④防具立て「ランダム」を削除。
⑤スコアボード「乱数」から出力された数字を検知し、コマンドを実行。
抽選数分のコマンドブロックが必要です。
【統合版】専用。コマンド式の抽選装置。
統合版ではスコアボードで使って簡単に擬似乱数を作ることが出来ます。
スコアボード作成。
【統合版】
◻︎チャットコマンドで入力。
/scoreboard objectives add count dummy /scoreboard objectives setdisplay sidebar count |
/スコアボード「count」を作成。
/サイドバーに「count」を表示。※確認用
抽選装置(コマンド)。
◻︎インパルス(動力が必要)にボタンやレバーを設置。
①scoreboard players random 乱数 count 1 4 |
◻︎インパルス(動力が必要)からチェーンで繋ぐ(常に実行)。
②execute if score 乱数 count matches 1..1 run say 1等 |
①信号がある時「1〜4」の数字から、ひとつをスコアボード「乱数」に表示します。
②スコアボード「乱数」から出力された数字を検知し、コマンドを実行。抽選数分のコマンドブロックが必要です。