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) {
|
public SettingsMenu(JavaPlugin plugin, ConfigManager configManager) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.configManager = configManager;
|
this.configManager = configManager;
|
||||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
Bukkit.getServer().getPluginManager().registerEvents(this, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openSettingsMenu(Player player) {
|
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");
|
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(3, createToggleItem(Material.HOPPER, "Toggle AutoPickup", config.getBoolean("AutoPickup", false)));
|
||||||
inv.setItem(4, createToggleItem(Material.LEVER, "Toggle AutoSwitch", config.getBoolean("AutoSwitch", false)));
|
inv.setItem(4, createToggleItem(Material.LEVER, "Toggle AutoSwitch", config.getBoolean("AutoSwitch", false)));
|
||||||
inv.setItem(5, createItem(Material.BOOK, ChatColor.GREEN + "Reload Configs"));
|
inv.setItem(5, createItem(Material.BOOK, ChatColor.GREEN + "Reload Configs"));
|
||||||
|
@ -39,10 +41,10 @@ public class SettingsMenu implements Listener {
|
||||||
player.openInventory(inv);
|
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);
|
ItemStack item = new ItemStack(material);
|
||||||
ItemMeta meta = item.getItemMeta();
|
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);
|
item.setItemMeta(meta);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
@ -57,46 +59,47 @@ public class SettingsMenu implements Listener {
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onInventoryClick(InventoryClickEvent event) {
|
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);
|
event.setCancelled(true);
|
||||||
|
|
||||||
Player player = (Player) event.getWhoClicked();
|
Player player = (Player) event.getWhoClicked();
|
||||||
UUID playerUUID = player.getUniqueId();
|
UUID playerUUID = player.getUniqueId();
|
||||||
|
|
||||||
|
// Implement cooldown check
|
||||||
long lastClick = lastClickTime.getOrDefault(playerUUID, 0L);
|
long lastClick = lastClickTime.getOrDefault(playerUUID, 0L);
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = System.currentTimeMillis();
|
||||||
if (currentTime - lastClick < 500) { // Cooldown of 0.5 seconds
|
if (currentTime - lastClick < 500) return; // 500 ms cooldown
|
||||||
return;
|
|
||||||
}
|
|
||||||
lastClickTime.put(playerUUID, currentTime);
|
lastClickTime.put(playerUUID, currentTime);
|
||||||
|
|
||||||
ItemStack clickedItem = event.getCurrentItem();
|
ItemStack clickedItem = event.getCurrentItem();
|
||||||
if (clickedItem == null || !clickedItem.hasItemMeta()) return;
|
if (clickedItem == null || !clickedItem.hasItemMeta()) return;
|
||||||
|
|
||||||
String displayName = clickedItem.getItemMeta().getDisplayName();
|
String displayName = clickedItem.getItemMeta().getDisplayName();
|
||||||
|
|
||||||
if (displayName.contains("Toggle AutoPickup")) {
|
if (displayName.contains("Toggle AutoPickup")) {
|
||||||
toggleOption("AutoPickup", player);
|
toggleConfigOption(player, "AutoPickup");
|
||||||
} else if (displayName.contains("Toggle AutoSwitch")) {
|
} else if (displayName.contains("Toggle AutoSwitch")) {
|
||||||
toggleOption("AutoSwitch", player);
|
toggleConfigOption(player, "AutoSwitch");
|
||||||
} else if (displayName.contains("Reload Configs")) {
|
} else if (displayName.contains("Reload Configs")) {
|
||||||
reloadConfigs(player);
|
reloadConfigs(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toggleOption(String key, Player player) {
|
private void toggleConfigOption(Player player, String configKey) {
|
||||||
FileConfiguration config = configManager.getConfig("config.yml");
|
FileConfiguration config = configManager.getConfig("config.yml");
|
||||||
boolean currentValue = config.getBoolean(key, false);
|
boolean currentValue = config.getBoolean(configKey, false);
|
||||||
config.set(key, !currentValue);
|
config.set(configKey, !currentValue);
|
||||||
configManager.saveConfig("config.yml");
|
configManager.saveConfig("config.yml");
|
||||||
player.sendMessage(ChatColor.GREEN + key + " " + (!currentValue ? "enabled." : "disabled."));
|
player.sendMessage(ChatColor.GREEN + configKey + " " + (!currentValue ? "enabled" : "disabled"));
|
||||||
openSettingsMenu(player); // Refresh the menu
|
openSettingsMenu(player); // Refresh the inventory to reflect the change
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reloadConfigs(Player player) {
|
private void reloadConfigs(Player player) {
|
||||||
configManager.reloadConfig("config.yml");
|
configManager.reloadConfig("config.yml");
|
||||||
configManager.reloadConfig("auto_switch.yml");
|
configManager.reloadConfig("auto_switch.yml");
|
||||||
configManager.reloadConfig("banned_items.yml");
|
configManager.reloadConfig("banned_items.yml");
|
||||||
|
configManager.saveConfig("config.yml"); // Ensure any changes are saved before reload
|
||||||
player.sendMessage(ChatColor.GREEN + "Configuration files reloaded.");
|
player.sendMessage(ChatColor.GREEN + "Configuration files reloaded.");
|
||||||
openSettingsMenu(player); // Refresh the menu
|
openSettingsMenu(player); // Refresh the inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue