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

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Пространство имён идентификаторов (также известно как строки пространства имён,[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]
  • Полоски здоровья боссов
  • Запоминание команд‌[запланированное: JE 1.15]
Другое не настраиваемое (без модификаций) содержимое
  • Функции добычи
  • Условия добычи
  • Типы добычи
  • Типы аргументов команд

Допустимые символы[править | править код]

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. Затем их можно заменить и узнать окончательное расположение содержимого.

Пространство имён[править | править код]

Аватар 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.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 для поддержки пользовательских предметов, добавляемых через дополнения.

См. также[править | править код]

Примечания[править | править код]

Ссылки[править | править код]

  • Использование пространства имён также объясняется на странице "Minecraft Snapshot 17w43a" — Minecraft.net.