Krysztal's Language Scala
作者:rebot | 分类:模组
Minecraft 版本: 1.21 1.21.1-rc1 1.21.1 24w33a 24w34a 24w35a 24w36a 24w37a 24w38a 24w39a 24w40a 1.21.2-pre1 1.21.2-pre2 1.21.2-pre3 1.21.2-pre4 1.21.2-pre5 1.21.2-rc1 1.21.2-rc2 1.21.2 1.21.3 24w44a 24w45a 24w46a 1.21.4-pre1 1.21.4-pre2 1.21.4-pre3 1.21.4-rc1 1.21.4-rc2 1.21.4-rc3 1.21.4 25w02a 25w03a 25w04a 25w05a 25w06a 25w07a 25w08a 25w09a 25w09b 25w10a 1.21.5-pre1 1.21.5-pre2 1.21.5-pre3 1.21.5-rc1 1.21.5-rc2 1.21.5 25w14craftmine 25w15a 25w16a 25w17a 25w18a 25w19a 25w20a 25w21a 1.21.6-pre1 1.21.6-pre2 1.21.6-pre3 1.21.6-pre4 1.21.6-rc1 1.21.6 1.21.7-rc1 1.21.7-rc2 1.21.7 1.21.8-rc1 1.21.8 25w31a 25w32a 25w33a 25w34a 25w34b 25w35a 25w36a 25w36b 25w37a 1.21.9-pre1 1.21.9-pre2 1.21.9-pre3 1.21.9-pre4 1.21.9-rc1 1.21.9 1.21.10-rc1 1.21.10 25w41a 25w42a 25w43a 25w44a 25w45a 25w46a 1.21.11-pre1 1.21.11-pre2 1.21.11-pre3 1.21.11-pre4 1.21.11-pre5 1.21.11-rc1 1.21.11-rc2 1.21.11-rc3 1.21.11 26.1-snapshot-1
平台: fabric
标签: library
Krysztal's fork of fabric-language-scala
This is a fork of fabric-language-scala, support the newest Scala3 version.
Why fork?
The number of people who use Scala is very small, but the power of Scala's expressiveness makes the language practically perfect for developing mods.
The original fabric-language-scala was unmaintained and the maintainers couldn't spare any more effort to maintain it, so it slowly became unmaintained and non-functional.
Support for Scala3 is, if anything, almost non-existent.
So I decided to fork it and maintain it myself and implement it to be compatible with the original fabric-language-scala,named krysztal-language-scala.
NOTE
- This language adapter will synchronize content upstream as much as possible and will ensure availability as much as possible.
- If you are DEVELOPER, please reading FOR_DEVELOPER, and remind your user which Scala3 version you used
- I suggested you should using the newest version as possible
- If you are USER, please reading FOR_USER
How to use?
Add dependence
Add those lines to your project's build.gradle
plugins {
...
id 'scala' // Add `scala` plugin for gradle
...
}
repositories {
...
maven { url "https://maven.krysztal.dev/releases" }
...
}
dependencies {
...
modImplementation "dev.krysztal:krysztal-language-scala:${project.kls_version}+scala.${project.scala_version}"
...
}
Usage: class
Suppose your entry name is ExampleEntry.scala
import net.fabricmc.api.ModInitializer;
class ExampleEntry extends ModInitializer {
lazy val logger = LoggerFactory.getLogger("KMMO")
override def onInitialize(): Unit = {
logger.info("Hi")
}
}
And in fabric.mod.json
...
"entrypoints": {
"main": [
"dev.example.ExampleEntry"
],
},
...
But thanks to Scala's excellent interoperability with Java, we can use this
library simply as a Java entry point :)
Usage: object
Suppose your entry name is ExampleEntry.scala
import net.fabricmc.api.ModInitializer;
object ExampleEntry extends ModInitializer {
lazy val logger = LoggerFactory.getLogger("KMMO")
override def onInitialize(): Unit = {
logger.info("Hi")
}
}
And in fabric.mod.json
...
"entrypoints": {
"main": [
{
"adapter": "scala",
"value": "dev.example.ExampleEntry"
}
],
},
...
Known issues
unknown invokedynamic bsm: scala/runtime*
This issues caused by scala's class loading mechanism.
It won't affect almost anything. Ignore it.
请登录后举报
暂无评论,抢个沙发吧~