From 837d373fdddd46ce36fc605986f0abbf7759d1e9 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 11 May 2018 15:45:53 -0400 Subject: [PATCH] runelite-mixins: fix setting menu preventing menu add event from being fired --- .../runelite/mixins/MenuEntryEventMixin.java | 68 ------------------- .../net/runelite/mixins/RSClientMixin.java | 29 ++++++++ 2 files changed, 29 insertions(+), 68 deletions(-) delete mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/MenuEntryEventMixin.java diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/MenuEntryEventMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/MenuEntryEventMixin.java deleted file mode 100644 index 35595e07b5..0000000000 --- a/runelite-mixins/src/main/java/net/runelite/mixins/MenuEntryEventMixin.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2018, SomeoneWithAnInternetConnection - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package net.runelite.mixins; - -import net.runelite.api.events.MenuEntryAdded; -import net.runelite.api.mixins.FieldHook; -import net.runelite.api.mixins.Inject; -import net.runelite.api.mixins.Mixin; -import net.runelite.api.mixins.Shadow; -import static net.runelite.client.callback.Hooks.eventBus; -import net.runelite.rs.api.RSClient; - - -@Mixin(RSClient.class) -public abstract class MenuEntryEventMixin implements RSClient -{ - @Shadow("clientInstance") - private static RSClient client; - - @Inject - private static int oldMenuEntryCount; - - @FieldHook("menuOptionCount") - @Inject - public static void onMenuOptionsChanged(int idx) - { - int newCount = client.getMenuOptionCount(); - - if (newCount == oldMenuEntryCount + 1) - { - MenuEntryAdded event = new MenuEntryAdded( - client.getMenuOptions()[newCount - 1], - client.getMenuTargets()[newCount - 1], - client.getMenuTypes()[newCount - 1], - client.getMenuIdentifiers()[newCount - 1], - client.getMenuActionParams0()[newCount - 1], - client.getMenuActionParams1()[newCount - 1] - ); - - eventBus.post(event); - } - - oldMenuEntryCount = newCount; - } -} 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 bbd4eb7749..806bb48d26 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -68,6 +68,7 @@ import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GrandExchangeOfferChanged; import net.runelite.api.events.MapRegionChanged; +import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.PlayerDespawned; @@ -135,6 +136,9 @@ public abstract class RSClientMixin implements RSClient @Inject private static boolean hasVarbitChanged; + @Inject + private static int oldMenuEntryCount; + @Inject @Override public boolean isInterpolatePlayerAnimations() @@ -485,6 +489,31 @@ public abstract class RSClientMixin implements RSClient } setMenuOptionCount(count); + oldMenuEntryCount = count; + } + + @FieldHook("menuOptionCount") + @Inject + public static void onMenuOptionsChanged(int idx) + { + int oldCount = oldMenuEntryCount; + int newCount = client.getMenuOptionCount(); + + oldMenuEntryCount = newCount; + + if (newCount == oldCount + 1) + { + MenuEntryAdded event = new MenuEntryAdded( + client.getMenuOptions()[newCount - 1], + client.getMenuTargets()[newCount - 1], + client.getMenuTypes()[newCount - 1], + client.getMenuIdentifiers()[newCount - 1], + client.getMenuActionParams0()[newCount - 1], + client.getMenuActionParams1()[newCount - 1] + ); + + eventBus.post(event); + } } @Inject