Skip to content

Setup

Settings Plugin

While it is not required, the com.possible-triangle.helper settings plugin is recommended.

This plugin automatically adds some plugin repositories (1), for example for NeoForge, Forge, Parchment, SpongePoweded and Architectury.

  1. proxied through registry.somethingcatchy.net
settings.gradle.kts
plugins {
    id("com.possible-triangle.helper") version ("1.2")
}

While all the subprojects are published using a semantic version with a patch segment, the helper plugin only has a major & minor versions. All other com.possible-triangle.* plugins can be specified without a version, and will automatically use the latest patch version found on maven.

This means you will get update improvements whenever a new patch is releases, but these updates should never break the existing functionality. This behaviour can be changed by selecting on of the other version resolution strategies, or by manually specifying a version in the build.gradle.kts plugins.

settings.gradle.kts
import com.possible_triangle.gradle.settings.ResolutionStrategy

helper {
    // will resolve to "1.4-SNAPSHOT" instead of fetching the latest version from maven
    // ! warning, this will often require running --refresh-dependencies when a new patch is released
    versionStrategy = ResolutionStrategy.SNAPSHOT
}

Info

There is a Test Mod that creates a release by an automation twice a week to verify that any newer patch versions are still working for a variety of setups.

You can also reference one of it's branches as a minimal setup.

Configure Properties

There is a variety of mod properties these plugins need in order to work. You can find a table of them here.

Applying Loader Plugins

Depending on the setup, you can apply a loader plugin like com.possible-triangle.neoforge in the root project's build.gradle.kts or only the com.possible-triangle.core plugin and the loader plugins in the sub-projects.

It is recommended to also referene the plugins used in sub-projects with apply (false), in order to prevent class-loading issues. You can see an example of that in the multiloader page.