diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java index 20b713e16b..636bd5d027 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java @@ -25,17 +25,11 @@ */ package net.runelite.mixins; -import java.util.ArrayList; -import java.util.Stack; import java.util.regex.Matcher; import java.util.regex.Pattern; import net.runelite.api.Client; -import static net.runelite.api.Opcodes.INVOKE; -import static net.runelite.api.Opcodes.RETURN; import static net.runelite.api.Opcodes.RUNELITE_EXECUTE; import net.runelite.api.events.ScriptCallbackEvent; -import net.runelite.api.events.ScriptPostFired; -import net.runelite.api.events.ScriptPreFired; import net.runelite.api.mixins.Copy; import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Mixin; @@ -60,21 +54,10 @@ public abstract class ScriptVMMixin implements RSClient @Inject private static int currentScriptPC; - @Inject - private static ScriptPostFired deferredEvent = null; - - @Inject - private static Stack scriptIds = new Stack<>(); - // Call is injected into runScript by the ScriptVM raw injector @Inject static boolean vmExecuteOpcode(int opcode) { - if (deferredEvent != null) - { - client.getCallbacks().post(ScriptPostFired.class, deferredEvent); - deferredEvent = null; - } if (opcode == RUNELITE_EXECUTE) { assert currentScript.getInstructions()[currentScriptPC] == RUNELITE_EXECUTE; @@ -121,21 +104,6 @@ public abstract class ScriptVMMixin implements RSClient client.getCallbacks().post(ScriptCallbackEvent.class, event); return true; } - else if (opcode == INVOKE) - { - int id = currentScript.getIntOperands()[currentScriptPC]; - scriptIds.push(id); - ScriptPreFired event = new ScriptPreFired(id); - event.setScriptEvent(null); - client.getCallbacks().post(ScriptPreFired.class, event); - } - else if (opcode == RETURN) - { - if (scriptIds.size() > 1) // let the runScript method handle the final script - { - deferredEvent = new ScriptPostFired(scriptIds.pop()); // fire the event when we've left the script - } - } return false; } @@ -153,16 +121,9 @@ public abstract class ScriptVMMixin implements RSClient { try { - ScriptPreFired preFired = new ScriptPreFired(-1); - preFired.setScriptEvent(event); - client.getCallbacks().post(ScriptPreFired.class, preFired); - ((JavaScriptCallback) arguments[0]).run(event); - - ScriptPostFired postFired = new ScriptPostFired(-1); - client.getCallbacks().post(ScriptPostFired.class, postFired); } - catch (Exception e) // wont catch assertions + catch (Exception e) { client.getLogger().error("Error in JavaScriptCallback", e); } @@ -171,34 +132,11 @@ public abstract class ScriptVMMixin implements RSClient { try { - try - { - scriptIds.push((Integer) event.getArguments()[0]); // this is safe because it will always be the script id - - ScriptPreFired preFired = new ScriptPreFired(scriptIds.peek()); // peek doesn't remove the top item - preFired.setScriptEvent(event); - client.getCallbacks().post(ScriptPreFired.class, preFired); - } - catch (ClassCastException ignored) - { - } - rs$runScript(event, maxExecutionTime); - - if (!scriptIds.empty()) - { - ScriptPostFired postFired = new ScriptPostFired(scriptIds.pop()); // hopefully the stack should be dry at this point - assert scriptIds.empty() : "Script ID stack should be empty! Contains: " + getAllScriptIds(); - client.getCallbacks().post(ScriptPostFired.class, postFired); - } } finally { currentScript = null; - while (!scriptIds.empty()) - { - scriptIds.pop(); // make sure the stack is empty, something disastrous happened - } } } } @@ -214,25 +152,4 @@ public abstract class ScriptVMMixin implements RSClient se.setArguments(args); runScript(se, 5000000); } - - @Inject - private static String getAllScriptIds() - { - ArrayList ids = new ArrayList<>(scriptIds); - StringBuilder sb = new StringBuilder(); - boolean first = true; - for (Object item : ids) - { - if (first) - { - first = false; - } - else - { - sb.append(", "); - } - sb.append(item); - } - return sb.toString(); - } } \ No newline at end of file