You are viewing a potentially older version of this package. View all versions.
AiAeT-BetterPeakVoiceFix-1.1.3 icon

BetterPeakVoiceFix

Fixes voice connection issues with auto-reconnect, host synchronization, and a visual status overlay. | 支持切换中文。修复了语音连接问题,新增了自动重连、主机同步以及可视化状态显示功能。

Date uploaded 3 weeks ago
Version 1.1.3
Download link AiAeT-BetterPeakVoiceFix-1.1.3.zip
Downloads 217
Dependency string AiAeT-BetterPeakVoiceFix-1.1.3

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

Version: v1.1.3 | Build target: PEAK 2.4.c (multiplayer checks pending) | 👉中文说明和更新日志

本机语音状态恢复 / Local voice state recovery

  • 自动恢复远端玩家失效的语音状态引用,默认开启;面板关闭时仍每 0.5 秒检测。只更新引用,不主动修改静音、屏蔽或通信权限。
  • 异常显示在玩家第二行,不需要 Pro 模式;简易面板也会列出受影响玩家及第二行提示。恢复后显示“语音状态已恢复”8 秒,这不代表已确认收到音频。
  • 不依赖 CrossplayStutterFix(CSF),也不要求主机或队友安装。装有 CSF 时仍使用同一套按需恢复逻辑,不替换它的补丁;共存效果待实机验证。
  • 修复范围仅为本机语音组件的失效引用,不修复整个角色注册表,不处理网络断流,也不保证所有失声问题都能恢复。配置中关闭自动恢复后,仍保留异常提示。
  • Restores invalid remote-player voice state references locally every 0.5 seconds, even with the overlay hidden. Enabled by default; does not explicitly change mute, block or communication permission flags.
  • Status appears on the player's second line without Pro mode, and affected players also appear in the simple overlay. A restoration notice lasts 8 seconds; it does not confirm incoming audio.
  • No CSF, host or peer installation is required. With CSF installed, the same recovery runs only when needed and does not replace CSF patches. In-game coexistence checks are pending. This repairs voice references, not the whole character registry or network failures.

1. Mod Overview

  • Based on the PEAK VOICE FIX from @chuxia,supports switching between Chinese and English. It includes optimized reconnection logic and additional monitoring features. Press the J to view the voice status of all players in the room. If you experience voice issues, use ALT+K to manually disconnect and reconnect (this can only be done once if the connection is stuck for over 20 seconds).
  • For the host's voice server broadcast to work, both the host and clients must have the mod ​installed​. If only one party has the mod, its functionality will be limited to viewing the team's voice status and manual reconnection.
  • I have made some optimizations to the text in version 0.3.5. The previous expressions like "MY IP" could indeed lead people to mistakenly believe that their IP would be exposed.
  • To facilitate maintenance, the Chinese and English versions will be combined and re-released. You can select the language in the configuration options and it will take effect upon restart.

2. UI

A. Simple Overlay UI (Default: On)

A small status bar displayed on the screen (default: right side).

  • Local Voice: Displays current connection status (e.g., Connected 🟢).
  • Voice Connection Count: Format is n/N.
    • Automatically hides when everyone is perfectly connected with no misalignment (Configurable).
  • Displays notifications when a player's status changes.

B. Detailed Information Panel (Toggle with J)

This is the core window of the mod, containing three sections of information.

① Top: Connection Status & IP

  • Local (Voice) Server IP: The voice server address you are currently connected to.
  • Host (Voice) Server IP: The voice server address the room host is connected to.
    • [Sync] 🟢: You and the host are on the same channel; you can hear each other.
    • [Abnormal] 🔴: You are on a different channel from the host (Status: "Isolated"). Reconnection is required.

② Middle: Player List Status (Key Feature)

Each row represents a player in the game. The mod assigns different status tags via an intelligent algorithm:

Status Tag Color Trigger Condition & Meaning
[Connected] Green 🟢 Perfect State. ID matches, and voice is in the room.
[Misaligned] Pale Green 🟢 v0.3.4 Core Feature. The player appears disconnected, but a "Nameless Ghost" occupies a voice slot. Meaning: Their voice is likely working, but the ID is stuck. Do NOT ask them to reconnect.
[Connecting] Yellow 🟡 Player just joined (first 25s) or is verifying. Please wait patiently for it to turn green.
[Disconnected] Red 🔴 Joined over 25s ago, and there is no corresponding ghost in the voice room. Meaning: Completely failed to connect; cannot hear or speak. Needs to press Alt + K.
[Isolated] Yellow 🟡 Local client connected to the wrong voice server. Different servers cannot communicate with each other.

③ Top/Bottom: Smart Statistics Bar

Display Format: n / N (m ID Misaligned)

  • n (Current Voice Count): Sum of Normal Connections + Misaligned (Ghost) Connections.
    • If n = N (Full): Displayed in Green 🟢.
    • If Misalignment exists: Displayed in Pale Green 🟢.
    • If n < N (Not Full): Displayed in Yellow 🟡.
    • If n = 1 (Isolated): Displayed in Red 🔴.
  • N (Total Game Players): Total number of players currently in the room.
  • (m ID Misaligned): Only displayed when ghost connections are detected, indicating how many people are in a "Misaligned" state.

C. Debug Console (Press Alt + J)

Intended for advanced users to view raw data streams.

  • Data Columns: ID | Name | IP | Ver | [Status]
  • [Ghost] Tag: Clearly identifies which IDs are residual "dead bodies" (stale data).
  • Ver: Displays the mod version installed by the other player (e.g., v0.3.4; requires the other player to also have this version).
  • Function Buttons: Supports one-click log export to a file for bug reporting.

3. Core Features

Connection & Synchronization Logic

This mod is not a simple "Reconnector"; it is a distributed voice coordination system based on PUN (Photon Unity Networking). It uses a rigorous decision tree to ensure all players eventually reach the same destination.

A. Host: Lighthouse Broadcast Mechanism

The Host is the reference point for the voice network.

  • Mechanism: The Host client scans its own voice connection status at high frequency (every second). Once connected, the mod writes the current Voice Server IP into the Host's PUN Player Custom Properties (PVF_IP).
  • Synchronization: This property is synced across the network. This means any client in the room with the mod installed can read the Host's current voice IP in real-time.
  • Change Broadcast: If the Host switches voice servers due to network fluctuation, the mod immediately updates the property and broadcasts a log: "Host IP Changed: Old -> New", guiding all clients to follow.

B. Client: Intelligent Decision Tree

Clients do not blindly follow the Host. Instead, they use a "Majority Priority" intelligent decision logic to prevent the whole team from failing if the Host drops alone.

When a Client needs to reconnect, it executes the following logic:

[Start Reconnection Decision]
      │
      ▼
1. 【Majority Rule】
   Count the voice IPs of all players in the cache.
   IF (A certain IP has count ≥ 2 AND is the majority)
      └─ Decision: Connect to this "Majority IP" (Follow the crowd)
      
      ▼ (If everyone is scattered)
      
2. 【Follow Host】
   Read the Host's PVF_IP property.
   IF (Host has a valid IP)
      └─ Decision: Connect to Host's IP
      
      ▼ (If Host is also disconnected)
      
3. 【Blind Connect / Auto】
   Do not specify an IP; let Photon assign automatically.
   └─ Decision: Leave it to fate (Auto)

Significance: This logic ensures that even if the Host disconnects, the remaining players can provide broadcasting functions for late joiners (assuming at least two people in the room have the mod, and the new player also has the mod).

SOS & Snapshot Cache

A. Snapshot Cache

The mod maintains a local PlayerCache (Roster).

  • Function: PUN player lists sometimes vanish instantly due to network fluctuations (causing data loss). The local cache "remembers" the last known Name, IP, Version, and Status of every player.
  • Value: This is why the Alt + J panel can still show a player's "Last Known IP" and "Ghost Status" even after they drop, instead of them simply disappearing.

B. SOS Distress Signal

When the mod executes an auto-reconnect or a player presses Alt + K, it broadcasts a data packet with Event Code 186 to the whole room.

  • Content: [Type: SOS, Target IP, Source IP]
  • Receiver Reaction:
    1. A warning pops up at the bottom of the UI.
    2. Records the player's "accident scene" (where they dropped from, where they are trying to go).
  • Practical Use: When you see someone consistently failing to connect, checking the SOS log might reveal their "Target IP" differs from the group's "Majority IP," allowing you to immediately judge if they are on the wrong server rather than having a broken microphone.

Manual Intervention (Alt + K) Scenarios

  • Scenario 1: Current Status is [Isolated]
    • Action: Active Disconnect.
    • Logic: Calls punVoice.Client.Disconnect() -> Sends SOS signal "Manual Disconnect".
    • Purpose: Soft restart. When you realize you are on the wrong channel, try actively disconnecting to rejoin.
  • Scenario 2: Current Status is [Disconnected] / [Connecting]
    • Action: Force Reconnect.
    • Logic: Immediately triggers HandleClientLogic -> Runs the "Intelligent Decision Tree" above -> Forces specific IP -> Initiates connection.
    • Loop Strategy: If it fails 3 times consecutively, the mod gives up on the specific IP and switches to "Blind Connect Mode" to attempt a breakthrough.
  • Known Issue: Manual switching may cause the local UI to freeze momentarily and may lead to ID misalignment (does not affect voice).

4. Configuration & Shortcuts

⌨️ Shortcuts

  • J: Toggle UI display mode (Hidden -> Simple -> Detailed).
  • Alt + K: Manual Reset (SOS).
    • Safety Mechanism: If currently [Connected] / [Misaligned], the first press will Disconnect. You must press again to execute a Force Reconnect.
    • If currently [Disconnected], a single press triggers direct reconnection.
  • Alt + J: Open/Close Debug Console.

⚙️ Configuration File

(Path: BepInEx/config/chuxiaaaa.Aiae.BetterVoiceFix.cfg)

  • UI Settings
    • UI Position: Dropdown to select Left or Right.
  • Network Settings
    • Reconnection Timeout: Default 25 seconds. The max time the yellow [Connecting] status lasts after joining before turning red.
    • Enable ID Drift Fix: Default True. Recommended to keep enabled, otherwise you may see "Unknown".
    • Enable Manual Reset (Alt+K): Default True. Allows forcing voice disconnection or reconnection via Alt + K.
    • Retry Interval (s): Cooldown time between automatic reconnection attempts.
  • Advanced & Debug
    • Enable Virtual Player: Generates a dummy on the UI for layout testing.
    • Ping Alignment Offset: Horizontal pixel offset for Ping display to align it separately to the right.
    • Auto Hide Simple UI: Automatically hides the Simple Mode UI when everyone is connected normally.
    • Enable Debug Logs: Outputs detailed network logs to the BepInEx console (Default: only shown in Alt+J interface).
    • Show Ping in Simple Mode: Displays local latency under the Simple Mode UI.
    • Virtual Player Name: Used for adjusting font size and ping offset testing.

5. Compatibility

Other Player's Status Interaction Result
No Mod Installed Sync and reconnection mechanisms are ineffective, but you can see their true status (Disconnected/Connected) one-way.
Compatible PeakVoiceFix Theoretically, the synchronization (Broadcasting and receiving Host IP) mechanism is compatible, but the UI behaves like they have no mod.
Old Version (< v0.3.0) Functional. You can see their IP and connection status, but you won't see their detailed connection steps (e.g., "Verifying...") or their version number.
> v0.3.5 Fully Functional. You can see detailed connection steps, version numbers, and IPs.

Steam invites / BetterRoomShare (v1.1.2+): when joining via a Steam invite, this mod reads the room name as UTF-8 instead of vanilla ASCII, so a room named in Chinese by a host running BetterRoomShare is received correctly and can be joined. This only affects how your client decodes the incoming room name — nothing is changed for the host, other players, or the send protocol, and BetterRoomShare is not required. Room names already turned into ? by an older host cannot be recovered.


6. FAQ

Q: Why does the count show 10/10, but it's followed by (2 ID Misaligned)?

A: This means there are indeed 10 connections (Full) in the voice room. 8 are normal, and 2 are ID Misaligned. Because Misaligned = Can Speak, the total counts as full (Green/Pale Green). This is good news, indicating voice is working for everyone.

Q: I am in [Misaligned] status. Do I need to press Alt + K to fix it?

A: NO. As long as you can speak and hear others, do not touch it. [Misaligned] only means the ID doesn't match the slot, but it does not affect voice functionality. Forcing a reconnect might cause you to completely freeze or disconnect.

Q: Why can't I see myself in the Alt + J list after joining the game?

A: This means you are the one who is misaligned. The Dump list prints "IDs inside the Voice Server." Your Game ID is new, but your Voice Client is still using the old ID (Ghost). Because the old ID cannot find a corresponding player name, it might show as [Ghost] or be categorized into the misalignment statistics.

Q: Why is everyone yellow when I first join the room?

A: This is the 25-second grace period. Connecting to voice takes time; the mod doesn't report errors immediately but displays the yellow [Connecting] status while waiting for data synchronization.

Q: When should I use Alt + K?

A: You should try manual disconnection/reconnection only when you are displayed as [Isolated] or [Disconnected]. If it still doesn't work, please restart the game and Steam, check your network, or check your mods (especially LocalMultiplayer).

To be honest,I'm a novice. I used AI to assist me in organizing the code and the documentation. After nearly one month of testing in a multi-person room (8~12 player), the current version is now basically stable.

CHANGELOG

1.1.4

中文

  • 仅移除错误打包进来的图片文件夹,我的错。

English

  • Removed an image folder that was mistakenly included in the package. My bad.

1.1.3

中文

新增

  • Steam 邀请加入时,房间名改按 UTF-8 读取(原版为 ASCII):安装 BetterRoomShare 的房主发出的中文房名可以完整接收并正常加入。仅影响本机接收的房间名,不修改发送协议、其他玩家数据或游戏区服,原版邀请行为不变。
  • 目标读取已是 UTF-8(例如同时安装 BetterRoomShare)时补丁保持原样,不会重复修改;目标方法签名或结构与原版不符时不做替换、只记录一次警告,其余功能不受影响。
  • 自动恢复本机远端玩家失效的语音状态引用,缓解连接正常却因状态引用丢失而无声的问题;默认开启,可在设置中关闭自动恢复并保留检测。
  • 玩家第二行显示红色“语音状态异常·本机播放受阻”,非 Pro 模式和简易面板同样可见;恢复后显示“语音状态已恢复”8 秒。
  • 面板隐藏时仍进行检测与恢复;不依赖 CrossplayStutterFix,不要求主机或队友安装,不主动修改静音/屏蔽选择。
  • 新增 Photon AppId 守卫:插件加载时快照本机真 AppIdRealtime/AppIdVoice,发现全局设置被改写即还原,语音每次连接前也会兜底拨回。可修复 LocalMultiplayer(未按本机应用配置时)把全局 AppId 换成自建 Photon 应用、导致语音连进另一个应用同名房而双向静音的问题;默认开启,可在设置中关闭。
  • 语音房诊断日志附带实际连接的 AppId,便于核对是否进错应用。

更改

  • 详细面板延迟列对齐:房间延迟用定宽槽右对齐、语音延迟左对齐,每行的"-"竖直对齐;"ms"留在槽外避免字符被挤压。

修复

  • 修复离线模式(单机/本地单人)下语音面板永远显示"初始化中..."的问题:离线模式本质是本地伪房间,游戏刻意不连接语音服务器,面板现在只显示一行"离线模式",且不再被异常规则强制常显。
  • 修复在机场按 J 打开的语音面板被带进海滩、雪山等游戏场景持续显示的问题:手动钉住的简易面板在离开机场或离开房间时自动还原为自动显隐规则;详细面板离开机场时立即关闭(常驻显示仅限机场)。
  • 修复离线模式下 Alt+K 手动重连仍会对语音客户端发起真实连接的问题。
  • 修复离线模式下"本机延迟"显示 0ms 假数据的问题。

English

Added

  • Steam invite join now reads the room name as UTF-8 (vanilla used ASCII): Chinese room names sent by a host running BetterRoomShare are received intact and can be joined. This only changes how the local client receives the room name — the send protocol, other players' data, and game regions are untouched, and vanilla invite behavior is unchanged.
  • If the target read already uses UTF-8 (e.g., BetterRoomShare is also installed), the patch leaves it as-is without re-patching. If the target method's signature or structure no longer matches vanilla, nothing is replaced and a single warning is logged while the rest of the mod keeps working.
  • Automatically restores invalid remote-player voice state references locally, addressing one cause of silence despite a healthy connection. Enabled by default; disabling recovery keeps detection active.
  • Shows voice state errors on the player's second line without Pro mode, including affected players in the simple overlay. A restoration notice remains for 8 seconds.
  • Detection and recovery continue while the overlay is hidden. No CrossplayStutterFix, host or peer installation is required; mute and block flags are not explicitly modified.
  • Added a Photon AppId guard: the real AppIdRealtime/AppIdVoice are snapshotted at plugin load, restored whenever the global settings get rewritten, and re-applied right before every voice connect. Fixes the case where LocalMultiplayer (when not configured with the game's own app ids) swaps the global AppIds for its own Photon app, leaving voice in the other app's same-named room and muted in both directions. Enabled by default; can be disabled in settings.
  • The voice-room diagnostic line now includes the effective AppId, making a wrong-app join visible in the log.

Changed

  • Latency column alignment in the detailed panel: room ping right-aligns in a fixed-width slot, voice ping is left-aligned, and every row's "-" lines up vertically. "ms" stays outside the slot so the glyph is not squeezed.

Fixed

  • Fixed the voice panel being stuck on "Initializing..." forever in offline mode: offline mode uses a local dummy room where the game intentionally never connects voice, so the panel now shows a single "Offline mode" line and is no longer force-pinned by the problem-detection rule.
  • Fixed the voice panel opened with J in the airport staying visible in gameplay scenes (beach, alpine, etc.): a manually pinned simple panel now reverts to automatic visibility rules when leaving the airport or the room, and the detailed panel closes immediately when leaving the airport (persistent display is airport-only).
  • Fixed Alt+K manual reconnect still initiating a real voice connection in offline mode.
  • Fixed the local ping line showing a fake "0ms" in offline mode.

1.1.0

中文

新增

  • 新增房间区服选择功能(仅供调试,正常情况下不建议使用)、区服状态查看和各区延迟测试;当指定房间区服无法连接或延迟更高时,会显示明确提示。
  • 新增房主侧的新玩家语音接入提示;连接失败或玩家模组版本过旧时,会提供更明确的原因和处理建议。
  • 专业信息新增多数派语音区服、对应的语音服务器 IP,以及使用该区服的玩家人数。

更改

  • 改善房间码加入流程:修复香港区房间码可能被错误识别为美国区的问题;当房间码要求切换区服时,会等待新区服连接完成后再加入房间,避免因切换尚未完成而入房失败。

  • 改善 Steam 邀请加入流程:首次没有收到房间信息时会每 8 秒自动重试,最多重试 4 次;仍然失败时会提示房主可能仍在菜单、加载中或已经掉线,也会提示可能存在区服连接问题,并给出重新邀请或改用房间码的建议。

    注:以上两项本不属于本模组的处理范围,但对正常加入游戏的影响较大,因此增加了对应修复,很难想象官方会犯这种错。

  • 重构部分代码以提升语音连接与自动重连的稳定性,改善跨区房间、场景切换及手动重连后的语音问题。

  • 重新设计语音状态面板。按 J 可依次切换“关闭 → 简易 → 详细”,简易状态只在机场常驻显示(可关闭)。

  • 详细面板现在会显示房间区服、语音区服、语音服务器、房间与语音延迟、全员同步情况,以及每名玩家的语音连接状态。

  • 提升玩家加入、离开和重连后的状态判断准确性,并更清楚地区分连接中、跨区、断开和未知状态。

  • 优化面板间距、文字标签、玩家排列和默认布局,使界面更加紧凑、清晰。

移除

  • 移除详细面板中重复显示的本机语音状态、语音人数、本机延迟和测速缓存信息;必要的状态与延迟仍会保留在对应玩家行中,区服测速信息则可通过 Alt+J 的“区服状态”查看。

English

Added

  • Added game-region selection (for debugging only; not recommended for normal use), region status information, and latency tests for all available regions. Clear warnings are shown when the selected game region cannot be reached or has higher latency.
  • Added host-side notifications for newly joined players' voice connection results. Connection failures and outdated mod versions now provide clearer causes and suggested actions.
  • Professional information now shows the majority voice region, its voice server IP, and the number of players using that region.

Changed

  • Improved room-code joining: fixed Hong Kong room codes being incorrectly identified as US rooms. When a room code requires switching regions, the mod now waits for the new region connection to finish before joining, preventing failures caused by joining too early.

  • Improved Steam Invite joining: if room information is not received, the request is retried automatically every 8 seconds, up to 4 times. If all attempts fail, the message explains that the host may still be in a menu, loading, or disconnected, or that the host's region may be unreachable, and suggests sending another invite or using a room code.

    Note: The two fixes above are outside the intended scope of this mod, but they have a major impact on joining games, so corresponding fixes were added. It is difficult to imagine the official game making mistakes like these.

  • Refactored parts of the mod to improve voice connection and automatic reconnection reliability, especially in cross-region rooms, after scene changes, and when using manual reconnect.

  • Redesigned the voice status panel. Press J to cycle through “Hidden → Simple → Detailed”. Simple mode remains visible in the airport by default and can be disabled in the settings.

  • The detailed panel now shows the room region, voice region, voice server, room and voice latency, overall synchronization status, and each player's voice connection state.

  • Improved player-status accuracy after players join, leave, or reconnect, with clearer distinctions between connecting, cross-region, disconnected, and unknown states.

  • Refined panel spacing, labels, player ordering, and default layout settings for a more compact and readable display.

Removed

  • Removed repeated local voice status, voice-player count, local latency, and latency-cache information from the detailed panel. Required status and latency information remains in the corresponding player rows, while region test information remains available through “Region Status” in the Alt+J console.

1.0.5

  • Fixed the recurring status misattribution after a player rejoins: the game room and the voice room are separate Photon rooms with independently numbered actors, so actor-number matching could pin [Connected] on the wrong player once reconnects made the IDs drift (e.g. 2 -> 5 -> 8).
  • Voice-room membership and ghost detection are now anchored to the game's own PhotonVoiceView speaker link (voice stream <-> game player), with UserId as a secondary match; same-number actor matching is only a last resort. Works purely client-side — other players do not need the mod.
  • No UI changes: statuses, colors, and counts look the same, only the underlying matching is more accurate.

1.0.4

  • Voice status now understands mixed-mod lobbies: each player is judged by whether they actually run the mod, so a modded-but-disconnected player is no longer mislabeled as "no mod".
  • Non-modded players are inferred from the voice room — [Connected], [Mismatched] (in voice but ID-drifted), or [Disconnected].
  • Fixed the false "Isolated" status and the contradictory "all Synced yet N mismatched": rows and counts now come from one consistent check.
  • Players who leave are removed from the list immediately instead of lingering as "Left".
  • The simple overlay can auto-hide again in mixed-mod lobbies.

1.0.3

  • Performance: removed several per-frame scene scans and reduced overlay overhead (it now redraws only when its content changes) — lower CPU/GC cost, mainly in menus and during voice trouble.
  • No feature or gameplay changes.

1.0.2

  • Fix the layout of changelog.md & mainfest.json
  • Fixed issues related to ID drift.
  • Removed the EnableDebugLogs configuration option.

1.0.0

  • Breaking Change: Merged the Chinese and English editions into a single release for easier maintenance; language can now be selected in config and takes effect after restart.
  • Added: New language config option to switch between Chinese and English (Language).
  • Changed: Config file name is now chuxiaaaa.Aiae.BetterPeakVoiceFix.cfg to avoid conflicts with older versions.
  • Changed: Unified warn_majority threshold with majority detection at >=2.
  • Changed: Removed the "Enable ID Drift Fix" config option; the related fix logic remains enabled by default.
  • Changed: Unified the Alt+K force-reconnect path to use the same decision chain: Majority (>=2) -> Follow Host -> Blind Connect.
  • Fixed: Reconnect Timeout (ConnectTimeout) is now fully effective.
  • Fixed: Room-scoped cache state (PlayerCache/SOS/HostHistory, etc.) is now cleared after leaving a room to avoid stale cross-room data affecting later decisions.
  • Fixed: Added null safety for Alt+K when the voice client is not ready, preventing null reference errors.
  • Fixed: Corrected SOS list cleanup for unresolved names; the previous Unknown branch was effectively unreachable in most cases.
  • Improved: Improved overall code readability.

0.3.6

  • Fixed: Resolved a crash where the UI could throw NullReferenceException every frame during startup/reconnect before the voice client had joined a room.
  • Fixed: Resolved a crash caused by PhotonNetwork.CurrentRoom potentially being null in "Isolated" state checks.
  • Fixed: Resolved a crash caused by PhotonNetwork.CurrentRoom potentially being null in SOS list management.
  • Added: Fully implemented the "Auto-hide Simple UI" config option (the option existed before but had no effect).
  • Added: joinTimes now cleans up entries for players who have left every 60 seconds to prevent stale data buildup in long sessions.
  • Improved: Reformatted parts of compressed code to improve readability.

0.3.5

  • Renamed "Show Detailed IP Option" to "Show Connected Voice Server IP and Details".
  • Improved IP-related wording to avoid the previous "local IP" phrasing that could be mistaken as exposing personal IP.
  • Because option names changed, users upgrading from older versions are advised to delete the old config file: ...\PEAK\BepInEx\Config\chuxiaaaa.Aiae.BetterVoiceFix.cfg.
  • Updated README.md documentation.

0.3.4 Released