Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.mikigal.autopremium.utils;
- import org.bukkit.Bukkit;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.Modifier;
- /**
- * Created by mikigal on 19.03.2017.
- */
- public class FieldUtils {
- public static String bukkitVersion = Bukkit.getServer().getClass().getPackage().getName().substring(23);
- private static Class craftServerClass;
- private static Constructor<?> booleanWrapperConstructor;
- private static Object booleanWrapper;
- static{
- try {
- craftServerClass = Class.forName("org.bukkit.craftbukkit." + bukkitVersion + ".CraftServer");
- booleanWrapperConstructor = craftServerClass.getDeclaredClasses()[0].getDeclaredConstructors()[0];
- booleanWrapperConstructor.setAccessible(true);
- booleanWrapper = booleanWrapperConstructor.newInstance(getCraftServer());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static Object getBooleanWrapper(boolean onlineMode){
- set(booleanWrapper, "value", onlineMode);
- return booleanWrapper;
- }
- public static Object getCraftServer(){
- return craftServerClass.cast(Bukkit.getServer());
- }
- /*Basics*/
- public static void set(Object instance, String fieldName, Object newValue){
- try{
- Field nameField = instance.getClass().getDeclaredField(fieldName);
- setValue(instance, nameField, newValue);
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- private static void setValue(Object owner, Field field, Object value){
- try{
- makeModifiable(field);
- field.set(owner, value);
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- private static void makeModifiable(Field nameField){
- try{
- nameField.setAccessible(true);
- int modifiers = nameField.getModifiers();
- Field modifierField = nameField.getClass().getDeclaredField("modifiers");
- modifiers = modifiers & ~Modifier.FINAL;
- modifierField.setAccessible(true);
- modifierField.setInt(nameField, modifiers);
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement