# FKRPG Optimization Report — 2026-08-27 > Packwiz is source of truth. All changes via `server_pack/` → MRPACK → LOCAL TEST → benchmark → VPS. ## SYSTEM - **OS (local)**: Linux (Fish shell) — local commands Fish-compatible; CI uses bash. - **Repo**: `/home/mithral/Documents/F##KRPG` @ `14b5dc3`, `packwiz` binary `2026-08-19` (`/usr/bin/packwiz`). - **Local test**: `~/.auto-mcs/Servers/FKRPG` (142 jars, drift 1 missing vs Packwiz 143 — see drift). - **Production**: `docker-compose.yml` `itzg/minecraft-server` `FABRIC_LOADER 0.19.3` `INIT 8G MAX 10G` file-mount `/modpacks/pack.mrpack` (`server-pack.mrpack`). - **DRIFT status**: `LOCAL ≠ PACKWIZ` (1 missing `c2me-fabric-...364.jar`), `PRODUCTION ≠ PACKWIZ` unknown (no local `data/mods` hint) — run full audit on VPS. ## MINECRAFT - `1.21.1` (both packs `pack.toml:13`). - `server.properties:26` `initial-enabled-packs` includes `tectonic:tectonic` as disabled? Actually `initial-disabled-packs=...,tectonic:tectonic` — verified intentional (Tectonic datapack disabled in level-settings but still active via mod). - `generate-structures true`, `level-type default` + Tectonic/Terralith via mods. ## FABRIC - Loader `0.19.3` (`server_pack/pack.toml:12`). - Fabric API `0.116.15+1.21.1` (`P7dR8mSH/Nlt8gI9z`) — latest for 1.21.1 lineage is `0.128+`? Verify — potentially outdated, but Fabric API is `LIBRARY` — review before update (may affect Cardinal/Trinkets). - Kotlin `1.13.13+kotlin.2.4.10`. ## PACKWIZ - `pack-format packwiz:1.1.0`, `index hash sha256 fc014e14...` (`server_pack/pack.toml:9`). - Integrity `tools/validate_pack.py:53 OK: 143 mods indexed, all have [download] url or metadata source`. - `optimization-manifest.json:1` + `mod-version-policy.json:1` created Phase 0, tracking all 143 server mods. - CI `build-pack.yaml:36-66` does refresh/validate/export but not yet manifest/hash gates — add in Phase 2. ## LOCAL ENVIRONMENT - Path `~/.auto-mcs/Servers/FKRPG` — 142 jars, `c2me` missing (audit FAIL correctly). - Configs: `config/chunksmith/config.json` `throttleTargetMspt 300`, `tickBudget 15` — aggressive but safe. - Logs: not yet inspected via Spark — `baseline.json:1` placeholder. ## PRODUCTION ENVIRONMENT - VPS Docker `caddy` + `mc` on `25565/8123`. - Deploy must be atomic: download Mrpack asset → wipe `data/mods data/config data/cache` → `docker compose up -d` (per `docker-compose.yml:15`). - **NOT TESTED YET** — local must pass first. Rollback `releases/1.0.0` golden not yet cut. ## OPTIMIZATION MODS | mod | current | side | classification | status | |---|---|---|---|---| | Lithium | `0.15.0+mc1.21.1` (`gvQqBUqZ/MM5BBBOK`) | both | OPTIMIZATION | **OUTDATED** → `0.16.x` latest; mixins ok defaults optimal — propose patch `1.0.1` | | ModernFix | `5.25.1` (`nmDcB62a/NnNX8LBn`) | both | OPTIMIZATION | review `config/modernfix-mixins.properties`; safe server defaults only | | FerriteCore | `7.0.2-hotfix` (`uXXizFIs/bwKMSBhn`) | both | OPTIMIZATION | **OUTDATED** → `8.x` for 1.21.1; keep safe memory opts | | Noisium | `2.3.0` (`KuNKN7d2/4sGQgiu2`) | server | OPTIMIZATION | verify enabled, compatible | | C2ME | `0.3.0+alpha.0.364` (`VSNURh3q/DSqOVCaF`) | both | OPTIMIZATION | **DRIFT** missing locally; newer `0.4.0-alpha.0.27+` available per `perf.md` — requires compat test with expansive Tectonic (`vertical_scale 1.28`) | | ChunkSmith | `3.13.0+1.21.1` (`4BeAEBIb/WGnQTosc`) | both | OPTIMIZATION | installed 3.13.0 (perf.md cites 3.4.1 old); throttle `45ms target` etc. | | Alternate Current | `1.9.0` (`r0v8vy1s/78P98rac`) | server | OPTIMIZATION | keep `enabled true nonLocational true` (`alternate-current.conf`) | | Krypton | `0.2.8` (`fQEb0iXm/Acz3ttTp`) | both | OPTIMIZATION | zero-conf | | Packet Fixer | `3.3.1` (`c7m1mi73/2C41Q8WX`) | both | OPTIMIZATION | audit compression thresholds | | Debugify | `1.21.1+1.0` | both | OPTIMIZATION | overlaps with ModernFix/Lithium — keep safe | Policy: `TEST_BEFORE_PRODUCTION` — detect ≠ install. ## WORLDGEN MODS | mod | current | notes | |---|---|---| | Tectonic | `3.0.22` | tuned `tectonic.json` 0.19 continents, 1.28 vertical — FROZEN seed-affecting | | Terralith | `2.6.2` | `terralith.json` skylands false | | Continents | `26.2_v1.1.14 (bVXaqvWr)` | **WRONG BUILD** — should be `1.21.x_v1.1.12 (3hhSlpEU)` per docs; flagged `REVIEW_REQUIRED` | | Lithostitched | `1.8.0+beta5` | `breaks_seed_parity true` | | TerraBlender | `4.1.0.8` | biome API | | Geophilic | `v3.4.1 f15-71` | | | Wilder Wild | `4.2.1` + `FrozenLib 2.2.4` | worldgen json5 | | CTOV | `3.6.3` | village | | River Redux | `0.4.1` | | | StoneZone | `2.11.17` | | | Stoneworks | `v21.1.0` | | | EveryCompat | `2.11.50` | | | YUNG API/Better Monuments/Witch Huts | `5.1.5/4.1.2/4.1.1` | | | Serene Seasons | `10.1.0.1` | fertility/seasons.toml | All `WORLDGEN` → `EXPLICIT_APPROVAL_REQUIRED`, `automatic_updates false`. Update proposal must show changelog/perf/worldgen/migration risk + approval gate. ## IMMUTABLE MODS 31 `FROZEN` (prompt absolute): `spell-engine 1.7.0`, `spell-power 1.3.0`, `wizards 2.4.9`, `archers 2.4.10`, `archers-expansion 1.3.9`, `armory 1.0.0`, `arsenal 1.2.0`, `berserker 2.4.7`, `forcemaster 2.4.7`, `witcher 2.4.10`, `more-rpg-classes 2.3.5`, `skill-tree 1.0.0`, `skills (puffish) 0.16.4`, `origins 1.13.0-alpha.12`, `extra-origins r3`, `better-combat 2.2.0`, `simply-swords 1.63.0`, `relics 1.0.4`, `trinkets 3.10.0`, `paladins 2.4.11`, `rogues 2.4.9`, `elemental-wizards 2.4.9`, `dragonsteel 0.0.3`, `morerunes 0.0.2`, `more_spell_attributes 0.0.8`, `runes 1.3.2`, `jewelry 2.0.10`, etc. plus libs `pehkui, playeranimator, ranged-weapon-api, owo-lib`. Audit `tools/audit.py` never proposes updates to these — would emit `BLOCKED — IMMUTABLE RPG/MAGIC/COMBAT STACK`. ## OUTDATED MODS - Detected offline from filenames vs docs: Lithium, FerriteCore, C2ME, Continents (wrong game version), Fabric API potentially. Run `fish tools/audit.fish --check-outdated` for live Modrinth query (network). Worldgen `REVIEW_REQUIRED`, optimization `SAFE UPDATES` (needs local test). ## SAFE UPDATES (test before prod) 1. **Lithium 0.15.0 → 0.16.x** — patch `1.0.1` candidate, lowest risk, verify mixins. 2. **FerriteCore 7.0.2 → 8.x** — memory opts, test GC. 3. **C2ME 0.3.0 → 0.4.0+** — compat matrix (terrain/biomes/structures/dims/teleport/save). 4. **Continents fix 26.2→1.21.x** — actually **worldgen** so not safe-auto; still high priority fix (current jar built for snapshots). Each: apply to LOCAL TEST → backup → pack refresh → validate → start → Spark → benchmark → approve → MRPACK → hash → VPS. ## REVIEW REQUIRED - All `WORLDGEN` (21 mods) — including the Continents fix — require explicit approval and migration risk doc (seed change, chunk gen). - `LIBRARY` 34 (Architectury/Balm/Puzzles etc.) — review may affect FROZEN deps. - `GAMEPLAY` 47 — case-by-case (e.g., `squaremap` vs `dynmap` redundancy). ## PERFORMANCE BASELINE - `baseline.json:1` placeholder `tps 20.0 mspt 25.4 mem 7.1G gc 3.2ms`. **No real Spark capture yet.** - Next: start local server, `spark profiler --timeout 300`, fill baseline; commit as golden. ## PERFORMANCE REGRESSIONS - None measured yet. Drift prevents clean baseline — fix C2ME missing first. ## CONFIGURATION - `chunksmith/config.json` — `continueOnRestart true`, `throttleTargetMspt 300`, `throttleMaxHeap 80%`, `lodEnabled auto`, `csloD 1024MB`. - `alternate-current.conf` — `enabled true`. - `server.properties:17-64` — `view-distance 10`, `simulation 10`, `sync-chunk-writes true`, `compression 256`, `entity-broadcast 100`, `max-tick-time 60000`. `sync-chunk-writes true` safe for HDD but costs perf — recommend `false` only after confirming NVMe + tests. - `modernfix-mixins.properties` — audit needed. - RPG configs (spell_engine, origins etc.) — **immutable, not tuned**. ## JVM - Docker `INIT 8G MAX 10G` (compose). Java version unknown — need `java -version` on VPS. Recommend Java 21 + `UseG1GC` (default) or `ZGC` (`-XX:+UseZGC` per README) with headroom for OS/cache/backups. Do not allocate 100% RAM. ## NETWORK - `krypton 0.2.8`, `packet-fixer 3.3.1`, `network-compression-threshold 256`, `view-distance 10`. - Evaluate chunk send rate, entity tracking, avoid unlimited packets. `moreCulling` client-only. ## STORAGE - Local unknown; VPS unknown — run `lsblk -d -o name,rota,model` + `df -h` on VPS. If HDD → major bottleneck for `sync-chunk-writes true`. ## PREGENERATION - ChunkSmith pregeneration: target idle high rate, throttled online via `MSPT/TPS`. Noisium + C2ME compatible. Test `/chunksmith pregen 128` + `cslod status`. ## DISTANT HORIZONS - Not in pack (private Voxy excluded). ChunkSmith CSLOD via `port+1` backchannel. Client JVM `-XX:+UseZGC` suggested. Do not inflate server `view-distance` for DH. ## MAP SYSTEMS - `squaremap 1.3.2` (server), `Xaero Minimap/World Map` + `MapLink 4.5.1` + `MapSyncer 1.0.3` (client-leaning). `dynmap` excluded per compose. Evaluate redundant server rendering — Squaremap should be sole server web map; Xaero client via MapLink link `http://frpg.dedyn.io:8123`. ## RISKS - **C2ME missing locally** blocks clean baseline — fix before benchmark. - **Continents wrong jar** may cause biome/terrain warnings — fix to 1.21.x build before pregeneration. - **Fabric API potentially stale** — update may cascade. - **No Spark baseline** → cannot prove optimization. - **No golden release** → no rollback point yet. ## RECOMMENDATIONS 1. Fix drift: reinstall C2ME locally (`packwiz refresh` + copy jar or re-export mrpack). 2. Run `fish tools/audit.fish --check-outdated` to populate live outdated list. 3. Capture `baseline.json` via Spark on fixed local. 4. Cut `releases/1.0.0` golden (current 1.0 pack) with hashes before any optimization. 5. Apply safe optimization patch `1.0.1` (Lithium/FerriteCore) on LOCAL → benchmark → approve. 6. Separately propose `1.1.0` for Continents fix + worldgen review (requires seed migration doc). 7. Extend CI `build-pack.yaml` with manifest/hash/drift gates. --- *Generated 2026-08-27 from audit + manifest + policy. Packwiz is source of truth.*