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
|
||||
name: CommandPanels
|
||||
author: RockyHawk
|
||||
|
@ -57,9 +57,9 @@ public class BuyCommandTags implements Listener {
|
||||
String price = e.args[0];
|
||||
String command = String.join(" ",Arrays.copyOfRange(e.raw, 1, e.raw.length));
|
||||
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 {
|
||||
plugin.tex.sendMessage(e.p, plugin.config.getString("purchase.token.failure"));
|
||||
plugin.tex.sendMessage(e.p, plugin.config.getString("purchase.tokens.failure"));
|
||||
}
|
||||
} else {
|
||||
plugin.tex.sendMessage(e.p, ChatColor.RED + "Buying Requires Vault and an Economy to work!");
|
||||
|
@ -1,5 +1,18 @@
|
||||
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.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -8,22 +21,16 @@ import org.bukkit.entity.Entity;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
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
|
||||
* Supports 1.8-1.17
|
||||
*
|
||||
* Github: https://github.com/BananaPuncher714/NBTEditor
|
||||
* Spigot: https://www.spigotmc.org/threads/269621/
|
||||
*
|
||||
* @version 7.16.1
|
||||
* @version 7.17.0
|
||||
* @author BananaPuncher714
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public final class NBTEditor {
|
||||
private static final Map< String, Class< ? > > classCache;
|
||||
private static final Map< String, Method > methodCache;
|
||||
@ -41,21 +48,17 @@ public final class NBTEditor {
|
||||
|
||||
classCache = new HashMap< String, Class<?> >();
|
||||
try {
|
||||
if ( LOCAL_VERSION.lessThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
||||
classCache.put( "NBTBase", Class.forName( "net.minecraft.server." + VERSION + "." + "NBTBase" ) );
|
||||
classCache.put( "NBTTagCompound", Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagCompound" ) );
|
||||
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( "CraftItemStack", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".inventory." + "CraftItemStack" ) );
|
||||
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( "EntityLiving", Class.forName( "net.minecraft.server." + VERSION + "." + "EntityLiving" ) );
|
||||
|
||||
classCache.put( "CraftWorld", Class.forName( "org.bukkit.craftbukkit." + VERSION + "." + "CraftWorld" ) );
|
||||
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" ) );
|
||||
@ -63,6 +66,33 @@ public final class NBTEditor {
|
||||
|
||||
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( "CraftItemStack", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".inventory." + "CraftItemStack" ) );
|
||||
classCache.put( "CraftMetaSkull", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".inventory." + "CraftMetaSkull" ) );
|
||||
|
||||
classCache.put( "CraftEntity", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".entity." + "CraftEntity" ) );
|
||||
|
||||
classCache.put( "CraftWorld", Class.forName( "org.bukkit.craftbukkit." + VERSION + "." + "CraftWorld" ) );
|
||||
classCache.put( "CraftBlockState", Class.forName( "org.bukkit.craftbukkit." + VERSION + ".block." + "CraftBlockState" ) );
|
||||
|
||||
classCache.put( "GameProfile", Class.forName( "com.mojang.authlib.GameProfile" ) );
|
||||
classCache.put( "Property", Class.forName( "com.mojang.authlib.properties.Property" ) );
|
||||
classCache.put( "PropertyMap", Class.forName( "com.mojang.authlib.properties.PropertyMap" ) );
|
||||
@ -72,6 +102,7 @@ public final class NBTEditor {
|
||||
|
||||
NBTClasses = new HashMap< Class< ? >, Class< ? > >();
|
||||
try {
|
||||
if ( LOCAL_VERSION.lessThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
||||
NBTClasses.put( Byte.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagByte" ) );
|
||||
NBTClasses.put( Boolean.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagByte" ) );
|
||||
NBTClasses.put( String.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagString" ) );
|
||||
@ -82,6 +113,18 @@ public final class NBTEditor {
|
||||
NBTClasses.put( Float.class, Class.forName( "net.minecraft.server." + VERSION + "." + "NBTTagFloat" ) );
|
||||
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 ) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -91,7 +134,11 @@ public final class NBTEditor {
|
||||
methodCache.put( "get", getNMSClass( "NBTTagCompound" ).getMethod( "get", String.class ) );
|
||||
methodCache.put( "set", getNMSClass( "NBTTagCompound" ).getMethod( "set", String.class, getNMSClass( "NBTBase" ) ) );
|
||||
methodCache.put( "hasKey", getNMSClass( "NBTTagCompound" ).getMethod( "hasKey", String.class ) );
|
||||
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 ) ) {
|
||||
methodCache.put( "getTypeId", getNMSClass( "NBTBase" ).getMethod( "getTypeId" ) );
|
||||
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" ) ) );
|
||||
}
|
||||
|
||||
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( "getType", getNMSClass( "World" ).getMethod( "getType", getNMSClass( "BlockPosition" ) ) );
|
||||
} else if ( LOCAL_VERSION.greaterThanOrEqualTo( MinecraftVersion.v1_12 ) ) {
|
||||
@ -144,6 +191,13 @@ public final class NBTEditor {
|
||||
} else {
|
||||
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( "getWorldHandle", getNMSClass( "CraftWorld" ).getMethod( "getHandle" ) );
|
||||
|
||||
@ -159,18 +213,6 @@ public final class NBTEditor {
|
||||
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 {
|
||||
methodCache.put( "setProfile", getNMSClass( "CraftMetaSkull" ).getDeclaredMethod( "setProfile", getNMSClass( "GameProfile" ) ) );
|
||||
methodCache.get( "setProfile" ).setAccessible( true );
|
||||
@ -210,19 +252,41 @@ public final class NBTEditor {
|
||||
|
||||
NBTTagFieldCache = new HashMap< Class< ? >, Field >();
|
||||
try {
|
||||
if ( LOCAL_VERSION.lessThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
||||
for ( Class< ? > clazz : NBTClasses.values() ) {
|
||||
Field data = clazz.getDeclaredField( "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 ) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
try {
|
||||
if ( LOCAL_VERSION.lessThanOrEqualTo( MinecraftVersion.v1_16 ) ) {
|
||||
NBTListData = getNMSClass( "NBTTagList" ).getDeclaredField( "list" );
|
||||
NBTListData.setAccessible( true );
|
||||
NBTCompoundMap = getNMSClass( "NBTTagCompound" ).getDeclaredField( "map" );
|
||||
} else {
|
||||
NBTListData = getNMSClass( "NBTTagList" ).getDeclaredField( "c" );
|
||||
NBTCompoundMap = getNMSClass( "NBTTagCompound" ).getDeclaredField( "x" );
|
||||
}
|
||||
NBTListData.setAccessible( true );
|
||||
NBTCompoundMap.setAccessible( true );
|
||||
} catch( Exception e ) {
|
||||
e.printStackTrace();
|
||||
@ -752,7 +816,7 @@ public final class NBTEditor {
|
||||
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 );
|
||||
} else {
|
||||
getMethod( "setTileTag" ).invoke( tileEntity, tag );
|
||||
|
Loading…
Reference in New Issue
Block a user