v0.6.6 - Re-added ConfigManager implementation for Settings Menu. Ruled out the issue was not ConfigManager and was just in fact the click event firing multiple times across the frames generated. Should be safe to use and work correctly? Let's find out... LOL.

This commit is contained in:
WildInterloper 2024-03-06 11:52:16 -05:00
parent 324707d632
commit b2ec19387f
1 changed files with 19 additions and 16 deletions

View File

@ -24,14 +24,16 @@ public class SettingsMenu implements Listener {
public SettingsMenu(JavaPlugin plugin, ConfigManager configManager) {
this.plugin = plugin;
this.configManager = configManager;
plugin.getServer().getPluginManager().registerEvents(this, plugin);
Bukkit.getServer().getPluginManager().registerEvents(this, plugin);
}
public void openSettingsMenu(Player player) {
Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_RED + "NVus Prison Settings");
Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_GREEN + "Settings Menu");
// Retrieve configurations directly using ConfigManager
FileConfiguration config = configManager.getConfig("config.yml");
// Toggle items with dynamic status from config
inv.setItem(3, createToggleItem(Material.HOPPER, "Toggle AutoPickup", config.getBoolean("AutoPickup", false)));
inv.setItem(4, createToggleItem(Material.LEVER, "Toggle AutoSwitch", config.getBoolean("AutoSwitch", false)));
inv.setItem(5, createItem(Material.BOOK, ChatColor.GREEN + "Reload Configs"));
@ -39,10 +41,10 @@ public class SettingsMenu implements Listener {
player.openInventory(inv);
}
private ItemStack createToggleItem(Material material, String name, boolean enabled) {
private ItemStack createToggleItem(Material material, String name, boolean isEnabled) {
ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(ChatColor.GREEN + name + ": " + (enabled ? ChatColor.BLUE + "Enabled" : ChatColor.RED + "Disabled"));
meta.setDisplayName(ChatColor.GREEN + name + ": " + (isEnabled ? ChatColor.BLUE + "Enabled" : ChatColor.RED + "Disabled"));
item.setItemMeta(meta);
return item;
}
@ -57,46 +59,47 @@ public class SettingsMenu implements Listener {
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (!event.getView().getTitle().equals(ChatColor.DARK_GREEN + "Settings Menu")) return;
if (!event.getView().getTitle().equals(ChatColor.DARK_RED + "NVus Prison Settings")) return;
event.setCancelled(true);
Player player = (Player) event.getWhoClicked();
UUID playerUUID = player.getUniqueId();
// Implement cooldown check
long lastClick = lastClickTime.getOrDefault(playerUUID, 0L);
long currentTime = System.currentTimeMillis();
if (currentTime - lastClick < 500) { // Cooldown of 0.5 seconds
return;
}
if (currentTime - lastClick < 500) return; // 500 ms cooldown
lastClickTime.put(playerUUID, currentTime);
ItemStack clickedItem = event.getCurrentItem();
if (clickedItem == null || !clickedItem.hasItemMeta()) return;
String displayName = clickedItem.getItemMeta().getDisplayName();
if (displayName.contains("Toggle AutoPickup")) {
toggleOption("AutoPickup", player);
toggleConfigOption(player, "AutoPickup");
} else if (displayName.contains("Toggle AutoSwitch")) {
toggleOption("AutoSwitch", player);
toggleConfigOption(player, "AutoSwitch");
} else if (displayName.contains("Reload Configs")) {
reloadConfigs(player);
}
}
private void toggleOption(String key, Player player) {
private void toggleConfigOption(Player player, String configKey) {
FileConfiguration config = configManager.getConfig("config.yml");
boolean currentValue = config.getBoolean(key, false);
config.set(key, !currentValue);
boolean currentValue = config.getBoolean(configKey, false);
config.set(configKey, !currentValue);
configManager.saveConfig("config.yml");
player.sendMessage(ChatColor.GREEN + key + " " + (!currentValue ? "enabled." : "disabled."));
openSettingsMenu(player); // Refresh the menu
player.sendMessage(ChatColor.GREEN + configKey + " " + (!currentValue ? "enabled" : "disabled"));
openSettingsMenu(player); // Refresh the inventory to reflect the change
}
private void reloadConfigs(Player player) {
configManager.reloadConfig("config.yml");
configManager.reloadConfig("auto_switch.yml");
configManager.reloadConfig("banned_items.yml");
configManager.saveConfig("config.yml"); // Ensure any changes are saved before reload
player.sendMessage(ChatColor.GREEN + "Configuration files reloaded.");
openSettingsMenu(player); // Refresh the menu
openSettingsMenu(player); // Refresh the inventory
}
}