Compare commits
2 Commits
d12071df04
...
1958a96acf
| Author | SHA1 | Date | |
|---|---|---|---|
| 1958a96acf | |||
| e45ce210ba |
@@ -11,6 +11,7 @@
|
|||||||
"EasyMagic-v21.1.4-1.21.1-NeoForge.jar": "both",
|
"EasyMagic-v21.1.4-1.21.1-NeoForge.jar": "both",
|
||||||
"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",
|
||||||
|
"ExtremeSoundMuffler-3.56_NeoForge-1.21.jar": "client",
|
||||||
"FarmersDelight-1.21.1-1.3.2.jar": "both",
|
"FarmersDelight-1.21.1-1.3.2.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",
|
||||||
@@ -27,9 +28,11 @@
|
|||||||
"Necronomicon-NeoForge-1.6.0+1.21.jar": "both",
|
"Necronomicon-NeoForge-1.6.0+1.21.jar": "both",
|
||||||
"Patchouli-1.21.1-93-NEOFORGE.jar": "both",
|
"Patchouli-1.21.1-93-NEOFORGE.jar": "both",
|
||||||
"Ping-Wheel-1.12.2-neoforge-1.21.1.jar": "both",
|
"Ping-Wheel-1.12.2-neoforge-1.21.1.jar": "both",
|
||||||
|
"Placebo-1.21.1-9.9.1.jar": "both",
|
||||||
"PuzzlesLib-v21.1.51-1.21.1-NeoForge.jar": "both",
|
"PuzzlesLib-v21.1.51-1.21.1-NeoForge.jar": "both",
|
||||||
"Searchables-neoforge-1.21.1-1.0.2.jar": "client",
|
"Searchables-neoforge-1.21.1-1.0.2.jar": "client",
|
||||||
"TerraBlender-neoforge-1.21.1-4.1.0.8.jar": "both",
|
"TerraBlender-neoforge-1.21.1-4.1.0.8.jar": "both",
|
||||||
|
"ToastControl-1.21.1-9.0.1.jar": "client",
|
||||||
"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",
|
||||||
@@ -45,11 +48,13 @@
|
|||||||
"YungsBetterWitchHuts-1.21.1-NeoForge-4.1.1.jar": "both",
|
"YungsBetterWitchHuts-1.21.1-NeoForge-4.1.1.jar": "both",
|
||||||
"YungsBridges-1.21.1-NeoForge-5.1.1.jar": "both",
|
"YungsBridges-1.21.1-NeoForge-5.1.1.jar": "both",
|
||||||
"YungsCaveBiomes-1.21.1-NeoForge-3.1.1.jar": "both",
|
"YungsCaveBiomes-1.21.1-NeoForge-3.1.1.jar": "both",
|
||||||
|
"amendments-neoforge-1.21-2.1.5.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",
|
||||||
"buildinggadgets2-1.3.9.jar": "both",
|
"buildinggadgets2-1.3.9.jar": "both",
|
||||||
|
"caelus-neoforge-7.0.1+1.21.1.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",
|
||||||
"cloth-config-15.0.140-neoforge.jar": "both",
|
"cloth-config-15.0.140-neoforge.jar": "both",
|
||||||
@@ -71,6 +76,7 @@
|
|||||||
"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",
|
||||||
"createaddition-1.6.0.jar": "both",
|
"createaddition-1.6.0.jar": "both",
|
||||||
"createdeco-2.1.3.jar": "both",
|
"createdeco-2.1.3.jar": "both",
|
||||||
|
"createornithopterglider-1.2.0-1.21.1.jar": "both",
|
||||||
"createsifter-1.21.1-2.2.1.jar": "both",
|
"createsifter-1.21.1-2.2.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",
|
||||||
@@ -80,13 +86,16 @@
|
|||||||
"easy-piglins-neoforge-1.21.1-1.1.0.jar": "both",
|
"easy-piglins-neoforge-1.21.1-1.1.0.jar": "both",
|
||||||
"easy-villagers-neoforge-1.21.1-1.1.42.jar": "both",
|
"easy-villagers-neoforge-1.21.1-1.1.42.jar": "both",
|
||||||
"easydisenchanting-neoforge-1.0.0-1.21.1.jar": "both",
|
"easydisenchanting-neoforge-1.0.0-1.21.1.jar": "both",
|
||||||
|
"emotecraft-for-MC1.21.1-2.4.12-neoforge.jar": "both",
|
||||||
"enderrf-1.21.1-1.0.1.jar": "both",
|
"enderrf-1.21.1-1.0.1.jar": "both",
|
||||||
"entity_model_features-3.2.4-1.21-neoforge.jar": "client",
|
"entity_model_features-3.2.4-1.21-neoforge.jar": "client",
|
||||||
"entity_texture_features_1.21-neoforge-7.1.jar": "client",
|
"entity_texture_features_1.21-neoforge-7.1.jar": "client",
|
||||||
"entityculling-neoforge-1.10.2-mc1.21.1.jar": "client",
|
"entityculling-neoforge-1.10.2-mc1.21.1.jar": "client",
|
||||||
|
"etched-5.1.0.jar": "both",
|
||||||
"fancymenu_neoforge_3.9.1_MC_1.21.1.jar": "client",
|
"fancymenu_neoforge_3.9.1_MC_1.21.1.jar": "client",
|
||||||
"fastleafdecay-35.jar": "both",
|
"fastleafdecay-35.jar": "both",
|
||||||
"ferritecore-7.0.3-neoforge.jar": "both",
|
"ferritecore-7.0.3-neoforge.jar": "both",
|
||||||
|
"fishingoverhaul-1.21.1-1.2.1.jar": "both",
|
||||||
"ftb-chunks-neoforge-2101.1.17.jar": "both",
|
"ftb-chunks-neoforge-2101.1.17.jar": "both",
|
||||||
"ftb-essentials-neoforge-2101.1.9.jar": "both",
|
"ftb-essentials-neoforge-2101.1.9.jar": "both",
|
||||||
"ftb-library-neoforge-2101.1.31.jar": "both",
|
"ftb-library-neoforge-2101.1.31.jar": "both",
|
||||||
@@ -97,7 +106,9 @@
|
|||||||
"fzzy_config-0.7.6+1.21+neoforge.jar": "both",
|
"fzzy_config-0.7.6+1.21+neoforge.jar": "both",
|
||||||
"geckolib-neoforge-1.21.1-4.8.4.jar": "both",
|
"geckolib-neoforge-1.21.1-4.8.4.jar": "both",
|
||||||
"handcrafted-neoforge-1.21.1-4.0.3.jar": "both",
|
"handcrafted-neoforge-1.21.1-4.0.3.jar": "both",
|
||||||
|
"immersive_paintings-neoforge-1.21.1-0.7.8.jar": "both",
|
||||||
"inventoryessentials-neoforge-1.21.1-21.1.15.jar": "both",
|
"inventoryessentials-neoforge-1.21.1-21.1.15.jar": "both",
|
||||||
|
"iris-neoforge-1.8.12+mc1.21.1.jar": "client",
|
||||||
"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",
|
||||||
"konkrete_neoforge_1.9.9_MC_1.21.jar": "client",
|
"konkrete_neoforge_1.9.9_MC_1.21.jar": "client",
|
||||||
@@ -116,6 +127,7 @@
|
|||||||
"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",
|
"moogs_structures-neoforge-1.21.1-3.0.0.jar": "both",
|
||||||
|
"moonlight-neoforge-1.21.1-3.0.22.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",
|
||||||
"polymorph-neoforge-1.1.0+1.21.1.jar": "both",
|
"polymorph-neoforge-1.1.0+1.21.1.jar": "both",
|
||||||
|
|||||||
@@ -68,6 +68,52 @@ docker exec minecraft sh -c 'cat /data/ops.json' # verify level 4 + right UUI
|
|||||||
needed (takes effect live). Current op: `oier`
|
needed (takes effect live). Current op: `oier`
|
||||||
(`7fbc9adb-bcf4-3913-9a99-46d46acd1009`), level 4, set 2026-06-21.
|
(`7fbc9adb-bcf4-3913-9a99-46d46acd1009`), level 4, set 2026-06-21.
|
||||||
|
|
||||||
|
## Simple Voice Chat — `voice_host` (NOT repo-tracked)
|
||||||
|
|
||||||
|
Voice chat is UDP `24454/udp`, published in compose. The mod auto-generates
|
||||||
|
`/data/config/voicechat/voicechat-server.properties` in the `mc_data` volume.
|
||||||
|
|
||||||
|
**Gotcha — `voice_host` must be set or remote clients get a red/crossed icon.**
|
||||||
|
Behind any NAT/Docker the server announces an address for clients' UDP
|
||||||
|
connection; if `voice_host=` is empty it auto-detects the internal Docker IP →
|
||||||
|
unreachable → the secret (TCP) is sent but the UDP handshake never completes
|
||||||
|
("Sent secret" with no following "successfully connected to voice chat").
|
||||||
|
|
||||||
|
Set on prod:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker exec minecraft sed -i 's/^voice_host=.*/voice_host=ulicraft.net/' \
|
||||||
|
/data/config/voicechat/voicechat-server.properties
|
||||||
|
docker restart minecraft # mod reads props only at startup
|
||||||
|
```
|
||||||
|
|
||||||
|
**⚠️ This value lives in the `mc_data` volume, NOT auto-managed from this repo.**
|
||||||
|
It survives restarts and `compose down/up`, but a **world wipe / fresh `mc_data`**
|
||||||
|
regenerates the file with `voice_host=` empty → voice silently breaks again.
|
||||||
|
|
||||||
|
A known-good prod snapshot is committed at
|
||||||
|
`server-configs/voicechat-server.properties` (reference copy, `voice_host=ulicraft.net`).
|
||||||
|
After a world reset, either re-run the `sed` + `docker restart` above, or restore
|
||||||
|
the snapshot:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker cp server-configs/voicechat-server.properties \
|
||||||
|
minecraft:/data/config/voicechat/voicechat-server.properties
|
||||||
|
docker restart minecraft
|
||||||
|
```
|
||||||
|
|
||||||
|
(Snapshot is not auto-mounted — to make it durable, add a bind mount of
|
||||||
|
`server-configs/voicechat-server.properties` into `/data/config/voicechat/` in
|
||||||
|
compose.)
|
||||||
|
|
||||||
|
Verify after a client joins:
|
||||||
|
`docker logs minecraft 2>&1 | grep -i "connected to voice"` → expect
|
||||||
|
`Player <name> ... successfully connected to voice chat`.
|
||||||
|
|
||||||
|
Note: a red voice icon can ALSO be client-side — a VPN/zero-trust client
|
||||||
|
(Cloudflare One/WARP, FortiClient) on the player's machine silently drops the
|
||||||
|
voice UDP. Rule out VPNs before touching the server.
|
||||||
|
|
||||||
## Tasks
|
## Tasks
|
||||||
|
|
||||||
- [ ] Compose: authlib URL `http://auth.${BASE_DOMAIN}/authlib-injector`
|
- [ ] Compose: authlib URL `http://auth.${BASE_DOMAIN}/authlib-injector`
|
||||||
@@ -77,3 +123,4 @@ needed (takes effect live). Current op: `oier`
|
|||||||
- [ ] `depends_on`: drasl (authlib must resolve at boot)
|
- [ ] `depends_on`: drasl (authlib must resolve at boot)
|
||||||
- [ ] Confirm `ENFORCE_SECURE_PROFILE=FALSE` ↔ drasl `SignPublicKeys=false`
|
- [ ] Confirm `ENFORCE_SECURE_PROFILE=FALSE` ↔ drasl `SignPublicKeys=false`
|
||||||
- [ ] Verify a client joins with their drasl skin
|
- [ ] Verify a client joins with their drasl skin
|
||||||
|
- [ ] After any world wipe: re-set `voice_host` (see Simple Voice Chat section)
|
||||||
|
|||||||
56
server-configs/voicechat-server.properties
Normal file
56
server-configs/voicechat-server.properties
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# Simple Voice Chat server config v1.21.1-2.6.18
|
||||||
|
|
||||||
|
# The port number to use for the voice chat communication.
|
||||||
|
# Audio packets are always transmitted via the UDP protocol on the port number
|
||||||
|
# specified here, independently of other networking used for the game server.
|
||||||
|
# Set this to '-1' to use the same port number that is used by the Minecraft server.
|
||||||
|
# However, it is strongly recommended NOT to use the same port number because UDP on
|
||||||
|
# it is also used by default for the server query. Doing so may crash the server!
|
||||||
|
port=24454
|
||||||
|
# The server IP address to bind the voice chat to
|
||||||
|
# Leave blank to use the 'server-ip' property from the 'server.properties' config file
|
||||||
|
# To bind to the wildcard IP address, use '*'
|
||||||
|
bind_address=
|
||||||
|
# The distance to which the voice can be heard
|
||||||
|
max_voice_distance=48.0
|
||||||
|
# The distance to which the voice can be heard when whispering
|
||||||
|
whisper_distance=24.0
|
||||||
|
# The Opus codec
|
||||||
|
# Valid values are 'VOIP', 'AUDIO', and 'RESTRICTED_LOWDELAY'
|
||||||
|
codec=VOIP
|
||||||
|
# The maximum size that audio packets are allowed to have (in bytes)
|
||||||
|
# Setting this to lower values might cause issues
|
||||||
|
mtu_size=1275
|
||||||
|
# The maximum number of packets a player can send per second
|
||||||
|
# Set this to -1 to disable the rate limit - This must be greater than 0 in all other cases
|
||||||
|
# This only applies to voice chat packets that are sent through Minecrafts networking
|
||||||
|
# This affects actions like opening/joining/leaving voice chat groups or general state changes like disabling/enabling the voice chat
|
||||||
|
tcp_rate_limit=16
|
||||||
|
# The frequency at which keep-alive packets are sent (in milliseconds)
|
||||||
|
# Setting this to a higher value may result in timeouts
|
||||||
|
keep_alive=1000
|
||||||
|
# If group chats are allowed
|
||||||
|
enable_groups=true
|
||||||
|
# The hostname that clients should use to connect to the voice chat
|
||||||
|
# This may also include a port, e.g. 'example.com:24454' or just a port, e.g. '24454'
|
||||||
|
# Do NOT change this value if you don't know what you're doing
|
||||||
|
voice_host=ulicraft.net
|
||||||
|
# If players are allowed to record the voice chat audio
|
||||||
|
allow_recording=true
|
||||||
|
# If spectators are allowed to talk to other players
|
||||||
|
spectator_interaction=false
|
||||||
|
# If spectators can talk to players they are spectating
|
||||||
|
spectator_player_possession=false
|
||||||
|
# If players without the voice chat mod should be kicked from the server
|
||||||
|
force_voice_chat=false
|
||||||
|
# The amount of time the server should wait to check if a player has the mod installed (in milliseconds)
|
||||||
|
# Only relevant when 'force_voice_chat' is set to 'true'
|
||||||
|
login_timeout=10000
|
||||||
|
# The range in which the voice chat should broadcast audio
|
||||||
|
# A value less than 0 means 'max_voice_distance'
|
||||||
|
broadcast_range=-1.0
|
||||||
|
# If the voice chat server should reply to external pings
|
||||||
|
allow_pings=true
|
||||||
|
# If the mod should load native libraries on dedicated servers
|
||||||
|
# This is mostly relevant for voice chat addons
|
||||||
|
use_natives=true
|
||||||
Reference in New Issue
Block a user