123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726 |
- package com.gmail.nossr50.util;
- import org.bukkit.ChatColor;
- import org.bukkit.CoalType;
- import org.bukkit.DyeColor;
- import org.bukkit.Material;
- import org.bukkit.inventory.FurnaceRecipe;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.Recipe;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.material.Coal;
- import org.bukkit.material.Dye;
- import com.gmail.nossr50.mcMMO;
- import com.gmail.nossr50.config.party.ItemWeightConfig;
- import com.gmail.nossr50.config.Config;
- import com.gmail.nossr50.locale.LocaleLoader;
- public final class ItemUtils {
- private ItemUtils() {}
- /**
- * Checks if the item is a bow.
- *
- * @param item Item to check
- * @return true if the item is a bow, false otherwise
- */
- public static boolean isBow(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case BOW:
- return true;
- default:
- return mcMMO.getModManager().isCustomBow(type);
- }
- }
- /**
- * Checks if the item is a sword.
- *
- * @param item Item to check
- * @return true if the item is a sword, false otherwise
- */
- public static boolean isSword(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case DIAMOND_SWORD:
- case GOLD_SWORD:
- case IRON_SWORD:
- case STONE_SWORD:
- case WOOD_SWORD:
- return true;
- default:
- return mcMMO.getModManager().isCustomSword(type);
- }
- }
- /**
- * Checks if the item is a hoe.
- *
- * @param item Item to check
- * @return true if the item is a hoe, false otherwise
- */
- public static boolean isHoe(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case DIAMOND_HOE:
- case GOLD_HOE:
- case IRON_HOE:
- case STONE_HOE:
- case WOOD_HOE:
- return true;
- default:
- return mcMMO.getModManager().isCustomHoe(type);
- }
- }
- /**
- * Checks if the item is a shovel.
- *
- * @param item Item to check
- * @return true if the item is a shovel, false otherwise
- */
- public static boolean isShovel(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case DIAMOND_SPADE:
- case GOLD_SPADE:
- case IRON_SPADE:
- case STONE_SPADE:
- case WOOD_SPADE:
- return true;
- default:
- return mcMMO.getModManager().isCustomShovel(type);
- }
- }
- /**
- * Checks if the item is an axe.
- *
- * @param item Item to check
- * @return true if the item is an axe, false otherwise
- */
- public static boolean isAxe(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case DIAMOND_AXE:
- case GOLD_AXE:
- case IRON_AXE:
- case STONE_AXE:
- case WOOD_AXE:
- return true;
- default:
- return mcMMO.getModManager().isCustomAxe(type);
- }
- }
- /**
- * Checks if the item is a pickaxe.
- *
- * @param item Item to check
- * @return true if the item is a pickaxe, false otherwise
- */
- public static boolean isPickaxe(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case DIAMOND_PICKAXE:
- case GOLD_PICKAXE:
- case IRON_PICKAXE:
- case STONE_PICKAXE:
- case WOOD_PICKAXE:
- return true;
- default:
- return mcMMO.getModManager().isCustomPickaxe(type);
- }
- }
- /**
- * Checks if the item counts as unarmed.
- *
- * @param item Item to check
- * @return true if the item counts as unarmed, false otherwise
- */
- public static boolean isUnarmed(ItemStack item) {
- if (Config.getInstance().getUnarmedItemsAsUnarmed()) {
- return !isMinecraftTool(item);
- }
- return item.getType() == Material.AIR;
- }
- /**
- * Checks if the item is a helmet.
- *
- * @param item Item to check
- * @return true if the item is a helmet, false otherwise
- */
- public static boolean isHelmet(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case DIAMOND_HELMET:
- case GOLD_HELMET:
- case IRON_HELMET:
- case CHAINMAIL_HELMET:
- case LEATHER_HELMET:
- return true;
- default:
- return mcMMO.getModManager().isCustomHelmet(type);
- }
- }
- /**
- * Checks if the item is a chestplate.
- *
- * @param item Item to check
- * @return true if the item is a chestplate, false otherwise
- */
- public static boolean isChestplate(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case DIAMOND_CHESTPLATE:
- case GOLD_CHESTPLATE:
- case IRON_CHESTPLATE:
- case CHAINMAIL_CHESTPLATE:
- case LEATHER_CHESTPLATE:
- return true;
- default:
- return mcMMO.getModManager().isCustomChestplate(type);
- }
- }
- /**
- * Checks if the item is a pair of pants.
- *
- * @param item Item to check
- * @return true if the item is a pair of pants, false otherwise
- */
- public static boolean isLeggings(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case DIAMOND_LEGGINGS:
- case GOLD_LEGGINGS:
- case IRON_LEGGINGS:
- case CHAINMAIL_LEGGINGS:
- case LEATHER_LEGGINGS:
- return true;
- default:
- return mcMMO.getModManager().isCustomLeggings(type);
- }
- }
- /**
- * Checks if the item is a pair of boots.
- *
- * @param item Item to check
- * @return true if the item is a pair of boots, false otherwise
- */
- public static boolean isBoots(ItemStack item) {
- Material type = item.getType();
- switch (type) {
- case DIAMOND_BOOTS:
- case GOLD_BOOTS:
- case IRON_BOOTS:
- case CHAINMAIL_BOOTS:
- case LEATHER_BOOTS:
- return true;
- default:
- return mcMMO.getModManager().isCustomBoots(type);
- }
- }
- /**
- * Checks to see if an item is a wearable armor piece.
- *
- * @param item Item to check
- * @return true if the item is armor, false otherwise
- */
- public static boolean isArmor(ItemStack item) {
- return isHelmet(item) || isChestplate(item) || isLeggings(item) || isBoots(item);
- }
- /**
- * Checks to see if an item is a wearable *vanilla* armor piece.
- *
- * @param item Item to check
- * @return true if the item is armor, false otherwise
- */
- public static boolean isMinecraftArmor(ItemStack item) {
- return isLeatherArmor(item) || isGoldArmor(item) || isIronArmor(item) || isDiamondArmor(item) || isChainmailArmor(item);
- }
- /**
- * Checks to see if an item is a leather armor piece.
- *
- * @param item Item to check
- * @return true if the item is leather armor, false otherwise
- */
- public static boolean isLeatherArmor(ItemStack item) {
- switch (item.getType()) {
- case LEATHER_BOOTS:
- case LEATHER_CHESTPLATE:
- case LEATHER_HELMET:
- case LEATHER_LEGGINGS:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a gold armor piece.
- *
- * @param item Item to check
- * @return true if the item is gold armor, false otherwise
- */
- public static boolean isGoldArmor(ItemStack item) {
- switch (item.getType()) {
- case GOLD_BOOTS:
- case GOLD_CHESTPLATE:
- case GOLD_HELMET:
- case GOLD_LEGGINGS:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is an iron armor piece.
- *
- * @param item Item to check
- * @return true if the item is iron armor, false otherwise
- */
- public static boolean isIronArmor(ItemStack item) {
- switch (item.getType()) {
- case IRON_BOOTS:
- case IRON_CHESTPLATE:
- case IRON_HELMET:
- case IRON_LEGGINGS:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a diamond armor piece.
- *
- * @param item Item to check
- * @return true if the item is diamond armor, false otherwise
- */
- public static boolean isDiamondArmor(ItemStack item) {
- switch (item.getType()) {
- case DIAMOND_BOOTS:
- case DIAMOND_CHESTPLATE:
- case DIAMOND_HELMET:
- case DIAMOND_LEGGINGS:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a chainmail armor piece.
- *
- * @param item Item to check
- * @return true if the item is chainmail armor, false otherwise
- */
- public static boolean isChainmailArmor(ItemStack item) {
- switch (item.getType()) {
- case CHAINMAIL_BOOTS:
- case CHAINMAIL_CHESTPLATE:
- case CHAINMAIL_HELMET:
- case CHAINMAIL_LEGGINGS:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a *vanilla* tool.
- *
- * @param item Item to check
- * @return true if the item is a tool, false otherwise
- */
- public static boolean isMinecraftTool(ItemStack item) {
- return isStoneTool(item) || isWoodTool(item) || isGoldTool(item) || isIronTool(item) || isDiamondTool(item) || isStringTool(item);
- }
- /**
- * Checks to see if an item is a stone tool.
- *
- * @param item Item to check
- * @return true if the item is a stone tool, false otherwise
- */
- public static boolean isStoneTool(ItemStack item) {
- switch (item.getType()) {
- case STONE_AXE:
- case STONE_HOE:
- case STONE_PICKAXE:
- case STONE_SPADE:
- case STONE_SWORD:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a wooden tool.
- *
- * @param item Item to check
- * @return true if the item is a wooden tool, false otherwise
- */
- public static boolean isWoodTool(ItemStack item) {
- switch (item.getType()) {
- case WOOD_AXE:
- case WOOD_HOE:
- case WOOD_PICKAXE:
- case WOOD_SPADE:
- case WOOD_SWORD:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a string tool.
- *
- * @param item Item to check
- * @return true if the item is a string tool, false otherwise
- */
- public static boolean isStringTool(ItemStack item) {
- switch (item.getType()) {
- case BOW:
- case CARROT_STICK:
- case FISHING_ROD:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a gold tool.
- *
- * @param item Item to check
- * @return true if the item is a stone tool, false otherwise
- */
- public static boolean isGoldTool(ItemStack item) {
- switch (item.getType()) {
- case GOLD_AXE:
- case GOLD_HOE:
- case GOLD_PICKAXE:
- case GOLD_SPADE:
- case GOLD_SWORD:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is an iron tool.
- *
- * @param item Item to check
- * @return true if the item is an iron tool, false otherwise
- */
- public static boolean isIronTool(ItemStack item) {
- switch (item.getType()) {
- case BUCKET:
- case FLINT_AND_STEEL:
- case IRON_AXE:
- case IRON_HOE:
- case IRON_PICKAXE:
- case IRON_SPADE:
- case IRON_SWORD:
- case SHEARS:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a diamond tool.
- *
- * @param item Item to check
- * @return true if the item is a diamond tool, false otherwise
- */
- public static boolean isDiamondTool(ItemStack item) {
- switch (item.getType()) {
- case DIAMOND_AXE:
- case DIAMOND_HOE:
- case DIAMOND_PICKAXE:
- case DIAMOND_SPADE:
- case DIAMOND_SWORD:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is enchantable.
- *
- * @param item Item to check
- * @return true if the item is enchantable, false otherwise
- */
- public static boolean isEnchantable(ItemStack item) {
- switch (item.getType()) {
- case ENCHANTED_BOOK:
- case SHEARS:
- case FISHING_ROD:
- case CARROT_STICK:
- case FLINT_AND_STEEL:
- return true;
- default:
- return isArmor(item) || isSword(item) || isAxe(item) || isShovel(item) || isPickaxe(item) || isBow(item);
- }
- }
- public static boolean isSmeltable(ItemStack item) {
- return item != null && MaterialUtils.isOre(item.getData());
- }
- public static boolean isSmelted(ItemStack item) {
- if (item == null) {
- return false;
- }
- for (Recipe recipe : mcMMO.p.getServer().getRecipesFor(item)) {
- if (recipe instanceof FurnaceRecipe && MaterialUtils.isOre(((FurnaceRecipe) recipe).getInput().getData())) {
- return true;
- }
- }
- return false;
- }
- /**
- * Check if an item is sharable.
- *
- * @param item Item that will get shared
- * @return True if the item can be shared.
- */
- public static boolean isSharable(ItemStack item) {
- if (item == null || item.getType() == Material.AIR) {
- return false;
- }
- return isMiningDrop(item) || isWoodcuttingDrop(item) || isMobDrop(item) || isHerbalismDrop(item) || isMiscDrop(item);
- }
- /**
- * Checks to see if an item is a mining drop.
- *
- * @param item Item to check
- * @return true if the item is a mining drop, false otherwise
- */
- public static boolean isMiningDrop(ItemStack item) {
- switch (item.getType()) {
- case COAL:
- case COAL_ORE:
- case DIAMOND:
- case DIAMOND_ORE:
- case EMERALD:
- case EMERALD_ORE:
- case GOLD_ORE:
- case IRON_ORE:
- case LAPIS_ORE:
- case REDSTONE_ORE: // Should we also have Glowing Redstone Ore here?
- case REDSTONE:
- case GLOWSTONE_DUST: // Should we also have Glowstone here?
- case QUARTZ:
- case QUARTZ_ORE:
- return true;
- case INK_SACK:
- return ((Dye) item.getData()).getColor() == DyeColor.BLUE;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a herbalism drop.
- *
- * @param item Item to check
- * @return true if the item is a herbalism drop, false otherwise
- */
- public static boolean isHerbalismDrop(ItemStack item) {
- switch (item.getType()) {
- case WHEAT:
- case SEEDS:
- case CARROT_ITEM:
- case CHORUS_FRUIT:
- case CHORUS_FLOWER:
- case POTATO_ITEM:
- case BEETROOT:
- case BEETROOT_SEEDS:
- case NETHER_WARTS:
- case BROWN_MUSHROOM:
- case RED_MUSHROOM:
- case RED_ROSE:
- case YELLOW_FLOWER:
- case CACTUS:
- case SUGAR_CANE:
- case MELON:
- case MELON_SEEDS:
- case PUMPKIN:
- case PUMPKIN_SEEDS:
- case WATER_LILY:
- case VINE:
- case LONG_GRASS:
- case DOUBLE_PLANT:
- return true;
- case INK_SACK:
- return ((Dye) item.getData()).getColor() == DyeColor.BROWN;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a mob drop.
- *
- * @param item Item to check
- * @return true if the item is a mob drop, false otherwise
- */
- public static boolean isMobDrop(ItemStack item) {
- switch (item.getType()) {
- case STRING:
- case FEATHER:
- case RAW_CHICKEN:
- case COOKED_CHICKEN:
- case LEATHER:
- case RAW_BEEF:
- case COOKED_BEEF:
- case PORK:
- case GRILLED_PORK:
- case WOOL:
- case IRON_INGOT:
- case SNOW_BALL:
- case BLAZE_ROD:
- case SPIDER_EYE:
- case SULPHUR:
- case ENDER_PEARL:
- case GHAST_TEAR:
- case MAGMA_CREAM:
- case BONE:
- case ARROW:
- case SLIME_BALL:
- case NETHER_STAR:
- case ROTTEN_FLESH:
- case GOLD_NUGGET:
- case EGG:
- return true;
- case COAL: // Not sure we should include this, as it will also trigger when mining
- return (((Coal) item.getData()).getType() == CoalType.COAL);
- case RED_ROSE: // Not sure we should include this, as it will also trigger from herbalism
- return (item.getData().getData() == 0x0);
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a woodcutting drop.
- *
- * @param item Item to check
- * @return true if the item is a woodcutting drop, false otherwise
- */
- public static boolean isWoodcuttingDrop(ItemStack item) {
- switch (item.getType()) {
- case LOG:
- case LOG_2:
- case LEAVES:
- case LEAVES_2:
- case SAPLING:
- case APPLE:
- return true;
- default:
- return false;
- }
- }
- /**
- * Checks to see if an item is a miscellaneous drop. These items are read from the config file
- *
- * @param item Item to check
- * @return true if the item is a miscellaneous drop, false otherwise
- */
- public static boolean isMiscDrop(ItemStack item) {
- return ItemWeightConfig.getInstance().getMiscItems().contains(item.getType());
- }
- public static boolean isMcMMOItem(ItemStack item) {
- if (!item.hasItemMeta()) {
- return false;
- }
- ItemMeta itemMeta = item.getItemMeta();
- return itemMeta.hasLore() && itemMeta.getLore().contains("mcMMO Item");
- }
- public static boolean isChimaeraWing(ItemStack item) {
- if (!isMcMMOItem(item)) {
- return false;
- }
- ItemMeta itemMeta = item.getItemMeta();
- return itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals(ChatColor.GOLD + LocaleLoader.getString("Item.ChimaeraWing.Name"));
- }
- public static boolean isFluxPickaxe(ItemStack item) {
- if (!isMcMMOItem(item)) {
- return false;
- }
- ItemMeta itemMeta = item.getItemMeta();
- return itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals(ChatColor.GOLD + LocaleLoader.getString("Item.FluxPickaxe.Name"));
- }
- }
|