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

【マイクラ】カスタムストラクチャーを地図に表示させる

【マイクラ】カスタムストラクチャーを地図に表示させる

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

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

なつめ

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

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

本記事の内容
  • 地図でカスタムストラクチャーを探せるようにする

今回はカスタムストラクチャーを地図に表記させる方法について解説していきます。

地図にアイコンを表示させるためにリソースパックの作成が必要なほか、カスタムストラクチャーを認識させるためにデータパックも必要です。

なんだかこの時点で複雑なことをしそうだと分かりますが、1つ1つやっていけば難しくないのでぜひ挑戦してみてください!

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

今回紹介したデータパック、リソースパックはgithubにサンプルをアップロードしました。
以下のリンクから該当ページへ飛べます。
https://github.com/Natsume717/custom-structure_map

地図でカスタムストラクチャーを探せるようにする

地図を使ってカスタムストラクチャーを探せるようにするには、データパックやリソースパックを作成する必要があります。

具体的にはデータパックでどのストラクチャーを地図に表すのかを指示し、リソースパックでアイコンを変更します。

それでは、データパックから見ていきましょう。

データパックを作成する

まずはデータパックを作成します。

以下のような構造にすればOKです。

  • datapack本体
    • data
      • フォルダ
        (今回はntmと命名したとする)
        • structures
          • 各nbtファイル
        • tags
          • worldgen
            • structure
              • jsonファイル
                (今回はoriginal.jsonとする)
        • item_modifiers
          • jsonファイル
            (今回はtest.jsonとする)
        • worldgen
          • template_pool
            • jsonファイル
          • structure
            • jsonファイル
              (今回はdungeon01と命名したとする)
          • structure_set
            • jsonファイル
    • pack.mcmeta

pack.mcmetaと○○ファイルと記載されていないもの以外は全てフォルダになります。

pack.mcmetaの中身はこちら。

{
    "pack": {
      "pack_format": 26,
      "description": "説明文"
    }
}

また、今回弄るファイルは橙文字で記載しました。
それ以外はカスタムストラクチャーについてまとめているページを参考にしてください。

【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】

tagsに格納するjsonファイルを作成する

まずはtagsに格納するjsonファイルを作ります。

これは地図に表記させたい建造物を指示して、後程作るitem_modifiersのjsonファイルにて指定するファイルになります。

というわけで、中身はこちら。

{
    "values": [
      "ntm:dungeon01"
    ]
  }

橙文字の部分は各自カスタムストラクチャーに指定した名前を指示しましょう。
structureに格納されているものを指示する形ですね。

これでtagsに関するファイルはOKです。
次はitem_modifiers周りの操作を行っていきます。

item_modifiersに格納するjsonファイルを作成する

item_modifiersに格納するjsonファイルでは、地図に表記する際の情報を記述していきます。

簡単に言ってしまえば、どの建造物をどのようなアイコンで表示させるのかなどといったことですね。

さっそく中身を見てみましょう。

[
    {
      "function": "minecraft:exploration_map",
      "destination": "ntm:original",
      "zoom": 2,
      "search_radius": 1024,
      "skip_existing_chunks": true,
      "decoration":"jungle_temple"
    }
  ]
  

tagsの時とは違い、複数の項目があります。

項目名説明
function今回は地図に表記することが決まっているので、”minecraft:exploration_map”を指示します。
destinationタグを指示します。
つまりtagsに作ったカスタムストラクチャーを指定したタグを指示することで、地図に表記される建造物をカスタムストラクチャーにします。
zoom地図の拡大率。
デフォルトでは2となっています。
search_radius建造物を探す範囲。
デフォルトでは50となっています。
そこそこの数字を指示すれば問題ない項目です。
skip_existing_chunks読み込み済みのチャンクを無視するかどうか。
trueにすると無視するので、読み込んでないチャンクで最も近い建造物を探します。
falseは読み込んでいるチャンクからも探すので、近いかどうかだけで判断します。
decoration地図に表示させる際、どのアイコンを使うかです。
詳しくはMinecraft wikiを参考にしてください。
今回はver.1.20.4のサバイバルで使用されることのないjungle_templeを指示して、jungle_templeに対応しているアイコンをオリジナルのアイコンに変更します。

これらを正しく入力すれば、データパックでの作業は終了です。
また、ワールドを生成する際にカスタムストラクチャーを生成させる必要があるため、ワールド作成時にデータパックを適用する必要があります。

リソースパックを作成する

データパックでの作業が済んだら、次はリソースパックを作成します。

リソースパックでは、map_icons.pngという画像ファイルを編集して適切な位置に格納します。

map_icons.pngは7-zipなどでMinecraftの中から抜き取る必要があります。

リソースパックの構成はこちら。

  • resourcepack本体
    • assets
      • minecraft
        • textures
          • map
            • map_icons.png
    • pack.mcmeta

データパック同様、pack.mcmeta、map_icons.png以外は全てフォルダになります。

pack.mcmetaは以下の通りに記述します。

{
  "pack": {
    "pack_format": 22,
    "description": "説明文"
  }
}

肝心のmap_icons.pngですが、以下のような画像です。
(画像編集ソフトで開いているため、透過部分を示すチェックボード柄が入っています)

一部未実装のものもありますが、地図に表示されるアイコンだけが並べられています。
見たことのあるものが多いはずです。

この画像の中で、decorationで指定したIDと対応しているアイコンを編集します。

編集する際はAsepriteなどのドット単位で画像を編集できるソフトを使えばOKです。

今回の例の場合jungle_templeを指示したので、点線で囲われている範囲でアイコンを作成します。
(1アイコンにつき8×8ドット割り当てられています)

実際に作ってみたのがこちら。

編集した画像をmap_icons.pngとして、リソースパックの適切な位置に格納すればOKです。

作成を終えたら忘れずに適用しましょう。

ワールドに入った後にやること

データパック、リソースパックを作成し、データパックはワールド作成時に適用させます。
リソースパックはどのタイミングで適用しても構いませんが、ワールド生成完了後には適用するようにしましょう。

これらの作業が済んだら、いよいよ地図を取り出してカスタムストラクチャーを探してみます。

まずは白紙の地図を取り出し、それに対してitemコマンドを実行します。

/give @p minecraft:map 1
/item modify entity @s weapon.mainhand ntm:test

1つ目はgiveコマンドで白紙の地図を入手するだけなので、詳しい説明はしません。

2つ目のコマンドでは、コマンドの実行者がメインハンドに持っているアイテムに対してntm:testというitem_modisersを適用させるコマンドです。

つまり、ntm:testの部分を各自item_modifiersに格納したjsonファイルを指示するようにすれば、地図に適用させたいと設定したものを適用させることができます。

”フォルダ名:item_modifiersに格納したjsonファイル”という形で指示します。

手動でコマンドを打ちたくない場合

手動で白紙の地図を用意してitemコマンドを入力するのはスマートではないという場合、ルートテーブルを利用する方法があります。

ルートテーブルの作成方法は割愛しますが、以下のような内容で記述することでlootコマンドなどで入手することが可能となります。

{
    "type": "minecraft:chest",
    "pools": [
      {
        "rolls": 1,
        "bonus_rolls": 1,
        "entries": [
          {
            "type": "minecraft:item",
            "name": "minecraft:map",
            "functions": [
              {
                "function": "minecraft:exploration_map",
                "destination": "ntm:original",
                "decoration": "jungle_temple",
                "zoom": 2,
                "search_radius": 1024,
                "skip_existing_chunks": true
              }
            ]
          }
        ]
      }
    ]
  }
  

橙文字の部分はitem_modifiersで指示しているものと全て同じです。

このルートテーブルを進捗などと組み合わせて「○○したら手に入る」というような形にすれば、手動でコマンドを打つ必要がなくなります。

まとめ

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

ポイント
  • カスタムストラクチャーを地図に表記させるには、データパック、リソースパックの作成が必要。
  • コマンドを打って入手したくない場合は、ルートテーブルなどを活用する必要がある。

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

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