51 lines
1.8 KiB
Java
51 lines
1.8 KiB
Java
package fr.xephi.authme.util;
|
|
|
|
import org.bukkit.Location;
|
|
import org.bukkit.entity.Player;
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
|
|
//
|
|
//public class TeleportUtils {
|
|
// public static void teleport(Player player, Location location) {
|
|
// try {
|
|
// Class<?> paperClass = Class.forName("com.destroystokyo.paper.PaperConfig");
|
|
// // Paper API is loaded, use teleportAsync
|
|
// Method teleportAsyncMethod = player.getClass().getMethod("teleportAsync", Location.class);
|
|
// teleportAsyncMethod.setAccessible(true);
|
|
// teleportAsyncMethod.invoke(player, location);
|
|
// } catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {
|
|
// // Paper API is not loaded, use normal teleport
|
|
// player.teleport(location);
|
|
// }
|
|
// }
|
|
//}
|
|
public class TeleportUtils {
|
|
private static Method teleportAsyncMethod;
|
|
|
|
static {
|
|
try {//Detect Paper class
|
|
Class<?> paperClass = Class.forName("com.destroystokyo.paper.PaperConfig");
|
|
teleportAsyncMethod = Player.class.getMethod("teleportAsync", Location.class);
|
|
// if detected,use teleportAsync()
|
|
} catch (ClassNotFoundException | NoSuchMethodException e) {
|
|
teleportAsyncMethod = null;
|
|
//if not, set method to null
|
|
}
|
|
}
|
|
|
|
public static void teleport(Player player, Location location) {
|
|
if (teleportAsyncMethod != null) {
|
|
try {
|
|
teleportAsyncMethod.setAccessible(true);
|
|
teleportAsyncMethod.invoke(player, location);
|
|
} catch (IllegalAccessException | InvocationTargetException e) {
|
|
player.teleport(location);
|
|
}
|
|
} else {
|
|
player.teleport(location);
|
|
}
|
|
}
|
|
}
|