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.
This commit is contained in:
trimbe
2019-03-03 19:18:03 -05:00
parent e9597e85d8
commit bb770a72b0
2 changed files with 16 additions and 12 deletions

View File

@@ -41,6 +41,7 @@ import java.util.Map;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.ChatLineBuffer; import net.runelite.api.ChatLineBuffer;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.ClanMember;
import net.runelite.api.ClanMemberRank; import net.runelite.api.ClanMemberRank;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
@@ -170,38 +171,40 @@ public class ClanChatPlugin extends Plugin
return; return;
} }
ClanMember member = event.getMember();
if (!config.showJoinLeave() || if (!config.showJoinLeave() ||
clanManager.getRank(event.getName()).getValue() < config.joinLeaveRank().getValue()) member.getRank().getValue() < config.joinLeaveRank().getValue())
{ {
return; return;
} }
// attempt to filter out world hopping joins // attempt to filter out world hopping joins
if (!activityBuffer.containsKey(event.getName())) if (!activityBuffer.containsKey(member.getUsername()))
{ {
ClanMemberActivity joinActivity = new ClanMemberActivity(ClanActivityType.JOINED, ClanMemberActivity joinActivity = new ClanMemberActivity(ClanActivityType.JOINED,
event.getName(), client.getTickCount()); member, client.getTickCount());
activityBuffer.put(event.getName(), joinActivity); activityBuffer.put(member.getUsername(), joinActivity);
} }
else else
{ {
activityBuffer.remove(event.getName()); activityBuffer.remove(member.getUsername());
} }
} }
@Subscribe @Subscribe
public void onClanMemberLeft(ClanMemberLeft event) public void onClanMemberLeft(ClanMemberLeft event)
{ {
ClanMember member = event.getMember();
if (!config.showJoinLeave() || if (!config.showJoinLeave() ||
clanManager.getRank(event.getName()).getValue() < config.joinLeaveRank().getValue()) member.getRank().getValue() < config.joinLeaveRank().getValue())
{ {
return; return;
} }
ClanMemberActivity leaveActivity = new ClanMemberActivity(ClanActivityType.LEFT, ClanMemberActivity leaveActivity = new ClanMemberActivity(ClanActivityType.LEFT,
event.getName(), client.getTickCount()); member, client.getTickCount());
activityBuffer.put(event.getName(), leaveActivity); activityBuffer.put(member.getUsername(), leaveActivity);
} }
@Subscribe @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 String activityMessage = activityType == ClanActivityType.JOINED ? " has joined." : " has left.";
final ClanMemberRank rank = clanManager.getRank(memberName); final ClanMemberRank rank = member.getRank();
String rankTag = ""; String rankTag = "";
Color textColor = CHAT_CLAN_TEXT_OPAQUE_BACKGROUND; Color textColor = CHAT_CLAN_TEXT_OPAQUE_BACKGROUND;
Color channelColor = CHAT_CLAN_NAME_OPAQUE_BACKGROUND; Color channelColor = CHAT_CLAN_NAME_OPAQUE_BACKGROUND;
@@ -323,7 +326,7 @@ public class ClanChatPlugin extends Plugin
.append("[") .append("[")
.append(ColorUtil.wrapWithColorTag(client.getClanChatName(), channelColor) + rankTag) .append(ColorUtil.wrapWithColorTag(client.getClanChatName(), channelColor) + rankTag)
.append("] ") .append("] ")
.append(ColorUtil.wrapWithColorTag(memberName + activityMessage, textColor)) .append(ColorUtil.wrapWithColorTag(member.getUsername() + activityMessage, textColor))
.build(); .build();
client.addChatMessage(ChatMessageType.CLANCHAT_INFO, "", messageString, ""); client.addChatMessage(ChatMessageType.CLANCHAT_INFO, "", messageString, "");

View File

@@ -26,12 +26,13 @@ package net.runelite.client.plugins.clanchat;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Value; import lombok.Value;
import net.runelite.api.ClanMember;
@Value @Value
@AllArgsConstructor @AllArgsConstructor
class ClanMemberActivity class ClanMemberActivity
{ {
private ClanActivityType activityType; private ClanActivityType activityType;
private String member; private ClanMember member;
private Integer tick; private Integer tick;
} }