diff --git a/instances/forge-1.20.1-survival/README.md b/instances/forge-1.20.1-survival/README.md index 99077ea..e97048e 100644 --- a/instances/forge-1.20.1-survival/README.md +++ b/instances/forge-1.20.1-survival/README.md @@ -6,6 +6,7 @@ * **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. @@ -42,22 +43,24 @@ services: # JVM Garbage Collection & Network Flags JVM_OPTS: >- - -Dfml.readTimeout=180 - -Dfml.loginTimeout=180 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC - -XX:MaxGCPauseMillis=50 - -XX:G1HeapRegionSize=8M - -XX:G1ReservePercent=15 - -XX:InitiatingHeapOccupancyPercent=45 - -XX:G1MixedGCCountTarget=4 - -XX:G1HeapWastePercent=5 - -XX:G1NewSizePercent=30 - -XX:G1MaxNewSizePercent=40 - -XX:SurvivorRatio=8 - -XX:MaxTenuringThreshold=1 + -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 ``` @@ -95,8 +98,8 @@ 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.48.0.180.jar -journeymap-forge-1.20.1-6.0.0.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 @@ -107,7 +110,7 @@ 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.66+mc1.20.1.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 @@ -116,8 +119,8 @@ 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.2049.jar -sophisticatedcore-1.20.1-1.3.75.2231.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 @@ -131,11 +134,12 @@ YungsBetterStrongholds-1.20-Forge-4.0.3.jar --- -## 3. Client Mod Manifest (50 Mods) +## 3. Client Mod Manifest (51 Mods) -This list contains all client-side required mods, including client performance engines (`Embeddium`, `Oculus`, `Rubidium Extra`) and server expansion dependencies: +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 @@ -147,7 +151,6 @@ 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 -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 @@ -163,16 +166,17 @@ 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.48.0.180.jar -journeymap-forge-1.20.1-6.0.0.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.66+mc1.20.1.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 @@ -181,8 +185,8 @@ 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.2049.jar -sophisticatedcore-1.20.1-1.3.75.2231.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 @@ -192,12 +196,22 @@ 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 +``` + ### Distant Horizons Chunk & LOD Pre-Generation -With `distantGeneratorMode = "FULL"` enabled in `DistantHorizons.toml`, DH generates both standard terrain chunks and Level of Detail (LOD) visual data simultaneously: +With `distantGeneratorMode = "INTERNAL_SERVER"` enabled in `DistantHorizons.toml`, DH generates both standard terrain chunks and Level of Detail (LOD) visual data natively: ```bash +# Set CPU load to BALANCED to prevent main thread starvation during pregen +docker exec -i mc_forge_server rcon-cli "dh config common.threadPreset BALANCED" + # Start pre-generation (250 chunks radius = 4,000 blocks around 0,0) -docker exec -i mc_forge_server rcon-cli "dh pregen start overworld 0 0 250" +docker exec -i mc_forge_server rcon-cli "dh pregen start minecraft:overworld 0 0 250" # Check status docker exec -i mc_forge_server rcon-cli "dh pregen status" diff --git a/instances/forge-1.20.1-survival/mod-configs.md b/instances/forge-1.20.1-survival/mod-configs.md index fbfeea2..50b8d77 100644 --- a/instances/forge-1.20.1-survival/mod-configs.md +++ b/instances/forge-1.20.1-survival/mod-configs.md @@ -2,6 +2,8 @@ ## Summary Matrix +> **Note on File Paths**: `runtime/data/config/...` on the host filesystem mounts directly to `/data/config/...` inside the `mc_forge_server` Docker container. + | Mod | Config File Path | Key Setting | Value | Purpose | | :--- | :--- | :--- | :--- | :--- | | **LTS Auth** | `runtime/data/config/lts_auth/messages.yml` | `timeout_kick` | `Authentication time has expired!` | Ingame auth, invulnerability lock & auto-kick | @@ -10,9 +12,9 @@ | **Improved Mobs** | `runtime/data/config/improvedmobs/common.toml` | `"Enable difficulty scaling"` | `false` | Disables time-based scaling & HUD banner | | **Majrusz Difficulty** | `runtime/data/config/majruszsdifficulty.json` | `is_per_player_difficulty_enabled` | `true` | Isolated per-player milestone progression | | **Create Addition** | `runtime/data/config/createaddition-common.toml` | `generator_efficiency` | `0.5` | Tech power generation rebalance | -| **Sophisticated Backpacks** | `runtime/data/config/sophisticatedbackpacks-common.toml` | `enabledItems` | Tier 3/4 upgrades = `false` | Cap portable storage capacity | -| **JourneyMap** | `runtime/data/journeymap/server/6.0/*.config` | `radarEnabled` | `"Disabled"` | Disable radar and wallhacks | -| **Distant Horizons** | `runtime/data/config/DistantHorizons.toml` | `distantGeneratorMode` | `"FULL"` | Pregenerate both vanilla chunks & LODs natively (`dh pregen start`) | +| **Sophisticated Core** | `runtime/data/config/sophisticatedcore-common.toml` | `enabledItems` | Tier 3/4 upgrades = `false` | Cap portable storage capacity | +| **JourneyMap** | `runtime/data/journeymap/server/6.0/*.config` | `radarEnabled` | `"Disabled"` | Server-enforced radar disablement | +| **Distant Horizons** | `runtime/data/config/DistantHorizons.toml` | `distantGeneratorMode` | `"INTERNAL_SERVER"` | Native DH pregenerator for vanilla chunks + LODs | --- @@ -51,16 +53,14 @@ } ``` -### 4. Sophisticated Backpacks (`runtime/data/config/sophisticatedbackpacks-common.toml`) +### 4. Sophisticated Core (`runtime/data/config/sophisticatedcore-common.toml`) ```toml [common] - chestLootEnabled = true - - # Disable / enable any items here (disables their recipes) - enabledItems = [ - "sophisticatedbackpacks:stack_upgrade_tier_3|false", - "sophisticatedbackpacks:stack_upgrade_tier_4|false" - ] + # Disable / enable any items here (disables their recipes) + enabledItems = [ + "sophisticatedbackpacks:stack_upgrade_tier_3|false", + "sophisticatedbackpacks:stack_upgrade_tier_4|false" + ] ``` ### 5. Majrusz's Progressive Difficulty (`runtime/data/config/majruszsdifficulty.json`) @@ -82,9 +82,22 @@ } ``` -### 6. Distant Horizons (`runtime/data/config/DistantHorizons.toml`) -```toml -[client.advanced.worldGenerator] - # Set to FULL to generate both vanilla chunks and LODs during server pregen (/dh pregen start) - distantGeneratorMode = "FULL" +### 6. JourneyMap Server Enforced Radar (`runtime/data/journeymap/server/6.0/journeymap.server.global.config` & `journeymap.server.default.config`) +```json +{ + "radarEnabled": "Disabled", + "caveMappingEnabled": "Disabled", + "surfaceMappingEnabled": "Enabled" +} +``` + +### 7. Distant Horizons (`runtime/data/config/DistantHorizons.toml`) +```toml +[common.worldGenerator] + # Set to INTERNAL_SERVER to generate both vanilla chunks and LODs natively via (/dh pregen start) + distantGeneratorMode = "INTERNAL_SERVER" + +[common.threads] + # Balanced preset ensures DH pregen does not starve main server thread on Forge + threadPreset = "BALANCED" ``` diff --git a/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/aestheticstorage-common.toml b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/aestheticstorage-common.toml new file mode 100644 index 0000000..50242c4 --- /dev/null +++ b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/aestheticstorage-common.toml @@ -0,0 +1,10 @@ +#Whether to log the dirt block on common setup +logDirtBlock = true +#A magic number +#Range: > 0 +magicNumber = 42 +#What you want the introduction message to be for the magic number +magicNumberIntroduction = "The magic number is... " +#A list of items to log on common setup. +items = ["minecraft:iron_ingot"] + diff --git a/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/canary.properties b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/canary.properties new file mode 100644 index 0000000..224ad6d --- /dev/null +++ b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/canary.properties @@ -0,0 +1,8 @@ +# This is the configuration file for Canary. +# This file exists for debugging purposes and should not be configured otherwise. +# Before configuring anything, take a backup of the worlds that will be opened. +# +# You can find information on editing this file and all the available options here: +# https://github.com/AbdElAziz333/Canary/wiki/Configuration-File +# +# By default, this file will be empty except for this notice. diff --git a/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/chunky/config.json b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/chunky/config.json new file mode 100644 index 0000000..5072cf0 --- /dev/null +++ b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/chunky/config.json @@ -0,0 +1,8 @@ +{ + "version": 2, + "language": "en", + "continueOnRestart": false, + "forceLoadExistingChunks": false, + "silent": false, + "updateInterval": 1 +} \ No newline at end of file diff --git a/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/chunky/tasks/minecraft/overworld.properties b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/chunky/tasks/minecraft/overworld.properties new file mode 100644 index 0000000..d2576ca --- /dev/null +++ b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/chunky/tasks/minecraft/overworld.properties @@ -0,0 +1,9 @@ +world=minecraft:overworld +cancelled=false +center-x=0.0 +center-z=0.0 +radius=4000.0 +shape=circle +pattern=region +chunks=16807 +time=1231678 diff --git a/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/connectivity.json b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/connectivity.json new file mode 100644 index 0000000..f70721a --- /dev/null +++ b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/connectivity.json @@ -0,0 +1,40 @@ +{ + "disableLoginLimits": { + "desc:": "Should login packet size limits be disabled? Error:(IOException(\"Payload may not be larger than 1048576 bytes\")) default:true", + "disableLoginLimits": true + }, + "disablePacketLimits": { + "desc:": "Should play packet size limits be disabled? Error:(Badly compressed packet) default:true", + "disablePacketLimits": true + }, + "disableChatVerificationDisconnect": { + "desc:": "(Clientside) Disables players disconnecting on chat message verification problems,(enable debugPrintMessages to see the message causing issues). default:true", + "disableChatVerificationDisconnect": true + }, + "debugPrintMessages": { + "desc:": "Enable addition debug logging for networking errors. default:false", + "debugPrintMessages": false + }, + "logintimeout": { + "desc:": "Set the max login timeout in seconds. default = 120", + "logintimeout": 120 + }, + "disconnectTimeout": { + "desc:": "Set the ingame disconnect timeout for disconnecting players. Default = 60sec", + "disconnectTimeout": 60 + }, + "packetHistoryMinutes": { + "desc:": "Set the amount of minutes for which network packet history data is saved. Default = 5 minutes", + "packetHistoryMinutes": 5 + }, + "malformedtraffic": { + "desc:": "Detection and blocking of malformed and/or malicious traffic", + "enabled": true, + "proxies:": "Add your proxy IP to the whitelist below, if you're using one(e.g. velocity) to avoid blocking the proxy's ip. Format: [\"127.0.0.1\", \"128.0.01\"] without the \\ ", + "proxywhitelist": [] + }, + "showFullResourceLocationException": { + "desc:": "Enable to see the full log output for all resource location exceptions. Default = false", + "showFullResourceLocationException": false + } +} \ No newline at end of file diff --git a/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/cupboard.json b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/cupboard.json new file mode 100644 index 0000000..da6f561 --- /dev/null +++ b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/cupboard.json @@ -0,0 +1,26 @@ +{ + "showCommandExecutionErrors": { + "desc:": "Whether to display errors during command execution: default:true", + "showCommandExecutionErrors": true + }, + "debugChunkloadAttempts": { + "desc:": "Enables debug logging of chunks being forceloaded on serverthread by directly accessing an unloaded chunk, which stalls the server until the chunk finishes loading, incompatible with lithium and its forks: default:false", + "debugChunkloadAttempts": false + }, + "skipErrorOnEntityLoad": { + "desc:": "Prevent crashes on entity loading: default:false", + "skipErrorOnEntityLoad": false + }, + "logOffthreadEntityAdd": { + "desc:": "Entities should only be added on the server thread itself, cupboard fixes the crashes caused by mods violating that, this option enables the logging of those: default:true", + "logOffthreadEntityAdd": true + }, + "forceHeapDumpOnOOM": { + "desc:": "Enables creating a heap dump automatically once the game crashes with an out of memory issue, use with care heapdumps take a lot of space. default:false", + "forceHeapDumpOnOOM": false + }, + "displayConfigReload": { + "desc:": "Displays a chat message on the client on reloading a config file after changes were detected to the clients config file. default:true", + "displayConfigReload": true + } +} \ No newline at end of file diff --git a/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/evilseagull-common.toml b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/evilseagull-common.toml new file mode 100644 index 0000000..57fdb1d --- /dev/null +++ b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/evilseagull-common.toml @@ -0,0 +1,56 @@ + +[sophisticated_backpacks] + enableStealFromBackpacks = true + #Range: 1 ~ 50 + backpackSearchRange = 10 + enableStealFromPlacedBackpacks = true + #Range: 1 ~ 32 + placedBackpackSearchRange = 16 + stealAnyItem = false + +[applied_energistics] + enableStealFromMEInterface = true + #Range: 1 ~ 32 + meInterfaceSearchRange = 16 + #Range: 0.0 ~ 1000.0 + powerPerSteal = 10.0 + stealAnyItem = false + +[refined_storage] + enableStealFromRSInterface = true + #Range: 1 ~ 32 + rsInterfaceSearchRange = 16 + #Range: 0 ~ 1000 + energyPerSteal = 10 + stealAnyItem = false + +[create] + enableStealFromBelt = true + #Range: 1 ~ 32 + beltSearchRange = 16 + stealAnyItem = true + #Range: 1 ~ 50 + dropRangeMin = 5 + #Range: 1 ~ 100 + dropRangeMax = 15 + #Range: 0 ~ 200 + hoverTimeMin = 40 + #Range: 0 ~ 400 + hoverTimeMax = 80 + +[general] + #Range: 50 ~ 500 + stealCooldownModifier = 100 + prioritizePlayerInventory = true + #Range: 1 ~ 50 + dropRangeMin = 5 + #Range: 1 ~ 100 + dropRangeMax = 15 + +[easter_eggs] + #Christmas Easter Egg - Seagulls wear Christmas hats during Christmas season (Dec 24-26) + #Enable Christmas hat for seagulls during Christmas season + enableChristmasHat = true + #Force Christmas hat to show regardless of date (for testing) + forceChristmasHat = false + diff --git a/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/lingua_bib.json b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/lingua_bib.json new file mode 100644 index 0000000..fd73402 --- /dev/null +++ b/instances/forge-1.20.1-survival/runtime/data/config_orphans_backup/lingua_bib.json @@ -0,0 +1,3 @@ +{ + "default_lang": "en_us" +} \ No newline at end of file diff --git a/instances/forge-1.20.1-survival/runtime/data/ops.json b/instances/forge-1.20.1-survival/runtime/data/ops.json index 71ea9c9..1e4bebb 100644 --- a/instances/forge-1.20.1-survival/runtime/data/ops.json +++ b/instances/forge-1.20.1-survival/runtime/data/ops.json @@ -1 +1,8 @@ -[] \ No newline at end of file +[ + { + "uuid": "b12ce09e-5a4e-3a90-a23c-087c8c9d32e0", + "name": "JaniSoto", + "level": 4, + "bypassesPlayerLimit": false + } +] \ No newline at end of file diff --git a/instances/forge-1.20.1-survival/runtime/data/server.properties b/instances/forge-1.20.1-survival/runtime/data/server.properties index 26109ab..9a1ddaf 100644 --- a/instances/forge-1.20.1-survival/runtime/data/server.properties +++ b/instances/forge-1.20.1-survival/runtime/data/server.properties @@ -1,5 +1,5 @@ #Minecraft server properties -#Tue Aug 11 14:49:07 UTC 2026 +#Wed Aug 12 05:25:36 UTC 2026 allow-flight=true allow-nether=true broadcast-console-to-ops=true @@ -38,7 +38,7 @@ prevent-proxy-connections=false pvp=true query.port=25565 rate-limit=0 -rcon.password=12eb66c41752972eb6ddfecd +rcon.password=ac285a169330d782975d159d rcon.port=25575 require-resource-pack=false resource-pack= diff --git a/instances/forge-1.20.1-survival/runtime/docker-compose.yml b/instances/forge-1.20.1-survival/runtime/docker-compose.yml index 17ea4dd..0ed9d9c 100644 --- a/instances/forge-1.20.1-survival/runtime/docker-compose.yml +++ b/instances/forge-1.20.1-survival/runtime/docker-compose.yml @@ -28,21 +28,23 @@ services: # JVM Garbage Collection & Network Flags JVM_OPTS: >- - -Dfml.readTimeout=180 - -Dfml.loginTimeout=180 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC - -XX:MaxGCPauseMillis=50 - -XX:G1HeapRegionSize=8M - -XX:G1ReservePercent=15 - -XX:InitiatingHeapOccupancyPercent=45 - -XX:G1MixedGCCountTarget=4 - -XX:G1HeapWastePercent=5 - -XX:G1NewSizePercent=30 - -XX:G1MaxNewSizePercent=40 - -XX:SurvivorRatio=8 - -XX:MaxTenuringThreshold=1 + -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