SPIGOT-6630: Replacing an enchantment on an item creates a conflict error

This commit is contained in:
DerFrZocker 2021-08-24 18:10:30 +02:00
parent a955f15c25
commit a0a37f416c
No known key found for this signature in database
GPG Key ID: 713F71FFFE1DDF91

View File

@ -9,6 +9,7 @@ import net.minecraft.world.item.Item;
import net.minecraft.world.item.enchantment.EnchantmentManager; import net.minecraft.world.item.enchantment.EnchantmentManager;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.configuration.serialization.DelegateDeserialization; import org.bukkit.configuration.serialization.DelegateDeserialization;
import org.bukkit.craftbukkit.enchantments.CraftEnchantment; import org.bukkit.craftbukkit.enchantments.CraftEnchantment;
import org.bukkit.craftbukkit.util.CraftLegacy; import org.bukkit.craftbukkit.util.CraftLegacy;
@ -190,7 +191,7 @@ public final class CraftItemStack extends ItemStack {
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
NBTTagCompound tag = (NBTTagCompound) list.get(i); NBTTagCompound tag = (NBTTagCompound) list.get(i);
String id = tag.getString(ENCHANTMENTS_ID.NBT); String id = tag.getString(ENCHANTMENTS_ID.NBT);
if (id.equals(ench.getKey().toString())) { if (ench.getKey().equals(NamespacedKey.fromString(id))) {
tag.setShort(ENCHANTMENTS_LVL.NBT, (short) level); tag.setShort(ENCHANTMENTS_LVL.NBT, (short) level);
return; return;
} }
@ -242,7 +243,7 @@ public final class CraftItemStack extends ItemStack {
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
NBTTagCompound enchantment = (NBTTagCompound) list.get(i); NBTTagCompound enchantment = (NBTTagCompound) list.get(i);
String id = enchantment.getString(ENCHANTMENTS_ID.NBT); String id = enchantment.getString(ENCHANTMENTS_ID.NBT);
if (id.equals(ench.getKey().toString())) { if (ench.getKey().equals(NamespacedKey.fromString(id))) {
index = i; index = i;
level = 0xffff & enchantment.getShort(ENCHANTMENTS_LVL.NBT); level = 0xffff & enchantment.getShort(ENCHANTMENTS_LVL.NBT);
break; break;