custom-server-mods/README.md

67 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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).
```bash
./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:
```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>.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.