package de.oppermann.bastian.spleef.util; import java.util.ArrayList; import org.bukkit.ChatColor; import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import de.oppermann.bastian.spleef.SpleefMain; public enum Particle { ENCHANTMENT(0, Material.BOOK, (byte) 0, Language.PARTICLE_ENCHANTMENT.toString(), Language.PARTICLE_ENCHANTMENT_DESCRIPTION.toString(), "enchantment"), CRAPPING(1, Material.SOUL_SAND, (byte) 0, Language.PARTICLE_CRAPPING.toString(), Language.PARTICLE_CRAPPING_DESCRIPTION.toString(), "crapping"), @SuppressWarnings("deprecation") // who cares? HEART(2, Material.WOOL, DyeColor.RED.getWoolData(), Language.PARTICLE_HEART.toString(), Language.PARTICLE_HEART_DESCRIPTION.toString(), "hearts"), RAINCLOUD(3, Material.INK_SACK, (byte) 4, Language.PARTICLE_RAINCLOUD.toString(), Language.PARTICLE_RAINCLOUD_DESCRIPTION.toString(), "raincloud"), @SuppressWarnings("deprecation") // who cares? CLOUD_TAIL(4, Material.WOOL, DyeColor.WHITE.getWoolData(), Language.PARTICLE_CLOUD_TAIL.toString(), Language.PARTICLE_CLOUD_TAIL_DESCRIPTION.toString(), "cloudtail"), FLAMES(5, Material.BLAZE_POWDER, (byte) 0, Language.PARTICLE_FLAMES.toString(), Language.PARTICLE_FLAMES_DESCRIPTION.toString(), "flames"), SPELL(6, Material.ENCHANTED_BOOK, (byte) 0, Language.PARTICLE_SPELL.toString(), Language.PARTICLE_SPELL_DESCRIPTION.toString(), "spell"), GREEN_PATH(7, Material.EMERALD, (byte) 0, Language.PARTICLE_GREEN_PATH.toString(), Language.PARTICLE_GREEN_PATH_DESCRIPTION.toString(), "greenPath"); private int id; private Material type; byte data; String displayName; String description; int price; String particleConfigName; private Particle(int id, Material type, byte data, String displayName, String description, String particleConfigName) { this.id = id; this.type = type; this.data = data; this.displayName = displayName; this.description = description; this.price = SpleefMain.getInstance().getParticleConfigAccessor().getConfig().getInt("particles." + particleConfigName + ".price", 1500); this.particleConfigName = particleConfigName; } public int getId() { return id; } public int getPrice() { return price; } public boolean isEnabled() { return SpleefMain.getInstance().getParticleConfigAccessor().getConfig().getBoolean("particles." + particleConfigName + ".enabled", true); } public ItemStack getItem(boolean bought) { return createItemStack( bought ? type : Material.INK_SACK, bought ? data : (byte) 8, (bought ? ChatColor.GREEN : ChatColor.RED) + ChatColor.BOLD.toString() + displayName, ChatColor.BLUE + description, bought ? null : this != HEART ?Language.PARTICLEPRICE.toString().replace("%price%", String.valueOf(price)) : Language.PARTICLEPRICE_HEART.toString().replace("%price%", String.valueOf(price))); } public static Particle getParticle(ItemStack itemStack) { for (Particle particle : values()) { if (itemStack.isSimilar(particle.getItem(true)) || itemStack.isSimilar(particle.getItem(false))) { return particle; } } return null; } private static ItemStack createItemStack(Material type, byte data, String displayName, String... lore) { ItemStack itemStack = new ItemStack(type, 1, data); ItemMeta meta = itemStack.getItemMeta(); meta.setDisplayName(displayName); itemStack.setItemMeta(meta); ArrayList<String> loreList = new ArrayList<>(); for (String str : lore) { if (str != null) { loreList.add(str); } } meta.setLore(loreList); itemStack.setItemMeta(meta); return itemStack; } }