見出し画像

【コマンド】疑似乱数発生器を作る - Minecraft Java Edition

何かをマイクラのコマンドで作っているときにランダムが必要になることがよくあります。

統合版ではスコアボードにランダム機能があるため乱数発生器は作れてしまうわけですが、Java Editionにはその機能がないため作れません。

しかし、Java Editionにもランダムなものは存在します。
今回はそれらを使って乱数を作っていきます。


ランダムなもの

Java Editionに存在するランダムな値をいくつか紹介します。

UUID

エンティティのUUIDはランダムな値で構成されています。範囲も広く[ -2^31 ~ 2^31 -1]もあります。実は今回はこれを利用して疑似乱数発生器を作ります。


@r

ターゲットセレクターの一つの@rです。コマンドで影響を与えるプレイヤーをランダムに選ぶことができます。


/spreadplayer

プレイヤーを指定した範囲内でランダムにテレポートさせるコマンドです。



疑似乱数発生器を作る

上記で紹介したUUIDを用いて疑似乱数発生器を作ります。

疑似乱数発生器の仕組み

パーティクルのUUIDを利用して乱数を作成します。まずパーティクルを表示してそのUUIDを取得します。ただUUIDの範囲が大きすぎるため範囲を限定して乱数自体は完成。その後パーティクルを削除することで全体の処理は終了です。

/summon area_effect_cloud ~ ~ ~ {Tags:["random_uuid"]} // 1
/execute store result score kake26s random run data get entity @e[type=area_effect_cloud,tag=random_uuid,limit=1] UUID[0] 1 // 2
/scoreboard players operation kake26s random %= random range // 3
/kill @e[type=area_effect_cloud,tag=random_uuid] // 4
/tellraw @a[distance=..20] {"score":{"name":"kake26s","objective":"random"}} // 5

ランダムな値を格納する、剰余を行うためスコアボード「range」「random」を作成しています。「range」のrandomの値が乱数の範囲になります。今回は10に設定しています。⑤では作成された乱数を表示しています。

実際に実行してみると..


参考文献


この記事が気に入ったらサポートをしてみませんか?