From 2dcbbd47536879bb18c18a0372f39afb205ec39122ae01538af7de74daa126b2 Mon Sep 17 00:00:00 2001 From: JaniSoto Date: Sun, 16 Aug 2026 16:10:46 +0000 Subject: [PATCH] fix(forge-1.20.1): sync options via AutoModpack and restore standard keybinds - Relocate options.txt to host-modpack root and configure AutoModpack sync with allowEditsInFiles - Standardize default keybindings in keybindings.txt (Left Shift = Crouch, Left Control = Sprint) - Remove options.txt from defaultoptions payload to resolve early-boot graphics init race condition - Update runtime configuration for packetfixer - Update instance README.md, mod-configs.md, runbook scp targets, and releases endpoint URL --- instances/forge-1.20.1-survival/README.md | 23 +-- .../forge-1.20.1-survival/mod-configs.md | 170 +----------------- .../data/automodpack/automodpack-server.json | 4 +- .../config/defaultoptions/keybindings.txt | 4 +- .../{config/defaultoptions => }/options.txt | 0 .../data/config/packetfixer.properties | 2 +- 6 files changed, 26 insertions(+), 177 deletions(-) rename instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/{config/defaultoptions => }/options.txt (100%) mode change 100755 => 100644 diff --git a/instances/forge-1.20.1-survival/README.md b/instances/forge-1.20.1-survival/README.md index e9c3b07..f70aa9b 100644 --- a/instances/forge-1.20.1-survival/README.md +++ b/instances/forge-1.20.1-survival/README.md @@ -8,7 +8,7 @@ * **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](../../../releases)** section of this repository. +1. Download **`automodpack-mc1.20.1-forge-4.0.6.jar`** from the **[Releases](https://git.sotohome.top/JaniSoto/mcserver/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`**. @@ -74,6 +74,12 @@ services: -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 @@ -195,10 +201,9 @@ Explicitly excluded from syncing to clients via `syncedFiles` in `automodpack-se ### 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/`: - 1. `keybindings.txt`: Enforces master keybindings (Sneak=Shift, Sprint=Ctrl, FTB Chunks minimap unbound) dynamically on game boot. - 2. `options.txt`: Delivers initial FOV, audio levels (Master 60%, Music 25%, Hostile 75%, Neutral/Ambient 40%), and active resource packs **on first launch only**. - *Note:* Root `options.txt` is intentionally **excluded** from the AutoModpack server sync repository (`automodpack/host-modpack/main/options.txt`) so that player sound, graphics, and FOV customizations persist between sessions without being overwritten on boot. +* **Options & Keybindings Enforcement**: + 1. `keybindings.txt` (`/config/defaultoptions/keybindings.txt`): Enforces master keybindings (Sneak=Shift, Sprint=Ctrl, FTB Chunks minimap unbound) dynamically on game boot via `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. --- @@ -209,16 +214,14 @@ To update master client options or default keybind templates: ```bash cd ~/.local/share/PrismLauncher/instances//minecraft -# Push master options to Default Options payload directory +# 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) +# 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/config/defaultoptions/options.txt - -# Note: DO NOT place options.txt directly in automodpack/host-modpack/main/options.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" diff --git a/instances/forge-1.20.1-survival/mod-configs.md b/instances/forge-1.20.1-survival/mod-configs.md index 10d2978..877bf5a 100644 --- a/instances/forge-1.20.1-survival/mod-configs.md +++ b/instances/forge-1.20.1-survival/mod-configs.md @@ -6,8 +6,8 @@ | Mod | Config File Path | Key Setting | Value | Purpose | | :--- | :--- | :--- | :--- | :--- | -| **AutoModpack** | `runtime/data/automodpack/automodpack-server.json` | `validateSecrets` / `forceCopyFilesToStandardLocation` | `false` / `["/mods/*.jar", "/config/**"]` | Dynamic modpack delivery, trusted instant join, and forced client payload sync | -| **Default Options** | `runtime/data/automodpack/host-modpack/main/config/defaultoptions/` | `keybindings.txt` / `options.txt` | Keybinds (`key_key.*`) / Options (`soundCategory_*`, FOV, graphics) | `keybindings.txt` enforces key mappings on boot; `options.txt` sets initial graphics/audio defaults on first boot without wiping user options later. | +| **AutoModpack** | `runtime/data/automodpack/automodpack-server.json` | `syncedFiles` / `allowEditsInFiles` | `["/mods/*.jar", "/config/**", "/options.txt"]` | Dynamic modpack delivery, trusted instant join, and initial `options.txt` synchronization with local edit persistence | +| **Default Options** | `runtime/data/automodpack/host-modpack/main/config/defaultoptions/` | `keybindings.txt` | Keybinds (`key_key.*`) | Enforces master keybindings dynamically on game boot | | **LTS Auth** | `runtime/data/config/lts_auth/messages.yml` | `timeout_kick` | Configured message | In-game auth, invulnerability lock & auto-kick (`players.json` credential store ignored by Git) | | **Locks Reforged** | `runtime/data/config/locks-common.toml` | `"Enable Loot-Scaled Locks"` | `true` | Loot-value-based container lock tier selection | | **Improved Mobs** | `runtime/data/config/improvedmobs/common.toml` | `"Breaker Chance"` / `"Stealer Chance"` | `0.0` / `0.3` | Disables block breaking; item stealing enabled (30%); JAR excluded from client sync (`!/mods/improvedmobs*.jar`) | @@ -44,10 +44,12 @@ "/resourcepacks/*", "/config/**", "!/config/simplebackups-common.toml", - "!/config/spark/**" + "!/config/spark/**", + "/options.txt" ], "allowEditsInFiles": [ - "/config/**" + "/config/**", + "/options.txt" ], "forceCopyFilesToStandardLocation": [ "/mods/*.jar", @@ -64,7 +66,7 @@ } ``` -### 2. Default Options Master Template (`runtime/data/automodpack/host-modpack/main/config/defaultoptions/options.txt`) +### 2. AutoModpack First-Launch Options Template (`runtime/data/automodpack/host-modpack/main/options.txt`) ```text version:3465 autoJump:false @@ -152,164 +154,6 @@ onlyShowSecureChat:false panoramaScrollSpeed:1.0 telemetryOptInExtra:false onboardAccessibility:false -key_key.attack:key.mouse.left -key_key.use:key.mouse.right -key_key.forward:key.keyboard.w -key_key.left:key.keyboard.a -key_key.back:key.keyboard.s -key_key.right:key.keyboard.d -key_key.jump:key.keyboard.space -key_key.sneak:key.keyboard.left.shift -key_key.sprint:key.keyboard.left.control -key_key.drop:key.keyboard.q -key_key.inventory:key.keyboard.e -key_key.chat:key.keyboard.t -key_key.playerlist:key.keyboard.tab -key_key.pickItem:key.mouse.middle -key_key.command:key.keyboard.slash -key_key.socialInteractions:key.keyboard.p -key_key.screenshot:key.keyboard.f2 -key_key.togglePerspective:key.keyboard.f5 -key_key.smoothCamera:key.keyboard.unknown -key_key.fullscreen:key.keyboard.f11 -key_key.spectatorOutlines:key.keyboard.unknown -key_key.swapOffhand:key.keyboard.f -key_key.saveToolbarActivator:key.keyboard.c -key_key.loadToolbarActivator:key.keyboard.x -key_key.advancements:key.keyboard.l -key_key.hotbar.1:key.keyboard.1 -key_key.hotbar.2:key.keyboard.2 -key_key.hotbar.3:key.keyboard.3 -key_key.hotbar.4:key.keyboard.4 -key_key.hotbar.5:key.keyboard.5 -key_key.hotbar.6:key.keyboard.6 -key_key.hotbar.7:key.keyboard.7 -key_key.hotbar.8:key.keyboard.8 -key_key.hotbar.9:key.keyboard.9 -key_key.sophisticatedcore.sort:key.mouse.middle -key_key.sophisticatedcore.transfer_to_storage:key.keyboard.left.bracket -key_key.sophisticatedcore.transfer_to_inventory:key.keyboard.right.bracket -key_key.modernfix.config:key.keyboard.unknown -key_key.sophisticatedbackpacks.open_backpack:key.keyboard.b -key_key.sophisticatedbackpacks.inventory_interaction:key.keyboard.c -key_key.sophisticatedbackpacks.tool_swap:key.keyboard.unknown -key_key.sophisticatedbackpacks.toggle_upgrade_1:key.keyboard.z:ALT -key_key.sophisticatedbackpacks.toggle_upgrade_2:key.keyboard.x:ALT -key_key.sophisticatedbackpacks.toggle_upgrade_3:key.keyboard.unknown -key_key.sophisticatedbackpacks.toggle_upgrade_4:key.keyboard.unknown -key_key.sophisticatedbackpacks.toggle_upgrade_5:key.keyboard.unknown -key_key.corpse.death_history:key.keyboard.u:CONTROL -key_key.botania_corporea_request:key.keyboard.c -key_key.curios.open.desc:key.keyboard.g -key_key.ftbteams.open_gui:key.keyboard.unknown -key_key.ftbchunks.map:key.keyboard.unknown -key_key.ftbchunks.toggle_minimap:key.keyboard.unknown -key_key.ftbchunks.claim_manager:key.keyboard.unknown -key_key.ftbchunks.minimap.zoomIn:key.keyboard.unknown -key_key.ftbchunks.minimap.zoomOut:key.keyboard.unknown -key_key.ftbchunks.add_waypoint:key.keyboard.unknown -key_key.ftbchunks.waypoint_manager:key.keyboard.unknown -key_key.mca.skin_library:key.keyboard.unknown -key_key.jei.showRecipe2:key.mouse.left -key_key.jei.showBookmarkTooltipFeatures:key.keyboard.left.control -key_key.jei.transferRecipeBookmark:key.mouse.left:SHIFT -key_key.jei.previousSearch:key.keyboard.up -key_key.jei.showRecipe:key.keyboard.r -key_key.jei.nextRecipePage:key.keyboard.page.down -key_key.jei.bookmark:key.keyboard.a -key_key.jei.maxTransferRecipeBookmark:key.mouse.left:CONTROL -key_key.jei.nextSearch:key.keyboard.down -key_key.jei.recipeBack:key.keyboard.backspace -key_key.jei.quickMove:key.mouse.left:SHIFT -key_key.jei.cheatItemStack2:key.mouse.middle -key_key.jei.toggleWildcardHideIngredient:key.mouse.right:CONTROL -key_key.jei.clearSearchBar:key.mouse.right -key_key.jei.toggleHideIngredient:key.mouse.left:CONTROL -key_key.jei.previousPage:key.keyboard.unknown -key_key.jei.cheatOneItem:key.mouse.left -key_key.jei.nextPage:key.keyboard.unknown -key_key.jei.pauseRecipeCycling:key.keyboard.left.shift -key_key.jei.cheatItemStack:key.mouse.left:SHIFT -key_key.jei.focusSearch:key.keyboard.f:CONTROL -key_key.jei.nextCategory:key.keyboard.page.down:SHIFT -key_key.jei.closeRecipeGui:key.keyboard.escape -key_key.jei.toggleBookmarkOverlay:key.keyboard.unknown -key_key.jei.previousCategory:key.keyboard.page.up:SHIFT -key_key.jei.previousRecipePage:key.keyboard.page.up -key_key.jei.showUses2:key.mouse.right -key_key.jei.showUses:key.keyboard.u -key_key.jei.toggleCheatModeConfigButton:key.mouse.left:CONTROL -key_key.jei.toggleEditMode:key.keyboard.unknown -key_key.jei.copy.recipe.id:key.keyboard.unknown -key_key.jei.shareToChat:key.keyboard.unknown -key_key.jei.cheatOneItem2:key.mouse.right -key_key.jei.toggleCheatMode:key.keyboard.unknown -key_key.jei.toggleOverlay:key.keyboard.unknown -key_key.journeymap.minimap_preset:key.keyboard.backslash -key_key.journeymap.toggle_entity_names:key.keyboard.g -key_key.journeymap.toggle_render_waypoints_map:key.keyboard.unknown -key_key.journeymap.fullscreen.south:key.keyboard.down -key_key.journeymap.zoom_in:key.keyboard.equal -key_key.journeymap.fullscreen.north:key.keyboard.up -key_key.journeymap.fullscreen_waypoints:key.keyboard.n -key_key.journeymap.toggle_render_waypoints_world:key.keyboard.unknown -key_key.journeymap.fullscreen.east:key.keyboard.right -key_key.journeymap.zoom_out:key.keyboard.minus -key_key.journeymap.create_waypoint:key.keyboard.b:CONTROL -key_key.journeymap.fullscreen.disable_buttons:key.keyboard.unknown -key_key.journeymap.minimap_type:key.keyboard.left.bracket -key_key.journeymap.fullscreen_create_waypoint:key.keyboard.b:CONTROL -key_key.journeymap.fullscreen.west:key.keyboard.left -key_key.journeymap.toggle_waypoints:key.keyboard.unknown -key_key.journeymap.fullscreen_chat_position:key.keyboard.c -key_key.journeymap.map_toggle_alt:key.keyboard.j -key_key.journeymap.toggle_render_waypoints:key.keyboard.unknown -key_key.journeymap.minimap_toggle_alt:key.keyboard.j:CONTROL -key_key.journeymap.fullscreen_options:key.keyboard.o -key_key.journeymap.fullscreen_follow_player:key.keyboard.f -key_key.push_to_talk:key.keyboard.unknown -key_key.whisper:key.keyboard.unknown -key_key.mute_microphone:key.keyboard.m:ALT -key_key.disable_voice_chat:key.keyboard.unknown -key_key.hide_icons:key.keyboard.unknown -key_key.voice_chat:key.keyboard.v -key_key.voice_chat_settings:key.keyboard.unknown -key_key.voice_chat_group:key.keyboard.g:ALT -key_key.voice_chat_toggle_recording:key.keyboard.unknown -key_key.voice_chat_adjust_volumes:key.keyboard.unknown -key_key.immersiveengineering.magnetEquip:key.keyboard.s -key_key.immersiveengineering.railgunZoom:key.mouse.middle -key_key.immersiveengineering.chemthrowerSwitch:key.keyboard.unknown -key_key.jade.config:key.keyboard.keypad.0 -key_key.jade.show_overlay:key.keyboard.keypad.1 -key_key.jade.toggle_liquid:key.keyboard.keypad.2 -key_key.jade.show_recipes:key.keyboard.keypad.3 -key_key.jade.show_uses:key.keyboard.keypad.4 -key_key.jade.narrate:key.keyboard.keypad.5 -key_key.jade.show_details:key.keyboard.left.shift -key_key.ponder.ponder:key.keyboard.w -key_key.irons_spellbooks.spell_wheel:key.keyboard.r -key_key.irons_spellbooks.spell_wheel_toggle:key.keyboard.unknown -key_key.irons_spellbooks.spellbook_cast:key.keyboard.z -key_key.irons_spellbooks.spell_bar_modifier:key.keyboard.left.shift -key_key.irons_spellbooks.spell_quick_cast_1:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_2:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_3:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_4:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_5:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_6:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_7:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_8:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_9:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_10:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_11:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_12:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_13:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_14:key.keyboard.unknown -key_key.irons_spellbooks.spell_quick_cast_15:key.keyboard.unknown -key_key.presencefootsteps.settings:key.keyboard.f10 -key_key.ad_astra.toggle_suit_flight:key.keyboard.h -key_key.ad_astra.open_radio:key.keyboard.r:ALT soundCategory_master:0.6 soundCategory_music:0.25 soundCategory_record:1.0 diff --git a/instances/forge-1.20.1-survival/runtime/data/automodpack/automodpack-server.json b/instances/forge-1.20.1-survival/runtime/data/automodpack/automodpack-server.json index 7729777..08b698b 100755 --- a/instances/forge-1.20.1-survival/runtime/data/automodpack/automodpack-server.json +++ b/instances/forge-1.20.1-survival/runtime/data/automodpack/automodpack-server.json @@ -10,6 +10,7 @@ "!/config/luckperms/libs/**", "!/mods/improvedmobs*.jar", "!/mods/spark*.jar", + "/options.txt", "!/mods/antixray*.jar", "!/mods/doubledoors*.jar", "!/mods/Clumps*.jar", @@ -22,7 +23,8 @@ "!/config/spark/**" ], "allowEditsInFiles": [ - "/config/**" + "/config/**", + "/options.txt" ], "forceCopyFilesToStandardLocation": [ "/mods/*.jar", diff --git a/instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/config/defaultoptions/keybindings.txt b/instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/config/defaultoptions/keybindings.txt index 959d5c2..fea93b6 100644 --- a/instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/config/defaultoptions/keybindings.txt +++ b/instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/config/defaultoptions/keybindings.txt @@ -5,8 +5,8 @@ key_key.left:key.keyboard.a key_key.back:key.keyboard.s key_key.right:key.keyboard.d key_key.jump:key.keyboard.space -key_key.sneak:key.keyboard.left.control -key_key.sprint:key.keyboard.left.shift +key_key.sneak:key.keyboard.left.shift +key_key.sprint:key.keyboard.left.control key_key.drop:key.keyboard.q key_key.inventory:key.keyboard.e key_key.chat:key.keyboard.t diff --git a/instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/config/defaultoptions/options.txt b/instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/options.txt old mode 100755 new mode 100644 similarity index 100% rename from instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/config/defaultoptions/options.txt rename to instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/options.txt diff --git a/instances/forge-1.20.1-survival/runtime/data/config/packetfixer.properties b/instances/forge-1.20.1-survival/runtime/data/config/packetfixer.properties index e483e82..8bded24 100755 --- a/instances/forge-1.20.1-survival/runtime/data/config/packetfixer.properties +++ b/instances/forge-1.20.1-survival/runtime/data/config/packetfixer.properties @@ -1,7 +1,7 @@ #Packet Fixer config file. #Default values (minecraft default): nbtMaxSize 2097152, packetSize 1048576, decoderSize 8388608 and varInt21Size 3. #Max values are 2147483647 for packetSize/decoderSize/varInt21 and 9223372036854775807 for nbtMaxSize. -#Sun Aug 16 06:30:35 UTC 2026 +#Sun Aug 16 16:04:04 UTC 2026 chunkPacketData=2097152 varLong=10 nbtMaxSize=2097152