diff --git a/src/main/java/dev/noah/perplayerkit/PerPlayerKit.java b/src/main/java/dev/noah/perplayerkit/PerPlayerKit.java index d3ba1ad..2742fd0 100644 --- a/src/main/java/dev/noah/perplayerkit/PerPlayerKit.java +++ b/src/main/java/dev/noah/perplayerkit/PerPlayerKit.java @@ -33,6 +33,7 @@ import dev.noah.perplayerkit.storage.exceptions.StorageOperationException; import dev.noah.perplayerkit.util.BackupManager; import dev.noah.perplayerkit.util.BroadcastManager; +import dev.noah.perplayerkit.util.StyleManager; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -62,6 +63,8 @@ public void onEnable() { ConfigManager configManager = new ConfigManager(this); configManager.loadConfig(); + new StyleManager(this); + new ItemFilter(this); new BroadcastManager(this); diff --git a/src/main/java/dev/noah/perplayerkit/commands/EnderchestCommand.java b/src/main/java/dev/noah/perplayerkit/commands/EnderchestCommand.java index 7c2fa8b..f8d6c0e 100644 --- a/src/main/java/dev/noah/perplayerkit/commands/EnderchestCommand.java +++ b/src/main/java/dev/noah/perplayerkit/commands/EnderchestCommand.java @@ -20,8 +20,7 @@ import dev.noah.perplayerkit.gui.ItemUtil; import dev.noah.perplayerkit.util.DisabledCommand; -import org.bukkit.ChatColor; -import org.bukkit.Material; +import dev.noah.perplayerkit.util.StyleManager; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -51,9 +50,9 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command public void viewOnlyEC(Player p) { - ItemStack fill = ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE,1,""); + ItemStack fill = ItemUtil.createGlassPane(); - Menu menu = ChestMenu.builder(5).title(ChatColor.BLUE + "View Only Enderchest").build(); + Menu menu = ChestMenu.builder(5).title(StyleManager.get().getPrimaryColor() + "View Only Enderchest").build(); for (int i = 0; i < 9; i++) { diff --git a/src/main/java/dev/noah/perplayerkit/commands/RegearCommand.java b/src/main/java/dev/noah/perplayerkit/commands/RegearCommand.java index 901a6d9..2de5d06 100644 --- a/src/main/java/dev/noah/perplayerkit/commands/RegearCommand.java +++ b/src/main/java/dev/noah/perplayerkit/commands/RegearCommand.java @@ -5,9 +5,9 @@ import dev.noah.perplayerkit.util.BroadcastManager; import dev.noah.perplayerkit.util.CooldownManager; import dev.noah.perplayerkit.util.DisabledCommand; +import dev.noah.perplayerkit.util.StyleManager; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -26,8 +26,9 @@ public class RegearCommand implements CommandExecutor, Listener { - public static final ItemStack REGEAR_SHULKER_ITEM = ItemUtil.createItem(Material.WHITE_SHULKER_BOX, 1, ChatColor.BLUE + "Regear Shulker", "&7● Restocks Your Kit", "&7● Use &9/rg &7to get another regear shulker"); - public static final ItemStack REGEAR_SHELL_ITEM = ItemUtil.createItem(Material.SHULKER_SHELL, 1, ChatColor.BLUE + "Regear Shell", "&7● Restocks Your Kit", "&7● Click to use!"); + public static final ItemStack REGEAR_SHULKER_ITEM = ItemUtil.createItem(Material.WHITE_SHULKER_BOX, 1, StyleManager.get().getPrimaryColor() + "Regear Shulker", "&7● Restocks Your Kit", "&7● Use " + StyleManager.get().getPrimaryColor() + "/rg &7to get another regear shulker"); + public static final ItemStack REGEAR_SHELL_ITEM = ItemUtil.createItem(Material.SHULKER_SHELL, 1, StyleManager.get().getPrimaryColor() + "Regear Shell", "&7● Restocks Your Kit", "&7● Click to use!"); + private final Plugin plugin; private final CooldownManager commandCooldownManager; private final CooldownManager damageCooldownManager; @@ -192,7 +193,7 @@ public record RegearInventoryHolder( @Override public @NotNull Inventory getInventory() { - Inventory inventory = Bukkit.createInventory(this, 27, ChatColor.BLUE + "Regear Shulker"); + Inventory inventory = Bukkit.createInventory(this, 27, StyleManager.get().getPrimaryColor() + "Regear Shulker"); inventory.setItem(13, REGEAR_SHELL_ITEM); return inventory; } diff --git a/src/main/java/dev/noah/perplayerkit/gui/GUI.java b/src/main/java/dev/noah/perplayerkit/gui/GUI.java index 05e1e4d..36f12ce 100644 --- a/src/main/java/dev/noah/perplayerkit/gui/GUI.java +++ b/src/main/java/dev/noah/perplayerkit/gui/GUI.java @@ -22,14 +22,11 @@ import dev.noah.perplayerkit.KitManager; import dev.noah.perplayerkit.KitRoomDataManager; import dev.noah.perplayerkit.PublicKit; -import dev.noah.perplayerkit.util.BroadcastManager; -import dev.noah.perplayerkit.util.IDUtil; -import dev.noah.perplayerkit.util.PlayerUtil; +import dev.noah.perplayerkit.util.*; import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.OfflinePlayer; -import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; @@ -46,7 +43,7 @@ import static dev.noah.perplayerkit.gui.ItemUtil.addHideFlags; import static dev.noah.perplayerkit.gui.ItemUtil.createItem; -import dev.noah.perplayerkit.util.SoundManager; +import static dev.noah.perplayerkit.gui.ItemUtil.createGlassPane; public class GUI { private final Plugin plugin; @@ -67,7 +64,7 @@ public static void addLoadPublicKit(Slot slot, String id) { } public static Menu createPublicKitMenu() { - return ChestMenu.builder(6).title(ChatColor.BLUE + "Public Kit Room").redraw(true).build(); + return ChestMenu.builder(6).title(StyleManager.get().getPrimaryColor() + "Public Kit Room").redraw(true).build(); } public static boolean removeKitDeletionFlag(Player player) { @@ -87,7 +84,7 @@ public void OpenKitMenu(Player p, int slot) { allowModification(menu.getSlot(i)); } for (int i = 41; i < 54; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } menu.getSlot(45).setItem(createItem(Material.CHAINMAIL_BOOTS, 1, "&7&lBOOTS")); menu.getSlot(46).setItem(createItem(Material.CHAINMAIL_LEGGINGS, 1, "&7&lLEGGINGS")); @@ -120,7 +117,7 @@ public void OpenPublicKitEditor(Player p, String kitId) { allowModification(menu.getSlot(i)); } for (int i = 41; i < 54; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } menu.getSlot(45).setItem(createItem(Material.CHAINMAIL_BOOTS, 1, "&7&lBOOTS")); menu.getSlot(46).setItem(createItem(Material.CHAINMAIL_LEGGINGS, 1, "&7&lLEGGINGS")); @@ -144,11 +141,11 @@ public void OpenECKitKenu(Player p, int slot) { Menu menu = createECMenu(slot); for (int i = 0; i < 9; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } for (int i = 36; i < 54; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } if (KitManager.get().getItemStackArrayById(p.getUniqueId() + "ec" + slot) != null) { @@ -183,7 +180,7 @@ public void InspectKit(Player p, UUID target, int slot) { } } for (int i = 41; i < 54; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } menu.getSlot(45).setItem(createItem(Material.CHAINMAIL_BOOTS, 1, "&7&lBOOTS")); menu.getSlot(46).setItem(createItem(Material.CHAINMAIL_LEGGINGS, 1, "&7&lLEGGINGS")); @@ -216,11 +213,11 @@ public void InspectEc(Player p, UUID target, int slot) { Menu menu = createInspectEcMenu(slot, playerName); for (int i = 0; i < 9; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } for (int i = 36; i < 54; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } if (KitManager.get().getItemStackArrayById(p.getUniqueId() + "ec" + slot) != null) { @@ -254,7 +251,7 @@ public void InspectEc(Player p, UUID target, int slot) { public void OpenMainMenu(Player p) { Menu menu = createMainMenu(p); for (int i = 0; i < 54; i++) { - menu.getSlot(i).setItem(createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(createGlassPane()); } for (int i = 9; i < 18; i++) { menu.getSlot(i).setItem(createItem(Material.CHEST, 1, "&3&lKit " + (i - 8), "&7● Left click to load kit", "&7● Right click to edit kit")); @@ -279,7 +276,7 @@ public void OpenMainMenu(Player p) { } for (int i = 37; i < 44; i++) { - menu.getSlot(i).setItem(createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(createGlassPane()); } menu.getSlot(37).setItem(createItem(Material.NETHER_STAR, 1, "&a&lKIT ROOM")); @@ -308,7 +305,7 @@ public void OpenKitRoom(Player p, int page) { allowModification(menu.getSlot(i)); } for (int i = 45; i < 54; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } if (KitRoomDataManager.get().getKitRoomPage(page) != null) { for (int i = 0; i < 45; i++) { @@ -352,10 +349,10 @@ public Menu ViewPublicKitMenu(Player p, String id) { } return null; } - Menu menu = ChestMenu.builder(6).title(ChatColor.BLUE + "Viewing Public Kit: " + id).redraw(true).build(); + Menu menu = ChestMenu.builder(6).title(StyleManager.get().getPrimaryColor() + "Viewing Public Kit: " + id).redraw(true).build(); for (int i = 0; i < 54; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } for (int i = 9; i < 36; i++) { @@ -382,7 +379,7 @@ public Menu ViewPublicKitMenu(Player p, String id) { public void OpenPublicKitMenu(Player player) { Menu menu = createPublicKitMenu(); for (int i = 0; i < 54; i++) { - menu.getSlot(i).setItem(ItemUtil.createItem(Material.BLUE_STAINED_GLASS_PANE, 1, " ")); + menu.getSlot(i).setItem(ItemUtil.createGlassPane()); } for (int i = 18; i < 36; i++) { @@ -653,31 +650,31 @@ public void addEditLoadEC(Slot slot, int i) { } public Menu createKitMenu(int slot) { - return ChestMenu.builder(6).title(ChatColor.BLUE + "Kit: " + slot).build(); + return ChestMenu.builder(6).title(StyleManager.get().getPrimaryColor() + "Kit: " + slot).build(); } public Menu createPublicKitMenu(String id) { - return ChestMenu.builder(6).title(ChatColor.BLUE + "Public Kit: " + id).build(); + return ChestMenu.builder(6).title(StyleManager.get().getPrimaryColor() + "Public Kit: " + id).build(); } public Menu createECMenu(int slot) { - return ChestMenu.builder(6).title(ChatColor.BLUE + "Enderchest: " + slot).build(); + return ChestMenu.builder(6).title(StyleManager.get().getPrimaryColor() + "Enderchest: " + slot).build(); } public Menu createInspectMenu(int slot, String playerName) { - return ChestMenu.builder(6).title(ChatColor.BLUE + "Inspecting " + playerName + "'s kit " + slot).build(); + return ChestMenu.builder(6).title(StyleManager.get().getPrimaryColor() + "Inspecting " + playerName + "'s kit " + slot).build(); } public Menu createInspectEcMenu(int slot, String playerName) { - return ChestMenu.builder(6).title(ChatColor.BLUE + "Inspecting " + playerName + "'s enderchest " + slot).build(); + return ChestMenu.builder(6).title(StyleManager.get().getPrimaryColor() + "Inspecting " + playerName + "'s enderchest " + slot).build(); } public Menu createMainMenu(Player p) { - return ChestMenu.builder(6).title(ChatColor.BLUE + p.getName() + "'s Kits").build(); + return ChestMenu.builder(6).title(StyleManager.get().getPrimaryColor() + p.getName() + "'s Kits").build(); } public Menu createKitRoom() { - return ChestMenu.builder(6).title(ChatColor.BLUE + "Kit Room").redraw(true).build(); + return ChestMenu.builder(6).title(StyleManager.get().getPrimaryColor() + "Kit Room").redraw(true).build(); } public void allowModification(Slot slot) { diff --git a/src/main/java/dev/noah/perplayerkit/gui/ItemUtil.java b/src/main/java/dev/noah/perplayerkit/gui/ItemUtil.java index 640924a..1542728 100644 --- a/src/main/java/dev/noah/perplayerkit/gui/ItemUtil.java +++ b/src/main/java/dev/noah/perplayerkit/gui/ItemUtil.java @@ -18,6 +18,7 @@ */ package dev.noah.perplayerkit.gui; +import dev.noah.perplayerkit.util.StyleManager; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; @@ -54,6 +55,10 @@ public static ItemStack createItem(Material material, int quantity, String name, return item; } + public static ItemStack createGlassPane() { + return createItem(StyleManager.get().getGlassMaterial(), 1, " "); + } + public static ItemStack createItem(Material material, String name) { return createItem(material, 1, name); } diff --git a/src/main/java/dev/noah/perplayerkit/listeners/KitMenuCloseListener.java b/src/main/java/dev/noah/perplayerkit/listeners/KitMenuCloseListener.java index ae0ae6f..1ea7691 100644 --- a/src/main/java/dev/noah/perplayerkit/listeners/KitMenuCloseListener.java +++ b/src/main/java/dev/noah/perplayerkit/listeners/KitMenuCloseListener.java @@ -20,6 +20,7 @@ import dev.noah.perplayerkit.KitManager; import dev.noah.perplayerkit.gui.GUI; +import dev.noah.perplayerkit.util.StyleManager; import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; @@ -41,10 +42,10 @@ public void onKitEditorClose(InventoryCloseEvent e) { if (inv.getSize() == 54) { if (inv.getLocation() == null) { InventoryView view = e.getView(); - if (view.getTitle().contains(ChatColor.BLUE + "Kit: ")) { + if (view.getTitle().contains(StyleManager.get().getPrimaryColor() + "Kit: ")) { Player p = (Player) e.getPlayer(); UUID uuid = p.getUniqueId(); - int slot = Integer.parseInt(view.getTitle().replace(ChatColor.BLUE + "Kit: ", "")); + int slot = Integer.parseInt(view.getTitle().replace(StyleManager.get().getPrimaryColor() + "Kit: ", "")); ItemStack[] kit = new ItemStack[41]; ItemStack[] chestitems = e.getInventory().getContents(); @@ -67,9 +68,9 @@ public void onPublicKitEditorClose(InventoryCloseEvent e) { if (inv.getSize() == 54) { if (inv.getLocation() == null) { InventoryView view = e.getView(); - if (view.getTitle().contains(ChatColor.BLUE + "Public Kit: ")) { + if (view.getTitle().contains(StyleManager.get().getPrimaryColor() + "Public Kit: ")) { Player player = (Player) e.getPlayer(); - String publickit = view.getTitle().replace(ChatColor.BLUE + "Public Kit: ", ""); + String publickit = view.getTitle().replace(StyleManager.get().getPrimaryColor() + "Public Kit: ", ""); ItemStack[] kit = new ItemStack[41]; ItemStack[] chestitems = e.getInventory().getContents(); @@ -92,10 +93,10 @@ public void onEnderchestEditorClose(InventoryCloseEvent e) { if (inv.getSize() == 54) { if (inv.getLocation() == null) { InventoryView view = e.getView(); - if (view.getTitle().contains(ChatColor.BLUE + "Enderchest: ")) { + if (view.getTitle().contains(StyleManager.get().getPrimaryColor() + "Enderchest: ")) { Player p = (Player) e.getPlayer(); UUID uuid = p.getUniqueId(); - int slot = Integer.parseInt(view.getTitle().replace(ChatColor.BLUE + "Enderchest: ", "")); + int slot = Integer.parseInt(view.getTitle().replace(StyleManager.get().getPrimaryColor() + "Enderchest: ", "")); ItemStack[] kit = new ItemStack[27]; ItemStack[] chestitems = e.getInventory().getContents(); @@ -118,13 +119,13 @@ public void onInspectKitEditorClose(InventoryCloseEvent e) { if (inv.getSize() == 54) { if (inv.getLocation() == null) { InventoryView view = e.getView(); - if (view.getTitle().contains(ChatColor.BLUE + "Inspecting ") && view.getTitle().contains("'s kit ")) { + if (view.getTitle().contains(StyleManager.get().getPrimaryColor() + "Inspecting ") && view.getTitle().contains("'s kit ")) { Player p = (Player) e.getPlayer(); if (!p.hasPermission("perplayerkit.admin")) { return; } String title = view.getTitle(); - String[] parts = title.replace(ChatColor.BLUE + "Inspecting ", "").split("'s kit "); + String[] parts = title.replace(StyleManager.get().getPrimaryColor() + "Inspecting ", "").split("'s kit "); if (parts.length != 2) { return; } @@ -185,13 +186,13 @@ public void onInspectEnderchestEditorClose(InventoryCloseEvent e) { if (inv.getSize() == 54) { if (inv.getLocation() == null) { InventoryView view = e.getView(); - if (view.getTitle().contains(ChatColor.BLUE + "Inspecting ") && view.getTitle().contains("'s enderchest ")) { + if (view.getTitle().contains(StyleManager.get().getPrimaryColor() + "Inspecting ") && view.getTitle().contains("'s enderchest ")) { Player p = (Player) e.getPlayer(); if (!p.hasPermission("perplayerkit.admin")) { return; } String title = view.getTitle(); - String[] parts = title.replace(ChatColor.BLUE + "Inspecting ", "").split("'s enderchest "); + String[] parts = title.replace(StyleManager.get().getPrimaryColor() + "Inspecting ", "").split("'s enderchest "); if (parts.length != 2) { return; } diff --git a/src/main/java/dev/noah/perplayerkit/listeners/KitRoomSaveListener.java b/src/main/java/dev/noah/perplayerkit/listeners/KitRoomSaveListener.java index 5e47792..f0f4745 100644 --- a/src/main/java/dev/noah/perplayerkit/listeners/KitRoomSaveListener.java +++ b/src/main/java/dev/noah/perplayerkit/listeners/KitRoomSaveListener.java @@ -19,6 +19,7 @@ package dev.noah.perplayerkit.listeners; import dev.noah.perplayerkit.KitRoomDataManager; +import dev.noah.perplayerkit.util.StyleManager; import net.md_5.bungee.api.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -40,7 +41,7 @@ public void onSaveButtonClick(InventoryClickEvent e) { InventoryView view = e.getView(); Player p = (Player) e.getWhoClicked(); - if (view.getTitle().contains(ChatColor.BLUE + p.getName() + "'s Kits")) { + if (view.getTitle().contains(StyleManager.get().getPrimaryColor() + p.getName() + "'s Kits")) { ItemStack saveButton = e.getInventory().getItem(53); if (saveButton != null && saveButton.getType() == Material.BARRIER) { if (e.getSlot() == 53) { diff --git a/src/main/java/dev/noah/perplayerkit/util/StyleManager.java b/src/main/java/dev/noah/perplayerkit/util/StyleManager.java new file mode 100644 index 0000000..bbbe266 --- /dev/null +++ b/src/main/java/dev/noah/perplayerkit/util/StyleManager.java @@ -0,0 +1,60 @@ +/* + + Style Manager + by kirushkinx (https://github.com/kirushkinx) + + */ + +package dev.noah.perplayerkit.util; + +import org.bukkit.Material; +import org.bukkit.plugin.Plugin; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; + +public class StyleManager { + private static StyleManager instance; + private final Plugin plugin; + + private Material glassMaterial; + private String titleColor; + + public StyleManager(Plugin plugin) { + this.plugin = plugin; + instance = this; + loadConfig(); + } + + public static StyleManager get() { + return instance; + } + + public void loadConfig() { + try { + this.glassMaterial = Material.valueOf(plugin.getConfig().getString("interface.glass-material", "BLUE_STAINED_GLASS_PANE")); + } catch (IllegalArgumentException e) { + this.glassMaterial = Material.BLUE_STAINED_GLASS_PANE; + } + + String colorTag = plugin.getConfig().getString("interface.main-color", ""); + this.titleColor = miniMessageToLegacy(colorTag); + } + + private String miniMessageToLegacy(String miniMessage) { + try { + Component component = MiniMessage.miniMessage().deserialize(miniMessage + "test"); + return LegacyComponentSerializer.legacySection().serialize(component).replace("test", ""); + } catch (Exception e) { + return ""; + } + } + + public Material getGlassMaterial() { + return glassMaterial; + } + + public String getPrimaryColor() { + return titleColor; + } +} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index e20b0fa..3f38c79 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -53,6 +53,9 @@ scheduled-broadcast: #uses mini message format - "Want to share a kit? Use the /sharekit command!" - "Type /kit, /k or /pk to get started!" +interface: + glass-material: BLUE_STAINED_GLASS_PANE + main-color: "" # Plugin main color (MiniMessage format: , , , etc.) kitroom: items: