Covers the Create + Farmer's Delight modpack list, food roadmap pool, cross-platform client bootstrap (offline account + modpack + auto-join), and the venue-box server setup (lazymc idle sleep/wake, Chunky pregen, file distribution).
9.1 KiB
How to run this at the LAN party
1. Prep the modpack instance once, yourself, beforehand
- Install Fjord Launcher Unlocked normally on your own machine.
- Create a new instance: Minecraft 1.20.1, Forge. Name it exactly
LANParty(or changeINSTANCE_NAME/$InstanceNamein both scripts to match). - Add the mods from
modpack.md(use the launcher's built-in Modrinth/CurseForge browser, or drop jars straight into the instance'smods/folder). - Set up the server and pregenerate first — do the "Set up the dedicated venue box" and "Pre-generate chunks before the party starts (Chunky)" steps below before continuing here. Distant Horizons can only cache real terrain that already exists; it can't backfill detail after the fact.
- Launch the client, go to Multiplayer → Add Server, enter the venue box's LAN IP, and join for real. Set your preferred video settings (these land in
options.txt). Then fly/walk around the pregenerated build area with a decent render distance and Distant Horizons enabled — this is what actually populatesDistant_Horizons_server_data/in the instance with real LOD data for that area. Quit when you've covered the zone you pregenerated. - Quit the launcher, then export the instance via right-click the instance → Export Instance (don't blindly zip the raw folder — the exporter lets you pick what's included). Check:
mods/,config/,options.txt,servers.dat,Distant_Horizons_server_data/. Uncheck:logs/,crash-reports/,screenshots/, and any asset/library caches — those regenerate automatically on first launch and just bloat the zip. Name the resultmodpack.zip, with the instance's folder (LANParty/...) as the zip's top-level entry.
Caveats for this to actually pay off for participants:
- Don't rename the server list entry or change Distant Horizons' "Server Folder Name Mode" setting afterward — both are part of the cache key (
"<server name> <ip>:<port>"by default). Change either and participants' clients won't find the cache you built. - Don't regenerate/reset the server world after this point. If the actual party world differs from the one you explored, the cached LOD will show stale terrain that doesn't match reality.
- This cache is for scenery beyond render distance only — it doesn't substitute for the server having
online-mode=falseor for Chunky's pregen; all three pieces (pregen, DH cache, offline accounts) are independent and all need to land in the final zip/setup.
2. Set up the dedicated venue box (one machine, does both jobs)
Run server/setup-server.sh on the Linux box you're bringing to the party. It:
- Installs the Forge 1.20.1 server and wraps it in lazymc, which sleeps the real server after 5 idle minutes and transparently wakes it the instant someone connects — no manual start/stop for the whole 3 days.
- Serves
server/dist/over HTTP via a systemd unit (survives logout, auto-restarts if it dies). - Opens the relevant ports in
ufwif it's active.
cd server
./setup-server.sh
# then copy your client modpack's mod jars into mcserver/mods/, and:
sudo systemctl restart mc-lazymc
Put install.sh, install.ps1, and modpack.zip into server/dist/ (that's what gets served on port 8000).
Find the box's LAN IP (ip a) and edit the top of both install.sh and install.ps1:
HOST_URL/$HostUrl→http://<venue-box-lan-ip>:8000SERVER_ADDR/$ServerAddr→<venue-box-lan-ip>:25565(lazymc's public port)
Useful commands during the party:
sudo systemctl status mc-lazymc— check if the MC server is asleep/awakesudo journalctl -u mc-lazymc -f— watch it wake/sleep livesudo systemctl restart mc-lazymc— pick up new mods or a config change
Resource sizing for the venue box (5–15 players)
Create is the dominant cost here — it's heavier on the server tick thread (CPU) than on RAM, because kinetic networks and contraptions get simulated every tick regardless of how many players are nearby. Farmer's Delight/its addons are cheap by comparison. Numbers below assume this modpack (~10 mods) and are total host box numbers, not just the JVM heap:
| Concurrent players | JVM heap (-Xmx, set in setup-server.sh) |
Host RAM (total, incl. OS + file server) | CPU | Free disk | Network |
|---|---|---|---|---|---|
| 5–8 | 6G | 10–12 GB | 4 cores, 3.5 GHz+ single-core perf matters more than core count | ~10 GB (world + mods + Forge libs + logs) | Gigabit LAN recommended, Wi-Fi workable |
| 9–12 | 8G | 12–16 GB | 4–6 cores, 3.5 GHz+ | ~15 GB | Gigabit LAN recommended |
| 13–15 | 10–12G | 16 GB+ | 6+ cores, 3.5 GHz+ | ~20 GB | Gigabit LAN, wire the host box if possible |
Practical knobs to turn if the box is lighter than the table:
- Lower
server.propertiesview-distanceto 6–8 — this is the single biggest CPU/RAM lever on a modded server, and the Distant Horizons client mod (seemodpack.md) makes a short server view-distance look fine anyway. - Set
simulation-distancea notch belowview-distanceif things chug — it controls how far Create's kinetic networks/entities get ticked, independent of render range. MIN_RAM/MAX_RAMinsetup-server.shdefault to2G/4G— bumpMAX_RAMto match the table above for your headcount before running the script (or editlazymc.toml'scommandline afterward andsudo systemctl restart mc-lazymc).- An SSD matters more than raw disk size here — Create's block-entity-heavy contraptions do a lot of small, frequent chunk saves; a spinning HDD will show up as tick-time spikes.
Pre-generate chunks before the party starts (Chunky)
Chunky (server-side mod, already listed in modpack.md) fills in a radius of real terrain ahead of time so nobody hits on-the-fly generation lag while exploring. Do this once, before participants arrive:
-
Make sure
mcserver/mods/has the Chunky jar, thensudo systemctl restart mc-lazymcand let the server boot (connect once from a client, orsudo journalctl -u mc-lazymc -fand wait for "Done"). -
Run the commands below either from the server console (attach via
sudo systemctl stop mc-lazymc && cd mcserver && bash run.sh nogui, temporarily bypassing lazymc so you get an interactive console) or via RCON (mcrcon -H 127.0.0.1 -P 25575 -p <password from server.properties> "<command>"):/chunky center 0 0 # or your build area's coordinates /chunky radius 800 # 800 blocks ≈ 50 chunks (1 chunk = 16 blocks) /chunky start /chunky confirm # if it warns about area size -
Watch progress with
/chunky status. For ~50 chunks radius this finishes in seconds to a couple minutes depending on the box. -
If you stopped lazymc to get console access in step 2, restart it afterward:
sudo systemctl start mc-lazymc.
Repeat with /chunky world the_nether / /chunky world the_end first if you want the Nether/End build areas pregenerated too (useful since the roadmap sends people there for Nether's/End's Delight dishes).
3. Give participants the one-liner
- Windows:
irm http://<your-lan-ip>:8000/install.ps1 | iex - Linux / macOS:
curl -fsSL http://<your-lan-ip>:8000/install.sh | bash
Each script asks for a nickname, derives a stable offline-mode UUID from it (so the same name = same player data across the whole 3-day party, even if they re-run the script), seeds that into a fresh accounts.json, downloads Fjord Launcher Unlocked + the modpack, and launches straight into the instance already connected to your server.
Make sure your Minecraft server itself is running with online-mode=false in server.properties — offline accounts only work against offline-mode servers.
Notes / things that can break
- The scripts pull Fjord Launcher Unlocked's latest GitHub release dynamically, so they stay correct even after version bumps — but if
hero-persson/FjordLauncherUnlockedever disappears, swap the repo slug at the top of the scripts for a current fork. install.shneedscurl,unzip/find(standard on any Linux/macOS box) and relies on FUSE for running the AppImage directly; if a participant's distro lacks FUSE, the AppImage will fail to launch — tell them to run./FjordLauncher.AppImage --appimage-extractonce and pointLAUNCHER_BINat the extractedAppRun.- Re-running either script is safe/idempotent: it skips re-downloading the modpack if the instance folder already exists, and just overwrites
accounts.jsonwith the (same, deterministic) account if the nickname is unchanged. - lazymc's first wake after a sleep takes as long as the Forge server normally does to boot (expect 20–60s depending on the box) — the client will show a "starting" MOTD/kick message during that window; just reconnect after a few seconds.
setup-server.shpins a Forge build (47.4.28for1.20.1) — check files.minecraftforge.net if it's gone stale by the time you run this.- Double-check the server's mod list is byte-for-byte the same mods as the client instance (same versions) — Forge is strict about mod-list mismatches between client and server and will refuse to connect otherwise.