Ідентифікатор простору імен (також відомо як рядки простору імен,[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
|
Простір імен[]
“ | Це не нова концепція, але думаю, що я повинен повторити, що таке «простір імен». Більшість речей в грі має простір імен, так що якщо ми додамо щось і модифікацію (карту або щось ще), що додає щось , вони обидва матимуть абсолютно різне щось . Всякий раз, коли вас просять вказати щось, наприклад таблицю видобутку, ви також повинні вказати, з якого простору імен виходить цей об'єкт. Якщо ви не вкажете простір імен, гра за замовчуванням використовує 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 Alpha | |||||
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.
Версії | |||||
---|---|---|---|---|---|
Розробка |
| ||||
Технічне |
| ||||
Мережева гра |
| ||||
Налаштування гри |
|
Видання |
| ||||||
---|---|---|---|---|---|---|---|
Розробка |
| ||||||
Технічне |
| ||||||
Багатокористувацька гра |
| ||||||
Ексклюзивні нововведення |
| ||||||
Вилучений контент |
|