From 2251a4d8fcd780f6a6e020af6e4f374cbf3d5e79 Mon Sep 17 00:00:00 2001 From: kireevm96 Date: Wed, 6 Oct 2021 22:10:45 +0300 Subject: [PATCH 1/2] fix dupe grindstoned --- .../grindstone/GrindstoneListeners.java | 58 +++++-------------- 1 file changed, 15 insertions(+), 43 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java index 30cb75d6..587c3dda 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java @@ -46,37 +46,21 @@ public class GrindstoneListeners extends PluginDependent implements L if (player.getOpenInventory().getTopInventory().getType() != InventoryType.GRINDSTONE) { return; } - + if (event.getSlotType() != InventoryType.SlotType.RESULT) { + return; + } + GrindstoneInventory inventory = (GrindstoneInventory) player.getOpenInventory().getTopInventory(); - - this.getPlugin().getScheduler().runLater(() -> { - ItemStack top = inventory.getItem(0); - ItemStack bottom = inventory.getItem(1); - ItemStack out = inventory.getItem(2); - - Map toKeep = GrindstoneMerge.doMerge(top, bottom); - - if (toKeep.isEmpty()) { - inventory.setItem(2, out); - } - if (out == null) { - return; - } - - ItemStack newOut = out.clone(); - if (newOut.getItemMeta() instanceof EnchantmentStorageMeta meta) { - toKeep.forEach(((enchantment, integer) -> { - meta.addStoredEnchant(enchantment, integer, true); - })); - newOut.setItemMeta(meta); - } else { - ItemMeta meta = newOut.getItemMeta(); - toKeep.forEach(((enchantment, integer) -> { - meta.addEnchant(enchantment, integer, true); - })); - newOut.setItemMeta(meta); - } - + + ItemStack top = inventory.getItem(0); + ItemStack bottom = inventory.getItem(1); + ItemStack out = inventory.getItem(2); + + if (out == null) { + return; + } + + this.getPlugin().getScheduler().runLater(() -> { Set enchants = new HashSet<>(); if (top != null) { enchants.addAll(top.getEnchantments().keySet()); @@ -85,27 +69,15 @@ public class GrindstoneListeners extends PluginDependent implements L enchants.addAll(bottom.getEnchantments().keySet()); } enchants.removeIf(enchantment -> !(enchantment instanceof EcoEnchant)); - if (!enchants.isEmpty()) { + if (!enchants.isEmpty()) { Location loc = player.getLocation().clone().add( NumberUtils.randFloat(-1, 1), NumberUtils.randFloat(-1, 1), NumberUtils.randFloat(-1, 1) ); - ExperienceOrb orb = (ExperienceOrb) loc.getWorld().spawnEntity(loc, EntityType.EXPERIENCE_ORB); orb.setExperience(enchants.size() * 15); } - - this.getPlugin().getScheduler().run(() -> { - inventory.setItem(2, newOut); - if (!toKeep.isEmpty()) { - for (Entity entity : player.getNearbyEntities(10, 10, 10)) { - if (entity.getType() == EntityType.EXPERIENCE_ORB) { - entity.remove(); - } - } - } - }); }, 1); } } From ea88aaeb0d7e6c2796213586fcc74d59aef054aa Mon Sep 17 00:00:00 2001 From: kireevm96 Date: Wed, 6 Oct 2021 22:13:27 +0300 Subject: [PATCH 2/2] fix dupe grindstoned --- .../merging/grindstone/GrindstoneListeners.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java index 587c3dda..30bf41f5 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/support/merging/grindstone/GrindstoneListeners.java @@ -49,17 +49,17 @@ public class GrindstoneListeners extends PluginDependent implements L if (event.getSlotType() != InventoryType.SlotType.RESULT) { return; } - + GrindstoneInventory inventory = (GrindstoneInventory) player.getOpenInventory().getTopInventory(); - + ItemStack top = inventory.getItem(0); ItemStack bottom = inventory.getItem(1); - ItemStack out = inventory.getItem(2); + ItemStack out = inventory.getItem(2); if (out == null) { return; } - + this.getPlugin().getScheduler().runLater(() -> { Set enchants = new HashSet<>(); if (top != null) { @@ -69,7 +69,7 @@ public class GrindstoneListeners extends PluginDependent implements L enchants.addAll(bottom.getEnchantments().keySet()); } enchants.removeIf(enchantment -> !(enchantment instanceof EcoEnchant)); - if (!enchants.isEmpty()) { + if (!enchants.isEmpty()) { Location loc = player.getLocation().clone().add( NumberUtils.randFloat(-1, 1), NumberUtils.randFloat(-1, 1),