From 1d1cfce4a369c712028213f4f858815e9d61eec9 Mon Sep 17 00:00:00 2001 From: Leon Dawson-Couper Date: Thu, 5 Oct 2023 18:01:27 +0100 Subject: [PATCH] Archiving and Deleting Improvement (1) --- dependency-reduced-pom.xml | 2 +- pom.xml | 2 +- .../bugreport/BugListArchivedCommand.java | 59 ++++++ .../com/leon/bugreport/BugReportDatabase.java | 40 +++- .../com/leon/bugreport/BugReportManager.java | 199 ++++++++++++++---- .../com/leon/bugreport/BugReportPlugin.java | 1 + .../com/leon/bugreport/BugReportSettings.java | 5 +- src/main/resources/plugin.yml | 13 +- 8 files changed, 268 insertions(+), 53 deletions(-) create mode 100644 src/main/java/com/leon/bugreport/BugListArchivedCommand.java diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 7c4cedb..1ae8dd9 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.leon.bugreport BugReports - 0.6.0 + 0.6.2 diff --git a/pom.xml b/pom.xml index fa1e9ac..3fd4538 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.leon.bugreport BugReports - 0.6.0 + 0.6.2 17 diff --git a/src/main/java/com/leon/bugreport/BugListArchivedCommand.java b/src/main/java/com/leon/bugreport/BugListArchivedCommand.java new file mode 100644 index 0000000..51e13b0 --- /dev/null +++ b/src/main/java/com/leon/bugreport/BugListArchivedCommand.java @@ -0,0 +1,59 @@ +package com.leon.bugreport; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import static com.leon.bugreport.BugReportManager.pluginColor; +import static com.leon.bugreport.BugReportManager.pluginTitle; + +public class BugListArchivedCommand implements CommandExecutor { + + public BugListArchivedCommand(BugReportManager reportManager) { } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (!(sender instanceof Player player)) { + sender.sendMessage(pluginColor + pluginTitle + " " + "This command can only be run by a player."); + return true; + } + + if (player.hasPermission("bugreport.admin")) { + BugReportManager.setCurrentPage(player, 1); + + Inventory bugReportGUI = BugReportManager.getArchivedBugReportsGUI(player); + + ItemStack backButton = null; + ItemStack forwardButton; + + if (BugReportManager.getCurrentPage(player) == 1) { + bugReportGUI.setItem(36, new ItemStack(Material.AIR)); + } else { + backButton = new ItemStack(Material.ARROW); + ItemMeta backMeta = backButton.getItemMeta(); + backMeta.setDisplayName(ChatColor.GREEN + BugReportLanguage.getTitleFromLanguage("back")); + backButton.setItemMeta(backMeta); + } + + forwardButton = new ItemStack(Material.ARROW); + ItemMeta forwardMeta = forwardButton.getItemMeta(); + forwardMeta.setDisplayName(ChatColor.GREEN + BugReportLanguage.getTitleFromLanguage("forward")); + forwardButton.setItemMeta(forwardMeta); + + bugReportGUI.setItem(36, backButton); + bugReportGUI.setItem(44, forwardButton); + + player.openInventory(bugReportGUI); + } else { + player.sendMessage(pluginColor + pluginTitle + " " + ChatColor.RED + "You don't have permission to use this command."); + } + + return true; + } +} diff --git a/src/main/java/com/leon/bugreport/BugReportDatabase.java b/src/main/java/com/leon/bugreport/BugReportDatabase.java index d6db63c..57947b0 100644 --- a/src/main/java/com/leon/bugreport/BugReportDatabase.java +++ b/src/main/java/com/leon/bugreport/BugReportDatabase.java @@ -113,7 +113,7 @@ public void addBugReport(String username, @NotNull UUID playerId, String world, } } - public Map> loadBugReports() { + public static @NotNull Map> loadBugReports() { Map> bugReports = new HashMap<>(); try { @@ -156,12 +156,13 @@ private void connectRemote(String host, Integer port, String database, String us try { String databaseURL = "jdbc:mysql://" + host + ":" + port + "/" + database + "?useSSL=false"; connection = DriverManager.getConnection(databaseURL, username, password); - System.out.println("Connected to remote database"); } catch (SQLException e) { plugin.getLogger().severe("Failed to connect to remote database."); plugin.getLogger().severe(e.getMessage()); } + System.out.println("Connected to remote database"); + createTables(); } @@ -170,12 +171,13 @@ private void connectLocal() { File databaseFile = new File("plugins/BugReport/bugreports.db"); String databaseURL = "jdbc:sqlite:" + databaseFile.getAbsolutePath(); connection = DriverManager.getConnection(databaseURL); - System.out.println("Connected to local database"); } catch (SQLException e) { plugin.getLogger().severe("Failed to connect to local database."); plugin.getLogger().severe(e.getMessage()); } + System.out.println("Connected to local database"); + createTables(); } @@ -191,7 +193,7 @@ private void createTables() { public void updateBugReportHeader(UUID playerId, int reportIndex) { try { PreparedStatement statement = connection.prepareStatement("UPDATE bug_reports SET header = ? WHERE player_id = ? AND rowid = ?"); - String existingHeader = BugReportManager.bugReports.get(playerId).get(reportIndex); + String existingHeader = bugReports.get(playerId).get(reportIndex); String[] lines = existingHeader.split("\n"); StringBuilder newHeader = new StringBuilder(); @@ -210,12 +212,15 @@ public void updateBugReportHeader(UUID playerId, int reportIndex) { statement.executeUpdate(); statement.close(); } catch (SQLException e) { - plugin.getLogger().severe("Failed to update bug report header."); + plugin.getLogger().severe("Failed to update bug report read status."); plugin.getLogger().severe(e.getMessage()); } } - public static void updateBugReportArchive(UUID playerId, int reportIndex, int archived) { + public static void updateBugReportArchive(@NotNull UUID playerId, int reportIndex, int archived) { + int bugReportIndex = reportIndex - 1; + System.out.println("Updating bug report " + reportIndex + " for " + playerId + " to " + archived); + try { PreparedStatement statement = connection.prepareStatement("UPDATE bug_reports SET archived = ? WHERE player_id = ? AND report_id = ?"); statement.setInt(1, archived); @@ -224,7 +229,8 @@ public static void updateBugReportArchive(UUID playerId, int reportIndex, int ar statement.executeUpdate(); statement.close(); - String existingHeader = BugReportManager.bugReports.get(playerId).get(reportIndex - 1); + String existingHeader = bugReports.get(playerId).get(bugReportIndex); + System.out.println("Existing header: " + existingHeader); String[] lines = existingHeader.split("\n"); StringBuilder newHeader = new StringBuilder(); @@ -236,13 +242,27 @@ public static void updateBugReportArchive(UUID playerId, int reportIndex, int ar } newHeader.append("\n"); } - List reports = BugReportManager.bugReports.get(playerId); - reports.set(reportIndex - 1, newHeader.toString().trim()); - BugReportManager.bugReports.put(playerId, reports); + List reports = bugReports.get(playerId); + reports.set(bugReportIndex, newHeader.toString().trim()); + bugReports.put(playerId, reports); } catch (SQLException e) { plugin.getLogger().severe("Failed to update bug report archive status."); plugin.getLogger().severe(e.getMessage()); } } + + public static void deleteBugReport(@NotNull UUID playerId, int reportIndex) { + System.out.println("Deleting bug report " + reportIndex + " for " + playerId); + try { + PreparedStatement statement = connection.prepareStatement("DELETE FROM bug_reports WHERE player_id = ? AND report_id = ?"); + statement.setString(1, playerId.toString()); + statement.setInt(2, reportIndex); + statement.executeUpdate(); + statement.close(); + } catch (SQLException e) { + plugin.getLogger().severe("Failed to delete bug report."); + plugin.getLogger().severe(e.getMessage()); + } + } } diff --git a/src/main/java/com/leon/bugreport/BugReportManager.java b/src/main/java/com/leon/bugreport/BugReportManager.java index 4445e31..feb6f05 100644 --- a/src/main/java/com/leon/bugreport/BugReportManager.java +++ b/src/main/java/com/leon/bugreport/BugReportManager.java @@ -1,5 +1,6 @@ package com.leon.bugreport; +import jdk.javadoc.doclet.Reporter; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -21,7 +22,10 @@ import java.io.File; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import static com.leon.bugreport.BugReportDatabase.deleteBugReport; import static com.leon.bugreport.BugReportSettings.createCustomPlayerHead; import static com.leon.bugreport.BugReportSettings.getSettingsGUI; @@ -53,7 +57,7 @@ public BugReportManager(Plugin plugin) { String webhookURL = config.getString("webhookURL", ""); pluginTitle = Objects.requireNonNull(config.getString("pluginTitle", "[Bug Report]")); - pluginColor = BugReportCommand.stringColorToColorCode(Objects.requireNonNull(Objects.requireNonNull(config.getString ("pluginColor", "Yellow")).toUpperCase())); + pluginColor = BugReportCommand.stringColorToColorCode(Objects.requireNonNull(Objects.requireNonNull(config.getString ("pluginColor", "Yellow")).toUpperCase())); discord = new LinkDiscord(webhookURL); reportCategories = loadReportCategories(); @@ -157,7 +161,7 @@ public void setWebhookURL(String webhookURL) { discord.setWebhookURL(webhookURL); } - public void submitBugReport(Player player, String message, Integer categoryId) { + public void submitBugReport(@NotNull Player player, String message, Integer categoryId) { UUID playerId = player.getUniqueId(); List reports = bugReports.getOrDefault(playerId, new ArrayList<>()); @@ -210,6 +214,84 @@ public void submitBugReport(Player player, String message, Integer categoryId) { } } + public static @NotNull Inventory getArchivedBugReportsGUI(@NotNull Player player) { + int itemsPerPage = 27; + int navigationRow = 36; + + UUID playerId = player.getUniqueId(); + List reports = bugReports.getOrDefault(playerId, new ArrayList<>()); + + List filteredReports = new ArrayList<>(); + for (String report : reports) { + if (report.contains("Archived: 1")) { + filteredReports.add(report); + } + } + + int totalPages = (int) Math.ceil((double) filteredReports.size() / itemsPerPage); + int currentPage = Math.max(1, Math.min(getCurrentPage(player), totalPages)); + + Inventory gui = Bukkit.createInventory(null, 45, ChatColor.YELLOW + "Archived Bugs - " + BugReportLanguage.getTitleFromLanguage("pageInfo").replace("%currentPage%", String.valueOf(currentPage)).replace("%totalPages%", String.valueOf(totalPages))); + + int startIndex = (currentPage - 1) * itemsPerPage; + int endIndex = Math.min(startIndex + itemsPerPage, filteredReports.size()); + + int slotIndex = 0; + for (int i = startIndex; i < endIndex; i++) { + String report = filteredReports.get(i); + String[] reportLines = report.split("\n"); + + Map reportData = new HashMap<>(); + for (String line : reportLines) { + int colonIndex = line.indexOf(":"); + if (colonIndex >= 0) { + String key = line.substring(0, colonIndex).trim(); + String value = line.substring(colonIndex + 1).trim(); + reportData.put(key, value); + } + } + + String reportID = reportData.get("Report ID"); // Extract the Report ID directly from the report data + + String firstLine = report.split("\n")[0]; + ItemStack reportItem; + + if (report.contains("Archived: 1")) { + reportItem = new ItemStack(Material.ENCHANTED_BOOK); + } else { + reportItem = new ItemStack(Material.BOOK); + } + + ItemMeta itemMeta = reportItem.getItemMeta(); + itemMeta.setDisplayName(ChatColor.YELLOW + "Bug Report #" + reportID); // Use the extracted Report ID here + itemMeta.setLore(Collections.singletonList(ChatColor.GRAY + firstLine)); + + reportItem.setItemMeta(itemMeta); + + gui.setItem(slotIndex, reportItem); + slotIndex++; + } + + ItemStack backButton = createButton(Material.ARROW, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("back")); + ItemStack forwardButton = createButton(Material.ARROW, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("forward")); + ItemStack pageIndicator = createButton(Material.PAPER, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("pageInfo").replace("%currentPage%", String.valueOf(currentPage)).replace("%totalPages%", String.valueOf(totalPages))); + ItemStack settingsButton = createButton(Material.CHEST, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("settings")); + ItemStack closeButton = createButton(Material.BARRIER, ChatColor.RED + BugReportLanguage.getTitleFromLanguage("close")); + + if (currentPage > 1) { + gui.setItem(navigationRow, backButton); + } + if (currentPage < totalPages) { + gui.setItem(navigationRow + 8, forwardButton); + } + + gui.setItem(navigationRow + 2, settingsButton); + gui.setItem(navigationRow + 4, pageIndicator); + gui.setItem(navigationRow + 6, closeButton); + + return gui; + } + public static Inventory getBugReportGUI(Player player) { int itemsPerPage = 27; int navigationRow = 36; @@ -235,9 +317,21 @@ public static Inventory getBugReportGUI(Player player) { int slotIndex = 0; for (int i = startIndex; i < endIndex; i++) { String report = filteredReports.get(i); - String reportID = report.substring(report.indexOf("Report ID: ") + 11); - String firstLine = report.split("\n")[0]; + String[] reportLines = report.split("\n"); + + Map reportData = new HashMap<>(); + for (String line : reportLines) { + int colonIndex = line.indexOf(":"); + if (colonIndex >= 0) { + String key = line.substring(0, colonIndex).trim(); + String value = line.substring(colonIndex + 1).trim(); + reportData.put(key, value); + } + } + String reportID = reportData.get("Report ID"); // Extract the Report ID directly from the report data + + String firstLine = report.split("\n")[0]; ItemStack reportItem; if (report.contains("Archived: 1")) { @@ -249,7 +343,7 @@ public static Inventory getBugReportGUI(Player player) { } ItemMeta itemMeta = reportItem.getItemMeta(); - itemMeta.setDisplayName(ChatColor.YELLOW + "Bug Report #" + reportID); + itemMeta.setDisplayName(ChatColor.YELLOW + "Bug Report #" + reportID); // Use the extracted Report ID here itemMeta.setLore(Collections.singletonList(ChatColor.GRAY + firstLine)); reportItem.setItemMeta(itemMeta); @@ -258,6 +352,7 @@ public static Inventory getBugReportGUI(Player player) { slotIndex++; } + ItemStack backButton = createButton(Material.ARROW, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("back")); ItemStack forwardButton = createButton(Material.ARROW, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("forward")); ItemStack pageIndicator = createButton(Material.PAPER, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("pageInfo").replace("%currentPage%", String.valueOf(currentPage)).replace("%totalPages%", String.valueOf(totalPages))); @@ -278,7 +373,7 @@ public static Inventory getBugReportGUI(Player player) { return gui; } - private static ItemStack createButton(Material material, String displayName) { + private static @NotNull ItemStack createButton(Material material, String displayName) { ItemStack item = new ItemStack(material); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(displayName); @@ -286,15 +381,14 @@ private static ItemStack createButton(Material material, String displayName) { return item; } - private void loadBugReports() { - Map> loadedReports = database.loadBugReports(); + private static void loadBugReports() { + Map> loadedReports = BugReportDatabase.loadBugReports(); if (loadedReports != null) { bugReports = loadedReports; } } public static class BugReportListener implements Listener { - private final BugReportManager reportManager; private final Map closingInventoryMap; @@ -305,7 +399,11 @@ public BugReportListener(BugReportManager reportManager) { @EventHandler(priority = EventPriority.NORMAL) public void onInventoryClick(InventoryClickEvent event) { - if (!event.getView().getTitle().startsWith(ChatColor.YELLOW + "Bug Report")) { + String TitleText = ChatColor.stripColor(event.getView().getTitle()); + + boolean isArchivedGUI = TitleText.startsWith("Archived Bugs"); + + if (!TitleText.startsWith("Bug Report") && !isArchivedGUI) { return; } @@ -351,23 +449,19 @@ public void onInventoryClick(InventoryClickEvent event) { player.closeInventory(); } } - if (displayName.startsWith(ChatColor.YELLOW + "Bug Report #")) { - int reportID = Integer.parseInt(displayName.substring(14)) - 1; + int reportID = Integer.parseInt(displayName.substring(14)); UUID playerId = player.getUniqueId(); List reports = bugReports.getOrDefault(playerId, new ArrayList<>()); - - String report = reports.get(reportID); - + String report = reports.stream().filter(r -> r.contains("Report ID: " + reportID)).findFirst().orElse(null); if (report.contains("hasBeenRead: 0")) { report = report.replace("hasBeenRead: 0", "hasBeenRead: 1"); reports.set(reportID, report); bugReports.put(playerId, reports); database.updateBugReportHeader(playerId, reportID); } - if (reportID >= 0 && reportID < reports.size()) { - reports.set(reportID, report); - openBugReportDetailsGUI(player, report, reportID); + if (report != null) { + openBugReportDetailsGUI(player, report, reportID, isArchivedGUI); } } @@ -412,9 +506,11 @@ public static void setCurrentPage(@NotNull Player player, int page) { player.setMetadata("currentPage", new FixedMetadataValue(plugin, page)); } - private static void openBugReportDetailsGUI(Player player, @NotNull String report, Integer reportId) { - int reportIDGUI = reportId + 1; - Inventory gui = Bukkit.createInventory(player, 36, ChatColor.YELLOW + "Bug Report Details - #" + reportIDGUI); + private static void openBugReportDetailsGUI(Player player, @NotNull String report, Integer reportId, Boolean isArchivedGUI) { + int reportIDGUI = reportId; + + String bugReportTitle = isArchivedGUI ? "Archived Bug Details - #" : "Bug Report Details - #"; + Inventory gui = Bukkit.createInventory(player, 36, ChatColor.YELLOW + bugReportTitle + reportIDGUI); String[] reportLines = report.split("\n"); @@ -443,7 +539,7 @@ private static void openBugReportDetailsGUI(Player player, @NotNull String repor ItemStack backButton = createButton(Material.BARRIER, ChatColor.RED + BugReportLanguage.getTitleFromLanguage("back")); ItemStack archiveButton = createCustomPlayerHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmUwZmQxMDE5OWU4ZTRmY2RhYmNhZTRmODVjODU5MTgxMjdhN2M1NTUzYWQyMzVmMDFjNTZkMThiYjk0NzBkMyJ9fX0=", ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("archive"), 16); -// ItemStack deleteButton = createCustomPlayerHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Y5YjY3YmI5Y2MxYzg4NDg2NzYwYjE3MjY1MDU0MzEyZDY1OWRmMmNjNjc1NTc1MDA0NWJkNzFjZmZiNGU2MCJ9fX0=", ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("delete"), 17); + ItemStack deleteButton = createCustomPlayerHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Y5YjY3YmI5Y2MxYzg4NDg2NzYwYjE3MjY1MDU0MzEyZDY1OWRmMmNjNjc1NTc1MDA0NWJkNzFjZmZiNGU2MCJ9fX0=", ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("delete"), 17); for (int i = 0; i < gui.getSize(); i++) { gui.setItem(i, emptyItem); @@ -454,22 +550,25 @@ private static void openBugReportDetailsGUI(Player player, @NotNull String repor gui.setItem(13, worldItem); gui.setItem(15, messageItem); - gui.setItem(29, archiveButton); + if (!isArchivedGUI) { + gui.setItem(29, archiveButton); + } + gui.setItem(31, backButton); -// gui.setItem(33, deleteButton); + gui.setItem(33, deleteButton); if (!"null".equals(category) && !"".equals(category)) { - List> categoryList = config.getMapList("reportCategories"); + List> categoryList = config.getMapList ("reportCategories"); Optional categoryNameOptional = categoryList.stream() - .filter(categoryMap -> Integer.parseInt(categoryMap.get("id").toString()) == Integer.parseInt(category)) - .map(categoryMap -> categoryMap.get("name").toString()) + .filter(categoryMap -> Integer.parseInt (categoryMap.get ("id").toString()) == Integer.parseInt(category)) + .map(categoryMap -> categoryMap.get ("name").toString()) .findFirst(); - if (categoryNameOptional.isPresent()) { - String categoryName = categoryNameOptional.get(); - ItemStack categoryItem = createInfoItem(Material.CHEST, ChatColor.GOLD + "Category Name", ChatColor.WHITE + categoryName, false); - gui.setItem(17, categoryItem); + if (categoryNameOptional.isPresent ()) { + String categoryName = categoryNameOptional.get (); + ItemStack categoryItem = createInfoItem (Material.CHEST, ChatColor.GOLD + "Category Name", ChatColor.WHITE + categoryName, false); + gui.setItem (17, categoryItem); } } @@ -480,8 +579,11 @@ private static void openBugReportDetailsGUI(Player player, @NotNull String repor private record BugReportDetailsListener(Inventory gui, Integer reportIDGUI) implements Listener { @EventHandler(priority = EventPriority.NORMAL) - public void onInventoryClick(InventoryClickEvent event) { - if (!event.getView().getTitle().startsWith(ChatColor.YELLOW + "Bug Report Details - #")) { + public void onInventoryClick(@NotNull InventoryClickEvent event) { + String title = event.getView().getTitle(); + boolean isArchivedDetails = title.startsWith(ChatColor.YELLOW + "Archived Bug Details"); + + if (!title.startsWith(ChatColor.YELLOW + "Bug Report Details - #") && !isArchivedDetails) { return; } @@ -514,12 +616,37 @@ public void onInventoryClick(InventoryClickEvent event) { String customDisplayName = BugReportLanguage.getEnglishVersionFromLanguage(displayName); switch (customDisplayName) { - case "Back" -> player.openInventory(getBugReportGUI(player)); + case "Back" -> { + player.openInventory(isArchivedDetails ? getArchivedBugReportsGUI (player) : getBugReportGUI (player)); + } case "Archive" -> { BugReportDatabase.updateBugReportArchive(playerId, reportIDGUI, 1); - player.openInventory(getBugReportGUI(player)); + player.openInventory(isArchivedDetails ? getArchivedBugReportsGUI (player) : getBugReportGUI (player)); + player.sendMessage(ChatColor.YELLOW + "Bug Report #" + reportIDGUI + " has been archived."); + } + case "Delete" -> { + List playerReports = bugReports.get(playerId); + int reportIndex = -1; + + for (int i = 0; i < playerReports.size(); i++) { + if (playerReports.get(i).contains("Report ID: " + reportIDGUI)) { + reportIndex = i; + break; + } + } + + if (reportIndex != -1) { + playerReports.remove(reportIndex); + bugReports.put(playerId, playerReports); + } + + deleteBugReport(playerId, reportIDGUI); + + player.openInventory(isArchivedDetails ? getArchivedBugReportsGUI (player) : getBugReportGUI (player)); + player.sendMessage(ChatColor.RED + "Bug Report #" + reportIDGUI + " has been deleted."); + + HandlerList.unregisterAll(this); } - case "Delete" -> player.closeInventory(); default -> { return; } diff --git a/src/main/java/com/leon/bugreport/BugReportPlugin.java b/src/main/java/com/leon/bugreport/BugReportPlugin.java index 96788e1..9ca2d2f 100644 --- a/src/main/java/com/leon/bugreport/BugReportPlugin.java +++ b/src/main/java/com/leon/bugreport/BugReportPlugin.java @@ -24,6 +24,7 @@ private void registerCommands() { getCommand("bugreport").setExecutor(new BugReportCommand(reportManager)); getCommand("buglist").setExecutor(new BugListCommand(reportManager)); getCommand("buglinkdiscord").setExecutor(new LinkDiscordCommand(reportManager)); + getCommand ("buglistarchived").setExecutor(new BugListArchivedCommand(reportManager)); } private void registerListeners() { diff --git a/src/main/java/com/leon/bugreport/BugReportSettings.java b/src/main/java/com/leon/bugreport/BugReportSettings.java index 4a0e3dc..bde2064 100644 --- a/src/main/java/com/leon/bugreport/BugReportSettings.java +++ b/src/main/java/com/leon/bugreport/BugReportSettings.java @@ -65,7 +65,7 @@ public static Inventory getSettingsGUI() { gui.setItem(thirdRow + 2, getBugReportNotificationsToggle() ? onIcon : offIcon); gui.setItem(thirdRow + 3, getCategorySelectionToggle() ? onIcon : offIcon); - gui.setItem(fifthRow + 4, createButton(Material.BARRIER, ChatColor.RED + BugReportLanguage.getTitleFromLanguage("back"))); + gui.setItem(fifthRow + 4, createButton(Material.BARRIER, ChatColor.RED + BugReportLanguage.getTitleFromLanguage("close"))); return gui; } @@ -198,9 +198,8 @@ public Object onInventoryClick(InventoryClickEvent event) { String itemDisplayName = itemMeta.getDisplayName(); String customItemDisplayName = BugReportLanguage.getEnglishVersionFromLanguage(itemDisplayName); - if (customItemDisplayName.equals("Back")) { + if (customItemDisplayName.equals("Close")) { player.closeInventory(); - player.openInventory(BugReportManager.getBugReportGUI(player)); return null; } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e2ff1c8..c48a964 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,17 +1,19 @@ name: BugReport -version: 0.6.0 +version: 0.6.2 main: com.leon.bugreport.BugReportPlugin api-version: 1.13 commands: bugreport: aliases: - br + - report description: Submit a bug report usage: /bugreport executor: com.leon.bugreport.BugReportCommand buglist: aliases: - bl + - reports description: View bug reports usage: /buglist executor: com.leon.bugreport.BugListCommand @@ -20,4 +22,11 @@ commands: - bld description: Link a Discord webhook to the server usage: /buglinkdiscord - executor: com.leon.bugreport.LinkDiscordCommand \ No newline at end of file + executor: com.leon.bugreport.LinkDiscordCommand + buglistarchived: + aliases: + - bla + - archivedreports + description: Lists all archived bug reports + usage: /buglistarchived + executor: com.leon.bugreport.BugListArchivedCommand \ No newline at end of file