Skip to content

FabricMC/fabric-language-kotlin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9dec681 · Mar 8, 2024
Nov 1, 2023
Mar 8, 2024
Nov 1, 2023
Nov 1, 2023
Nov 24, 2023
Aug 18, 2016
Dec 28, 2022
Jun 9, 2022
Aug 18, 2016
Mar 8, 2024
Nov 1, 2023
Mar 8, 2024
Nov 1, 2023
Dec 28, 2022
Dec 28, 2022

Repository files navigation

fabric-language-kotlin

maven-badge modrinth-badge curseforge-badge

Fabric language module for Kotlin. Adds support for Kotlin exclusive entrypoints and bundles the Kotlin Stdlib as well as common kotlinx libraries.

Usage

Dependency

Add it as a dependency to your Gradle project:

dependencies {
    modImplementation("net.fabricmc:fabric-language-kotlin:1.10.18+kotlin.1.9.23")
}

Adapter

Use the kotlin adapter for your mod by setting the adapter property in the fabric.mod.json file. Remember to the add a dependency entry to your fabric.mod.json file:

{
    "schemaVersion":  1, 
    "entrypoints": {
        "main": [
            {
                "adapter": "kotlin",
                "value": "package.ClassName"
            }
        ]
    },
    "depends": {
        "fabric-language-kotlin": ">=1.10.18+kotlin.1.9.23"
    }
}

For more info reference the fabric.mod.json documentation.

Do not forget to set the schemaVersion to 1 or it will fall back to schema 0 and will not attempt to load entrypoints.

Entrypoint samples

Kind Class reference Function reference Field reference
class
{
    "adapter": "kotlin",
    "value": "mymod.MyMod"
}
package mymod
class MyMod : ModInitializer {
    override fun onInitialize() {
        TODO()
    }
}
object
{
    "adapter": "kotlin",
    "value": "mymod.MyMod"
}
package mymod
object MyMod : ModInitializer {
    override fun onInitialize() {
        TODO()
    }
}
{
    "adapter": "kotlin",
    "value": "mymod.MyMod::init"
}
package mymod
object MyMod  {
    fun init() {
        TODO()
    }
}
{
    "adapter": "kotlin",
    "value": "mymod.MyMod::initializer"
}
package mymod
object MyMod  {
    val initializer = ModInitializer {
        TODO()
    }
}
companion object
{
    "adapter": "kotlin",
    "value": "mymod.MyMod$Companion"
}
package mymod
class MyMod {
    companion object : ModInitializer {
        override fun onInitialize() {
            TODO()
        }
    }
}
{
    "adapter": "kotlin",
    "value": "mymod.MyMod$Companion::init"
}
package mymod
class MyMod  {
    companion object {
        fun init() {
            TODO()
        }
    }
}
{
    "adapter": "kotlin",
    "value": "mymod.MyMod$Companion::initializer"
}
package mymod
class MyMod  {
    companion object {
        val initializer = ModInitializer {
            TODO()
        }
    }
}
top level
{
    "adapter": "kotlin",
    "value": "mymod.MyModKt::init"
}

File: src/main/kotlin/mymod/MyMod.kt

package mymod

fun init() {
    TODO()
}

Companion objects can be used by appending $Companion to the class. Take care of processResources there, it might try to expand it, in that case escape it.

Bundled libraries

org.jetbrains.kotlin namespace:

org.jetbrains.kotlinx namespace:

Available Versions

https://maven.fabricmc.net/net/fabricmc/fabric-language-kotlin/

Updating README

  • Update the readme in templates/README.template.md.
  • Run ./gradlew processMDTemplates.