remove unused code

This commit is contained in:
Xanadu13
2024-03-17 20:40:35 +08:00
parent f4a1bc13da
commit 98cc6ff111
3 changed files with 0 additions and 384 deletions
@@ -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);
}
}
@@ -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; package pers.xanadu.enderdragon.util;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataContainer;
import org.jetbrains.annotations.TestOnly;
import pers.xanadu.enderdragon.EnderDragon; import pers.xanadu.enderdragon.EnderDragon;
import pers.xanadu.enderdragon.config.Config; import pers.xanadu.enderdragon.config.Config;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class NMSUtil { public class NMSUtil {
@@ -26,18 +22,13 @@ public class NMSUtil {
*/ */
private Method asCraftCopy; private Method asCraftCopy;
private Method NMSItemStack_save; private Method NMSItemStack_save;
private Method NMSItemStack_setTag;
private Method cpdToEi; private Method cpdToEi;
private Method stringToCPD; private Method stringToCPD;
private Method stringToNBTBase; private Method stringToNBTBase;
private Method serializeNBTBase;
private Method deserializeObject;
private Method PDCtoCPD; private Method PDCtoCPD;
private Method PersistentDataContainer_putAll; private Method PersistentDataContainer_putAll;
private Method NBTTagCompound_set; private Method NBTTagCompound_set;
private Field unhandledTags; private Field unhandledTags;
private Field internalTag;
private Field MOJANGSON_PARSER;
private Field world_c_environment; private Field world_c_environment;
private Field NBTTagCompound_map; private Field NBTTagCompound_map;
private Class<?> WorldClass; private Class<?> WorldClass;
@@ -51,7 +42,6 @@ public class NMSUtil {
private Class<?> NBTTagCompoundClass; private Class<?> NBTTagCompoundClass;
private Class<?> NBTBaseClass; private Class<?> NBTBaseClass;
private Class<?> MojangsonParserClass; private Class<?> MojangsonParserClass;
private Class<?> CraftNBTTagConfigSerializerClass;
private Class<?> CraftPersistentDataContainerClass; private Class<?> CraftPersistentDataContainerClass;
public void init(){ public void init(){
@@ -70,8 +60,6 @@ public class NMSUtil {
this.CraftMetaItemClass = Class.forName("org.bukkit.craftbukkit." + version + ".inventory.CraftMetaItem"); this.CraftMetaItemClass = Class.forName("org.bukkit.craftbukkit." + version + ".inventory.CraftMetaItem");
this.unhandledTags = CraftMetaItemClass.getDeclaredField("unhandledTags"); this.unhandledTags = CraftMetaItemClass.getDeclaredField("unhandledTags");
unhandledTags.setAccessible(true); unhandledTags.setAccessible(true);
this.internalTag = CraftMetaItemClass.getDeclaredField("internalTag");
internalTag.setAccessible(true);
this.NMSItemStackClass = CraftItemStackClass.getDeclaredField("handle").getType(); this.NMSItemStackClass = CraftItemStackClass.getDeclaredField("handle").getType();
this.CraftEntityClass = Class.forName("org.bukkit.craftbukkit."+version+".entity.CraftEntity"); this.CraftEntityClass = Class.forName("org.bukkit.craftbukkit."+version+".entity.CraftEntity");
init_NBTTagCompoundClass(); init_NBTTagCompoundClass();
@@ -84,7 +72,6 @@ public class NMSUtil {
this.asCraftMirror = CraftItemStackClass.getMethod("asCraftMirror",NMSItemStackClass); this.asCraftMirror = CraftItemStackClass.getMethod("asCraftMirror",NMSItemStackClass);
this.asCraftCopy = CraftItemStackClass.getMethod("asCraftCopy",ItemStack.class); this.asCraftCopy = CraftItemStackClass.getMethod("asCraftCopy",ItemStack.class);
this.NMSItemStack_save = NMSItemStackClass.getMethod(getMethodName(ReflectiveMethod.NMSItemStack_save),NBTTagCompoundClass); 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>=13) this.cpdToEi = NMSItemStackClass.getMethod("a",NBTTagCompoundClass);
if(Version.mcMainVersion<=16) this.MojangsonParserClass = Class.forName("net.minecraft.server."+version+".MojangsonParser"); 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); this.stringToNBTBase = MojangsonParserClass.getDeclaredMethod(getMethodName(ReflectiveMethod.MojangsonParser_parseLiteral),String.class);
stringToNBTBase.setAccessible(true); 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){ if(Version.mcMainVersion>=14){
this.CraftPersistentDataContainerClass = Class.forName("org.bukkit.craftbukkit." + version + ".persistence.CraftPersistentDataContainer"); this.CraftPersistentDataContainerClass = Class.forName("org.bukkit.craftbukkit." + version + ".persistence.CraftPersistentDataContainer");
this.PDCtoCPD = CraftPersistentDataContainerClass.getDeclaredMethod("toTagCompound"); this.PDCtoCPD = CraftPersistentDataContainerClass.getDeclaredMethod("toTagCompound");
@@ -123,16 +103,6 @@ public class NMSUtil {
e.printStackTrace(); 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 * 只保留物品type和amount
@@ -175,14 +145,6 @@ public class NMSUtil {
return null; 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){ public void setPersistentDataContainer(final PersistentDataContainer dataContainer,final Object cpd){
try{ try{
Object PDC = CraftPersistentDataContainerClass.cast(dataContainer); 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){ public String getNBT(final ItemStack item){
try{ try{
Object ci = CraftItemStackClass.isInstance(item)?CraftItemStackClass.cast(item):asCraftCopy.invoke(null,item);//浅拷贝unhandledTags Object ci = CraftItemStackClass.isInstance(item)?CraftItemStackClass.cast(item):asCraftCopy.invoke(null,item);//浅拷贝unhandledTags