There are two methods in the Enchantment API: Enchantment.conflictsWith(Enchantment), which will check if two enchantments are not permitted on the same item according to the enchantment tables. These restrictions are not checked by canEnchantItem(); if you wish to enforce them, you need to check manually. EnchantmentTarget.includes(Material|ItemStack), which will check if the given material matches the enchantment target. Note: Hoes, shears, fishing rods, and flint & steel are considered to be included in EnchantmentTarget.TOOL.