Скачать Krysztal's Language Scala — Minecraft Моды — MetaMods

Krysztal's Language Scala

Активный

Установок

0

Последнее обновление

3 месяца назад

Версии

1.17 — 1.21.8
Клиент и сервер
Fabric
Библиотеки

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. Она практически ни на что не влияет и может быть проигнорирована.

Участники проекта
Krysztal112233

Krysztal112233

Разработчик

Создан: 8 апр 2024

ID: 20676