From 8dd54ca0833a2b467918251bb0949e7428a4ba3f Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 16 Oct 2021 16:31:12 +0100 Subject: [PATCH 01/10] Fixed thor --- .../ecoenchants/enchantments/ecoenchants/normal/Thor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Thor.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Thor.java index 0156fa6e..5d29599e 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Thor.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Thor.java @@ -37,6 +37,6 @@ public class Thor extends EcoEnchant { double damage = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "lightning-damage"); boolean silent = this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "local-lightning-sound"); - LightningUtils.strike(attacker, damage, silent); + LightningUtils.strike(victim, damage, silent); } } From f103415a4c56d2b33aa01c93ffe2138ea463ba3d Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 16 Oct 2021 16:31:21 +0100 Subject: [PATCH 02/10] Updated to 8.13.10 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b4428374..e01c68e9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 8.13.9 +version = 8.13.10 plugin-name = EcoEnchants \ No newline at end of file From 24ab170828c331274fed058cc098314501aacd35 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 30 Oct 2021 10:53:05 +0100 Subject: [PATCH 03/10] Updated to 8.14.5 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a0df199b..7ad1e224 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 8.14.4 +version = 8.14.5 plugin-name = EcoEnchants \ No newline at end of file From a01b3d37f33226b0577c22adf751871c485bce9a Mon Sep 17 00:00:00 2001 From: _OfTeN_ Date: Sat, 30 Oct 2021 23:49:00 +0300 Subject: [PATCH 04/10] - Fixed descriptions saving as false for default - Fixed not grindstoneable enchantments still being grindstoned --- .../grindstone/GrindstoneListeners.java | 53 ++++++++++++++++++- .../ecoenchants/data/storage/PlayerProfile.kt | 4 +- 2 files changed, 53 insertions(+), 4 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 cc3ef010..3bb4278a 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 @@ -15,9 +15,12 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.GrindstoneInventory; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.EnchantmentStorageMeta; +import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import java.util.HashSet; +import java.util.Map; import java.util.Set; public class GrindstoneListeners extends PluginDependent implements Listener { @@ -51,11 +54,22 @@ public class GrindstoneListeners extends PluginDependent implements L ItemStack top = inventory.getItem(0); ItemStack bottom = inventory.getItem(1); ItemStack out = inventory.getItem(2); - + if (out == null) { return; } + Map merged = GrindstoneMerge.doMerge(top, bottom); + ItemMeta meta = out.getItemMeta(); + for (Enchantment enchantment : merged.keySet()) { + if (meta instanceof EnchantmentStorageMeta storageMeta) { + storageMeta.addStoredEnchant(enchantment, merged.get(enchantment), true); + } else { + meta.addEnchant(enchantment, merged.get(enchantment), true); + } + } + out.setItemMeta(meta); + this.getPlugin().getScheduler().runLater(() -> { if (inventory.getItem(2) != null || event.isCancelled()) return; Set enchants = new HashSet<>(); @@ -65,7 +79,7 @@ public class GrindstoneListeners extends PluginDependent implements L if (bottom != null) { enchants.addAll(bottom.getEnchantments().keySet()); } - enchants.removeIf(enchantment -> !(enchantment instanceof EcoEnchant)); + enchants.removeIf(enchantment -> !(enchantment instanceof EcoEnchant) || merged.containsKey(enchantment)); if (!enchants.isEmpty()) { Location loc = player.getLocation().clone().add( NumberUtils.randFloat(-1, 1), @@ -78,4 +92,39 @@ public class GrindstoneListeners extends PluginDependent implements L }, 1); } + /** + * An additional grindstone listener for isGrindstoneable check. + * + * @param event The event to listen to. + */ + @EventHandler + public void onGrindstoneFix(@NotNull final InventoryClickEvent event) { + Player player = (Player) event.getWhoClicked(); + if (player.getOpenInventory().getTopInventory().getType() != InventoryType.GRINDSTONE) { + return; + } + this.getPlugin().getScheduler().runLater(() -> { + GrindstoneInventory inventory = (GrindstoneInventory) player.getOpenInventory().getTopInventory(); + + ItemStack top = inventory.getItem(0); + ItemStack bottom = inventory.getItem(1); + ItemStack out = inventory.getItem(2); + + if (out == null) { + return; + } + + Map merged = GrindstoneMerge.doMerge(top, bottom); + ItemMeta meta = out.getItemMeta(); + for (Enchantment enchantment : merged.keySet()) { + if (meta instanceof EnchantmentStorageMeta storageMeta) { + storageMeta.addStoredEnchant(enchantment, merged.get(enchantment), true); + } else { + meta.addEnchant(enchantment, merged.get(enchantment), true); + } + } + out.setItemMeta(meta); + }, 1); + } + } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoenchants/data/storage/PlayerProfile.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoenchants/data/storage/PlayerProfile.kt index 6dc28943..1b76f0e5 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoenchants/data/storage/PlayerProfile.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoenchants/data/storage/PlayerProfile.kt @@ -33,7 +33,7 @@ class PlayerProfile private constructor( Type.INT -> data[key] = handler.read(uuid, key, 0) Type.DOUBLE -> data[key] = handler.read(uuid, key, 0.0) Type.STRING -> data[key] = handler.read(uuid, key, "Unknown") - Type.BOOLEAN -> data[key] = handler.read(uuid, key, false) + Type.BOOLEAN -> data[key] = handler.read(uuid, key, true) } } @@ -50,7 +50,7 @@ class PlayerProfile private constructor( Type.INT -> handler.write(uuid, key, profile.read(key, 0)) Type.DOUBLE -> handler.write(uuid, key, profile.read(key, 0.0)) Type.STRING -> handler.write(uuid, key, profile.read(key, "Unknown Value")) - Type.BOOLEAN -> handler.write(uuid, key, profile.read(key, false)) + Type.BOOLEAN -> handler.write(uuid, key, profile.read(key, true)) } } } From ec54b9e8a1deafe704be80be81a7754868114433 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 31 Oct 2021 13:12:35 +0000 Subject: [PATCH 05/10] Fixed grindstoneable option not working --- .../grindstone/GrindstoneListeners.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 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 cc3ef010..62be97fc 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 @@ -1,5 +1,6 @@ package com.willfp.ecoenchants.enchantments.support.merging.grindstone; +import com.sk89q.worldguard.blacklist.target.ItemMatcher; import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; import com.willfp.eco.util.NumberUtils; @@ -15,9 +16,12 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.GrindstoneInventory; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.EnchantmentStorageMeta; +import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import java.util.HashSet; +import java.util.Map; import java.util.Set; public class GrindstoneListeners extends PluginDependent implements Listener { @@ -56,24 +60,32 @@ public class GrindstoneListeners extends PluginDependent implements L return; } + Map toKeep = GrindstoneMerge.doMerge(top, bottom); + this.getPlugin().getScheduler().runLater(() -> { - if (inventory.getItem(2) != null || event.isCancelled()) return; - Set enchants = new HashSet<>(); - if (top != null) { - enchants.addAll(top.getEnchantments().keySet()); + if (inventory.getItem(2) != null || event.isCancelled()) { + return; } - if (bottom != null) { - enchants.addAll(bottom.getEnchantments().keySet()); + + ItemMeta outMeta = out.getItemMeta(); + assert outMeta != null; + + if (outMeta instanceof EnchantmentStorageMeta storageMeta) { + toKeep.forEach((enchant, level) -> storageMeta.addStoredEnchant(enchant, level, true)); + out.setItemMeta(storageMeta); + } else { + toKeep.forEach((enchant, level) -> outMeta.addEnchant(enchant, level, true)); + out.setItemMeta(outMeta); } - enchants.removeIf(enchantment -> !(enchantment instanceof EcoEnchant)); - if (!enchants.isEmpty()) { + + if (!toKeep.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); + orb.setExperience(toKeep.size() * 15); } }, 1); } From c16da47d092061c3aa8c6b73070c33b2184390e9 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 31 Oct 2021 13:12:45 +0000 Subject: [PATCH 06/10] Updated to 8.14.6 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 7ad1e224..636a245f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 8.14.5 +version = 8.14.6 plugin-name = EcoEnchants \ No newline at end of file From 86eec1b706d5fb0a3928ec43b97ba4530de0aa28 Mon Sep 17 00:00:00 2001 From: _OfTeN_ Date: Sat, 30 Oct 2021 23:49:00 +0300 Subject: [PATCH 07/10] - Fixed descriptions saving as false for default - Fixed not grindstoneable enchantments still being grindstoned --- .../com/willfp/ecoenchants/data/storage/PlayerProfile.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoenchants/data/storage/PlayerProfile.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoenchants/data/storage/PlayerProfile.kt index 6dc28943..1b76f0e5 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoenchants/data/storage/PlayerProfile.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoenchants/data/storage/PlayerProfile.kt @@ -33,7 +33,7 @@ class PlayerProfile private constructor( Type.INT -> data[key] = handler.read(uuid, key, 0) Type.DOUBLE -> data[key] = handler.read(uuid, key, 0.0) Type.STRING -> data[key] = handler.read(uuid, key, "Unknown") - Type.BOOLEAN -> data[key] = handler.read(uuid, key, false) + Type.BOOLEAN -> data[key] = handler.read(uuid, key, true) } } @@ -50,7 +50,7 @@ class PlayerProfile private constructor( Type.INT -> handler.write(uuid, key, profile.read(key, 0)) Type.DOUBLE -> handler.write(uuid, key, profile.read(key, 0.0)) Type.STRING -> handler.write(uuid, key, profile.read(key, "Unknown Value")) - Type.BOOLEAN -> handler.write(uuid, key, profile.read(key, false)) + Type.BOOLEAN -> handler.write(uuid, key, profile.read(key, true)) } } } From 6fb4e1b3214d4ec6f3984793e1ad3db5d45b0c80 Mon Sep 17 00:00:00 2001 From: _OfTeN_ Date: Mon, 1 Nov 2021 14:13:44 +0300 Subject: [PATCH 08/10] Fixed Streamlining enchantment (who could know that higher speed is slower in spigot api world) --- .../enchantments/ecoenchants/special/Streamlining.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Streamlining.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Streamlining.java index 441b896e..0966bc47 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Streamlining.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Streamlining.java @@ -23,6 +23,6 @@ public class Streamlining extends EcoEnchant { return; } - player.setWalkSpeed((float) (0.2 + (level * EcoEnchants.STREAMLINING.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "speed-per-level")))); + player.setWalkSpeed((float) (0.2f - (level * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "speed-per-level")))); } } From 3bea8c711dafd80250c040743b05b4917821e681 Mon Sep 17 00:00:00 2001 From: _OfTeN_ Date: Mon, 1 Nov 2021 14:16:03 +0300 Subject: [PATCH 09/10] Revert to Auxilors way of fixing grindstoneable: false --- .../grindstone/GrindstoneListeners.java | 73 +++++-------------- 1 file changed, 18 insertions(+), 55 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 3bb4278a..18fa9efa 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 @@ -1,5 +1,6 @@ package com.willfp.ecoenchants.enchantments.support.merging.grindstone; +import com.sk89q.worldguard.blacklist.target.ItemMatcher; import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; import com.willfp.eco.util.NumberUtils; @@ -59,72 +60,34 @@ public class GrindstoneListeners extends PluginDependent implements L return; } - Map merged = GrindstoneMerge.doMerge(top, bottom); - ItemMeta meta = out.getItemMeta(); - for (Enchantment enchantment : merged.keySet()) { - if (meta instanceof EnchantmentStorageMeta storageMeta) { - storageMeta.addStoredEnchant(enchantment, merged.get(enchantment), true); - } else { - meta.addEnchant(enchantment, merged.get(enchantment), true); - } - } - out.setItemMeta(meta); + Map toKeep = GrindstoneMerge.doMerge(top, bottom); this.getPlugin().getScheduler().runLater(() -> { - if (inventory.getItem(2) != null || event.isCancelled()) return; - Set enchants = new HashSet<>(); - if (top != null) { - enchants.addAll(top.getEnchantments().keySet()); + if (inventory.getItem(2) != null || event.isCancelled()) { + return; } - if (bottom != null) { - enchants.addAll(bottom.getEnchantments().keySet()); + + ItemMeta outMeta = out.getItemMeta(); + assert outMeta != null; + + if (outMeta instanceof EnchantmentStorageMeta storageMeta) { + toKeep.forEach((enchant, level) -> storageMeta.addStoredEnchant(enchant, level, true)); + out.setItemMeta(storageMeta); + } else { + toKeep.forEach((enchant, level) -> outMeta.addEnchant(enchant, level, true)); + out.setItemMeta(outMeta); } - enchants.removeIf(enchantment -> !(enchantment instanceof EcoEnchant) || merged.containsKey(enchantment)); - if (!enchants.isEmpty()) { + + if (!toKeep.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); + orb.setExperience(toKeep.size() * 15); } }, 1); } - /** - * An additional grindstone listener for isGrindstoneable check. - * - * @param event The event to listen to. - */ - @EventHandler - public void onGrindstoneFix(@NotNull final InventoryClickEvent event) { - Player player = (Player) event.getWhoClicked(); - if (player.getOpenInventory().getTopInventory().getType() != InventoryType.GRINDSTONE) { - return; - } - this.getPlugin().getScheduler().runLater(() -> { - GrindstoneInventory inventory = (GrindstoneInventory) player.getOpenInventory().getTopInventory(); - - ItemStack top = inventory.getItem(0); - ItemStack bottom = inventory.getItem(1); - ItemStack out = inventory.getItem(2); - - if (out == null) { - return; - } - - Map merged = GrindstoneMerge.doMerge(top, bottom); - ItemMeta meta = out.getItemMeta(); - for (Enchantment enchantment : merged.keySet()) { - if (meta instanceof EnchantmentStorageMeta storageMeta) { - storageMeta.addStoredEnchant(enchantment, merged.get(enchantment), true); - } else { - meta.addEnchant(enchantment, merged.get(enchantment), true); - } - } - out.setItemMeta(meta); - }, 1); - } - -} +} \ No newline at end of file From 542d695874f509bb7f7efa611c90c0182ba9dc3b Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 1 Nov 2021 12:13:59 +0000 Subject: [PATCH 10/10] Updated to 8.14.7 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 636a245f..79ebbd36 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 8.14.6 +version = 8.14.7 plugin-name = EcoEnchants \ No newline at end of file