Fixed improved vanilla conflictsWith code not working on 1.16.0 - 1.16.3

This commit is contained in:
Auxilor
2021-05-27 11:59:50 +01:00
parent 7f1a12a496
commit 882a7f622b
3 changed files with 16 additions and 14 deletions

View File

@@ -1,5 +1,6 @@
package com.willfp.ecoenchants.proxy.v1_16_R1.enchants;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.support.vanilla.VanillaEnchantmentMetadata;
import net.minecraft.server.v1_16_R1.Enchantment;
import org.bukkit.NamespacedKey;
@@ -25,6 +26,11 @@ public class EcoCraftEnchantment extends CraftEnchantment {
return metadata.getMaxLevel() == null ? this.getHandle().getMaxLevel() : metadata.getMaxLevel();
}
@Override
public boolean conflictsWith(@NotNull final org.bukkit.enchantments.Enchantment other) {
return EcoEnchants.getFromEnchantment(other) == null ? super.conflictsWith(other) : other.conflictsWith(other);
}
public void register() {
try {
Field byIdField = org.bukkit.enchantments.Enchantment.class.getDeclaredField("byKey");

View File

@@ -1,5 +1,6 @@
package com.willfp.ecoenchants.proxy.v1_16_R2.enchants;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.support.vanilla.VanillaEnchantmentMetadata;
import net.minecraft.server.v1_16_R2.Enchantment;
import org.bukkit.NamespacedKey;
@@ -25,6 +26,11 @@ public class EcoCraftEnchantment extends CraftEnchantment {
return metadata.getMaxLevel() == null ? this.getHandle().getMaxLevel() : metadata.getMaxLevel();
}
@Override
public boolean conflictsWith(@NotNull final org.bukkit.enchantments.Enchantment other) {
return EcoEnchants.getFromEnchantment(other) == null ? super.conflictsWith(other) : other.conflictsWith(other);
}
public void register() {
try {
Field byIdField = org.bukkit.enchantments.Enchantment.class.getDeclaredField("byKey");

View File

@@ -7,6 +7,8 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget;
import com.willfp.ecoenchants.enchantments.meta.EnchantmentType;
import com.willfp.ecoenchants.proxy.proxies.FastGetEnchantsProxy;
import com.willfp.ecoenchants.util.ProxyUtils;
import lombok.experimental.UtilityClass;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
@@ -120,22 +122,10 @@ public class AnvilMerge {
return new Pair<>(null, null);
}
HashMap<Enchantment, Integer> leftEnchants = new HashMap<>();
HashMap<Enchantment, Integer> rightEnchants = new HashMap<>();
Map<Enchantment, Integer> outEnchants = new HashMap<>();
if (left.getItemMeta() instanceof EnchantmentStorageMeta) {
leftEnchants.putAll(((EnchantmentStorageMeta) left.getItemMeta()).getStoredEnchants());
} else {
leftEnchants.putAll(left.getItemMeta().getEnchants());
}
if (right.getItemMeta() instanceof EnchantmentStorageMeta) {
rightEnchants.putAll(((EnchantmentStorageMeta) right.getItemMeta()).getStoredEnchants());
} else {
rightEnchants.putAll(right.getItemMeta().getEnchants());
}
HashMap<Enchantment, Integer> leftEnchants = new HashMap<>(ProxyUtils.getProxy(FastGetEnchantsProxy.class).getEnchantmentsOnItem(left, true));
HashMap<Enchantment, Integer> rightEnchants = new HashMap<>(ProxyUtils.getProxy(FastGetEnchantsProxy.class).getEnchantmentsOnItem(right, true));
leftEnchants.forEach(((enchantment, integer) -> {
int level = integer;