forked from Upstream/CommandPanels
3.15.6.1
This commit is contained in:
parent
a2f84d4f72
commit
27d59ccde5
@ -1,4 +1,4 @@
|
|||||||
version: 3.15.6.0
|
version: 3.15.6.1
|
||||||
main: me.rockyhawk.commandpanels.CommandPanels
|
main: me.rockyhawk.commandpanels.CommandPanels
|
||||||
name: CommandPanels
|
name: CommandPanels
|
||||||
author: RockyHawk
|
author: RockyHawk
|
||||||
|
@ -57,9 +57,9 @@ public class BuyCommandTags implements Listener {
|
|||||||
String price = e.args[0];
|
String price = e.args[0];
|
||||||
String command = String.join(" ",Arrays.copyOfRange(e.raw, 1, e.raw.length));
|
String command = String.join(" ",Arrays.copyOfRange(e.raw, 1, e.raw.length));
|
||||||
plugin.commandTags.runCommand(e.panel,e.p,command);
|
plugin.commandTags.runCommand(e.panel,e.p,command);
|
||||||
plugin.tex.sendMessage(e.p, Objects.requireNonNull(plugin.config.getString("purchase.token.success")).replaceAll("%cp-args%", price));
|
plugin.tex.sendMessage(e.p, Objects.requireNonNull(plugin.config.getString("purchase.tokens.success")).replaceAll("%cp-args%", price));
|
||||||
} else {
|
} else {
|
||||||
plugin.tex.sendMessage(e.p, plugin.config.getString("purchase.token.failure"));
|
plugin.tex.sendMessage(e.p, plugin.config.getString("purchase.tokens.failure"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
plugin.tex.sendMessage(e.p, ChatColor.RED + "Buying Requires Vault and an Economy to work!");
|
plugin.tex.sendMessage(e.p, ChatColor.RED + "Buying Requires Vault and an Economy to work!");
|
||||||
|
@ -1,5 +1,18 @@
|
|||||||
package me.rockyhawk.commandpanels.ioclasses;
|
package me.rockyhawk.commandpanels.ioclasses;
|
||||||
|
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Base64;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -8,26 +21,20 @@ import org.bukkit.entity.Entity;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets/Gets NBT tags from ItemStacks
|
* Sets/Gets NBT tags from ItemStacks
|
||||||
|
* Supports 1.8-1.17
|
||||||
|
*
|
||||||
|
* Github: https://github.com/BananaPuncher714/NBTEditor
|
||||||
* Spigot: https://www.spigotmc.org/threads/269621/
|
* Spigot: https://www.spigotmc.org/threads/269621/
|
||||||
*
|
*
|
||||||
* @version 7.16.1
|
* @version 7.17.0
|
||||||
* @author BananaPuncher714
|
* @author BananaPuncher714
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public final class NBTEditor {
|
public final class NBTEditor {
|
||||||
private static final Map< String, Class<?> > classCache;
|
private static final Map< String, Class< ? > > classCache;
|
||||||
private static final Map< String, Method > methodCache;
|
private static final Map< String, Method > methodCache;
|
||||||
private static final Map< Class< ? >, Constructor< ? >> constructorCache;
|
private static final Map< Class< ? >, Constructor< ? > > constructorCache;
|
||||||
private static final Map< Class< ? >, Class< ? > > NBTClasses;
|
private static final Map< Class< ? >, Class< ? > > NBTClasses;
|
||||||
private static final Map< Class< ? >, Field > NBTTagFieldCache;
|
private static final Map< Class< ? >, Field > NBTTagFieldCache;
|
||||||
private static Field NBTListData;
|
private static Field NBTListData;
|
||||||
@ -41,27 +48,50 @@ public final class NBTEditor {
|
|||||||
|
|
||||||
classCache = new HashMap< String, Class<?> >();
|
classCache = new HashMap< String, Class<?> >();
|
||||||
try {
|
try {
|
||||||
classCache.put( "NBTBase", Class.forName( "net.minecraft.server." + VERSION + "." + "NBTBase" ) );
|
if ( LOCAL_VERSION.lessThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
||||||
classCache.put( "NBTTagCompound", Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagCompound" ) );
|
classCache.put( "NBTBase", Class.forName( "net.minecraft.server." + VERSION + "." + "NBTBase" ) );
|
||||||
classCache.put( "NBTTagList", Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagList" ) );
|
classCache.put( "NBTTagCompound", Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagCompound" ) );
|
||||||
classCache.put( "MojangsonParser", Class.forName( "net.minecraft.server." + VERSION + "." + "MojangsonParser" ) );
|
classCache.put( "NBTTagList", Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagList" ) );
|
||||||
|
classCache.put( "MojangsonParser", Class.forName( "net.minecraft.server." + VERSION + "." + "MojangsonParser" ) );
|
||||||
|
|
||||||
|
classCache.put( "ItemStack", Class.forName( "net.minecraft.server." + VERSION + "." + "ItemStack" ) );
|
||||||
|
|
||||||
|
classCache.put( "Entity", Class.forName( "net.minecraft.server." + VERSION + "." + "Entity" ) );
|
||||||
|
classCache.put( "EntityLiving", Class.forName( "net.minecraft.server." + VERSION + "." + "EntityLiving" ) );
|
||||||
|
|
||||||
|
classCache.put( "BlockPosition", Class.forName( "net.minecraft.server." + VERSION + "." + "BlockPosition" ) );
|
||||||
|
classCache.put( "TileEntity", Class.forName( "net.minecraft.server." + VERSION + "." + "TileEntity" ) );
|
||||||
|
classCache.put( "World", Class.forName( "net.minecraft.server." + VERSION + "." + "World" ) );
|
||||||
|
classCache.put( "IBlockData", Class.forName( "net.minecraft.server." + VERSION + "." + "IBlockData" ) );
|
||||||
|
|
||||||
|
classCache.put( "TileEntitySkull", Class.forName( "net.minecraft.server." + VERSION + "." + "TileEntitySkull" ) );
|
||||||
|
|
||||||
|
} else {
|
||||||
|
classCache.put( "BlockPosition", Class.forName( "net.minecraft.core.BlockPosition" ) );
|
||||||
|
|
||||||
|
classCache.put( "NBTBase", Class.forName( "net.minecraft.nbt.NBTBase" ) );
|
||||||
|
classCache.put( "NBTTagCompound", Class.forName( "net.minecraft.nbt.NBTTagCompound" ) );
|
||||||
|
classCache.put( "NBTTagList", Class.forName( "net.minecraft.nbt.NBTTagList" ) );
|
||||||
|
classCache.put( "MojangsonParser", Class.forName( "net.minecraft.nbt.MojangsonParser" ) );
|
||||||
|
|
||||||
|
classCache.put( "ItemStack", Class.forName( "net.minecraft.world.item.ItemStack" ) );
|
||||||
|
|
||||||
|
classCache.put( "Entity", Class.forName( "net.minecraft.world.entity.Entity" ) );
|
||||||
|
classCache.put( "EntityLiving", Class.forName( "net.minecraft.world.entity.EntityLiving" ) );
|
||||||
|
|
||||||
|
classCache.put( "World", Class.forName( "net.minecraft.world.level.World" ) );
|
||||||
|
classCache.put( "IBlockData", Class.forName( "net.minecraft.world.level.block.state.IBlockData" ) );
|
||||||
|
classCache.put( "TileEntity", Class.forName( "net.minecraft.world.level.block.entity.TileEntity" ) );
|
||||||
|
classCache.put( "TileEntitySkull", Class.forName( "net.minecraft.world.level.block.entity.TileEntitySkull" ) );
|
||||||
|
}
|
||||||
|
|
||||||
classCache.put( "ItemStack", Class.forName( "net.minecraft.server." + VERSION + "." + "ItemStack" ) );
|
|
||||||
classCache.put( "CraftItemStack", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".inventory." + "CraftItemStack" ) );
|
classCache.put( "CraftItemStack", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".inventory." + "CraftItemStack" ) );
|
||||||
classCache.put( "CraftMetaSkull", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".inventory." + "CraftMetaSkull" ) );
|
classCache.put( "CraftMetaSkull", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".inventory." + "CraftMetaSkull" ) );
|
||||||
|
|
||||||
classCache.put( "Entity", Class.forName( "net.minecraft.server." + VERSION + "." + "Entity" ) );
|
|
||||||
classCache.put( "CraftEntity", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".entity." + "CraftEntity" ) );
|
classCache.put( "CraftEntity", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".entity." + "CraftEntity" ) );
|
||||||
classCache.put( "EntityLiving", Class.forName( "net.minecraft.server." + VERSION + "." + "EntityLiving" ) );
|
|
||||||
|
|
||||||
classCache.put( "CraftWorld", Class.forName( "org.bukkit.craftbukkit." + VERSION + "." + "CraftWorld" ) );
|
classCache.put( "CraftWorld", Class.forName( "org.bukkit.craftbukkit." + VERSION + "." + "CraftWorld" ) );
|
||||||
classCache.put( "CraftBlockState", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".block." + "CraftBlockState" ) );
|
classCache.put( "CraftBlockState", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".block." + "CraftBlockState" ) );
|
||||||
classCache.put( "BlockPosition", Class.forName( "net.minecraft.server." + VERSION + "." + "BlockPosition" ) );
|
|
||||||
classCache.put( "TileEntity", Class.forName( "net.minecraft.server." + VERSION + "." + "TileEntity" ) );
|
|
||||||
classCache.put( "World", Class.forName( "net.minecraft.server." + VERSION + "." + "World" ) );
|
|
||||||
classCache.put( "IBlockData", Class.forName( "net.minecraft.server." + VERSION + "." + "IBlockData" ) );
|
|
||||||
|
|
||||||
classCache.put( "TileEntitySkull", Class.forName( "net.minecraft.server." + VERSION + "." + "TileEntitySkull" ) );
|
|
||||||
|
|
||||||
classCache.put( "GameProfile", Class.forName( "com.mojang.authlib.GameProfile" ) );
|
classCache.put( "GameProfile", Class.forName( "com.mojang.authlib.GameProfile" ) );
|
||||||
classCache.put( "Property", Class.forName( "com.mojang.authlib.properties.Property" ) );
|
classCache.put( "Property", Class.forName( "com.mojang.authlib.properties.Property" ) );
|
||||||
@ -72,16 +102,29 @@ public final class NBTEditor {
|
|||||||
|
|
||||||
NBTClasses = new HashMap< Class< ? >, Class< ? > >();
|
NBTClasses = new HashMap< Class< ? >, Class< ? > >();
|
||||||
try {
|
try {
|
||||||
NBTClasses.put( Byte.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagByte" ) );
|
if ( LOCAL_VERSION.lessThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
||||||
NBTClasses.put( Boolean.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagByte" ) );
|
NBTClasses.put( Byte.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagByte" ) );
|
||||||
NBTClasses.put( String.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagString" ) );
|
NBTClasses.put( Boolean.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagByte" ) );
|
||||||
NBTClasses.put( Double.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagDouble" ) );
|
NBTClasses.put( String.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagString" ) );
|
||||||
NBTClasses.put( Integer.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagInt" ) );
|
NBTClasses.put( Double.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagDouble" ) );
|
||||||
NBTClasses.put( Long.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagLong" ) );
|
NBTClasses.put( Integer.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagInt" ) );
|
||||||
NBTClasses.put( Short.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagShort" ) );
|
NBTClasses.put( Long.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagLong" ) );
|
||||||
NBTClasses.put( Float.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagFloat" ) );
|
NBTClasses.put( Short.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagShort" ) );
|
||||||
NBTClasses.put( Class.forName( "[B" ), Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagByteArray" ) );
|
NBTClasses.put( Float.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagFloat" ) );
|
||||||
NBTClasses.put( Class.forName( "[I" ), Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagIntArray" ) );
|
NBTClasses.put( Class.forName( "[B" ), Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagByteArray" ) );
|
||||||
|
NBTClasses.put( Class.forName( "[I" ), Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagIntArray" ) );
|
||||||
|
} else {
|
||||||
|
NBTClasses.put( Byte.class, Class.forName( "net.minecraft.nbt.NBTTagByte" ) );
|
||||||
|
NBTClasses.put( Boolean.class, Class.forName( "net.minecraft.nbt.NBTTagByte" ) );
|
||||||
|
NBTClasses.put( String.class, Class.forName( "net.minecraft.nbt.NBTTagString" ) );
|
||||||
|
NBTClasses.put( Double.class, Class.forName( "net.minecraft.nbt.NBTTagDouble" ) );
|
||||||
|
NBTClasses.put( Integer.class, Class.forName( "net.minecraft.nbt.NBTTagInt" ) );
|
||||||
|
NBTClasses.put( Long.class, Class.forName( "net.minecraft.nbt.NBTTagLong" ) );
|
||||||
|
NBTClasses.put( Short.class, Class.forName( "net.minecraft.nbt.NBTTagShort" ) );
|
||||||
|
NBTClasses.put( Float.class, Class.forName( "net.minecraft.nbt.NBTTagFloat" ) );
|
||||||
|
NBTClasses.put( Class.forName( "[B" ), Class.forName( "net.minecraft.nbt.NBTTagByteArray" ) );
|
||||||
|
NBTClasses.put( Class.forName( "[I" ), Class.forName( "net.minecraft.nbt.NBTTagIntArray" ) );
|
||||||
|
}
|
||||||
} catch ( ClassNotFoundException e ) {
|
} catch ( ClassNotFoundException e ) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -91,7 +134,11 @@ public final class NBTEditor {
|
|||||||
methodCache.put( "get", getNMSClass( "NBTTagCompound" ).getMethod( "get", String.class ) );
|
methodCache.put( "get", getNMSClass( "NBTTagCompound" ).getMethod( "get", String.class ) );
|
||||||
methodCache.put( "set", getNMSClass( "NBTTagCompound" ).getMethod( "set", String.class, getNMSClass( "NBTBase" ) ) );
|
methodCache.put( "set", getNMSClass( "NBTTagCompound" ).getMethod( "set", String.class, getNMSClass( "NBTBase" ) ) );
|
||||||
methodCache.put( "hasKey", getNMSClass( "NBTTagCompound" ).getMethod( "hasKey", String.class ) );
|
methodCache.put( "hasKey", getNMSClass( "NBTTagCompound" ).getMethod( "hasKey", String.class ) );
|
||||||
methodCache.put( "setIndex", getNMSClass( "NBTTagList" ).getMethod( "a", int.class, getNMSClass( "NBTBase" ) ) );
|
if ( LOCAL_VERSION.lessThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
||||||
|
methodCache.put( "setIndex", getNMSClass( "NBTTagList" ).getMethod( "a", int.class, getNMSClass( "NBTBase" ) ) );
|
||||||
|
} else {
|
||||||
|
methodCache.put( "setIndex", getNMSClass( "NBTTagList" ).getMethod( "set", int.class, getNMSClass( "NBTBase" ) ) );
|
||||||
|
}
|
||||||
if ( LOCAL_VERSION.greaterThanOrEqualTo( MinecraftVersion.v1_14 ) ) {
|
if ( LOCAL_VERSION.greaterThanOrEqualTo( MinecraftVersion.v1_14 ) ) {
|
||||||
methodCache.put( "getTypeId", getNMSClass( "NBTBase" ).getMethod( "getTypeId" ) );
|
methodCache.put( "getTypeId", getNMSClass( "NBTBase" ).getMethod( "getTypeId" ) );
|
||||||
methodCache.put( "add", getNMSClass( "NBTTagList" ).getMethod( "add", int.class, getNMSClass( "NBTBase" ) ) );
|
methodCache.put( "add", getNMSClass( "NBTTagList" ).getMethod( "add", int.class, getNMSClass( "NBTBase" ) ) );
|
||||||
@ -136,7 +183,7 @@ public final class NBTEditor {
|
|||||||
methodCache.put( "createStack", getNMSClass( "ItemStack" ).getMethod( "a", getNMSClass( "NBTTagCompound" ) ) );
|
methodCache.put( "createStack", getNMSClass( "ItemStack" ).getMethod( "a", getNMSClass( "NBTTagCompound" ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( LOCAL_VERSION.greaterThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
if ( LOCAL_VERSION == MinecraftVersion.v1_16 ) {
|
||||||
methodCache.put( "setTileTag", getNMSClass( "TileEntity" ).getMethod( "load", getNMSClass( "IBlockData" ), getNMSClass( "NBTTagCompound" ) ) );
|
methodCache.put( "setTileTag", getNMSClass( "TileEntity" ).getMethod( "load", getNMSClass( "IBlockData" ), getNMSClass( "NBTTagCompound" ) ) );
|
||||||
methodCache.put( "getType", getNMSClass( "World" ).getMethod( "getType", getNMSClass( "BlockPosition" ) ) );
|
methodCache.put( "getType", getNMSClass( "World" ).getMethod( "getType", getNMSClass( "BlockPosition" ) ) );
|
||||||
} else if ( LOCAL_VERSION.greaterThanOrEqualTo( MinecraftVersion.v1_12 ) ) {
|
} else if ( LOCAL_VERSION.greaterThanOrEqualTo( MinecraftVersion.v1_12 ) ) {
|
||||||
@ -144,6 +191,13 @@ public final class NBTEditor {
|
|||||||
} else {
|
} else {
|
||||||
methodCache.put( "setTileTag", getNMSClass( "TileEntity" ).getMethod( "a", getNMSClass( "NBTTagCompound" ) ) );
|
methodCache.put( "setTileTag", getNMSClass( "TileEntity" ).getMethod( "a", getNMSClass( "NBTTagCompound" ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( LOCAL_VERSION == MinecraftVersion.v1_8 ) {
|
||||||
|
methodCache.put( "getTileTag", getNMSClass( "TileEntity" ).getMethod( "b", getNMSClass( "NBTTagCompound" ) ) );
|
||||||
|
} else {
|
||||||
|
methodCache.put( "getTileTag", getNMSClass( "TileEntity" ).getMethod( "save", getNMSClass( "NBTTagCompound" ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
methodCache.put( "getTileEntity", getNMSClass( "World" ).getMethod( "getTileEntity", getNMSClass( "BlockPosition" ) ) );
|
methodCache.put( "getTileEntity", getNMSClass( "World" ).getMethod( "getTileEntity", getNMSClass( "BlockPosition" ) ) );
|
||||||
methodCache.put( "getWorldHandle", getNMSClass( "CraftWorld" ).getMethod( "getHandle" ) );
|
methodCache.put( "getWorldHandle", getNMSClass( "CraftWorld" ).getMethod( "getHandle" ) );
|
||||||
|
|
||||||
@ -159,18 +213,6 @@ public final class NBTEditor {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
methodCache.put( "getTileTag", getNMSClass( "TileEntity" ).getMethod( "save", getNMSClass( "NBTTagCompound" ) ) );
|
|
||||||
} catch( NoSuchMethodException exception ) {
|
|
||||||
try {
|
|
||||||
methodCache.put( "getTileTag", getNMSClass( "TileEntity" ).getMethod( "b", getNMSClass( "NBTTagCompound" ) ) );
|
|
||||||
} catch ( Exception exception2 ) {
|
|
||||||
exception2.printStackTrace();
|
|
||||||
}
|
|
||||||
} catch( Exception exception ) {
|
|
||||||
exception.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
methodCache.put( "setProfile", getNMSClass( "CraftMetaSkull" ).getDeclaredMethod( "setProfile", getNMSClass( "GameProfile" ) ) );
|
methodCache.put( "setProfile", getNMSClass( "CraftMetaSkull" ).getDeclaredMethod( "setProfile", getNMSClass( "GameProfile" ) ) );
|
||||||
methodCache.get( "setProfile" ).setAccessible( true );
|
methodCache.get( "setProfile" ).setAccessible( true );
|
||||||
@ -210,19 +252,41 @@ public final class NBTEditor {
|
|||||||
|
|
||||||
NBTTagFieldCache = new HashMap< Class< ? >, Field >();
|
NBTTagFieldCache = new HashMap< Class< ? >, Field >();
|
||||||
try {
|
try {
|
||||||
for ( Class< ? > clazz : NBTClasses.values() ) {
|
if ( LOCAL_VERSION.lessThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
||||||
Field data = clazz.getDeclaredField( "data" );
|
for ( Class< ? > clazz : NBTClasses.values() ) {
|
||||||
data.setAccessible( true );
|
Field data = clazz.getDeclaredField( "data" );
|
||||||
NBTTagFieldCache.put( clazz, data );
|
data.setAccessible( true );
|
||||||
|
NBTTagFieldCache.put( clazz, data );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( Byte.class ), NBTClasses.get( Byte.class ).getDeclaredField( "x" ) );
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( Boolean.class ), NBTClasses.get( Boolean.class ).getDeclaredField( "x" ) );
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( String.class ), NBTClasses.get( String.class ).getDeclaredField( "A" ) );
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( Double.class ), NBTClasses.get( Double.class ).getDeclaredField( "w" ) );
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( Integer.class ), NBTClasses.get( Integer.class ).getDeclaredField( "c" ) );
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( Long.class ), NBTClasses.get( Long.class ).getDeclaredField( "c" ) );
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( Float.class ), NBTClasses.get( Float.class ).getDeclaredField( "w" ) );
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( Short.class ), NBTClasses.get( Short.class ).getDeclaredField( "c" ) );
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( Class.forName( "[B" ) ), NBTClasses.get( Class.forName( "[B" ) ).getDeclaredField( "c" ) );
|
||||||
|
NBTTagFieldCache.put( NBTClasses.get( Class.forName( "[I" ) ), NBTClasses.get( Class.forName( "[I" ) ).getDeclaredField( "c" ) );
|
||||||
|
|
||||||
|
for ( Field field : NBTTagFieldCache.values() ) {
|
||||||
|
field.setAccessible( true );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch( Exception e ) {
|
} catch( Exception e ) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
NBTListData = getNMSClass( "NBTTagList" ).getDeclaredField( "list" );
|
if ( LOCAL_VERSION.lessThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
||||||
|
NBTListData = getNMSClass( "NBTTagList" ).getDeclaredField( "list" );
|
||||||
|
NBTCompoundMap = getNMSClass( "NBTTagCompound" ).getDeclaredField( "map" );
|
||||||
|
} else {
|
||||||
|
NBTListData = getNMSClass( "NBTTagList" ).getDeclaredField( "c" );
|
||||||
|
NBTCompoundMap = getNMSClass( "NBTTagCompound" ).getDeclaredField( "x" );
|
||||||
|
}
|
||||||
NBTListData.setAccessible( true );
|
NBTListData.setAccessible( true );
|
||||||
NBTCompoundMap = getNMSClass( "NBTTagCompound" ).getDeclaredField( "map" );
|
|
||||||
NBTCompoundMap.setAccessible( true );
|
NBTCompoundMap.setAccessible( true );
|
||||||
} catch( Exception e ) {
|
} catch( Exception e ) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -752,7 +816,7 @@ public final class NBTEditor {
|
|||||||
setTag( tag, value, keys );
|
setTag( tag, value, keys );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( LOCAL_VERSION.greaterThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
if ( LOCAL_VERSION == MinecraftVersion.v1_16 ) {
|
||||||
getMethod( "setTileTag" ).invoke( tileEntity, getMethod( "getType" ).invoke( nmsWorld, blockPosition ), tag );
|
getMethod( "setTileTag" ).invoke( tileEntity, getMethod( "getType" ).invoke( nmsWorld, blockPosition ), tag );
|
||||||
} else {
|
} else {
|
||||||
getMethod( "setTileTag" ).invoke( tileEntity, tag );
|
getMethod( "setTileTag" ).invoke( tileEntity, tag );
|
||||||
@ -1419,4 +1483,4 @@ public final class NBTEditor {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user