37 lines
1.7 KiB
Java
37 lines
1.7 KiB
Java
/*
|
|
* Decompiled with CFR 0_115.
|
|
*
|
|
* Could not load the following classes:
|
|
* org.bukkit.Bukkit
|
|
* org.bukkit.inventory.ItemStack
|
|
*/
|
|
package me.shansen.nbt;
|
|
|
|
import java.lang.reflect.Method;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
public class NbtReflection {
|
|
public static ItemStack setNewEntityTag(ItemStack itemStack, String entityType) {
|
|
try {
|
|
String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
|
|
if (version.contains("1_7") || version.contains("1_8")) {
|
|
return itemStack;
|
|
}
|
|
Class craftItemStack = Class.forName("org.bukkit.craftbukkit." + version + ".inventory.CraftItemStack");
|
|
Object nmsItemStack = craftItemStack.getMethod("asNMSCopy", ItemStack.class).invoke(craftItemStack, new Object[]{itemStack});
|
|
Object rootTag = Class.forName("net.minecraft.server." + version + ".NBTTagCompound").newInstance();
|
|
Object nbtEntityTag = Class.forName("net.minecraft.server." + version + ".NBTTagCompound").newInstance();
|
|
nbtEntityTag.getClass().getMethod("setString", String.class, String.class).invoke(nbtEntityTag, "id", entityType);
|
|
rootTag.getClass().getMethod("set", String.class, rootTag.getClass().getSuperclass()).invoke(rootTag, "EntityTag", nbtEntityTag);
|
|
nmsItemStack.getClass().getMethod("setTag", rootTag.getClass()).invoke(nmsItemStack, rootTag);
|
|
return (ItemStack)craftItemStack.getMethod("asBukkitCopy", nmsItemStack.getClass()).invoke(craftItemStack, nmsItemStack);
|
|
}
|
|
catch (Exception ex) {
|
|
ex.printStackTrace();
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|