This is an example mod for Minecraft that written in multiple languages and mod loaders. This project aims to better visualize the information between languages and how certain common code can remain similar between loaders for easier maintainability and support.
Loader | Language | 1.17.x | 1.18.x | 1.19.x |
---|---|---|---|---|
Forge | Java | ✔️ | ✔️ | ✔️ |
Kotlin | ✔️ | ✔️ | ✔️ | |
Scala | ✔️ | ✔️ | ✔️ | |
Groovy | ✔️ | ✔️ | ✔️ | |
Fabric | Java | ✔️ | ✔️ | ✔️ |
Kotlin | ✔️ | ✔️ | ✔️ | |
Scala | ✔️ | ✔️ | ✔️ | |
Groovy | ✔️ | ✔️ | ✔️ | |
Quilt | Java | ❌ | ✔️ | ✔️ |
Kotlin | ❌ | ✔️ | ✔️ | |
Scala | ❌ | ✔️ | ✔️ | |
Groovy | ❌ | ✔️ | ✔️ |
All versions supported can be found as a branch on the repository. They will always be written as a subset of the major version being referred to (e.g. all 1.18 snapshots will be under the 1.18.x
branch).
Each language/loader combination will be considered a subproject within the gradle environment. Each subproject is labeled as <loader>/<loader>-<language>
. Language version is specified for non-Java projects as many versions of other JVM languages can compile to one Java language.
The entire project is licensed under Creative Commons Zero. That means that all copyright for this project is waived and can be used anywhere. Note that trademarks and patents are not granted, warranty is not provided, and there is no liability on the authors of this project for anything done with it.
PRs made to this repo should be in the JVM language and mod loader you are most comfortable with. PRs should also be made to the latest release version of Minecraft. All PRs have two phases: the initial PR and the port PRs. The initial PR will have the change containing the language and loader of your choosing. Once approved, port PRs will be made to the other languages and loaders. Once they have been approved, the PRs will then be merged at once.