mcserver/instances/forge-1.20.1-survival
2026-08-17 16:05:04 +00:00
..
patches fix(default-options): reorder setKey and setKeyModifier calls to preserve ALT modifiers 2026-08-17 16:05:04 +00:00
runtime docs(forge-1.20.1): update keybindings template with verified Ars Nouveau key IDs 2026-08-17 15:34:26 +00:00
mod-configs.md docs(forge-1.20.1): update keybindings template with verified Ars Nouveau key IDs 2026-08-17 15:34:26 +00:00
README.md feat(forge-1.20.1): update difficulty triggers, JourneyMap payload, keybinds, and docs 2026-08-17 15:04:06 +00:00

Instance Specification: Forge 1.20.1 Survival Modpack

PLAYER QUICK JOIN: If you are a player joining the server, follow Section 1 below. You do not need to read the technical administrator documentation below Section 1.


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

  1. Download automodpack-mc1.20.1-forge-4.0.6.jar from the Releases section of this repository.
  2. Place the .jar file into your local .minecraft/mods/ directory.
  3. Launch Minecraft with your Forge 1.20.1 profile.
  4. Select Multiplayer and connect to mc.sotohome.top.

(AutoModpack automatically synchronizes required client mods, configuration files, default option presets, shader presets, and JourneyMap UI preferences upon connection).


END OF PLAYER GUIDE — YOU ARE ALL SET!
Everything below this line is for Server Administration & Infrastructure Maintenance. Players can stop reading here and enjoy the game!


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:+UnlockExperimentalVMOptions must precede experimental Garbage Collection flags in JVM_OPTS to 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: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 (77 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
ars_n_spells-3.0.1.jar
ars_nouveau-1.20.1-4.12.7-all.jar
automodpack-mc1.20.1-forge-4.0.6.jar
blue_skies-1.20.1-1.3.31.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
create_repair-forge-1.20.1-1.3.0-all.jar
createaddition-1.20.1-1.3.3.jar
CreativeCore_FORGE_v2.12.39_mc1.20.1.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
PlayerRevive_FORGE_v2.0.31_mc1.20.1.jar
PuzzlesLib-v8.1.33-1.20.1-Forge.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
structure_gel-1.20.1-2.16.2.jar
table_top_craft-forge-1.20.1-6.1.2.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
twilightforest-1.20.1-4.3.2508-universal.jar
VisualWorkbench-v8.0.1-1.20.1-Forge.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.jar in .minecraft/mods/.

Client-Only Host Payload (19 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
InvMove-0.9.3+1.20.1-Forge.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
configured-forge-1.20.1-2.2.3.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).
  • /journeymap/config/** (Synchronizes master minimap layout, interface scale, theme, and font presets on initial join without overwriting personal waypoints or map tiles).
  • Options & Keybindings Enforcement:
    1. keybindings.txt (/config/defaultoptions/keybindings.txt): Enforces master keybindings (Sneak=Shift, Sprint=Ctrl, FTB Chunks minimap unbound, Ars Nouveau quick casts/radial) dynamically on game boot via patched Default Options.
    2. options.txt (automodpack/host-modpack/main/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 via AutoModpack. Configured under "allowEditsInFiles" in automodpack-server.json so player sound, graphics, and FOV customizations persist between sessions without being overwritten on boot.

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 and keybindings to payload directories
# 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) to AutoModpack host payload
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/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, then D (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):

  1. Ensure container mc_forge_server is running.
  2. Execute the compilation script:
    cd instances/forge-1.20.1-survival/patches/lts-auth/
    python3 build.py
    
  3. Restart the server container to load the compiled JAR:
    docker restart mc_forge_server
    

Default Options Keymapping Patch Compilation (patches/default-options/)

To rebuild and hot-swap the custom keybindings modifier patch (defaultoptions-forge-1.20.1-18.0.5.jar) from source (KeyMappingDefaultsHandler.java):

  1. Ensure container mc_forge_server is running.
  2. Execute the compilation script:
    cd instances/forge-1.20.1-survival/patches/default-options/
    python3 build.py
    
  3. Restart the server container to push the patched JAR via AutoModpack:
    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"