diff --git a/src/main/java/org/rev317/min/api/wrappers/SceneObject.java b/src/main/java/org/rev317/min/api/wrappers/SceneObject.java
index 04e6ea4..7fb8c84 100644
--- a/src/main/java/org/rev317/min/api/wrappers/SceneObject.java
+++ b/src/main/java/org/rev317/min/api/wrappers/SceneObject.java
@@ -1,6 +1,8 @@
package org.rev317.min.api.wrappers;
+import org.parabot.core.Context;
import org.parabot.core.reflect.RefClass;
+import org.parabot.core.reflect.RefMethod;
import org.rev317.min.accessors.SceneObjectTile;
import org.rev317.min.api.interfaces.Locatable;
import org.rev317.min.api.methods.Calculations;
@@ -35,6 +37,27 @@ public class SceneObject implements Locatable {
return accessor.getHash();
}
+ /**
+ * Resolves the hash depending on the API's inner SceneObjectTile getHash() methods' type.
+ *
This is strictly to be used only by Debug classes such as {@code DSceneObjects} due to the overhead of Reflection.
+ * In cases of high usage, classes should be duplicated as usual in a custom API with the required changed type.
+ * @return An object, casted to either Long or Int
+ */
+ public final Object resolveHash() {
+ Object hash = (int) 0;
+ try {
+ RefMethod hashMethod = new RefClass(Context.getInstance().getASMClassLoader().loadClass("org.rev317.min.accessors.SceneObjectTile"), accessor).getMethod("getHash");
+ if (hashMethod.getReturnType() == int.class) {
+ hash = (int) hashMethod.invoke();
+ } else {
+ hash = (long) hashMethod.invoke();
+ }
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ return hash;
+ }
+
/**
* Gets location of this tile
*
diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsGroundDec.java b/src/main/java/org/rev317/min/debug/DSceneObjectsGroundDec.java
index a728bc7..8abf012 100644
--- a/src/main/java/org/rev317/min/debug/DSceneObjectsGroundDec.java
+++ b/src/main/java/org/rev317/min/debug/DSceneObjectsGroundDec.java
@@ -34,7 +34,7 @@ public class DSceneObjectsGroundDec extends AbstractDebugger {
if (enabled) {
SceneObject[] objects = getGroundDecorations();
if (objects == null || objects.length == 0) {
- Logger.addMessage("There are no GameObjects around you.");
+ Logger.addMessage("There are no Ground Decorations around you.");
return;
}
java.util.List objs = Arrays.asList(objects);
@@ -44,7 +44,7 @@ public class DSceneObjectsGroundDec extends AbstractDebugger {
for (int i = objects.length - 1; i >= 0; i--) {
System.out.println(
" ID: " + objects[i].getId() +
- " UID: " + objects[i].getHash() +
+ " UID: " + objects[i].resolveHash() +
" Location: " + objects[i].getLocation() +
" Distance: " + objects[i].distanceTo());
}
diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsGroundItems.java b/src/main/java/org/rev317/min/debug/DSceneObjectsGroundItems.java
index 47c38c7..cfb419f 100644
--- a/src/main/java/org/rev317/min/debug/DSceneObjectsGroundItems.java
+++ b/src/main/java/org/rev317/min/debug/DSceneObjectsGroundItems.java
@@ -34,7 +34,7 @@ public class DSceneObjectsGroundItems extends AbstractDebugger {
if (enabled) {
SceneObject[] objects = getGroundItems();
if (objects == null || objects.length == 0) {
- Logger.addMessage("There are no GameObjects around you.");
+ Logger.addMessage("There are no Ground Items around you.");
return;
}
java.util.List objs = Arrays.asList(objects);
@@ -44,7 +44,7 @@ public class DSceneObjectsGroundItems extends AbstractDebugger {
for (int i = objects.length - 1; i >= 0; i--) {
System.out.println(
" ID: " + objects[i].getId() +
- " UID: " + objects[i].getHash() +
+ " UID: " + objects[i].resolveHash() +
" Location: " + objects[i].getLocation() +
" Distance: " + objects[i].distanceTo());
}
diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsInteractiveObj.java b/src/main/java/org/rev317/min/debug/DSceneObjectsInteractiveObj.java
index 7c36990..b96c204 100644
--- a/src/main/java/org/rev317/min/debug/DSceneObjectsInteractiveObj.java
+++ b/src/main/java/org/rev317/min/debug/DSceneObjectsInteractiveObj.java
@@ -3,6 +3,8 @@ 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.reflect.RefClass;
+import org.parabot.core.reflect.RefMethod;
import org.parabot.core.ui.Logger;
import org.parabot.environment.api.utils.Filter;
import org.rev317.min.api.methods.SceneObjects;
@@ -35,7 +37,7 @@ public class DSceneObjectsInteractiveObj extends AbstractDebugger {
if (enabled) {
SceneObject[] objects = getInteractiveObjects();
if (objects == null || objects.length == 0) {
- Logger.addMessage("There are no GameObjects around you.");
+ Logger.addMessage("There are no Interactive Objects around you.");
return;
}
java.util.List objs = Arrays.asList(objects);
@@ -45,7 +47,7 @@ public class DSceneObjectsInteractiveObj extends AbstractDebugger {
for (int i = objects.length - 1; i >= 0; i--) {
System.out.println(
" ID: " + objects[i].getId() +
- " UID: " + objects[i].getHash() +
+ " UID: " + objects[i].resolveHash() +
" Location: " + objects[i].getLocation() +
" Distance: " + objects[i].distanceTo());
}
diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsWallDec.java b/src/main/java/org/rev317/min/debug/DSceneObjectsWallDec.java
index a759c9b..d39371f 100644
--- a/src/main/java/org/rev317/min/debug/DSceneObjectsWallDec.java
+++ b/src/main/java/org/rev317/min/debug/DSceneObjectsWallDec.java
@@ -34,7 +34,7 @@ public class DSceneObjectsWallDec extends AbstractDebugger {
if (enabled) {
SceneObject[] objects = getWallDecorations();
if (objects == null || objects.length == 0) {
- Logger.addMessage("There are no GameObjects around you.");
+ Logger.addMessage("There are no Wall Decorations around you.");
return;
}
java.util.List objs = Arrays.asList(objects);
@@ -44,7 +44,7 @@ public class DSceneObjectsWallDec extends AbstractDebugger {
for (int i = objects.length - 1; i >= 0; i--) {
System.out.println(
" ID: " + objects[i].getId() +
- " UID: " + objects[i].getHash() +
+ " UID: " + objects[i].resolveHash() +
" Location: " + objects[i].getLocation() +
" Distance: " + objects[i].distanceTo());
}
diff --git a/src/main/java/org/rev317/min/debug/DSceneObjectsWallObj.java b/src/main/java/org/rev317/min/debug/DSceneObjectsWallObj.java
index 2c9d6c8..85b7500 100644
--- a/src/main/java/org/rev317/min/debug/DSceneObjectsWallObj.java
+++ b/src/main/java/org/rev317/min/debug/DSceneObjectsWallObj.java
@@ -34,7 +34,7 @@ public class DSceneObjectsWallObj extends AbstractDebugger {
if (enabled) {
SceneObject[] objects = getWallObjects();
if (objects == null || objects.length == 0) {
- Logger.addMessage("There are no GameObjects around you.");
+ Logger.addMessage("There are no Wall Objects around you.");
return;
}
java.util.List objs = Arrays.asList(objects);
@@ -44,7 +44,7 @@ public class DSceneObjectsWallObj extends AbstractDebugger {
for (int i = objects.length - 1; i >= 0; i--) {
System.out.println(
" ID: " + objects[i].getId() +
- " UID: " + objects[i].getHash() +
+ " UID: " + objects[i].resolveHash() +
" Location: " + objects[i].getLocation() +
" Distance: " + objects[i].distanceTo());
}