Build files:
File | Description |
---|---|
build.gradle |
Configures the compilation process. |
gradle.properties |
Contains properties for Minecraft, fabric, and your mod. |
settings.gradle |
Configures the plugin repositories. |
Fabric files:
These files are located at src/main/resources
.
File | Description | Additional information |
---|---|---|
fabric.mod.json |
Contains metadata about your mod. | wiki:fabric_mod_json_spec |
modid.mixins.json |
Contains a list of all your mixin files. | wiki:mixin_registration |
assets/modid/icon.png |
The icon of your mod. | wiki:fabric_mod_json_spec#icon |
First of you must replace all occurrences of modid
with the id of your mod.
If your mod doesn't use mixins you can safely remove the mixin entry in your fabric.mod.json
as well as delete any *.mixin.json
files.
This template has the legacy fabric api included in it's build script, more info about the api can be found at it's github repo. If you know what you are doing you can also safely remove the api from the build script as it isn't required.
# Compile your mod
./gradlew build
# Remove old build files
./gradlew clean
# Generate Minecraft sources
./gradlew genSources
# Launch a modded Minecraft client
./gradlew runClient
# Kill gradle if it's doing stupid things
./gradlew --stop
For more detailed setup instructions please see the fabric wiki.
If you are new to fabric or Minecraft modding in general then this wiki page may help you.
The minotaur gradle plugin is a tool for deploying build artifacts to Modrinth.
For more info see https://github.com/modrinth/minotaur#readme
Usage example
// build.gradle
plugins {
id "com.modrinth.minotaur" version "2.+"
}
modrinth {
token = System.getenv("MODRINTH_TOKEN")
projectId = "my-mod"
versionNumber = "${project.mod_version}"
versionName = "my-mod v${project.mod_version}"
versionType = "release"
uploadFile = remapJar
gameVersions = ["1.8.9"]
loaders = ["fabric"]
dependencies {
required.project "legacy-fabric-api"
}
}
To publish to Modrinth run:
./gradlew build modrinth
In order to implement the api of a mod, for example to add your mod settings to Mod Menu, it is required that you add that mod to your build script as a dependency with modImplementation
. To simplify this setup Modrinth allows you to load mods directly from there maven.
More info about this can be found in the Modrinth docs.
For more info about loom dependencies see the fabric wiki.
Usage example
// build.gradle
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
filter {
includeGroup "maven.modrinth"
}
}
}
dependencies {
modImplementation "maven.modrinth:legacy-mod-menu:1.1.0"
}
By default the genSources
task uses the fabric cfr decompiler to generate Minecraft sources.
Vineflower is a decompiler which contains many enhancements and generally produces much better source code.
With the loom-vineflower plugin it is possible to integrate it directly into your project.
For more info see https://github.com/Juuxel/loom-vineflower#readme
Usage example
// build.gradle
plugins {
id 'io.github.juuxel.loom-vineflower' version "1.11.0"
}
Instead of genSources
, you can now run:
./gradlew genSourcesWithVineflower
This template is available under the CC0 license. Feel free to learn from it and incorporate it in your own projects.