Свой сервер
Генератор достижений
Впишите название и выберите иконку — получите картинку тоста «Новое достижение!» настоящим шрифтом игры. И датапак для Minecraft 1.21.9 — 26.3, в котором это достижение выдаётся по-настоящему.
Результат · пример
PNG ×3 · 480×96В чате: Steve получил достижение «Первый алмаз»
data/custom/advancement/pervyy_almaz.json
{
"parent": "custom:root",
"criteria": {
"obtain": {
"conditions": {
"items": [
{
"items": "minecraft:diamond"
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"display": {
"description": "Добудьте алмаз на нашем сервере",
"icon": {
"id": "minecraft:diamond"
},
"title": "Первый алмаз"
},
"requirements": [
[
"obtain"
]
]
}
data/custom/advancement/root.json
Корень своей вкладки: без родителя, с фоном, выдаётся всем сразу без тоста.
{
"criteria": {
"tick": {
"trigger": "minecraft:tick"
}
},
"display": {
"announce_to_chat": false,
"background": "minecraft:gui/advancements/backgrounds/stone",
"description": "Достижения этого мира",
"icon": {
"id": "minecraft:diamond"
},
"show_toast": false,
"title": "Свои достижения"
},
"requirements": [
[
"tick"
]
]
}
Как применить датапак
- Скачайте архив
Распаковывать не нужно: игра читает датапак прямо из zip.
- Положите в папку мира
На сервере — world/datapacks, в одиночной игре — saves/<мир>/datapacks.
- Перезагрузите
Командой /reload или перезапуском. Достижение появится в окне достижений (клавиша L).
- Проверьте
Выдать себе — /advancement grant @s only custom:pervyy_almaz, забрать обратно — /advancement revoke @s only custom:pervyy_almaz.
Что нужно знать
- Шрифт на картинке — из игры. Буквы вырезаны из файлов шрифта клиента 26.3 (ascii.png, nonlatin_european.png для кириллицы), ширина и перенос — по правилам игры, увеличение целое и без сглаживания.
- В тосте нет описания. Тост показывает заголовок рамки и название; описание видно в окне достижений, когда наводишь на значок.
- Блоки на иконке — плоские. Игра рисует блок в тосте объёмным кубиком, а на картинке стоит его грань — так же, как в вики сайта.
- Папка — advancement, в единственном числе. С 1.21 игра читает только её, а в advancements молча ничего не находит.
- Версий две, и обе сверены по файлам игры. В 26.3 условие «убить моба» записано новым предикатом, в 1.21.9 — 1.21.11 — старым списком условий; датапак собирается под выбранную. Более старые версии хранили фон вкладки иначе — их мы не предлагаем, пока не сверим.
- Своя вкладка — это корень. Достижение без родителя заводит вкладку и обязано иметь фон. Корень custom:root общий у всех датапаков с этой страницы: несколько своих достижений встанут в одну вкладку.
- Запись сверена кодеком игры. Каждое условие, рамка и корень прочитаны Advancement.CODEC клиента 26.3 — без ошибок; запись для 1.21.11 сверена с достижениями его клиента.
Частые вопросы
Как сделать своё достижение в Minecraft?
Датапаком: файл достижения лежит в папке advancement, игра читает его из datapacks мира. В нём название, описание, иконка, рамка и условие — получить предмет, убить моба или попасть в измерение.
Как выдать достижение командой?
Командой /advancement grant @s only, после неё — id достижения, например custom:first_diamond. Забрать обратно — /advancement revoke с тем же id.
Почему свою вкладку достижений не видно?
Вкладку заводит корневое достижение без родителя, и у него должен быть фон. Генератор кладёт такой корень сам и выдаёт его всем сразу, иначе вкладка появится только после первого своего достижения.
