介绍
介绍由机器翻译自 Modrinth 原页面,仅供参考。
Krysztal 的 fabric-language-scala 分支
这是 fabric-language-scala 的一个分支,支持最新的 Scala3 版本。
为什么要分支?
使用 Scala 的人数很少,但 Scala 强大的表达能力让它几乎成为开发模组的完美语言。
原版 fabric-language-scala 已无人维护,维护者也无暇继续投入精力,因此它逐渐失去维护并变得无法正常使用。
对 Scala3 的支持几乎不存在。
所以我决定分支并自行维护,同时实现与原版 fabric-language-scala 的兼容,并将其命名为 krysztal-language-scala。
注意
从 KLS 3.3.2 开始,编译目标为 Java 25。不支持旧版 Java 运行时。
如何使用?
添加依赖
将以下内容添加到你项目的 build.gradle
plugins {
...
id 'scala' // Add `scala` plugin for gradle
...
}
repositories {
...
maven { url "https://api.modrinth.com/maven" }
...
}
dependencies {
...
// Scala 3 language support (Fabric language adapter + Scala runtime, bundled at runtime by this mod).
implementation("maven.modrinth:krysztal-language-scala:${property("krysztal_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"
}
],
},
...
已知问题
unknown invokedynamic bsm: scala/runtime\*
这个问题由 Scala 的类加载机制导致。
它几乎不会造成任何影响,忽略即可。
常见问题
Krysztal’s Language Scala 支持哪些 Minecraft 版本?
Krysztal’s Language Scala 支持 Minecraft Java 版 1.17–26.2,共 33 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。
Krysztal’s Language Scala 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。
评论
登录后评论和评分