Krysztal's Language Scala
Активный0.0
Установок
Последнее обновление
Версии
Krysztal's Language Scala
Это адаптированная версия библиотеки fabric-language-scala, которая поддерживает новейшие версии Scala3 и содержит встроенные Scala библиотеки.
Почему создана эта версия?
Хотя Scala не самый популярный язык программирования, его выразительные возможности делают его практически идеальным для разработки модов. Оригинальный fabric-language-scala перестал поддерживаться разработчиками и постепенно стал неработоспособным, особенно в части поддержки Scala3. Поэтому была создана форкнутая версия под названием krysztal-language-scala, которая полностью совместима с оригиналом.
Возможности этой библиотеки будут регулярно обновляться и поддерживаться для обеспечения стабильной работы.
Инструкции по использованию
Добавление зависимостей
Добавьте следующие строки в файл build.gradle вашего проекта:
plugins {
...
id 'scala' // Добавляем плагин scala для gradle
...
}
repositories {
...
maven { url "https://maven.krysztal.dev/releases" }
...
}
dependencies {
...
modImplementation "dev.krysztal:krysztal-language-scala:${project.kls_version}+scala.${project.scala_version}"
...
}
Пример использования с class
Предположим, ваш главный файл называется ExampleEntry.scala:
import net.fabricmc.api.ModInitializer;
class ExampleEntry extends ModInitializer {
lazy val logger = LoggerFactory.getLogger("KMMO")
override def onInitialize(): Unit = {
logger.info("Hi")
}
}
И в файле fabric.mod.json:
...
"entrypoints": {
"main": [
"dev.example.ExampleEntry"
],
},
...
Благодаря отличной совместимости Scala с Java, эту библиотеку можно использовать как стандартную точку входа Java.
Пример использования с object
Предположим, ваш главный файл называется ExampleEntry.scala:
import net.fabricmc.api.ModInitializer;
object ExampleEntry extends ModInitializer {
lazy val logger = LoggerFactory.getLogger("KMMO")
override def onInitialize(): Unit = {
logger.info("Hi")
}
}
И в файле fabric.mod.json:
...
"entrypoints": {
"main": [
{
"adapter": "scala",
"value": "dev.example.ExampleEntry"
}
],
},
...
Известные проблемы
Неизвестный bsm вызываемой динамики: scala/runtime* - эта проблема вызвана механизмом загрузки классов Scala. Она практически ни на что не влияет и может быть проигнорирована.