No description
Find a file
MiTHRAL 5c9419c618
Some checks failed
Build Custom Server Mods / build (push) Failing after 1m31s
chore: remove stray smoketest manifest
2026-08-20 13:03:32 -04:00
.gitea/workflows feat: custom server mods build pipeline (IPSable, Create Diesel Generators) 2026-08-20 13:03:24 -04:00
mods chore: remove stray smoketest manifest 2026-08-20 13:03:32 -04:00
scripts feat: custom server mods build pipeline (IPSable, Create Diesel Generators) 2026-08-20 13:03:24 -04:00
.gitignore feat: custom server mods build pipeline (IPSable, Create Diesel Generators) 2026-08-20 13:03:24 -04:00
README.md feat: custom server mods build pipeline (IPSable, Create Diesel Generators) 2026-08-20 13:03:24 -04:00

Custom Server Mods

Builds permissively-licensed custom forks / newer-than-release builds of mods used by the SciCraft NeoForge 1.21.1 modpack, and publishes the resulting JARs as release assets that packwiz entries can point at.

Only mods whose licenses permit redistribution (MIT / Apache-2.0 / LGPL / BSD / MPL) are included. Every mod has a mods/<name>/manifest.sh describing exactly what gets cloned and built. Nothing is built unless a manifest exists.

Why

Some mods we use are either:

  • abandoned/buggy upstream (their Modrinth/CurseForge release is stale or broken), or
  • ahead of release — the GitHub source has fixes not yet published to Modrinth/CurseForge.

For those, we compile from source and host our own build so the pack always gets the fixed/newest behavior without waiting on a release.

Current manifests

Mod License Why we build it Build cmd
ipsable Apache-2.0 Immersive-Portals×Sable fork; experimental, GitHub-only ./gradlew jarJar
create-diesel-generators MIT GitHub ahead of Modrinth (CME fix, configurable oil barrel) ./gradlew build

Build locally

Requires JDK 21 and network access (NeoForge deps are downloaded by Gradle).

./scripts/build-all.sh          # build every manifest in mods/
./scripts/build-mod.sh ipsable  # build one mod

Built JARs land in out/<mod>/*.jar (gitignored).

Build via CI

The Gitea Actions workflow .gitea/workflows/build-mods.yaml runs the same logic on the runner and uploads each JAR to the GitHub/Gitea release assets for the tag that triggered it. Tag with v* to publish:

git tag v0.1.0 && git push origin v0.1.0

The pack's *.pw.toml entries then reference https://git.mithraic.cloud/ad3laid3/custom-server-mods/releases/download/v0.1.0/<jar>.jar.

Adding a mod

  1. mkdir mods/<name>
  2. Write mods/<name>/manifest.sh (see existing manifests for the shape):
    • MOD_NAME, SOURCE_URL (git clone URL), SOURCE_REF (tag/branch/commit)
    • BUILD_CMD (e.g. ./gradlew jarJar), JAR_GLOB (relative to the source dir)
    • LICENSE (must be permissive — review before adding)
  3. Optionally add a patch/ step if you maintain local fixes (see PATCH_CMD).
  4. Commit, tag vX, push; CI builds and attaches the JAR.

License review policy

Only add a mod here if its license allows redistribution AND it's already used (or intended) in the SciCraft pack. When in doubt, do not add it. Re-review licenses whenever the upstream source changes.