Merge pull request #8092 from trimbe/fix-joinleave-ranks

clanchat: retrieve rank from ClanMember rather than ClanManager
This commit is contained in:
Adam
2019-03-03 21:00:41 -05:00
committed by GitHub
6 changed files with 42 additions and 20 deletions

View File

@@ -25,12 +25,13 @@
package net.runelite.api.events; package net.runelite.api.events;
import lombok.Value; import lombok.Value;
import net.runelite.api.ClanMember;
@Value @Value
public class ClanMemberJoined public class ClanMemberJoined
{ {
/** /**
* Name of the player who joined * The ClanMember that joined
*/ */
private String name; private ClanMember member;
} }

View File

@@ -25,12 +25,13 @@
package net.runelite.api.events; package net.runelite.api.events;
import lombok.Value; import lombok.Value;
import net.runelite.api.ClanMember;
@Value @Value
public class ClanMemberLeft public class ClanMemberLeft
{ {
/** /**
* Name of the player who left * The ClanMember that left
*/ */
private String name; private ClanMember member;
} }

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;
} }

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.mixins; package net.runelite.mixins;
import net.runelite.api.ClanMember;
import net.runelite.api.events.ClanMemberJoined; import net.runelite.api.events.ClanMemberJoined;
import net.runelite.api.events.ClanMemberLeft; import net.runelite.api.events.ClanMemberLeft;
import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Inject;
@@ -44,15 +45,27 @@ public abstract class RSClanMemberManagerMixin implements RSClanMemberManager
@Override @Override
public void rl$add(RSName name, RSName prevName) public void rl$add(RSName name, RSName prevName)
{ {
ClanMemberJoined event = new ClanMemberJoined(name.getName()); ClanMember member = findByName(name);
client.getCallbacks().post(event); if (member == null)
{
return;
}
ClanMemberJoined event = new ClanMemberJoined(member);
client.getCallbacks().postDeferred(event);
} }
@Inject @Inject
@Override @Override
public void rl$remove(RSNameable nameable) public void rl$remove(RSNameable nameable)
{ {
ClanMemberLeft event = new ClanMemberLeft(nameable.getRsName().getName()); ClanMember member = findByName(nameable.getRsName());
client.getCallbacks().post(event); if (member == null)
{
return;
}
ClanMemberLeft event = new ClanMemberLeft(member);
client.getCallbacks().postDeferred(event);
} }
} }

View File

@@ -37,6 +37,9 @@ public interface RSNameableContainer<T extends RSNameable>
@Import("isMember") @Import("isMember")
boolean isMember(RSName var1); boolean isMember(RSName var1);
@Import("findByName")
T findByName(RSName name);
/** /**
* Method called by the container when an element is added * Method called by the container when an element is added
* @param name * @param name