Проект

Твой мод не ломается

Мод для Crafting должен продолжать работать, когда обновляется Minecraft и когда обновляется Crafting. Эта страница рассказывает, что гарантировано и что нужно сделать, чтобы этим воспользоваться.

Что гарантировано

Всё публичное в API для Kotlin и Java, а также каждое ключевое слово CraftScript, встроенная функция и имя события. Внутреннее устройство Crafting (как он загружает моды, как подключается к игре) может меняться в любой версии; твой мод его не видит и в нём не нуждается.

Почему обновления игры его не ломают

Твой мод никогда не трогает код Minecraft. Когда новая версия игры что-то перемещает или переименовывает, Crafting внутри себя меняет, какую часть игры вызывает каждая функция API. Функция, которой пользуется твой мод, сохраняет то же имя и делает то же самое.

Сегодня Crafting работает с Minecraft Java 26.3. Каждая новая версия игры добавляется целиком: либо функция API работает в этой версии, либо версия не считается поддерживаемой.

Четыре правила

  1. Новое добавляется, старое не меняется. Новый параметр приходит со значением по умолчанию, поэтому существующие вызовы остаются верными. Новое поведение приходит под новым именем.
  2. Замена приходит с предупреждением. Когда появляется лучший способ что-то сделать, старый помечается как устаревший, говорит, что использовать вместо него, и продолжает работать точно так же как минимум до следующей мажорной версии. Редактор показывает его зачёркнутым.
  3. Удаляется что-то только в мажорной версии — той, что меняет первое число версии Crafting. Об этом объявляют в примечаниях к выпуску, с заменой для каждого пункта.
  4. Ничего не подделывается. Если функция не может работать в запущенной игре, она даёт понятную ошибку. Она никогда не возвращает выдуманное значение, из-за которого мод решит, что всё прошло хорошо.

Что это значит для тебя

  • Обновление Crafting никогда не заставляет тебя менять мод, кроме мажорной версии, и тогда ты будешь точно знать, что менять.
  • Когда что-то, чем ты пользуешься, помечается как устаревшее, у тебя есть время: поменяй это, когда удобно, до следующей мажорной версии. Документация всегда показывает актуальный способ.
  • Если моду нужно то, чего в твоей версии Crafting ещё нет, Crafting сообщает об этом при загрузке, а не загружает мод наполовину.
  • Не импортируй классы net.minecraft в мод на Kotlin или Java: на эту часть нет никаких гарантий.
  • Избегай run_command и summon с игровыми данными: они принимают форматы Minecraft, а те меняются. Если они тебе для чего-то нужны, значит, в API не хватает функции; попроси её добавить.

Если что-то идёт не так

  • Ошибка в событии или команде записывается в журнал с именем мода, а остальной сервер продолжает работать.
  • Скрипт с ошибками типов не загружается, а сообщение называет файл, строку и то, что ожидалось.
  • Мод в .jar, которому не хватает зависимости или нужна более новая версия Crafting, не загружается, и Crafting сообщает обо всех проблемах сразу, с советом для каждой.