# Instance Specification: Forge 1.20.1 Survival Modpack ## 1. 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`) * **Process User**: Container UID `1000` / GID `1000` > **JVM Flag Rule**: `-XX:+UnlockExperimentalVMOptions` must precede experimental flags in `JVM_OPTS` to avoid JVM start failure on OpenJDK 17. ### `docker-compose.yml` Reference ```yaml 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" # 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 ``` --- ## 2. Server Mod Manifest (59 Mods) ```text [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 architectury-9.2.14-forge.jar Botania-1.20.1-454-FORGE.jar botarium-forge-1.20.1-2.3.4.jar Chunky-Forge-1.20.1-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 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 FarmersDelight-1.20.1-1.3.2.jar ferritecore-6.0.1-forge.jar flan-1.20.1-1.11.16-forge.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 mcda-5.0.2.jar mcdw-9.0.4.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 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 ``` --- ## 3. Client Mod Manifest (49 Mods) Note: `Clumps` is intentionally excluded from the client manifest as experience orb merging is handled server-side in MC 1.17+. ```text [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 architectury-9.2.14-forge.jar BetterPingDisplay-1.20.1-1.1.jar Botania-1.20.1-454-FORGE.jar botarium-forge-1.20.1-2.3.4.jar citadel-2.6.3-1.20.1.jar cloth-config-11.1.136-forge.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 embeddium-0.3.31+mc1.20.1.jar FarmersDelight-1.20.1-1.3.2.jar ferritecore-6.0.1-forge.jar geckolib-forge-1.20.1-4.8.4.jar ImmersiveEngineering-1.20.1-10.2.0-183.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 majrusz-library-forge-1.20.1-7.0.8.jar majruszs-difficulty-forge-1.20.1-1.9.10.jar mcda-5.0.2.jar mcdw-9.0.4.jar minecraft-comes-alive-7.6.28-beta.10+1.20.1-universal.jar modernfix-forge-5.27.72+mc1.20.1.jar oculus-mc1.20.1-1.8.0.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 rubidium-extra-0.5.4.4+mc1.20.1-build.131.jar sophisticatedbackpacks-1.20.1-3.24.63.2057.jar sophisticatedcore-1.20.1-1.3.78.2249.jar tenshilib-1.20.1-1.7.6-forge.jar TUTORIAL_DISABLE-1.0.0.jar voicechat-forge-1.20.1-2.6.22.jar ``` --- ## 4. Instance Management & Mod RCON Commands ### Permissions Fix (Host Mount Access) If Spark or other mods throw `AccessDeniedException` writing temporary files: ```bash sudo chown -R 1000:1000 runtime/data/config/spark chmod -R 775 runtime/data/config/spark ``` ### World Pre-Generation (Chunky) Use Chunky RCON commands to pre-generate chunks and avoid worldgen tick lag during gameplay: ```bash # Configure target dimension, center (0,0), and radius (4,000 blocks / ~250 chunks) 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" # Set log update interval to 10 seconds and start pre-generation docker exec -i mc_forge_server rcon-cli "chunky quiet 10" docker exec -i mc_forge_server rcon-cli "chunky start" # Check progress docker exec -i mc_forge_server rcon-cli "chunky progress" # Pause, resume, or cancel task docker exec -i mc_forge_server rcon-cli "chunky pause" docker exec -i mc_forge_server rcon-cli "chunky continue" docker exec -i mc_forge_server rcon-cli "chunky cancel" ``` ### Claim Management (FLAN) ```bash docker exec -i mc_forge_server rcon-cli "flan reload" ``` ### Performance Profiling (spark) ```bash docker exec -i mc_forge_server rcon-cli "spark profiler --timeout 30" docker exec -i mc_forge_server rcon-cli "spark healthreport" ```