diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoDisenchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoDisenchanter.java index f4f0009c1..cfe972d7f 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoDisenchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoDisenchanter.java @@ -2,6 +2,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric.machine import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils; import io.github.thebusybiscuit.slimefun4.api.events.AutoDisenchantEvent; +import io.github.thebusybiscuit.slimefun4.api.items.ItemSetting; import io.github.thebusybiscuit.slimefun4.api.items.settings.IntRangeSetting; import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -15,6 +16,7 @@ import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.ItemMeta; @@ -22,6 +24,7 @@ import org.bukkit.inventory.meta.Repairable; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -39,12 +42,14 @@ import java.util.Map; */ public class AutoDisenchanter extends AContainer { + private final ItemSetting useEnchantLevelLimit = new ItemSetting<>("use-enchant-level-limit", false); private final IntRangeSetting enchantLevelLimit = new IntRangeSetting("enchant-level-limit", 0, Short.MAX_VALUE, Short.MAX_VALUE); @ParametersAreNonnullByDefault public AutoDisenchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { super(category, item, recipeType, recipe); + addItemSetting(useEnchantLevelLimit); addItemSetting(enchantLevelLimit); } @@ -78,16 +83,24 @@ public class AutoDisenchanter extends AContainer { int amount = 0; for (Map.Entry entry : item.getEnchantments().entrySet()) { - if (enchantLevelLimit.getValue() >= entry.getValue()) { + if (!useEnchantLevelLimit.getValue() || enchantLevelLimit.getValue() >= entry.getValue()) { enchantments.put(entry.getKey(), entry.getValue()); amount++; } else if (!menu.toInventory().getViewers().isEmpty()) { - for (HumanEntity viewer : menu.toInventory().getViewers()) { - SlimefunPlugin.getLocalization().sendMessage(viewer, "messages.above-limit-level", true, - (message -> message.replace("%level%", enchantLevelLimit.getValue().toString()) - .replace("%item%", item.hasItemMeta() && item.getItemMeta().hasDisplayName() ? item.getItemMeta().getDisplayName() : item.getType().name()) - )); - } + String notice = SlimefunPlugin.getLocalization().getMessage("messages.above-limit-level") + .replace("%level%", enchantLevelLimit.getValue().toString()) + .replace("%item%", item.hasItemMeta() && item.getItemMeta().hasDisplayName() ? item.getItemMeta().getDisplayName() : item.getType().name()); + + ItemStack progressBar = getProgressBar().clone(); + progressBar.setType(Material.BARRIER); + + ItemMeta im = progressBar.getItemMeta(); + im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); + im.setLore(Collections.singletonList(notice)); + + progressBar.setItemMeta(im); + + menu.replaceExistingItem(22, progressBar); } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoEnchanter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoEnchanter.java index c35e4268e..84345326e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoEnchanter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoEnchanter.java @@ -1,6 +1,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines; import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils; +import io.github.thebusybiscuit.slimefun4.api.items.ItemSetting; import io.github.thebusybiscuit.slimefun4.api.items.settings.IntRangeSetting; import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -13,21 +14,27 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.EnchantmentStorageMeta; +import org.bukkit.inventory.meta.ItemMeta; import javax.annotation.ParametersAreNonnullByDefault; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.Map; public class AutoEnchanter extends AContainer { + private final ItemSetting useEnchantLevelLimit = new ItemSetting<>("use-enchant-level-limit", false); private final IntRangeSetting enchantLevelLimit = new IntRangeSetting("enchant-level-limit", 0, Short.MAX_VALUE, Short.MAX_VALUE); @ParametersAreNonnullByDefault public AutoEnchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { super(category, item, recipeType, recipe); - + + addItemSetting(useEnchantLevelLimit); addItemSetting(enchantLevelLimit); } @@ -55,16 +62,24 @@ public class AutoEnchanter extends AContainer { for (Map.Entry e : meta.getStoredEnchants().entrySet()) { if (e.getKey().canEnchantItem(target)) { - if (enchantLevelLimit.getValue() >= e.getValue()) { + if (!useEnchantLevelLimit.getValue() || enchantLevelLimit.getValue() >= e.getValue()) { amount++; enchantments.put(e.getKey(), e.getValue()); } else if (!menu.toInventory().getViewers().isEmpty()) { - for (HumanEntity viewer : menu.toInventory().getViewers()) { - SlimefunPlugin.getLocalization().sendMessage(viewer, "messages.above-limit-level", true, - (message -> message.replace("%level%", enchantLevelLimit.getValue().toString()) - .replace("%item%", item.hasItemMeta() && item.getItemMeta().hasDisplayName() ? item.getItemMeta().getDisplayName() : item.getType().name()) - )); - } + String notice = SlimefunPlugin.getLocalization().getMessage("messages.above-limit-level") + .replace("%level%", enchantLevelLimit.getValue().toString()) + .replace("%item%", item.hasItemMeta() && item.getItemMeta().hasDisplayName() ? item.getItemMeta().getDisplayName() : item.getType().name()); + + ItemStack progressBar = getProgressBar().clone(); + progressBar.setType(Material.BARRIER); + + ItemMeta im = progressBar.getItemMeta(); + im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); + im.setLore(Collections.singletonList(notice)); + + progressBar.setItemMeta(im); + + menu.replaceExistingItem(22, progressBar); } } }