スポンサーリンク
まえがき
おみくじを例として解説します。これは「大吉」「吉」「凶」の3パターンですが、やろうと思えば何百何千通りでも作れます。
仕組み自体は至ってシンプルです。
ワールド配布
よく分からん人は、とりあえず現物を見ながら解説読むとイイかも。
ファイル名 | [サンプル]ランダムワールド |
バージョン | 1.12.2 |
製作者 | kazz(@kzkzkazz) |
プレイ人数 | 1名推奨(マルチは動作未確認) |
公開日 | 17/11/08 |
最終更新 | 17/11/08 |

スポンサーリンク
コマンド解説
/summon armor_stand ~ ~1 ~ {Tags:["randLot"]} |
のちに使うアーマースタンドの召喚コマンド。
/execute @r[type=armor_stand,tag=randLot] ~ ~ ~ setblock ~ ~-1 ~1 redstone_block |
このコマンドは、ランダム抽選を実現するのに不可欠なコマンドです。
このシステムの肝となるのは「@r」というセレクター(コマンドを実行する対象)です。「@p」はよく使われますが、「@r」と「@p」では何が違うのでしょうか?
@p:最寄りのプレイヤー1名
@r:ランダムでエンティティを1名抽選
既にこの時点でランダム要素がありますね。
あらかじめ用意した複数のアーマースタンドから「@r」を使って1つ抽選し、そのアーマースタンドの足元にコマンドでレッドストーンブロックを設置して、コマブロを実行。といった流れになります。
ですが「@r」だと、全プレイヤーが対象となります。そこで、セレクター引数というものを使って、対象を明確に指定してあげます。
@r[type=armor_stand,tag=randLot] |
カッコ内にカンマ区切りで条件を書き込みます。(詳細リンク:wiki-コマンド-セレクター)
これはどういう意味かというと
@r(ランダムで1つ)
[
type=armor_stand,(対象はアーマースタンド)
tag=randLot ("randLot"というタグを所有)
]
日本語文に直すと「"randLot"タグを保有するアーマースタンドをランダムで1つ対象」となります。
これをexecuteコマンドで実行し、対象の足元にsetblockコマンドでレッドストーンブロックを設置。その動力を使い、tellrawコマンドをコマブロを実行するだけです。
execute:指定したエンティティにコマンドを実行させるコマンド。プレイヤー以外に相対座標が使えるので便利。
setblock:指定した座標に指定したブロックを設置するコマンド。
tellraw:チャット欄にメッセージを表示。
※コマンドの使用方法は「/execute」などとチャット入力欄に打ち込んで実行すればざっくりと表示されます。
その際に設置したレッドストーンブロックも一緒に消去(setblockでairに置換)すれば、何度でも繰り返し使えるようになります。
スポンサーリンク
まとめると
①あらかじめrandLotタグを所有したアーマースタンドをパターン分準備。
②アクションと同時にアーマースタンドをランダムで1つ抽選。
③相対座標でアマスタの付近にレッドストーンブロックを設置。
④そのレッドストーンブロックを原動に、コマンドを実行。
⑤コマンド実行と同時にさきほど設置したレッドストーンブロックを空気ブロックに置換。
①~⑤繰り返し。
まとめ
こちらの仕組みはかなり汎用性が高いものになります。ランダム要素はゲームにおいては重要なものとなりますので、覚えておいて損はないでしょう。
誤字や脱字、内容の不備にお気付きの方はコメントなどで教えてくれると助かりますm(_ _)m
分からない所の質問などはツイッターのDMまでお越しください。↓
スポンサーリンク
コメント
ワールドってどうやって読み込めばいいですか?
ワー
1.13からexcuteコマンドの仕様変更によりアーマースタンドを用いたランダム抽選コマンドを一部変更する必要があります。
旧:/execute @r[type=armor_stand,tag=randLot] ~ ~ ~ setblock ~ ~-1 ~1 redstone_block
新:/execute positioned as @e[sort=random,tag=randLot,limit=1] run setblock ~ ~-1 ~-1 redstone_block