From 097a0bdf7b5ed60ab26fa380c5f48ba45d18d666 Mon Sep 17 00:00:00 2001 From: Jak Date: Sun, 29 Jul 2018 14:49:01 +0100 Subject: [PATCH 1/6] Fix ServerDesc comparitor to allow duplicate server names --- src/main/java/org/parabot/core/desc/ServerDescription.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/parabot/core/desc/ServerDescription.java b/src/main/java/org/parabot/core/desc/ServerDescription.java index 687410c..89b191b 100644 --- a/src/main/java/org/parabot/core/desc/ServerDescription.java +++ b/src/main/java/org/parabot/core/desc/ServerDescription.java @@ -37,6 +37,8 @@ public class ServerDescription implements Comparable { @Override public int compareTo(ServerDescription o) { + if (this.getServerName().equalsIgnoreCase(o.getServerName())) + return 1; return this.getServerName().compareTo(o.getServerName()); } From b4ba5efb49ff791fbcf6cec1693969407073d4f0 Mon Sep 17 00:00:00 2001 From: Shadowrs Date: Sat, 1 Sep 2018 20:11:12 +0100 Subject: [PATCH 2/6] Brackets --- src/main/java/org/parabot/core/desc/ServerDescription.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/parabot/core/desc/ServerDescription.java b/src/main/java/org/parabot/core/desc/ServerDescription.java index 89b191b..f908842 100644 --- a/src/main/java/org/parabot/core/desc/ServerDescription.java +++ b/src/main/java/org/parabot/core/desc/ServerDescription.java @@ -37,8 +37,9 @@ public class ServerDescription implements Comparable { @Override public int compareTo(ServerDescription o) { - if (this.getServerName().equalsIgnoreCase(o.getServerName())) + if (this.getServerName().equalsIgnoreCase(o.getServerName())) { return 1; + } return this.getServerName().compareTo(o.getServerName()); } From beeaebf323c0998a21b9be5bd2bf19b72f920748 Mon Sep 17 00:00:00 2001 From: Shadowrs Date: Tue, 4 Sep 2018 22:21:07 +0100 Subject: [PATCH 3/6] Add waypoint methods for Applet pre init and post start --- src/main/java/org/parabot/core/Context.java | 4 ++++ .../environment/servers/ServerProvider.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/org/parabot/core/Context.java b/src/main/java/org/parabot/core/Context.java index 943d051..e709ff9 100644 --- a/src/main/java/org/parabot/core/Context.java +++ b/src/main/java/org/parabot/core/Context.java @@ -185,9 +185,13 @@ public class Context { panel.add(gameApplet); panel.validate(); + serverProvider.preAppletInit(); + gameApplet.init(); gameApplet.start(); + serverProvider.postAppletStart(); + java.util.Timer t = new java.util.Timer(); t.schedule(new TimerTask() { @Override diff --git a/src/main/java/org/parabot/environment/servers/ServerProvider.java b/src/main/java/org/parabot/environment/servers/ServerProvider.java index da9b465..6765781 100644 --- a/src/main/java/org/parabot/environment/servers/ServerProvider.java +++ b/src/main/java/org/parabot/environment/servers/ServerProvider.java @@ -146,4 +146,20 @@ public abstract class ServerProvider implements Opcodes { } + /** + * Called in Context.setApplet before applet.init() is called. Exclusively used for manipulating the Frame attached + * to the applet of Roatpkz. + */ + public void preAppletInit() { + + } + + /** + * Called in Context.setApplet before after applet.start() and applet.init() are called. Exclusively used for manipulating the Frame attached + * to the applet of Roatpkz. + */ + public void postAppletStart() { + + } + } From d609d7d8bb7d56935c0f50f651b5ebab8f97105e Mon Sep 17 00:00:00 2001 From: Shadowrs Date: Wed, 5 Sep 2018 10:06:37 +0100 Subject: [PATCH 4/6] Add support for zero-arg callbacks --- .../core/asm/adapters/AddCallbackAdapter.java | 22 ++++++++++--------- .../parabot/core/asm/wrappers/Callback.java | 16 ++++++++------ .../core/parsers/hooks/XMLHookParser.java | 6 +++++ 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/parabot/core/asm/adapters/AddCallbackAdapter.java b/src/main/java/org/parabot/core/asm/adapters/AddCallbackAdapter.java index 1384452..1b6ea3f 100644 --- a/src/main/java/org/parabot/core/asm/adapters/AddCallbackAdapter.java +++ b/src/main/java/org/parabot/core/asm/adapters/AddCallbackAdapter.java @@ -40,17 +40,19 @@ public class AddCallbackAdapter implements Injectable, Opcodes { Label l0 = new Label(); inject.add(new LabelNode(l0)); int offset = 0; - for (int arg : args) { - if (Modifier.isStatic(method.access)) { - int loadOpcode = ASMUtils.getLoadOpcode(types[arg] - .getDescriptor()); - inject.add(new VarInsnNode(loadOpcode, arg + offset)); - if (loadOpcode == Opcodes.LLOAD) { - offset++; + if (args != null && args.length > 0) { + for (int arg : args) { + if (Modifier.isStatic(method.access)) { + int loadOpcode = ASMUtils.getLoadOpcode(types[arg] + .getDescriptor()); + inject.add(new VarInsnNode(loadOpcode, arg + offset)); + if (loadOpcode == Opcodes.LLOAD) { + offset++; + } + } else { + inject.add(new VarInsnNode(ASMUtils.getLoadOpcode(types[arg] + .getDescriptor()), arg + 1)); } - } else { - inject.add(new VarInsnNode(ASMUtils.getLoadOpcode(types[arg] - .getDescriptor()), arg + 1)); } } inject.add(new MethodInsnNode(INVOKESTATIC, diff --git a/src/main/java/org/parabot/core/asm/wrappers/Callback.java b/src/main/java/org/parabot/core/asm/wrappers/Callback.java index 039b41c..5917f0f 100644 --- a/src/main/java/org/parabot/core/asm/wrappers/Callback.java +++ b/src/main/java/org/parabot/core/asm/wrappers/Callback.java @@ -26,14 +26,16 @@ public class Callback implements Injectable { this.invokeMethod = callbackMethod; this.desc = callbackDesc; this.conditional = conditional; - if (args.contains(",")) { - final String[] strArgs = args.split(","); - this.args = new int[strArgs.length]; - for (int i = 0; i < this.args.length; i++) { - this.args[i] = Integer.parseInt(strArgs[i]); + if (args.length() > 0) { + if (args.contains(",")) { + final String[] strArgs = args.split(","); + this.args = new int[strArgs.length]; + for (int i = 0; i < this.args.length; i++) { + this.args[i] = Integer.parseInt(strArgs[i]); + } + } else { + this.args = new int[]{Integer.parseInt(args)}; } - } else { - this.args = new int[]{ Integer.parseInt(args) }; } } diff --git a/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java b/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java index af01411..acde8cf 100644 --- a/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java +++ b/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java @@ -67,6 +67,12 @@ public class XMLHookParser extends HookParser { private static final String getValue(String tag, Element element) { NodeList nodes = element.getElementsByTagName(tag).item(0) .getChildNodes(); + if (nodes.getLength() == 0 || nodes.item(0) == null) { + if (Core.inVerboseMode()) { + System.err.println("WARNING: Invalid Hook "+tag+" subnode. Tag is missing or empty?"); + } + return ""; + } Node node = (Node) nodes.item(0); return node.getNodeValue(); } From ca0d68ed0854f46ef643e10fb74aff5f5d005263 Mon Sep 17 00:00:00 2001 From: Shadowrs Date: Wed, 5 Sep 2018 10:40:58 +0100 Subject: [PATCH 5/6] Add an NPE catch wtih useful message --- .../java/org/parabot/core/parsers/hooks/XMLHookParser.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java b/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java index acde8cf..073b78e 100644 --- a/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java +++ b/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java @@ -65,6 +65,9 @@ public class XMLHookParser extends HookParser { } private static final String getValue(String tag, Element element) { + if (element.getElementsByTagName(tag).item(0) == null) { + throw new NullPointerException("MISSING HOOK TAG: The '"+tag+"' xml tag is missing from one of the hooks of type: "+element.getParentNode().getNodeName()); + } NodeList nodes = element.getElementsByTagName(tag).item(0) .getChildNodes(); if (nodes.getLength() == 0 || nodes.item(0) == null) { From 3a91763a57e8d7ed4b0e3de7a139c9278fc68e2c Mon Sep 17 00:00:00 2001 From: Shadowrs Date: Fri, 7 Sep 2018 17:59:27 +0100 Subject: [PATCH 6/6] Code style fix --- .../org/parabot/core/asm/adapters/AddCallbackAdapter.java | 2 +- .../java/org/parabot/core/parsers/hooks/XMLHookParser.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/parabot/core/asm/adapters/AddCallbackAdapter.java b/src/main/java/org/parabot/core/asm/adapters/AddCallbackAdapter.java index 1b6ea3f..8b26227 100644 --- a/src/main/java/org/parabot/core/asm/adapters/AddCallbackAdapter.java +++ b/src/main/java/org/parabot/core/asm/adapters/AddCallbackAdapter.java @@ -40,7 +40,7 @@ public class AddCallbackAdapter implements Injectable, Opcodes { Label l0 = new Label(); inject.add(new LabelNode(l0)); int offset = 0; - if (args != null && args.length > 0) { + if (args != null) { for (int arg : args) { if (Modifier.isStatic(method.access)) { int loadOpcode = ASMUtils.getLoadOpcode(types[arg] diff --git a/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java b/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java index 073b78e..e7fa473 100644 --- a/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java +++ b/src/main/java/org/parabot/core/parsers/hooks/XMLHookParser.java @@ -66,13 +66,13 @@ public class XMLHookParser extends HookParser { private static final String getValue(String tag, Element element) { if (element.getElementsByTagName(tag).item(0) == null) { - throw new NullPointerException("MISSING HOOK TAG: The '"+tag+"' xml tag is missing from one of the hooks of type: "+element.getParentNode().getNodeName()); + throw new NullPointerException("MISSING HOOK TAG: The '" + tag + "' xml tag is missing from one of the hooks of type: " + element.getParentNode().getNodeName()); } NodeList nodes = element.getElementsByTagName(tag).item(0) .getChildNodes(); if (nodes.getLength() == 0 || nodes.item(0) == null) { if (Core.inVerboseMode()) { - System.err.println("WARNING: Invalid Hook "+tag+" subnode. Tag is missing or empty?"); + System.err.println("WARNING: Invalid Hook " + tag + " subnode. Tag is missing or empty?"); } return ""; }