fix(forge-1.20.1): relocate options template to extra/ and standardize keybinds

- 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
This commit is contained in:
JaniSoto 2026-08-16 15:50:12 +00:00
parent e3b866b989
commit e7557256b8
5 changed files with 8 additions and 169 deletions

View file

@ -8,7 +8,7 @@
* **Required Client Mod**: `automodpack-mc1.20.1-forge-4.0.6.jar` * **Required Client Mod**: `automodpack-mc1.20.1-forge-4.0.6.jar`
### Installation Steps ### 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. 2. Place the `.jar` file into your local `.minecraft/mods/` directory.
3. Launch Minecraft with your Forge 1.20.1 profile. 3. Launch Minecraft with your Forge 1.20.1 profile.
4. Select **Multiplayer** and connect to **`mc.sotohome.top`**. 4. Select **Multiplayer** and connect to **`mc.sotohome.top`**.
@ -197,8 +197,7 @@ Explicitly excluded from syncing to clients via `syncedFiles` in `automodpack-se
* `/config/**` (Synchronizes mod configurations, BSL shader settings, and default options template). * `/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/`: * **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. 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**. 2. `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`.
*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.
--- ---
@ -216,9 +215,7 @@ scp keybindings.txt ubuntu@sotoserver:~/mcserver/instances/forge-1.20.1-survival
# 2. Extract and push updated first-launch options (stripped of keybinds) # 2. Extract and push updated first-launch options (stripped of keybinds)
grep -v "^key_" options.txt > options_clean.txt 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 scp options_clean.txt ubuntu@sotoserver:~/mcserver/instances/forge-1.20.1-survival/runtime/data/automodpack/host-modpack/main/config/defaultoptions/extra/options.txt
# Note: DO NOT place options.txt directly in automodpack/host-modpack/main/options.txt
# Restart server container to update payload manifest # Restart server container to update payload manifest
ssh sotoserver "docker restart mc_forge_server" ssh sotoserver "docker restart mc_forge_server"

View file

@ -7,7 +7,7 @@
| Mod | Config File Path | Key Setting | Value | Purpose | | 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 | | **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. | | **Default Options** | `runtime/data/automodpack/host-modpack/main/config/defaultoptions/` | `keybindings.txt` / `extra/options.txt` | Keybinds (`key_key.*`) / Options (`soundCategory_*`, FOV, graphics, resourcePacks) | `keybindings.txt` enforces key mappings dynamically on boot; `extra/options.txt` force-applies graphics, audio, FOV, and resource pack defaults on first launch without overwriting user options later. |
| **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) | | **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 | | **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`) | | **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`) |
@ -64,7 +64,7 @@
} }
``` ```
### 2. Default Options Master Template (`runtime/data/automodpack/host-modpack/main/config/defaultoptions/options.txt`) ### 2. Default Options Master Template (`runtime/data/automodpack/host-modpack/main/config/defaultoptions/extra/options.txt`)
```text ```text
version:3465 version:3465
autoJump:false autoJump:false
@ -152,164 +152,6 @@ onlyShowSecureChat:false
panoramaScrollSpeed:1.0 panoramaScrollSpeed:1.0
telemetryOptInExtra:false telemetryOptInExtra:false
onboardAccessibility: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_master:0.6
soundCategory_music:0.25 soundCategory_music:0.25
soundCategory_record:1.0 soundCategory_record:1.0

View file

@ -5,8 +5,8 @@ key_key.left:key.keyboard.a
key_key.back:key.keyboard.s key_key.back:key.keyboard.s
key_key.right:key.keyboard.d key_key.right:key.keyboard.d
key_key.jump:key.keyboard.space key_key.jump:key.keyboard.space
key_key.sneak:key.keyboard.left.control key_key.sneak:key.keyboard.left.shift
key_key.sprint:key.keyboard.left.shift key_key.sprint:key.keyboard.left.control
key_key.drop:key.keyboard.q key_key.drop:key.keyboard.q
key_key.inventory:key.keyboard.e key_key.inventory:key.keyboard.e
key_key.chat:key.keyboard.t key_key.chat:key.keyboard.t

View file

@ -1,7 +1,7 @@
#Packet Fixer config file. #Packet Fixer config file.
#Default values (minecraft default): nbtMaxSize 2097152, packetSize 1048576, decoderSize 8388608 and varInt21Size 3. #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. #Max values are 2147483647 for packetSize/decoderSize/varInt21 and 9223372036854775807 for nbtMaxSize.
#Sun Aug 16 06:30:35 UTC 2026 #Sun Aug 16 15:42:08 UTC 2026
chunkPacketData=2097152 chunkPacketData=2097152
varLong=10 varLong=10
nbtMaxSize=2097152 nbtMaxSize=2097152