Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Created by ExoticDev on 2017-08-16
- */
- import org.bukkit.entity.Player;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- public class Reflection {
- public static Class<?> getClass(PackageType packageType, String className) {
- try {
- return Class.forName(packageType.getPath() + "." + className);
- } catch (Exception exception) {
- exception.printStackTrace();
- }
- return null;
- }
- public static Class<?> getChatSerializer() {
- Class<?> serializer = getClass(PackageType.MINECRAFT_SERVER, "IChatBaseComponent$ChatSerializer");
- Class<?> value = null;
- try {
- value = serializer.newInstance().getClass();
- } catch (InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- }
- return value;
- }
- public static Class<?> getIChatBaseComponent() {
- return getClass(PackageType.MINECRAFT_SERVER, "IChatBaseComponent");
- }
- public static Object getCraftPlayer(Player player) {
- try {
- return getMethod(player.getClass(), "getHandle").invoke(player);
- } catch (IllegalAccessException | InvocationTargetException e) {
- e.printStackTrace();
- }
- return null;
- }
- public static void sendPacket(Player player, Object packet) {
- Object nmsPlayer = getCraftPlayer(player);
- Object playerConnection = getFieldValue(nmsPlayer.getClass(), nmsPlayer, "playerConnection", false);
- try {
- getMethod(playerConnection.getClass(), "sendPacket", getClass(PackageType.MINECRAFT_SERVER, "Packet")).invoke(playerConnection, packet);
- } catch (IllegalAccessException | InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- public static void sendPacket(Object nmsPlayer, Object packet) {
- try {
- Object playerConnection = getField(nmsPlayer.getClass(), "playerConnection", false).get(nmsPlayer);
- getMethod(playerConnection.getClass(), "sendPacket", getClass(PackageType.MINECRAFT_SERVER, "Packet")).invoke(playerConnection, packet);
- } catch (IllegalAccessException | InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- public static Method getMethod(Class<?> clazz, String methodName, Class<?>... parameters) {
- try {
- return clazz.getMethod(methodName, parameters);
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- }
- return null;
- }
- public static Method getMethod(PackageType packageType, String clazz, String methodName, Class<?>... parameters) {
- try {
- return getClass(packageType, clazz).getMethod(methodName, parameters);
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- }
- return null;
- }
- public static Method getDeclaredMethod(Class<?> clazz, String methodName, Class<?>... parameters) {
- try {
- return clazz.getDeclaredMethod(methodName, parameters);
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- }
- return null;
- }
- public static Method getDeclaredMethod(PackageType packageType, String clazz, String methodName, Class<?>... parameters) {
- try {
- return getClass(packageType, clazz).getDeclaredMethod(methodName, parameters);
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- }
- return null;
- }
- public static Field getField(Class<?> clazz, String fieldName, boolean declared) {
- Field field;
- try {
- if(declared) {
- field = clazz.getDeclaredField(fieldName);
- } else {
- field = clazz.getField(fieldName);
- }
- return field;
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- }
- return null;
- }
- public static Object getFieldValue(Class<?> clazz, Object object, String fieldName, boolean declared) {
- Field field;
- if(declared) {
- field = getField(clazz, fieldName, declared);
- field.setAccessible(true);
- } else {
- field = getField(clazz, fieldName, declared);
- }
- try {
- return field.get(object);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- return null;
- }
- public static void setFieldValue(Class<?> clazz, Object object, String fieldName, Object value, boolean declared) {
- Field field;
- try {
- if(declared) {
- field = clazz.getDeclaredField(fieldName);
- field.setAccessible(true);
- } else {
- field = clazz.getField(fieldName);
- }
- field.set(object, value);
- } catch (IllegalAccessException | NoSuchFieldException e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement