この記事では、Minecraft Java Edition(バージョン1.20.2)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
この記事では、こんな疑問を解決します!
- チェストの中身を決めるにはルートテーブルを適用させる
今回はカスタムストラクチャー(自作建造物)に含まれるチェストの中身をランダムに決定させる方法について解説します。
ランダムな内容を扱うにはルートテーブルが適任で、今回も例に漏れずルートテーブルを扱っていきます。
さっそく見ていきましょう。
カスタムストラクチャーについては以下の記事を参考に作ることができます。
チェストの中身を決めるにはルートテーブルを適用させる

ストラクチャーブロックを用いて保存する前に、チェストに対してルートテーブルを適用させれば、生成時にランダムに中身を決定することができます。
呼び出した時点ではまだチェストの内容は決まっておらず、開けた瞬間にルートテーブルの内容を元にアイテムを補充します。
ルートテーブルを適用させるためにdataコマンドを使うのですが、まずはルートテーブルを用意しなければなりません。
以下のサイトで生成するのがおすすめです。
また、データパックのファイル構成は以下のようになります。
- datapack本体
- data
- フォルダ
- loot_tables
- jsonファイル
- structures
- 各nbtファイル
- worldgen
- template_pool
- jsonファイル
- structure
- jsonファイル
- structure_set
- jsonファイル
- template_pool
- loot_tables
- フォルダ
- pack.mcmeta
- data
フォルダとルートテーブルの本体であるjsonファイルを追加するだけなので、難しいことはないはず。
注意点として、ストラクチャーを保存するときに使用しているワールドに入っているデータパックと、カスタムストラクチャーとして利用するデータパックは、ルートテーブルのファイル構造をどちらも同じにしておかなくてはなりません。
異なる場合は、この後実行するコマンドで指定するファイルの位置を後者のデータパックに合わせる必要があります。
ルートテーブルを作成出来たら、チェストに対してdataコマンドを用いてルートテーブルを適用させていきます。
以下のコマンドを使います。
/data merge block 座標(XYZ) {LootTable:"ntm:chest01"}
座標は、チェストが存在する座標でOKです。
橙文字の部分は、loot_tablesを包んでいるフォルダとルートテーブルの名前を組み合わせます。
上記の場合は、ntmというフォルダにloot_tablesが入っており、chest01という名前のjsonファイルを参照しています。
先ほど注意書きしたのは、jsonファイルの名前が異なる場合などといった差異が存在するとルートテーブルを参照することができなくなるからですね。
上記のコマンドを実行した後に、該当するチェストを開封すると中身が固定されてしまいます。
絶対に開けずに保存しましょう。
開けてしまった場合は中身を空にして再度コマンドを実行します。
複数のルートテーブルを作成すれば、お宝チェストと通常のチェストなんて分け方もできます。
また、カスタムストラクチャーを生成するためのデータパックに該当するルートテーブルがない場合は、アイテムが補充されません。
まとめ
というわけで、今回のまとめです。
今回はカスタムストラクチャー(自作建造物)のチェストの中身をランダムに決める方法について解説しました。
今回はチェストでしたが、樽などのアイテムでも同様のことができますよ。
- ルートテーブルを保存前に適用させ、開けないまま保存することでストラクチャーとして呼び出した時にそのルートテーブルを適用してランダムにアイテムを補充できる。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!