Merge pull request #8092 from trimbe/fix-joinleave-ranks
clanchat: retrieve rank from ClanMember rather than ClanManager
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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, "");
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user