From bb770a72b06c6e8b3d671ed7d3d479d9fe4efbc2 Mon Sep 17 00:00:00 2001 From: trimbe Date: Sun, 3 Mar 2019 19:18:03 -0500 Subject: [PATCH] clanchat: retrieve rank from ClanMember rather than ClanManager Ranks would be cached at the time of join/leave which was incorrect. Using the rank from ClanMember will always be correct and won't require the user to have spoken recently to cache their rank. --- .../plugins/clanchat/ClanChatPlugin.java | 25 +++++++++++-------- .../plugins/clanchat/ClanMemberActivity.java | 3 ++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanChatPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanChatPlugin.java index 3e57a0723f..d1f744180b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanChatPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanChatPlugin.java @@ -41,6 +41,7 @@ import java.util.Map; import javax.inject.Inject; import net.runelite.api.ChatLineBuffer; import net.runelite.api.ChatMessageType; +import net.runelite.api.ClanMember; import net.runelite.api.ClanMemberRank; import net.runelite.api.Client; import net.runelite.api.GameState; @@ -170,38 +171,40 @@ public class ClanChatPlugin extends Plugin return; } + ClanMember member = event.getMember(); if (!config.showJoinLeave() || - clanManager.getRank(event.getName()).getValue() < config.joinLeaveRank().getValue()) + member.getRank().getValue() < config.joinLeaveRank().getValue()) { return; } // attempt to filter out world hopping joins - if (!activityBuffer.containsKey(event.getName())) + if (!activityBuffer.containsKey(member.getUsername())) { ClanMemberActivity joinActivity = new ClanMemberActivity(ClanActivityType.JOINED, - event.getName(), client.getTickCount()); - activityBuffer.put(event.getName(), joinActivity); + member, client.getTickCount()); + activityBuffer.put(member.getUsername(), joinActivity); } else { - activityBuffer.remove(event.getName()); + activityBuffer.remove(member.getUsername()); } } @Subscribe public void onClanMemberLeft(ClanMemberLeft event) { + ClanMember member = event.getMember(); if (!config.showJoinLeave() || - clanManager.getRank(event.getName()).getValue() < config.joinLeaveRank().getValue()) + member.getRank().getValue() < config.joinLeaveRank().getValue()) { return; } ClanMemberActivity leaveActivity = new ClanMemberActivity(ClanActivityType.LEFT, - event.getName(), client.getTickCount()); + member, client.getTickCount()); - activityBuffer.put(event.getName(), leaveActivity); + activityBuffer.put(member.getUsername(), leaveActivity); } @Subscribe @@ -298,10 +301,10 @@ public class ClanChatPlugin extends Plugin } } - private void addActivityMessage(String memberName, ClanActivityType activityType) + private void addActivityMessage(ClanMember member, ClanActivityType activityType) { final String activityMessage = activityType == ClanActivityType.JOINED ? " has joined." : " has left."; - final ClanMemberRank rank = clanManager.getRank(memberName); + final ClanMemberRank rank = member.getRank(); String rankTag = ""; Color textColor = CHAT_CLAN_TEXT_OPAQUE_BACKGROUND; Color channelColor = CHAT_CLAN_NAME_OPAQUE_BACKGROUND; @@ -323,7 +326,7 @@ public class ClanChatPlugin extends Plugin .append("[") .append(ColorUtil.wrapWithColorTag(client.getClanChatName(), channelColor) + rankTag) .append("] ") - .append(ColorUtil.wrapWithColorTag(memberName + activityMessage, textColor)) + .append(ColorUtil.wrapWithColorTag(member.getUsername() + activityMessage, textColor)) .build(); client.addChatMessage(ChatMessageType.CLANCHAT_INFO, "", messageString, ""); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanMemberActivity.java b/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanMemberActivity.java index f739437b15..1cea036a95 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanMemberActivity.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanMemberActivity.java @@ -26,12 +26,13 @@ package net.runelite.client.plugins.clanchat; import lombok.AllArgsConstructor; import lombok.Value; +import net.runelite.api.ClanMember; @Value @AllArgsConstructor class ClanMemberActivity { private ClanActivityType activityType; - private String member; + private ClanMember member; private Integer tick; }