Krysztal's Language Scala: Scala 3 для модов Minecraft

Krysztal's Language Scala — адаптер Scala 3 для Minecraft: свежий LTS, встроенные библиотеки и поддержка Fabric. Скачайте и пишите моды проще!

Krysztal's Language Scala: современный Scala 3 для модов Minecraft

Если вы пишете моды на Fabric и давно присматриваетесь к Scala, то наверняка сталкивались с грустной картиной: оригинальный fabric-language-scala заброшен, поддержка Scala 3 почти отсутствует, а сборка падает на ровном месте. Именно эту проблему решает Krysztal's Language Scala — форк, который вернул адаптер к жизни и довёл его до рабочего состояния. Давайте разберёмся, что это за инструмент, зачем он нужен и как его подключить к своему проекту.

Что такое Krysztal's Language Scala

Krysztal's Language Scala — это форк fabric-language-scala, языкового адаптера, который позволяет писать моды для Fabric на Scala. Автор форка прямо объясняет мотивацию: людей, использующих Scala, мало, но выразительность языка делает его практически идеальным для разработки модов. Оригинальный проект остался без мейнтейнеров и постепенно перестал работать, а поддержка Scala 3 в нём и вовсе была почти нереальной. Поэтому Krysztal взял поддержку на себя и выпустил совместимый адаптер под именем krysztal-language-scala.

Ключевая особенность — ставка на LTS-версию Scala 3. Адаптер синхронизирует контент с апстримом настолько, насколько это возможно, и старается сохранять доступность. Никаких экспериментальных сборок: только долгосрочная поддержка, на которую можно опереться в долгоживущем проекте.

Какие версии Minecraft и загрузчик поддерживаются

Адаптер создан для загрузчика Fabric — это его родная среда, и именно с Fabric моды на Scala работают наиболее предсказуемо. Что касается версий Minecraft, ориентируйтесь на актуальные релизы, которые поддерживает Fabric API на момент установки: адаптер следует за апстримом и обновляется вместе с экосистемой. Перед тем как скачать Krysztal's Language Scala, проверьте, что ваша версия Minecraft и Fabric Loader совпадают с требованиями конкретного релиза адаптера.

Отдельно стоит сказать про лаунчер foxygame.net: в его каталоге дополнений Krysztal's Language Scala находится рядом с другими инструментами для Fabric, а установка выполняется буквально в один клик — не нужно вручную раскладывать файлы по папкам. Это удобно, если вы хотите быстро поднять окружение и сразу перейти к коду.

Встроенные библиотеки

Одна из причин, по которой адаптер ценят, — bundled-библиотеки. Вам не нужно вручную подтягивать популярные зависимости Scala, они уже включены:

  • org.scala-lang:scala3-library_3:3.3.3 — ядро Scala 3 LTS;
  • org.scala-lang:scala-library:2.13.12 — стандартная библиотека Scala 2.13 для совместимости;
  • org.typelevel:cats-core_3:2.12.0 — функциональные абстракции Cats;
  • com.chuusai:shapeless_2.13:2.3.12 — обобщённое программирование на Shapeless;
  • org.typelevel:mouse_3:1.3.1 — удобные расширения поверх Cats.

Такой набор закрывает большинство типовых задач: от работы с эффектами до derivation и типобезопасных структур. Вам остаётся только подключить адаптер и писать код.

Как установить и подключить адаптер

Шаг 1. Добавьте зависимость

В файл build.gradle вашего проекта добавьте плагин Scala для Gradle и репозиторий Maven, откуда будет тянуться адаптер. Затем в блок dependencies добавьте modImplementation с координатами dev.krysztal:krysztal-language-scala и подставьте нужную версию. После синхронизации Gradle зависимость подтянется автоматически.

Шаг 2. Опишите точку входа

Допустим, ваш класс входа называется ExampleEntry.scala. Можно использовать привычный класс: он расширяет ModInitializer, внутри объявляется ленивый логгер, а метод onInitialize выводит приветствие в лог. В fabric.mod.json в разделе entrypoints указывается main с полным именем класса.

Благодаря отличной интероперабельности Scala с Java адаптер можно использовать и как обычную Java-точку входа. Вариант с object выглядит так: object ExampleEntry extends ModInitializer, тот же ленивый логгер и переопределённый onInitialize. А в fabric.mod.json точка входа описывается уже объектом с полями adapter: scala и value с именем вашего объекта.

Известные проблемы

В логах может появляться сообщение об unknown invokedynamic bsm: scala/runtime*. Это следствие механизма загрузки классов Scala, и на работу мода оно практически не влияет — можно спокойно игнорировать.

Если вы хотите держать окружение в порядке без ручной возни, лаунчер foxygame.net умеет автоматически обновлять Krysztal's Language Scala и следить за совместимостью версий Minecraft, так что вам не придётся каждый раз сверять координаты вручную.

Итог

Krysztal's Language Scala — это аккуратный и поддерживаемый способ писать моды для Fabric на Scala 3 LTS. Он решает главную боль заброшенного оригинала, приносит встроенные библиотеки и остаётся совместимым с прежним fabric-language-scala. Если вам близка выразительность Scala и вы не хотите бороться с нерабочим тулчейном, этот адаптер стоит попробовать: подключите зависимость, опишите точку входа и пишите моды так, как вам удобно.