Compare commits

...

2 Commits

Author SHA1 Message Date
36c28362bc chore(mods): sync mods-sides.json with distribution
+21 new (Yungs* + Moogs* worldgen, lootjs, solcarrot, melter,
seamless-loading-screen), -8 removed (FramedBlocks, GnKinetics,
create_vibrant_vaults, createtransmission, interiors, picaxe,
bellsandwhistles, welcomescreen). seamless-loading-screen hand-edited
to client (pure client UI). Worldgen mods stay both — server generates
structures.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 19:05:44 +02:00
07a4ae469d docs(minecraft): document OP-via-RCON, not itzg OPS env
OPS env resolves names via Mojang lookup, but the server is offline-mode
with Drasl auth (own UUIDs) → wrong UUID, inert op entry. Document the
RCON procedure that uses the cached Drasl UUID from usercache.json.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 15:00:22 +02:00
2 changed files with 45 additions and 8 deletions

View File

@@ -12,14 +12,16 @@
"EnderStorage-1.21.1-2.13.0.191.jar": "both", "EnderStorage-1.21.1-2.13.0.191.jar": "both",
"ExplorersCompass-1.21.1-3.4.0-neoforge.jar": "both", "ExplorersCompass-1.21.1-3.4.0-neoforge.jar": "both",
"FarmersDelight-1.21.1-1.3.2.jar": "both", "FarmersDelight-1.21.1-1.3.2.jar": "both",
"FramedBlocks-10.6.0.jar": "both",
"GnKinetics-1.21.1-1.0m.jar": "both",
"HangGlider-v21.1.0-1.21.1-NeoForge.jar": "both", "HangGlider-v21.1.0-1.21.1-NeoForge.jar": "both",
"ImmediatelyFast-NeoForge-1.6.10+1.21.1.jar": "client", "ImmediatelyFast-NeoForge-1.6.10+1.21.1.jar": "client",
"Jade-1.21.1-NeoForge-15.10.5.jar": "both", "Jade-1.21.1-NeoForge-15.10.5.jar": "both",
"JadeAddons-1.21.1-NeoForge-6.1.0.jar": "both", "JadeAddons-1.21.1-NeoForge-6.1.0.jar": "both",
"JustEnoughProfessions-neoforge-1.21.1-4.0.5.jar": "both", "JustEnoughProfessions-neoforge-1.21.1-4.0.5.jar": "both",
"JustEnoughResources-NeoForge-1.21.1-1.6.0.17.jar": "client", "JustEnoughResources-NeoForge-1.21.1-1.6.0.17.jar": "client",
"MoogsEndStructures-1.21-2.0.3.jar": "both",
"MoogsMissingVillages-1.21-2.1.1.jar": "both",
"MoogsNetherStructures-1.21-3.0.0-alpha.2.jar": "both",
"MoogsVoyagerStructures-1.21-5.0.11.jar": "both",
"MouseTweaks-neoforge-mc1.21-2.26.1.jar": "client", "MouseTweaks-neoforge-mc1.21-2.26.1.jar": "client",
"Neat-1.21-47-NEOFORGE.jar": "both", "Neat-1.21-47-NEOFORGE.jar": "both",
"Necronomicon-NeoForge-1.6.0+1.21.jar": "both", "Necronomicon-NeoForge-1.6.0+1.21.jar": "both",
@@ -30,11 +32,22 @@
"TravelersTitles-1.21.1-NeoForge-5.1.3.jar": "client", "TravelersTitles-1.21.1-NeoForge-5.1.3.jar": "client",
"UsefulSlime-neoforge-1.21-1.12.1.jar": "both", "UsefulSlime-neoforge-1.21-1.12.1.jar": "both",
"YungsApi-1.21.1-NeoForge-5.1.6.jar": "both", "YungsApi-1.21.1-NeoForge-5.1.6.jar": "both",
"YungsBetterCaves-1.21.1-NeoForge-3.1.4.jar": "both",
"YungsBetterDesertTemples-1.21.1-NeoForge-4.1.5.jar": "both",
"YungsBetterDungeons-1.21.1-NeoForge-5.1.4.jar": "both",
"YungsBetterEndIsland-1.21.1-NeoForge-3.1.2.jar": "both",
"YungsBetterJungleTemples-1.21.1-NeoForge-3.1.2.jar": "both",
"YungsBetterMineshafts-1.21.1-NeoForge-5.1.1.jar": "both",
"YungsBetterNetherFortresses-1.21.1-NeoForge-3.1.5.jar": "both",
"YungsBetterOceanMonuments-1.21.1-NeoForge-4.1.2.jar": "both",
"YungsBetterStrongholds-1.21.1-NeoForge-5.1.3.jar": "both",
"YungsBetterWitchHuts-1.21.1-NeoForge-4.1.1.jar": "both",
"YungsBridges-1.21.1-NeoForge-5.1.1.jar": "both",
"YungsCaveBiomes-1.21.1-NeoForge-3.1.1.jar": "both",
"appleskin-neoforge-mc1.21-3.0.9.jar": "client", "appleskin-neoforge-mc1.21-3.0.9.jar": "client",
"architectury-13.0.8-neoforge.jar": "both", "architectury-13.0.8-neoforge.jar": "both",
"baguettelib-1.21.1-NeoForge-2.0.3.jar": "both", "baguettelib-1.21.1-NeoForge-2.0.3.jar": "both",
"balm-neoforge-1.21.1-21.0.58.jar": "both", "balm-neoforge-1.21.1-21.0.58.jar": "both",
"bellsandwhistles-0.4.7-1.21.1.jar": "both",
"buildinggadgets2-1.3.9.jar": "both", "buildinggadgets2-1.3.9.jar": "both",
"cardboardboxes-1.21.1-0.1.2.jar": "both", "cardboardboxes-1.21.1-0.1.2.jar": "both",
"charginggadgets-1.14.1.jar": "both", "charginggadgets-1.14.1.jar": "both",
@@ -55,11 +68,9 @@
"create_mechanical_chicken-1.21.1-1.3.3-6.0.6.jar": "both", "create_mechanical_chicken-1.21.1-1.3.3-6.0.6.jar": "both",
"create_mechanical_extruder-1.21.1-2.2.0-6.0.8.jar": "both", "create_mechanical_extruder-1.21.1-2.2.0-6.0.8.jar": "both",
"create_mechanical_spawner-1.21.1-1.3.0-6.0.8.jar": "both", "create_mechanical_spawner-1.21.1-1.3.0-6.0.8.jar": "both",
"create_vibrant_vaults-0.3.2.jar": "both",
"createaddition-1.6.0.jar": "both", "createaddition-1.6.0.jar": "both",
"createdeco-2.1.3.jar": "both", "createdeco-2.1.3.jar": "both",
"createsifter-1.21.1-2.2.1.jar": "both", "createsifter-1.21.1-2.2.1.jar": "both",
"createtransmission-1.2.1+neoforge-create6-1.21.1.jar": "both",
"createultimine-1.21.1-neoforge-1.3.2.jar": "both", "createultimine-1.21.1-neoforge-1.3.2.jar": "both",
"curios-neoforge-9.5.1+1.21.1.jar": "both", "curios-neoforge-9.5.1+1.21.1.jar": "both",
"cwb-neoforge-3.0.0+mc1.21.jar": "client", "cwb-neoforge-3.0.0+mc1.21.jar": "client",
@@ -83,7 +94,6 @@
"functionalstorage-1.21.1-1.5.7.jar": "both", "functionalstorage-1.21.1-1.5.7.jar": "both",
"fzzy_config-0.7.6+1.21+neoforge.jar": "both", "fzzy_config-0.7.6+1.21+neoforge.jar": "both",
"handcrafted-neoforge-1.21.1-4.0.3.jar": "both", "handcrafted-neoforge-1.21.1-4.0.3.jar": "both",
"interiors-1.21.1-neoforge-0.6.1.jar": "both",
"inventoryessentials-neoforge-1.21.1-21.1.15.jar": "both", "inventoryessentials-neoforge-1.21.1-21.1.15.jar": "both",
"jamlib-neoforge-1.3.6+1.21.1.jar": "both", "jamlib-neoforge-1.3.6+1.21.1.jar": "both",
"jei-1.21.1-neoforge-19.27.0.340.jar": "both", "jei-1.21.1-neoforge-19.27.0.340.jar": "both",
@@ -94,24 +104,28 @@
"kubejsdelight-1.1.6.jar": "both", "kubejsdelight-1.1.6.jar": "both",
"laserio-1.9.11.jar": "both", "laserio-1.9.11.jar": "both",
"lithium-neoforge-0.15.3+mc1.21.1.jar": "both", "lithium-neoforge-0.15.3+mc1.21.1.jar": "both",
"lootjs-neoforge-1.21.1-3.7.0.jar": "both",
"lootr-neoforge-1.21.1-1.11.37.120.jar": "both", "lootr-neoforge-1.21.1-1.11.37.120.jar": "both",
"mechanical_cow-1.21.1-1.2.0-6.0.8.jar": "both", "mechanical_cow-1.21.1-1.2.0-6.0.8.jar": "both",
"mechanicals-1.21.1-1.1.0.jar": "both", "mechanicals-1.21.1-1.1.0.jar": "both",
"melody_neoforge_1.0.10_MC_1.21.jar": "client", "melody_neoforge_1.0.10_MC_1.21.jar": "client",
"melter-1.21.1-1.8.2.jar": "both",
"mob_grinding_utils-1.1.10+mc1.21.1.jar": "both", "mob_grinding_utils-1.1.10+mc1.21.1.jar": "both",
"modernfix-neoforge-5.27.12+mc1.21.1.jar": "both", "modernfix-neoforge-5.27.12+mc1.21.1.jar": "both",
"moogs_structures-neoforge-1.21.1-3.0.0.jar": "both",
"morefunctionalstorage-1.2.3.jar": "both", "morefunctionalstorage-1.2.3.jar": "both",
"moreoverlays-1.24.2-mc1.21.1-neoforge.jar": "client", "moreoverlays-1.24.2-mc1.21.1-neoforge.jar": "client",
"picaxe-1.21.1-neoforge-1.0.9.jar": "both",
"polymorph-neoforge-1.1.0+1.21.1.jar": "both", "polymorph-neoforge-1.1.0+1.21.1.jar": "both",
"ponderjs-neoforge-1.21.1-2.4.0.jar": "client", "ponderjs-neoforge-1.21.1-2.4.0.jar": "client",
"resourcefullib-neoforge-1.21-3.0.12.jar": "both", "resourcefullib-neoforge-1.21-3.0.12.jar": "both",
"rhino-2101.2.7-build.85.jar": "both", "rhino-2101.2.7-build.85.jar": "both",
"rightclickharvest-neoforge-4.6.1+1.21.1.jar": "both", "rightclickharvest-neoforge-4.6.1+1.21.1.jar": "both",
"seamless-loading-screen-2.2.1+1.21-neoforge.jar": "client",
"simplemagnets-1.1.12c-neoforge-mc1.21.jar": "both", "simplemagnets-1.1.12c-neoforge-mc1.21.jar": "both",
"sliceanddice-forge-4.2.4.jar": "both", "sliceanddice-forge-4.2.4.jar": "both",
"sodium-extra-neoforge-0.8.7+mc1.21.1.jar": "client", "sodium-extra-neoforge-0.8.7+mc1.21.1.jar": "client",
"sodium-neoforge-0.8.12-alpha.4+mc1.21.1.jar": "client", "sodium-neoforge-0.8.12-alpha.4+mc1.21.1.jar": "client",
"solcarrot-1.21.1-1.16.6.jar": "both",
"sophisticatedbackpacks-1.21.1-3.25.55.1852.jar": "both", "sophisticatedbackpacks-1.21.1-3.25.55.1852.jar": "both",
"sophisticatedbackpackscreateintegration-1.21.1-0.1.6.99.jar": "both", "sophisticatedbackpackscreateintegration-1.21.1-0.1.6.99.jar": "both",
"sophisticatedcore-1.21.1-1.4.49.1976.jar": "both", "sophisticatedcore-1.21.1-1.4.49.1976.jar": "both",
@@ -126,7 +140,6 @@
"txnilib-neoforge-1.0.24-1.21.1.jar": "both", "txnilib-neoforge-1.0.24-1.21.1.jar": "both",
"utilitarian-1.21.1-0.19.2.jar": "both", "utilitarian-1.21.1-0.19.2.jar": "both",
"voicechat-neoforge-1.21.1-2.6.18.jar": "both", "voicechat-neoforge-1.21.1-2.6.18.jar": "both",
"welcomescreen-neoforge-1.0.0-1.21.1.jar": "client",
"wm_binaries-3.0.0-rc.1.jar": "client", "wm_binaries-3.0.0-rc.1.jar": "client",
"yeetusexperimentus-neoforge-87.0.0.jar": "client", "yeetusexperimentus-neoforge-87.0.0.jar": "client",
"yet_another_config_lib_v3-3.8.2+1.21.1-neoforge.jar": "both" "yet_another_config_lib_v3-3.8.2+1.21.1-neoforge.jar": "both"

View File

@@ -35,6 +35,30 @@ authlib URL uses the `auth` subdomain; resolves internally via the caddy alias.
Memory: `INIT_MEMORY 4G`, `MAX_MEMORY 10G`, `USE_AIKAR_FLAGS TRUE`. Memory: `INIT_MEMORY 4G`, `MAX_MEMORY 10G`, `USE_AIKAR_FLAGS TRUE`.
RCON enabled for mc-backup. RCON enabled for mc-backup.
## Server operators (OP)
**Do NOT use the itzg `OPS` env var.** It resolves usernames to UUIDs via a
Mojang lookup, but this server is `ONLINE_MODE=FALSE` with Drasl auth — Drasl
assigns its own UUIDs (not Mojang, not the offline-hash). A Mojang-resolved UUID
would not match the player's real session UUID, so the op entry would be inert
(and could clobber a correct `ops.json` on reboot).
**Op via RCON instead.** The player must have connected at least once so their
real Drasl UUID is cached in `/data/usercache.json`; then `op <name>` writes that
cached UUID to `ops.json`. On the host:
```
ssh cochi
docker exec minecraft rcon-cli list # confirm cache / who's on
docker exec minecraft sh -c 'cat /data/usercache.json' # verify name→UUID cached
docker exec minecraft rcon-cli op <name>
docker exec minecraft sh -c 'cat /data/ops.json' # verify level 4 + right UUID
```
`ops.json` lives in the `mc_data` volume → persists across restarts; no reboot
needed (takes effect live). Current op: `oier`
(`7fbc9adb-bcf4-3913-9a99-46d46acd1009`), level 4, set 2026-06-21.
## Tasks ## Tasks
- [ ] Compose: authlib URL `http://auth.${BASE_DOMAIN}/authlib-injector` - [ ] Compose: authlib URL `http://auth.${BASE_DOMAIN}/authlib-injector`