Krysztal's Language Scala
ModA fork of fabric-language-scala, but support the newest version of Scala3
Type
Mod
Modrinth Downloads
4,008
Modrinth ID
Ptd0Ha1s
Last Updated
Apr 12, 2026
Description
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.
Compatibility
Mod Loaders
Game Versions
Similar Mods
Missing Mods Warning
Warn the player when attempting to load worlds with missing mods
Loot Integrations: ATi Structures, Epic Structures Villages & Witch Huts
Adds better loot to ATi Structures, Epic Structures Villages & Witch Huts Structures chests, including modded loot
Chatter Addons
A mod that has many useful chat utilities!
The Golden Berries
This mod adds the Golden Berries item to your game that is very similar to the Golden Carrot.
Mod Menu (NeoForge Edition)
NeoForge Port of Mod Menu
Cobblemon: Team Preview
A simple Cobblemon mod that shows a preview of your team before battles. Quickly check your party setup and make smarter...