67 lines
2.5 KiB
Markdown
67 lines
2.5 KiB
Markdown
# 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.
|