Ідентифікатор простору імен

Матеріал з Minecraft Wiki
Перейти до: навігація, пошук
Information icon.svg
Тільки для 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. Потім їх можна замінити і дізнатися остаточне розташування вмісту.

Простір імен

64px Це не нова концепція, але думаю, що я повинен повторити, що таке «простір імен». Більшість речей в грі має простір імен, так що якщо ми додамо щось і модифікацію (карту або щось ще), що додає щось, вони обидва матимуть абсолютно різне щось. Всякий раз, коли вас просять вказати щось, наприклад таблицю видобутку, ви також повинні вказати, з якого простору імен виходить цей об'єкт. Якщо ви не вкажете простір імен, гра за замовчуванням використовує 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 Alpha
0.16.0build 1Додані команди консолі, що підтримують ідентифікатори у вигляді рядків. Однак ці ідентифікатори ще не були поміщені в простір імен.
Bedrock Edition
1.12.0beta 1.12.0.2Ідентифікатори тепер розміщуються в просторі імен за допомогою префікса minecraft для підтримки користувальницьких предметів, що додаються через доповнення.

Див. також

Примітки

Посилання

  • Використання простору імен також пояснюється на сторінці "Minecraft Snapshot 17w43a" – Minecraft.net.