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()) {