From 0e5724b877195afdca34810fa299a00f22db28e6 Mon Sep 17 00:00:00 2001 From: ericek111 Date: Fri, 14 Aug 2026 14:15:26 +0000 Subject: [PATCH] Keep the virtual server properties from initserver initserver announces the whole virtual server (its name above all), but only the client and server ids were taken from it and the rest was dropped. The name is not obtainable elsewhere: servergetvariables answers without it, and notifyserveredited only fires when someone edits the server. Co-Authored-By: Claude Opus 5 --- .../client/LocalTeamspeakClientSocket.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/LocalTeamspeakClientSocket.java b/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/LocalTeamspeakClientSocket.java index 8618669..3a9204e 100644 --- a/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/LocalTeamspeakClientSocket.java +++ b/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/LocalTeamspeakClientSocket.java @@ -56,6 +56,9 @@ public class LocalTeamspeakClientSocket private Integer serverId = null; + /** The virtual server's properties as announced by initserver. */ + private volatile Map serverProperties = Collections.emptyMap(); + /** * The internal command buffer *

@@ -302,6 +305,7 @@ public class LocalTeamspeakClientSocket } serverId = null; + serverProperties = Collections.emptyMap(); remote = null; } @@ -375,6 +379,7 @@ public class LocalTeamspeakClientSocket // Free stuff serverId = null; + serverProperties = Collections.emptyMap(); synchronized (commandSendLock) { @@ -780,12 +785,24 @@ public class LocalTeamspeakClientSocket LocalTeamspeakClientSocket.super.setNickname(singleCommand.get("acn").getValue()); serverId = Integer.parseInt(singleCommand.get("virtualserver_id").getValue()); + + serverProperties = Collections.unmodifiableMap(singleCommand.toMap()); } catch (Exception e) { throw new CommandProcessException(e); } } } + /** The virtual server's properties from initserver; empty while disconnected. */ + public Map getServerProperties() { + return serverProperties; + } + + /** The virtual server's name, or null if it was not announced. */ + public String getServerName() { + return serverProperties.get("virtualserver_name"); + } + @Override public void setNickname(String nickname) { switch (getState()) {