Minecraft【テクニック】中身が変わるチェストを、ランダム配置。3-3

Java版1.21.8-、統合版v1.21.101-で動作確認。
出現位置や中身が変わる、チェストを作成。
中身が変わるチェストを、ランダム配置。
ゲームを面白くする要素として、ランダムチェストは欠かせません。中身をランダムにするのは簡単ですが、チェストの位置をプレイするたび変更するには少し工夫が必要です。座標やエンティティとコマンドを使った設置例を紹介していきます。
チェストの中身を変えるのに、ルートテーブルを使っています。ルートテーブルの作り方や導入方法は、関連記事を参考にしてください。
- 詳しくはこちら→ 【テクニック】ルートテーブルで戦利品リストを作ろう。3-2
ランダム配置
チェストをランダムな位置に置くには、基準となる座標やエンティティが必要です。さらにコマンドを使って位置を絞り込みます。エンティティとコマンドの組み合わせで、配置位置の幅も広がります。うまくランダム感を作れるかが腕の見せ所となります。
基準位置。
基準位置に使えそうなエンティティを一覧にしました。コマンドと組み合わせて使用します。
◻︎エンティティ一覧
| 基準 | 詳細 |
| 座標 | あらかじめエンティティを召喚して使用。 |
| 防具立て | 音も静かで透明に出来るので、使いやすい。 |
| 友好モブ | 動くので面白い位置に置けるかも!?※音消しが必要。 |
| 敵対モブ | 座標不要。対象が見つからないと置けない。 |
| プレイヤー | 座標不要。使用難易度は高め。 |
ランダムコマンド。
主に2種類のコマンドを使用。併用して使う場合もあります。①「決まった位置」から選ぶ場合と、②「新しく位置」を作るコマンド。※「宝箱」は基準。名前を変更した防具立てやエンティティ。
spreadplayersの詳細は、Minecraft wikiを確認。
【Java版】
◻︎コマンド 例
| ①execute at @e[name="宝箱",sort=random,limit=1] run setblock ~ ~ ~ chest ②spreadplayers ~ ~ 0 1 under -60 false @e[name="宝箱"] |
チェストの向き/[facing=<方角>]
高さ(y座標)の上限/「under」後ろに数値を入力。
【統合版】
◻︎コマンド 例
| ①execute at @r[name="宝箱",c=1] run setblock ~~~ chest ②spreadplayers ~~ 0 1 @e[name="宝箱"] -60 |
チェストの向き/["minecraft:cardinal_direction"="<方角>"]
高さ(y座標)の上限/セレクター後ろに数値を入力。
①複数ある防具立てやエンティティ「宝箱」の中から、ランダムに1つを選択。
②座標やエンティティを基準に、指定した範囲に「宝箱」を散開。
※「spreadplayers」は。正方形のエリアで散開するので、長方形のエリアでは工夫が必要です。 チェストの向きの指定が面倒な場合は、シェルカーボックスや樽がおすすめ。
設置例
基準の位置とコマンドの組み合わせを使用した、設置例を紹介します。
座標を使用。
あらかじめ設置した防具立てを基準に、ランダムコマンドで1箇所を選択。ゲーム開始時のボーナスチェストに使えます。同じ座標でも建物を変えたり、スタート位置を変更すればランダム感がアップします。

コマンドを使いやすくするため、防具立てを設置。
【Java版】
◻︎コマンド 例
| ①execute at @e[name="宝箱",sort=random,limit=1] run setblock ~ ~ ~ chest |
【統合版】
◻︎コマンド 例
| ①execute at @r[type=armor_stand,name="宝箱",c=1] run setblock ~~~ chest |
①「宝箱」からランダムに1つを選び、チェストを設置。※統合版は、エンティティ「type」も指定。
防具立てを散開。
防具立てを散開し、素早くランダムな位置に設置出来るので、扱いやすい方法になります。他の方法との組み合わせもしやすい。

座標、またはエンティティなど基準点が必要。
【Java版】
◻︎コマンド 例
| ①spreadplayers ~ ~ 0 3 under -60 false @e[name="宝箱"] |
①「~ ~」はxyの座標。基準位置から「宝箱」を範囲3ブロックで散開。高さの上限を「-60」にした場合。
【統合版】
◻︎コマンド 例
| ①spreadplayers ~~ 0 3 @e[name="宝箱"] -60 |
①「~~」はxyの座標。基準位置から「宝箱」を範囲3ブロックで散開。高さの上限を「-60」にした場合。
敵対モブを使用。
PVEのボーナスチェストや、宝探しゲームなどに使用出来ます。座標も不要で使い勝手は良いですが、対象モブが必要です。※距離によるモブの消滅も注意。

範囲が広すぎると見つけられないかも!?
【Java版】
◻︎コマンド 例
| ①execute as @p at @e[type=husk,sort=random,limit=1,distance=..30] run setblock ~ ~ ~ chest |
【統合版】
◻︎コマンド 例
| ①execute as @p at @r[type=husk,c=1,r=30] run setblock ~~~ chest |
①対象モブからランダムに1体を選び、チェストを設置。(プレイヤーから30ブロック内)
プレイヤーと友好モブを使用。
プレイヤー基準で、友好モブを透明にして召喚。モブは動き回るので、時間差を付けてチェストを設置すれば、どこに出現するか分からなくなります。他の方法との組み合わせもしやすい。※鳴き声も消す必要があります。

統合版は「stopsound」しか使えないので、難易度が高め。
【Java版】
◻︎コマンド 例
| ①execute at @p run summon chicken ~ ~ ~ {Invisible:1b,Silent:1b} ②execute as @p at @e[type=chicken,sort=random,limit=1,distance=..10] run setblock ~ ~ ~ chest |
①透明で音を出さないチキンを召喚。
②対象モブからランダムに1体を選び、チェストを設置。(プレイヤーから10ブロック内)
【統合版】
◻︎コマンド 例
| ①execute at @p run summon chicken ~~~ ②execute as @p at @r[type=chicken,c=1,r=10] run setblock ~~~ chest ③stopsound @a ④effect at @e[type=chicken] 1 0 true |
①チキンを召喚。
②対象モブからランダムに1体を選び、チェストを設置。(プレイヤーから10ブロック内)
③音を消す。※チキンだけの場合は、サウンドを指定。
④チキンを透明化。
呼び出し
位置が決まったら、召喚したチェストを「loot」で置き換えます。Java版は「setblock」で直接ルートテーブルを呼び出せます。※統合版は置き換えのみ。

アイテム3個のルートテーブルを「container.12」で置き換え。※「setblock」の場合は、アイテムがランダムに散らばります。
チェストの置き換え。
【Java版】
◻︎コマンド 例
| ①execute at @e[name="宝箱"] run setblock ~ ~ ~ chest{LootTable:"itaiwani:item"} ②execute at @e[name="宝箱"] run loot replace block ~ ~ ~ container.13 loot itaiwani:item |
①「宝箱」を基準に、名前空間とファイル名でルートテーブルを呼び出します。
②チェストの置き換えも出来ます。「container」は、チェスト内の位置を指定。
【統合版】
◻︎コマンド 例
| ①execute at @e[name="宝箱",c=1] run loot replace block ~~~ slot.container 13 loot item |
①「宝箱」を基準に、チェストの中身を指定のルートテーブルに置き換えます。
※「container」は、チェスト内の位置を指定。