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..545176e05f --- /dev/null +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSArchiveMixin.java @@ -0,0 +1,30 @@ +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..daccfc62ff 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -123,6 +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.RSArchive; import net.runelite.rs.api.RSAbstractArchive; import net.runelite.rs.api.RSChatChannel; import net.runelite.rs.api.RSClient; @@ -2286,5 +2287,8 @@ public abstract class RSClientMixin implements RSClient client.getCallbacks().post(new ClanChannelChanged(client.getClanChannel(), false)); } + + @Inject + public static RSArchive[] archives = new RSArchive[21]; }