Fix enchantments in smithing table crafting
- Enchantments on the second item in the smithing table were not taken into account for the end result.
This commit is contained in:
parent
73ad900387
commit
bea45dde30
@ -16,13 +16,13 @@ import java.util.logging.Level;
|
||||
|
||||
abstract class SmithingTableListener extends ArmoredElytraHandler implements Listener
|
||||
{
|
||||
public SmithingTableListener(ArmoredElytra plugin, boolean creationEnabled)
|
||||
protected SmithingTableListener(ArmoredElytra plugin, boolean creationEnabled)
|
||||
{
|
||||
super(plugin, creationEnabled);
|
||||
|
||||
}
|
||||
|
||||
public SmithingTableListener(ArmoredElytra plugin)
|
||||
protected SmithingTableListener(ArmoredElytra plugin)
|
||||
{
|
||||
this(plugin, false);
|
||||
}
|
||||
@ -39,12 +39,15 @@ abstract class SmithingTableListener extends ArmoredElytraHandler implements Lis
|
||||
if (newTier == ArmorTier.NONE)
|
||||
return;
|
||||
|
||||
EnchantmentContainer enchantments = EnchantmentContainer.getEnchantments(itemStackA, plugin);
|
||||
final Player player = (Player) event.getView().getPlayer();
|
||||
|
||||
final ItemStack result;
|
||||
if (plugin.playerHasCraftPerm(player, newTier))
|
||||
{
|
||||
|
||||
EnchantmentContainer enchantments = EnchantmentContainer.getEnchantments(itemStackA, plugin);
|
||||
enchantments.merge(EnchantmentContainer.getEnchantments(itemStackB, plugin));
|
||||
|
||||
result = ArmoredElytra.getInstance().getNbtEditor()
|
||||
.addArmorNBTTags(new ItemStack(Material.ELYTRA, 1), newTier,
|
||||
plugin.getConfigLoader().unbreakable());
|
||||
|
@ -7,6 +7,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@ -24,7 +25,7 @@ public class EnchantmentContainer
|
||||
public EnchantmentContainer(final Map<Enchantment, Integer> enchantments, final ArmoredElytra plugin)
|
||||
{
|
||||
this(enchantments);
|
||||
this.filter(plugin.getConfigLoader().allowedEnchantments());
|
||||
filter(plugin.getConfigLoader().allowedEnchantments());
|
||||
}
|
||||
|
||||
private EnchantmentContainer(final Map<Enchantment, Integer> enchantments)
|
||||
@ -41,6 +42,9 @@ public class EnchantmentContainer
|
||||
*/
|
||||
public static EnchantmentContainer getEnchantments(final ItemStack is, final ArmoredElytra plugin)
|
||||
{
|
||||
if (is == null)
|
||||
return new EnchantmentContainer(Collections.emptyMap(), plugin);
|
||||
|
||||
return is.getType() == Material.ENCHANTED_BOOK ?
|
||||
getEnchantmentsFromBook(is, plugin) :
|
||||
getEnchantmentsFromItem(is, plugin);
|
||||
@ -113,7 +117,7 @@ public class EnchantmentContainer
|
||||
*/
|
||||
public void merge(EnchantmentContainer other)
|
||||
{
|
||||
enchantments = merge(this.enchantments, other.enchantments);
|
||||
enchantments = merge(enchantments, other.enchantments);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user