名前空間ID(英:Namespaced ID)はMinecraft内でビルトイン/ユーザー定義のゲームオブジェクトを宣言/区別し、曖昧さや衝突を避けるためのものである。
使用法[]
名前空間IDはブロック、アイテム、エンティティの種類、レシピ、関数、進捗、タグといった、バニラのMinecraftにおける様々なオブジェクトを参照する文字列である。
そのうちいくつかの例を示すと:
- コマンドのターゲットセレクターにおける
type引数。 /functionコマンドのfunction引数。- エンティティのNBTルートタグにおける id。
/advancementにおける進捗の指定。- アイテムのNBTにおける id。
名前空間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も存在する。
以下のような制限がある:
: を含む場合、: より前(タグの # は除く)の部分が名前空間、: より後が名前となる。
: を含まない場合、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_type や name の一部でも構わない)は、オペレーティングシステム毎のディレクトリ区切り文字に置き換えられる。
オブジェクトの種類と pack_type、object_type、suffix との対応表
| オブジェクトの種類 | パックの種類 | pack_type |
object_type |
suffix
|
|---|---|---|---|---|
| ブロック状態 | リソースパック | assets |
blockstates |
json
|
| モデル | リソースパック | assets |
models |
json
|
| パーティクル | リソースパック | assets |
particles |
json
|
| テクスチャ | リソースパック | assets |
textures |
png
|
| 進捗 | データパック | data |
advancements |
json
|
| 関数 | データパック | data |
functions |
mcfunction
|
| ルートテーブル | データパック | data |
loot_tables |
json
|
| レシピ | データパック | data |
recipes |
json
|
| 構造物 | データパック | data |
structures |
nbt
|
| ブロックのタグ | データパック | data |
tags/blocks |
json
|
| エンティティの種類のタグ | データパック | data |
tags/entity_types |
json
|
| アイテムのタグ | データパック | data |
tags/items |
json
|
| 流体のタグ | データパック | data |
tags/fluids |
json
|
| 関数のタグ | データパック | data |
tags/functions |
json
|
注: リソースパックにはGUIテクスチャのように名前空間ID付きのオブジェクトにする必要のない要素もある。
配置したいコンテンツの種類が分かれば対応する pack_type、object_type、suffix も分かる。それに従い最終的なファイルの配置先を決めればよい。
例
| 名前空間ID | コンテンツの種類 | pack_type |
object_type |
suffix |
最終的な配置先 |
|---|---|---|---|---|---|
my_texture_pack:diamonds |
テクスチャ | assets |
textures |
png |
assets/my_texture_pack/textures/diamonds.png
|
abc:run_game |
関数 | data |
functions |
mcfunction |
data/abc/functions/run_game.mcfunction
|
block/torch(= minecraft:block/torch) |
モデル | assets |
models |
json |
assets/minecraft/models/block/torch.json
|
load(= minecraft:load) |
関数のタグ | data |
tags/functions |
json |
data/minecraft/tags/functions/load.json
|
rocket_pack:industry/start_of_story |
進捗 | data |
advancements |
json |
data/rocket_pack/advancements/industry/start_of_story.json
|
名前空間[]
|
“ |
|
„ |
| — Dinnerboneによるnamespace[1] |
名前空間はコンテンツの領域であり、潜在的なコンテンツの競合や、同じ名前のオブジェクトの意図しない上書きを防ぐためのものである。
例えば、2つのデータパックが2つのミニゲームをMinecraftに追加する — いずれも start という名前の関数を持つ — とき、名前空間が無いと、これら2つの関数はクラッシュし、ミニゲームも壊れてしまうだろう。それぞれ異なる名前空間 minigame_one と minigame_two を指定していれば、これらの関数はそれぞれ minigame_one:start および minigame_two:start となり、競合は起こらない。
名前空間のカスタム[]
名前空間は、他のプロジェクトやコンテンツ(例えばデータパック、リソースパック、Mod、データパック/リソースパックを含むマップなど)とは異なるものである必要がある。
衝突を防ぐために、名前空間はできるだけ重複しないようなものにしておく必要がある。
- alphabet soupを避ける[訳註 1]。例えば、"nuclear craft"というプロジェクトの名前空間を
ncと略したものにしない。これでは曖昧になってしまう。 - 曖昧すぎる言葉は避ける。
battle_royaleだと調査が困難だが、player_name_battle_royaleとすれば困難さを減らせるであろう。
どちらの場合でも、これらの不適切に選択された名前空間によりプロジェクトが使われづらくなり、コンテンツが増えたときのデバッグが困難になる。
- ↑ なんでもかんでも略語にしない
minecraft 名前空間[]
Minecraftは minecraft 名前空間を予約している。名前空間を指定しなかった場合、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を追加した。 | |||
関連項目[]
脚注[]
- ↑ "Minecraft Snapshot 17w43a" – Minecraft.net
外部リンク[]
- "Minecraft Snapshot 17w43a" – Minecraft.netで説明されている名前空間
| デモ版 | |||||||
|---|---|---|---|---|---|---|---|
| 開発 |
| ||||||
| 技術的情報 |
| ||||||
| マルチプレイ | |||||||
| ゲームのカスタマイズ | |||||||
