package tc.oc.pgm.itemmeta; import java.util.Set; import org.bukkit.attribute.ItemAttributeModifier; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.PotionMeta; import tc.oc.commons.bukkit.item.ItemUtils; import tc.oc.pgm.utils.MaterialMatcher; public class ItemRule { final MaterialMatcher items; final PotionMeta meta; final boolean defaultAttributes; public ItemRule(MaterialMatcher items, PotionMeta meta, boolean defaultAttributes) { this.items = items; this.meta = meta; this.defaultAttributes = defaultAttributes; } public boolean matches(ItemStack stack) { return items.matches(stack); } public void apply(ItemStack stack) { ItemUtils.addPotionEffects(stack, this.meta.getCustomEffects()); ItemMeta meta = stack.getItemMeta(); if(meta != null) { if(this.meta.hasDisplayName()) { meta.setDisplayName(this.meta.getDisplayName()); } if(this.meta.hasLore()) { meta.setLore(this.meta.getLore()); } Set<ItemFlag> flags = this.meta.getItemFlags(); meta.addItemFlags(flags.toArray(new ItemFlag[flags.size()])); ItemUtils.addEnchantments(meta, this.meta.getEnchants()); for(String attribute : this.meta.getModifiedAttributes()) { for(ItemAttributeModifier modifier : this.meta.getAttributeModifiers(attribute)) { meta.addAttributeModifier(attribute, modifier); } } if(this.meta.isUnbreakable()) meta.setUnbreakable(true); meta.setCanDestroy(ItemUtils.unionMaterials(meta.getCanDestroy(), this.meta.getCanDestroy())); meta.setCanPlaceOn(ItemUtils.unionMaterials(meta.getCanPlaceOn(), this.meta.getCanPlaceOn())); stack.setItemMeta(meta); } } }