# Pack tweaks

This folder is the source for any data-only NeoForge mods we ship with the
modpack. Each subfolder becomes one jar at build time.

The build pipeline:

```
pack/tweaks/<name>/  --(Build-Tweaks.ps1)-->  pack/overrides/mods/<name>-<ver>.jar
                                                  |
                                                  v
                                         (Build-Pack.ps1 picks it up)
                                                  |
                                                  v
                                         manifest.json -> launcher install
```

Because the output is a real mod jar (with `META-INF/neoforge.mods.toml`),
the data inside auto-loads in **single-player and on the server** -- no
`/datapack enable` needed, no per-world setup.

---

## Adding a new tweak (one big jar, recommended)

The simplest workflow is to keep extending `brassandsigil-tweaks` with more
worldgen / loot / recipe overrides. Just drop more JSON under
`brassandsigil-tweaks/data/brassandsigil_tweaks/...`.

Common targets:

| What                              | Path                                                                    |
| --------------------------------- | ----------------------------------------------------------------------- |
| Custom configured feature (ore)   | `data/brassandsigil_tweaks/worldgen/configured_feature/<name>.json`     |
| Custom placed feature             | `data/brassandsigil_tweaks/worldgen/placed_feature/<name>.json`         |
| Lithostitched modifier            | `data/brassandsigil_tweaks/lithostitched/worldgen_modifier/<name>.json` |
| Override another mod's loot table | `data/<their_modid>/loot_table/blocks/<name>.json`                      |
| Override another mod's recipe     | `data/<their_modid>/recipe/<name>.json`                                 |
| Override / extend a vanilla tag   | `data/minecraft/tags/<registry>/<name>.json`                            |

After editing, bump the `version` in
`brassandsigil-tweaks/META-INF/neoforge.mods.toml` so launcher clients see
it as a new file and re-download.

## Adding a separate tweak mod

Make a sibling folder. The structure must be:

```
tweaks/
  <my-tweak>/
    META-INF/
      neoforge.mods.toml      # modId + version are required
    pack.mcmeta               # pack_format: 48 for 1.21.1
    data/
      <my_namespace>/
        ...
```

`Build-Tweaks.ps1` reads `modId` and `version` from the toml and produces
`pack/overrides/mods/<modId>-<version>.jar`. Old jars for the same `modId`
are auto-cleaned, so version bumps don't leave stale files behind.

---

## What's in `brassandsigil-tweaks` today

- **`skylands_end_stone_ore`** -- adds small End Stone veins to Terralith's
  Skylands biomes (`#terralith:skylands`). Targets `stone_ore_replaceables`
  so it only replaces the stone interior of the floating islands. Powers the
  Aeronautics Levitite-blend recipe without forcing players to visit The
  End. Tuning lives in
  `data/brassandsigil_tweaks/worldgen/placed_feature/skylands_end_stone_ore.json`
  (`count` = veins per chunk; `size` in the configured_feature controls vein size).

---

## Building

From the repo root:

```powershell
# Builds tweak jars + manifest in one shot:
.\scripts\Build-Pack.ps1 -OutputPath .\scripts\manifest.json

# Just rebuild tweak jars:
.\scripts\Build-Tweaks.ps1
```

Then deploy: `.\scripts\Deploy-Brass.ps1` mirrors `pack/overrides/` to the
public share's `files/` subdir and pushes the regenerated manifest alongside.
