- Add Twilight Forest and Blue Skies dimensions to Majrusz Difficulty expert stage triggers - Add JourneyMap UI config files to AutoModpack client payload and sync rules - Register non-conflicting Ars Nouveau keybindings with Alt modifiers - Update repo and instance docs to reflect 77 server / 19 client mods and default-options patch - Enhance Player Quick Join section layout for better readability
305 lines
11 KiB
Markdown
305 lines
11 KiB
Markdown
# 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](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`**.
|
|
|
|
*(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`)
|
|
|
|
```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"
|
|
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)
|
|
|
|
```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
|
|
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:
|
|
|
|
```text
|
|
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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
cd instances/forge-1.20.1-survival/patches/lts-auth/
|
|
python3 build.py
|
|
```
|
|
3. Restart the server container to load the compiled JAR:
|
|
```bash
|
|
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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
docker restart mc_forge_server
|
|
```
|
|
|
|
### World Pre-Generation (Chunky)
|
|
```bash
|
|
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)
|
|
```bash
|
|
docker exec -i mc_forge_server rcon-cli "spark profiler --timeout 30"
|
|
docker exec -i mc_forge_server rcon-cli "spark healthreport"
|
|
```
|