# 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//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). ```bash ./scripts/build-all.sh # build every manifest in mods/ ./scripts/build-mod.sh ipsable # build one mod ``` Built JARs land in `out//*.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: ```bash 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`. ## Adding a mod 1. `mkdir mods/` 2. Write `mods//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.