- Move master options.txt to config/defaultoptions/extra/options.txt to fix early-boot display driver race condition skipping initial settings - Strip duplicate keybinding lines from extra/options.txt for clean DRY separation with keybindings.txt - Restore standard keybindings: Left Shift for Crouch (sneak) and Left Control for Sprint (sprint) - Remove redundant root config/defaultoptions/options.txt file - Update instance README.md and mod-configs.md documentation and operational runbook scp targets - Update releases link in instance documentation to git.sotohome.top endpoint
9.4 KiB
Instance Specification: Forge 1.20.1 Survival Modpack
1. Player Quick Join Guide
Client Requirements
- Minecraft Version:
1.20.1 - Mod Loader: Forge (
47.4.10) - Required Client Mod:
automodpack-mc1.20.1-forge-4.0.6.jar
Installation Steps
- Download
automodpack-mc1.20.1-forge-4.0.6.jarfrom the Releases section of this repository. - Place the
.jarfile into your local.minecraft/mods/directory. - Launch Minecraft with your Forge 1.20.1 profile.
- Select Multiplayer and connect to
mc.sotohome.top.
(AutoModpack automatically synchronizes required client mods, configuration files, default option presets, and shader presets upon connection).
2. Overview & Compose Profile
- Instance ID:
forge-1.20.1-survival - Container Name:
mc_forge_server - Minecraft Version:
1.20.1 - Mod Loader: Forge (
47.4.10) - Java Runtime: OpenJDK 17 (
itzg/minecraft-server:java17)
JVM Flag Rule:
-XX:+UnlockExperimentalVMOptionsmust precede experimental Garbage Collection flags inJVM_OPTSto prevent JVM initialization failures on OpenJDK 17.
Production docker-compose.yml (runtime/docker-compose.yml)
services:
mc:
image: itzg/minecraft-server:java17
container_name: mc_forge_server
restart: unless-stopped
ports:
- "25565:25565"
- "24454:24454/udp"
environment:
EULA: "TRUE"
TYPE: "FORGE"
VERSION: "1.20.1"
MEMORY: "12G"
# Server Properties Mapping
VIEW_DISTANCE: "8"
SIMULATION_DISTANCE: "6"
NETWORK_COMPRESSION_THRESHOLD: "256"
MAX_TICK_TIME: "120000" # Prevents watchdog crashes during heavy worldgen
PLAYER_IDLE_TIMEOUT: "0" # Prevents auto-kicking AFK players
ALLOW_FLIGHT: "TRUE" # Prevents kicks when using Ad Astra rockets/ships
SYNC_CHUNK_WRITES: "FALSE"
ENABLE_STATUS: "TRUE"
MOTD: "MC SotoHome!"
MAX_PLAYERS: "15"
DIFFICULTY: "hard"
ONLINE_MODE: "FALSE"
ENFORCE_SECURE_PROFILE: "FALSE"
# JVM Garbage Collection & Network Flags
JVM_OPTS: >-
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=200
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-XX:G1NewSizePercent=30
-XX:G1MaxNewSizePercent=40
-XX:G1HeapRegionSize=8M
-XX:G1ReservePercent=15
-XX:G1HeapWastePercent=5
-XX:G1MixedGCCountTarget=4
-XX:InitiatingHeapOccupancyPercent=15
-XX:G1MixedGCLiveThresholdPercent=90
-XX:G1RSetUpdatingPauseTimePercent=5
-XX:SurvivorRatio=32
-XX:+PerfDisableSharedMem
-XX:MaxTenuringThreshold=1
volumes:
- ./data:/data
3. Server Mod Manifest (66 Mods)
[forge]ctov-3.4.14.jar
ad_astra-forge-1.20.1-1.15.20.jar
ad_astra_extra_additions-1.20.1-1.1.1.jar
ad_astra_more_structures-1.0.1-forge.jar
alexsmobs-1.22.9.jar
antixray-forge-1.4.6+1.20.1.jar
architectury-9.2.14-forge.jar
automodpack-mc1.20.1-forge-4.0.6.jar
Botania-1.20.1-454-FORGE.jar
botarium-forge-1.20.1-2.3.4.jar
Chunky-1.3.146.jar
citadel-2.6.3-1.20.1.jar
cloth-config-11.1.136-forge.jar
Clumps-forge-1.20.1-12.0.0.4.jar
collective-1.20.1-8.39.jar
corpse-forge-1.20.1-1.0.23.jar
create-1.20.1-6.0.8.jar
create_ad_astra_recipes-1.0.0-forge-1.20.1.jar
createaddition-1.20.1-1.3.3.jar
curios-forge-5.14.1+1.20.1.jar
decocraft-3.0.4-1.20.1-slim.jar
differentdoors-forge-1.20.1-1.1.0.jar
doubledoors-1.20.1-7.2.jar
FarmersDelight-1.20.1-1.3.2.jar
ferritecore-6.0.1-forge.jar
fiw-anticheat-forge-1.20.1-2.0.2.jar
ftb-chunks-forge-2001.3.8.jar
ftb-library-forge-2001.2.13.jar
ftb-teams-forge-2001.3.2.jar
geckolib-forge-1.20.1-4.8.4.jar
ImmersiveEngineering-1.20.1-10.2.0-183.jar
improvedmobs-1.20.1-1.13.7-forge.jar
irons_lib-1.20.1-2.1.0.jar
irons_spellbooks-1.20.1-3.16.2.jar
Jade-1.20.1-Forge-11.13.3.jar
jei-1.20.1-forge-15.49.0.188.jar
journeymap-forge-1.20.1-6.0.1.jar
Krypton_Reno-forge-1.20.1-26.1.1-1.20.1.jar
lithostitched-forge-1.20.1-1.4.11.jar
locks_reforged-1.6.1.jar
lts_auth-1.0.1+mc1.20.1.jar
LuckPerms-Forge-5.4.102.jar
majrusz-library-forge-1.20.1-7.0.8.jar
majruszs-difficulty-forge-1.20.1-1.9.10.jar
minecraft-comes-alive-7.6.28-beta.10+1.20.1-universal.jar
modernfix-forge-5.27.72+mc1.20.1.jar
Nullscape_1.20.x_v1.2.8.jar
packetfixer-3.3.2-1.18-1.20.4-merged.jar
Patchouli-1.20.1-85-FORGE.jar
perspatium-1.20.1-1.2.0.jar
planets+-bv1.7.5-1.20x.jar
player-animation-lib-forge-1.0.2-rc1+1.20.jar
resourcefulconfig-forge-1.20.1-2.1.3.jar
resourcefullib-forge-1.20.1-2.1.29.jar
SimpleBackups-1.20.1-3.1.24.jar
sophisticatedbackpacks-1.20.1-3.24.63.2057.jar
sophisticatedcore-1.20.1-1.3.78.2249.jar
spark-1.10.53-forge.jar
tectonic-3.0.17-forge-1.20.1.jar
tenshilib-1.20.1-1.7.6-forge.jar
Terralith_1.20.x_v2.5.4.jar
voicechat-forge-1.20.1-2.6.22.jar
YungsApi-1.20-Forge-4.0.6.jar
YungsBetterDungeons-1.20-Forge-4.0.4.jar
YungsBetterMineshafts-1.20-Forge-4.0.4.jar
YungsBetterStrongholds-1.20-Forge-4.0.3.jar
4. Client Distribution Architecture (AutoModpack & Default Options)
Client modpack synchronization is fully automated via AutoModpack.
Minimal Client Requirement
- Minecraft 1.20.1 with Forge loader.
- 1 Mod:
automodpack-mc1.20.1-forge-4.0.6.jarin.minecraft/mods/.
Client-Only Host Payload (17 Mods)
Located in runtime/data/automodpack/host-modpack/main/mods/ on the server and pushed to clients automatically:
AmbientSounds_FORGE_v6.3.8_mc1.20.1.jar
BetterPingDisplay-1.20.1-1.1.jar
Connector-1.0.0-beta.49+1.20.1.jar
CreativeCore_FORGE_v2.12.39_mc1.20.1.jar
FTB-Teams-Offline-Enabler-forge-1.20.1-1.0.0.jar
PresenceFootsteps-1.20.1-1.9.1-beta.1.jar
TUTORIAL_DISABLE-1.0.0.jar
balm-forge-1.20.1-7.3.42.jar
continuity-3.0.0+1.20.1.forge.jar
defaultoptions-forge-1.20.1-18.0.5.jar
embeddium-0.3.31+mc1.20.1.jar
entity_model_features-3.2.4-1.20.1-forge.jar
entity_texture_features_1.20.1-forge-7.1.jar
fabric-api-0.92.6+1.11.15+1.20.1.jar
oculus-mc1.20.1-1.8.0.jar
rubidium-extra-0.5.4.4+mc1.20.1-build.131.jar
sound-physics-remastered-forge-1.20.1-1.4.10.jar
Server-Side Exclusions (8 Mods)
Explicitly excluded from syncing to clients via syncedFiles in automodpack-server.json:
SimpleBackups, spark, antixray, doubledoors, Clumps, collective, lts_auth, improvedmobs.
Synchronized Client Files & Options Enforcement
/config/**(Synchronizes mod configurations, BSL shader settings, and default options template).- First-Launch Options Enforcement (
Default Options): Settings are delivered via two separate files inside/config/defaultoptions/:keybindings.txt: Enforces master keybindings (Sneak=Shift, Sprint=Ctrl, FTB Chunks minimap unbound) dynamically on game boot.extra/options.txt: Delivers initial graphics settings (fullscreen, 260 FPS limit, render distance 8), audio levels (Master 60%, Music 25%, Hostile 75%, Neutral/Ambient 40%), FOV, and active resource packs on first launch only via/config/defaultoptions/extra/options.txt.
5. Operational Runbooks & Administration
Updating Client Master Defaults (options.txt)
To update master client options or default keybind templates:
cd ~/.local/share/PrismLauncher/instances/<instance_name>/minecraft
# Push master options to Default Options payload directory
# 1. Extract and push updated default keybindings
grep "^key_" options.txt > keybindings.txt
scp keybindings.txt ubuntu@sotoserver:~/mcserver/instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/config/defaultoptions/
# 2. Extract and push updated first-launch options (stripped of keybinds)
grep -v "^key_" options.txt > options_clean.txt
scp options_clean.txt ubuntu@sotoserver:~/mcserver/instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/config/defaultoptions/extra/options.txt
# Restart server container to update payload manifest
ssh sotoserver "docker restart mc_forge_server"
Interactive Console Dashboard (runtime/console)
To launch live container logs alongside an interactive RCON prompt:
cd instances/forge-1.20.1-survival/runtime
./console
- Top Window: Live log stream (
docker logs -f mc_forge_server). - Bottom Window: Interactive RCON shell (
MC>). - Detach: Press
Ctrl+B, thenD(leaves container running in background).
In-House Auth Mod Compilation (patches/lts-auth/)
To rebuild and hot-swap the custom authentication mod (lts_auth-1.0.1+mc1.20.1.jar) from source (LtsAuthMod.java, LoginCommand.java):
- Ensure container
mc_forge_serveris running. - Execute the compilation script:
cd patches/lts-auth/ python3 build.py - Restart the server container to load the compiled JAR:
docker restart mc_forge_server
World Pre-Generation (Chunky)
docker exec -i mc_forge_server rcon-cli "chunky world minecraft:overworld"
docker exec -i mc_forge_server rcon-cli "chunky center 0 0"
docker exec -i mc_forge_server rcon-cli "chunky radius 4000"
docker exec -i mc_forge_server rcon-cli "chunky quiet 10"
docker exec -i mc_forge_server rcon-cli "chunky start"
docker exec -i mc_forge_server rcon-cli "chunky progress"
Performance Profiling (spark)
docker exec -i mc_forge_server rcon-cli "spark profiler --timeout 30"
docker exec -i mc_forge_server rcon-cli "spark healthreport"