ClaimSettingsGUI.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package me.lethunderhawk.clans.gui;
  2. import me.lethunderhawk.bazaarflux.util.gui.InventoryGUI;
  3. import me.lethunderhawk.clans.Clan;
  4. import me.lethunderhawk.clans.claim.Claim;
  5. import me.lethunderhawk.clans.claim.ClaimManager;
  6. import me.lethunderhawk.main.Main;
  7. import me.lethunderhawk.main.util.UnItalic;
  8. import net.kyori.adventure.text.Component;
  9. import net.kyori.adventure.text.format.NamedTextColor;
  10. import org.bukkit.Material;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.inventory.ClickType;
  13. import org.bukkit.inventory.ItemStack;
  14. import org.bukkit.inventory.meta.ItemMeta;
  15. import java.util.List;
  16. import java.util.concurrent.atomic.AtomicInteger;
  17. public class ClaimSettingsGUI extends InventoryGUI {
  18. private final Player player;
  19. private final Clan clan;
  20. public ClaimSettingsGUI(Player player, Clan clan) {
  21. super("Claim Settings", 36);
  22. this.player = player;
  23. this.clan = clan;
  24. buildGUI();
  25. }
  26. private void buildGUI() {
  27. fillGlassPaneBackground();
  28. setBackButton(30);
  29. setCloseButton(31);
  30. buildItems();
  31. }
  32. private void buildItems() {
  33. AtomicInteger slot = new AtomicInteger();
  34. clan.getClaims().forEach(claim -> {
  35. setItemWithClickAction(slot.get(), buildItemFromClaim(claim), (p, type)->{
  36. if(type == ClickType.LEFT || type == ClickType.SHIFT_LEFT){
  37. renameClaim(claim);
  38. }else if(type == ClickType.RIGHT || type == ClickType.SHIFT_RIGHT){
  39. ConfirmationMenu confirmationMenu = new ConfirmationMenu("Delete Claim?", (pl) ->{
  40. removeClaim(claim);
  41. });
  42. this.openNext(p, confirmationMenu);
  43. }
  44. });
  45. slot.getAndIncrement();
  46. });
  47. }
  48. private void removeClaim(Claim claim) {
  49. ClaimManager manager = Main.getInstance().getClanModule().getClaimManager();
  50. manager.removeClaim(claim);
  51. }
  52. private void renameClaim(Claim claim) {
  53. }
  54. private ItemStack buildItemFromClaim(Claim claim) {
  55. ItemStack item = new ItemStack(Material.GRASS_BLOCK);
  56. ItemMeta meta = item.getItemMeta();
  57. meta.displayName(Component.text(claim.getName(), NamedTextColor.GOLD));
  58. meta.lore(List.of(
  59. Component.text("Spans from x=" + claim.getMaxX() + ", z=" + claim.getMaxZ(), NamedTextColor.GRAY),
  60. Component.text("to x=" + claim.getMinX() + ", z=" + claim.getMinZ(), NamedTextColor.GRAY),
  61. Component.text("Volume: " + claim.getVolume() + " blocks²", NamedTextColor.GRAY),
  62. Component.text(""),
  63. Component.text("Left click to rename", NamedTextColor.YELLOW),
  64. Component.text("Right click to remove", NamedTextColor.YELLOW)
  65. ));
  66. item.setItemMeta(UnItalic.removeItalicFromMeta(meta));
  67. return item;
  68. }
  69. @Override
  70. public void update() {
  71. buildGUI();
  72. }
  73. }