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:
parent
324707d632
commit
b2ec19387f
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue