/** * Set the behavior of the current editing component to display information about a statistic * parameter with an entity type when the client hovers over the text. * * <p>Tooltips do not inherit display characteristics, such as color and styles, from the message * component on which they are applied. * * @param which The statistic to display. * @param entity The sole entity type parameter to the statistic. * @return This builder instance. * @exception IllegalArgumentException If the statistic requires a parameter which was not * supplied, or was supplied a parameter that was not required. */ public FancyMessage statisticTooltip(final Statistic which, EntityType entity) { Type type = which.getType(); if (type == Type.UNTYPED) { throw new IllegalArgumentException("That statistic needs no additional parameter!"); } if (type != Type.ENTITY) { throw new IllegalArgumentException( "Wrong parameter type for that statistic - needs " + type + "!"); } try { Object statistic = Reflection.getMethod( Reflection.getOBCClass("CraftStatistic"), "getEntityStatistic", Statistic.class, EntityType.class) .invoke(null, which, entity); return achievementTooltip( (String) Reflection.getField(Reflection.getNMSClass("Statistic"), "name").get(statistic)); } catch (IllegalAccessException e) { Bukkit.getLogger().log(Level.WARNING, "Could not access method.", e); return this; } catch (IllegalArgumentException e) { Bukkit.getLogger().log(Level.WARNING, "Argument could not be passed.", e); return this; } catch (InvocationTargetException e) { Bukkit.getLogger().log(Level.WARNING, "A error has occured durring invoking of method.", e); return this; } }
/** * Set the behavior of the current editing component to display information about an achievement * when the client hovers over the text. * * <p>Tooltips do not inherit display characteristics, such as color and styles, from the message * component on which they are applied. * * @param which The achievement to display. * @return This builder instance. */ public FancyMessage achievementTooltip(final Achievement which) { try { Object achievement = Reflection.getMethod( Reflection.getOBCClass("CraftStatistic"), "getNMSAchievement", Achievement.class) .invoke(null, which); return achievementTooltip( (String) Reflection.getField(Reflection.getNMSClass("Achievement"), "name").get(achievement)); } catch (Exception e) { e.printStackTrace(); return this; } }
/** * Set the behavior of the current editing component to display information about an item when the * client hovers over the text. * * <p>Tooltips do not inherit display characteristics, such as color and styles, from the message * component on which they are applied. * * @param itemStack The stack for which to display information. * @return This builder instance. */ public FancyMessage itemTooltip(final ItemStack itemStack) { try { Object nmsItem = Reflection.getMethod( Reflection.getOBCClass("inventory.CraftItemStack"), "asNMSCopy", ItemStack.class) .invoke(null, itemStack); return itemTooltip( Reflection.getMethod( Reflection.getNMSClass("ItemStack"), "save", Reflection.getNMSClass("NBTTagCompound")) .invoke(nmsItem, Reflection.getNMSClass("NBTTagCompound").newInstance()) .toString()); } catch (Exception e) { e.printStackTrace(); return this; } }
/** * Set the behavior of the current editing component to display information about a parameterless * statistic when the client hovers over the text. * * <p>Tooltips do not inherit display characteristics, such as color and styles, from the message * component on which they are applied. * * @param which The statistic to display. * @return This builder instance. * @exception IllegalArgumentException If the statistic requires a parameter which was not * supplied. */ public FancyMessage statisticTooltip(final Statistic which) { Type type = which.getType(); if (type != Type.UNTYPED) { throw new IllegalArgumentException( "That statistic requires an additional " + type + " parameter!"); } try { Object statistic = Reflection.getMethod( Reflection.getOBCClass("CraftStatistic"), "getNMSStatistic", Statistic.class) .invoke(null, which); return achievementTooltip( (String) Reflection.getField(Reflection.getNMSClass("Statistic"), "name").get(statistic)); } catch (Exception e) { e.printStackTrace(); return this; } }
/** * Set the behavior of the current editing component to display information about an achievement * when the client hovers over the text. * * <p>Tooltips do not inherit display characteristics, such as color and styles, from the message * component on which they are applied. * * @param which The achievement to display. * @return This builder instance. */ public FancyMessage achievementTooltip(final Achievement which) { try { Object achievement = Reflection.getMethod( Reflection.getOBCClass("CraftStatistic"), "getNMSAchievement", Achievement.class) .invoke(null, which); return achievementTooltip( (String) Reflection.getField(Reflection.getNMSClass("Achievement"), "name").get(achievement)); } catch (IllegalAccessException e) { Bukkit.getLogger().log(Level.WARNING, "Could not access method.", e); return this; } catch (IllegalArgumentException e) { Bukkit.getLogger().log(Level.WARNING, "Argument could not be passed.", e); return this; } catch (InvocationTargetException e) { Bukkit.getLogger().log(Level.WARNING, "A error has occured durring invoking of method.", e); return this; } }
/** * Set the behavior of the current editing component to display information about a statistic * parametered with an entity type when the client hovers over the text. * * <p>Tooltips do not inherit display characteristics, such as color and styles, from the message * component on which they are applied. * * @param which The statistic to display. * @param entity The sole entity type parameter to the statistic. * @return This builder instance. * @exception IllegalArgumentException If the statistic requires a parameter which was not * supplied, or was supplied a parameter that was not required. */ public FancyMessage statisticTooltip(final Statistic which, EntityType entity) { Type type = which.getType(); if (type == Type.UNTYPED) { throw new IllegalArgumentException("That statistic needs no additional parameter!"); } if (type != Type.ENTITY) { throw new IllegalArgumentException( "Wrong parameter type for that statistic - needs " + type + "!"); } try { Object statistic = Reflection.getMethod( Reflection.getOBCClass("CraftStatistic"), "getEntityStatistic", Statistic.class, EntityType.class) .invoke(null, which, entity); return achievementTooltip( (String) Reflection.getField(Reflection.getNMSClass("Statistic"), "name").get(statistic)); } catch (Exception e) { e.printStackTrace(); return this; } }