diff --git a/runelite-api/src/main/java/net/runelite/api/events/ClanMemberJoined.java b/runelite-api/src/main/java/net/runelite/api/events/ClanMemberJoined.java index b8e50c6296..ff2a373c4b 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/ClanMemberJoined.java +++ b/runelite-api/src/main/java/net/runelite/api/events/ClanMemberJoined.java @@ -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; } diff --git a/runelite-api/src/main/java/net/runelite/api/events/ClanMemberLeft.java b/runelite-api/src/main/java/net/runelite/api/events/ClanMemberLeft.java index 6eb269dd6d..24bc58f960 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/ClanMemberLeft.java +++ b/runelite-api/src/main/java/net/runelite/api/events/ClanMemberLeft.java @@ -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; } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClanMemberManagerMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClanMemberManagerMixin.java index b4c71dec2a..25e01ce1ca 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClanMemberManagerMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClanMemberManagerMixin.java @@ -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); } } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNameableContainer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNameableContainer.java index 82fb52d9d4..33f2070048 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNameableContainer.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSNameableContainer.java @@ -37,6 +37,9 @@ public interface RSNameableContainer @Import("isMember") boolean isMember(RSName var1); + @Import("findByName") + T findByName(RSName name); + /** * Method called by the container when an element is added * @param name