マルチプレイなら『シン・VPS』がおすすめ!

【マイクラ】set_contentsで中身を挿入する【item_modifier】

【マイクラ】set_contentsで中身を挿入する【item_modifier】

この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

こんにちは!
マインクラフターのなつめです。

なつめ

2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!

この記事では、こんな疑問を解決します!

本記事の内容
  • set_contentsで中身を挿入する
  • 実例

set_contentsはインベントリを持つアイテムに対して、中身を挿入することが出来るitem_modifierです。

要するに、中身が入っているチェストなどを簡単に入手できるようになるわけですね。

item_modifierとして使う場合とルートテーブルに組み込む場合の2通りを紹介しているので、ぜひ参考にしてください。

それでは、さっそく見ていきましょう!

本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。

set_contentsで中身を挿入する

set_contentsを適用させることで、指示しておいたアイテムをチェストなどのインベントリを持つアイテムに格納させることが出来ます。

ダイヤモンドを指示しておけば、中身のないチェストからダイヤモンドが入ったチェストに変更させられるといった具合ですね。

格納させたいアイテムそのものを指示することもできますが、ルートテーブルを指示することもできるので、ランダムなアイテムを格納させることも出来ます。

詳しくは次項で見ていきましょう。

実例

今回は特定のアイテムを格納するよう指示した場合と、特定のルートテーブルを指示した場合の2通りを見ていきます。

というわけで、まずはデータパックの構造からです。

  • データパック本体
    • data
      • minecraft
        • loot_tables
          • entities
            • cod.json
              (タラのドロップアイテムを上書きする形になります)
      • フォルダー
        (sampleと命名したとします)
        • loot_tables
          • jsonファイル
            (test.jsonと命名したとします)
        • item_modifiers
          • jsonファイル
            (test.jsonと命名したとします)
        • pack.mcmeta

前者はitem_modifierとして作成し、後者はルートテーブルに組み込んだ形にしました。

特定のアイテムを格納するよう指示した場合

特定のアイテムを格納するよう指示しつつitem_modifierとして作成する場合は、以下のように記述します。

{
  "function": "minecraft:set_contents",
  "type": "minecraft:chest",
  "entries": [
    {
      "type": "minecraft:item",
      "name": "minecraft:diamond"
    }
  ]
}

記載されているそれぞれの項目の説明は以下の通りです。

項目名
typeBlockEntityTag.idの記述をどれにするか。
適切なものを記述する必要がある。
type(entries内のもの)格納するものの種類を選択する。
選択したものに応じて、各種項目を適切に入力しなければならない。
itemならアイテムID、loot_tableならルートテーブルを記述するなど。
nametype(entries内)で選択したものに応じて、適切なものを記述する。
選択したものによっては、複数記述しても問題ない。

ほかにも様々な項目を設定できますが、まずは上記の3つを覚えておきましょう。
最低限必要なものになります。

作成後は、itemコマンドで手持ちのアイテムに対してset_contentsを適用させればOKです。

ルートテーブルを参照する場合

ルートテーブルを参照する場合は、以下のような記述になります。
また、先ほどの例とは違ってルートテーブルに組み込んだため、やや複雑になっています。

{
  "type": "minecraft:entity",
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:chest",
          "functions": [
            {
              "function": "minecraft:set_contents",
              "type": "minecraft:chest",
              "entries": [
                {
                  "type": "minecraft:loot_table",
                  "name": "sample:test"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

基本的にはitem_modifierとして作成したものと同じです。
異なる点としては、上記の例の場合sample:testというルートテーブルを介したうえで、アイテムを格納させてます。

タラのドロップアイテムを上書きしているので、タラを倒すたびにsample:testからランダムに選ばれるといった感じですね。

まとめ

というわけで、今回のまとめです。

ポイント
  • set_contentsを適用することで、インベントリを持つアイテムに対して中身を付与することが出来ます。

この記事は以上になります。

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】