diff --git a/assets/plugin_menu.png b/assets/plugin_menu.png new file mode 100644 index 0000000..96d9e2a Binary files /dev/null and b/assets/plugin_menu.png differ diff --git a/pom.xml b/pom.xml index 9909dea..9190af2 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.NVus NVus_Prison_Setup - 0.6.1 + 0.6.3 jar NVus_PrisonSetup diff --git a/src/main/java/me/nvus/nvus_prison_setup/Configs/SettingsMenu.java b/src/main/java/me/nvus/nvus_prison_setup/Configs/SettingsMenu.java new file mode 100644 index 0000000..afbe5dc --- /dev/null +++ b/src/main/java/me/nvus/nvus_prison_setup/Configs/SettingsMenu.java @@ -0,0 +1,73 @@ +package me.nvus.nvus_prison_setup.Configs; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.java.JavaPlugin; + +public class SettingsMenu implements Listener { + private final JavaPlugin plugin; + private final ConfigManager configManager; + + public SettingsMenu(JavaPlugin plugin, ConfigManager configManager) { + this.plugin = plugin; + this.configManager = configManager; + plugin.getServer().getPluginManager().registerEvents(this, plugin); + } + + public void openSettingsMenu(Player player) { + Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_GREEN + "NVus Prison Settings"); + + // Toggle AutoPickup + ItemStack toggleAutoPickup = new ItemStack(Material.HOPPER); + ItemMeta metaAutoPickup = toggleAutoPickup.getItemMeta(); + metaAutoPickup.setDisplayName(ChatColor.GREEN + "Toggle AutoPickup"); + toggleAutoPickup.setItemMeta(metaAutoPickup); + inv.setItem(3, toggleAutoPickup); + + // Toggle AutoSwitch + ItemStack toggleAutoSwitch = new ItemStack(Material.LEVER); + ItemMeta metaAutoSwitch = toggleAutoSwitch.getItemMeta(); + metaAutoSwitch.setDisplayName(ChatColor.GREEN + "Toggle AutoSwitch"); + toggleAutoSwitch.setItemMeta(metaAutoSwitch); + inv.setItem(4, toggleAutoSwitch); + + // Reload Configurations + ItemStack reloadConfigs = new ItemStack(Material.BOOK); + ItemMeta metaReloadConfigs = reloadConfigs.getItemMeta(); + metaReloadConfigs.setDisplayName(ChatColor.GREEN + "Reload Configs"); + reloadConfigs.setItemMeta(metaReloadConfigs); + inv.setItem(5, reloadConfigs); + + player.openInventory(inv); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent event) { + if (!event.getView().getTitle().equals(ChatColor.DARK_GREEN + "Settings Menu")) return; + event.setCancelled(true); + + Player player = (Player) event.getWhoClicked(); + ItemStack clickedItem = event.getCurrentItem(); + if (clickedItem == null || !clickedItem.hasItemMeta()) return; + + String displayName = clickedItem.getItemMeta().getDisplayName(); + if (displayName.equals(ChatColor.GREEN + "Toggle AutoPickup")) { + // Toggle AutoPickup logic here + } else if (displayName.equals(ChatColor.GREEN + "Toggle AutoSwitch")) { + // Toggle AutoSwitch logic here + } else if (displayName.equals(ChatColor.GREEN + "Reload Configs")) { + configManager.reloadConfig("config.yml"); + configManager.reloadConfig("auto_switch.yml"); + configManager.reloadConfig("banned_items.yml"); + player.sendMessage(ChatColor.GREEN + "Configuration files reloaded."); + } + } +} diff --git a/src/main/java/me/nvus/nvus_prison_setup/Listeners/CommandListener.java b/src/main/java/me/nvus/nvus_prison_setup/Listeners/CommandListener.java index 6d1d36d..02a5b14 100644 --- a/src/main/java/me/nvus/nvus_prison_setup/Listeners/CommandListener.java +++ b/src/main/java/me/nvus/nvus_prison_setup/Listeners/CommandListener.java @@ -1,6 +1,7 @@ package me.nvus.nvus_prison_setup.Listeners; import me.nvus.nvus_prison_setup.Configs.ConfigManager; +import me.nvus.nvus_prison_setup.Configs.SettingsMenu; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -27,7 +28,7 @@ public class CommandListener implements CommandExecutor { } if (args.length == 0) { - sender.sendMessage(ChatColor.RED + "Usage: /nvus [arguments]"); + sender.sendMessage(ChatColor.RED + "Usage: /nvus [arguments]"); return true; } @@ -38,6 +39,14 @@ public class CommandListener implements CommandExecutor { case "version": handleVersionCommand(sender); break; + case "menu": + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "This command can only be used by players."); + return true; + } + Player player = (Player) sender; + new SettingsMenu(plugin, configManager).openSettingsMenu(player); + break; case "autopickup": if (args.length < 2) { sender.sendMessage(ChatColor.RED + "Usage: /nvus autopickup "); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 0560f88..02cf968 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -4,11 +4,13 @@ # www.FNGnation.net # # Discord: FNGnation.net/discord # #======================================================================================# -# Remember to give all prisoner ranks/groups the permission ' nvus.prisoner ' and negate that permission for any +# Remember to give prisoner ranks/groups the permission ' nvus.prisoner ' and negate that permission for any # players that are not or no longer considered a prisoner. # Should prisoners auto pickup blocks they have mined? +# Use /nvus autopickup true|false to toggle this in-game! (Requires permission: nvus.admin) AutoPickup: true # Should prisoners be able to auto switch to the correct tool for whatever they are mining? #i.e. If hitting dirt/clay with a pickaxe, they will auto switch to a shovel (if in their quickbar) +# Use /nvus autoswitch true|false to toggle this in-game! (Requires permission: nvus.admin) AutoSwitch: true diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 78a9013..08505a2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -8,4 +8,5 @@ website: https://FNGnation.net commands: nvus: description: Base command for NVus Prison Setup - usage: / [arguments] + usage: / [arguments] + aliases: [nvusmenu]