From 92136410e343602073be845d3030757d3631b035 Mon Sep 17 00:00:00 2001 From: Leon Dawson-Couper Date: Sun, 3 Dec 2023 23:30:01 +0000 Subject: [PATCH] Updated to 0.7.2 --- dependency-reduced-pom.xml | 2 +- pom.xml | 2 +- .../com/leon/bugreport/API/DataSource.java | 12 +- .../bugreport/BugListArchivedCommand.java | 25 --- .../com/leon/bugreport/BugListCommand.java | 26 --- .../com/leon/bugreport/BugReportDatabase.java | 84 +++----- .../com/leon/bugreport/BugReportLanguage.java | 5 +- .../com/leon/bugreport/BugReportManager.java | 180 +++++++++--------- .../com/leon/bugreport/BugReportPlugin.java | 6 +- .../java/com/leon/bugreport/LinkDiscord.java | 23 +-- .../leon/bugreport/LinkDiscordCommand.java | 9 +- .../listeners/ReportCreatedEvent.java | 27 +++ .../bugreport/listeners/ReportListener.java | 21 ++ src/main/resources/config.yml | 2 +- src/main/resources/languages.yml | 5 + src/main/resources/plugin.yml | 2 +- 16 files changed, 201 insertions(+), 230 deletions(-) create mode 100644 src/main/java/com/leon/bugreport/listeners/ReportCreatedEvent.java create mode 100644 src/main/java/com/leon/bugreport/listeners/ReportListener.java diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index c09f85e..f5e2997 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.leon.bugreport BugReports - 0.7.1 + 0.7.2 diff --git a/pom.xml b/pom.xml index fe06da8..ccf2577 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.leon.bugreport BugReports - 0.7.1 + 0.7.2 17 17 diff --git a/src/main/java/com/leon/bugreport/API/DataSource.java b/src/main/java/com/leon/bugreport/API/DataSource.java index 1c98c0d..713a0e5 100644 --- a/src/main/java/com/leon/bugreport/API/DataSource.java +++ b/src/main/java/com/leon/bugreport/API/DataSource.java @@ -154,11 +154,12 @@ public static void cleanOutdatedCache() { JsonObject jsonResponse = JsonParser.parseString(response).getAsJsonObject(); String uuidString = jsonResponse.get("id").getAsString(); return UUID.fromString( - uuidString.substring(0, 8) + "-" + - uuidString.substring(8, 12) + "-" + - uuidString.substring(12, 16) + "-" + - uuidString.substring(16, 20) + "-" + - uuidString.substring(20, 32)); + uuidString.substring(0, 8) + "-" + + uuidString.substring(8, 12) + "-" + + uuidString.substring(12, 16) + "-" + + uuidString.substring(16, 20) + "-" + + uuidString.substring(20, 32) + ); } public static @NotNull ItemStack getPlayerHead(String playerName) { @@ -200,7 +201,6 @@ private static boolean checkIfPlayerHeadIsCached(String playerName, @NotNull Map private static @NotNull ItemStack getCachedPlayerHead(String playerName, @NotNull Map cache) { CacheEntry mainEntry = cache.get(playerName); - String uuidString = mainEntry.data; String base64 = null; if ("00000000-0000-0000-0000-000000000000".equals(mainEntry.data)) { return new ItemStack(Material.PLAYER_HEAD); diff --git a/src/main/java/com/leon/bugreport/BugListArchivedCommand.java b/src/main/java/com/leon/bugreport/BugListArchivedCommand.java index 51e13b0..8add0c3 100644 --- a/src/main/java/com/leon/bugreport/BugListArchivedCommand.java +++ b/src/main/java/com/leon/bugreport/BugListArchivedCommand.java @@ -1,14 +1,11 @@ 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; @@ -26,29 +23,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St 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."); diff --git a/src/main/java/com/leon/bugreport/BugListCommand.java b/src/main/java/com/leon/bugreport/BugListCommand.java index 771232a..41cfa8c 100644 --- a/src/main/java/com/leon/bugreport/BugListCommand.java +++ b/src/main/java/com/leon/bugreport/BugListCommand.java @@ -1,14 +1,11 @@ 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; @@ -23,32 +20,9 @@ public boolean onCommand(CommandSender sender, Command command, String label, St 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.getBugReportGUI(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."); diff --git a/src/main/java/com/leon/bugreport/BugReportDatabase.java b/src/main/java/com/leon/bugreport/BugReportDatabase.java index db97f4d..7dae173 100644 --- a/src/main/java/com/leon/bugreport/BugReportDatabase.java +++ b/src/main/java/com/leon/bugreport/BugReportDatabase.java @@ -27,18 +27,14 @@ public BugReportDatabase() { private static void addTimestampColumn() { try (Connection connection = dataSource.getConnection()) { - try (ResultSet archivedResultSet = connection.getMetaData().getColumns(null, null, "player_data", - "last_login_timestamp")) { + try (ResultSet archivedResultSet = connection.getMetaData().getColumns(null, null, "player_data", "last_login_timestamp")) { if (!archivedResultSet.next()) { - connection.createStatement() - .execute("ALTER TABLE player_data ADD COLUMN last_login_timestamp BIGINT DEFAULT 0"); + connection.createStatement().execute("ALTER TABLE player_data ADD COLUMN last_login_timestamp BIGINT DEFAULT 0"); } } - try (ResultSet archivedResultSet = connection.getMetaData().getColumns(null, null, "bug_reports", - "timestamp")) { + try (ResultSet archivedResultSet = connection.getMetaData().getColumns(null, null, "bug_reports", "timestamp")) { if (!archivedResultSet.next()) { - connection.createStatement() - .execute("ALTER TABLE bug_reports ADD COLUMN timestamp BIGINT"); + connection.createStatement().execute("ALTER TABLE bug_reports ADD COLUMN timestamp BIGINT"); } } } catch (Exception e) { @@ -86,25 +82,19 @@ public static long getPlayerLastLoginTimestamp(UUID playerId) { private void addMissingTables() { try (Connection connection = dataSource.getConnection()) { - try (ResultSet archivedResultSet = connection.getMetaData().getColumns(null, null, "player_data", - "player_id")) { + try (ResultSet archivedResultSet = connection.getMetaData().getColumns(null, null, "player_data", "player_id")) { if (!archivedResultSet.next()) { - connection.createStatement() - .execute("CREATE TABLE IF NOT EXISTS player_data(player_id TEXT, last_login_timestamp BIGINT DEFAULT 0)"); + connection.createStatement().execute("CREATE TABLE IF NOT EXISTS player_data(player_id TEXT, last_login_timestamp BIGINT DEFAULT 0)"); } } - try (ResultSet archivedResultSet = connection.getMetaData().getColumns(null, null, "bug_reports", - "archived")) { + try (ResultSet archivedResultSet = connection.getMetaData().getColumns(null, null, "bug_reports", "archived")) { if (!archivedResultSet.next()) { - connection.createStatement() - .execute("ALTER TABLE bug_reports ADD COLUMN archived INTEGER DEFAULT 0"); + connection.createStatement().execute("ALTER TABLE bug_reports ADD COLUMN archived INTEGER DEFAULT 0"); } } - try (ResultSet reportIdResultSet = connection.getMetaData().getColumns(null, null, "bug_reports", - "report_id")) { + try (ResultSet reportIdResultSet = connection.getMetaData().getColumns(null, null, "bug_reports", "report_id")) { if (!reportIdResultSet.next()) { - connection.createStatement() - .execute("ALTER TABLE bug_reports ADD COLUMN report_id INT AUTO_INCREMENT PRIMARY KEY"); + connection.createStatement().execute("ALTER TABLE bug_reports ADD COLUMN report_id INT AUTO_INCREMENT PRIMARY KEY"); } } } catch (Exception e) { @@ -129,8 +119,7 @@ private void makeAllHeadersEqualReport_ID() { } newHeader.append("\n"); } - PreparedStatement statement = connection - .prepareStatement("UPDATE bug_reports SET header = ? WHERE report_id = ?"); + PreparedStatement statement = connection.prepareStatement("UPDATE bug_reports SET header = ? WHERE report_id = ?"); statement.setString(1, newHeader.toString().trim()); statement.setInt(2, report_id); statement.executeUpdate(); @@ -144,14 +133,12 @@ private void makeAllHeadersEqualReport_ID() { private void fixReportID() { try (Connection connection = dataSource.getConnection()) { - ResultSet resultSet = connection.createStatement() - .executeQuery("SELECT * FROM bug_reports WHERE report_id IS NULL OR report_id = 0"); + ResultSet resultSet = connection.createStatement().executeQuery("SELECT * FROM bug_reports WHERE report_id IS NULL OR report_id = 0"); while (resultSet.next()) { int report_id = resultSet.getInt("report_id"); int rowNumber = resultSet.getRow(); if (report_id != rowNumber) { - PreparedStatement statement = connection - .prepareStatement("UPDATE bug_reports SET report_id = ? WHERE report_id = ?"); + PreparedStatement statement = connection.prepareStatement("UPDATE bug_reports SET report_id = ? WHERE report_id = ?"); statement.setInt(1, rowNumber); statement.setInt(2, report_id); statement.executeUpdate(); @@ -165,7 +152,7 @@ private void fixReportID() { } - private static void createConnection() { + public static void createConnection() { loadConfig(); String databaseType = Objects.requireNonNull(config.getString("databaseType")); ConfigurationSection databaseSection = Objects.requireNonNull(config.getConfigurationSection("database")); @@ -190,11 +177,9 @@ private static void createConnection() { public void addBugReport(String username, @NotNull UUID playerId, String world, String header, String fullMessage) { try (Connection connection = dataSource.getConnection()) { - PreparedStatement statement = connection.prepareStatement( - "INSERT INTO bug_reports(player_id, header, message, username, world, archived, report_id, timestamp) VALUES(?, ?, ?, ?, ?, ?, ?, ?)"); + PreparedStatement statement = connection.prepareStatement("INSERT INTO bug_reports(player_id, header, message, username, world, archived, report_id, timestamp) VALUES(?, ?, ?, ?, ?, ?, ?, ?)"); int report_id = 1; - ResultSet resultSet = connection.createStatement() - .executeQuery("SELECT report_id FROM bug_reports ORDER BY report_id DESC LIMIT 1"); + ResultSet resultSet = connection.createStatement().executeQuery("SELECT report_id FROM bug_reports ORDER BY report_id DESC LIMIT 1"); if (resultSet.next()) { report_id = resultSet.getInt("report_id") + 1; } @@ -218,8 +203,7 @@ public void addBugReport(String username, @NotNull UUID playerId, String world, Map> bugReports = new HashMap<>(); try (Connection connection = dataSource.getConnection()) { - PreparedStatement statement = connection - .prepareStatement("SELECT * FROM bug_reports ORDER BY report_id ASC"); + PreparedStatement statement = connection.prepareStatement("SELECT * FROM bug_reports ORDER BY report_id ASC"); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { UUID playerId = UUID.fromString(resultSet.getString("player_id")); @@ -232,14 +216,14 @@ public void addBugReport(String username, @NotNull UUID playerId, String world, long timestamp = resultSet.getLong("timestamp"); List reports = bugReports.getOrDefault(getStaticUUID(), new ArrayList<>(Collections.singletonList("DUMMY"))); reports.add( - "Username: " + username + "\n" + - "UUID: " + playerId + "\n" + - "World: " + world + "\n" + - "Full Message: " + fullMessage + "\n" + - "Header: " + header + "\n" + - "Archived: " + archived + "\n" + - "Report ID: " + report_id + "\n" + - "Timestamp: " + timestamp + "Username: " + username + "\n" + + "UUID: " + playerId + "\n" + + "World: " + world + "\n" + + "Full Message: " + fullMessage + "\n" + + "Header: " + header + "\n" + + "Archived: " + archived + "\n" + + "Report ID: " + report_id + "\n" + + "Timestamp: " + timestamp ); bugReports.put(getStaticUUID(), reports); } @@ -253,7 +237,7 @@ public void addBugReport(String username, @NotNull UUID playerId, String world, return bugReports; } - static @NotNull UUID getStaticUUID() { + public static @NotNull UUID getStaticUUID() { return UUID.fromString("00000000-0000-0000-0000-000000000000"); } @@ -290,8 +274,7 @@ private static void connectLocal() { private static void createTables() { try (Connection connection = dataSource.getConnection()) { - connection.createStatement().execute( - "CREATE TABLE IF NOT EXISTS bug_reports(rowid INTEGER, player_id TEXT, header TEXT, message TEXT, username TEXT, world TEXT, archived INTEGER DEFAULT 0, report_id INTEGER, timestamp BIGINT)"); + connection.createStatement().execute("CREATE TABLE IF NOT EXISTS bug_reports(rowid INTEGER, player_id TEXT, header TEXT, message TEXT, username TEXT, world TEXT, archived INTEGER DEFAULT 0, report_id INTEGER, timestamp BIGINT)"); } catch (Exception e) { plugin.getLogger().severe("Failed to create tables."); plugin.getLogger().severe(e.getMessage()); @@ -300,21 +283,14 @@ private static void createTables() { public void updateBugReportHeader(UUID playerId, int reportIndex) { try (Connection connection = dataSource.getConnection()) { - PreparedStatement statement = connection - .prepareStatement("UPDATE bug_reports SET header = ? WHERE report_id = ?"); + PreparedStatement statement = connection.prepareStatement("UPDATE bug_reports SET header = ? WHERE report_id = ?"); String existingHeader = bugReports.get(playerId).get(reportIndex); String[] lines = existingHeader.split("\n"); StringBuilder newHeader = new StringBuilder(); for (String line : lines) { - if (line.startsWith("hasBeenRead:")) { - newHeader.append("hasBeenRead: 1"); - } else { - newHeader.append(line); - } - newHeader.append("\n"); - } - + newHeader.append(line.startsWith("hasBeenRead:") ? "hasBeenRead: 1" : line).append("\n"); + } statement.setString(1, newHeader.toString().trim()); statement.setInt(2, reportIndex); statement.executeUpdate(); diff --git a/src/main/java/com/leon/bugreport/BugReportLanguage.java b/src/main/java/com/leon/bugreport/BugReportLanguage.java index 9bec27f..38f6320 100644 --- a/src/main/java/com/leon/bugreport/BugReportLanguage.java +++ b/src/main/java/com/leon/bugreport/BugReportLanguage.java @@ -4,6 +4,7 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.Arrays; @@ -17,7 +18,7 @@ public BugReportLanguage(Plugin plugin, String languageFilePath) { loadLanguageTexts(plugin, languageFilePath); } - static void loadLanguageTexts(Plugin plugin, String languageFilePath) { + static void loadLanguageTexts(@NotNull Plugin plugin, String languageFilePath) { File languageFile = new File(plugin.getDataFolder(), languageFilePath); if (!languageFile.exists()) { plugin.saveResource(languageFilePath, false); @@ -41,7 +42,7 @@ public static String getEnglishVersionFromLanguage(String displayName) { "Enable Discord Webhook", "Enable Bug Report Notifications", "Enable Category Selection", "Set Max Reports Per Player", "Set Language", "On", "Off", "Language", - "Cancelled", "Cancel", "Archive", "Delete", "Other Settings", + "Cancelled", "Cancel", "Archive", "Unarchive", "Delete", "Other Settings", "Enable Title Message", "Enable Player Heads" }; diff --git a/src/main/java/com/leon/bugreport/BugReportManager.java b/src/main/java/com/leon/bugreport/BugReportManager.java index 6e2bb41..73d28ef 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 com.leon.bugreport.listeners.ReportCreatedEvent; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -28,7 +29,7 @@ import static com.leon.bugreport.BugReportSettings.getSettingsGUI; public class BugReportManager implements Listener { - static Map> bugReports; + public static Map> bugReports; private static BugReportDatabase database; public static Plugin plugin; @@ -55,8 +56,7 @@ public BugReportManager(Plugin plugin) throws Exception { String webhookURL = config.getString("webhookURL", ""); pluginTitle = Objects.requireNonNull(config.getString("pluginTitle", "[Bug Report]")); - pluginColor = stringColorToColorCode( - Objects.requireNonNull(config.getString("pluginColor", "Yellow").toUpperCase())); + pluginColor = stringColorToColorCode(Objects.requireNonNull(config.getString("pluginColor", "Yellow").toUpperCase())); discord = new LinkDiscord(webhookURL); reportCategories = loadReportCategories(); @@ -105,7 +105,7 @@ public static void checkConfig() { put("enableBugReportNotifications", false); put("discordEmbedTitle", "New Bug Report"); put("discordEmbedColor", "Yellow"); - put("discordEmbedFooter", "Bug Report V0.7.1"); + put("discordEmbedFooter", "Bug Report V0.7.2"); put("discordEmbedThumbnail", "https://www.spigotmc.org/data/resource_icons/110/110732.jpg"); put("discordEnableThumbnail", true); put("discordEnableUserAuthor", true); @@ -218,9 +218,7 @@ public void submitBugReport(@NotNull Player player, String message, Integer cate database.addBugReport(playerName, playerId, worldName, header, message); if (config.getBoolean("enableBugReportNotifications", true)) { - String defaultMessage = pluginColor + pluginTitle + " " + ChatColor.GRAY - + DefaultLanguageSelector.getTextElseDefault(language, "bugReportNotificationMessage") - .replace("%player%", ChatColor.AQUA + playerName + ChatColor.GRAY); + String defaultMessage = pluginColor + pluginTitle + " " + ChatColor.GRAY + DefaultLanguageSelector.getTextElseDefault(language, "bugReportNotificationMessage").replace("%player%", ChatColor.AQUA + playerName + ChatColor.GRAY); for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { if (onlinePlayer.hasPermission("bugreport.notify")) { @@ -232,8 +230,7 @@ public void submitBugReport(@NotNull Player player, String message, Integer cate if (config.getBoolean("enableDiscordWebhook", true)) { String webhookURL = config.getString("webhookURL", ""); if (webhookURL.isEmpty()) { - plugin.getLogger().warning( - DefaultLanguageSelector.getTextElseDefault(language, "missingDiscordWebhookURLMessage")); + plugin.getLogger().warning(DefaultLanguageSelector.getTextElseDefault(language, "missingDiscordWebhookURLMessage")); } try { @@ -242,14 +239,16 @@ public void submitBugReport(@NotNull Player player, String message, Integer cate plugin.getLogger().warning("Error sending bug report to Discord: " + e.getMessage()); } } + ReportCreatedEvent reportEvent = new ReportCreatedEvent(header); + Bukkit.getServer().getPluginManager().callEvent(reportEvent); } public static @NotNull Inventory generateBugReportGUI(@NotNull Player player, boolean showArchived) { + loadBugReports(); + int itemsPerPage = 27; int navigationRow = 36; - loadBugReports(); - List reports = bugReports.getOrDefault(getStaticUUID(), new ArrayList<>(Collections.singletonList("DUMMY"))); Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { @@ -269,35 +268,22 @@ public void submitBugReport(@NotNull Player player, String message, Integer cate } }); - List filteredReports = new ArrayList<>(); - for (String report : reports) { - if ((showArchived && report.contains("Archived: 1")) - || (!showArchived && !report.contains("DUMMY") && !report.contains("Archived: 1"))) { - filteredReports.add(report); - } - } - - // filteredReports.sort((r1, r2) -> { - // int id1 = Integer.parseInt(extractReportIDFromReport(r1)); - // int id2 = Integer.parseInt(extractReportIDFromReport(r2)); - // return Integer.compare(id1, id2); - // }); + List filteredReports = getFilteredReports(showArchived, reports); - int totalPages = (int) Math.ceil((double) filteredReports.size() / itemsPerPage); + int totalPages = Math.max(1, (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 + (showArchived ? "Archived Bugs" : "Bug Report") + " - " - + Objects.requireNonNull(BugReportLanguage.getTitleFromLanguage("pageInfo")) - .replace("%currentPage%", String.valueOf(currentPage)) - .replace("%totalPages%", String.valueOf(totalPages))); + ChatColor.YELLOW + (showArchived ? "Archived Bugs" : "Bug Report") + " - " + Objects.requireNonNull(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"); @@ -315,13 +301,7 @@ public void submitBugReport(@NotNull Player player, String message, Integer cate String reportID = reportData.get("Report ID"); String firstLine = report.split("\n")[0]; - ItemStack reportItem; - - if (report.contains("hasBeenRead: 0")) { - reportItem = new ItemStack(Material.ENCHANTED_BOOK); - } else { - reportItem = new ItemStack(Material.BOOK); - } + ItemStack reportItem = report.contains("hasBeenRead: 0") ? new ItemStack(Material.ENCHANTED_BOOK) : new ItemStack(Material.BOOK); ItemMeta itemMeta = reportItem.getItemMeta(); itemMeta.setDisplayName(ChatColor.YELLOW + "Bug Report #" + reportID); @@ -333,19 +313,21 @@ public void submitBugReport(@NotNull Player player, String message, Integer cate slotIndex++; } - ItemStack backButton = createButton(Material.ARROW, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("back")); - ItemStack forwardButton = createButton(Material.ARROW, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("forward")); ItemStack settingsButton = createButton(Material.CHEST, ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("settings")); ItemStack closeButton = createButton(Material.BARRIER, ChatColor.RED + BugReportLanguage.getTitleFromLanguage("close")); ItemStack pageIndicator = createButton(Material.PAPER, ChatColor.YELLOW + Objects.requireNonNull(BugReportLanguage.getTitleFromLanguage("pageInfo")) - .replace("%currentPage%", String.valueOf(currentPage)) - .replace("%totalPages%", String.valueOf(totalPages))); + .replace("%currentPage%", String.valueOf(currentPage)) + .replace("%totalPages%", String.valueOf(totalPages))); - if (currentPage > 1) { - gui.setItem(navigationRow, backButton); + if (BugReportManager.getCurrentPage(player) == 1) { + gui.setItem(36, new ItemStack(Material.AIR)); + } else { + createNavigationButtons("back", gui, 36); } - if (currentPage < totalPages) { - gui.setItem(navigationRow + 8, forwardButton); + if (BugReportManager.getCurrentPage(player) == BugReportManager.getTotalPages(player)) { + gui.setItem(44, new ItemStack(Material.AIR)); + } else { + createNavigationButtons("forward", gui, 44); } gui.setItem(navigationRow + 2, settingsButton); @@ -355,7 +337,32 @@ public void submitBugReport(@NotNull Player player, String message, Integer cate return gui; } - private static String extractReportIDFromReport(String report) { + private static void createNavigationButtons(String forward, @NotNull Inventory bugReportGUI, int index) { + ItemStack forwardButton = new ItemStack(Material.ARROW); + ItemMeta forwardMeta = forwardButton.getItemMeta(); + forwardMeta.setDisplayName(ChatColor.GREEN + BugReportLanguage.getTitleFromLanguage(forward)); + forwardButton.setItemMeta(forwardMeta); + bugReportGUI.setItem(index, forwardButton); + } + + @NotNull + private static List getFilteredReports(boolean showArchived, @NotNull List reports) { + List filteredReports = new ArrayList<>(); + for (String report : reports) { + if ((showArchived && report.contains("Archived: 1")) || (!showArchived && !report.contains("DUMMY") && !report.contains("Archived: 1"))) { + filteredReports.add(report); + } + } + + filteredReports.sort((r1, r2) -> { + int id1 = Integer.parseInt(extractReportIDFromReport(r1)); + int id2 = Integer.parseInt(extractReportIDFromReport(r2)); + return Integer.compare(id1, id2); + }); + return filteredReports; + } + + private static @NotNull String extractReportIDFromReport(@NotNull String report) { String[] reportLines = report.split("\n"); for (String line : reportLines) { int colonIndex = line.indexOf(":"); @@ -391,11 +398,9 @@ private static void loadBugReports() { } public static class BugReportListener implements Listener { - private final BugReportManager reportManager; private final Map closingInventoryMap; - public BugReportListener(BugReportManager reportManager) { - this.reportManager = reportManager; + public BugReportListener() { this.closingInventoryMap = new HashMap<>(); } @@ -435,14 +440,14 @@ public void onInventoryClick(@NotNull InventoryClickEvent event) { int currentPage = getCurrentPage(player); if (currentPage > 1) { setCurrentPage(player, currentPage - 1); - player.openInventory(getBugReportGUI(player)); + player.openInventory(isArchivedGUI ? getArchivedBugReportsGUI(player) : getBugReportGUI(player)); } } case "Forward" -> { int currentPage = getCurrentPage(player); - if (currentPage < reportManager.getTotalPages(player)) { + if (currentPage < getTotalPages(player)) { setCurrentPage(player, currentPage + 1); - player.openInventory(getBugReportGUI(player)); + player.openInventory(isArchivedGUI ? getArchivedBugReportsGUI(player) : getBugReportGUI(player)); } } case "Settings" -> player.openInventory(getSettingsGUI()); @@ -454,12 +459,11 @@ public void onInventoryClick(@NotNull InventoryClickEvent event) { if (displayName.startsWith(ChatColor.YELLOW + "Bug Report #")) { int reportID = Integer.parseInt(displayName.substring(14)); UUID playerId = player.getUniqueId(); - List reports = bugReports.getOrDefault(getStaticUUID(), - new ArrayList<>(Collections.singletonList("DUMMY"))); + List reports = bugReports.getOrDefault(getStaticUUID(), new ArrayList<>(Collections.singletonList("DUMMY"))); String report = reports.stream() - .filter(reportString -> reportString.contains("Report ID: " + reportID)) - .findFirst() - .orElse(null); + .filter(reportString -> reportString.contains("Report ID: " + reportID)) + .findFirst() + .orElse(null); // if (report.contains("hasBeenRead: 0")) { // report = report.replace("hasBeenRead: 0", "hasBeenRead: 1"); @@ -501,7 +505,7 @@ public static int getCurrentPage(@NotNull Player player) { return player.getMetadata("currentPage").get(0).asInt(); } - public int getTotalPages(Player player) { + public static int getTotalPages(Player player) { List reports = bugReports.getOrDefault(getStaticUUID(), new ArrayList<>(Collections.singletonList("DUMMY"))); return (int) Math.ceil((double) reports.size() / 27); } @@ -527,19 +531,16 @@ public static boolean checkForKey(String key, Boolean checkForBoolean) { } } - private static void openBugReportDetailsGUI(Player player, String report, Integer reportIDGUI, - Boolean isArchivedGUI) { + private static void openBugReportDetailsGUI(Player player, String report, Integer reportIDGUI, Boolean isArchivedGUI) { String bugReportTitle = isArchivedGUI ? "Archived Bug Details - #" : "Bug Report Details - #"; Inventory gui = Bukkit.createInventory(player, 45, ChatColor.YELLOW + bugReportTitle + reportIDGUI); if (report == null) { - player.sendMessage(pluginColor + pluginTitle + ChatColor.RED - + " Error 101: Report is null. Please report this to the plugin developer."); + player.sendMessage(pluginColor + pluginTitle + ChatColor.RED + " Error 101: Report is null. Please report this to the plugin developer."); return; } String[] reportLines = report.split("\n"); - Map reportData = new HashMap<>(); for (String line : reportLines) { @@ -560,25 +561,22 @@ private static void openBugReportDetailsGUI(Player player, String report, Intege ItemStack usernameItem = getPlayerHead(username); String timestampToDate = translateTimestampToDate(Long.parseLong(reportData.get("Timestamp"))); - + if (getPlayerHead(username) == null) { usernameItem = createInfoItem(Material.PLAYER_HEAD, ChatColor.GOLD + "Username", ChatColor.WHITE + username); } - - ItemStack uuidItem = createInfoItem(Material.NAME_TAG, ChatColor.GOLD + "UUID", ChatColor.WHITE + uuid); - ItemStack worldItem = createInfoItem(Material.GRASS_BLOCK, ChatColor.GOLD + "World", ChatColor.WHITE + world); - ItemStack messageItem = createInfoItem(Material.PAPER, ChatColor.GOLD + "Full Message", ChatColor.WHITE + fullMessage, fullMessage.length() > 32); - ItemStack backButton = createButton(Material.BARRIER, ChatColor.RED + BugReportLanguage.getTitleFromLanguage("back")); - - ItemStack archiveButton = createCustomPlayerHead( - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Y5YjY3YmI5Y2MxYzg4NDg2NzYwYjE3MjY1MDU0MzEyZDY1OWRmMmNjNjc1NTc1MDA0NWJkNzFjZmZiNGU2MCJ9fX0=", - ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("archive"), 16); - ItemStack deleteButton = createCustomPlayerHead( - "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmUwZmQxMDE5OWU4ZTRmY2RhYmNhZTRmODVjODU5MTgxMjdhN2M1NTUzYWQyMzVmMDFjNTZkMThiYjk0NzBkMyJ9fX0=", - ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("delete"), 17); - - ItemStack statusItem = createInfoItem(Material.REDSTONE_TORCH, ChatColor.GOLD + "Status", ChatColor.WHITE + (isArchivedGUI ? "Archived" : "Open"), false); + + ItemStack uuidItem = createInfoItem(Material.NAME_TAG, ChatColor.GOLD + "UUID", ChatColor.WHITE + uuid); + ItemStack worldItem = createInfoItem(Material.GRASS_BLOCK, ChatColor.GOLD + "World", ChatColor.WHITE + world); + ItemStack messageItem = createInfoItem(Material.PAPER, ChatColor.GOLD + "Full Message", ChatColor.WHITE + fullMessage, fullMessage.length() > 32); + ItemStack statusItem = createInfoItem(Material.REDSTONE_TORCH, ChatColor.GOLD + "Status", ChatColor.WHITE + (isArchivedGUI ? "Archived" : "Open"), false); ItemStack timestampItem = createInfoItem(Material.CLOCK, ChatColor.GOLD + "Timestamp", ChatColor.WHITE + timestampToDate, false); + ItemStack backButton = createButton(Material.BARRIER, ChatColor.RED + BugReportLanguage.getTitleFromLanguage("back")); + + ItemStack archiveButton = createCustomPlayerHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Y5YjY3YmI5Y2MxYzg4NDg2NzYwYjE3MjY1MDU0MzEyZDY1OWRmMmNjNjc1NTc1MDA0NWJkNzFjZmZiNGU2MCJ9fX0=", ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("archive"), 16); + ItemStack unarchiveButton = createCustomPlayerHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDVjNTg4YjllYzBhMDhhMzdlMDFhODA5ZWQwOTAzY2MzNGMzZTNmMTc2ZGM5MjIzMDQxN2RhOTNiOTQ4ZjE0OCJ9fX0=", ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("unarchive"), 18); + ItemStack deleteButton = createCustomPlayerHead("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmUwZmQxMDE5OWU4ZTRmY2RhYmNhZTRmODVjODU5MTgxMjdhN2M1NTUzYWQyMzVmMDFjNTZkMThiYjk0NzBkMyJ9fX0=", ChatColor.YELLOW + BugReportLanguage.getTitleFromLanguage("delete"), 17); + for (int i = 0; i < gui.getSize(); i++) { gui.setItem(i, emptyItem); @@ -592,10 +590,7 @@ private static void openBugReportDetailsGUI(Player player, String report, Intege gui.setItem(22, statusItem); gui.setItem(24, timestampItem); - if (!isArchivedGUI) { - gui.setItem(38, archiveButton); - } - + gui.setItem(38, !isArchivedGUI ? archiveButton : unarchiveButton); gui.setItem(40, backButton); gui.setItem(42, deleteButton); @@ -619,7 +614,6 @@ private static void openBugReportDetailsGUI(Player player, String report, Intege } player.openInventory(gui); - Bukkit.getPluginManager().registerEvents(new BugReportDetailsListener(gui, reportIDGUI), plugin); } @@ -637,10 +631,8 @@ private static void openBugReportDetailsGUI(Player player, String report, Intege String hourString = String.valueOf(hour); String minuteString = String.valueOf(minute); - if (hour < 10) - hourString = "0" + hourString; - if (minute < 10) - minuteString = "0" + minuteString; + if (hour < 10) hourString = "0" + hourString; + if (minute < 10) minuteString = "0" + minuteString; return new StringJoiner(" ") .add(calendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH)) @@ -692,7 +684,15 @@ public void onInventoryClick(@NotNull InventoryClickEvent event) { String customDisplayName = BugReportLanguage.getEnglishVersionFromLanguage(itemMeta.getDisplayName()); switch (customDisplayName) { - case "Back" -> player.openInventory(isArchivedDetails ? getArchivedBugReportsGUI(player) : getBugReportGUI(player)); + case "Back" -> player .openInventory(isArchivedDetails ? getArchivedBugReportsGUI(player) : getBugReportGUI(player)); + case "Unarchive" -> { + BugReportDatabase.updateBugReportArchive(reportIDGUI, 0); + + player.openInventory(isArchivedDetails ? getArchivedBugReportsGUI(player) : getBugReportGUI(player)); + player.sendMessage(ChatColor.YELLOW + "Bug Report #" + reportIDGUI + " has been unarchived."); + + HandlerList.unregisterAll(this); + } case "Archive" -> { BugReportDatabase.updateBugReportArchive(reportIDGUI, 1); @@ -722,7 +722,7 @@ public void onInventoryClick(@NotNull InventoryClickEvent event) { } } - private static ItemStack createEmptyItem() { + private static @NotNull ItemStack createEmptyItem() { ItemStack item = new ItemStack(Material.GRAY_STAINED_GLASS_PANE); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(" "); @@ -731,7 +731,7 @@ private static ItemStack createEmptyItem() { return item; } - private static ItemStack createInfoItem(Material material, String name, String value, Boolean... longMessage) { + private static @NotNull ItemStack createInfoItem(Material material, String name, String value, Boolean @NotNull ... longMessage) { ItemStack item = new ItemStack(material); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(name); diff --git a/src/main/java/com/leon/bugreport/BugReportPlugin.java b/src/main/java/com/leon/bugreport/BugReportPlugin.java index 5dd9783..d4b1386 100644 --- a/src/main/java/com/leon/bugreport/BugReportPlugin.java +++ b/src/main/java/com/leon/bugreport/BugReportPlugin.java @@ -1,6 +1,7 @@ package com.leon.bugreport; import com.leon.bugreport.API.CacheCleanupListener; +import com.leon.bugreport.listeners.ReportListener; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -11,9 +12,7 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; - import java.util.*; - import static com.leon.bugreport.BugReportDatabase.getStaticUUID; import static com.leon.bugreport.BugReportManager.*; @@ -102,9 +101,10 @@ private void registerCommands() { } private void registerListeners() { - getServer().getPluginManager().registerEvents(new BugReportManager.BugReportListener(reportManager), this); + getServer().getPluginManager().registerEvents(new BugReportManager.BugReportListener(), this); getServer().getPluginManager().registerEvents(new BugReportCommand(reportManager), this); getServer().getPluginManager().registerEvents(new BugReportSettings.BugReportSettingsListener(), this); + getServer().getPluginManager().registerEvents(new ReportListener(), this); getServer().getPluginManager().registerEvents(this, this); new CacheCleanupListener(); } diff --git a/src/main/java/com/leon/bugreport/LinkDiscord.java b/src/main/java/com/leon/bugreport/LinkDiscord.java index 58d5948..2ab7432 100644 --- a/src/main/java/com/leon/bugreport/LinkDiscord.java +++ b/src/main/java/com/leon/bugreport/LinkDiscord.java @@ -12,7 +12,7 @@ public class LinkDiscord { private static final String EMBED_TITLE = "New Bug Report"; - private static final String EMBED_FOOTER_TEXT = "Bug Report V0.7.1"; + private static final String EMBED_FOOTER_TEXT = "Bug Report V0.7.2"; private static final String EMBED_THUMBNAIL = "https://www.spigotmc.org/data/resource_icons/110/110732.jpg"; private static final String EMBED_AUTHOR = "true"; private static final String EMBED_DATE = "true"; @@ -49,13 +49,8 @@ public void sendBugReport(String message, String world, String username) { discordEnableUserAuthor = (discordEnableUserAuthor == null) ? EMBED_AUTHOR : discordEnableUserAuthor; discordIncludeDate = (discordIncludeDate == null) ? EMBED_DATE : discordIncludeDate; discordEnableThumbnail = (discordEnableThumbnail == null) ? EMBED_THUMBNAIL_ENABLED : discordEnableThumbnail; - String newUUID; + String newUUID = discordEnableUserAuthor.equals ("true") ? getUserIDFromAPI (username) : "Not Available"; - if (discordEnableUserAuthor.equals("true")) { - newUUID = getUserIDFromAPI(username); - } else { - newUUID = "Not Available"; - } String userAuthorURL = "https://crafatar.com/avatars/" + newUUID; String userAuthorIconURL = "https://crafatar.com/avatars/" + newUUID; @@ -69,15 +64,9 @@ public void sendBugReport(String message, String world, String username) { .setFooter(discordEmbedFooter, null) .setColor(discordEmbedColor); - if (discordEnableUserAuthor.equals("true")) { - embedObject.setAuthor(username, userAuthorURL, userAuthorIconURL); - } - if (discordIncludeDate.equals("true")) { - embedObject.setTimestamp(); - } - if (discordEnableThumbnail.equals("true")) { - embedObject.setThumbnail(discordEmbedThumbnail); - } + if (discordEnableUserAuthor.equals("true")) embedObject.setAuthor(username, userAuthorURL, userAuthorIconURL); + if (discordIncludeDate.equals("true")) embedObject.setTimestamp(); + if (discordEnableThumbnail.equals("true")) embedObject.setThumbnail (discordEmbedThumbnail); webhook.addEmbed(embedObject); @@ -97,7 +86,7 @@ public void sendBugReport(String message, String world, String username) { connection.setRequestMethod("GET"); connection.setRequestProperty("Content-Type", "application/json"); - connection.setRequestProperty("User-Agent", "BugReport/0.7.1"); + connection.setRequestProperty("User-Agent", "BugReport/0.7.2"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); connection.setDoOutput(true); diff --git a/src/main/java/com/leon/bugreport/LinkDiscordCommand.java b/src/main/java/com/leon/bugreport/LinkDiscordCommand.java index 0a59a5a..db8ab99 100644 --- a/src/main/java/com/leon/bugreport/LinkDiscordCommand.java +++ b/src/main/java/com/leon/bugreport/LinkDiscordCommand.java @@ -5,6 +5,8 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; import static com.leon.bugreport.BugReportManager.pluginColor; import static com.leon.bugreport.BugReportManager.pluginTitle; @@ -17,7 +19,7 @@ public LinkDiscordCommand(BugReportManager reportManager) { } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!(sender instanceof Player player)) { sender.sendMessage("Only players can use this command."); // TODO: Language support return true; @@ -46,7 +48,8 @@ public boolean onCommand(CommandSender sender, Command command, String label, St return true; } - private boolean isWebhookURLValid(String webhookURL) { - return webhookURL.startsWith("https://discord.com/api/webhooks/"); + @Contract(pure = true) + private boolean isWebhookURLValid(@NotNull String webhookURL) { + return webhookURL.matches("^https://(canary\\.)?discord\\.com/api/webhooks/[0-9]+/[a-zA-Z0-9-_]+$"); } } \ No newline at end of file diff --git a/src/main/java/com/leon/bugreport/listeners/ReportCreatedEvent.java b/src/main/java/com/leon/bugreport/listeners/ReportCreatedEvent.java new file mode 100644 index 0000000..4acd37b --- /dev/null +++ b/src/main/java/com/leon/bugreport/listeners/ReportCreatedEvent.java @@ -0,0 +1,27 @@ +package com.leon.bugreport.listeners; + +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +public class ReportCreatedEvent extends Event { + private static final HandlerList HANDLERS = new HandlerList(); + private final String reportDetails; + + public ReportCreatedEvent(String reportDetails) { + this.reportDetails = reportDetails; + } + + public String getReportDetails() { + return reportDetails; + } + + @Override + public @NotNull HandlerList getHandlers() { + return HANDLERS; + } + + public static HandlerList getHandlerList() { + return HANDLERS; + } +} diff --git a/src/main/java/com/leon/bugreport/listeners/ReportListener.java b/src/main/java/com/leon/bugreport/listeners/ReportListener.java new file mode 100644 index 0000000..8969da5 --- /dev/null +++ b/src/main/java/com/leon/bugreport/listeners/ReportListener.java @@ -0,0 +1,21 @@ +package com.leon.bugreport.listeners; + +import com.leon.bugreport.BugReportManager; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.inventory.Inventory; + +public class ReportListener implements Listener { + @EventHandler + public void onReportCreated(ReportCreatedEvent event) { + for (Player player : Bukkit.getOnlinePlayers()) { + if (player.getOpenInventory().getTitle().startsWith(ChatColor.YELLOW + "Bug Report")) { + Inventory newGui = BugReportManager.generateBugReportGUI(player, false); + player.openInventory(newGui); + } + } + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 041ae27..0db7220 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -11,7 +11,7 @@ enableBugReportNotifications: true # Gold, Gray, Green, Light_Purple, Red, White, Yellow discordEmbedColor: Green discordEmbedTitle: New Bug Report -discordEmbedFooter: Bug Report v0.7.1 +discordEmbedFooter: Bug Report v0.7.2 discordEmbedThumbnail: https://www.spigotmc.org/data/resource_icons/110/110732.jpg discordEnableThumbnail: true discordEnableUserAuthor: true diff --git a/src/main/resources/languages.yml b/src/main/resources/languages.yml index a5f939b..e2095b7 100644 --- a/src/main/resources/languages.yml +++ b/src/main/resources/languages.yml @@ -18,6 +18,7 @@ languages: cancelled: "Cancelled" cancel: "Cancel" archive: "Archive" + unarchive: "Unarchive" delete: "Delete" otherSettings: "Other Settings" enableTitleMessage: "Enable Title Message" @@ -56,6 +57,7 @@ languages: cancelled: "Cancelado" cancel: "Cancelar" archive: "Archivo" + unarchive: "Desarchivar" delete: "Eliminar" otherSettings: "Otros Ajustes" enableTitleMessage: "Habilitar Mensaje de Título" @@ -94,6 +96,7 @@ languages: cancelled: "Annulé" cancel: "Annuler" archive: "Archiver" + unarchive: "Désarchiver" delete: "Supprimer" otherSettings: "Autres Paramètres" enableTitleMessage: "Activer le Message de Titre" @@ -132,6 +135,7 @@ languages: cancelled: "Abgebrochen" cancel: "Abbrechen" archive: "Archiv" + unarchive: "Archiv aufheben" delete: "Löschen" otherSettings: "Andere Einstellungen" enableTitleMessage: "Titel Nachricht aktivieren" @@ -170,6 +174,7 @@ languages: cancelled: "Annullato" cancel: "Annulla" archive: "Archivio" + unarchive: "Disarchivia" delete: "Elimina" otherSettings: "Altre Impostazioni" enableTitleMessage: "Abilita Messaggio Titolo" diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f0336c3..5adef53 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: BugReport -version: 0.7.1 +version: 0.7.2 main: com.leon.bugreport.BugReportPlugin api-version: 1.13 author: ItsLeon15