package me.lethunderhawk.clans.gui; import me.lethunderhawk.bazaarflux.util.gui.InventoryGUI; import me.lethunderhawk.clans.Clan; import me.lethunderhawk.clans.claim.Claim; import me.lethunderhawk.clans.claim.ClaimManager; import me.lethunderhawk.main.Main; import me.lethunderhawk.main.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; import java.util.concurrent.atomic.AtomicInteger; 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; buildGUI(); } private void buildGUI() { fillGlassPaneBackground(); setBackButton(30); setCloseButton(31); buildItems(); } private void buildItems() { AtomicInteger slot = new AtomicInteger(); clan.getClaims().forEach(claim -> { setItemWithClickAction(slot.get(), buildItemFromClaim(claim), (p, type)->{ if(type == ClickType.LEFT || type == ClickType.SHIFT_LEFT){ renameClaim(claim); }else if(type == ClickType.RIGHT || type == ClickType.SHIFT_RIGHT){ ConfirmationMenu confirmationMenu = new ConfirmationMenu("Delete Claim?", (pl) ->{ removeClaim(claim); }); this.openNext(p, confirmationMenu); } }); slot.getAndIncrement(); }); } private void removeClaim(Claim claim) { ClaimManager manager = Main.getInstance().getClanModule().getClaimManager(); manager.removeClaim(claim); } private void renameClaim(Claim claim) { } 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 rename", NamedTextColor.YELLOW), Component.text("Right click to remove", NamedTextColor.YELLOW) )); item.setItemMeta(UnItalic.removeItalicFromMeta(meta)); return item; } @Override public void update() { buildGUI(); } }