This commit is contained in:
Brianna O'Keefe 2019-02-05 23:57:38 -05:00
parent 2130776df9
commit bdda96eb8e
21 changed files with 131 additions and 134 deletions

View File

@ -1,8 +1,8 @@
package com.songoda.epicbuckets.util.gui;
package com.songoda.epicbuckets.utils.gui;
import com.songoda.epicbuckets.EpicBuckets;
import com.songoda.epicbuckets.util.ServerVersion;
import com.songoda.epicbuckets.util.version.NMSUtil;
import com.songoda.epicbuckets.utils.ServerVersion;
import com.songoda.epicbuckets.utils.version.NMSUtil;
import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
@ -94,7 +94,8 @@ public class AbstractAnvilGUI {
if (!inv.equals(AbstractAnvilGUI.this.inv)) return;
inv.clear();
OnClose onClose = getOnClose();
if (EpicBuckets.getInstance().isServerVersionAtLeast(ServerVersion.V1_9)) player.playSound(player.getLocation(), closeSound, 1F, 1F);
if (EpicBuckets.getInstance().isServerVersionAtLeast(ServerVersion.V1_9))
player.playSound(player.getLocation(), closeSound, 1F, 1F);
Bukkit.getScheduler().scheduleSyncDelayedTask(EpicBuckets.getInstance(), () -> {
if (onClose != null) onClose.OnClose(player, inv);
destroy();

View File

@ -1,8 +1,8 @@
package com.songoda.epicbuckets.util.gui;
package com.songoda.epicbuckets.utils.gui;
import com.songoda.arconix.api.methods.formatting.TextComponent;
import com.songoda.epicbuckets.EpicBuckets;
import com.songoda.epicbuckets.util.ServerVersion;
import com.songoda.epicbuckets.utils.ServerVersion;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.gui;
package com.songoda.epicbuckets.utils.gui;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.gui;
package com.songoda.epicbuckets.utils.gui;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;

View File

@ -1,7 +1,7 @@
package com.songoda.epicbuckets.util.gui;
package com.songoda.epicbuckets.utils.gui;
import com.songoda.epicbuckets.EpicBuckets;
import com.songoda.epicbuckets.util.ServerVersion;
import com.songoda.epicbuckets.utils.ServerVersion;
import org.bukkit.Sound;
import org.bukkit.event.inventory.ClickType;

View File

@ -1,38 +1,36 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import org.bukkit.Bukkit;
public enum ClassWrapper {
CRAFT_ITEMSTACK("org.bukkit.craftbukkit.", ".inventory.CraftItemStack"),
CRAFT_ENTITY("org.bukkit.craftbukkit.", ".entity.CraftEntity"),
CRAFT_WORLD("org.bukkit.craftbukkit.", ".CraftWorld"),
NMS_NBTBASE("net.minecraft.server.", ".NBTBase"),
NMS_NBTTAGSTRING("net.minecraft.server.", ".NBTTagString"),
NMS_ITEMSTACK("net.minecraft.server.", ".ItemStack"),
NMS_NBTTAGCOMPOUND("net.minecraft.server.", ".NBTTagCompound"),
NMS_NBTTAGLIST("net.minecraft.server.", ".NBTTagList"),
NMS_NBTCOMPRESSEDSTREAMTOOLS("net.minecraft.server.", ".NBTCompressedStreamTools"),
NMS_MOJANGSONPARSER("net.minecraft.server.", ".MojangsonParser"),
NMS_TILEENTITY("net.minecraft.server.", ".TileEntity"),
NMS_BLOCKPOSITION("net.minecraft.server.", ".BlockPosition"),
NMS_WORLD("net.minecraft.server.", ".WorldServer"),
NMS_ENTITY("net.minecraft.server.", ".Entity"),
;
CRAFT_ITEMSTACK("org.bukkit.craftbukkit.", ".inventory.CraftItemStack"),
CRAFT_ENTITY("org.bukkit.craftbukkit.", ".entity.CraftEntity"),
CRAFT_WORLD("org.bukkit.craftbukkit.", ".CraftWorld"),
NMS_NBTBASE("net.minecraft.server.", ".NBTBase"),
NMS_NBTTAGSTRING("net.minecraft.server.", ".NBTTagString"),
NMS_ITEMSTACK("net.minecraft.server.", ".ItemStack"),
NMS_NBTTAGCOMPOUND("net.minecraft.server.", ".NBTTagCompound"),
NMS_NBTTAGLIST("net.minecraft.server.", ".NBTTagList"),
NMS_NBTCOMPRESSEDSTREAMTOOLS("net.minecraft.server.", ".NBTCompressedStreamTools"),
NMS_MOJANGSONPARSER("net.minecraft.server.", ".MojangsonParser"),
NMS_TILEENTITY("net.minecraft.server.", ".TileEntity"),
NMS_BLOCKPOSITION("net.minecraft.server.", ".BlockPosition"),
NMS_WORLD("net.minecraft.server.", ".WorldServer"),
NMS_ENTITY("net.minecraft.server.", ".Entity"),;
private Class<?> clazz;
ClassWrapper(String pre, String suffix){
try{
ClassWrapper(String pre, String suffix) {
try {
String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
clazz = Class.forName(pre + version + suffix);
}catch(Exception ex){
} catch (Exception ex) {
ex.printStackTrace();
}
}
public Class<?> getClazz(){
public Class<?> getClazz() {
return clazz;
}

View File

@ -1,6 +1,6 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import com.songoda.epicbuckets.util.itemnbtapi.utils.MinecraftVersion;
import com.songoda.epicbuckets.utils.itemnbtapi.utils.MinecraftVersion;
import java.util.Set;
@ -31,7 +31,7 @@ public class NBTCompound {
return parent;
}
public void mergeCompound(NBTCompound comp){
public void mergeCompound(NBTCompound comp) {
NBTReflectionUtil.addOtherNBTCompound(this, comp);
}
@ -133,7 +133,7 @@ public class NBTCompound {
public Boolean hasKey(String key) {
Boolean b = (Boolean) NBTReflectionUtil.getData(this, ReflectionMethod.COMPOUND_HAS_KEY, key);
if(b == null)return false;
if (b == null) return false;
return b;
}
@ -146,7 +146,7 @@ public class NBTCompound {
}
public NBTCompound addCompound(String name) {
if(getType(name) == NBTType.NBTTagCompound)return getCompound(name);
if (getType(name) == NBTType.NBTTagCompound) return getCompound(name);
NBTReflectionUtil.addNBTTagCompound(this, name);
return getCompound(name);
}
@ -164,7 +164,7 @@ public class NBTCompound {
public NBTType getType(String name) {
if (MinecraftVersion.getVersion() == MinecraftVersion.MC1_7_R4) return null;
Object o = NBTReflectionUtil.getData(this, ReflectionMethod.COMPOUND_GET_TYPE, name);
if(o == null)return null;
if (o == null) return null;
return NBTType.valueOf((byte) o);
}
@ -191,9 +191,9 @@ public class NBTCompound {
}
}
public String asNBTString(){
public String asNBTString() {
Object comp = NBTReflectionUtil.gettoCompount(getCompound(), this);
if(comp == null)return "{}";
if (comp == null) return "{}";
return comp.toString();
}

View File

@ -1,6 +1,6 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
public class NBTContainer extends NBTCompound{
public class NBTContainer extends NBTCompound {
private Object nbt;
@ -9,16 +9,16 @@ public class NBTContainer extends NBTCompound{
nbt = ObjectCreator.NMS_NBTTAGCOMPOUND.getInstance();
}
protected NBTContainer(Object nbt){
protected NBTContainer(Object nbt) {
super(null, null);
this.nbt = nbt;
}
public NBTContainer(String nbtString) throws IllegalArgumentException {
super(null, null);
try{
try {
nbt = ReflectionMethod.PARSE_NBT.run(null, nbtString);
}catch(Exception ex){
} catch (Exception ex) {
ex.printStackTrace();
throw new IllegalArgumentException("Malformed Json: " + ex.getMessage());
}

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import org.bukkit.entity.Entity;

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import java.io.File;
import java.io.FileInputStream;

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import org.bukkit.inventory.ItemStack;
@ -8,12 +8,20 @@ public class NBTItem extends NBTCompound {
public NBTItem(ItemStack item) {
super(null, null);
if(item == null){
if (item == null) {
throw new NullPointerException("ItemStack can't be null!");
}
bukkitItem = item.clone();
}
public static NBTContainer convertItemtoNBT(ItemStack item) {
return NBTReflectionUtil.convertNMSItemtoNBTCompound(ReflectionMethod.ITEMSTACK_NMSCOPY.run(null, item));
}
public static ItemStack convertNBTtoItem(NBTCompound comp) {
return (ItemStack) ReflectionMethod.ITEMSTACK_BUKKITMIRROR.run(null, NBTReflectionUtil.convertNBTCompoundtoNMSItem(comp));
}
protected Object getCompound() {
return NBTReflectionUtil.getItemRootNBTTagCompound(ReflectionMethod.ITEMSTACK_NMSCOPY.run(null, bukkitItem));
}
@ -32,22 +40,13 @@ public class NBTItem extends NBTCompound {
bukkitItem = item;
}
/**
* This may return true even when the NBT is empty.
*
* @return Does the ItemStack have a NBTCompound.
*/
public boolean hasNBTData(){
public boolean hasNBTData() {
return getCompound() != null;
}
public static NBTContainer convertItemtoNBT(ItemStack item){
return NBTReflectionUtil.convertNMSItemtoNBTCompound(ReflectionMethod.ITEMSTACK_NMSCOPY.run(null, item));
}
public static ItemStack convertNBTtoItem(NBTCompound comp){
return (ItemStack) ReflectionMethod.ITEMSTACK_BUKKITMIRROR.run(null, NBTReflectionUtil.convertNBTCompoundtoNMSItem(comp));
}
}

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
public class NBTList {

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import java.util.HashSet;
import java.util.Set;

View File

@ -1,4 +1,9 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import com.songoda.epicbuckets.utils.itemnbtapi.utils.GsonWrapper;
import com.songoda.epicbuckets.utils.itemnbtapi.utils.MinecraftVersion;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Entity;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@ -7,11 +12,6 @@ import java.lang.reflect.Method;
import java.util.Set;
import java.util.Stack;
import com.songoda.epicbuckets.util.itemnbtapi.utils.GsonWrapper;
import com.songoda.epicbuckets.util.itemnbtapi.utils.MinecraftVersion;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Entity;
public class NBTReflectionUtil {
public static Object getNMSEntity(Entity entity) {
@ -61,11 +61,11 @@ public class NBTReflectionUtil {
@SuppressWarnings("rawtypes")
Class clazz = ClassWrapper.NMS_ITEMSTACK.getClazz();
try {
if(MinecraftVersion.getVersion().getVersionId() >= MinecraftVersion.MC1_12_R1.getVersionId()){
if (MinecraftVersion.getVersion().getVersionId() >= MinecraftVersion.MC1_12_R1.getVersionId()) {
Constructor<?> constructor = clazz.getConstructor(ClassWrapper.NMS_NBTTAGCOMPOUND.getClazz());
constructor.setAccessible(true);
return constructor.newInstance(nbtcompound.getCompound());
}else{
} else {
Method method = clazz.getMethod("createStack", ClassWrapper.NMS_NBTTAGCOMPOUND.getClazz());
method.setAccessible(true);
return method.invoke(null, nbtcompound.getCompound());

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import org.bukkit.block.BlockState;

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
public enum NBTType {
NBTTagEnd(0),
@ -14,14 +14,10 @@ public enum NBTType {
NBTTagList(9),
NBTTagCompound(10);
NBTType(int i) {
id = i;
}
private final int id;
public int getId() {
return id;
NBTType(int i) {
id = i;
}
public static NBTType valueOf(int id) {
@ -31,4 +27,8 @@ public enum NBTType {
return NBTType.NBTTagEnd;
}
public int getId() {
return id;
}
}

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import java.lang.reflect.Constructor;
@ -8,18 +8,18 @@ public enum ObjectCreator {
private Constructor<?> construct;
ObjectCreator(Class<?> clazz, Class<?>... args){
try{
ObjectCreator(Class<?> clazz, Class<?>... args) {
try {
construct = clazz.getConstructor(args);
}catch(Exception ex){
} catch (Exception ex) {
ex.printStackTrace();
}
}
public Object getInstance(Object... args){
try{
public Object getInstance(Object... args) {
try {
return construct.newInstance(args);
}catch(Exception ex){
} catch (Exception ex) {
ex.printStackTrace();
}
return null;

View File

@ -1,12 +1,12 @@
package com.songoda.epicbuckets.util.itemnbtapi;
package com.songoda.epicbuckets.utils.itemnbtapi;
import com.songoda.epicbuckets.utils.itemnbtapi.utils.MinecraftVersion;
import org.bukkit.inventory.ItemStack;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Method;
import com.songoda.epicbuckets.util.itemnbtapi.utils.MinecraftVersion;
import org.bukkit.inventory.ItemStack;
public enum ReflectionMethod {
COMPOUND_SET_FLOAT(ClassWrapper.NMS_NBTTAGCOMPOUND.getClazz(), new Class[]{String.class, float.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "setFloat")),
@ -63,38 +63,36 @@ public enum ReflectionMethod {
NBTFILE_WRITE(ClassWrapper.NMS_NBTCOMPRESSEDSTREAMTOOLS.getClazz(), new Class[]{ClassWrapper.NMS_NBTTAGCOMPOUND.getClazz(), OutputStream.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "a")), //FIXME: No Spigot mapping!
PARSE_NBT(ClassWrapper.NMS_MOJANGSONPARSER.getClazz(), new Class[]{String.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "parse")),
;
PARSE_NBT(ClassWrapper.NMS_MOJANGSONPARSER.getClazz(), new Class[]{String.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "parse")),;
private Since targetVersion;
private Method method;
private boolean loaded = false;
private boolean compatible = false;
ReflectionMethod(Class<?> targetClass, Class<?>[] args, MinecraftVersion addedSince, Since... methodnames){
ReflectionMethod(Class<?> targetClass, Class<?>[] args, MinecraftVersion addedSince, Since... methodnames) {
MinecraftVersion server = MinecraftVersion.getVersion();
if(server.compareTo(addedSince) < 0)return;
if (server.compareTo(addedSince) < 0) return;
compatible = true;
Since target = methodnames[0];
for(Since s : methodnames){
if(s.version.getVersionId() <= server.getVersionId() && target.version.getVersionId() < s.version.getVersionId())
for (Since s : methodnames) {
if (s.version.getVersionId() <= server.getVersionId() && target.version.getVersionId() < s.version.getVersionId())
target = s;
}
targetVersion = target;
try{
try {
method = targetClass.getMethod(targetVersion.name, args);
method.setAccessible(true);
loaded = true;
}catch(NullPointerException | NoSuchMethodException | SecurityException ex){
} catch (NullPointerException | NoSuchMethodException | SecurityException ex) {
ex.printStackTrace();
}
}
public Object run(Object target, Object... args){
try{
public Object run(Object target, Object... args) {
try {
return method.invoke(target, args);
}catch(Exception ex){
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
@ -108,9 +106,10 @@ public enum ReflectionMethod {
return compatible;
}
public static class Since{
public static class Since {
public final MinecraftVersion version;
public final String name;
public Since(MinecraftVersion version, String name) {
this.version = version;
this.name = name;

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi.utils;
package com.songoda.epicbuckets.utils.itemnbtapi.utils;
import com.google.gson.Gson;

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.itemnbtapi.utils;
package com.songoda.epicbuckets.utils.itemnbtapi.utils;
import org.bukkit.Bukkit;
@ -23,10 +23,6 @@ public enum MinecraftVersion {
this.versionId = versionId;
}
public int getVersionId() {
return versionId;
}
public static MinecraftVersion getVersion() {
if (version != null) {
return version;
@ -59,4 +55,8 @@ public enum MinecraftVersion {
return hasGsonSupport;
}
public int getVersionId() {
return versionId;
}
}

View File

@ -1,4 +1,4 @@
package com.songoda.epicbuckets.util.version;
package com.songoda.epicbuckets.utils.version;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;