diff --git a/BukkitUtils/pom.xml b/BukkitUtils/pom.xml
index 5153018..e93947d 100644
--- a/BukkitUtils/pom.xml
+++ b/BukkitUtils/pom.xml
@@ -10,24 +10,25 @@
4.0.0
bukkitutils
- 1.7-SNAPSHOT
+ 1.8-SNAPSHOT
destroystokyo-repo
https://repo.destroystokyo.com/repository/maven-public//
-
- spigot-repo
- https://hub.spigotmc.org/nexus/content/repositories/snapshots/
-
eu.mikroskeem
- reflect
- 1.1-SNAPSHOT
+ shuriken.reflect
+ 0.0.1-SNAPSHOT
+
+
+ eu.mikroskeem
+ shuriken.instrumentation
+ 0.0.1-SNAPSHOT
com.destroystokyo.paper
@@ -35,22 +36,11 @@
1.11.2-R0.1-SNAPSHOT
provided
-
- org.bukkit
- bukkit
- 1.11.2-R0.1-SNAPSHOT
- provided
-
org.projectlombok
lombok
- 1.16.10
+ 1.16.12
provided
-
- org.jetbrains
- annotations-java5
- RELEASE
-
diff --git a/BukkitUtils/src/main/java/eu/mikroskeem/utils/bukkit/PlayerUtils.java b/BukkitUtils/src/main/java/eu/mikroskeem/utils/bukkit/PlayerUtils.java
index 950a666..adb16aa 100644
--- a/BukkitUtils/src/main/java/eu/mikroskeem/utils/bukkit/PlayerUtils.java
+++ b/BukkitUtils/src/main/java/eu/mikroskeem/utils/bukkit/PlayerUtils.java
@@ -1,11 +1,11 @@
package eu.mikroskeem.utils.bukkit;
-import eu.mikroskeem.utils.reflect.Reflect;
+import eu.mikroskeem.shuriken.reflect.Reflect;
+import eu.mikroskeem.shuriken.reflect.wrappers.ClassWrapper;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
import static com.google.common.base.Preconditions.checkNotNull;
import static eu.mikroskeem.utils.bukkit.ServerUtils.getNmsVersion;
@@ -19,20 +19,22 @@ public class PlayerUtils {
* @param player Player who ping to query
* @return Player's ping (-1 if reflection failed)
*/
- public static int getNMSPing(@NotNull Player player){
+ @SuppressWarnings("unchecked")
+ public static int getNMSPing(@NotNull Player player){
try {
String nmsVer = getNmsVersion();
- Class> craftPlayerClass = checkNotNull(Reflect.getClass(
- String.format("org.bukkit.craftbukkit.%s.entity.CraftPlayer", nmsVer)));
- Class> craftEntityPlayerClass = checkNotNull(Reflect.getClass(
- String.format("net.minecraft.server.%s.EntityPlayer", nmsVer)));
- Method getHandle = checkNotNull(Reflect.getMethod(craftPlayerClass, "getHandle"));
- Object handle = checkNotNull(Reflect.invokeMethod(getHandle, player));
- Field pingField = checkNotNull(Reflect.getField(craftEntityPlayerClass, "ping"));
- return (Integer) checkNotNull(Reflect.readField(pingField, handle));
- }
- catch (NullPointerException ignored){
- return -1;
+ ClassWrapper craftPlayerClass = (ClassWrapper) checkNotNull(Reflect.getClass(
+ String.format("org.bukkit.craftbukkit.%s.entity.CraftPlayer", nmsVer)).orElse(null))
+ .setClassInstance(player);
+ ClassWrapper nmsEntityPlayerClass = (ClassWrapper) checkNotNull(Reflect.getClass(
+ String.format("net.minecraft.server.%s.EntityPlayer", nmsVer)).orElse(null));
+ NMSPlayer nmsPlayer = craftPlayerClass
+ .invokeMethod("getHandle", nmsEntityPlayerClass.getWrappedClass());
+ nmsEntityPlayerClass.setClassInstance(nmsPlayer);
+ return checkNotNull(nmsEntityPlayerClass.getField("ping", int.class).orElse(null)).read();
}
+ catch (NullPointerException|NoSuchFieldException|NoSuchMethodException|
+ IllegalAccessException|InvocationTargetException ignored){}
+ return -1;
}
}
diff --git a/BukkitUtils/src/main/java/eu/mikroskeem/utils/bukkit/ServerUtils.java b/BukkitUtils/src/main/java/eu/mikroskeem/utils/bukkit/ServerUtils.java
index 83de0d6..1b81884 100644
--- a/BukkitUtils/src/main/java/eu/mikroskeem/utils/bukkit/ServerUtils.java
+++ b/BukkitUtils/src/main/java/eu/mikroskeem/utils/bukkit/ServerUtils.java
@@ -1,13 +1,17 @@
package eu.mikroskeem.utils.bukkit;
-import eu.mikroskeem.utils.reflect.Reflect;
+import eu.mikroskeem.shuriken.instrumentation.validate.ClassDescriptor;
+import eu.mikroskeem.shuriken.instrumentation.validate.FieldDescriptor;
+import eu.mikroskeem.shuriken.instrumentation.validate.Validate;
+import eu.mikroskeem.shuriken.reflect.Reflect;
+import eu.mikroskeem.shuriken.reflect.wrappers.ClassWrapper;
+import eu.mikroskeem.shuriken.reflect.wrappers.FieldWrapper;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.java.JavaPluginLoader;
import org.jetbrains.annotations.Nullable;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -21,18 +25,25 @@ public class ServerUtils {
* Will use PaperSpigot's API if available, reflection otherwise
* @return double array of TPS (not rounded!), values are -1 if reflection failed
*/
- public static double[] getTPS(){
- if(Reflect.getMethod(Bukkit.class, "getTps") != null) {
- return Bukkit.getTPS();
- } else {
+ @SuppressWarnings("unchecked")
+ public static double[] getTPS(){
+ Class _t = (Class)double[].class;
+ try {
+ return Reflect.wrapClass(Bukkit.class).invokeMethod("getTPS", double[].class);
+ } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
try {
- Class> MinecraftServerClass = checkNotNull(Reflect.getClass(
- String.format("net.minecraft.server.%s.MinecraftServer", getNmsVersion())));
- Method getServer = checkNotNull(Reflect.getMethod(MinecraftServerClass, "getServer"));
- Field recentTPS = checkNotNull(Reflect.getField(MinecraftServerClass, "recentTps"));
- Object server = checkNotNull(Reflect.invokeMethod(getServer, null));
- return (double[]) checkNotNull(Reflect.readField(recentTPS, server));
- } catch (NullPointerException ignored){}
+ Optional> minecraftServerClassOpt = Reflect.getClass(String.format(
+ "net.minecraft.server.%s.MinecraftServer", getNmsVersion()
+ ));
+ if (minecraftServerClassOpt.isPresent()) {
+ ClassWrapper> minecraftServerClass = minecraftServerClassOpt.get();
+ minecraftServerClass.invokeMethod("getServer", minecraftServerClass.getWrappedClass());
+ Optional> recentTpsOpt = minecraftServerClass.getField("recentTps", _t);
+ if(recentTpsOpt.isPresent())
+ return (double[]) recentTpsOpt.get().read();
+ }
+ }
+ catch (NoSuchMethodException|NoSuchFieldException|InvocationTargetException|IllegalAccessException ignored){}
}
return new double[]{-1, -1, -1};
}
@@ -54,34 +65,42 @@ public class ServerUtils {
*/
JavaPluginLoader pl = (JavaPluginLoader) plugin.getPluginLoader();
try {
- Field loadersField = checkNotNull(Reflect.getField(pl.getClass(), "loaders"));
- switch (getNmsVersion()){
- case "v1_8_R3":
- case "v1_9_R1":
- case "v1_9_R2":
- try {
- Map loaderMap = (Map)
- checkNotNull(Reflect.readField(loadersField, pl));
+ Optional> loadersFieldOpt = Reflect
+ .wrapClass(pl.getClass())
+ .setClassInstance(pl)
+ .getField("loaders", Object.class);
+ if(loadersFieldOpt.isPresent()) {
+ FieldWrapper