Replace Chunky with Distant Horizons server-side Full-mode pregen

Chunky + DH-on-server crashes on first chunk load (confirmed open
upstream bug, DH GitLab #1329). DH's own INTERNAL_SERVER generation
mode does the same pregen job without the conflict, plus streams
accurate LOD to clients automatically (no manual flying pass needed).
Corrects Vivecraft/CPM/ViveCraft Compat to both-sides (needed for
other players to see VR body movement, not just client-only). Fixes
lazymc.toml duration-string bug (sleep_after wants an integer, not
"5m"). Replaces the screenshot-derived mod list with ground truth
from the actual exported client zip.
This commit is contained in:
Mykhailo Ivanchenko
2026-10-23 15:40:06 +02:00
parent cd694a67b6
commit 8226642be5
3 changed files with 66 additions and 67 deletions
+38 -37
View File
@@ -35,7 +35,7 @@ Target: **Minecraft 1.20.1, Forge**. This version/loader combo has the widest, m
| [FTB Teams (Forge)](https://www.curseforge.com/minecraft/mc-mods/ftb-teams-forge) | Required dependency of FTB Quests — also lets you decide whether quest progress is per-player or shared per-team, worth deciding before building the quest line (per-player means everyone cooks everything themselves; shared team means the group completes the roadmap together). |
| [Architectury API](https://modrinth.com/mod/architectury-api) | Required dependency (cross-loader API FTB's mods are built on). |
All four go in **both** client and server `mods/` folders — unlike Distant Horizons/Chunky above, quest progress is synced through the server, so it's not optional on either side.
All four go in **both** client and server `mods/` folders — quest progress is synced through the server, so it's not optional on either side (same as Distant Horizons and the VR mods, see below).
**Install via Fjord's built-in CurseForge/Modrinth browser, not manual jars** — these four mods have had real version-mismatch bugs between each other on 1.20.1 ([example](https://github.com/FTBTeam/FTB-Mods-Issues/issues/1168)), and the in-launcher browser resolves compatible dependency versions automatically instead of you having to hand-pick a working combination.
@@ -45,24 +45,23 @@ All four go in **both** client and server `mods/` folders — unlike Distant Hor
| Mod | Side | Why it's in |
|---|---|---|
| [Vivecraft](https://modrinth.com/mod/vivecraft) | Client only | Adds VR rendering/motion controls for anyone with a **PC-tethered or PC-streamed headset** (Index, Vive, or a Quest using Air Link/Virtual Desktop into a gaming PC). Pure client-side — connects to the same server as everyone else playing on a flat screen, no server mod required for basic play. |
| [ViveCraft Compat](https://www.curseforge.com/minecraft/mc-mods/vivecraft-compat) | Client only | Patches specific interactions between Vivecraft and other mods in this pack — notably **Create** (fixes driving trains, track hitboxes, elevator controls in VR) and HUD overlay support for Jade. Requires Vivecraft. |
| Customizable Player Models | Client only (likely also needs server-side for other players to see the model — verify) | Pulled in by Fjord's dependency resolver alongside Vivecraft; lets a player's in-VR avatar/body be customized rather than using the default. |
| [Vivecraft](https://modrinth.com/mod/vivecraft) | **Both client and server** | Adds VR rendering/motion controls for anyone with a **PC-tethered or PC-streamed headset** (Index, Vive, or a Quest using Air Link/Virtual Desktop into a gaming PC). Correction from earlier: this needs the Vivecraft mod on the dedicated server too, not just the client — without it, other players (VR *and* flatscreen alike) only see the VR player's vanilla default swing animation instead of their actual arm/head/body movement. (The "Vivecraft Spigot Extensions" plugin that does this job on Spigot/Paper servers doesn't apply here since we're Forge — it's the same Vivecraft mod jar on both sides.) |
| [ViveCraft Compat](https://www.curseforge.com/minecraft/mc-mods/vivecraft-compat) | **Both client and server** | Patches specific interactions between Vivecraft and other mods in this pack — notably **Create** (fixes driving trains, track hitboxes, elevator controls in VR) and HUD overlay support for Jade. Requires Vivecraft. Since those interactions (e.g. train physics) are server-authoritative, this goes server-side too. |
| Customizable Player Models | **Both client and server** | Pulled in by Fjord's dependency resolver alongside Vivecraft; lets a player's in-VR avatar/body be customized. Same pattern as Vivecraft — other players need the server to relay that data to see the custom model/movement. |
**Note on standalone Quest headsets (no PC):** this is for *PC-tethered/streamed* VR only. A standalone Meta Quest with no gaming PC involved would use **QuestCraft** instead — a separate sideloaded Android app that bundles its own Minecraft+Vivecraft runtime directly on the headset. QuestCraft does **not** go through Fjord/`install.sh`/`install.ps1` at all; it's installed on the headset itself via sideloading tools (SideQuest etc.), connects to the same server address, but has its own separate mod manager with less certain compatibility against a heavy pack like this one (Create/Flywheel especially). If anyone at the party wants to join standalone without a PC, treat that as a separate per-person setup, not something this repo's scripts handle.
Vivecraft auto-detects whether a headset is actually connected and falls back to normal flatscreen play otherwise — so it's safe to leave in the single shared `modpack.zip` for everyone rather than maintaining a separate VR-only instance; people without a headset just won't notice it's there.
Vivecraft auto-detects whether a headset is actually connected and falls back to normal flatscreen play otherwise — so it's safe to leave in the single shared `modpack.zip` for everyone rather than maintaining a separate VR-only instance; people without a headset just won't notice it's there. The server-side requirement above means these three mods need to be in the dedicated server's `mods/` folder unconditionally too, even if nobody ends up using VR that day — it's not optional/elective like Distant Horizons.
## Performance utility
| Mod | Side | Why it's in |
|---|---|---|
| [Distant Horizons](https://modrinth.com/mod/distanthorizons) | Client only | Renders a simplified level-of-detail view of terrain beyond the server's `view-distance`, so players see far-off scenery without the server having to actually load/send those chunks. Does the same job you were picturing from "Bobby" — Bobby itself is **Fabric-only** (no Forge build exists), so Distant Horizons is the Forge equivalent. Caches the LOD data locally per-world, same idea as Bobby's chunk cache. |
| [Chunky](https://www.curseforge.com/minecraft/mc-mods/chunky-pregenerator-forge) | Server only | Pre-generates a fixed radius of chunks around a chosen center (e.g. spawn/build area) **once, before the party**, via console/RCON commands (`/chunky radius`, `/chunky start`) — eliminates on-the-fly world-gen lag while people explore. **Not** a per-player dynamic follower on Forge — that variant ("Chunky Pregenerator") is Fabric-only, same restriction as Bobby. See `HOSTING.md` for the exact commands. |
| [Distant Horizons](https://modrinth.com/mod/distanthorizons) | **Both client and server** | Renders a simplified level-of-detail view of terrain beyond the server's `view-distance`, so players see far-off scenery without the server having to actually load/send those chunks. Does the same job you were picturing from "Bobby" — Bobby itself is **Fabric-only** (no Forge build exists), so Distant Horizons is the Forge equivalent. Installing the same DH build on the server too lets it push accurate LOD data to clients directly — no manual exploring/flying needed, and it replaces Chunky's job (see below). |
**Do not install Distant Horizons on the dedicated server, even though DH has an optional server-side mode for pushing accurate LOD data without clients needing to explore.** DH-on-server + Chunky-on-server together crashes the world on first chunk load (`IllegalStateException: Chunky is not loaded`, thrown from DH's Chunky-compat accessor trying to bind to a provider API that's only properly initialized on Bukkit/Paper's Chunky plugin, not the Forge mod port). Keep DH strictly client-only as documented above; get accurate distant terrain by having the host physically explore the pregenerated area once (creative-flight spiral pattern, see `HOSTING.md`) and bundling the resulting `Distant_Horizons_server_data/` cache into `modpack.zip` instead.
**Chunky is not used.** It was the original plan for pregeneration, but DH-on-server + Chunky-on-server crashes the world on first chunk load — this is a confirmed, currently open DH bug ([GitLab #1329](https://gitlab.com/distant-horizons-team/distant-horizons/-/work_items/1329), exact match for the 3.3.3 build here): DH's Chunky-compat accessor binds to Chunky's provider before Chunky's own init has run, throwing `IllegalStateException: Chunky is not loaded`. No official config toggle exists to disable that integration. Instead, **Distant Horizons' own built-in "Full"/"Internal Server" distant-generation mode generates real, normal chunks itself** — the same job Chunky would have done — so Chunky is redundant once DH is installed server-side this way. Simpler *and* avoids the crash entirely.
**Important:** install Distant Horizons in the client instance's `mods/` folder only — do **not** put it in the server's `mods/` folder. It tags itself as client-side in its mod metadata, so Forge won't reject the mismatched mod list between client and server. Keep the server's `server.properties` `view-distance` modest (6–8, see `HOSTING.md` sizing section) and let Distant Horizons fill in the rest visually on each client. Chunky, conversely, only needs to go in the **server's** `mods/` folder — it has no client-side purpose here.
**Setup:** same DH jar/version on both client and server `mods/` folders (mismatched builds between the two sides are the officially recommended-against configuration). On the server, set Distant Generation mode to `FULL` (or `INTERNAL_SERVER`) and a generation radius in DH's config — this pregenerates real terrain *and* builds the LOD cache in one automatic background pass, no manual flying required. See `HOSTING.md` for exact config.
## Optional / stretch (only if the group wants more scope)
@@ -70,37 +69,39 @@ Vivecraft auto-detects whether a headset is actually connected and falls back to
|---|---|---|
| [Aether's Delight](https://modrinth.com/mod/the-aethers-delight) | Aether-themed dishes (Holystone/Zanite knives, berry bowls, buffed meals) | Requires installing **The Aether** too — a full extra dimension mod. Only add if someone really wants to make the trip. |
## Installed list (as actually downloaded)
## Installed list (ground truth, from the actual exported client `mods/` folder)
What Fjord's dependency-resolver pulled in when adding the mods above — several of these are auto-added dependencies/QoL mods I hadn't called out individually. Transcribed from the "You're about to download the following mods" confirmation dialog on 2026-10-23; **the dialog was scrolled/cut off in the screenshot, so this list may be incomplete** — if there were more entries below `Nether's Delight`, let me know and I'll fold them in (expecting at least `Flywheel` and possibly `FarmersCreate` to still be in there).
Confirmed by extracting `LANParty.zip` directly — 25 jars, superseding the earlier screenshot-based guess (the FTB `(NeoForge)`-labeling concern resolved itself: all three loaded as their Forge builds fine). Side column reflects what's actually in `mcserver/mods/` on the deployed server as of this writing.
| Mod | Role |
|---|---|
| AppleSkin | QoL — HUD overlay showing exact hunger/saturation/exhaustion values instead of guessing from the icon. |
| Architectury API | Dependency — cross-loader API FTB's mods are built on. |
| Chunky (Forge/NeoForge) | Listed above — server-side pregen. |
| Create | Listed above — core. |
| Create Slice & Dice | Create addon — automates cutting/dicing-style food prep via Create contraptions; pulled in alongside Delightful Creators for the Create↔food bridge. |
| Delightful | Listed above. |
| Delightful Creators [Forge] | Listed above. |
| Distant Horizons: A Level of Detail mod | Listed above — client-only LOD rendering. |
| End's Delight | Listed above. |
| Farmer's Delight | Listed above — base. |
| Farmer's Respite | Farmer's Delight addon — adds tea/drinks (kettle, brewed teas) as another food category; worth adding a quest or two for this if you want a drinks stage in the roadmap. |
| Farmers Structures | Adds farmhouse-style structures that generate in the world — gives the Overworld food chapter something to explore toward, not just build from scratch. |
| [FerriteCore](https://modrinth.com/mod/ferritecore) | Performance — reduces RAM usage by deduplicating/compacting in-memory data structures (block states, chunk storage) that Forge normally keeps bloated. Pure upside, no gameplay effect; lowers how much of the `HOSTING.md` sizing-table RAM budget actually gets used. Goes in **both** client and server `mods/` folders. |
| FTB Library (NeoForge) | Listed above — FTB Quests dependency. |
| FTB Quests (NeoForge) | Listed above — the quest book. |
| FTB Teams (NeoForge) | Listed above — FTB Quests dependency. |
| Jade | QoL — "look at" overlay showing block/entity info on hover (WAILA-style), handy with this many new mod blocks/crops to identify. |
| Just Enough Items (JEI) | Listed above — recipe lookup. |
| Kotlin for Forge | Library dependency — several newer mods (Jade and others) are written in Kotlin and need this runtime present. |
| MezzConfig | Library dependency — shared in-game config-menu framework used by multiple mods here. |
| ModernFix | Performance — reduces startup/load time and fixes various vanilla/Forge memory leaks; pure upside for a 3-day session that stays up a long time. |
| Mouse Tweaks | QoL — shift-click/drag item sorting in inventories, genuinely load-bearing once Create/Farmer's Delight items start filling chests. |
| Nether's Delight | Listed above. |
| Mod | Side | Role |
|---|---|---|
| AppleSkin | Both | QoL — HUD overlay showing exact hunger/saturation/exhaustion values instead of guessing from the icon. |
| Architectury API | Both | Dependency — cross-loader API FTB's mods are built on. |
| Create | Both | Listed above — core. Bundles **Flywheel** and **Ponder** internally via Forge's JarJar mechanism — they auto-extract at runtime, no separate jar needed on either side. |
| Create Slice & Dice | Both | Create addon — automates cutting/dicing-style food prep via Create contraptions; pulled in alongside Delightful Creators for the Create↔food bridge. |
| Delightful | Both | Listed above. |
| Delightful Creators | Both | Listed above. |
| [Distant Horizons](https://modrinth.com/mod/distanthorizons) | Both | Listed above — same build both sides, server-side Full-mode pregen replaces Chunky (see Performance section). |
| End's Delight | Both | Listed above. |
| Farmer's Delight | Both | Listed above — base. |
| Farmer's Respite | Both | Farmer's Delight addon — adds tea/drinks (kettle, brewed teas) as another food category; worth adding a quest or two for this if you want a drinks stage in the roadmap. |
| Farmers Structures | Both | Adds farmhouse-style structures that generate in the world — gives the Overworld food chapter something to explore toward, not just build from scratch. |
| [FerriteCore](https://modrinth.com/mod/ferritecore) | Both | Performance — reduces RAM usage by deduplicating/compacting in-memory data structures (block states, chunk storage) that Forge normally keeps bloated. Pure upside, no gameplay effect; lowers how much of the `HOSTING.md` sizing-table RAM budget actually gets used. |
| FTB Library | Both | Listed above — FTB Quests dependency. |
| FTB Quests | Both | Listed above — the quest book. |
| FTB Teams | Both | Listed above — FTB Quests dependency. |
| Jade | Both | QoL — "look at" overlay showing block/entity info on hover (WAILA-style), handy with this many new mod blocks/crops to identify. |
| Just Enough Items (JEI) | Both | Listed above — recipe lookup. |
| Kotlin for Forge | Both | Library dependency — several newer mods (Jade and others) are written in Kotlin and need this runtime present. Note: distributed as `kotlinforforge-4.12.0-all.jar` (the "-all" / fat-jar variant), not the bare `kffmod` name. |
| MezzConfig | Both | Library dependency — shared in-game config-menu framework used by multiple mods here. |
| ModernFix | Both | Performance — reduces startup/load time and fixes various vanilla/Forge memory leaks; pure upside for a 3-day session that stays up a long time. |
| Mouse Tweaks | Both | QoL — shift-click/drag item sorting in inventories, genuinely load-bearing once Create/Farmer's Delight items start filling chests. |
| Nether's Delight | Both | Listed above. |
| Customizable Player Models | Both | Listed above (VR section) — corrected from client-only to both sides. |
| Vivecraft | Both | Listed above (VR section) — corrected from client-only to both sides. |
| ViveCraft Compat | Both | Listed above (VR section) — corrected from client-only to both sides. |
Note the dependency-resolver pulled in `(NeoForge)`-labeled builds for the FTB mods — double-check in Fjord that these are actually resolving against your Forge 1.20.1 instance correctly (Fjord's CurseForge integration sometimes labels the underlying artifact by its primary platform name even when serving the Forge-compatible build); if the instance fails to load with a loader-mismatch error on these three, swap to the explicitly-"Forge"-tagged FTB Library/Quests/Teams listings instead.
**Chunky is explicitly not in this list** — removed from the client early on (it was causing the DH crash before we understood the root cause), and never added back server-side either now that DH's own Full-mode generation replaces its job. See the Performance section above for why.
## Why this shape