diff --git a/InvUI/pom.xml b/InvUI/pom.xml index c13185b..cb937e6 100644 --- a/InvUI/pom.xml +++ b/InvUI/pom.xml @@ -45,7 +45,7 @@ de.studiocode.invui - api + abstraction 0.1-SNAPSHOT diff --git a/InvUI/src/main/java/de/studiocode/invui/InvUI.java b/InvUI/src/main/java/de/studiocode/invui/InvUI.java index 153bb6e..21b18f1 100644 --- a/InvUI/src/main/java/de/studiocode/invui/InvUI.java +++ b/InvUI/src/main/java/de/studiocode/invui/InvUI.java @@ -1,6 +1,6 @@ package de.studiocode.invui; -import de.studiocode.invui.util.reflection.ReflectionUtils; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -10,7 +10,7 @@ import org.bukkit.plugin.Plugin; import java.util.ArrayList; import java.util.List; -import static de.studiocode.invui.util.reflection.ReflectionRegistry.PLUGIN_CLASS_LOADER_PLUGIN_FIELD; +import static de.studiocode.inventoryaccess.util.ReflectionRegistry.PLUGIN_CLASS_LOADER_PLUGIN_FIELD; public class InvUI implements Listener { diff --git a/InvUI/src/main/java/de/studiocode/invui/item/ItemBuilder.java b/InvUI/src/main/java/de/studiocode/invui/item/ItemBuilder.java index 7cfa0e4..c764434 100644 --- a/InvUI/src/main/java/de/studiocode/invui/item/ItemBuilder.java +++ b/InvUI/src/main/java/de/studiocode/invui/item/ItemBuilder.java @@ -5,10 +5,10 @@ import com.google.common.cache.CacheBuilder; import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; import com.mojang.authlib.properties.PropertyMap; +import de.studiocode.inventoryaccess.util.ReflectionRegistry; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import de.studiocode.invui.util.MojangApiUtils; import de.studiocode.invui.util.Pair; -import de.studiocode.invui.util.reflection.ReflectionRegistry; -import de.studiocode.invui.util.reflection.ReflectionUtils; import de.studiocode.invui.window.impl.BaseWindow; import org.bukkit.Bukkit; import org.bukkit.Material; diff --git a/InvUI/src/main/java/de/studiocode/invui/resourcepack/ForceResourcePack.java b/InvUI/src/main/java/de/studiocode/invui/resourcepack/ForceResourcePack.java index ec422b0..bfda54a 100644 --- a/InvUI/src/main/java/de/studiocode/invui/resourcepack/ForceResourcePack.java +++ b/InvUI/src/main/java/de/studiocode/invui/resourcepack/ForceResourcePack.java @@ -1,7 +1,7 @@ package de.studiocode.invui.resourcepack; +import de.studiocode.inventoryaccess.util.ReflectionRegistry; import de.studiocode.invui.InvUI; -import de.studiocode.invui.util.reflection.ReflectionRegistry; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; diff --git a/InvUI/src/main/java/de/studiocode/invui/util/reflection/ReflectionRegistry.java b/InvUI/src/main/java/de/studiocode/invui/util/reflection/ReflectionRegistry.java deleted file mode 100644 index 2d65980..0000000 --- a/InvUI/src/main/java/de/studiocode/invui/util/reflection/ReflectionRegistry.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.studiocode.invui.util.reflection; - -import java.lang.reflect.Field; - -import static de.studiocode.invui.util.reflection.ReflectionUtils.*; - -public class ReflectionRegistry { - - public static final int VERSION = getVersion(); - - public static final String NET_MINECRAFT_SERVER_PACKAGE_PATH = getNMS(); - public static final String CRAFT_BUKKIT_PACKAGE_PATH = getCB(); - public static final String BUKKIT_PACKAGE_PATH = "org.bukkit."; - - // Classes - public static final Class CB_CRAFT_META_SKULL_CLASS = getCBClass("inventory.CraftMetaSkull"); - public static final Class PLUGIN_CLASS_LOADER_CLASS = getBukkitClass("plugin.java.PluginClassLoader"); - - // Fields - public static final Field CB_CRAFT_META_SKULL_PROFILE_FIELD = getField(CB_CRAFT_META_SKULL_CLASS, true, "profile"); - public static final Field PLUGIN_CLASS_LOADER_PLUGIN_FIELD = getField(PLUGIN_CLASS_LOADER_CLASS, true, "plugin"); - -} diff --git a/InvUI/src/main/java/de/studiocode/invui/util/reflection/ReflectionUtils.java b/InvUI/src/main/java/de/studiocode/invui/util/reflection/ReflectionUtils.java deleted file mode 100644 index 08146ec..0000000 --- a/InvUI/src/main/java/de/studiocode/invui/util/reflection/ReflectionUtils.java +++ /dev/null @@ -1,112 +0,0 @@ -package de.studiocode.invui.util.reflection; - -import org.bukkit.Bukkit; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import static de.studiocode.invui.util.reflection.ReflectionRegistry.*; - -public class ReflectionUtils { - - protected static String getCB() { - String path = Bukkit.getServer().getClass().getPackage().getName(); - String version = path.substring(path.lastIndexOf(".") + 1); - return "org.bukkit.craftbukkit." + version + "."; - } - - protected static String getNMS() { - String path = Bukkit.getServer().getClass().getPackage().getName(); - String version = path.substring(path.lastIndexOf(".") + 1); - return "net.minecraft.server." + version + "."; - } - - protected static int getVersion() { - String version = Bukkit.getVersion(); - version = version.substring(version.indexOf("MC: "), version.length() - 1).substring(4); - return Integer.parseInt(version.split("\\.")[1]); - } - - public static Class getBukkitClass(String path) { - try { - return Class.forName(BUKKIT_PACKAGE_PATH + path); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return null; - } - - public static Class getNMSClass(String path) { - try { - return Class.forName(NET_MINECRAFT_SERVER_PACKAGE_PATH + path); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return null; - } - - public static Class getCBClass(String path) { - try { - return Class.forName(CRAFT_BUKKIT_PACKAGE_PATH + path); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return null; - } - - public static Field getField(Class clazz, boolean declared, String name) { - try { - Field field = declared ? clazz.getDeclaredField(name) : clazz.getField(name); - if (declared) field.setAccessible(true); - return field; - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } - - return null; - } - - public static Constructor getConstructor(Class clazz, boolean declared, Class parameterTypes) { - try { - return declared ? clazz.getDeclaredConstructor(parameterTypes) : clazz.getConstructor(parameterTypes); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - return null; - } - - public static Method getMethod(Class clazz, boolean declared, String name, Class... parameterTypes) { - try { - return declared ? clazz.getDeclaredMethod(name, parameterTypes) : clazz.getMethod(name, parameterTypes); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - return null; - } - - public static void setFieldValue(Field field, Object obj, Object value) { - try { - field.set(obj, value); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - - @SuppressWarnings("unchecked") - public static T getFieldValue(Field field, Object obj) { - try { - return (T) field.get(obj); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - - return null; - } - -} diff --git a/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java b/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java index 45a925c..957966c 100644 --- a/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java +++ b/InvUI/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java @@ -1,6 +1,6 @@ package de.studiocode.invui.virtualinventory; -import de.studiocode.inventoryaccess.api.version.InventoryAccess; +import de.studiocode.inventoryaccess.version.InventoryAccess; import de.studiocode.invui.InvUI; import de.studiocode.invui.util.DataUtils; import org.bukkit.configuration.file.YamlConfiguration; diff --git a/InvUI/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java b/InvUI/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java index 0374cac..5221d74 100644 --- a/InvUI/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java +++ b/InvUI/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java @@ -1,6 +1,6 @@ package de.studiocode.invui.window.impl; -import de.studiocode.inventoryaccess.api.version.InventoryAccess; +import de.studiocode.inventoryaccess.version.InventoryAccess; import de.studiocode.invui.InvUI; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.SlotElement; diff --git a/InvUI/src/main/java/de/studiocode/invui/window/impl/merged/split/AnvilSplitWindow.java b/InvUI/src/main/java/de/studiocode/invui/window/impl/merged/split/AnvilSplitWindow.java index f6968b4..886bb80 100644 --- a/InvUI/src/main/java/de/studiocode/invui/window/impl/merged/split/AnvilSplitWindow.java +++ b/InvUI/src/main/java/de/studiocode/invui/window/impl/merged/split/AnvilSplitWindow.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.impl.merged.split; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; -import de.studiocode.inventoryaccess.api.version.InventoryAccess; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.version.InventoryAccess; import de.studiocode.invui.gui.GUI; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.TextComponent; diff --git a/InvUI/src/main/java/de/studiocode/invui/window/impl/single/AnvilWindow.java b/InvUI/src/main/java/de/studiocode/invui/window/impl/single/AnvilWindow.java index d7ccb74..2761241 100644 --- a/InvUI/src/main/java/de/studiocode/invui/window/impl/single/AnvilWindow.java +++ b/InvUI/src/main/java/de/studiocode/invui/window/impl/single/AnvilWindow.java @@ -1,7 +1,7 @@ package de.studiocode.invui.window.impl.single; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; -import de.studiocode.inventoryaccess.api.version.InventoryAccess; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.version.InventoryAccess; import de.studiocode.invui.gui.GUI; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.TextComponent; diff --git a/InventoryAccess/1_14_R1/pom.xml b/InventoryAccess/1_14_R1/pom.xml index ef11e60..1519fc8 100644 --- a/InventoryAccess/1_14_R1/pom.xml +++ b/InventoryAccess/1_14_R1/pom.xml @@ -26,7 +26,7 @@ de.studiocode.invui - api + abstraction ${project.parent.version} diff --git a/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/inventory/AnvilInventoryImpl.java b/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/inventory/AnvilInventoryImpl.java index 9a29cec..12f54ea 100644 --- a/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/inventory/AnvilInventoryImpl.java +++ b/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/inventory/AnvilInventoryImpl.java @@ -1,7 +1,7 @@ package de.studiocode.inventoryaccess.v1_14_R1.inventory; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; -import de.studiocode.inventoryaccess.api.version.ReflectionUtils; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import de.studiocode.inventoryaccess.v1_14_R1.util.InventoryUtilsImpl; import net.md_5.bungee.api.chat.BaseComponent; import net.minecraft.server.v1_14_R1.*; @@ -46,9 +46,9 @@ public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory this.renameHandler = renameHandler; this.player = player; - repairInventory = ReflectionUtils.getValueOfField(REPAIR_INVENTORY_FIELD, this); - resultInventory = ReflectionUtils.getValueOfField(RESULT_INVENTORY_FIELD, this); - ContainerAccess containerAccess = ReflectionUtils.getValueOfField(CONTAINER_ACCESS_FIELD, this); + repairInventory = ReflectionUtils.getFieldValue(REPAIR_INVENTORY_FIELD, this); + resultInventory = ReflectionUtils.getFieldValue(RESULT_INVENTORY_FIELD, this); + ContainerAccess containerAccess = ReflectionUtils.getFieldValue(CONTAINER_ACCESS_FIELD, this); CraftInventoryAnvil inventory = new CraftInventoryAnvil(containerAccess.getLocation(), repairInventory, resultInventory, this); diff --git a/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/util/InventoryUtilsImpl.java b/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/util/InventoryUtilsImpl.java index 516b031..04535a6 100644 --- a/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/util/InventoryUtilsImpl.java +++ b/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/util/InventoryUtilsImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_14_R1.util; -import de.studiocode.inventoryaccess.api.abstraction.util.InventoryUtils; +import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; import net.minecraft.server.v1_14_R1.*; diff --git a/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/util/ItemUtilsImpl.java b/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/util/ItemUtilsImpl.java index 149b3e4..ff2d416 100644 --- a/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/util/ItemUtilsImpl.java +++ b/InventoryAccess/1_14_R1/src/main/java/de/studiocode/inventoryaccess/v1_14_R1/util/ItemUtilsImpl.java @@ -1,7 +1,7 @@ package de.studiocode.inventoryaccess.v1_14_R1.util; -import de.studiocode.inventoryaccess.api.abstraction.util.ItemUtils; -import de.studiocode.inventoryaccess.api.version.ReflectionUtils; +import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_14_R1.ItemStack; import net.minecraft.server.v1_14_R1.NBTCompressedStreamTools; import net.minecraft.server.v1_14_R1.NBTTagCompound; diff --git a/InventoryAccess/1_15_R1/pom.xml b/InventoryAccess/1_15_R1/pom.xml index 021634f..9652c97 100644 --- a/InventoryAccess/1_15_R1/pom.xml +++ b/InventoryAccess/1_15_R1/pom.xml @@ -26,7 +26,7 @@ de.studiocode.invui - api + abstraction ${project.parent.version} diff --git a/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/inventory/AnvilInventoryImpl.java b/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/inventory/AnvilInventoryImpl.java index dba23fd..3f96618 100644 --- a/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/inventory/AnvilInventoryImpl.java +++ b/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/inventory/AnvilInventoryImpl.java @@ -1,7 +1,7 @@ package de.studiocode.inventoryaccess.v1_15_R1.inventory; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; -import de.studiocode.inventoryaccess.api.version.ReflectionUtils; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import de.studiocode.inventoryaccess.v1_15_R1.util.InventoryUtilsImpl; import net.md_5.bungee.api.chat.BaseComponent; import net.minecraft.server.v1_15_R1.*; @@ -46,9 +46,9 @@ public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory this.renameHandler = renameHandler; this.player = player; - repairInventory = ReflectionUtils.getValueOfField(REPAIR_INVENTORY_FIELD, this); - resultInventory = ReflectionUtils.getValueOfField(RESULT_INVENTORY_FIELD, this); - ContainerAccess containerAccess = ReflectionUtils.getValueOfField(CONTAINER_ACCESS_FIELD, this); + repairInventory = ReflectionUtils.getFieldValue(REPAIR_INVENTORY_FIELD, this); + resultInventory = ReflectionUtils.getFieldValue(RESULT_INVENTORY_FIELD, this); + ContainerAccess containerAccess = ReflectionUtils.getFieldValue(CONTAINER_ACCESS_FIELD, this); CraftInventoryAnvil inventory = new CraftInventoryAnvil(containerAccess.getLocation(), repairInventory, resultInventory, this); diff --git a/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/util/InventoryUtilsImpl.java b/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/util/InventoryUtilsImpl.java index d3c610d..4dc93e8 100644 --- a/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/util/InventoryUtilsImpl.java +++ b/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/util/InventoryUtilsImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_15_R1.util; -import de.studiocode.inventoryaccess.api.abstraction.util.InventoryUtils; +import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; import net.minecraft.server.v1_15_R1.*; diff --git a/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/util/ItemUtilsImpl.java b/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/util/ItemUtilsImpl.java index 2fac3c4..f0c0e3b 100644 --- a/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/util/ItemUtilsImpl.java +++ b/InventoryAccess/1_15_R1/src/main/java/de/studiocode/inventoryaccess/v1_15_R1/util/ItemUtilsImpl.java @@ -1,7 +1,7 @@ package de.studiocode.inventoryaccess.v1_15_R1.util; -import de.studiocode.inventoryaccess.api.abstraction.util.ItemUtils; -import de.studiocode.inventoryaccess.api.version.ReflectionUtils; +import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_15_R1.ItemStack; import net.minecraft.server.v1_15_R1.NBTCompressedStreamTools; import net.minecraft.server.v1_15_R1.NBTTagCompound; diff --git a/InventoryAccess/1_16_R1/pom.xml b/InventoryAccess/1_16_R1/pom.xml index b894d7f..a1a55e9 100644 --- a/InventoryAccess/1_16_R1/pom.xml +++ b/InventoryAccess/1_16_R1/pom.xml @@ -26,7 +26,7 @@ de.studiocode.invui - api + abstraction ${project.parent.version} diff --git a/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/inventory/AnvilInventoryImpl.java b/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/inventory/AnvilInventoryImpl.java index a1da112..3f9d299 100644 --- a/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/inventory/AnvilInventoryImpl.java +++ b/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/inventory/AnvilInventoryImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_16_R1.inventory; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.v1_16_R1.util.InventoryUtilsImpl; import net.md_5.bungee.api.chat.BaseComponent; import net.minecraft.server.v1_16_R1.*; diff --git a/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/util/InventoryUtilsImpl.java b/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/util/InventoryUtilsImpl.java index 8ece690..c57391c 100644 --- a/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/util/InventoryUtilsImpl.java +++ b/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/util/InventoryUtilsImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_16_R1.util; -import de.studiocode.inventoryaccess.api.abstraction.util.InventoryUtils; +import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; import net.minecraft.server.v1_16_R1.*; diff --git a/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/util/ItemUtilsImpl.java b/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/util/ItemUtilsImpl.java index 9fb8352..217e2af 100644 --- a/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/util/ItemUtilsImpl.java +++ b/InventoryAccess/1_16_R1/src/main/java/de/studiocode/inventoryaccess/v1_16_R1/util/ItemUtilsImpl.java @@ -1,7 +1,7 @@ package de.studiocode.inventoryaccess.v1_16_R1.util; -import de.studiocode.inventoryaccess.api.abstraction.util.ItemUtils; -import de.studiocode.inventoryaccess.api.version.ReflectionUtils; +import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_16_R1.ItemStack; import net.minecraft.server.v1_16_R1.NBTCompressedStreamTools; import net.minecraft.server.v1_16_R1.NBTTagCompound; diff --git a/InventoryAccess/1_16_R2/pom.xml b/InventoryAccess/1_16_R2/pom.xml index 7505d5e..d16811e 100644 --- a/InventoryAccess/1_16_R2/pom.xml +++ b/InventoryAccess/1_16_R2/pom.xml @@ -26,7 +26,7 @@ de.studiocode.invui - api + abstraction ${project.parent.version} diff --git a/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/inventory/AnvilInventoryImpl.java b/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/inventory/AnvilInventoryImpl.java index 2b91d97..a54c996 100644 --- a/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/inventory/AnvilInventoryImpl.java +++ b/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/inventory/AnvilInventoryImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_16_R2.inventory; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.v1_16_R2.util.InventoryUtilsImpl; import net.md_5.bungee.api.chat.BaseComponent; import net.minecraft.server.v1_16_R2.*; diff --git a/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/util/InventoryUtilsImpl.java b/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/util/InventoryUtilsImpl.java index c33a542..95f2428 100644 --- a/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/util/InventoryUtilsImpl.java +++ b/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/util/InventoryUtilsImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_16_R2.util; -import de.studiocode.inventoryaccess.api.abstraction.util.InventoryUtils; +import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; import net.minecraft.server.v1_16_R2.*; diff --git a/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/util/ItemUtilsImpl.java b/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/util/ItemUtilsImpl.java index 35c2976..8db8c0c 100644 --- a/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/util/ItemUtilsImpl.java +++ b/InventoryAccess/1_16_R2/src/main/java/de/studiocode/inventoryaccess/v1_16_R2/util/ItemUtilsImpl.java @@ -1,7 +1,7 @@ package de.studiocode.inventoryaccess.v1_16_R2.util; -import de.studiocode.inventoryaccess.api.abstraction.util.ItemUtils; -import de.studiocode.inventoryaccess.api.version.ReflectionUtils; +import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_16_R2.ItemStack; import net.minecraft.server.v1_16_R2.NBTCompressedStreamTools; import net.minecraft.server.v1_16_R2.NBTTagCompound; diff --git a/InventoryAccess/1_16_R3/pom.xml b/InventoryAccess/1_16_R3/pom.xml index e700327..82696b6 100644 --- a/InventoryAccess/1_16_R3/pom.xml +++ b/InventoryAccess/1_16_R3/pom.xml @@ -26,7 +26,7 @@ de.studiocode.invui - api + abstraction ${project.parent.version} diff --git a/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/inventory/AnvilInventoryImpl.java b/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/inventory/AnvilInventoryImpl.java index 94994f9..4136d52 100644 --- a/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/inventory/AnvilInventoryImpl.java +++ b/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/inventory/AnvilInventoryImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_16_R3.inventory; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.v1_16_R3.util.InventoryUtilsImpl; import net.md_5.bungee.api.chat.BaseComponent; import net.minecraft.server.v1_16_R3.*; diff --git a/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/util/InventoryUtilsImpl.java b/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/util/InventoryUtilsImpl.java index 3b4a29a..16df54e 100644 --- a/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/util/InventoryUtilsImpl.java +++ b/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/util/InventoryUtilsImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_16_R3.util; -import de.studiocode.inventoryaccess.api.abstraction.util.InventoryUtils; +import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; import net.minecraft.server.v1_16_R3.*; diff --git a/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/util/ItemUtilsImpl.java b/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/util/ItemUtilsImpl.java index 897c318..a4c369e 100644 --- a/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/util/ItemUtilsImpl.java +++ b/InventoryAccess/1_16_R3/src/main/java/de/studiocode/inventoryaccess/v1_16_R3/util/ItemUtilsImpl.java @@ -1,7 +1,7 @@ package de.studiocode.inventoryaccess.v1_16_R3.util; -import de.studiocode.inventoryaccess.api.abstraction.util.ItemUtils; -import de.studiocode.inventoryaccess.api.version.ReflectionUtils; +import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_16_R3.ItemStack; import net.minecraft.server.v1_16_R3.NBTCompressedStreamTools; import net.minecraft.server.v1_16_R3.NBTTagCompound; diff --git a/InventoryAccess/1_17_R1/pom.xml b/InventoryAccess/1_17_R1/pom.xml index 97bb9c7..b16efd1 100644 --- a/InventoryAccess/1_17_R1/pom.xml +++ b/InventoryAccess/1_17_R1/pom.xml @@ -28,7 +28,7 @@ de.studiocode.invui - api + abstraction ${project.parent.version} diff --git a/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/inventory/AnvilInventoryImpl.java b/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/inventory/AnvilInventoryImpl.java index b276e19..caf639f 100644 --- a/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/inventory/AnvilInventoryImpl.java +++ b/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/inventory/AnvilInventoryImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_17_R1.inventory; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.v1_17_R1.util.InventoryUtilsImpl; import net.md_5.bungee.api.chat.BaseComponent; import net.minecraft.core.BlockPos; diff --git a/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/util/InventoryUtilsImpl.java b/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/util/InventoryUtilsImpl.java index d04c798..9acb739 100644 --- a/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/util/InventoryUtilsImpl.java +++ b/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/util/InventoryUtilsImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_17_R1.util; -import de.studiocode.inventoryaccess.api.abstraction.util.InventoryUtils; +import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; import net.minecraft.network.chat.Component; diff --git a/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/util/ItemUtilsImpl.java b/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/util/ItemUtilsImpl.java index e193356..98b2941 100644 --- a/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/util/ItemUtilsImpl.java +++ b/InventoryAccess/1_17_R1/src/main/java/de/studiocode/inventoryaccess/v1_17_R1/util/ItemUtilsImpl.java @@ -1,7 +1,7 @@ package de.studiocode.inventoryaccess.v1_17_R1.util; -import de.studiocode.inventoryaccess.api.abstraction.util.ItemUtils; -import de.studiocode.inventoryaccess.api.version.ReflectionUtils; +import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtIo; import net.minecraft.world.item.ItemStack; diff --git a/InventoryAccess/1_17_R2/pom.xml b/InventoryAccess/1_17_R2/pom.xml index ab24c4f..838900a 100644 --- a/InventoryAccess/1_17_R2/pom.xml +++ b/InventoryAccess/1_17_R2/pom.xml @@ -28,7 +28,7 @@ de.studiocode.invui - api + abstraction ${project.parent.version} diff --git a/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/inventory/AnvilInventoryImpl.java b/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/inventory/AnvilInventoryImpl.java index 410f55f..2804158 100644 --- a/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/inventory/AnvilInventoryImpl.java +++ b/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/inventory/AnvilInventoryImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_17_R2.inventory; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.v1_17_R2.util.InventoryUtilsImpl; import net.md_5.bungee.api.chat.BaseComponent; import net.minecraft.core.BlockPos; diff --git a/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/util/InventoryUtilsImpl.java b/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/util/InventoryUtilsImpl.java index 855aadf..7254dcd 100644 --- a/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/util/InventoryUtilsImpl.java +++ b/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/util/InventoryUtilsImpl.java @@ -1,6 +1,6 @@ package de.studiocode.inventoryaccess.v1_17_R2.util; -import de.studiocode.inventoryaccess.api.abstraction.util.InventoryUtils; +import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; import net.minecraft.network.chat.Component; diff --git a/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/util/ItemUtilsImpl.java b/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/util/ItemUtilsImpl.java index eba8316..5e58ff3 100644 --- a/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/util/ItemUtilsImpl.java +++ b/InventoryAccess/1_17_R2/src/main/java/de/studiocode/inventoryaccess/v1_17_R2/util/ItemUtilsImpl.java @@ -1,7 +1,7 @@ package de.studiocode.inventoryaccess.v1_17_R2.util; -import de.studiocode.inventoryaccess.api.abstraction.util.ItemUtils; -import de.studiocode.inventoryaccess.api.version.ReflectionUtils; +import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtIo; import net.minecraft.world.item.ItemStack; diff --git a/InventoryAccess/api/pom.xml b/InventoryAccess/abstraction/pom.xml similarity index 95% rename from InventoryAccess/api/pom.xml rename to InventoryAccess/abstraction/pom.xml index b533194..9e25dfa 100644 --- a/InventoryAccess/api/pom.xml +++ b/InventoryAccess/abstraction/pom.xml @@ -10,13 +10,13 @@ 4.0.0 - api + abstraction 8 8 - + org.spigotmc diff --git a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/abstraction/inventory/AnvilInventory.java b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/abstraction/inventory/AnvilInventory.java similarity index 93% rename from InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/abstraction/inventory/AnvilInventory.java rename to InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/abstraction/inventory/AnvilInventory.java index 82914e2..3b47e5e 100644 --- a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/abstraction/inventory/AnvilInventory.java +++ b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/abstraction/inventory/AnvilInventory.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.api.abstraction.inventory; +package de.studiocode.inventoryaccess.abstraction.inventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; diff --git a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/abstraction/util/InventoryUtils.java b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/abstraction/util/InventoryUtils.java similarity index 96% rename from InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/abstraction/util/InventoryUtils.java rename to InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/abstraction/util/InventoryUtils.java index 3c6b836..dfe07ea 100644 --- a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/abstraction/util/InventoryUtils.java +++ b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/abstraction/util/InventoryUtils.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.api.abstraction.util; +package de.studiocode.inventoryaccess.abstraction.util; import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.entity.Player; diff --git a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/abstraction/util/ItemUtils.java b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/abstraction/util/ItemUtils.java similarity index 96% rename from InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/abstraction/util/ItemUtils.java rename to InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/abstraction/util/ItemUtils.java index 2ce08c6..d3b05c9 100644 --- a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/abstraction/util/ItemUtils.java +++ b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/abstraction/util/ItemUtils.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.api.abstraction.util; +package de.studiocode.inventoryaccess.abstraction.util; import org.bukkit.inventory.ItemStack; diff --git a/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/util/ReflectionRegistry.java b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/util/ReflectionRegistry.java new file mode 100644 index 0000000..efc24b2 --- /dev/null +++ b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/util/ReflectionRegistry.java @@ -0,0 +1,30 @@ +package de.studiocode.inventoryaccess.util; + +import java.lang.reflect.Field; + +import static de.studiocode.inventoryaccess.util.ReflectionUtils.*; + + +public class ReflectionRegistry { + + public static final int VERSION = getVersionNumber(); + public static final String INV_ACCESS_VERSION = getInventoryAccessVersion(); + + public static final String CRAFT_BUKKIT_PACKAGE_PATH = getCB(); + public static final String BUKKIT_PACKAGE_PATH = "org.bukkit."; + + // Classes + public static final Class CB_CRAFT_META_SKULL_CLASS = getCBClass("inventory.CraftMetaSkull"); + public static final Class PLUGIN_CLASS_LOADER_CLASS = getBukkitClass("plugin.java.PluginClassLoader"); + public static final Class CB_CRAFT_META_ITEM_CLASS = getCBClass("inventory.CraftMetaItem"); + public static final Class CB_CRAFT_ITEM_STACK_CLASS = getCBClass("inventory.CraftItemStack"); + + // Fields + public static final Field CB_CRAFT_META_SKULL_PROFILE_FIELD = getField(CB_CRAFT_META_SKULL_CLASS, true, "profile"); + public static final Field PLUGIN_CLASS_LOADER_PLUGIN_FIELD = getField(PLUGIN_CLASS_LOADER_CLASS, true, "plugin"); + public static final Field CB_CRAFT_META_ITEM_INTERNAL_TAG_FIELD = getField(CB_CRAFT_META_ITEM_CLASS, true, "internalTag"); + public static final Field CB_CRAFT_META_ITEM_DISPLAY_NAME_FIELD = getField(CB_CRAFT_META_ITEM_CLASS, true, "displayName"); + public static final Field CB_CRAFT_META_ITEM_LORE_FIELD = getField(CB_CRAFT_META_ITEM_CLASS, true, "lore"); + public static final Field CB_CRAFT_ITEM_STACK_HANDLE_FIELD = ReflectionUtils.getField(CB_CRAFT_ITEM_STACK_CLASS, true, "handle"); + +} diff --git a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/version/ReflectionUtils.java b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/util/ReflectionUtils.java similarity index 64% rename from InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/version/ReflectionUtils.java rename to InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/util/ReflectionUtils.java index 7d57c63..24a91c5 100644 --- a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/version/ReflectionUtils.java +++ b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/util/ReflectionUtils.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.api.version; +package de.studiocode.inventoryaccess.util; import org.bukkit.Bukkit; @@ -7,12 +7,24 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -@SuppressWarnings({"unchecked", "UnusedReturnValue"}) +import static de.studiocode.inventoryaccess.util.ReflectionRegistry.*; + +@SuppressWarnings({"unchecked", "unused"}) public class ReflectionUtils { - private static final String VERSION = getVersion(); + protected static String getCB() { + String path = Bukkit.getServer().getClass().getPackage().getName(); + String version = path.substring(path.lastIndexOf(".") + 1); + return "org.bukkit.craftbukkit." + version + "."; + } - private static String getVersion() { + protected static int getVersionNumber() { + String version = Bukkit.getVersion(); + version = version.substring(version.indexOf("MC: "), version.length() - 1).substring(4); + return Integer.parseInt(version.split("\\.")[1]); + } + + protected static String getInventoryAccessVersion() { String version = Bukkit.getVersion(); version = version.substring(version.indexOf("MC: "), version.length() - 1).substring(4); @@ -26,12 +38,20 @@ public class ReflectionUtils { public static Class getImplClass(String path) { try { - return (Class) Class.forName("de.studiocode.inventoryaccess." + VERSION + "." + path); + return (Class) Class.forName("de.studiocode.inventoryaccess." + INV_ACCESS_VERSION + "." + path); } catch (ClassNotFoundException e) { - throw new UnsupportedOperationException("Your version (" + VERSION + ") is not supported by InventoryAccess"); + throw new UnsupportedOperationException("Your version (" + INV_ACCESS_VERSION + ") is not supported by InventoryAccess"); } } + public static Class getBukkitClass(String path) { + return getClass(BUKKIT_PACKAGE_PATH + path); + } + + public static Class getCBClass(String path) { + return getClass(CRAFT_BUKKIT_PACKAGE_PATH + path); + } + public static Class getClass(String path) { try { return (Class) Class.forName(path); @@ -42,9 +62,21 @@ public class ReflectionUtils { return null; } - public static Constructor getConstructor(Class clazz, Class... parameterTypes) { + public static Field getField(Class clazz, boolean declared, String name) { try { - return clazz.getConstructor(parameterTypes); + Field field = declared ? clazz.getDeclaredField(name) : clazz.getField(name); + if (declared) field.setAccessible(true); + return field; + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + + return null; + } + + public static Constructor getConstructor(Class clazz, boolean declared, Class... parameterTypes) { + try { + return declared ? clazz.getDeclaredConstructor(parameterTypes) : clazz.getConstructor(parameterTypes); } catch (NoSuchMethodException e) { e.printStackTrace(); } @@ -72,33 +104,9 @@ public class ReflectionUtils { return null; } - public static Field getField(Class clazz, boolean declared, String name) { - try { - Field field = declared ? clazz.getDeclaredField(name) : clazz.getField(name); - if (declared) field.setAccessible(true); - return field; - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } - - return null; - } - - public static T getValueOfField(Field field, Object obj) { - try { - return (T) field.get(obj); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - - return null; - } - public static Method getMethod(Class clazz, boolean declared, String name, Class... parameterTypes) { try { - Method method = declared ? clazz.getDeclaredMethod(name, parameterTypes) : clazz.getMethod(name, parameterTypes); - if (declared) method.setAccessible(true); - return method; + return declared ? clazz.getDeclaredMethod(name, parameterTypes) : clazz.getMethod(name, parameterTypes); } catch (NoSuchMethodException e) { e.printStackTrace(); } @@ -116,4 +124,23 @@ public class ReflectionUtils { return null; } + public static void setFieldValue(Field field, Object obj, Object value) { + try { + field.set(obj, value); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + @SuppressWarnings("unchecked") + public static T getFieldValue(Field field, Object obj) { + try { + return (T) field.get(obj); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + return null; + } + } diff --git a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/version/InventoryAccess.java b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/version/InventoryAccess.java similarity index 84% rename from InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/version/InventoryAccess.java rename to InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/version/InventoryAccess.java index ac3a6b5..b55f211 100644 --- a/InventoryAccess/api/src/main/java/de/studiocode/inventoryaccess/api/version/InventoryAccess.java +++ b/InventoryAccess/abstraction/src/main/java/de/studiocode/inventoryaccess/version/InventoryAccess.java @@ -1,8 +1,9 @@ -package de.studiocode.inventoryaccess.api.version; +package de.studiocode.inventoryaccess.version; -import de.studiocode.inventoryaccess.api.abstraction.inventory.AnvilInventory; -import de.studiocode.inventoryaccess.api.abstraction.util.InventoryUtils; -import de.studiocode.inventoryaccess.api.abstraction.util.ItemUtils; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; +import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; +import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.entity.Player; @@ -16,7 +17,7 @@ public class InventoryAccess { private static final Class ANVIL_INVENTORY_CLASS = ReflectionUtils.getImplClass("inventory.AnvilInventoryImpl"); private static final Constructor ANVIL_INVENTORY_CONSTRUCTOR - = ReflectionUtils.getConstructor(ANVIL_INVENTORY_CLASS, Player.class, BaseComponent[].class, Consumer.class); + = ReflectionUtils.getConstructor(ANVIL_INVENTORY_CLASS, false, Player.class, BaseComponent[].class, Consumer.class); private static final InventoryUtils INVENTORY_UTILS = ReflectionUtils.constructEmpty(INVENTORY_UTILS_CLASS); private static final ItemUtils ITEM_UTILS = ReflectionUtils.constructEmpty(ITEM_UTILS_CLASS); diff --git a/pom.xml b/pom.xml index 82b688d..3e2b334 100644 --- a/pom.xml +++ b/pom.xml @@ -36,8 +36,8 @@ InventoryAccess/1_16_R3 InventoryAccess/1_17_R1 InventoryAccess/1_17_R2 - InventoryAccess/api InvUI + InventoryAccess/abstraction