remove unused code
This commit is contained in:
-146
@@ -1,146 +0,0 @@
|
||||
package pers.xanadu.enderdragon.nms.NMSItem.v1_12_R1;
|
||||
|
||||
import net.minecraft.server.v1_12_R1.*;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class CraftNBTTagConfigSerializer {
|
||||
private static final Pattern ARRAY = Pattern.compile("^\\[.*]");
|
||||
private static final Pattern INTEGER = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)?i", 2);
|
||||
private static final Pattern DOUBLE = Pattern.compile("[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?d", 2);
|
||||
private static final Pattern byte_format = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)b", 2);
|
||||
private static final Pattern short_format = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)s", 2);
|
||||
private static final Pattern integer_format = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)");
|
||||
private static final Pattern long_format = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)l", 2);
|
||||
private static final Pattern float_format = Pattern.compile("[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?f", 2);
|
||||
private static final Pattern double_format = Pattern.compile("[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?d", 2);
|
||||
private static final Pattern double_format2 = Pattern.compile("[-+]?(?:[0-9]+[.]|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?", 2);
|
||||
|
||||
|
||||
public CraftNBTTagConfigSerializer() {
|
||||
}
|
||||
|
||||
public static Object serialize(NBTBase base) {
|
||||
if (base instanceof NBTTagCompound) {
|
||||
Map<String, Object> innerMap = new HashMap();
|
||||
|
||||
for (String key : ((NBTTagCompound) base).c()) {
|
||||
innerMap.put(key, serialize(((NBTTagCompound) base).get(key)));
|
||||
}
|
||||
|
||||
return innerMap;
|
||||
}
|
||||
if (base instanceof NBTTagString) {
|
||||
return ((NBTTagString) base).c_();
|
||||
}
|
||||
else {
|
||||
return base instanceof NBTTagInt ? base + "i" : base.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static NBTBase deserialize(Object object) {
|
||||
if (object instanceof Map) {
|
||||
NBTTagCompound compound = new NBTTagCompound();
|
||||
for (Object obj : ((Map) object).entrySet()) {
|
||||
Map.Entry<String, Object> entry = (Map.Entry) obj;
|
||||
compound.set(entry.getKey(), deserialize(entry.getValue()));
|
||||
}
|
||||
return compound;
|
||||
} else if (!(object instanceof List)) {
|
||||
if (object instanceof String) {
|
||||
String string = (String)object;
|
||||
if (ARRAY.matcher(string).matches()) {
|
||||
try {
|
||||
Constructor<MojangsonParser> constructor = MojangsonParser.class.getDeclaredConstructor(String.class);
|
||||
MojangsonParser parser = constructor.newInstance(string);
|
||||
Method parseArray = MojangsonParser.class.getDeclaredMethod("k");
|
||||
parseArray.setAccessible(true);
|
||||
return (NBTBase) parseArray.invoke(parser);
|
||||
} catch (Throwable e) {
|
||||
throw new RuntimeException("Could not deserialize found list ", e);
|
||||
}
|
||||
} else if (INTEGER.matcher(string).matches()) {
|
||||
return new NBTTagInt(Integer.parseInt(string.substring(0, string.length() - 1)));
|
||||
} else if (DOUBLE.matcher(string).matches()) {
|
||||
return new NBTTagDouble(Double.parseDouble(string.substring(0, string.length() - 1)));
|
||||
} else {
|
||||
try{
|
||||
Constructor<MojangsonParser> constructor = MojangsonParser.class.getDeclaredConstructor(String.class);
|
||||
MojangsonParser parser = constructor.newInstance("");
|
||||
Method parseLiteral = MojangsonParser.class.getDeclaredMethod("c", String.class);
|
||||
parseLiteral.setAccessible(true);
|
||||
NBTBase nbtBase = (NBTBase) parseLiteral.invoke(parser,string);
|
||||
if (nbtBase instanceof NBTTagInt) {
|
||||
return new NBTTagString(nbtBase.toString());
|
||||
} else {
|
||||
return (nbtBase instanceof NBTTagDouble ? new NBTTagString(String.valueOf(((NBTTagDouble)nbtBase).asDouble())) : nbtBase);
|
||||
}
|
||||
}catch (ReflectiveOperationException e){
|
||||
throw new RuntimeException("Could not deserialize NBTBase");
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
throw new RuntimeException("Could not deserialize NBTBase");
|
||||
}
|
||||
} else {
|
||||
List<Object> list = (List)object;
|
||||
if (list.isEmpty()) {
|
||||
return new NBTTagList();
|
||||
}
|
||||
else {
|
||||
NBTTagList tagList = new NBTTagList();
|
||||
for (Object tag : list) {
|
||||
tagList.add(deserialize(tag));
|
||||
}
|
||||
return tagList;
|
||||
}
|
||||
}
|
||||
}
|
||||
public static NBTBase v1_12_R1_c(String raw) {
|
||||
try {
|
||||
if (float_format.matcher(raw).matches()) {
|
||||
return new NBTTagFloat(Float.parseFloat(raw.substring(0, raw.length() - 1)));
|
||||
}
|
||||
|
||||
if (byte_format.matcher(raw).matches()) {
|
||||
return new NBTTagByte(Byte.parseByte(raw.substring(0, raw.length() - 1)));
|
||||
}
|
||||
|
||||
if (long_format.matcher(raw).matches()) {
|
||||
return new NBTTagLong(Long.parseLong(raw.substring(0, raw.length() - 1)));
|
||||
}
|
||||
|
||||
if (short_format.matcher(raw).matches()) {
|
||||
return new NBTTagShort(Short.parseShort(raw.substring(0, raw.length() - 1)));
|
||||
}
|
||||
|
||||
if (integer_format.matcher(raw).matches()) {
|
||||
return new NBTTagInt(Integer.parseInt(raw));
|
||||
}
|
||||
|
||||
if (double_format.matcher(raw).matches()) {
|
||||
return new NBTTagDouble(Double.parseDouble(raw.substring(0, raw.length() - 1)));
|
||||
}
|
||||
|
||||
if (double_format2.matcher(raw).matches()) {
|
||||
return new NBTTagDouble(Double.parseDouble(raw));
|
||||
}
|
||||
|
||||
if ("true".equalsIgnoreCase(raw)) {
|
||||
return new NBTTagByte((byte)1);
|
||||
}
|
||||
|
||||
if ("false".equalsIgnoreCase(raw)) {
|
||||
return new NBTTagByte((byte)0);
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return new NBTTagString(raw);
|
||||
}
|
||||
}
|
||||
-151
@@ -1,151 +0,0 @@
|
||||
package pers.xanadu.enderdragon.nms.NMSItem.v1_13_R1;
|
||||
|
||||
import com.mojang.brigadier.StringReader;
|
||||
import net.minecraft.server.v1_13_R1.*;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class CraftNBTTagConfigSerializer {
|
||||
private static final Pattern ARRAY = Pattern.compile("^\\[.*]");
|
||||
private static final Pattern INTEGER = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)?i", 2);
|
||||
private static final Pattern DOUBLE = Pattern.compile("[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?d", 2);
|
||||
public static final MojangsonParser MOJANGSON_PARSER = new MojangsonParser(new StringReader(""));
|
||||
private static final Pattern byte_format = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)b", 2);
|
||||
private static final Pattern short_format = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)s", 2);
|
||||
private static final Pattern integer_format = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)");
|
||||
private static final Pattern long_format = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)l", 2);
|
||||
private static final Pattern float_format = Pattern.compile("[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?f", 2);
|
||||
private static final Pattern double_format = Pattern.compile("[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?d", 2);
|
||||
private static final Pattern double_format_2 = Pattern.compile("[-+]?(?:[0-9]+[.]|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?", 2);
|
||||
|
||||
public CraftNBTTagConfigSerializer() {
|
||||
}
|
||||
|
||||
public static Object serialize(NBTBase base) {
|
||||
if (base instanceof NBTTagCompound) {
|
||||
Map<String, Object> innerMap = new HashMap();
|
||||
Iterator var3 = ((NBTTagCompound)base).getKeys().iterator();
|
||||
|
||||
while(var3.hasNext()) {
|
||||
String key = (String)var3.next();
|
||||
innerMap.put(key, serialize(((NBTTagCompound)base).get(key)));
|
||||
}
|
||||
|
||||
return innerMap;
|
||||
} else if (!(base instanceof NBTTagList)) {
|
||||
if (base instanceof NBTTagString) {
|
||||
return base.b_();
|
||||
} else {
|
||||
return base instanceof NBTTagInt ? base + "i" : base.toString();
|
||||
}
|
||||
} else {
|
||||
List<Object> baseList = new ArrayList();
|
||||
|
||||
for(int i = 0; i < ((NBTList)base).size(); ++i) {
|
||||
baseList.add(serialize(((NBTList)base).get(i)));
|
||||
}
|
||||
|
||||
return baseList;
|
||||
}
|
||||
}
|
||||
|
||||
public static NBTBase v1_13_R1_b(String str) {
|
||||
try {
|
||||
if (float_format.matcher(str).matches()) {
|
||||
return new NBTTagFloat(Float.parseFloat(str.substring(0, str.length() - 1)));
|
||||
}
|
||||
|
||||
if (byte_format.matcher(str).matches()) {
|
||||
return new NBTTagByte(Byte.parseByte(str.substring(0, str.length() - 1)));
|
||||
}
|
||||
|
||||
if (long_format.matcher(str).matches()) {
|
||||
return new NBTTagLong(Long.parseLong(str.substring(0, str.length() - 1)));
|
||||
}
|
||||
|
||||
if (short_format.matcher(str).matches()) {
|
||||
return new NBTTagShort(Short.parseShort(str.substring(0, str.length() - 1)));
|
||||
}
|
||||
|
||||
if (integer_format.matcher(str).matches()) {
|
||||
return new NBTTagInt(Integer.parseInt(str));
|
||||
}
|
||||
|
||||
if (double_format.matcher(str).matches()) {
|
||||
return new NBTTagDouble(Double.parseDouble(str.substring(0, str.length() - 1)));
|
||||
}
|
||||
|
||||
if (double_format_2.matcher(str).matches()) {
|
||||
return new NBTTagDouble(Double.parseDouble(str));
|
||||
}
|
||||
|
||||
if ("true".equalsIgnoreCase(str)) {
|
||||
return new NBTTagByte((byte)1);
|
||||
}
|
||||
|
||||
if ("false".equalsIgnoreCase(str)) {
|
||||
return new NBTTagByte((byte)0);
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return new NBTTagString(str);
|
||||
}
|
||||
|
||||
public static NBTBase deserialize(Object object) {
|
||||
if (object instanceof Map) {
|
||||
NBTTagCompound compound = new NBTTagCompound();
|
||||
for (Object obj : ((Map) object).entrySet()) {
|
||||
Map.Entry<String, Object> entry = (Map.Entry) obj;
|
||||
compound.set(entry.getKey(), deserialize(entry.getValue()));
|
||||
}
|
||||
return compound;
|
||||
} else if (!(object instanceof List)) {
|
||||
if (object instanceof String) {
|
||||
String string = (String)object;
|
||||
if (ARRAY.matcher(string).matches()) {
|
||||
try {
|
||||
Method parseArray = MojangsonParser.class.getDeclaredMethod("h");
|
||||
parseArray.setAccessible(true);
|
||||
MojangsonParser parser = new MojangsonParser(new StringReader(string));
|
||||
return (NBTBase) parseArray.invoke(parser);
|
||||
} catch (Throwable e) {
|
||||
throw new RuntimeException("Could not deserialize found list ", e);
|
||||
}
|
||||
} else if (INTEGER.matcher(string).matches()) {
|
||||
return new NBTTagInt(Integer.parseInt(string.substring(0, string.length() - 1)));
|
||||
} else if (DOUBLE.matcher(string).matches()) {
|
||||
return new NBTTagDouble(Double.parseDouble(string.substring(0, string.length() - 1)));
|
||||
} else {
|
||||
try{
|
||||
Method parseLiteral = MojangsonParser.class.getDeclaredMethod("b", String.class);
|
||||
parseLiteral.setAccessible(true);
|
||||
NBTBase nbtBase = (NBTBase) parseLiteral.invoke(MOJANGSON_PARSER,string);
|
||||
if (nbtBase instanceof NBTTagInt) {
|
||||
return new NBTTagString(nbtBase.b_());
|
||||
} else {
|
||||
return (nbtBase instanceof NBTTagDouble ? new NBTTagString(String.valueOf(((NBTTagDouble)nbtBase).asDouble())) : nbtBase);
|
||||
}
|
||||
}catch (ReflectiveOperationException e){
|
||||
throw new RuntimeException("Could not deserialize NBTBase");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new RuntimeException("Could not deserialize NBTBase");
|
||||
}
|
||||
} else {
|
||||
List<Object> list = (List)object;
|
||||
if (list.isEmpty()) {
|
||||
return new NBTTagList();
|
||||
} else {
|
||||
NBTTagList tagList = new NBTTagList();
|
||||
for (Object tag : list) {
|
||||
tagList.add(deserialize(tag));
|
||||
}
|
||||
return tagList;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,14 @@
|
||||
package pers.xanadu.enderdragon.util;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataContainer;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
import pers.xanadu.enderdragon.EnderDragon;
|
||||
import pers.xanadu.enderdragon.config.Config;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class NMSUtil {
|
||||
@@ -26,18 +22,13 @@ public class NMSUtil {
|
||||
*/
|
||||
private Method asCraftCopy;
|
||||
private Method NMSItemStack_save;
|
||||
private Method NMSItemStack_setTag;
|
||||
private Method cpdToEi;
|
||||
private Method stringToCPD;
|
||||
private Method stringToNBTBase;
|
||||
private Method serializeNBTBase;
|
||||
private Method deserializeObject;
|
||||
private Method PDCtoCPD;
|
||||
private Method PersistentDataContainer_putAll;
|
||||
private Method NBTTagCompound_set;
|
||||
private Field unhandledTags;
|
||||
private Field internalTag;
|
||||
private Field MOJANGSON_PARSER;
|
||||
private Field world_c_environment;
|
||||
private Field NBTTagCompound_map;
|
||||
private Class<?> WorldClass;
|
||||
@@ -51,7 +42,6 @@ public class NMSUtil {
|
||||
private Class<?> NBTTagCompoundClass;
|
||||
private Class<?> NBTBaseClass;
|
||||
private Class<?> MojangsonParserClass;
|
||||
private Class<?> CraftNBTTagConfigSerializerClass;
|
||||
private Class<?> CraftPersistentDataContainerClass;
|
||||
|
||||
public void init(){
|
||||
@@ -70,8 +60,6 @@ public class NMSUtil {
|
||||
this.CraftMetaItemClass = Class.forName("org.bukkit.craftbukkit." + version + ".inventory.CraftMetaItem");
|
||||
this.unhandledTags = CraftMetaItemClass.getDeclaredField("unhandledTags");
|
||||
unhandledTags.setAccessible(true);
|
||||
this.internalTag = CraftMetaItemClass.getDeclaredField("internalTag");
|
||||
internalTag.setAccessible(true);
|
||||
this.NMSItemStackClass = CraftItemStackClass.getDeclaredField("handle").getType();
|
||||
this.CraftEntityClass = Class.forName("org.bukkit.craftbukkit."+version+".entity.CraftEntity");
|
||||
init_NBTTagCompoundClass();
|
||||
@@ -84,7 +72,6 @@ public class NMSUtil {
|
||||
this.asCraftMirror = CraftItemStackClass.getMethod("asCraftMirror",NMSItemStackClass);
|
||||
this.asCraftCopy = CraftItemStackClass.getMethod("asCraftCopy",ItemStack.class);
|
||||
this.NMSItemStack_save = NMSItemStackClass.getMethod(getMethodName(ReflectiveMethod.NMSItemStack_save),NBTTagCompoundClass);
|
||||
this.NMSItemStack_setTag = NMSItemStackClass.getMethod(getMethodName(ReflectiveMethod.NMSItemStack_setTag),NBTTagCompoundClass);
|
||||
if(Version.mcMainVersion>=13) this.cpdToEi = NMSItemStackClass.getMethod("a",NBTTagCompoundClass);
|
||||
|
||||
if(Version.mcMainVersion<=16) this.MojangsonParserClass = Class.forName("net.minecraft.server."+version+".MojangsonParser");
|
||||
@@ -93,13 +80,6 @@ public class NMSUtil {
|
||||
this.stringToNBTBase = MojangsonParserClass.getDeclaredMethod(getMethodName(ReflectiveMethod.MojangsonParser_parseLiteral),String.class);
|
||||
stringToNBTBase.setAccessible(true);
|
||||
|
||||
if(Version.mcMainVersion>13 || "v1_13_R2".equals(Version.getVersion())){
|
||||
this.CraftNBTTagConfigSerializerClass = Class.forName("org.bukkit.craftbukkit." + version + ".util.CraftNBTTagConfigSerializer");
|
||||
this.serializeNBTBase = CraftNBTTagConfigSerializerClass.getMethods()[0];
|
||||
this.deserializeObject = CraftNBTTagConfigSerializerClass.getMethod("deserialize",Object.class);
|
||||
this.MOJANGSON_PARSER = CraftNBTTagConfigSerializerClass.getDeclaredField("MOJANGSON_PARSER");
|
||||
MOJANGSON_PARSER.setAccessible(true);
|
||||
}
|
||||
if(Version.mcMainVersion>=14){
|
||||
this.CraftPersistentDataContainerClass = Class.forName("org.bukkit.craftbukkit." + version + ".persistence.CraftPersistentDataContainer");
|
||||
this.PDCtoCPD = CraftPersistentDataContainerClass.getDeclaredMethod("toTagCompound");
|
||||
@@ -123,16 +103,6 @@ public class NMSUtil {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
// public Object getMetaCPD(ItemMeta meta){
|
||||
// try{
|
||||
// Object craft_meta = CraftMetaItemClass.cast(meta);
|
||||
// Object internalTag = this.internalTag.get(craft_meta);
|
||||
// return internalTag;
|
||||
// }catch (ReflectiveOperationException e){
|
||||
// e.printStackTrace();
|
||||
// return null;
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 只保留物品type和amount
|
||||
@@ -175,14 +145,6 @@ public class NMSUtil {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public Object StringParseLiteral(final String str){
|
||||
try{
|
||||
return stringToNBTBase.invoke(MOJANGSON_PARSER.get(null),str);
|
||||
}catch (ReflectiveOperationException e){
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public void setPersistentDataContainer(final PersistentDataContainer dataContainer,final Object cpd){
|
||||
try{
|
||||
Object PDC = CraftPersistentDataContainerClass.cast(dataContainer);
|
||||
@@ -201,55 +163,6 @@ public class NMSUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public Object deserializeObject(final Object object){
|
||||
try{
|
||||
return deserializeObject.invoke(null,object);
|
||||
}catch (ReflectiveOperationException e){
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public Object serializeNBTBase(final Object nbt_base){
|
||||
try{
|
||||
return serializeNBTBase.invoke(null, nbt_base);
|
||||
}catch (ReflectiveOperationException e){
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@TestOnly
|
||||
public void setUnhandledTags(final ItemMeta meta, Map<String,?> unhandledTags){
|
||||
try{
|
||||
Object craft_meta = CraftMetaItemClass.cast(meta);
|
||||
this.unhandledTags.set(craft_meta, unhandledTags);
|
||||
}catch (ReflectiveOperationException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @return meta中unhandledTags的引用
|
||||
*/
|
||||
@TestOnly
|
||||
public Map<String,Object> getUnhandledTags(final ItemMeta meta){
|
||||
try{
|
||||
Object craft_meta = CraftMetaItemClass.cast(meta);
|
||||
Object unhandledTags = this.unhandledTags.get(craft_meta);
|
||||
return (Map<String, Object>) unhandledTags;
|
||||
}catch (ReflectiveOperationException e){
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public ItemStack applyItemTag(final ItemStack item,final Object cpd){
|
||||
try{
|
||||
Object ei = asNMSCopy.invoke(null,item);
|
||||
NMSItemStack_setTag.invoke(ei,cpd);
|
||||
return (ItemStack) asBukkitCopy.invoke(null,ei);
|
||||
}catch (ReflectiveOperationException e){
|
||||
e.printStackTrace();
|
||||
return new ItemStack(Material.AIR);
|
||||
}
|
||||
}
|
||||
public String getNBT(final ItemStack item){
|
||||
try{
|
||||
Object ci = CraftItemStackClass.isInstance(item)?CraftItemStackClass.cast(item):asCraftCopy.invoke(null,item);//浅拷贝unhandledTags
|
||||
|
||||
Reference in New Issue
Block a user