@Override public @Nullable ItemModifyModule parse(MapModuleContext context, Logger logger, Document doc) throws InvalidXMLException { List<ItemRule> rules = new ArrayList<>(); for(Element elRule : XMLUtils.flattenElements(doc.getRootElement(), "item-mods", "rule")) { MaterialMatcher items = XMLUtils.parseMaterialMatcher(XMLUtils.getRequiredUniqueChild(elRule, "match")); // Always use a PotionMeta so the rule can have potion effects, though it will only apply those to potion items final Element elModify = XMLUtils.getRequiredUniqueChild(elRule, "modify"); final PotionMeta meta = (PotionMeta) Bukkit.getItemFactory().getItemMeta(Material.POTION); context.needModule(ItemParser.class).parseItemMeta(elModify, meta); final boolean defaultAttributes = XMLUtils.parseBoolean(elModify.getAttribute("default-attributes"), false); ItemRule rule = new ItemRule(items, meta, defaultAttributes); rules.add(rule); } return rules.isEmpty() ? null : new ItemModifyModule(rules); }
@Nullable @Override protected Number[] get(Event e) { ItemStack i = item.getSingle(e); if (i == null) { return null; } if (PotionUtils.isPotionItem(i)) { PotionMeta meta = (PotionMeta) i.getItemMeta(); PotionEffect eff = PotionUtils.getEffectByEffectType(meta, effectType.getSingle(e)); if (eff == null) { return null; } return new Number[]{eff.getAmplifier()}; } return null; }
@Nullable @Override protected Timespan[] get(Event e) { ItemStack i = item.getSingle(e); if (i == null) { return null; } if (PotionUtils.isPotionItem(i)) { PotionMeta meta = (PotionMeta) i.getItemMeta(); PotionEffect eff = PotionUtils.getEffectByEffectType(meta, effectType.getSingle(e)); if (eff == null) { return null; } return new Timespan[]{Timespan.fromTicks_i(eff.getDuration())}; } return null; }
/** * l.add("��2��ˮ,����..."); l.add("��4�������ܽ��,��l���м�������!"); l.add("��b��Ҫ�þ�ˮװ�����������������!"); * @return ��ˮ */ public static ItemStack getSeaWater(){ ItemStack sw=new ItemStack(Material.POTION); PotionMeta im = (PotionMeta) sw.getItemMeta(); im.setColor(Color.fromRGB(15, 103, 219)); im.setDisplayName("��1��l��ˮ"); List<String> l=new LinkedList<String>(); l.add("��a��l"+rs.getLoreTabel("Thirst")+": ��b��l-"+Utils.random(2, 20)+"%"); l.add("��2��l"+rs.getLoreTabel("SickKind")+": ��c��l"+rs.defSick.split(";")[(int)Utils.random(0, rs.defSick.split(";").length)]); l.add("��2��l"+rs.getLoreTabel("Sickness")+": ��c��l"+Utils.random(20, 30)+"%"); l.add(""); l.add("��7��l"+rs.getLoreTabel("Weight")+": 1"); l.add(""); l.add("��2��ˮ,����..."); l.add("��4�������ܽ��,��l���м�������!"); l.add("��b��Ҫ�þ�ˮװ�����������������!"); im.setLore(l); sw.setItemMeta(im); return sw; }
/** * l.add("��2��ˮ,�����ճɿ�ˮ"); l.add("��4��lֱ�Ӻ��м�������!"); l.add("��b��Ҫ�á�e��l��ˮװ�á�b���������������!"); * @return��ˮ */ public static ItemStack getLakeWater(){ ItemStack sw=new ItemStack(Material.POTION); PotionMeta im = (PotionMeta) sw.getItemMeta(); im.setColor(Color.fromRGB(36, 165, 229)); im.setDisplayName("��2��l��ˮ"); List<String> l=new LinkedList<String>(); l.add("��2��l"+rs.getLoreTabel("Thirst")+": ��b��l"+Utils.random(5, 20)+"%"); l.add("��2��l"+rs.getLoreTabel("SickKind")+": ��c��l"+rs.defSick.split(";")[(int)Utils.random(0, rs.defSick.split(";").length)]); l.add("��2��l"+rs.getLoreTabel("Sickness")+": ��c��l"+Utils.random(5, 15)+"%"); l.add(""); l.add("��7��l"+rs.getLoreTabel("Weight")+": 1"); l.add(""); l.add("��4��lֱ�Ӻ��м�������!"); l.add("��b��Ҫ�á�e��l��ˮװ�á�b���������������!"); im.setLore(l); sw.setItemMeta(im); return sw; }
/** * l.add("��2����ֱ������"); l.add("��a��l���Ի������Ƽ���!"); l.add("��c������ů����!"); * @return ��ˮ */ public static ItemStack getHotWater(){ ItemStack sw=new ItemStack(Material.POTION); PotionMeta im = (PotionMeta) sw.getItemMeta(); im.setColor(Color.fromRGB(36, 165, 229)); im.setDisplayName("��d��l��ˮ"); List<String> l=new LinkedList<String>(); l.add("��a��l"+rs.getLoreTabel("Thirst")+": ��b��l"+Utils.random(10, 25)+"%"); l.add("��c��l"+rs.getLoreTabel("Tem")+": ��b��l"+Utils.random(0.1, 1.5)); l.add(""); l.add("��7��l"+rs.getLoreTabel("Weight")+": 1"); l.add(""); l.add("��2����ֱ������"); l.add("��a��l���Ի������Ƽ���!"); l.add("��c������ů����!"); im.setLore(l); sw.setItemMeta(im); return sw; }
/** * l.add("��2����ֱ������"); l.add("��b��l���Ը����彵��!"); * @return ��ˮ */ public static ItemStack getIceWater(){ ItemStack sw=new ItemStack(Material.POTION); PotionMeta im = (PotionMeta) sw.getItemMeta(); im.setColor(Color.fromRGB(36, 165, 229)); im.setDisplayName("��3��l��ˮ"); List<String> l=new LinkedList<String>(); l.add("��a��l"+rs.getLoreTabel("Thirst")+": ��b��l"+Utils.random(10, 25)+"%"); l.add("��3��l"+rs.getLoreTabel("Tem")+": ��c��l-"+Utils.random(0.1, 1.5)+"%"); l.add(""); l.add("��7��l"+rs.getLoreTabel("Weight")+": 1"); l.add(""); l.add("��2����ֱ������"); l.add("��b��l���Ը����彵��!"); im.setLore(l); sw.setItemMeta(im); return sw; }
/** * l.add("��2����ֱ������"); * @return ��ˮ */ public static ItemStack getFreshWater(){ ItemStack sw=new ItemStack(Material.POTION); PotionMeta im = (PotionMeta) sw.getItemMeta(); im.setColor(Color.fromRGB(36, 165, 229)); im.setDisplayName("��3��l��ˮ"); List<String> l=new LinkedList<String>(); l.add("��a��l"+rs.getLoreTabel("Thirst")+": ��b��l"+Utils.random(10, 25)+"%"); l.add(""); l.add("��7��l"+rs.getLoreTabel("Weight")+": 1"); l.add(""); l.add("��2����ֱ������"); im.setLore(l); sw.setItemMeta(im); return sw; }
/** *l.add("��2��Ȼ���Խ��,����..."); l.add("��e�м���������...."); * @return ����ˮ */ public static ItemStack getSwamplandWater(){ ItemStack sw=new ItemStack(Material.POTION); PotionMeta im = (PotionMeta) sw.getItemMeta(); im.setColor(Color.fromRGB(50, 69, 107)); im.setDisplayName("��8��l����ˮ"); List<String> l=new LinkedList<String>(); l.add("��a��l"+rs.getLoreTabel("Thirst")+": ��b��l"+Utils.random(2, 15)+"%"); l.add("��2��l"+rs.getLoreTabel("SickKind")+": ��c��l"+rs.defSick.split(";")[(int)Utils.random(0, rs.defSick.split(";").length)]); l.add("��2��l"+rs.getLoreTabel("Sickness")+": ��c��l"+Utils.random(30, 50)+"%"); l.add(""); l.add("��7��l"+rs.getLoreTabel("Weight")+": 1"); l.add(""); l.add("��2��Ȼ���Խ��,����..."); l.add("��e�м���������...."); im.setLore(l); sw.setItemMeta(im); return sw; }
/** l.add("��2��ˮ�����˵���DZȽϸɾ���"); l.add("��b���ǻ����н�С���ʵò�"); * @return ��ˮ */ public static ItemStack getRainwater(){ ItemStack sw=new ItemStack(Material.POTION); PotionMeta im = (PotionMeta) sw.getItemMeta(); im.setColor(Color.fromRGB(36, 165, 229)); im.setDisplayName("��b��l��ˮ"); List<String> l=new LinkedList<String>(); l.add("��a��l"+rs.getLoreTabel("Thirst")+": ��b��l"+Utils.random(5, 25)+"%"); l.add("��2��l"+rs.getLoreTabel("SickKind")+": ��c��l"+rs.defSick.split(";")[(int)Utils.random(0, rs.defSick.split(";").length)]); l.add("��2��l"+rs.getLoreTabel("Sickness")+": ��c��l"+Utils.random(2, 10)+"%"); l.add(""); l.add("��7��l"+rs.getLoreTabel("Weight")+": 1"); l.add(""); l.add("��2��ˮ�����˵���DZȽϸɾ���"); l.add("��b���ǻ����н�С���ʵò�"); im.setLore(l); sw.setItemMeta(im); return sw; }
/** * Turn an ItemStack with a Material of POTION into a functional potion * @param typeName PotionType string representing the potion type. (Matches Bukkit PotionType enum.) * @param upgraded Boolean specifying a level two potion if true * @param extended Is this an extended duration potion? */ public void addPotion(String typeName, boolean upgraded, boolean extended) { Material mat = this.item.getType(); Set<Material> types = new HashSet<>(); types.add(Material.POTION); types.add(Material.SPLASH_POTION); types.add(Material.LINGERING_POTION); types.add(Material.TIPPED_ARROW); if (!types.contains(mat)) return; try { PotionType type = PotionType.valueOf(typeName.toUpperCase()); PotionData pd = new PotionData(type, extended, upgraded); PotionMeta meta = (PotionMeta) this.item.getItemMeta(); meta.setBasePotionData(pd); this.item.setItemMeta(meta); } catch (Exception ex) { Bukkit.getLogger().warning(String.format("Kit configuration error: %s", ex.getMessage())); } }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerItemConsumeEvent(PlayerItemConsumeEvent event) { Player player = event.getPlayer(); if (!WorldGuardUtils.hasBypass(player)) { ItemMeta itemMeta = event.getItem().getItemMeta(); if (itemMeta instanceof PotionMeta) { WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(GiveEffectsFlag.class).drinkPotion(player, Potion.fromItemStack(event.getItem()).getEffects()); } else { Material material = event.getItem().getType(); if (material == Material.MILK_BUCKET) { WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(GiveEffectsFlag.class).drinkMilk(player); } } } }
public static ItemMeta parse(Element xml, ItemMeta source) { if (source instanceof BannerMeta) { return parseBanner(xml, (BannerMeta) source); } else if (source instanceof BookMeta) { return parseBook(xml, (BookMeta) source); } else if (source instanceof EnchantmentStorageMeta) { return parseEnchantmentStorage(xml, (EnchantmentStorageMeta) source); } else if (source instanceof FireworkMeta) { return parseFirework(xml, (FireworkMeta) source); } else if (source instanceof FireworkEffectMeta) { return parseFireworkEffect(xml, (FireworkEffectMeta) source); } else if (source instanceof LeatherArmorMeta) { return parseLeatherArmor(xml, (LeatherArmorMeta) source); } else if (source instanceof MapMeta) { return parseMap(xml, (MapMeta) source); } else if (source instanceof PotionMeta) { return parsePotion(xml, (PotionMeta) source); } else if (source instanceof SkullMeta) { return parseSkull(xml, (SkullMeta) source); } else if (source instanceof SpawnEggMeta) { return parseSpawnEgg(xml, (SpawnEggMeta) source); } return source; }
public void LuckyPotion(BlockBreakEvent event){ Location loc = event.getBlock().getLocation(); World world = loc.getWorld(); ItemStack energyPotion = new ItemStack(Material.POTION, 1); PotionMeta energyPotionMeta = (PotionMeta) energyPotion.getItemMeta(); energyPotionMeta.setDisplayName("§6Lucky Potion"); List<String> lore = new ArrayList<String>(); lore.add("§6"+ LuckyBlocksMainController.instance.language.getString("POTION_DURATION")); energyPotionMeta.setLore(lore); energyPotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.SPEED, 20*60, 1), true); energyPotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 20*60, 1), true); energyPotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.ABSORPTION, 20*60, 1), true); energyPotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.HEAL, 20*60, 1), true); energyPotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.HEALTH_BOOST, 20*60, 1), true); energyPotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 20*60, 1), true); energyPotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.JUMP, 20*60, 3), true); energyPotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.WATER_BREATHING, 20*60, 3), true); energyPotion.setItemMeta(energyPotionMeta); Potion po = new Potion((byte) 8258); po.apply(energyPotion); world.dropItemNaturally(loc,energyPotion); }
public static boolean denyPotion(ItemStack result, Player p){ List<String> Pots = RPConfig.getStringList("server-protection.deny-potions"); if (result != null && Pots.size() > 0 && (result.getType().name().contains("POTION") || result.getType().name().contains("TIPPED"))){ String potname = ""; if (RedProtect.get().version >= 190){ PotionMeta pot = (PotionMeta) result.getItemMeta(); potname = pot.getBasePotionData().getType().name(); } if (RedProtect.get().version <= 180 && Potion.fromItemStack(result) != null){ potname = Potion.fromItemStack(result).getType().name(); } if (Pots.contains(potname)){ RPLang.sendMessage(p, "playerlistener.denypotion"); return true; } } return false; }
/** * Sets this item's main effect, assuming it is a potion. * <p /> * <b>UNSAFE</b> * * @param effectType effect type to set * * @return this item builder instance, for chaining * @see ItemBuilder#potionMain(PotionData) */ @Deprecated public ItemBuilder potionMain(PotionEffectType effectType) { if (isPotionMeta()) { try { PotionMeta potionMeta = (PotionMeta) this.itemMeta; if (potionMeta.setMainEffect(effectType) == false) { potionMeta.setBasePotionData(new PotionData(potionTypeFromLegacy(effectType), false, false)); } } catch (Exception e) { if (!this.failSilently) { e.printStackTrace(); } } } return this; }
public ItemStack toItemStack(int amount) { ItemStack potion = new ItemStack(Material.POTION, amount, this.getDataValue()); PotionMeta meta = (PotionMeta) potion.getItemMeta(); if (this.getName() != null) { meta.setDisplayName(this.getName()); } if (this.getLore() != null && !this.getLore().isEmpty()) { meta.setLore(this.getLore()); } if (!this.getEffects().isEmpty()) { for (PotionEffect effect : this.getEffects()) { meta.addCustomEffect(effect, true); } } potion.setItemMeta(meta); return potion; }
private static void appendItemPotion(final StringBuilder builder, final PotionMeta meta) { if (meta.hasCustomEffects()) { builder.append("CustomPotionEffects:["); final Iterator<PotionEffect> it = meta.getCustomEffects().iterator(); while (it.hasNext()) { final PotionEffect effect = it.next(); builder.append("{Id:") .append(effect.getType().getId()) .append(",Amplifier:") .append(effect.getAmplifier()) .append(",Duration:") .append(effect.getDuration()) .append(",Ambient:") .append(effect.isAmbient() ? 1 : 0) .append('}'); if (it.hasNext()) { builder.append(','); } } builder.append("],"); } }
/** * Gets a String representing all special meta of this ItemStack, if any. * * @param is the ItemStack * @param separators the separators * * @return a String representing this ItemStack's special meta or an empty String * * @throws InventoryUtilException if something goes wrong */ public static String getSpecialMetaString(final ItemStack is, final String[] separators) throws InventoryUtilException { final ItemMeta meta = is.getItemMeta(); if (meta instanceof BookMeta) { return getBookMetaString((BookMeta)meta); } else if (meta instanceof EnchantmentStorageMeta) { return getEnchantmentStorageMetaString((EnchantmentStorageMeta)meta, separators); } else if (meta instanceof FireworkEffectMeta) { return getFireworkEffectMetaString((FireworkEffectMeta)meta); } else if (meta instanceof FireworkMeta) { return getFireworkMetaString((FireworkMeta)meta, separators); } else if (meta instanceof LeatherArmorMeta) { return getLeatherArmorMetaString((LeatherArmorMeta)meta); } else if (meta instanceof MapMeta) { return getMapMetaString((MapMeta)meta); } else if (meta instanceof PotionMeta) { return getPotionMetaString((PotionMeta)meta, separators); } else if (meta instanceof SkullMeta) { return getSkullMetaString((SkullMeta)meta); } else { throw new InventoryUtilException("Unknown Meta type '" + meta.getClass().getName() + "', please report this to the author (Ribesg)!"); } }
private static String getPotionMetaString(final PotionMeta meta, final String[] separators) { final List<PotionEffect> effects = meta.getCustomEffects(); final StringBuilder builder = new StringBuilder(); if (!effects.isEmpty()) { PotionEffect effect = effects.get(0); builder.append(effect.getType().getName()).append(separators[2]); builder.append(effect.getDuration()).append(separators[2]); builder.append(effect.getAmplifier()); for (int i = 1; i < effects.size(); i++) { builder.append(separators[1]); effect = effects.get(i); builder.append(effect.getType().getName()).append(separators[2]); builder.append(effect.getDuration()).append(separators[2]); builder.append(effect.getAmplifier()); } } return builder.toString(); }
public void addKit(String kitName, ItemStack icon, ItemStack[] items) { // splash portion of healing I causes illegal argument exception -> replace it with splash potion of healing II for (ItemStack stack : items) { if (stack != null && stack.getType() != Material.AIR) { if (stack.getItemMeta() instanceof PotionMeta) { if (stack.getDurability() == 16453) { stack.setDurability((short) 16421); } } } } IZvPKit kit = new KCustomKit(this.kitPath.getAbsolutePath(), kitName, icon, 0.0, items); this.kits.add(kit); loadKits(); }
private VillagerTrade getTradingItem(MerchantCategory category, ItemStack stack, Game game, Player player) { for (VillagerTrade trade : category.getOffers()) { if ((trade.getItem1().getType() != Material.AIR) || (trade.getRewardItem().getType() != Material.AIR)) { ItemStack iStack = toItemStack(trade, player, game); if ((iStack.getType() == Material.ENDER_CHEST) && (stack.getType() == Material.ENDER_CHEST)) return trade; if (((iStack.getType() == Material.POTION) || ((Main .getInstance().getCurrentVersion().startsWith("v1_9")) && ((iStack .getType().equals(Material.valueOf("TIPPED_ARROW"))) || (iStack.getType().equals(Material .valueOf("LINGERING_POTION"))) || (iStack .getType() .equals(Material.valueOf("SPLASH_POTION")))))) && (((PotionMeta) iStack.getItemMeta()) .getCustomEffects().equals(((PotionMeta) stack .getItemMeta()).getCustomEffects()))) { return trade; } if (iStack.equals(stack)) { return trade; } } } return null; }
public static ItemStack splashPotion(PotionType type, boolean extended, boolean upgraded, String name, String... lores) { ItemStack potion = new ItemStack(Material.SPLASH_POTION, 1); PotionMeta meta = (PotionMeta) potion.getItemMeta(); meta.setBasePotionData(new PotionData(type, extended, upgraded)); potion.setItemMeta(meta); return potion; }
@Override public void processMeta(Player player, ItemMeta m) { super.processMeta(player, m); PotionMeta meta = (PotionMeta) m; if(type != null) meta.setBasePotionData(new PotionData(type)); if(customColor != null) meta.setColor(customColor.resolve(player)); meta.clearCustomEffects(); for(PotionEffect e : customEffects) meta.addCustomEffect(e, true); }
public ItemMaker addPotionType(PotionType type, int time, int amplifier) { PotionMeta itemMeta = (PotionMeta) this.itemStack.getItemMeta(); itemMeta.setMainEffect(type.getEffectType()); itemMeta.addCustomEffect(new PotionEffect(type.getEffectType(), time * 20, amplifier), true); this.itemStack.setItemMeta(itemMeta); return this; }
public ItemStack parseItem(Element el, Material type, short damage) throws InvalidXMLException { int amount = XMLUtils.parseNumber(el.getAttribute("amount"), Integer.class, 1); // If the item is a potion with non-zero damage, and there is // no modern potion ID, decode the legacy damage value. final Potion legacyPotion; if(type == Material.POTION && damage > 0 && el.getAttribute("potion") == null) { try { legacyPotion = Potion.fromDamage(damage); } catch(IllegalArgumentException e) { throw new InvalidXMLException("Invalid legacy potion damage value " + damage + ": " + e.getMessage(), el, e); } // If the legacy splash bit is set, convert to a splash potion if(legacyPotion.isSplash()) { type = Material.SPLASH_POTION; legacyPotion.setSplash(false); } // Potions always have damage 0 damage = 0; } else { legacyPotion = null; } ItemStack itemStack = new ItemStack(type, amount, damage); if(itemStack.getType() != type) { throw new InvalidXMLException("Invalid item/block", el); } final ItemMeta meta = itemStack.getItemMeta(); if(meta != null) { // This happens if the item is "air" parseItemMeta(el, meta); // If we decoded a legacy potion, apply it now, but only if there are no custom effects. // This emulates the old behavior of custom effects overriding default effects. if(legacyPotion != null) { final PotionMeta potionMeta = (PotionMeta) meta; if(!potionMeta.hasCustomEffects()) { potionMeta.setBasePotionData(new PotionData(legacyPotion.getType(), legacyPotion.hasExtendedDuration(), legacyPotion.getLevel() == 2)); } } itemStack.setItemMeta(meta); } return itemStack; }
@Test public void itemWithTypedMetaMatches() throws Throwable { ImItemStack item = ItemStack.builder(Material.POTION) .meta(PotionMeta.class, meta -> meta.setBasePotionData(new PotionData(PotionType.LUCK, false, false))) .immutable(); assertMatches(item, item); }
@Test public void potionItem() throws Exception { final ItemStack item = new ItemStack(Material.POTION); final PotionMeta meta = (PotionMeta) item.getItemMeta(); meta.setPotionBrew(Bukkit.potionRegistry().get(Bukkit.key("healing"))); item.setItemMeta(meta); }
@Nullable @Override protected PotionEffect[] get(Event e) { ItemStack i = potionItem.getSingle(e); if (i == null) { return null; } if (PotionUtils.isPotionItem(i)) { PotionMeta meta = (PotionMeta) i.getItemMeta(); return PotionUtils.actualPotionEffects(meta); } return null; }
@NotNull @Override protected ItemStack[] get(Event e) { ItemStack item = new ItemStack(material, 1); PotionMeta meta = (PotionMeta) item.getItemMeta(); //Getting PotionMeta Stream.of(potionEffects.getAll(e)).forEach(eff -> meta.addCustomEffect(eff, true)); item.setItemMeta(meta); return new ItemStack[]{item}; }
public static PotionEffect[] actualPotionEffects(@NotNull PotionMeta meta) { List<PotionEffect> effects = new ArrayList<>(); effects.addAll(meta.getCustomEffects()); if (meta.getBasePotionData().getType() != PotionType.UNCRAFTABLE) { effects.add(fromPotionData(meta.getBasePotionData())); } return effects.toArray(new PotionEffect[effects.size()]); }
/** * Drop player's potion effect on his death * * @param event Event */ @EventHandler public void onPlayerDeath(PlayerDeathEvent event) { for (PotionEffect potionEffect : event.getEntity().getActivePotionEffects()) { if (this.blacklist.contains(potionEffect.getType())) continue; if (PotionType.getByEffect(potionEffect.getType()) == null) continue; if(potionEffect.getDuration() > 10000) continue; Potion potion = new Potion(PotionType.getByEffect(potionEffect.getType()), potionEffect.getAmplifier() + 1); ItemStack stack = potion.toItemStack(1); PotionMeta meta = (PotionMeta) stack.getItemMeta(); meta.clearCustomEffects(); meta.addCustomEffect(new PotionEffect(potionEffect.getType(), potionEffect.getDuration(), potionEffect.getAmplifier()), true); stack.setItemMeta(meta); event.getDrops().add(stack); event.getEntity().removePotionEffect(potionEffect.getType()); } }
public DefaultMeta(ItemMeta m){ if(m instanceof BookMeta) meta = new SaveableBookMeta().setFrom(m); else if(m instanceof PotionMeta) meta = new milkyway.SaveableSerializing.ItemStacks.Upper_1_7.ItemData.ItemMetas.PotionMeta().setFrom(m); else if(m instanceof SkullMeta) meta = new HeadMeta().setFrom(m); else if(m instanceof FireworkMeta) meta = new FireworksMeta().setFrom(m); else if (m instanceof LeatherArmorMeta) meta = new LeatherArmoursMeta().setFrom(m); else if(m instanceof EnchantmentStorageMeta) meta = new SaveableEnchantBook().setFrom(m); else if(m instanceof FireworkEffectMeta) meta = new FireworkEffectsMeta().setFrom(m); if(m != null){ display = m.getDisplayName(); if(m.hasLore()) lore = m.getLore(); try{ for(ItemFlag flag : m.getItemFlags()) this.flag.add(flag.name()); }catch (Exception ex) {} } }
public ItemStack getItemStack() { ItemStack itemStack = new ItemStack(id, amount, damage); ItemMeta itemMeta = itemStack.getItemMeta(); if (name != null) itemMeta.setDisplayName(name); if (lore != null) itemMeta.setLore(lore); if (effect != null && itemMeta instanceof PotionMeta) effect.forEach(e -> ((PotionMeta) itemMeta).addCustomEffect(e.getPotionEffect(), true)); itemStack.setItemMeta(itemMeta); if (enchant != null) enchant.forEach(e -> e.apply(itemStack)); return itemStack; }
public ItemStack getResult() { ItemStack is = new ItemStack(Material.POTION); PotionMeta pm = (PotionMeta) is.getItemMeta(); pm.addCustomEffect(new PotionEffect(potionEffectType, maxDuration, maxAmplifier), true); pm.setMainEffect(potionEffectType); is.setItemMeta(pm); return is; }
public static PotionMeta parsePotion(Element xml, PotionMeta source) { for (Element effectElement : xml.getChildren("potion-effect")) { PotionEffect effect = XMLPotionEffect.parse(effectElement); if (effect != null) { source.addCustomEffect(effect, false); } } return source; }
public static ItemStack applyMeta(ItemStack itemStack, Element element) { for (Element enchant : element.getChildren("enchantment")) { String ench = enchant.getText(); Enchantment enchantment = Enchantment.getByName(Strings.getTechnicalName(ench)); int lvl = Numbers.parseInteger(enchant.getAttributeValue("level"), 1); if (enchantment == null) { //TODO: NMS name check } else { itemStack.addUnsafeEnchantment(enchantment, lvl); } } ItemMeta meta = itemStack.getItemMeta(); for (Element effect : element.getChildren("effect")) { PotionEffect potionEffect = getPotion(effect); if (!((PotionMeta) meta).getCustomEffects().contains(potionEffect)) { ((PotionMeta) meta).addCustomEffect(potionEffect, true); } } for (Element attribute : element.getChildren("attribute")) { ItemAttributeModifier itemAttribute = getAttribute(attribute); if (!meta.getModifiedAttributes().contains(attribute.getText())) { meta.addAttributeModifier(attribute.getText(), itemAttribute); } } /* TODO: can-destroy & can-place-on, and all attributes * @link https://docs.oc.tc/modules/item_mods#itemmeta */ itemStack.setItemMeta(meta); return itemStack; }