mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
Add confirm action gui.
This commit is contained in:
parent
ce96fefc79
commit
dc35d59077
7 changed files with 96 additions and 14 deletions
|
|
@ -8,7 +8,6 @@ import com.github.stefvanschie.inventoryframework.pane.Pane;
|
||||||
import com.github.stefvanschie.inventoryframework.pane.PatternPane;
|
import com.github.stefvanschie.inventoryframework.pane.PatternPane;
|
||||||
import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
|
import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
|
||||||
import io.delilaheve.CustomAnvil;
|
import io.delilaheve.CustomAnvil;
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import xyz.alexcrea.cuanvil.gui.MainConfigGui;
|
import xyz.alexcrea.cuanvil.gui.MainConfigGui;
|
||||||
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
|
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 xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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<Boolean> 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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
package xyz.alexcrea.cuanvil.gui.config;
|
package xyz.alexcrea.cuanvil.gui.config;
|
||||||
|
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public interface SelectEnchantmentContainer {
|
public interface SelectEnchantmentContainer {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package xyz.alexcrea.cuanvil.gui.config;
|
||||||
|
|
||||||
import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup;
|
import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public interface SelectGroupContainer {
|
public interface SelectGroupContainer {
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,8 @@ import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup;
|
|
||||||
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
|
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.config.SelectEnchantmentContainer;
|
||||||
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalItems;
|
|
||||||
import xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant;
|
import xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant;
|
||||||
import xyz.alexcrea.cuanvil.util.CasedStringUtil;
|
import xyz.alexcrea.cuanvil.util.CasedStringUtil;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package xyz.alexcrea.cuanvil.gui.util;
|
||||||
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
|
|
||||||
|
|
@ -73,18 +73,18 @@ abstract class AbstractMaterialGroup(private val name: String) {
|
||||||
// Test inner material
|
// Test inner material
|
||||||
val matIterator = includedMaterial.iterator()
|
val matIterator = includedMaterial.iterator()
|
||||||
while(matIterator.hasNext()){
|
while(matIterator.hasNext()){
|
||||||
val material = matIterator.next();
|
val material = matIterator.next()
|
||||||
if(material.isAir) continue
|
if(material.isAir) continue
|
||||||
return material;
|
return material
|
||||||
}
|
}
|
||||||
// Test included group representative material
|
// Test included group representative material
|
||||||
val groupIterator = getGroups().iterator()
|
val groupIterator = getGroups().iterator()
|
||||||
while (groupIterator.hasNext()){
|
while (groupIterator.hasNext()){
|
||||||
val groupMat = groupIterator.next().getRepresentativeMaterial()
|
val groupMat = groupIterator.next().getRepresentativeMaterial()
|
||||||
if(groupMat.isAir) continue
|
if(groupMat.isAir) continue
|
||||||
return groupMat;
|
return groupMat
|
||||||
}
|
}
|
||||||
return Material.PAPER;
|
return Material.PAPER
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue