Hello there! We are conducting a survey to better understand the user experience in making a first edit. If you have ever made an edit on Gamepedia, please fill out the survey. Thank you!

名前空間ID

提供: Minecraft Wiki
移動先: 案内検索
Information icon.svg
この項目はJava Edition、およびBedrock Edition限定の要素です。
Grass Block.svg
このページには、Bedrock Editionの次回のアップデートに含まれるであろう要素に関する内容が含まれています。
これらの要素はBedrock Editionの開発版で登場していますが、これらの要素が含まれた正式なアップデートはまだ行われていません。
この記事の名前は単なる推測です。
正式な名称が発表された場合、名前が変更される可能性があります。

名前空間IDMinecraft内でビルトイン/ユーザー定義のゲームオブジェクトを宣言/区別し、曖昧さや衝突を避けるためのものである。

使用法[編集 | ソースを編集]

名前空間IDはブロックアイテムエンティティの種類レシピ関数進捗タグといった、バニラのMinecraftにおける様々なオブジェクトを参照する文字列である。

そのうちいくつかの例を示すと:

名前空間IDの正しい書式はnamespace:nameで、ここでは特定の文字しか使用できない。

使用できる文字[編集 | ソースを編集]

名前空間および名前に使用できる文字は以下のもののみである:

  • 0123456789 数字
  • abcdefghijklmnopqrstuvwxyz 英小文字
  • _ 下線
  • - ハイフン/マイナス
  • / スラッシュ
    • ディレクトリの区切りとしてのみ使用でき、名前空間そのものとしては使用できない。
  • . ピリオド
    • ファイル拡張子の区切りとしてのみ使用でき、名前空間そのものとしては使用できない。

lower_case_with_underscoresのように英小文字を下線で区切ったものが推奨される。

文字列への変換[編集 | ソースを編集]

名前空間と名前を:(コロン)で繋いだものが名前空間IDを表す文字列となる。

例:

名前空間 名前 文字列表記
minecraft diamond minecraft:diamond
foo bar.baz foo:bar.baz
minecraftwiki commands/minecraft_wiki minecraftwiki:commands/minecraft_wiki

タグの名前空間IDは、さらに名前空間の前に#を付ける。

例:

名前空間 名前 文字列表記
minecraft coal #minecraft:coal
bar baz #bar:baz
minecraftwiki listener/revert_vandalism #minecraftwiki:listener/revert_vandalism

文字列からの変換[編集 | ソースを編集]

全ての名前空間IDが文字列として表記できるわけではなく、文字列に変換できない名前空間IDも存在する。

以下のような制限がある:

  • 文字列は最大1つの:(コロン)文字を含むことができる
  • タグであれば、先頭に#が付く
  • その他の文字は全て使用できる文字でなければならない
  • :を含む場合、:より前に/.を含んではならない

:を含む場合、:より前(タグの#は除く)の部分が名前空間、:より後が名前となる。

:を含まない場合、minecraftが名前空間、(タグの#は除く)文字列全体が名前となる。

名前空間IDの書き方としては常に:を含む書式で書くことが推奨される。

その理由を以下に示す:

  • minecraft以外の名前空間を表わす唯一の方法だから
  • 混乱を避けるため:名前空間を省略して書くと、名前空間未指定のものとminecraft名前空間のものとが混同されてしまう
  • minecraft:villagerを誤ってminecraft/villager(これはminecraft:minecraft/villagerと解釈される)と書いてしまった時などに気付きやすくなる
  • /give/summon/setblockといったコマンドの引数であればゲーム側が自動的に名前空間IDに変換できるが、NBTによるターゲットセレクターについては(保存されているNBTと厳密に一致するかどうかチェックする必要があるので)ゲーム側での自動変換が不可能なため。

常に:を含む書式で書くことがなぜ良いかを示す例を以下に挙げる。

文字列 結果 解釈された名前空間 解釈された名前 ゲーム側での解釈
bar:code オブジェクト bar code bar:code
minecraft:zombie オブジェクト minecraft zombie minecraft:zombie
#my_datapack:player-updaters タグ my_datapack player-updaters #my_datapack:player-updaters
#minecraft:load タグ minecraft load #minecraft:load
diamond オブジェクト minecraft diamond minecraft:diamond
#tick タグ minecraft tick #minecraft:tick
foo/bar:coal 解釈失敗 /は使用できない
minecraft/villager オブジェクト minecraft minecraft/villager minecraft:minecraft/villager
mypack_recipe オブジェクト minecraft mypack_recipe minecraft:mypack_recipe
mymap:schrödingers_var 解釈失敗 öは使用できない
#my_pack:Capital 解釈失敗 Cは使用できない

リソースパック/データパック内でのコンテンツの配置[編集 | ソースを編集]

リソースパックおよびデータパックで提供されるオブジェクトの実体はファイルであり、名前空間IDによってオブジェクトに対応するファイルを特定することが可能になる。

オブジェクトの種類やそれが属するパックの種類によってその場所は異なるが、従うべきパターンはある。一般に、場所はpack_type/namespace/object_type/name.suffixのようになる。ここで、すべての/(スラッシュ)記号(object_typenameの一部でも構わない)は、オペレーティングシステム毎のディレクトリ区切り文字に置き換えられる。

注: リソースパックにはGUIテクスチャのように名前空間ID付きのオブジェクトにする必要のない要素もある。

配置したいコンテンツの種類が分かれば対応するpack_typeobject_typesuffixも分かる。それに従い最終的なファイルの配置先を決めればよい。

名前空間[編集 | ソースを編集]

Dinnerbone-twitter.png これは新しい概念ではないのですが、「名前空間」とは何かということは改めて説明が必要でしょう。ゲーム内のほとんどのものは名前空間を持っているので、我々がsomethingを追加し、mod(またはmapとかそれに類するもの)がsomethingを追加する場合、それらは両方とも異なるsomethingになります。例えばルートテーブルなど、何か名前を付けるときはいつでも、対応する名前空間も提供することになります。名前空間を指定しないと、デフォルトでminecraftになります。これは、somethingminecraft:somethingが同じものであることを意味します。
Dinnerbone による namespace[1]

名前空間はコンテンツの領域であり、潜在的なコンテンツの競合や、同じ名前のオブジェクトの意図しない上書きを防ぐためのものである。

例えば、2つのデータパックが2つのミニゲームをMinecraftに追加する — いずれもstartという名前の関数を持つ — とき、名前空間が無いと、これら2つの関数はクラッシュし、ミニゲームも壊れてしまうだろう。それぞれ異なる名前空間minigame_oneminigame_twoを指定していれば、これらの関数はそれぞれminigame_one:startおよびminigame_two:startとなり、競合は起こらない。

名前空間のカスタム[編集 | ソースを編集]

名前空間は、他のプロジェクトやコンテンツ(例えばデータパックリソースパックmod、データパック/リソースパックを含むマップなど)とは異なるものである必要がある。

衝突を防ぐために、名前空間はできるだけ重複しないようなものにしておく必要がある。

  • alphabet soupを避ける[訳註 1]。例えば、"nuclear craft"というプロジェクトの名前空間をncと略したものにしない。これでは曖昧になってしまう。
  • 曖昧すぎる言葉は避ける。battle_royaleだと調査が困難だが、player_name_battle_royaleとすれば困難さを減らせるであろう。

どちらの場合でも、これらの不適切に選択された名前空間によりプロジェクトが使われづらくなり、コンテンツが増えたときのデバッグが困難になる。

  1. なんでもかんでも略語にしない。

minecraft名前空間[編集 | ソースを編集]

Minecraftminecraft名前空間を予約している。名前空間を指定しなかった場合、minecraftを指定したものとして扱われる。minecraft名前空間は、Minecraftの既存データを上書き/変更する必要がある場合(例えば、#minecraft:load関数タグ関数を追加したい場合)にのみ使用されるべきである。

歴史[編集 | ソースを編集]

Java Edition
??minecraftの接頭辞とともに名前空間IDを追加した。
1.7.2 ?コマンドで数値IDに加えて名前IDも受け入れるようになった。
1.11 16w32a 名前空間IDに使用できる文字の制限が加わった。
名前空間IDに英大文字が使えなくなった。
1.13 17w47a 平坦化により、名前IDのみを受け入れるようになった。
数値IDは削除された。
開発中のBedrock Edition
1.12.0 beta 1.12.0.2 Add-onによるアイテムの追加をサポートするため、minecraftの接頭辞とともに名前空間IDを追加した。

関連項目[編集 | ソースを編集]

脚注[編集 | ソースを編集]

  1. "Minecraft Snapshot 17w43a" – Minecraft.net

外部リンク[編集 | ソースを編集]