public static Object getTag(ItemStack itemStack) { Object tag = null; try { Object mcItemStack = getHandle(itemStack); if (mcItemStack == null) return null; tag = class_ItemStack_tagField.get(mcItemStack); } catch (Throwable ex) { ex.printStackTrace(); } return tag; }
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; }
protected static void sendPacket(Player player, Object packet) throws Exception { Object playerHandle = getHandle(player); Field connectionField = playerHandle.getClass().getField("playerConnection"); Object connection = connectionField.get(playerHandle); Method sendPacketMethod = connection.getClass().getMethod("sendPacket", class_Packet); sendPacketMethod.invoke(connection, packet); }
public static boolean createExplosion(Entity entity, World world, double x, double y, double z, float power, boolean setFire, boolean breakBlocks) { boolean result = false; if (world == null) return false; try { Object worldHandle = getHandle(world); if (worldHandle == null) return false; Object entityHandle = entity == null ? null : getHandle(entity); Object explosion = class_World_explodeMethod.invoke(worldHandle, entityHandle, x, y, z, power, setFire, breakBlocks); Field cancelledField = explosion.getClass().getDeclaredField("wasCanceled"); result = (Boolean)cancelledField.get(explosion); } catch (Throwable ex) { ex.printStackTrace(); result = false; } return result; }
public static boolean isEmpty(ItemStack itemStack) { if (itemStack == null || itemStack.getType() == Material.AIR) return true; if (class_ItemStack_isEmptyMethod == null) return false; try { Object handle = getHandle(itemStack); if (handle == null) return false; return (Boolean)class_ItemStack_isEmptyMethod.invoke(handle); } catch (Throwable ex) { ex.printStackTrace(); } return false; }
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 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 void makeUnbreakable(ItemStack stack) { if (NMSUtils.isEmpty(stack)) return; try { Object craft = getHandle(stack); if (craft == null) return; Object tagObject = getTag(craft); if (tagObject == null) return; Object unbreakableFlag = null; unbreakableFlag = class_NBTTagByte_constructor.newInstance((byte) 1); class_NBTTagCompound_setMethod.invoke(tagObject, "Unbreakable", unbreakableFlag); } catch (Throwable ex) { ex.printStackTrace(); } }
public static void hideFlags(ItemStack stack, byte flags) { if (NMSUtils.isEmpty(stack)) return; try { Object craft = getHandle(stack); if (craft == null) return; Object tagObject = getTag(craft); if (tagObject == null) return; Object hideFlag = null; hideFlag = class_NBTTagByte_constructor.newInstance(flags); class_NBTTagCompound_setMethod.invoke(tagObject, "HideFlags", hideFlag); } catch (Throwable ex) { ex.printStackTrace(); } }
public static Object getNode(ItemStack stack, String tag) { if (NMSUtils.isEmpty(stack)) return null; Object meta = null; try { Object craft = getHandle(stack); if (craft == null) return null; Object tagObject = getTag(craft); if (tagObject == null) return null; meta = class_NBTTagCompound_getMethod.invoke(tagObject, tag); } catch (Throwable ex) { ex.printStackTrace(); } return meta; }
public static String getMetaString(ItemStack stack, String tag) { if (NMSUtils.isEmpty(stack)) return null; String meta = null; try { Object craft = getHandle(stack); if (craft == null) return null; Object tagObject = getTag(craft); if (tagObject == null) return null; meta = (String)class_NBTTagCompound_getStringMethod.invoke(tagObject, tag); } catch (Throwable ex) { ex.printStackTrace(); } return meta; }
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 boolean setMetaNode(ItemStack stack, String tag, Object child) { if (NMSUtils.isEmpty(stack)) return false; try { Object craft = getHandle(stack); if (craft == null) return false; Object node = getTag(craft); if (node == null) return false; if (child == null) { class_NBTTagCompound_removeMethod.invoke(node, tag); } else { class_NBTTagCompound_setMethod.invoke(node, tag, child); } } catch (Throwable ex) { ex.printStackTrace(); return false; } return true; }
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 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(); } }
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(); } }
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 boolean getMetaBoolean(ItemStack stack, String tag, boolean defaultValue) { if (NMSUtils.isEmpty(stack)) return defaultValue; boolean result = defaultValue; try { Object craft = getHandle(stack); if (craft == null) return defaultValue; Object tagObject = getTag(craft); if (tagObject == null) return defaultValue; Boolean value = getMetaBoolean(tagObject, tag); result = value == null ? defaultValue : value; } catch (Throwable ex) { ex.printStackTrace(); } return result; }
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; }