meiCloud.
Private friends-only Minecraft 1.21.1 NeoForge modpack. 504 mods, Distant Horizons LODs, full Create ecosystem (Aeronautics, Big Cannons, Steam'n'Rails, Diesel Generators), Creating Space rocketry, BSL+Clrwl shaders, EMI recipe browser.
v0.2.3 Β· NeoForge 21.1.234Installation guide
This walks you through installing the pack on a Windows 11 desktop with Prism Launcher. Steps are functionally the same on macOS / Linux Prism β only the screenshots will look slightly different.
You need three things up front:
- Prism Launcher β FOSS, GPLv3
- A Microsoft account with Minecraft Java Edition purchased β sign in via Prism's account manager first
- ~25 GB of free disk space β the unpacked instance is ~6 GB; you also want headroom for world saves, Distant Horizons LOD databases, and SimpleBackups archives
The mrpack itself is ~1.37 GB. The download is the slow part; the actual install is a few minutes.
Step 1 β Open Prism, click "Add Instance"
After installing Prism and signing in with your Microsoft account, you'll see the empty instance list. Click Add Instance in the top-left toolbar.
Step 2 β Import from URL
In the dialog, switch to the Import tab on the left. In the "Local file or link to a direct download" field, paste:
https://github.com/christopher-john-czettel/meicloud-all-you-need/releases/download/v0.2.3/meicloud-all-you-need-v0.2.3.mrpack
For future releases, replace v0.2.3 with whatever the latest tag is at the releases page.
You can rename the instance in the Name field (defaults to the mrpack filename without extension). Click OK.
Step 3 β Wait for the download
Prism fetches the mrpack (~1.37 GB), unpacks it, and resolves all packwiz-tracked mods from Modrinth + CurseForge + our self-hosted GitHub raw assets. Expect 5-15 minutes on a typical home connection.
The download fetches:
- 504 mods from Modrinth and CurseForge
- 2 self-hosted patched jars from
raw.githubusercontent.com/christopher-john-czettel/meicloud-all-you-need/main/pack/local-jars/:allthetweaks-1.21.1-2.9.4-meicloud-patched.jarβ has the ATM10 branding mixins surgically removedcreatingspace-1.21.1-1.7.18-meicloud-patched.jarβ has theWindowResizeMixinremoved (fixes a NeoForge 21.1.234 load-order crash)
- Pack overrides β KubeJS scripts, configs, shaderpack, FancyMenu assets,
servers.dat, datapack stubs
If any download fails (rare; usually a CurseForge rate-limit transient), close and re-open the instance via the right-click menu β Refresh β Prism resumes from where it left off.
Step 4 β Edit the new instance
The instance shows up in your instance list with the meiCloud β All You Need icon. Right-click it and pick Editβ¦ (Ctrl+I works too).
Step 5 β Configure Memory and JVM Arguments
In the Edit Instance window, pick Settings in the left sidebar, then the Java tab at the top.
Memory section
Apply these exact values:
| Field | Value |
|---|---|
| β Memory | β enabled |
| Minimum Memory Usage | 16384 MiB |
| Maximum Memory Usage | 16384 MiB |
| PermGen Size | 128 MiB (default β harmless legacy field, ignored on Java 21) |
| β Warn when there is not enough memory | β enabled (default) |
Why 16 GB Min = Max: With -XX:+AlwaysPreTouch in the JVM args (below), the JVM commits the full heap to physical RAM at startup. Setting -Xms = -Xmx skips the runtime heap-resize logic entirely. 16 GB is the sweet spot for G1's G1HeapRegionSize=8M (2-32 GB optimal range); past 16 GB G1's young-gen scan time grows into perceptible pauses.
If your machine has only 16 GB total system RAM, drop both to 10240 (10 GB) β the pack will still run, you'll just have less headroom for SimpleBackups + JEI/EMI index bursts.
Java Arguments section
Enable Java Arguments and paste this single line (no newlines):
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=8M -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -Dfml.readTimeout=180 -Dfml.loginTimeout=180
What each flag does
| Flag | Purpose |
|---|---|
-XX:+UnlockExperimentalVMOptions | Required to use the G1* tuning flags below |
-XX:+UseG1GC | G1 garbage collector. Don't switch to ZGC β we tried, it OOM'd on this exact workload. |
-XX:G1NewSizePercent=20 | Young generation = 20 % of heap (3.2 GB at 16 GB heap). Right-sized for high-allocation modded MC. |
-XX:G1ReservePercent=20 | Reserve 20 % of heap as buffer; prevents promotion failures during allocation spikes (SimpleBackups, EMI index build). |
-XX:MaxGCPauseMillis=50 | Target max GC pause = 50 ms. If you see microstuttering, drop to 30 β costs ~2-3 % avg FPS for tighter 1 %-lows. |
-XX:G1HeapRegionSize=8M | 8 MB regions. Optimal for heap sizes 2-32 GB. |
-XX:+ParallelRefProcEnabled | Parallelize reference processing across CPU cores. Free win on 8+ core CPUs. |
-XX:+AlwaysPreTouch | Commits full heap to physical RAM at startup. Prevents first-explore stutter from heap growth. This is why Min and Max are matched. |
-Dfml.readTimeout=180 | Mod-loading read timeout = 3 minutes. Vanilla default is 90 s; we need more because 504 mods. |
-Dfml.loginTimeout=180 | Server-handshake timeout = 3 minutes. Same reasoning. |
Java Executable
Should auto-detect a Java 21 install. If it doesn't, click Open Java Downloader in Prism, pick Adoptium / Microsoft / Azul OpenJDK 21, and re-run Detect.
If you have multiple Java installs and Prism auto-picks the wrong one, hit Browse and point it at javaw.exe from a Java 21 install. Microsoft OpenJDK 21 is what most modded MC players use; the path looks like:
C:\Users\<you>\AppData\Roaming\PrismLauncher\java\java-runtime-delta\bin\javaw.exe
Step 6 β First launch
Close the Edit window. Back in the main Prism view, double-click the instance (or hit the Launch button on the right sidebar) to start it.
Expect on first launch:
- Boot to main menu: ~140β160 s (mod loading is the bulk β unavoidable with 504 mods)
- Main menu: meiCloud splash background, "meiCloud β All You Need" window title
- Server list (Multiplayer menu): pre-populated with
meiCloud β All You Need β ayn.meicloud.net:55565 - Single player β Create world β Click play: ~60β80 s of "Loading Terrain" (datapack reload + DH dim startup + EMI building its index in the background)
- In-world: BSL+Clrwl shader active (already selected as default in
iris.properties)
If anything crashes on first launch, check logs/latest.log and crash-reports/ β and ping @chris with the crash file.
Updating to a newer release
When a new tag goes up at the releases page:
- Right-click the instance β Edit β Version (left sidebar)
- Click Modify Pack at the top right
- Paste the new release's
.mrpackURL - Confirm
- Prism re-downloads what changed and preserves your
saves/,screenshots/,journeymap/data - Your Java settings from Step 5 are preserved β they're at the instance level, not the pack level
Re-applying the Java settings is only needed if you ever delete and re-import the instance.
Troubleshooting
"Cannot get config value before config is loaded" on boot
You're on v0.2.0 or older β the bug was a creatingspace mixin firing before its config was registered. Fixed in v0.2.1 by patching the mod jar. Update to the latest release.
Mods download fails / timeout
CurseForge sometimes throttles non-API-key downloads. Re-open the instance via right-click β Refresh. Or wait 5 minutes and re-try.
Shader looks washed out / dim main menu
The BSL+Clrwl shader is tonemapping the FancyMenu splash background β known cosmetic quirk, doesn't affect gameplay. Workaround: press K on the title screen to toggle Iris shaders off (re-enables automatically on world join).
"Java Heap Space" OOM in chat or logs
You're below 16 GB heap, or you have ZGC in your JVM args (paste the exact G1 args block from Step 5). G1 is the correct GC for this pack on 12-16 GB heaps. ZGC needs ~30-40 % more headroom and OOMs on workloads this dense.
[KubeJS errors found N] chat line
If N > 0 on first launch, something in kubejs/data/ or a server script failed. Report the count + the linked erroring_recipes.md content; we'll patch the next release.
Pack works but FPS feels low
Open the F3 debug overlay. Read off:
- GPU usage % (top-right block)
- Heap usage (top-right "Mem:")
- Server tick time (top-left)
If GPU < 50 % and FPS is low, you're CPU-bound β see the perf guide (Tier A, especially HAGS off).
If heap usage > 90 %, bump heap or check for a mod memory leak via [AllTheLeaks] lines.
If server tick > 50 ms consistently, something's pegging the integrated server β try /spark profiler --timeout 60 and read the link it spits out.
Where things live in the instance
For poking around without breaking anything:
<instance>/minecraft/
βββ mods/ # all the mods
βββ config/ # mod-side configs
β βββ iris.properties # shader selection
β βββ DistantHorizons.toml # DH tuning
β βββ simplebackups-common.toml # backup schedule
β βββ ...
βββ shaderpacks/
β βββ BSL_v10.1.1 + Clrwl_1.0.5.zip
β βββ BSL_v10.1.1 + Clrwl_1.0.5.zip.txt # our LOW-profile settings
βββ kubejs/ # KubeJS server/client/startup scripts + datapack stubs
βββ saves/ # your worlds
βββ simplebackups/ # backup archive output (you can delete old ones)
βββ servers.dat # the server list β pre-populated with AYN
βββ options.txt # your video settings (FPS cap, render dist, etc.)
Anything in config/ regenerates if you delete the file β useful if you ever break a config and want defaults back.
House rules
- PvP off β sword swings on other players do nothing
- Mob griefing off β no creeper craters near builds
- Hardcore-ish β
keepInventoryis off; you lose your stuff on death (but Tombstone makes a recoverable grave) - 8 max players β friends only, whitelist enforced