Pull and clean up book enchant pullreq.

Removed 1 enchant per book limit, anvils seem to handle multiple enchants fine, even if the result can only be one enchant.
This commit is contained in:
KHobbits 2013-01-08 23:51:46 +00:00
parent df0b1cedd8
commit 33d3123104

View file

@ -172,53 +172,33 @@ public class ItemDb implements IConf, IItemDb
public void addEnchantment(final User user, final boolean allowUnsafe, final ItemStack stack, final Enchantment enchantment, final int level) throws Exception public void addEnchantment(final User user, final boolean allowUnsafe, final ItemStack stack, final Enchantment enchantment, final int level) throws Exception
{ {
if (stack.getType().equals(Material.ENCHANTED_BOOK)) try
{ {
try if (stack.getType().equals(Material.ENCHANTED_BOOK))
{ {
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) stack.getItemMeta();
EnchantmentStorageMeta meta = (EnchantmentStorageMeta)stack.getItemMeta();
if (level == 0) if (level == 0)
{ {
if (meta.hasStoredEnchant(enchantment)) // if (meta.hasStoredEnchant(enchantment))
{ // {
meta.removeStoredEnchant(enchantment); meta.removeStoredEnchant(enchantment);
stack.setItemMeta(meta); // }
}
} }
else else
{ {
// Enchanted Books only allowed to have one enchantment meta.addStoredEnchant(enchantment, level, allowUnsafe);
if (meta.hasStoredEnchants())
{
// Although there should be only one, don't make assumptions
Iterator<Map.Entry<Enchantment, Integer>> entries = meta.getStoredEnchants().entrySet().iterator();
while (entries.hasNext())
{
Map.Entry<Enchantment, Integer> entry = entries.next();
Enchantment ench = entry.getKey();
meta.removeStoredEnchant(ench);
}
}
meta.addStoredEnchant(enchantment, level, allowUnsafe);
stack.setItemMeta(meta);
} }
stack.setItemMeta(meta);
} }
catch (Exception ex) else // all other material types besides ENCHANTED_BOOK
{ {
throw new Exception("Enchantment " + enchantment.getName() + ": " + ex.getMessage(), ex); if (level == 0)
} {
} stack.removeEnchantment(enchantment);
else // all other material types besides ENCHANTED_BOOK }
{ else
if (level == 0)
{
stack.removeEnchantment(enchantment);
}
else
{
try
{ {
if (allowUnsafe) if (allowUnsafe)
{ {
@ -228,13 +208,14 @@ public class ItemDb implements IConf, IItemDb
{ {
stack.addEnchantment(enchantment, level); stack.addEnchantment(enchantment, level);
} }
}
catch (Exception ex)
{
throw new Exception("Enchantment " + enchantment.getName() + ": " + ex.getMessage(), ex);
} }
} }
} }
catch (Exception ex)
{
throw new Exception("Enchantment " + enchantment.getName() + ": " + ex.getMessage(), ex);
}
} }
//TODO: Properly TL this //TODO: Properly TL this