Build from source
Use the included Gradle wrapper. It runs Gradle 9.6.1 with the Java 21 daemon. The project downloads Adoptium toolchains when needed:
- Minecraft 1.20.1 targets use Java 17.
- Minecraft 1.21.1 targets use Java 21.
The supported targets remain:
1.20.1-fabric1.20.1-forge1.21.1-fabric1.21.1-neoforge
./gradlew build buildAndCollect
The JARs and source JARs are written to build/libs/<mod-version>/. The
buildAndCollect task builds and copies runtime and source JARs. It does not
run tests.
Run a development client or server with the normal target task:
./gradlew :1.20.1-fabric:runClient
./gradlew :1.20.1-fabric:runServer
./gradlew :1.20.1-forge:runClient
./gradlew :1.20.1-forge:runServer
./gradlew :1.21.1-fabric:runClient
./gradlew :1.21.1-fabric:runServer
./gradlew :1.21.1-neoforge:runClient
./gradlew :1.21.1-neoforge:runServer
All development runs use the shared root run/ directory. A dedicated
server needs the Minecraft EULA accepted in run/eula.txt.
Target metadata, dependency versions, Minecraft ranges, and publishing IDs
are in stonecutter.properties.yml. The current release type is beta.
Check publishing without uploading with:
./gradlew publishMods -Ppublish.dry_run=true
This uses the publishing plugin’s dry-run mode. It validates the packages and
prints publishing metadata without uploading files. Gradle --dry-run only
previews task execution. Publishing accepts credentials from Gradle properties
publish.modrinth_token, publish.curseforge_token,
mavenRepositoryUsername, and mavenRepositoryPassword, or from the matching
environment variables MODRINTH_TOKEN, CURSEFORGE_TOKEN,
MAVEN_REPOSITORY_USERNAME, and MAVEN_REPOSITORY_PASSWORD.