Только для Java Edition и Bedrock Edition |
Название данной статьи является предположением.
Субъекту статьи ещё не дано официальное название и оно может измениться в любое время. |
Пространство имён идентификаторов (также известно как строки пространства имён,[1] расположение ресурсов,[2] или идентификаторы ресурса[3]) — это обозначение и идентифицирование встроенных и определяемых пользователем игровые объекты в Minecraft без потенциальной двусмысленности или конфликтов.
Использование[]
Пространство имён идентификаторов используется как простая строка, ссылающаяся на блоки, предметы, разновидности сущностей, рецепты, функции, достижения, теги, и другие объекты из обычного Minecraft. Стоит отметить, что состояния блоков не имеют своего собственного пространства имён.
Допустимый идентификатор пространства имён имеет формат namespace: name
, где могут использоваться только определённые символы.
Это список всех объектов игры, которые имеют пространство имён идентификаторов:
- Встроенные реестры
-
- Блоки
- Блоки-сущности[только для Java Edition]
- Жидкости[только для Java Edition]
- Предметы
- Сущности
- Интеллект мобов[только для Java Edition]
- Картины[только для Java Edition]
- Профессии деревенских жителей[только для Java Edition]
- Типы деревенских жителей[только для Java Edition]
- Эффекты
- Типы зелий[только для Java Edition]
- Чары
- Частицы
- Размеры[только для Java Edition]
- Биомы
- Статистика[только для Java Edition]
- Типы рецептов[только для Java Edition]
- Сериализация рецептов[только для Java Edition]
- Звуковое событие
- Содержимое пакета данных[только для Java Edition]
-
- Достижения
- Таблицы добычи
- Функции
- Файлы структур
- Рецепты
- Теги типов/функций блоков/жидкостей/предметов/сущностей
- Добавляемый контент[только для Bedrock Edition]
-
- Таблицы добычи
- Функции
- Содержимое пакетов ресурсов[только для Java Edition]
-
- Файлы состояний блоков
- Модели
- Текстуры
- Звуки
- Звуковые события
- Другой настраиваемый контент[только для Java Edition]
-
- Полоски здоровья боссов
- Запоминание команд
- Другое не настраиваемое (без модификаций) содержимое
-
- Функции добычи
- Условия добычи
- Типы добычи
- Типы аргументов команд
Допустимые символы[]
Java Edition[]
Пространство имён и имена идентификаторов могут содержать только следующие символы:
0123456789
Цифрыabcdefghijklmnopqrstuvwxyz
Строчные буквы_
Нижнее подчёркивание-
Дефис/минус
Следующие символы недопустимы в пространстве имён, но допустимы в самом имени:
/
Косая черта (слэш)- Разделитель каталогов
.
Точка- Разделитель наименования и расширения файлов.
Запись каждого пространства имён должна выглядеть следующим образом: lower_case_with_underscores
(нижний_регистр_с_нижним_подчёркиванием).
Bedrock Edition[]
Пространство имён и имена идентификаторов могут содержать все символы, кроме косых черт (слэша) и двоеточий.
Следующие символы недопустимы в пространстве имён, но допустимы в именах таблиц добычи и функций:
/
Косая черта (слэш)- Разделитель каталогов
Запись каждого пространства имён должна выглядеть следующим образом: lower_case_with_underscores
(нижний_регистр_с_нижним_подчёркиванием).
Преобразование в строку[]
Идентификатор пространства имён преобразовывается в строку, если использовать :
(двоеточие) между ним и его пространством имён.
Примеры:
Пространство имён | Имя | Преобразование в строку |
---|---|---|
minecraft |
diamond |
minecraft:diamond
|
foo |
bar.baz |
foo:bar.baz
|
minecraftwiki |
commands/minecraft_wiki |
minecraftwiki:commands/minecraft_wiki
|
Преобразование из строки[]
В отличие от идентификаторов пространства имён, которые могут быть преобразованы в строки, есть отдельные строки, которые, наоборот, не могут быть преобразованы в идентификаторы.
Есть несколько ограничений:
- Строка может иметь только один символ
:
(двоеточие) - Остальная часть строки должна соответствовать требованиям допустимых символов
- Если
:
присутствует, то часть строки перед:
(пространство имён) не должна содержать символы/
или.
Когда :
присутствует, часть строки перед :
становится пространством имён, а после :
— именем.
Когда :
отсутствует, то minecraft
становится пространством имён, а вся строка становится именем.[только для Java Edition]
Рекомендуется всегда включать :
в строковый формат идентификаторов пространств имён.
- Примеры
Строка | Допустимое пространство имен | Допустимое имя | Во что преобразует игра |
---|---|---|---|
bar:code |
bar |
code |
bar:code
|
minecraft:zombie |
minecraft |
zombie |
minecraft:zombie
|
diamond |
minecraft [только для Java Edition]Ничего[только для Bedrock Edition] |
diamond |
minecraft:diamond [только для Java Edition]diamond [только для Bedrock Edition]
|
foo/bar:coal |
Недопустимый символ / |
||
minecraft/villager |
minecraft [только для Java Edition]None[только для Bedrock Edition] |
minecraft/villager |
minecraft:minecraft/villager [только для Java Edition]minecraft/villager [только для Bedrock Edition]
|
mypack_recipe |
minecraft [только для Java Edition]Ничего[только для Bedrock Edition] |
mypack_recipe |
minecraft:mypack_recipe [только для Java Edition]mypack_recipe [только для Bedrock Edition]
|
mymap:schrödingers_var |
mymap |
Недопустимый символ ö [только для Java Edition]schrödingers_var [только для Bedrock Edition] |
mymap:schrödingers_var [только для Bedrock Edition]
|
custom_pack:Capital |
custom_pack |
Недопустимый символ C [только для Java Edition]Capital [только для Bedrock Edition] |
custom_pack:Capital [только для Bedrock Edition]
|
Размещение содержимого в пакетах[только для Java Edition][]
Объекты, добавленные файлами из пакетов ресурсов и пакетов данных, могут быть найдены игрой, используя пространство имён идентификаторов, предоставляемое выбранным пакетом.
Хотя расположение зависит от типа объекта и типа пакета, которому принадлежит данный объект, существует определённая закономерность. Как правило, расположение выглядит следующим образом: 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
|
Примечание: некоторые элементы в пакете ресурсов не обязательно поддерживаются объектом с идентификатором пространства имён, например текстуры графического интерфейса пользователя.
Учитывая тип содержимого, можно найти соответствующие файлы pack_type
, object_type
и suffix
. Затем их можно заменить и узнать окончательное расположение содержимого.
- Примеры
Идентификаторы пространства имён | Тип содержимого | 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 о пространстве имён[4] |
Пространство имён — это домен для содержимого. Это делается для предотвращения потенциальных конфликтов содержимого или непреднамеренных переопределений объекта с таким же именем.
Например, два пакета данных добавляют два механизма мини-игр в Minecraft; они оба имеют функцию, называемую start
. Без пространств имён эти две функции стали бы конфликтовать, а мини-игры просто бы не работали. Если добавляемые объекты имеют разные пространства имён: minigame_one
и minigame_two
, то функции будут выглядеть следующим образом: minigame_one:start
и minigame_two:start
— такие функции не конфликтуют друг с другом.
Пользовательское пространство имён[]
Пространство имён должно быть отличным от каждого добавляемого проекта или контента (например, пакета данных, пакета ресурсов, модификации, пакета ресурсов для пользовательской карты и так далее).
Чтобы предотвратить возможные конфликты, пространства имён должны быть максимально конкретными.
- Следует избегать алфавитных супов. Например, проект, названный «ядерный корабль», не должен использовать пространство имён
nc
, так как это слишком неоднозначное имя. - Следует избегать слишком «расплывчатых» слов. Имя
battle_royale
не выглядит столь информативно, поэтому имяplayer_name_battle_royale
выглядит намного лучше и более информативно.
В любом случае, эти неудачно выбранные пространства имён снижают вероятность конфликта проектов, когда в игре используется несколько видов добавляемого контента.
Пространство имён minecraft
[]
Minecraft имеет пространство имён minecraft
; если пространство имён не указано, идентификатор по умолчанию будет установлен на minecraft
[только для Java Edition]. Пространство имён minecraft
должно использоваться только создателями контента, изменяющего уже существующие данные Minecraft, например добавление новой функции к другим тегам функции minecraft:load
.
Другие встроенные пространства имён[]
По умолчанию пакет ресурсов Minecraft использует для Realms языковые файлы в пространстве имён realms
(расположенном в assets/realms/lang/<языковой-код>.json
) и связанные с игрой языковые файлы в пространстве имён minecraft
, даже если ключи перевода не являются идентификаторами пространства имён. Сам Realms.jar тоже использует свой собственный языковой файл ru_ru.JSON
и текстуры в пространстве имён realms
.
В идентификаторах типов аргументов команд, пространство имён brigadier
также используется для типов аргументов, которые тесно связаны с Brigadier.[5]
История[]
Официальный выпуск Java Edition | |||||
---|---|---|---|---|---|
? | ? | Добавлено использование идентификаторов после префикса minecraft . | |||
1.7.2 | ? | Команды теперь работают с текстовым форматом идентификаторов, помимо числового. | |||
1.11 | 16w32a | Идентификаторы пространства имён теперь имеют ограничение символов. | |||
Запрещенны символы верхнего регистра в идентификаторах пространства имён. | |||||
1.13 | 17w47a | После выравнивания, идентификаторы пространства имён являются единственной принятой формой идентификации. | |||
1.14.4 | pre1 | Пространство имён Realms добавлено во встроенный пакет ресурсов Client.jar. | |||
Альфа-версия Pocket Edition | |||||
0.16.0 | build 1 | Добавлены команды, поддерживающие идентификаторы в виде строк. Однако эти идентификаторы ещё не были помещены в пространство имён. | |||
Официальный выпуск Bedrock Edition | |||||
1.12.0 | beta 1.12.0.2 | Идентификаторы теперь размещаются в пространстве имён с помощью префикса minecraft для поддержки пользовательских предметов, добавляемых через дополнения. |
См. также[]
Примечания[]
- ↑ DataFixerUpper/NamespacedStringType.java at 8b5f82ab78b30ff5813b3a7f3906cd3f4f732acf · Mojang/DataFixerUpper — GitHub
- ↑ Minecraft Java Edition 1.13 changes — GitHub Gist
- ↑ "Minecraft Snapshot 19w39a" — Minecraft.net, 27 сентября 2019 года
- ↑ "Minecraft Snapshot 17w43a" — Minecraft.net
- ↑ Minecraft Java Edition 1.13 changes — GitHub Gist
Ссылки[]
- Использование пространства имён также объясняется на странице "Minecraft Snapshot 17w43a" — Minecraft.net.