package me.lethunderhawk.clans.gui; import me.lethunderhawk.bazaarflux.util.gui.InventoryGUI; import me.lethunderhawk.clans.settings.ClanSetting; import me.lethunderhawk.clans.settings.ClanSettings; import me.lethunderhawk.main.util.UnItalic; import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import java.util.concurrent.atomic.AtomicInteger; public class ClanSettingsGUI extends InventoryGUI { private final Player player; private final ClanSettings settings; public ClanSettingsGUI(Player player, ClanSettings settings) { super("Clan Settings", 36); this.player = player; this.settings = settings; buildGUI(); } private void buildGUI() { fillGlassPaneBackground(); setBackButton(30); setCloseButton(31); buildItems(); } private void buildItems() { AtomicInteger slot = new AtomicInteger(10); settings.asMap().forEach((setting, value) -> { ItemStack settingsItem; if(value == true){ settingsItem = new ItemStack(Material.LIME_STAINED_GLASS_PANE); }else{ settingsItem = new ItemStack(Material.RED_STAINED_GLASS_PANE); } ItemMeta meta = settingsItem.getItemMeta(); meta.displayName(getReadableNameFromSetting(setting)); settingsItem.setItemMeta(UnItalic.removeItalicFromMeta(meta)); setItemWithClickAction(slot.get(), settingsItem, (p, type) -> { settings.toggleSetting(setting); update(); }); slot.getAndIncrement(); }); } private Component getReadableNameFromSetting(ClanSetting setting) { switch (setting){ case ClanSetting.BLOCK_BREAK -> { return Component.text("Breaking Blocks"); } case ClanSetting.BLOCK_PLACE -> { return Component.text("Placing Blocks"); } case ClanSetting.INTERACT_IGNITION -> { return Component.text("Igniting Blocks"); } case ClanSetting.INTERACT_BLOCK -> { return Component.text("Interacting with Blocks"); } case ClanSetting.INTERACT_ENTITY -> { return Component.text("Interacting with Entities"); } case ClanSetting.OPEN_CONTAINER -> { return Component.text("Opening Containers"); } case ClanSetting.USE_ANVIL -> { return Component.text("Using Anvil"); } default -> { return Component.text(setting.name()); } } } @Override public void update() { buildItems(); } }