diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSArchiveMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSArchiveMixin.java new file mode 100644 index 0000000000..90cf53251c --- /dev/null +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSArchiveMixin.java @@ -0,0 +1,27 @@ +package net.runelite.mixins; + +import net.runelite.api.mixins.Inject; +import net.runelite.api.mixins.MethodHook; +import net.runelite.api.mixins.Mixin; +import net.runelite.api.mixins.Shadow; +import net.runelite.rs.api.RSArchive; +import net.runelite.rs.api.RSArchiveDisk; +import net.runelite.rs.api.RSClient; + +@Mixin(RSArchive.class) +public abstract class RSArchiveMixin implements RSArchive { + + @Shadow("client") + private static RSClient client; + + @Shadow("archives") + private static RSArchive[] archives; + + @MethodHook(value = "", end = true) + @Inject + private void rl$init(RSArchiveDisk var1, RSArchiveDisk var2, int archive, boolean var4, boolean var5, boolean var6) { + if (archive >= 0 && archive < 21) { + archives[archive] = this; + } + } +} diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index 6a26df384e..62d490571d 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -123,29 +123,7 @@ import net.runelite.api.widgets.WidgetConfig; import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetItem; import net.runelite.api.widgets.WidgetType; -import net.runelite.rs.api.RSAbstractArchive; -import net.runelite.rs.api.RSChatChannel; -import net.runelite.rs.api.RSClient; -import net.runelite.rs.api.RSEnumComposition; -import net.runelite.rs.api.RSFriendSystem; -import net.runelite.rs.api.RSIndexedSprite; -import net.runelite.rs.api.RSInterfaceParent; -import net.runelite.rs.api.RSItemContainer; -import net.runelite.rs.api.RSNPC; -import net.runelite.rs.api.RSNode; -import net.runelite.rs.api.RSNodeDeque; -import net.runelite.rs.api.RSNodeHashTable; -import net.runelite.rs.api.RSPacketBuffer; -import net.runelite.rs.api.RSPlayer; -import net.runelite.rs.api.RSScene; -import net.runelite.rs.api.RSScriptEvent; -import net.runelite.rs.api.RSSpritePixels; -import net.runelite.rs.api.RSStructComposition; -import net.runelite.rs.api.RSTile; -import net.runelite.rs.api.RSTileItem; -import net.runelite.rs.api.RSUsername; -import net.runelite.rs.api.RSWidget; -import net.runelite.rs.api.RSWorld; +import net.runelite.rs.api.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -2286,5 +2264,8 @@ public abstract class RSClientMixin implements RSClient client.getCallbacks().post(new ClanChannelChanged(client.getClanChannel(), false)); } + + @Inject + public static RSArchive[] archives = new RSArchive[21]; }