diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/AbstractEnchantConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/AbstractEnchantConfigGui.java index 4398af5..4094244 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/AbstractEnchantConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/AbstractEnchantConfigGui.java @@ -8,7 +8,6 @@ import com.github.stefvanschie.inventoryframework.pane.Pane; import com.github.stefvanschie.inventoryframework.pane.PatternPane; import com.github.stefvanschie.inventoryframework.pane.util.Pattern; import io.delilaheve.CustomAnvil; -import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import xyz.alexcrea.cuanvil.gui.MainConfigGui; import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui; @@ -17,8 +16,6 @@ import xyz.alexcrea.cuanvil.gui.util.GuiGlobalItems; import xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; import java.util.List; /** diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/ConfirmActionGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/ConfirmActionGui.java new file mode 100644 index 0000000..8a85cd2 --- /dev/null +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/ConfirmActionGui.java @@ -0,0 +1,92 @@ +package xyz.alexcrea.cuanvil.gui.config; + +import com.github.stefvanschie.inventoryframework.adventuresupport.TextHolder; +import com.github.stefvanschie.inventoryframework.gui.GuiItem; +import com.github.stefvanschie.inventoryframework.gui.type.ChestGui; +import com.github.stefvanschie.inventoryframework.gui.type.util.Gui; +import com.github.stefvanschie.inventoryframework.pane.PatternPane; +import com.github.stefvanschie.inventoryframework.pane.util.Pattern; +import io.delilaheve.CustomAnvil; +import org.bukkit.Material; +import org.bukkit.entity.HumanEntity; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; +import xyz.alexcrea.cuanvil.gui.util.GuiGlobalActions; +import xyz.alexcrea.cuanvil.gui.util.GuiGlobalItems; + +import java.util.Arrays; +import java.util.Collections; +import java.util.function.Supplier; +import java.util.logging.Level; + +public class ConfirmActionGui extends ChestGui { + + private static final ItemStack CANCEL_ITEM; + private static final ItemStack CONFIRM_ITEM; + static { + CANCEL_ITEM = new ItemStack(Material.RED_TERRACOTTA); + ItemMeta meta = CANCEL_ITEM.getItemMeta(); + meta.setDisplayName("\u00A7cCancel"); + meta.setLore(Collections.singletonList("\u00A77Cancel current action and return to previous menu.")); + CANCEL_ITEM.setItemMeta(meta); + + CONFIRM_ITEM = new ItemStack(Material.GREEN_TERRACOTTA); + meta = CONFIRM_ITEM.getItemMeta(); + meta.setDisplayName("\u00A7aConfirm"); + meta.setLore(Arrays.asList("\u00A77Confirm current action.", + "\u00A74Cation: This action can't be canceled.")); + CONFIRM_ITEM.setItemMeta(meta); + } + + public ConfirmActionGui(@NotNull TextHolder title, String actionDescription, Gui backOnCancel, Gui backOnConfirm, Supplier onConfirm) { + super(3, title, CustomAnvil.instance); + + Pattern pattern = new Pattern( + "000000000", + "00B0I0S00", + "000000000" + ); + PatternPane pane = new PatternPane(0, 0, pattern.getLength(), pattern.getHeight(), pattern); + addPane(pane); + + pane.bindItem('0', GuiGlobalItems.backgroundItem()); + + pane.bindItem('B', new GuiItem(CANCEL_ITEM, GuiGlobalActions.openGuiAction(backOnCancel), CustomAnvil.instance)); + pane.bindItem('S', new GuiItem(CONFIRM_ITEM, event -> { + event.setCancelled(true); + HumanEntity player = event.getWhoClicked(); + + if(!player.hasPermission(CustomAnvil.editConfigPermission)) { + player.closeInventory(); + player.sendMessage(GuiGlobalActions.NO_EDIT_PERM); + return; + } + + boolean success; + try{ + success = onConfirm.get(); + }catch (Exception e){ + CustomAnvil.instance.getLogger().log(Level.WARNING, "Could not process confirmation supplier.", e); + success = false; + } + + if(!success){ + event.getWhoClicked().sendMessage("\u00A7cAction could not be completed. "); + } + backOnConfirm.show(player); + + }, CustomAnvil.instance)); + + ItemStack infoItem = new ItemStack(Material.PAPER); + ItemMeta infoMeta = infoItem.getItemMeta(); + + infoMeta.setDisplayName("\u00A7eAre you sure ?"); + infoMeta.setLore(Arrays.asList(actionDescription.split("\n"))); + + infoItem.setItemMeta(infoMeta); + + pane.bindItem('I', new GuiItem(infoItem, GuiGlobalActions.stayInPlace, CustomAnvil.instance)); + } + +} diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectEnchantmentContainer.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectEnchantmentContainer.java index dcbbb47..ee6ce77 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectEnchantmentContainer.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectEnchantmentContainer.java @@ -1,9 +1,7 @@ package xyz.alexcrea.cuanvil.gui.config; import org.bukkit.enchantments.Enchantment; -import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup; -import java.util.List; import java.util.Set; public interface SelectEnchantmentContainer { diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectGroupContainer.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectGroupContainer.java index 33d76f9..a8b2dba 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectGroupContainer.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectGroupContainer.java @@ -2,7 +2,6 @@ package xyz.alexcrea.cuanvil.gui.config; import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup; -import java.util.List; import java.util.Set; public interface SelectGroupContainer { diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/EnchantSelectSettingGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/EnchantSelectSettingGui.java index e749c3f..3cfa8c2 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/EnchantSelectSettingGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/EnchantSelectSettingGui.java @@ -13,11 +13,8 @@ import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; -import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup; import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui; -import xyz.alexcrea.cuanvil.gui.config.AbstractEnchantConfigGui; import xyz.alexcrea.cuanvil.gui.config.SelectEnchantmentContainer; -import xyz.alexcrea.cuanvil.gui.util.GuiGlobalItems; import xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant; import xyz.alexcrea.cuanvil.util.CasedStringUtil; diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/util/GuiSharedConstant.java b/src/main/java/xyz/alexcrea/cuanvil/gui/util/GuiSharedConstant.java index 532b02d..94b5da1 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/util/GuiSharedConstant.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/util/GuiSharedConstant.java @@ -3,7 +3,6 @@ package xyz.alexcrea.cuanvil.gui.util; import com.github.stefvanschie.inventoryframework.gui.GuiItem; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; -import org.bukkit.inventory.ItemStack; import java.util.Arrays; import java.util.Comparator; diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractMaterialGroup.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractMaterialGroup.kt index 233d990..f7a62b7 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractMaterialGroup.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractMaterialGroup.kt @@ -73,18 +73,18 @@ abstract class AbstractMaterialGroup(private val name: String) { // Test inner material val matIterator = includedMaterial.iterator() while(matIterator.hasNext()){ - val material = matIterator.next(); + val material = matIterator.next() if(material.isAir) continue - return material; + return material } // Test included group representative material val groupIterator = getGroups().iterator() while (groupIterator.hasNext()){ val groupMat = groupIterator.next().getRepresentativeMaterial() if(groupMat.isAir) continue - return groupMat; + return groupMat } - return Material.PAPER; + return Material.PAPER } } \ No newline at end of file