diff --git a/src/main/java/org/rev317/min/debug/DSceneObjects.java b/src/main/java/org/rev317/min/debug/DSceneObjects.java index 5255f4c..ce8d250 100644 --- a/src/main/java/org/rev317/min/debug/DSceneObjects.java +++ b/src/main/java/org/rev317/min/debug/DSceneObjects.java @@ -9,11 +9,19 @@ import org.rev317.min.api.methods.SceneObjects; import org.rev317.min.api.wrappers.SceneObject; import java.awt.*; +import java.util.Comparator; public class DSceneObjects extends AbstractDebugger { private boolean enabled; + public static final Comparator SCENE_OBJECT_COMPARATOR_DISTANCE = new Comparator() { + @Override + public int compare(SceneObject o1, SceneObject o2) { + return o1.distanceTo() > o2.distanceTo() ? 1 : o1.distanceTo() == o2.distanceTo() ? 0 : -1; + } + }; + @Override public void paint(Graphics g) { PaintDebugger p = Context.getInstance().getPaintDebugger(); diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsGroundDec.java b/src/main/java/org/rev317/min/debug/DSceneObjectsGroundDec.java new file mode 100644 index 0000000..a728bc7 --- /dev/null +++ b/src/main/java/org/rev317/min/debug/DSceneObjectsGroundDec.java @@ -0,0 +1,62 @@ +package org.rev317.min.debug; + +import org.parabot.core.Context; +import org.parabot.core.paint.AbstractDebugger; +import org.parabot.core.paint.PaintDebugger; +import org.parabot.core.ui.Logger; +import org.parabot.environment.api.utils.Filter; +import org.rev317.min.api.methods.SceneObjects; +import org.rev317.min.api.wrappers.SceneObject; + +import java.awt.*; +import java.util.Arrays; +import java.util.Collections; + +public class DSceneObjectsGroundDec extends AbstractDebugger { + + private boolean enabled; + + @Override + public void paint(Graphics g) { + PaintDebugger p = Context.getInstance().getPaintDebugger(); + p.addLine("Ground decorations: " + getGroundDecorations().length); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + @Override + public void toggle() { + enabled = !enabled; + + if (enabled) { + SceneObject[] objects = getGroundDecorations(); + if (objects == null || objects.length == 0) { + Logger.addMessage("There are no GameObjects around you."); + return; + } + java.util.List objs = Arrays.asList(objects); + Collections.sort(objs, DSceneObjects.SCENE_OBJECT_COMPARATOR_DISTANCE); + objects = objs.toArray(new SceneObject[0]); + + for (int i = objects.length - 1; i >= 0; i--) { + System.out.println( + " ID: " + objects[i].getId() + + " UID: " + objects[i].getHash() + + " Location: " + objects[i].getLocation() + + " Distance: " + objects[i].distanceTo()); + } + } + } + + private SceneObject[] getGroundDecorations() { + return SceneObjects.getNearest(new Filter() { + @Override + public boolean accept(SceneObject sceneObject) { + return sceneObject.getType() == SceneObject.TYPE_GROUNDDECORATION; + } + }); + } +} diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsGroundItems.java b/src/main/java/org/rev317/min/debug/DSceneObjectsGroundItems.java new file mode 100644 index 0000000..47c38c7 --- /dev/null +++ b/src/main/java/org/rev317/min/debug/DSceneObjectsGroundItems.java @@ -0,0 +1,62 @@ +package org.rev317.min.debug; + +import org.parabot.core.Context; +import org.parabot.core.paint.AbstractDebugger; +import org.parabot.core.paint.PaintDebugger; +import org.parabot.core.ui.Logger; +import org.parabot.environment.api.utils.Filter; +import org.rev317.min.api.methods.SceneObjects; +import org.rev317.min.api.wrappers.SceneObject; + +import java.awt.*; +import java.util.Arrays; +import java.util.Collections; + +public class DSceneObjectsGroundItems extends AbstractDebugger { + + private boolean enabled; + + @Override + public void paint(Graphics g) { + PaintDebugger p = Context.getInstance().getPaintDebugger(); + p.addLine("Ground Items: " + getGroundItems().length); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + @Override + public void toggle() { + enabled = !enabled; + + if (enabled) { + SceneObject[] objects = getGroundItems(); + if (objects == null || objects.length == 0) { + Logger.addMessage("There are no GameObjects around you."); + return; + } + java.util.List objs = Arrays.asList(objects); + Collections.sort(objs, DSceneObjects.SCENE_OBJECT_COMPARATOR_DISTANCE); + objects = objs.toArray(new SceneObject[0]); + + for (int i = objects.length - 1; i >= 0; i--) { + System.out.println( + " ID: " + objects[i].getId() + + " UID: " + objects[i].getHash() + + " Location: " + objects[i].getLocation() + + " Distance: " + objects[i].distanceTo()); + } + } + } + + private SceneObject[] getGroundItems() { + return SceneObjects.getSceneObjects(new Filter() { + @Override + public boolean accept(SceneObject sceneObject) { + return sceneObject.getType() == SceneObject.TYPE_GROUNDITEM; + } + }); + } +} diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsInteractiveObj.java b/src/main/java/org/rev317/min/debug/DSceneObjectsInteractiveObj.java new file mode 100644 index 0000000..7c36990 --- /dev/null +++ b/src/main/java/org/rev317/min/debug/DSceneObjectsInteractiveObj.java @@ -0,0 +1,63 @@ +package org.rev317.min.debug; + +import org.parabot.core.Context; +import org.parabot.core.paint.AbstractDebugger; +import org.parabot.core.paint.PaintDebugger; +import org.parabot.core.ui.Logger; +import org.parabot.environment.api.utils.Filter; +import org.rev317.min.api.methods.SceneObjects; +import org.rev317.min.api.wrappers.SceneObject; + +import java.awt.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; + +public class DSceneObjectsInteractiveObj extends AbstractDebugger { + + private boolean enabled; + + @Override + public void paint(Graphics g) { + PaintDebugger p = Context.getInstance().getPaintDebugger(); + p.addLine("Interactive Objects: " + getInteractiveObjects().length); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + @Override + public void toggle() { + enabled = !enabled; + + if (enabled) { + SceneObject[] objects = getInteractiveObjects(); + if (objects == null || objects.length == 0) { + Logger.addMessage("There are no GameObjects around you."); + return; + } + java.util.List objs = Arrays.asList(objects); + Collections.sort(objs, DSceneObjects.SCENE_OBJECT_COMPARATOR_DISTANCE); + objects = objs.toArray(new SceneObject[0]); + + for (int i = objects.length - 1; i >= 0; i--) { + System.out.println( + " ID: " + objects[i].getId() + + " UID: " + objects[i].getHash() + + " Location: " + objects[i].getLocation() + + " Distance: " + objects[i].distanceTo()); + } + } + } + + private SceneObject[] getInteractiveObjects() { + return SceneObjects.getSceneObjects(new Filter() { + @Override + public boolean accept(SceneObject sceneObject) { + return sceneObject.getType() == SceneObject.TYPE_INTERACTIVE; + } + }); + } +} diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsWallDec.java b/src/main/java/org/rev317/min/debug/DSceneObjectsWallDec.java new file mode 100644 index 0000000..a759c9b --- /dev/null +++ b/src/main/java/org/rev317/min/debug/DSceneObjectsWallDec.java @@ -0,0 +1,62 @@ +package org.rev317.min.debug; + +import org.parabot.core.Context; +import org.parabot.core.paint.AbstractDebugger; +import org.parabot.core.paint.PaintDebugger; +import org.parabot.core.ui.Logger; +import org.parabot.environment.api.utils.Filter; +import org.rev317.min.api.methods.SceneObjects; +import org.rev317.min.api.wrappers.SceneObject; + +import java.awt.*; +import java.util.Arrays; +import java.util.Collections; + +public class DSceneObjectsWallDec extends AbstractDebugger { + + private boolean enabled; + + @Override + public void paint(Graphics g) { + PaintDebugger p = Context.getInstance().getPaintDebugger(); + p.addLine("Wall decorations: " + getWallDecorations().length); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + @Override + public void toggle() { + enabled = !enabled; + + if (enabled) { + SceneObject[] objects = getWallDecorations(); + if (objects == null || objects.length == 0) { + Logger.addMessage("There are no GameObjects around you."); + return; + } + java.util.List objs = Arrays.asList(objects); + Collections.sort(objs, DSceneObjects.SCENE_OBJECT_COMPARATOR_DISTANCE); + objects = objs.toArray(new SceneObject[0]); + + for (int i = objects.length - 1; i >= 0; i--) { + System.out.println( + " ID: " + objects[i].getId() + + " UID: " + objects[i].getHash() + + " Location: " + objects[i].getLocation() + + " Distance: " + objects[i].distanceTo()); + } + } + } + + private SceneObject[] getWallDecorations() { + return SceneObjects.getNearest(new Filter() { + @Override + public boolean accept(SceneObject sceneObject) { + return sceneObject.getType() == SceneObject.TYPE_WALLDECORATION; + } + }); + } +} diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsWallObj.java b/src/main/java/org/rev317/min/debug/DSceneObjectsWallObj.java new file mode 100644 index 0000000..2c9d6c8 --- /dev/null +++ b/src/main/java/org/rev317/min/debug/DSceneObjectsWallObj.java @@ -0,0 +1,62 @@ +package org.rev317.min.debug; + +import org.parabot.core.Context; +import org.parabot.core.paint.AbstractDebugger; +import org.parabot.core.paint.PaintDebugger; +import org.parabot.core.ui.Logger; +import org.parabot.environment.api.utils.Filter; +import org.rev317.min.api.methods.SceneObjects; +import org.rev317.min.api.wrappers.SceneObject; + +import java.awt.*; +import java.util.Arrays; +import java.util.Collections; + +public class DSceneObjectsWallObj extends AbstractDebugger { + + private boolean enabled; + + @Override + public void paint(Graphics g) { + PaintDebugger p = Context.getInstance().getPaintDebugger(); + p.addLine("Wall objects: " + getWallObjects().length); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + @Override + public void toggle() { + enabled = !enabled; + + if (enabled) { + SceneObject[] objects = getWallObjects(); + if (objects == null || objects.length == 0) { + Logger.addMessage("There are no GameObjects around you."); + return; + } + java.util.List objs = Arrays.asList(objects); + Collections.sort(objs, DSceneObjects.SCENE_OBJECT_COMPARATOR_DISTANCE); + objects = objs.toArray(new SceneObject[0]); + + for (int i = objects.length - 1; i >= 0; i--) { + System.out.println( + " ID: " + objects[i].getId() + + " UID: " + objects[i].getHash() + + " Location: " + objects[i].getLocation() + + " Distance: " + objects[i].distanceTo()); + } + } + } + + private SceneObject[] getWallObjects() { + return SceneObjects.getNearest(new Filter() { + @Override + public boolean accept(SceneObject sceneObject) { + return sceneObject.getType() == SceneObject.TYPE_WALL; + } + }); + } +} diff --git a/src/main/java/org/rev317/min/ui/BotMenu.java b/src/main/java/org/rev317/min/ui/BotMenu.java index eeb3926..dbca338 100644 --- a/src/main/java/org/rev317/min/ui/BotMenu.java +++ b/src/main/java/org/rev317/min/ui/BotMenu.java @@ -32,7 +32,13 @@ public class BotMenu implements ActionListener { JMenuItem messages = newItem("Messages"); JMenuItem mouse = newItem("Mouse"); JMenuItem npcs = newItem("Npcs"); - JMenuItem objects = newItem("Objects"); + JMenu objects = new JMenu("Objects"); + JMenuItem enableAllObject = newItem("Enable All Objects"); + JMenuItem groundDecorations = newItem("Ground Decorations"); + JMenuItem interactiveObjects = newItem("Interactive Objects"); + JMenuItem wallObjects = newItem("Wall Objects"); + JMenuItem wallDecorations = newItem("Wall Decorations"); + JMenuItem groundItems = newItem("Ground Items"); JMenuItem players = newItem("Players"); JMenuItem skills = newItem("Skills"); @@ -47,7 +53,12 @@ public class BotMenu implements ActionListener { debugger.addDebugger("Messages", new DMessages()); debugger.addDebugger("Mouse", new DMouse()); debugger.addDebugger("Npcs", new DNpcs()); - debugger.addDebugger("Objects", new DSceneObjects()); + debugger.addDebugger("Enable All Objects", new DSceneObjects()); + debugger.addDebugger("Ground Decorations", new DSceneObjectsGroundDec()); + debugger.addDebugger("Interactive Objects", new DSceneObjectsInteractiveObj()); + debugger.addDebugger("Wall Objects", new DSceneObjectsWallObj()); + debugger.addDebugger("Wall Decorations", new DSceneObjectsWallDec()); + debugger.addDebugger("Ground Items", new DSceneObjectsGroundItems()); debugger.addDebugger("Players", new DPlayers()); debugger.addDebugger("Skills", new DSkills()); @@ -64,6 +75,13 @@ public class BotMenu implements ActionListener { debug.add(mouse); debug.add(npcs); debug.add(objects); + objects.add(enableAllObject); + objects.addSeparator(); + objects.add(groundDecorations); + objects.add(groundItems); + objects.add(wallDecorations); + objects.add(wallObjects); + objects.add(interactiveObjects); debug.add(players); debug.add(skills);