package org.bukkit.craftbukkit.enchantments; import net.minecraft.server.Item; import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.EnchantmentTarget; import org.bukkit.enchantments.EnchantmentWrapper; import org.bukkit.inventory.ItemStack; public class CraftEnchantment extends Enchantment { private final net.minecraft.server.Enchantment target; public CraftEnchantment(net.minecraft.server.Enchantment target) { super(target.id); this.target = target; } @Override public int getMaxLevel() { return target.getMaxLevel(); } @Override public int getStartLevel() { return target.getStartLevel(); } @Override public EnchantmentTarget getItemTarget() { switch (target.slot) { case ALL: return EnchantmentTarget.ALL; case ARMOR: return EnchantmentTarget.ARMOR; case ARMOR_FEET: return EnchantmentTarget.ARMOR_FEET; case ARMOR_HEAD: return EnchantmentTarget.ARMOR_HEAD; case ARMOR_LEGS: return EnchantmentTarget.ARMOR_LEGS; case ARMOR_TORSO: return EnchantmentTarget.ARMOR_TORSO; case DIGGER: return EnchantmentTarget.TOOL; case WEAPON: return EnchantmentTarget.WEAPON; case BOW: return EnchantmentTarget.BOW; default: return null; } } @Override public boolean canEnchantItem(ItemStack item) { return target.slot.canEnchant(Item.byId[item.getTypeId()]); } @Override public String getName() { switch (target.id) { case 0: return "PROTECTION_ENVIRONMENTAL"; case 1: return "PROTECTION_FIRE"; case 2: return "PROTECTION_FALL"; case 3: return "PROTECTION_EXPLOSIONS"; case 4: return "PROTECTION_PROJECTILE"; case 5: return "OXYGEN"; case 6: return "WATER_WORKER"; case 16: return "DAMAGE_ALL"; case 17: return "DAMAGE_UNDEAD"; case 18: return "DAMAGE_ARTHROPODS"; case 19: return "KNOCKBACK"; case 20: return "FIRE_ASPECT"; case 21: return "LOOT_BONUS_MOBS"; case 32: return "DIG_SPEED"; case 33: return "SILK_TOUCH"; case 34: return "DURABILITY"; case 35: return "LOOT_BONUS_BLOCKS"; case 48: return "ARROW_DAMAGE"; case 49: return "ARROW_KNOCKBACK"; case 50: return "ARROW_FIRE"; case 51: return "ARROW_INFINITE"; default: return "UNKNOWN_ENCHANT_" + target.id; } } public static net.minecraft.server.Enchantment getRaw(Enchantment enchantment) { if (enchantment instanceof EnchantmentWrapper) { enchantment = ((EnchantmentWrapper) enchantment).getEnchantment(); } if (enchantment instanceof CraftEnchantment) { return ((CraftEnchantment) enchantment).target; } return null; } @Override public boolean conflictsWith(Enchantment other) { if (other instanceof EnchantmentWrapper) { other = ((EnchantmentWrapper) other).getEnchantment(); } if (!(other instanceof CraftEnchantment)) { return false; } CraftEnchantment ench = (CraftEnchantment) other; return !target.a(ench.target); } }