- Java 100%
| .forgejo/workflows | ||
| docs | ||
| gradle/wrapper | ||
| src/main | ||
| .gitattributes | ||
| .gitignore | ||
| build.gradle | ||
| CONTRIBUTING.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| IDEAS.md | ||
| LICENSE | ||
| README.md | ||
| settings.gradle | ||
FTM-Library
FTM-Library is a shared NeoForge 1.21.1 library module for FT-MC mods.
It is intended to become the common base for the dependency chain:
ftm-library- future shared sub-libraries
- mod-specific feature modules built on top of the shared base
Release Flow
FTM-Library follows the same release model as the starter mod:
- build once in Forgejo
- create a Forgejo release with the built jar
- publish the same jar to Nexus
- optionally publish alpha, beta, and stable releases to Modrinth and CurseForge by manual dispatch
Workflow
- Build and release automation lives in
.forgejo/workflows/build.yml - Contribution rules live in
CONTRIBUTING.md - Future library ideas live in
IDEAS.md - Versioning and changelog rules live in
docs/versioning.md
The workflow uses java-ci only for the Gradle build. Release metadata, Forgejo publishing, Nexus publishing, and manual external publishing use the other idle runners.
Release notes reset at the previous Forgejo tag, so each release only shows the commits that landed since the last published release.
If you want to add a new shared library feature, write it down in IDEAS.md first. That keeps the main library focused on the current stable surface and makes it easier to decide what should become real API next.
Publish Secrets
For external publishing:
- Put these in organization secrets:
MODRINTH_TOKENCURSEFORGE_TOKEN
- Put these in repository secrets:
MODRINTH_PROJECT_IDCURSEFORGE_PROJECT_ID
Modrinth and CurseForge publishing is skipped for -rc releases.
Stable releases keep the semver version string unchanged and only add -stable to the visible release name.
The external publish path is manual and uses the Forgejo UI dispatch input publish_external=true.
Local Setup
If you need to refresh dependencies:
./gradlew --refresh-dependencies
./gradlew clean
Reference
- NeoForge docs: https://docs.neoforged.net/
- NeoForge mappings reference: https://github.com/NeoForged/NeoForm/blob/main/Mojang.md