mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-11-09 20:41:23 +01:00
Store enchanments in Enchanted Books
Change enchant command to store the enchantment instead of applying it when used on an Enchanted Book. If an enchantment is already present, replace it (only one allowed on Enchanted Books).
This commit is contained in:
parent
67b9a82e51
commit
2b57381fb8
@ -171,21 +171,37 @@ 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 (level == 0)
|
if (stack.getType().equals(Material.ENCHANTED_BOOK))
|
||||||
{
|
|
||||||
stack.removeEnchantment(enchantment);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (allowUnsafe)
|
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) stack.getItemMeta();
|
||||||
|
|
||||||
|
if (level == 0)
|
||||||
{
|
{
|
||||||
stack.addUnsafeEnchantment(enchantment, level);
|
if (meta.hasStoredEnchant(enchantment))
|
||||||
|
{
|
||||||
|
meta.removeStoredEnchant(enchantment);
|
||||||
|
stack.setItemMeta(meta);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stack.addEnchantment(enchantment, level);
|
// Enchanted Books only allowed to have one enchantment
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -193,6 +209,31 @@ public class ItemDb implements IConf, IItemDb
|
|||||||
throw new Exception("Enchantment " + enchantment.getName() + ": " + ex.getMessage(), ex);
|
throw new Exception("Enchantment " + enchantment.getName() + ": " + ex.getMessage(), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else // all other material types besides ENCHANTED_BOOK
|
||||||
|
{
|
||||||
|
if (level == 0)
|
||||||
|
{
|
||||||
|
stack.removeEnchantment(enchantment);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (allowUnsafe)
|
||||||
|
{
|
||||||
|
stack.addUnsafeEnchantment(enchantment, level);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stack.addEnchantment(enchantment, level);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new Exception("Enchantment " + enchantment.getName() + ": " + ex.getMessage(), ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: Properly TL this
|
//TODO: Properly TL this
|
||||||
|
Loading…
Reference in New Issue
Block a user