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;
import lombok.Value;
import net.runelite.api.ClanMember;
@Value
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;
import lombok.Value;
import net.runelite.api.ClanMember;
@Value
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 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, "");

View File

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

View File

@@ -24,6 +24,7 @@
*/
package net.runelite.mixins;
import net.runelite.api.ClanMember;
import net.runelite.api.events.ClanMemberJoined;
import net.runelite.api.events.ClanMemberLeft;
import net.runelite.api.mixins.Inject;
@@ -44,15 +45,27 @@ public abstract class RSClanMemberManagerMixin implements RSClanMemberManager
@Override
public void rl$add(RSName name, RSName prevName)
{
ClanMemberJoined event = new ClanMemberJoined(name.getName());
client.getCallbacks().post(event);
ClanMember member = findByName(name);
if (member == null)
{
return;
}
ClanMemberJoined event = new ClanMemberJoined(member);
client.getCallbacks().postDeferred(event);
}
@Inject
@Override
public void rl$remove(RSNameable nameable)
{
ClanMemberLeft event = new ClanMemberLeft(nameable.getRsName().getName());
client.getCallbacks().post(event);
ClanMember member = findByName(nameable.getRsName());
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")
boolean isMember(RSName var1);
@Import("findByName")
T findByName(RSName name);
/**
* Method called by the container when an element is added
* @param name