ID в пространстве имен

Идентификаторы в пространстве имен (также известные как строки в пространстве имен , местоположения ресурсов или идентификаторы ресурсов ) — это способ объявления и идентификации встроенных и определенных пользователем игровых объектов в Minecraft без потенциальной двусмысленности или конфликтов.

Использование

Идентификаторы пространства имен используются как простая строка для ссылки на блоки, элементы, типы сущностей, рецепты, функции, улучшения, теги и различные другие объекты в vanilla Minecraft . Интересно, что состояния блоков не имеют пространства имен.

Допустимый идентификатор в пространстве имен имеет формат namespace: name , где могут использоваться только определенные символы.

Это список всех мест с идентификаторами в пространстве имен:

Встроенные реестры
  • Атрибуты
  • Блоки
  • Блочные сущности‌ [ только для Java Edition ]
  • Fluids‌ [ только для Java Edition ]
  • Items
  • Сущности
  • Память мобов‌ [ только для 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 Строчные буквы
  • _ подчеркивание
  • - дефис/минус
  • . точка

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

  • / Прямая косая черта
    • Разделитель каталогов

Предпочтительное соглашение об именах для пространства имен или имени — snake_case .

Bedrock Edition

Пространство имен и имя идентификатора могут содержать все символы, за исключением косой черты и двоеточия.

Следующие символы недопустимы в пространстве имен, но допустимы в именах таблиц и функций добычи .

  • / Прямая косая черта
    • Разделитель каталогов

Предпочтительное соглашение об именах для пространства имен или имени — snake_case .

Преобразование в строку

Идентификатор пространства имен будет преобразован в строку путем добавления к его пространству имен : (двоеточие) и его имени.

Примеры:

Пространство имен Имя Строковое представление
minecraft diamond minecraft: diamond
foo bar.baz foo: bar.baz
minecraftwiki commands/minecraft_wiki minecraftwiki: commands/minecraft_wiki

Преобразование из строки

В отличие от идентификаторов в пространстве имен всегда можно преобразовать в строки, некоторые строки не могут преобразовать в идентификаторы с пространством имен.

Несколько ограничений:

  • Строка может иметь не более одного : ( двоеточие)
  • Остальная часть строки должна соответствовать требованиям допустимых символов
  • Если присутствует : , часть строки перед : (пространство имен) не должно содержать / или .

Когда присутствует : , часть строки перед : становится пространством имен, а часть после : становится именем.

Когда : отсутствует, minecraft становится пространством имен, а вся строка становится name.‌ [ Только для Java Edition ]

Рекомендуется всегда включать : в строковом формате идентификаторов в пространстве имен.

Примеры
String Разрешенное пространство имен Разрешенное имя Во что игра преобразует его обратно
bar:code bar код bar:code
minecraft: zombie minecraft зомби minecraft: зомби
алмаз minecraft [ только для Java Edition ]
None‌ [ Bedrock Edition только ]
diamond minecraft: diamond [ только для Java Edition ]
diamond [ Только для Bedrock Edition ]
foo/bar: уголь Недействительный символ /
minec плот/сельский житель minecraft [ только для Java Edition ]
Нет‌ [ Только для 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 [ Бедро Только ck Edition ]
mymap: schrödingers_var [ Только Bedrock Edition ]
custom_pack: Capital custom_pack Недействительный символ C [ только для Java Edition ]
Capital [ только для Bedrock Edition ]
custom_pack: Capital [ только для Bedrock Edition ]

Поиск содержимого в пакетах

Учитывая, что объекты из пакетов ресурсов и пакетов данных являются файлами, идентификатор в пространстве имен также можно использовать для поиска соответствующих файлов, в которых объявлены объекты идентификатора.

Хотя расположение различается в зависимости от типа объекта и типа пакета, к которому принадлежит тип объекта, существует определенный шаблон, которому нужно следовать. В общем, расположение соответствует типу pack_type / namespace / object_type / имя . suffix , где все символы / (косая черта) (могут быть частью object_type или name ) заменяется разделителем каталогов, зависящим от операционной системы.

Отображения типа объекта на pack_type , object_type и суффикс переменные

Тип объекта Пакет объектов pack_type подстановка object_type подстановка суффикс подстановка
Состояния блока Пакет ресурсов assets состояния блока json
Модели Пакет ресурсов assets модели json
Частицы Пакет ресурсов assets частицы json
Текстуры Пакет ресурсов assets текстуры png
Достижения Пакет данных data достижения json
Функции Пакет данных data функции mcfunction
Таблицы добычи Пакет данных data loot_tables json
Рецепты Пакет данных data рецепты json
Структуры Пакет данных data структуры nbt
Теги блоков Пакет данных data теги/блоки json
Теги типа объекта Пакет данных data tags/entity_types json
Теги элементов Пакет данных данные теги/элементы json
Гибкие теги Пакет данных data tags/fluids json
Функциональные теги Пакет данных data теги/функции json

Примечание. Некоторые элементы в пакете ресурсов не обязательно поддерживаются объектом с идентификатором пространства имен, например текстуры графического интерфейса..

Учитывая тип контента, который мы хотим найти, мы можем найти соответствующий pack_type , object_type и suffix . Затем мы можем подставить и узнать окончательное расположение файла с содержимым.

Примеры

ID в пространстве имен Тип содержимого pack_type object_type суффикс Конечное местоположение
my_texture_pack: diamonds Текстура assets текстуры 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 модели json assets/minecraft/models/block/torch.json
load
(то же, что и minecraft: load )
Тег функции data теги/функции json data/minecraft/tags/functions/load.json
rocket_pack: industry/start_of_story Advancement data ​​code > улучшения json data/rocket_pack/advancements/industry/start_of_story.json

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

«

Это не новая концепция, но я подумал, что должен повторить, что такое« пространство имен ». У большинства вещей в игре есть пространство имен, так что если мы добавим something и мод (или карта, или что-то еще) добавит что-то , они оба разные что-то s. Всякий раз, когда вас просят назвать что-то, например, таблицу добычи, вы также должны указать, из какого пространства имен эта вещь происходит. Если вы не укажете пространство имен, по умолчанию будет использоваться minecraft . Это означает, что something и minecraft: something — одно и то же.

Dinnerbone в пространствах имен

Пространство имен — это домен для содержимого. Это необходимо для предотвращения потенциальных конфликтов содержимого или непреднамеренного переопределения объекта с тем же именем..

Например, два пакета данных добавляют два механизма мини-игр в Minecraft ; у обоих есть функция с именем start . Без пространств имен эти две функции столкнулись бы, и мини-игры были бы сломаны. Если у них разные пространства имен minigame_one и minigame_two , функции станут minigame_one: start и minigame_two: start , которые больше не конфликтуют.

minecraft namespace

Minecraft резервирует пространство имен minecraft ; если пространство имен не указано, идентификатор с пространством имен возвращается к minecraft [ только для Java Edition ] . В результате пространство имен minecraft должно использоваться только создателями контента, когда контент должен перезаписать или изменить существующие данные Minecraft , например, добавить функцию в тег функции minecraft: load .

Пользовательское пространство имен

Пространство имен должно отличаться для разных проектов или создания контента (например, пакет данных, пакет ресурсов, мод, резервные пакеты данных/ресурсов для настраиваемой карты и т. д.)

Чтобы предотвратить возможные конфликты, пространство имен должно быть как можно более конкретным.

  • Избегайте супов с алфавитом. Например, в проекте под названием «ядерный корабль» не следует использовать пространство имен nc , поскольку оно слишком двусмысленно.
  • Избегайте слишком расплывчатых слов. battle_royale тоже не будет информативным, но player_name _battle_royale будет намного лучше.

В любом случае эти плохо выбранные пространства имен уменьшают открытость проекта и создают трудности для отладки, когда к игре применяется несколько созданий контента.

Другое построено -in пространства имен

Пакет ресурсов по умолчанию для Minecraft объявляет языковые файлы, ориентированные на Realms, в пространстве имен realms (расположенном в assets/realms/lang/ .json ) и языковые файлы, связанные с игрой, в пространстве имен minecraft , даже если ключи перевода не являются идентификаторами пространства имен. Сам jar областей также объявляет свой языковой файл en_us.json и его различные текстуры в пространстве имен realms .

ID типов аргументов команды, пространство имен brigadier также отображается для типов аргументов команды, которые являются родными для Brigadier.

History

Java Edition
1.6.1 13w21a Добавлены идентификаторы пространства имен вместе с префиксом minecraft для идентификации активов.
1.7.2 13w37a Теперь команды принимают идентификаторы имен помимо числовых.
1.11 16w32a ID пространства имен теперь имеют ограничение на количество символов.
Запрещенные символы верхнего регистра в идентификаторах пространства имен.
1. 13 17w47a После выравнивания идентификаторы пространства имен являются единственной принятой формой идентификатора.
pre4 ID пространства имен теперь используются для идентификации каналов сообщений плагина.
1.14.4 pre1 Пространство имен realms добавлено во встроенный пакет ресурсов клиентского jar.
1.16 20w14a Атрибуты теперь представляют собой идентификаторы в пространстве имен.
Pocket Edition Alpha
0.16.0 build 1 Добавлены команды, поддерживающие строковые идентификаторы. Однако для этих идентификаторов еще не было пространства имен.
Bedrock Edition
1.12.0 beta 1.12.0.2 ID теперь разделяются именами с использованием префикса minecraft для поддержки пользовательских элементов, добавляемых через надстройки. .

  • Значения данных Java Edition
  • Ресурс pack
  • Пакет данных

Внешние ссылки

  • Пространства имен, как описано в «Minecraft Snapshot 17w43a» — Minecraft.net.
Оцените статью
Gamicon.ru
Добавить комментарий