Skip to content

Using Stope from a mod

Stope 2.0.0 ships one file per loader (stope-fabric-…, stope-forge-…). A mod depends on the file for each loader it builds, never includes it, and declares a version range, since one installed Stope serves every mod that uses it.

Resolve Stope through CurseMaven. Stope’s CurseForge project ID is 1779366; the stope- label is free text.

repositories {
exclusiveContent {
forRepository { maven { url = "https://cursemaven.com/" } }
filter { includeGroup "curse.maven" }
}
}
dependencies {
modImplementation "curse.maven:stope-1779366:<fileId of this loader's file>"
}

Stope publishes a second sources artifact, classifier api-sources, with only the public API package (us.someguy.stope.api) and its Javadoc: the contract without the internal code. It is the same for both loaders, so it is attached to the Fabric CurseForge file only, as an additional file (stope-<version>-api-sources.jar). Through CurseMaven it resolves as the api-sources classifier of the Fabric file, for Forge projects too: curse.maven:stope-1779366:<fabricFileId>-api-sources-<apiSourcesFileId>. Attach it in your IDE when browsing Stope’s API; it is never needed to compile.

In the consuming mod’s file upload, mark Stope as a required relation so the CurseForge app and modpack tools install it. On the project page, link Stope’s page: https://www.curseforge.com/minecraft/mc-mods/stope. Do not list Fabric API or Mod Menu: Stope requires Fabric API and suggests Mod Menu, so a consumer requires only Stope.

  • Stope requires Fabric API. A consumer that reaches Minecraft only through Stope declares no Fabric API module in its fabric.mod.json; one that still calls Fabric API itself lists each module it calls (Loader checks them; Stope’s requirement installs them).
  • Stope suggests Mod Menu. From 2.0.0 a consumer registers its settings screen with ConfigScreens.register and drops its own modmenu entrypoint and Mod Menu dependency; Stope’s modmenu entrypoint provides the screen. Do not repeat the suggestion.