Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.29 KB | None | 0 0
  1. package me.mikigal.autopremium.utils;
  2.  
  3. import org.bukkit.Bukkit;
  4.  
  5. import java.lang.reflect.Constructor;
  6. import java.lang.reflect.Field;
  7. import java.lang.reflect.Modifier;
  8.  
  9. /**
  10.  * Created by mikigal on 19.03.2017.
  11.  */
  12. public class FieldUtils {
  13.  
  14.     public static String bukkitVersion = Bukkit.getServer().getClass().getPackage().getName().substring(23);
  15.     private static Class craftServerClass;
  16.     private static Constructor<?> booleanWrapperConstructor;
  17.     private static Object booleanWrapper;
  18.  
  19.     static{
  20.         try {
  21.             craftServerClass = Class.forName("org.bukkit.craftbukkit." + bukkitVersion + ".CraftServer");
  22.             booleanWrapperConstructor = craftServerClass.getDeclaredClasses()[0].getDeclaredConstructors()[0];
  23.             booleanWrapperConstructor.setAccessible(true);
  24.             booleanWrapper = booleanWrapperConstructor.newInstance(getCraftServer());
  25.         } catch (Exception e) {
  26.             e.printStackTrace();
  27.         }
  28.     }
  29.  
  30.     public static Object getBooleanWrapper(boolean onlineMode){
  31.         set(booleanWrapper, "value", onlineMode);
  32.         return booleanWrapper;
  33.     }
  34.     public static Object getCraftServer(){
  35.         return craftServerClass.cast(Bukkit.getServer());
  36.     }
  37.  
  38.  
  39.     /*Basics*/
  40.     public static void set(Object instance, String fieldName, Object newValue){
  41.         try{
  42.             Field nameField = instance.getClass().getDeclaredField(fieldName);
  43.             setValue(instance, nameField, newValue);
  44.         }catch (Exception e){
  45.             e.printStackTrace();
  46.         }
  47.     }
  48.  
  49.     private static void setValue(Object owner, Field field, Object value){
  50.         try{
  51.             makeModifiable(field);
  52.             field.set(owner, value);
  53.         }catch (Exception e){
  54.             e.printStackTrace();
  55.         }
  56.     }
  57.  
  58.     private static void makeModifiable(Field nameField){
  59.         try{
  60.             nameField.setAccessible(true);
  61.             int modifiers = nameField.getModifiers();
  62.             Field modifierField = nameField.getClass().getDeclaredField("modifiers");
  63.             modifiers = modifiers & ~Modifier.FINAL;
  64.             modifierField.setAccessible(true);
  65.             modifierField.setInt(nameField, modifiers);
  66.         }catch (Exception e){
  67.             e.printStackTrace();
  68.         }
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement