package net.glowstone.inventory; import org.bukkit.Material; /** * A {@link MaterialMatcher} implementation for basic tool types. */ public enum ToolType implements MaterialMatcher { // Pickaxes DIAMOND_PICKAXE(Material.DIAMOND_PICKAXE, null), IRON_PICKAXE(Material.IRON_PICKAXE, DIAMOND_PICKAXE), STONE_PICKAXE(Material.STONE_PICKAXE, IRON_PICKAXE), GOLD_PICKAXE(Material.GOLD_PICKAXE, STONE_PICKAXE), PICKAXE(Material.WOOD_PICKAXE, GOLD_PICKAXE), //Axes DIAMOND_AXE(Material.DIAMOND_AXE, null), IRON_AXE(Material.IRON_AXE, DIAMOND_AXE), STONE_AXE(Material.STONE_AXE, IRON_AXE), GOLD_AXE(Material.GOLD_AXE, STONE_AXE), AXE(Material.WOOD_AXE, GOLD_AXE), // Spades DIAMOND_SPADE(Material.DIAMOND_SPADE, null), IRON_SPADE(Material.IRON_SPADE, DIAMOND_SPADE), STONE_SPADE(Material.STONE_SPADE, IRON_SPADE), GOLD_SPADE(Material.GOLD_SPADE, STONE_SPADE), SPADE(Material.WOOD_SPADE, GOLD_SPADE), // Swords DIAMOND_SWORD(Material.DIAMOND_SWORD, null), IRON_SWORD(Material.IRON_SWORD, DIAMOND_SWORD), STONE_SWORD(Material.STONE_SWORD, IRON_SWORD), GOLD_SWORD(Material.GOLD_SWORD, STONE_SWORD), SWORD(Material.WOOD_SWORD, GOLD_SWORD); private final Material bukkitMaterial; private final ToolType better; private ToolType(Material bukkitMaterial, ToolType better) { this.bukkitMaterial = bukkitMaterial; this.better = better; } /** * Checks the given {@link org.bukkit.Material} is equal or better than this ToolType. * @param material The material to check * @return true if the material is equal or better, false otherwise */ @Override public boolean matches(Material material) { return bukkitMaterial == material || (better != null && better.matches(material)); } }