What is SourceDrop?
package info.minestein.nvcore.item; import java.util.Arrays; import java.util.List; import java.util.Map; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; public final class ItemBuilder { private Material material = null; private Integer amount = Integer.valueOf(1); private Byte data = Byte.valueOf((byte)0); private String displayName = null; private List<String> lore = null; private Map<Enchantment, Integer> enchantments = null; public ItemBuilder() {} public Material getMaterial() { return this.material; } public Integer getAmount() { return this.amount; } public Byte getData() { return this.data; } public String getDisplayName() { return this.displayName; } public List<String> getLore() { return this.lore; } public Map<Enchantment, Integer> getEnchantments() { return this.enchantments; } public ItemBuilder type(Material material) { this.material = material; return this; } public ItemBuilder amount(Integer amount) { this.amount = amount; return this; } public ItemBuilder data(Byte data) { this.data = data; return this; } public ItemBuilder name(String displayName) { this.displayName = displayName; return this; } public ItemBuilder lore(String... strings) { this.lore = Arrays.asList(strings); return this; } public ItemBuilder enchant(Enchantment enchantment, Integer level) { this.enchantments.put(enchantment, level); return this; } public ItemBuilder enchantments(Map<Enchantment, Integer> enchantments) { this.enchantments = enchantments; return this; } public ItemStack build() { ItemStack itemStack = new ItemStack(getMaterial(), getAmount().intValue(), (short)getData().byteValue()); ItemMeta itemMeta; if ((this.displayName != null) || (this.lore != null)) { itemMeta = itemStack.getItemMeta(); if (this.displayName != null) { itemMeta.setDisplayName(this.displayName); } if (this.lore != null) { itemMeta.setLore(this.lore); } itemStack.setItemMeta(itemMeta); } if (this.enchantments != null) { for (Enchantment ench : this.enchantments.keySet()) { int level = ((Integer)this.enchantments.get(ench)).intValue(); itemStack.addUnsafeEnchantment(ench, level); } } return itemStack; } }