MultiLoader Template
This project provides a Gradle project template that can compile Kotlin mods for both Forge and Fabric using a common sourceset. This project adds a dependency on KotlinForForge and fabric-language-kotlin.
Getting Started
IntelliJ IDEA
This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up Forge and Fabric independently and should be very familiar to anyone who has worked with their MDKs.
- Clone or download this repository to your computer.
- Configure the project by editing the
group
,mod_name
,mod_author
, andmod_id
properties in thegradle.properties
file. You will also need to change therootProject.name
property insettings.gradle
. - Open the template's root folder as a new project in IDEA. This is the folder that contains this README file and the gradlew executable.
- If your default JVM/JDK is not Java 17 you will encounter an error when opening the project. This error is fixed by going to
File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM
and changing the value to a valid Java 17 JVM. You will also need to set the Project SDK to Java 17. This can be done by going toFile > Project Structure > Project SDK
. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project. - Open the Gradle tab in IDEA if it has not already been opened. Navigate to
Your Project > Common > Tasks > vanilla gradle > decompile
. Run this task to decompile Minecraft. - Open the Gradle tab in IDEA if it has not already been opened. Navigate to
Your Project > Forge > Tasks > forgegradle runs > genIntellijRuns
. Run this task to set up run configurations for Forge. - Open your Run/Debug Configurations. Under the Application category there should now be options to run Forge and Fabric projects. Select one of the client options and try to run it.
- Assuming you were able to run the game in step 7 your workspace should now be set up.
Eclipse
Eclipse is in my personal opinion irrelevant when it comes to writing Kotlin code so I will not spend time on it. Feel free to PR changes to support this :)
Development Guide
When using this template the majority of your mod is developed in the Common project. The Common project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The Common project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the Forge or Fabric project.
Loader specific projects such as the Forge and Fabric project are used to load the Common project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all of the code in the Common project. It is important to remember that the Common project can not access code from loader specific projects.