Пространство имён идентификаторов

Пространство имён идентификаторов (также известно как строки пространства имён,[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

Пространство имён и имена идентификаторов могут содержать только следующие символы:

Следующие символы недопустимы в пространстве имён, но допустимы в самом имени:

Запись каждого пространства имён должна выглядеть следующим образом: 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. Затем их можно заменить и узнать окончательное расположение содержимого.

Пространство имён

Аватар Dinnerbone в Twitter.png
Это не новая концепция, но думаю, что я должен повторить, что такое «пространство имён». Большинство вещей в игре имеет пространство имён, так что если мы добавим что-то и модификацию (карту или что-то ещё), добавляющую что-то, они оба будут иметь абсолютно разное что-то. Всякий раз, когда вас просят указать что-то, например таблицу добычи, вы также должны указать, из какого пространства имён исходит этот объект. Если вы не укажете пространство имён, игра по умолчанию использует minecraft. Это означает, что что-то и minecraft:что-то — это одно и то же.
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.1116w32aИдентификаторы пространства имён теперь имеют ограничение символов.
Запрещенны символы верхнего регистра в идентификаторах пространства имён.
1.1317w47aПосле выравнивания, идентификаторы пространства имён являются единственной принятой формой идентификации.
1.14.4pre1Пространство имён Realms добавлено во встроенный пакет ресурсов Client.jar.
Альфа-версия Pocket Edition
0.16.0build 1Добавлены команды, поддерживающие идентификаторы в виде строк. Однако эти идентификаторы ещё не были помещены в пространство имён.
Официальный выпуск Bedrock Edition
1.12.0beta 1.12.0.2Идентификаторы теперь размещаются в пространстве имён с помощью префикса minecraft для поддержки пользовательских предметов, добавляемых через дополнения.

См. также

Примечания

Ссылки

  • Использование пространства имён также объясняется на странице "Minecraft Snapshot 17w43a" — Minecraft.net.
В данной статье используются материалы из статьи «Пространство имён идентификаторов» с вики-сайта Minecraft Wiki, расположенного на Фэндоме, и они распространяются согласно лицензии Creative Commons Attribution-NonCommercial-ShareAlike 3.0. Авторы статьи.