public static Class<?> getVersionedBukkitClass(String newVersion, String oldVersion) { Class<?> c = getBukkitClass(newVersion); if (c == null) { c = getBukkitClass(oldVersion); if (c == null) { Bukkit.getLogger().warning("Could not bind to " + newVersion + " or " + oldVersion); } } return c; }
public static void setMeta(ItemStack stack, String tag, String value) { if (NMSUtils.isEmpty(stack)) return; try { Object craft = getHandle(stack); if (craft == null) return; Object tagObject = getTag(craft); if (tagObject == null) return; class_NBTTagCompound_setStringMethod.invoke(tagObject, tag, value); } catch (Throwable ex) { ex.printStackTrace(); } }
public static int getMetaInt(ItemStack stack, String tag, int defaultValue) { if (NMSUtils.isEmpty(stack)) return defaultValue; int result = defaultValue; try { Object craft = getHandle(stack); if (craft == null) return defaultValue; Object tagObject = getTag(craft); if (tagObject == null) return defaultValue; Integer value = getMetaInt(tagObject, tag); result = value == null ? defaultValue : value; } catch (Throwable ex) { ex.printStackTrace(); } return result; }
public static void setMetaInt(ItemStack stack, String tag, int value) { if (NMSUtils.isEmpty(stack)) return; try { Object craft = getHandle(stack); if (craft == null) return; Object tagObject = getTag(craft); if (tagObject == null) return; setMetaInt(tagObject, tag, value); } catch (Throwable ex) { ex.printStackTrace(); } }
public static void removeMeta(ItemStack stack, String tag) { if (NMSUtils.isEmpty(stack)) return; try { Object craft = getHandle(stack); if (craft == null) return; Object tagObject = getTag(craft); if (tagObject == null) return; removeMeta(tagObject, tag); } catch (Throwable ex) { ex.printStackTrace(); } }
String type = NMSUtils.getMetaString(entity, "id"); Vector position = NMSUtils.getPosition(entity, "Pos"); if (position == null) continue; position = position.subtract(origin).subtract(center); String motive = NMSUtils.getMetaString(entity, "Motive"); motive = motive.toLowerCase(); Art art = Art.ALBAN; byte facing = NMSUtils.getMetaByte(entity, "Facing"); EntityData painting = com.elmakers.mine.bukkit.entity.EntityData.loadPainting(position, art, getFacing(facing)); entities.add(painting); } else if (type.equals("ItemFrame")) { byte facing = NMSUtils.getMetaByte(entity, "Facing"); byte rotation = NMSUtils.getMetaByte(entity, "ItemRotation"); Rotation rot = Rotation.NONE; if (rotation < Rotation.values().length) { rot = Rotation.values()[rotation]; ItemStack item = NMSUtils.getItem(NMSUtils.getNode(entity, "Item")); EntityData itemFrame = com.elmakers.mine.bukkit.entity.EntityData.loadItemFrame(position, item, getFacing(facing), rot); entities.add(itemFrame); Integer x = NMSUtils.getMetaInt(tileEntity, "x"); Integer y = NMSUtils.getMetaInt(tileEntity, "y"); Integer z = NMSUtils.getMetaInt(tileEntity, "z"); try { if (DefaultMaterials.isCommand(material)) {
Class<?> projectileType = NMSUtils.getBukkitClass("net.minecraft.server.Entity" + projectileTypeName); if (projectileType == null || (!arrowClass.isAssignableFrom(projectileType) Object nmsWorld = NMSUtils.getHandle(location.getWorld()); LivingEntity player = mage.getLivingEntity(); for (int i = 0; i < count; i++) { Entity entity = NMSUtils.getBukkitEntity(nmsProjectile); if (entity == null || !(entity instanceof Projectile)) { throw new Exception("Got invalid bukkit entity from projectile of class " + projectileTypeName);
public static Object createNode(ItemStack stack, String tag) { if (NMSUtils.isEmpty(stack)) return null; Object outputObject = getNode(stack, tag); if (outputObject == null) { try { Object craft = getHandle(stack); if (craft == null) return null; Object tagObject = getTag(craft); if (tagObject == null) { tagObject = class_NBTTagCompound_constructor.newInstance(); class_ItemStack_tagField.set(craft, tagObject); } outputObject = class_NBTTagCompound_constructor.newInstance(); class_NBTTagCompound_setMethod.invoke(tagObject, tag, outputObject); } catch (Throwable ex) { ex.printStackTrace(); } } return outputObject; }
public static boolean isUnbreakable(ItemStack stack) { if (NMSUtils.isEmpty(stack)) return false; Boolean unbreakableFlag = null; try { Object craft = getHandle(stack); if (craft == null) return false; Object tagObject = getTag(craft); if (tagObject == null) return false; unbreakableFlag = getMetaBoolean(tagObject, "Unbreakable"); } catch (Throwable ex) { ex.printStackTrace(); } return unbreakableFlag != null && unbreakableFlag; }
public static void setMetaBoolean(ItemStack stack, String tag, boolean value) { if (NMSUtils.isEmpty(stack)) return; try { Object craft = getHandle(stack); if (craft == null) return; Object tagObject = getTag(craft); if (tagObject == null) return; setMetaBoolean(tagObject, tag, value); } catch (Throwable ex) { ex.printStackTrace(); } }
class_Block = fixBukkitClass("net.minecraft.server.Block"); class_Entity = fixBukkitClass("net.minecraft.server.Entity"); class_EntityLiving = fixBukkitClass("net.minecraft.server.EntityLiving"); class_EntityHuman = fixBukkitClass("net.minecraft.server.EntityHuman"); class_ItemStack = fixBukkitClass("net.minecraft.server.ItemStack"); class_DataWatcher = fixBukkitClass("net.minecraft.server.DataWatcher"); class_DataWatcherObject = fixBukkitClass("net.minecraft.server.DataWatcherObject"); class_NBTBase = fixBukkitClass("net.minecraft.server.NBTBase"); class_NBTTagCompound = fixBukkitClass("net.minecraft.server.NBTTagCompound"); class_NBTTagList = fixBukkitClass("net.minecraft.server.NBTTagList"); class_NBTTagString = fixBukkitClass("net.minecraft.server.NBTTagString"); class_NBTTagByte = fixBukkitClass("net.minecraft.server.NBTTagByte"); class_NBTTagDouble = fixBukkitClass("net.minecraft.server.NBTTagDouble"); class_NBTTagFloat = fixBukkitClass("net.minecraft.server.NBTTagFloat"); class_NBTTagInt = fixBukkitClass("net.minecraft.server.NBTTagInt"); class_NBTTagLong = fixBukkitClass("net.minecraft.server.NBTTagLong"); class_NBTTagShort = fixBukkitClass("net.minecraft.server.NBTTagShort"); class_CraftWorld = fixBukkitClass("org.bukkit.craftbukkit.CraftWorld"); class_CraftInventoryCustom = fixBukkitClass("org.bukkit.craftbukkit.inventory.CraftInventoryCustom"); class_CraftItemStack = fixBukkitClass("org.bukkit.craftbukkit.inventory.CraftItemStack"); class_CraftBlockState = fixBukkitClass("org.bukkit.craftbukkit.block.CraftBlockState"); class_CraftTask = fixBukkitClass("org.bukkit.craftbukkit.scheduler.CraftTask"); class_CraftLivingEntity = fixBukkitClass("org.bukkit.craftbukkit.entity.CraftLivingEntity"); class_Packet = fixBukkitClass("net.minecraft.server.Packet"); class_World = fixBukkitClass("net.minecraft.server.World"); class_WorldServer = fixBukkitClass("net.minecraft.server.WorldServer"); class_EnumSkyBlock = (Class<Enum>)fixBukkitClass("net.minecraft.server.EnumSkyBlock"); class_EnumSoundCategory = (Class<Enum>)fixBukkitClass("net.minecraft.server.SoundCategory"); enum_SoundCategory_PLAYERS = Enum.valueOf(class_EnumSoundCategory, "PLAYERS");
public static boolean loadAllTagsFromNBT(ConfigurationSection tags, ItemStack item) { if (item == null) { return false; } Object handle = NMSUtils.getHandle(item); if (handle == null) return false; Object tag = NMSUtils.getTag(handle); if (tag == null) return false; return loadAllTagsFromNBT(tags, tag); }
public static ItemStack makeReal(ItemStack stack) { if (stack == null) return null; Object nmsStack = getHandle(stack); if (nmsStack == null) { stack = getCopy(stack); nmsStack = getHandle(stack); } if (nmsStack == null) { return null; } try { Object tag = class_ItemStack_tagField.get(nmsStack); if (tag == null) { class_ItemStack_tagField.set(nmsStack, class_NBTTagCompound_constructor.newInstance()); } } catch (Throwable ex) { ex.printStackTrace(); return null; } return stack; }
public static boolean isReady(org.bukkit.Chunk chunk) { if (class_Chunk_isReadyMethod == null) return true; Object chunkHandle = getHandle(chunk); boolean ready = true; try { ready = (Boolean)class_Chunk_isReadyMethod.invoke(chunkHandle); } catch (Throwable ex) { ex.printStackTrace(); } return ready; }
public static String getTemporaryMessage(ItemStack itemStack) { return getMetaString(itemStack, "temporary"); }
public static Map<String, Object> getMap(ConfigurationSection section) { return getTypedMap(section); }
public static ItemStack[] getItems(Object rootTag, String tagName) { try { Object itemList = class_NBTTagCompound_getListMethod.invoke(rootTag, tagName, NBT_TYPE_COMPOUND); Integer size = (Integer)class_NBTTagList_sizeMethod.invoke(itemList); ItemStack[] items = new ItemStack[size]; for (int i = 0; i < size; i++) { try { Object itemData = class_NBTTagList_getMethod.invoke(itemList, i); if (itemData != null) { items[i] = getItem(itemData); } } catch (Exception ex) { ex.printStackTrace(); } } return items; } catch (Exception ex) { ex.printStackTrace(); } return null; }
public ItemData(ItemStack itemStack) { this.item = NMSUtils.getCopy(itemStack); this.key = itemStack.getType().toString(); }
Entity entity = NMSUtils.getBukkitEntity(nmsProjectile); if (entity == null || !(entity instanceof Projectile)) { throw new Exception("Got invalid bukkit entity from projectile of class " + projectileType.getName());