From d37802fd52fa855b95d6c1ee1db1402dc6d9e495 Mon Sep 17 00:00:00 2001 From: Apehum Date: Wed, 10 Dec 2025 10:06:54 +0800 Subject: [PATCH 1/5] build: set gradle kotlin xmx to 1g --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index afc02631..a40f5b21 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ group=su.plo.voice version=2.1.7 # Gradle args -org.gradle.jvmargs=-Xmx2G -Dkotlin.daemon.jvm.options=-Xmx512M +org.gradle.jvmargs=-Xmx2G -Dkotlin.daemon.jvm.options=-Xmx1G org.gradle.workers.max=2 kotlin.stdlib.default.dependency=false From a7dae8359e65bad8d5644a3193183a8dd6636aa3 Mon Sep 17 00:00:00 2001 From: Apehum Date: Fri, 12 Dec 2025 10:07:57 +0800 Subject: [PATCH 2/5] build: v2.1.8 --- client/changelog.md | 19 +------------------ gradle.properties | 2 +- proxy/changelog.md | 5 +---- server/changelog.md | 9 +-------- 4 files changed, 4 insertions(+), 31 deletions(-) diff --git a/client/changelog.md b/client/changelog.md index 855c97be..0e216355 100644 --- a/client/changelog.md +++ b/client/changelog.md @@ -1,18 +1 @@ -### Changes in 2.1.7 -#### Client -- Fixed crash on latest versions of NeoForge 1.21.9/10. -- Fixed UnsupportedOperationException crash on 1.21.10 caused by player game profile skins in direct sources (cross-server groups). -- Fixed different types of activations blocking each other (e.g. when whisper was used, groups can't be used at the same time. Now you can use both at the same time). -- Added option to choose between direct and proximity mute when sources from the same player are overlapping. (Advanced -> Source Types Overlap) -- [Added warning on transitive activation conflicts.](https://i.imgur.com/e3a1WeY.png) -- [Added error button when microphone is not available.](https://i.imgur.com/CutT5Vb.png) -- Fixed `pv.allow_freecam` set to false breaks 3d audio panning ([#492](https://github.com/plasmoapp/plasmo-voice/issues/492)). -- Fixed microphone gain not properly preventing clipping in some cases. -- Added option to disable input device ([#494](https://github.com/plasmoapp/plasmo-voice/pull/494)). - -#### Server -- Fixed `/vreload` not reloading language changes. -- Added more descriptive comments in the config. -- Added configurable player icon visibility and offset. Check `[voice.player_icon]` config block for more info. -- Reworked keep alive to handle more players. -- Improved performance using epoll when available. +### Changes in 2.1.8 diff --git a/gradle.properties b/gradle.properties index a40f5b21..051d9c6e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ # Version targetJavaVersion=8 group=su.plo.voice -version=2.1.7 +version=2.1.8 # Gradle args org.gradle.jvmargs=-Xmx2G -Dkotlin.daemon.jvm.options=-Xmx1G diff --git a/proxy/changelog.md b/proxy/changelog.md index 4afc083c..0e216355 100644 --- a/proxy/changelog.md +++ b/proxy/changelog.md @@ -1,4 +1 @@ -### Changes in 2.1.7 -- Fixed `/vreload` not reloading language changes. -- Improved performance using epoll when available. -- Fixed `java.util.ConcurrentModificationException` in ProxyChannelHandler. +### Changes in 2.1.8 diff --git a/server/changelog.md b/server/changelog.md index 42c9d9a9..0e216355 100644 --- a/server/changelog.md +++ b/server/changelog.md @@ -1,8 +1 @@ -### Changes in 2.1.7 -- Fixed `/vreload` not reloading language changes. -- Fixed `Player is not connected to UDP server` exception on PlayerShowEntityEvent. -- Added more descriptive comments in the config. -- Added configurable player icon visibility and offset. Check `[voice.player_icon]` config block for more info. -- Reworked keep alive to handle more players. -- Improved performance using epoll when available. -- Fixed leaving in vanish breaks Plasmo Voice sometimes. ([#493](https://github.com/plasmoapp/plasmo-voice/issues/493)) +### Changes in 2.1.8 From 23ba789d3e6346ceac60f7d3a199a3bcb565081e Mon Sep 17 00:00:00 2001 From: Apehum Date: Fri, 12 Dec 2025 10:08:07 +0800 Subject: [PATCH 3/5] build: remove Multi-Release manifest entry --- buildSrc/src/main/kotlin/su/plo/voice/shadow.gradle.kts | 8 +++++++- client/changelog.md | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/su/plo/voice/shadow.gradle.kts b/buildSrc/src/main/kotlin/su/plo/voice/shadow.gradle.kts index 0fe8ea8e..ff8551d8 100644 --- a/buildSrc/src/main/kotlin/su/plo/voice/shadow.gradle.kts +++ b/buildSrc/src/main/kotlin/su/plo/voice/shadow.gradle.kts @@ -103,7 +103,13 @@ tasks { manifest { from({ zipTree(archiveFile).first { it.name == "MANIFEST.MF" } - }) + }) { + eachEntry { + if (key == "Multi-Release") { + exclude() + } + } + } } from(rootProject.file("LICENSE")) { diff --git a/client/changelog.md b/client/changelog.md index 0e216355..82ab4a6e 100644 --- a/client/changelog.md +++ b/client/changelog.md @@ -1 +1,2 @@ ### Changes in 2.1.8 +- Fixed crash on forge when starting the game: (`NoSuchFileException: /META-INF/versions`). From 1423164796f75486c6588be349e456439ef53d7e Mon Sep 17 00:00:00 2001 From: Apehum Date: Fri, 12 Dec 2025 10:19:19 +0800 Subject: [PATCH 4/5] fix(client): send client chat message in main thread --- client/changelog.md | 3 ++- .../lib/mod/client/chat/ClientChatUtil.java | 24 ++++++++++--------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/client/changelog.md b/client/changelog.md index 82ab4a6e..6865b29d 100644 --- a/client/changelog.md +++ b/client/changelog.md @@ -1,2 +1,3 @@ ### Changes in 2.1.8 -- Fixed crash on forge when starting the game: (`NoSuchFileException: /META-INF/versions`). +- Fixed crash on forge when starting the game: `NoSuchFileException: /META-INF/versions`. +- Fixed exception when sending a chat message during update check: `Rendersystem called from wrong thread`. diff --git a/client/src/main/java/su/plo/lib/mod/client/chat/ClientChatUtil.java b/client/src/main/java/su/plo/lib/mod/client/chat/ClientChatUtil.java index 2a73a2b4..a030747e 100644 --- a/client/src/main/java/su/plo/lib/mod/client/chat/ClientChatUtil.java +++ b/client/src/main/java/su/plo/lib/mod/client/chat/ClientChatUtil.java @@ -29,16 +29,18 @@ public static void sendChatMessage(@NonNull McTextComponent text) { public static void sendChatMessage(@NonNull Component message) { LocalPlayer player = Minecraft.getInstance().player; - //#if MC>=12102 - //$$ player.displayClientMessage(message, false); - //#elseif MC>=11900 - player.sendSystemMessage(message); - //#elseif MC>=11602 - //$$ player.sendMessage(message, null); - //#elseif MC>=11202 - //$$ player.sendMessage(message); - //#else - //$$ player.addChatMessage(message); - //#endif + Minecraft.getInstance().execute(() -> { + //#if MC>=12102 + //$$ player.displayClientMessage(message, false); + //#elseif MC>=11900 + player.sendSystemMessage(message); + //#elseif MC>=11602 + //$$ player.sendMessage(message, null); + //#elseif MC>=11202 + //$$ player.sendMessage(message); + //#else + //$$ player.addChatMessage(message); + //#endif + }); } } From e4769b6f8dce5fb2d6d0a3de6552a07f9bd10f78 Mon Sep 17 00:00:00 2001 From: Apehum Date: Fri, 12 Dec 2025 10:37:21 +0800 Subject: [PATCH 5/5] fix(client): stop and wait for device manager ticker job to finish before closing devices --- client/changelog.md | 3 ++- .../plo/voice/client/audio/device/VoiceDeviceManager.java | 7 ++++++- .../plo/voice/client/connection/ModServerConnection.java | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/client/changelog.md b/client/changelog.md index 6865b29d..e6bad5a3 100644 --- a/client/changelog.md +++ b/client/changelog.md @@ -1,3 +1,4 @@ ### Changes in 2.1.8 - Fixed crash on forge when starting the game: `NoSuchFileException: /META-INF/versions`. -- Fixed exception when sending a chat message during update check: `Rendersystem called from wrong thread`. +- Fixed exception when sending a chat message during update check: `Rendersystem called from wrong thread`. +- Fixed rare exception after disconnect: `Failed to open primary OpenAL output device (java.lang.IllegalStateException: Not connected)` diff --git a/client/src/main/java/su/plo/voice/client/audio/device/VoiceDeviceManager.java b/client/src/main/java/su/plo/voice/client/audio/device/VoiceDeviceManager.java index f534ccdf..d9ce7145 100644 --- a/client/src/main/java/su/plo/voice/client/audio/device/VoiceDeviceManager.java +++ b/client/src/main/java/su/plo/voice/client/audio/device/VoiceDeviceManager.java @@ -178,7 +178,12 @@ public void startJob() { } public void stopJob() { - if (job != null) job.cancel(false); + if (job != null) { + job.cancel(false); + try { + job.get(250, TimeUnit.MILLISECONDS); + } catch (Exception ignored) {} + } } private synchronized void tickJob() throws DeviceException { diff --git a/client/src/main/java/su/plo/voice/client/connection/ModServerConnection.java b/client/src/main/java/su/plo/voice/client/connection/ModServerConnection.java index ac3de545..e2b7eeb5 100644 --- a/client/src/main/java/su/plo/voice/client/connection/ModServerConnection.java +++ b/client/src/main/java/su/plo/voice/client/connection/ModServerConnection.java @@ -236,8 +236,8 @@ public void close() { voiceClient.getActivationManager().clear(); // cleanup devices - voiceClient.getDeviceManager().clear(); voiceClient.getDeviceManager().stopJob(); + voiceClient.getDeviceManager().clear(); } public void generateKeyPair() throws Exception {