From 4f414b09461bebfacb5bba0fca0ce3909b813e18 Mon Sep 17 00:00:00 2001 From: stone-wall Date: Thu, 12 Mar 2020 13:11:26 -0400 Subject: [PATCH] tested wow it works --- .../player/headicon/PlayerSkullChanged.java | 2 +- .../net/runelite/mixins/RSPlayerMixin.java | 59 +++++++++++-------- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/events/player/headicon/PlayerSkullChanged.java b/runelite-api/src/main/java/net/runelite/api/events/player/headicon/PlayerSkullChanged.java index c9bfd81095..a2455b23d4 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/player/headicon/PlayerSkullChanged.java +++ b/runelite-api/src/main/java/net/runelite/api/events/player/headicon/PlayerSkullChanged.java @@ -4,7 +4,7 @@ import lombok.Getter; import net.runelite.api.Player; import net.runelite.api.SkullIcon; -public class PlayerSkullChanged extends PlayerHeadIconChanged +public class PlayerSkullChanged extends PlayerHeadIconChanged { @Getter private final SkullIcon oldSkullIcon; diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerMixin.java index 6f7c2ddc59..772c15e81b 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerMixin.java @@ -27,7 +27,6 @@ package net.runelite.mixins; import java.awt.Polygon; import java.awt.Shape; import java.util.ArrayList; -import jdk.javadoc.internal.doclets.formats.html.markup.Head; import net.runelite.api.HeadIcon; import static net.runelite.api.HeadIcon.MAGIC; import static net.runelite.api.HeadIcon.MELEE; @@ -50,6 +49,7 @@ import net.runelite.api.events.PlayerAppearanceChanged; import net.runelite.api.events.player.headicon.OverheadPrayerChanged; import net.runelite.api.events.player.headicon.PlayerSkullChanged; import net.runelite.api.mixins.Copy; +import net.runelite.api.mixins.FieldHook; import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.MethodHook; import net.runelite.api.mixins.Mixin; @@ -71,10 +71,10 @@ public abstract class RSPlayerMixin implements RSPlayer private boolean friended; @Inject - private HeadIcon oldHeadIcon = null; + private int oldHeadIcon = -1; @Inject - private SkullIcon oldSkullIcon = null; + private int oldSkullIcon = -1; @Inject @Override @@ -97,42 +97,50 @@ public abstract class RSPlayerMixin implements RSPlayer return name.replace('\u00A0', ' '); } + @Inject + @FieldHook("headIconPrayer") + public void prayerChanged(int idx) + { + if (!(getRsOverheadIcon() == -1 && oldHeadIcon == -1)) + { + final HeadIcon headIcon = getHeadIcon(getRsOverheadIcon()); + if (getRsOverheadIcon() != oldHeadIcon) + { + client.getCallbacks().post(OverheadPrayerChanged.class, + new OverheadPrayerChanged(this, getHeadIcon(oldHeadIcon), headIcon)); + } + } + oldHeadIcon = getRsOverheadIcon(); + } + @Inject @Override public HeadIcon getOverheadIcon() { - final HeadIcon headIcon = getHeadIcon(getRsOverheadIcon()); - if (headIcon == null && oldHeadIcon == null) + return getHeadIcon(getRsOverheadIcon()); + } + + @Inject + @FieldHook("headIconPk") + public void skullChanged(int idx) + { + final SkullIcon skullIcon = skullFromInt(getRsSkullIcon()); + if (getRsSkullIcon() != oldSkullIcon) { - return null; + client.getCallbacks().post(PlayerSkullChanged.class, + new PlayerSkullChanged(this, skullFromInt(getRsSkullIcon()), skullIcon)); } - if (headIcon != oldHeadIcon) - { - client.getCallbacks().post(OverheadPrayerChanged.class, - new OverheadPrayerChanged(this, oldHeadIcon, headIcon)); - } - oldHeadIcon = headIcon; - return headIcon; + oldSkullIcon = getRsSkullIcon(); } @Inject @Override public SkullIcon getSkullIcon() { - final SkullIcon skullIcon = skullFromInt(getRsSkullIcon()); - if (oldSkullIcon == null && skullIcon == null) - { - return null; - } - if (skullIcon != oldSkullIcon) - { - client.getCallbacks().post(PlayerSkullChanged.class, - new PlayerSkullChanged(this, oldSkullIcon, skullIcon)); - } - oldSkullIcon = skullIcon; - return skullIcon; + return skullFromInt(getRsSkullIcon()); } + @Inject private HeadIcon getHeadIcon(int overheadIcon) { switch (overheadIcon) @@ -154,6 +162,7 @@ public abstract class RSPlayerMixin implements RSPlayer } } + @Inject private SkullIcon skullFromInt(int skull) { switch (skull)