| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package me.lethunderhawk.clans.gui;
- import me.lethunderhawk.clans.Clan;
- import me.lethunderhawk.clans.claim.Claim;
- import me.lethunderhawk.clans.claim.ClaimManager;
- import me.lethunderhawk.fluxapi.FluxService;
- import me.lethunderhawk.fluxapi.util.gui.ConfirmationMenu;
- import me.lethunderhawk.fluxapi.util.gui.InventoryGUI;
- import me.lethunderhawk.fluxapi.util.gui.input.SignMenuFactory;
- import me.lethunderhawk.main.BazaarFlux;
- import me.lethunderhawk.fluxapi.util.UnItalic;
- import net.kyori.adventure.text.Component;
- import net.kyori.adventure.text.format.NamedTextColor;
- import org.bukkit.Material;
- import org.bukkit.entity.Player;
- import org.bukkit.event.inventory.ClickType;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import java.util.List;
- public class ClaimSettingsGUI extends InventoryGUI {
- private final Player player;
- private final Clan clan;
- public ClaimSettingsGUI(Player player, Clan clan) {
- super("Claim Settings", 36);
- this.player = player;
- this.clan = clan;
- }
- private void buildItems() {
- final int[] slot = {0};
- clan.getClaims().forEach(claim -> {
- setItemWithClickAction(slot[0], buildItemFromClaim(claim), (p, type)->{
- if(type == ClickType.RIGHT || type == ClickType.SHIFT_RIGHT){
- renameClaim(claim);
- update();
- }else if(type == ClickType.LEFT || type == ClickType.SHIFT_LEFT){
- showRemoveClaimDialog(claim, p);
- }
- });
- slot[0]++;
- });
- }
- private void showRemoveClaimDialog(Claim claim, Player p) {
- ConfirmationMenu confirmationMenu = new ConfirmationMenu("Delete Claim?", (pl) ->{
- removeClaim(claim);
- });
- openNext(p, confirmationMenu);
- }
- private void removeClaim(Claim claim) {
- FluxService.get(ClaimManager.class).removeClaim(claim);
- }
- private void renameClaim(Claim claim) {
- SignMenuFactory.Menu menu = new SignMenuFactory(FluxService.get(BazaarFlux.class)).newMenu(List.of("", "^^^^^^^^^^^^", "Enter the new", "name of the claim"))
- .reopenIfFail(true)
- .response((p, strings) -> {
- rename(strings[0], claim);
- update();
- open(p);
- return true;
- });
- menu.open(player);
- }
- private void rename(String input, Claim claim) {
- claim.setName(input);
- }
- private ItemStack buildItemFromClaim(Claim claim) {
- ItemStack item = new ItemStack(Material.GRASS_BLOCK);
- ItemMeta meta = item.getItemMeta();
- meta.displayName(Component.text(claim.getName(), NamedTextColor.GOLD));
- meta.lore(List.of(
- Component.text("Spans from x=" + claim.getMaxX() + ", z=" + claim.getMaxZ(), NamedTextColor.GRAY),
- Component.text("to x=" + claim.getMinX() + ", z=" + claim.getMinZ(), NamedTextColor.GRAY),
- Component.text("Volume: " + claim.getVolume() + " blocks²", NamedTextColor.GRAY),
- Component.text(""),
- Component.text("Left click to remove", NamedTextColor.YELLOW),
- Component.text("Right click to rename", NamedTextColor.YELLOW)
- ));
- item.setItemMeta(UnItalic.removeItalicFromMeta(meta));
- return item;
- }
- @Override
- public void buildContent() {
- fillGlassPaneBackground();
- setBackButton(30);
- setCloseButton(31);
- buildItems();
- }
- @Override
- public void update() {
- buildContent();
- }
- }
|