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

2024-04-09

Java版1.20.4、統合版はv1.20.72で動作確認。

毎回違った結果を出力する、擬似乱数をコマンドで作成。

コマンドで擬似乱数を作り、出力結果を変える事で、サイコロやおみくじのような抽選装置を作ることが出来ます。乱数はゲームを面白くするのに重要で、欠かせない要素になります。敵の攻撃をパターンを変えたり、もらえる報酬を変えたりなど使い所は多いです。

乱数を作る方法はいくつかありますが、コマンド・回転式、Java版専用の抽選装置紹介します。※Java版では、1.20.2で「random」コマンドが追加されました。

 

◻︎装置の特徴
・randomコマンド使った乱数装置。
・回転式の乱数装置。
・UUIDを使った乱数装置(Java版専用)。

 

目次

1.【Java版/統合版】コマンド式の抽選装置。
・スコアボード作成。
・抽選装置(randomコマンド)。

2.【Java版/統合版】 回転式の抽選装置。
・防具立ての召喚。
・抽選装置(回転式)。
・角度の検知。

3.【Java版】専用。UUID式の抽選装置。
・スコアボード作成。
・抽選装置(UUID式)。

 

【Java版/統合版】コマンド式の抽選装置。

「random」コマンドを使って、簡単に擬似乱数を作ることが出来ます。※Java版は1.20.2以上。

スコアボード作成。

◻︎チャットコマンドで入力。

/scoreboard objectives add count dummy
/scoreboard objectives setdisplay sidebar count

/スコアボード「count」を作成。
/サイドバーに「count」を表示。※確認用

 

抽選装置(コマンド)。

【Java版】

◻︎インパルス(動力が必要)にボタンやレバーを設置。

①execute store result score 乱数 count run random value 1..4

【統合版】

◻︎インパルス(動力が必要)にボタンやレバーを設置。

①scoreboard players random 乱数 count 1 4

【Java版/統合版】

◻︎インパルス(動力が必要)からチェーンで繋ぐ(常に実行)。

②execute if score 乱数 count matches 1..1 run say 1等

①信号がある時「1〜4」の数字から、ひとつをスコアボード「乱数」に表示します。
②スコアボード「乱数」から出力された数字を検知し、コマンドを実行。抽選数分のコマンドブロックが必要です。

 

【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番号を利用した、擬似乱数発生装置です。※1.20.1以前のバージョンでの使用。

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」の乱数に代入。
乱数範囲で割り算し余りを表示。
④防具立て「ランダム」を削除。

⑤スコアボード「乱数」から出力された数字を検知し、コマンドを実行。
抽選数分のコマンドブロックが必要です。