Свой сервер

Генератор достижений

Впишите название и выберите иконку — получите картинку тоста «Новое достижение!» настоящим шрифтом игры. И датапак для Minecraft 1.21.9 — 26.3, в котором это достижение выдаётся по-настоящему.

Что написано

Рамка задаёт заголовок тоста: «Новое достижение!», «Цель достигнута!», «Испытание завершено!». У испытания он розовый и звучит фанфарой.

Иконка

Любой предмет игры: id или название — diamond_sword или «Алмазный меч».

Картинка

Достижение в датапаке

Само не выдаётся — только командой /advancement grant: за победу в ивенте, за покупку, за что угодно.

Вкладка и id

Латиницей; пусто — из названия. По нему достижение зовут в командах: custom:pervyy_almaz.

Результат · пример

PNG ×3 · 480×96
Тост «Новое достижение!»: Первый алмаз
Скачать PNG

В чате: 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"
    ]
  ]
}
Скачать датапак

Как применить датапак

  1. Скачайте архив

    Распаковывать не нужно: игра читает датапак прямо из zip.

  2. Положите в папку мира

    На сервере — world/datapacks, в одиночной игре — saves/<мир>/datapacks.

  3. Перезагрузите

    Командой /reload или перезапуском. Достижение появится в окне достижений (клавиша L).

  4. Проверьте

    Выдать себе — /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.

Почему свою вкладку достижений не видно?

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