From d86bb5020b20dae0e134ae0f61866bc858c994c7 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Wed, 26 Jan 2022 20:20:12 +0000 Subject: [PATCH] Fixed loot populator --- .../support/obtaining/LootPopulator.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/LootPopulator.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/LootPopulator.java index 5eef073b..197352e4 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/LootPopulator.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/obtaining/LootPopulator.java @@ -1,5 +1,6 @@ package com.willfp.ecoenchants.enchantments.support.obtaining; +import com.willfp.eco.core.fast.FastItemStack; import com.willfp.eco.util.NumberUtils; import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.enchantments.EcoEnchant; @@ -26,9 +27,11 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; @SuppressWarnings("deprecation") public class LootPopulator extends BlockPopulator { @@ -89,8 +92,10 @@ public class LootPopulator extends BlockPopulator { } Map toAdd = new HashMap<>(); + List existing = FastItemStack.wrap(item).getEnchantmentsOnItem(true) + .keySet().stream().filter(enchant -> !(enchant instanceof EcoEnchant)).collect(Collectors.toList()); - ArrayList enchantments = new ArrayList<>(EcoEnchants.values()); + List enchantments = new ArrayList<>(EcoEnchants.values()); Collections.shuffle(enchantments); // Prevent list bias towards early enchantments like telekinesis double multiplier = 0.01; @@ -126,6 +131,11 @@ public class LootPopulator extends BlockPopulator { } AtomicBoolean anyConflicts = new AtomicBoolean(false); + + if (enchantment.conflictsWithAny(existing)) { + anyConflicts.set(true); + } + toAdd.forEach((enchant, integer) -> { if (enchantment.conflictsWithAny(toAdd.keySet())) { anyConflicts.set(true);