diff --git a/ts3-client/core/src/main/java/com/ts3client/net/ConnectionEventHandler.java b/ts3-client/core/src/main/java/com/ts3client/net/ConnectionEventHandler.java index 3cda48e..b3e153a 100644 --- a/ts3-client/core/src/main/java/com/ts3client/net/ConnectionEventHandler.java +++ b/ts3-client/core/src/main/java/com/ts3client/net/ConnectionEventHandler.java @@ -76,6 +76,7 @@ final class ConnectionEventHandler implements TS3Listener { c.channelId = e.getTargetChannelId(); if (e.getClientId() == conn.getSelfClientId()) { announceOwnMove(safeInt(e, "reasonid"), e); + logOwnMove(e, from, e.getTargetChannelId()); } else { announceClientMoved(safeInt(e, "reasonid"), e.getClientId(), from, e.getTargetChannelId()); logClientMoved(e, conn.clientLink(c.id), from, e.getTargetChannelId()); @@ -153,6 +154,25 @@ final class ConnectionEventHandler implements TS3Listener { } } + /** Our own move between channels, logged the way TS3 does for everyone else. */ + private void logOwnMove(ClientMovedEvent e, int fromChannel, int toChannel) { + String reasonMsg = TeamspeakConnection.orEmpty(e.get("reasonmsg")); + String suffix = reasonMsg.isEmpty() ? "" : " (" + reasonMsg + ")"; + switch (safeInt(e, "reasonid")) { + case REASON_MOVED: + conn.log("You were moved from channel \"" + conn.channelLink(fromChannel) + "\" to \"" + + conn.channelLink(toChannel) + "\" by " + invokerName(e)); + break; + case REASON_CHANNEL_KICK: + conn.log("You were kicked from channel \"" + conn.channelLink(fromChannel) + "\" to \"" + + conn.channelLink(toChannel) + "\" by " + invokerName(e) + suffix); + break; + default: + conn.log("You switched from channel \"" + conn.channelLink(fromChannel) + "\" to \"" + + conn.channelLink(toChannel) + "\""); + } + } + /** * A client became visible: either they just connected, or they moved in from a * channel we could not see — TeamSpeak's "appears" case.