From 02c990cf299f0094ad4509216db03afbb0339aca Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sat, 27 Mar 2021 05:48:50 +0800 Subject: [PATCH 01/16] a --- .../slimefun4/api/items/ItemSetting.java | 4 +++- .../machines/enchanting/AutoDisenchanter.java | 16 +++++++++++++--- .../machines/enchanting/AutoEnchanter.java | 13 ++++++++++++- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/items/ItemSetting.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/items/ItemSetting.java index 664498a26..b753f9c1e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/api/items/ItemSetting.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/items/ItemSetting.java @@ -9,6 +9,8 @@ import io.github.thebusybiscuit.cscorelib2.config.Config; import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import java.util.List; + /** * This class represents a Setting for a {@link SlimefunItem} that can be modified via * the {@code Items.yml} {@link Config} file. @@ -149,7 +151,7 @@ public class ItemSetting { SlimefunPlugin.getItemCfg().setDefaultValue(item.getId() + '.' + getKey(), getDefaultValue()); Object configuredValue = SlimefunPlugin.getItemCfg().getValue(item.getId() + '.' + getKey()); - if (defaultValue.getClass().isInstance(configuredValue)) { + if (defaultValue.getClass().isInstance(configuredValue) || (configuredValue instanceof List && defaultValue instanceof List)) { // We can do an unsafe cast here, we did an isInstance(...) check before! T newValue = (T) configuredValue; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java index 2cf6650f7..d57638f03 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java @@ -1,7 +1,6 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.enchanting; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; @@ -29,6 +28,8 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; +import static java.util.Arrays.asList; + /** * The {@link AutoDisenchanter}, in contrast to the {@link AutoEnchanter}, removes * {@link Enchantment Enchantments} from a given {@link ItemStack} and transfers them @@ -50,6 +51,7 @@ public class AutoDisenchanter extends AContainer { private final ItemSetting useEnchantLevelLimit = new ItemSetting<>(this, "use-enchant-level-limit", false); private final IntRangeSetting enchantLevelLimit = new IntRangeSetting(this, "enchant-level-limit", 0, 10, Short.MAX_VALUE); + private final ItemSetting> cantDisenchantLores = new ItemSetting<>(this, "cant-disenchant-lores", asList("§7- §cCan't be Auto-Disenchanted")); @ParametersAreNonnullByDefault public AutoDisenchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { @@ -57,6 +59,7 @@ public class AutoDisenchanter extends AContainer { addItemSetting(useEnchantLevelLimit); addItemSetting(enchantLevelLimit); + addItemSetting(cantDisenchantLores); } @Override @@ -147,7 +150,14 @@ public class AutoDisenchanter extends AContainer { private boolean isDisenchantable(@Nullable ItemStack item) { if (item == null) { return false; - } else if (item.getType() != Material.BOOK) { + } else if (item.hasItemMeta() && item.getItemMeta().getLore() != null) { + for (String lore : cantDisenchantLores.getValue()) { + if (item.getItemMeta().getLore().contains(lore)) { + return false; + } + } + } + if (item.getType() != Material.BOOK) { // ^ This stops endless checks of getByItem for books SlimefunItem sfItem = SlimefunItem.getByItem(item); return sfItem == null || sfItem.isDisenchantable(); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java index bf0c6937b..706eaf06e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java @@ -1,6 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.enchanting; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @@ -24,6 +25,8 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; +import static java.util.Arrays.asList; + /** * The {@link AutoEnchanter}, in contrast to the {@link AutoDisenchanter}, adds * {@link Enchantment Enchantments} from a given enchanted book and transfers them onto @@ -41,6 +44,7 @@ public class AutoEnchanter extends AContainer { private final ItemSetting useEnchantLevelLimit = new ItemSetting<>(this, "use-enchant-level-limit", false); private final IntRangeSetting enchantLevelLimit = new IntRangeSetting(this, "enchant-level-limit", 0, 10, Short.MAX_VALUE); + private final ItemSetting> cantEnchantLores = new ItemSetting<>(this, "cant-enchant-lores", asList("§7- §cCan't be Auto-Enchanted")); @ParametersAreNonnullByDefault public AutoEnchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { @@ -48,6 +52,7 @@ public class AutoEnchanter extends AContainer { addItemSetting(useEnchantLevelLimit); addItemSetting(enchantLevelLimit); + addItemSetting(cantEnchantLores); } @Override @@ -117,7 +122,13 @@ public class AutoEnchanter extends AContainer { private boolean isEnchantable(ItemStack item) { SlimefunItem sfItem = null; - + if (item != null && item.hasItemMeta() && item.getItemMeta().getLore() != null) { + for (String lore : cantEnchantLores.getValue()) { + if (item.getItemMeta().getLore().contains(lore)) { + return false; + } + } + } // stops endless checks of getByItem for enchanted book stacks. if (item != null && item.getType() != Material.ENCHANTED_BOOK) { sfItem = SlimefunItem.getByItem(item); From 4b962cd810ff23961dde10f5e5356f95e9845be7 Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sat, 27 Mar 2021 06:25:41 +0800 Subject: [PATCH 02/16] Update src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java Co-authored-by: Daniel Walsh --- .../items/electric/machines/enchanting/AutoDisenchanter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java index d57638f03..8958e20f9 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java @@ -150,7 +150,7 @@ public class AutoDisenchanter extends AContainer { private boolean isDisenchantable(@Nullable ItemStack item) { if (item == null) { return false; - } else if (item.hasItemMeta() && item.getItemMeta().getLore() != null) { + } else if (item.hasItemMeta() && item.getItemMeta().hasLore()) { for (String lore : cantDisenchantLores.getValue()) { if (item.getItemMeta().getLore().contains(lore)) { return false; From 50b1b2b9804a74a7152cabfcded6432a99c1ec88 Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sat, 27 Mar 2021 06:26:22 +0800 Subject: [PATCH 03/16] Update src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java Co-authored-by: Daniel Walsh --- .../items/electric/machines/enchanting/AutoEnchanter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java index 706eaf06e..b7be9d88b 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java @@ -122,7 +122,7 @@ public class AutoEnchanter extends AContainer { private boolean isEnchantable(ItemStack item) { SlimefunItem sfItem = null; - if (item != null && item.hasItemMeta() && item.getItemMeta().getLore() != null) { + if (item != null && item.hasItemMeta() && item.getItemMeta().hasLore()) { for (String lore : cantEnchantLores.getValue()) { if (item.getItemMeta().getLore().contains(lore)) { return false; From 685824c325d584c2509af068f936c9c1d5420105 Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sat, 27 Mar 2021 06:28:14 +0800 Subject: [PATCH 04/16] Update AutoDisenchanter.java --- .../items/electric/machines/enchanting/AutoDisenchanter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java index 8958e20f9..2c247dde5 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java @@ -1,6 +1,8 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.enchanting; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; From 09c3367985dd43bafabb6f36b1f8d470bb88309d Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sat, 27 Mar 2021 07:12:25 +0800 Subject: [PATCH 05/16] =?UTF-8?q?Replaced=20=C2=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../items/electric/machines/enchanting/AutoEnchanter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java index b7be9d88b..251fc1a9c 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java @@ -44,7 +44,7 @@ public class AutoEnchanter extends AContainer { private final ItemSetting useEnchantLevelLimit = new ItemSetting<>(this, "use-enchant-level-limit", false); private final IntRangeSetting enchantLevelLimit = new IntRangeSetting(this, "enchant-level-limit", 0, 10, Short.MAX_VALUE); - private final ItemSetting> cantEnchantLores = new ItemSetting<>(this, "cant-enchant-lores", asList("§7- §cCan't be Auto-Enchanted")); + private final ItemSetting> cantEnchantLores = new ItemSetting<>(this, "cant-enchant-lores", asList("&7- &cCan't be Auto-Enchanted")); @ParametersAreNonnullByDefault public AutoEnchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { @@ -124,7 +124,7 @@ public class AutoEnchanter extends AContainer { SlimefunItem sfItem = null; if (item != null && item.hasItemMeta() && item.getItemMeta().hasLore()) { for (String lore : cantEnchantLores.getValue()) { - if (item.getItemMeta().getLore().contains(lore)) { + if (item.getItemMeta().getLore().contains(ChatColors.color(lore))) { return false; } } From efaca45045b09d960f95fe77b8d0274327ff2856 Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sat, 27 Mar 2021 07:13:40 +0800 Subject: [PATCH 06/16] Update AutoDisenchanter.java --- .../electric/machines/enchanting/AutoDisenchanter.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java index 2c247dde5..aa2a098fe 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java @@ -53,7 +53,7 @@ public class AutoDisenchanter extends AContainer { private final ItemSetting useEnchantLevelLimit = new ItemSetting<>(this, "use-enchant-level-limit", false); private final IntRangeSetting enchantLevelLimit = new IntRangeSetting(this, "enchant-level-limit", 0, 10, Short.MAX_VALUE); - private final ItemSetting> cantDisenchantLores = new ItemSetting<>(this, "cant-disenchant-lores", asList("§7- §cCan't be Auto-Disenchanted")); + private final ItemSetting> cantDisenchantLores = new ItemSetting<>(this, "cant-disenchant-lores", asList("&7- &cCan't be Auto-Disenchanted")); @ParametersAreNonnullByDefault public AutoDisenchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { @@ -152,9 +152,9 @@ public class AutoDisenchanter extends AContainer { private boolean isDisenchantable(@Nullable ItemStack item) { if (item == null) { return false; - } else if (item.hasItemMeta() && item.getItemMeta().hasLore()) { + } else if (item.hasItemMeta() && item.getItemMeta().getLore() != null) { for (String lore : cantDisenchantLores.getValue()) { - if (item.getItemMeta().getLore().contains(lore)) { + if (item.getItemMeta().getLore().contains(ChatColors.color(lore))) { return false; } } From bfb3c4f58d2c31936173d42474564a0c752e7a5a Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sun, 28 Mar 2021 12:39:55 +0800 Subject: [PATCH 07/16] Update AutoDisenchanter.java --- .../items/electric/machines/enchanting/AutoDisenchanter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java index aa2a098fe..8737ee229 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java @@ -152,7 +152,7 @@ public class AutoDisenchanter extends AContainer { private boolean isDisenchantable(@Nullable ItemStack item) { if (item == null) { return false; - } else if (item.hasItemMeta() && item.getItemMeta().getLore() != null) { + } else if (item.hasItemMeta() && item.getItemMeta().hasLore()) { for (String lore : cantDisenchantLores.getValue()) { if (item.getItemMeta().getLore().contains(ChatColors.color(lore))) { return false; From fe82adf0ba8a53bcda8025f38d96dfee0c2d91af Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sun, 28 Mar 2021 16:49:16 +0800 Subject: [PATCH 08/16] no static import --- .../items/electric/machines/enchanting/AutoEnchanter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java index 251fc1a9c..6d24cf568 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java @@ -25,7 +25,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import static java.util.Arrays.asList; +import java.util.Arrays; /** * The {@link AutoEnchanter}, in contrast to the {@link AutoDisenchanter}, adds From f01f31bfc120294a623a91d3d585ef66fe227ab9 Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sun, 28 Mar 2021 16:49:48 +0800 Subject: [PATCH 09/16] no static import --- .../items/electric/machines/enchanting/AutoDisenchanter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java index 8737ee229..93a0ae9d3 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java @@ -30,7 +30,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import static java.util.Arrays.asList; +import java.util.Arrays; /** * The {@link AutoDisenchanter}, in contrast to the {@link AutoEnchanter}, removes From c500b825c5d9f0892dcb0cf6f46ab90ce59786ac Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sun, 28 Mar 2021 16:55:10 +0800 Subject: [PATCH 10/16] no static import --- .../items/electric/machines/enchanting/AutoEnchanter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java index 6d24cf568..f9bf084bc 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java @@ -44,7 +44,7 @@ public class AutoEnchanter extends AContainer { private final ItemSetting useEnchantLevelLimit = new ItemSetting<>(this, "use-enchant-level-limit", false); private final IntRangeSetting enchantLevelLimit = new IntRangeSetting(this, "enchant-level-limit", 0, 10, Short.MAX_VALUE); - private final ItemSetting> cantEnchantLores = new ItemSetting<>(this, "cant-enchant-lores", asList("&7- &cCan't be Auto-Enchanted")); + private final ItemSetting> cantEnchantLores = new ItemSetting<>(this, "cant-enchant-lores", Arrays.asList("&7- &cCan't be Auto-Enchanted")); @ParametersAreNonnullByDefault public AutoEnchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { From 2f7335e65bd5f6f7ef46e6ca3a032bf9b1eecdbb Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Sun, 28 Mar 2021 16:55:39 +0800 Subject: [PATCH 11/16] no static import --- .../items/electric/machines/enchanting/AutoDisenchanter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java index 93a0ae9d3..4e3d92668 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java @@ -53,7 +53,7 @@ public class AutoDisenchanter extends AContainer { private final ItemSetting useEnchantLevelLimit = new ItemSetting<>(this, "use-enchant-level-limit", false); private final IntRangeSetting enchantLevelLimit = new IntRangeSetting(this, "enchant-level-limit", 0, 10, Short.MAX_VALUE); - private final ItemSetting> cantDisenchantLores = new ItemSetting<>(this, "cant-disenchant-lores", asList("&7- &cCan't be Auto-Disenchanted")); + private final ItemSetting> cantDisenchantLores = new ItemSetting<>(this, "cant-disenchant-lores", Arrays.asList("&7- &cCan't be Auto-Disenchanted")); @ParametersAreNonnullByDefault public AutoDisenchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { From 68dc6d560d91cfab78ae4d40200c193fab31f108 Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Tue, 20 Apr 2021 12:47:48 +0800 Subject: [PATCH 12/16] Improved code --- .../machines/enchanting/AutoDisenchanter.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java index 4e3d92668..6d61a65cc 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java @@ -1,5 +1,6 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.enchanting; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,8 +31,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import java.util.Arrays; - /** * The {@link AutoDisenchanter}, in contrast to the {@link AutoEnchanter}, removes * {@link Enchantment Enchantments} from a given {@link ItemStack} and transfers them @@ -152,10 +151,13 @@ public class AutoDisenchanter extends AContainer { private boolean isDisenchantable(@Nullable ItemStack item) { if (item == null) { return false; - } else if (item.hasItemMeta() && item.getItemMeta().hasLore()) { - for (String lore : cantDisenchantLores.getValue()) { - if (item.getItemMeta().getLore().contains(ChatColors.color(lore))) { - return false; + } else { + ItemMeta itemMeta = item.getItemMeta(); + if (itemMeta != null && itemMeta.hasLore()) { + for (String lore : cantDisenchantLores.getValue()) { + if (itemMeta.getLore().contains(ChatColors.color(lore))) { + return false; + } } } } From 37bb6005e8d1f8f26461a48ebda31f2af7dfa296 Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Tue, 20 Apr 2021 12:48:17 +0800 Subject: [PATCH 13/16] Improved code --- .../machines/enchanting/AutoEnchanter.java | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java index f9bf084bc..fc7f65ded 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java @@ -1,11 +1,14 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.enchanting; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; @@ -14,6 +17,7 @@ import org.bukkit.inventory.meta.EnchantmentStorageMeta; import io.github.thebusybiscuit.cscorelib2.chat.ChatColors; import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils; import io.github.thebusybiscuit.cscorelib2.item.CustomItem; +import io.github.thebusybiscuit.slimefun4.api.events.AutoEnchantEvent; import io.github.thebusybiscuit.slimefun4.api.items.ItemSetting; import io.github.thebusybiscuit.slimefun4.api.items.settings.IntRangeSetting; import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; @@ -24,8 +28,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; - -import java.util.Arrays; +import org.bukkit.inventory.meta.ItemMeta; /** * The {@link AutoEnchanter}, in contrast to the {@link AutoDisenchanter}, adds @@ -70,6 +73,13 @@ public class AutoEnchanter extends AContainer { return null; } + AutoEnchantEvent event = new AutoEnchantEvent(target); + Bukkit.getPluginManager().callEvent(event); + + if (event.isCancelled()) { + return null; + } + ItemStack item = menu.getItemInSlot(slot); if (item != null && item.getType() == Material.ENCHANTED_BOOK && target != null) { @@ -120,21 +130,26 @@ public class AutoEnchanter extends AContainer { return null; } - private boolean isEnchantable(ItemStack item) { - SlimefunItem sfItem = null; - if (item != null && item.hasItemMeta() && item.getItemMeta().hasLore()) { - for (String lore : cantEnchantLores.getValue()) { - if (item.getItemMeta().getLore().contains(ChatColors.color(lore))) { - return false; + private boolean isEnchantable(@Nullable ItemStack item) { + if (item == null) { + return false; + } else { + ItemMeta itemMeta = item.getItemMeta(); + if (itemMeta != null && itemMeta.hasLore()) { + for (String lore : cantEnchantLores.getValue()) { + if (itemMeta.getLore().contains(ChatColors.color(lore))) { + return false; + } } } } // stops endless checks of getByItem for enchanted book stacks. - if (item != null && item.getType() != Material.ENCHANTED_BOOK) { - sfItem = SlimefunItem.getByItem(item); + if (item.getType() != Material.ENCHANTED_BOOK) { + SlimefunItem sfItem = SlimefunItem.getByItem(item); + return sfItem == null || sfItem.isEnchantable(); + } else { + return false; } - - return sfItem == null || sfItem.isEnchantable(); } @Override From 2b3658a724bccc19786834cbe49dca4ef9ad7e81 Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Tue, 20 Apr 2021 22:43:05 +0800 Subject: [PATCH 14/16] Update AutoDisenchanter.java --- .../machines/enchanting/AutoDisenchanter.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java index 6d61a65cc..cb3f481eb 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoDisenchanter.java @@ -153,10 +153,13 @@ public class AutoDisenchanter extends AContainer { return false; } else { ItemMeta itemMeta = item.getItemMeta(); - if (itemMeta != null && itemMeta.hasLore()) { - for (String lore : cantDisenchantLores.getValue()) { - if (itemMeta.getLore().contains(ChatColors.color(lore))) { - return false; + if (itemMeta != null) { + List lores = itemMeta.getLore(); + if (lores != null) { + for (String lore : cantDisenchantLores.getValue()) { + if (lores.contains(ChatColors.color(lore))) { + return false; + } } } } From 837afab0dbe0d1eb245e16494acfc7783300597d Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Tue, 20 Apr 2021 22:43:37 +0800 Subject: [PATCH 15/16] Update AutoEnchanter.java --- .../electric/machines/enchanting/AutoEnchanter.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java index fc7f65ded..239654b47 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java @@ -135,10 +135,13 @@ public class AutoEnchanter extends AContainer { return false; } else { ItemMeta itemMeta = item.getItemMeta(); - if (itemMeta != null && itemMeta.hasLore()) { - for (String lore : cantEnchantLores.getValue()) { - if (itemMeta.getLore().contains(ChatColors.color(lore))) { - return false; + if (itemMeta != null) { + List lores = itemMeta.getLore(); + if (lores != null) { + for (String lore : cantEnchantLores.getValue()) { + if (lore.contains(ChatColors.color(lore))) { + return false; + } } } } From 807c442930c46dbd1169dcae553ff3d555a6afc9 Mon Sep 17 00:00:00 2001 From: Rothes <47097395+Rothes@users.noreply.github.com> Date: Wed, 21 Apr 2021 12:20:08 +0800 Subject: [PATCH 16/16] Update src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java Co-authored-by: Riley <69326411+Mooy1@users.noreply.github.com> --- .../machines/enchanting/AutoEnchanter.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java index 239654b47..f6f2b9008 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/enchanting/AutoEnchanter.java @@ -133,15 +133,13 @@ public class AutoEnchanter extends AContainer { private boolean isEnchantable(@Nullable ItemStack item) { if (item == null) { return false; - } else { - ItemMeta itemMeta = item.getItemMeta(); - if (itemMeta != null) { - List lores = itemMeta.getLore(); - if (lores != null) { - for (String lore : cantEnchantLores.getValue()) { - if (lore.contains(ChatColors.color(lore))) { - return false; - } + } + if (item.hasItemMeta()) { + List lores = item.getItemMeta().getLore(); + if (lores != null) { + for (String lore : cantEnchantLores.getValue()) { + if (lores.contains(ChatColors.color(lore))) { + return false; } } }