From 1b31c125f9d7e3540dfcd22c09655b2795505cd5 Mon Sep 17 00:00:00 2001 From: rattatwinko Date: Sun, 27 Apr 2025 15:13:47 +0200 Subject: [PATCH] GUI && new system idk --- src/main/kotlin/org/server_info/mOTD/MOTD.kt | 169 ++++++++-- .../org/server_info/mOTD/MOTDCommand.kt | 158 +++++++++- .../org/server_info/mOTD/MOTDGuiHandler.kt | 294 ++++++++++++++++++ src/main/resources/config.yml | 25 +- src/main/resources/plugin.yml | 13 +- target/MOTD-1.0-SNAPSHOT.jar | Bin 1799020 -> 1816901 bytes target/classes/config.yml | 25 +- .../classes/org/server_info/MOTD/MOTD.class | Bin 6610 -> 11016 bytes .../org/server_info/MOTD/MOTDCommand.class | Bin 3431 -> 9861 bytes target/classes/plugin.yml | 13 +- target/original-MOTD-1.0-SNAPSHOT.jar | Bin 8639 -> 26456 bytes 11 files changed, 632 insertions(+), 65 deletions(-) create mode 100644 src/main/kotlin/org/server_info/mOTD/MOTDGuiHandler.kt diff --git a/src/main/kotlin/org/server_info/mOTD/MOTD.kt b/src/main/kotlin/org/server_info/mOTD/MOTD.kt index 828c770..7bf6170 100644 --- a/src/main/kotlin/org/server_info/mOTD/MOTD.kt +++ b/src/main/kotlin/org/server_info/mOTD/MOTD.kt @@ -2,10 +2,14 @@ package org.server_info.MOTD import org.bukkit.Bukkit import org.bukkit.plugin.java.JavaPlugin +import org.bukkit.configuration.ConfigurationSection class MOTD : JavaPlugin() { private var quotesTask: Int = -1 - private val quotesList = ArrayList() + private val quotesList = ArrayList() + + // Quote data class to store text and color + data class QuoteItem(val text: String, val color: String) override fun onEnable() { // Save default config if it doesn't exist @@ -14,9 +18,12 @@ class MOTD : JavaPlugin() { // Load quotes from config loadQuotes() - // Register command + // Register commands getCommand("motd")?.setExecutor(MOTDCommand(this)) + // Register GUI handler + server.pluginManager.registerEvents(MOTDGuiHandler(this), this) + // Schedule the MOTD update task startQuoteTask() @@ -35,19 +42,70 @@ class MOTD : JavaPlugin() { // Clear existing quotes quotesList.clear() - // Load quotes from config - val configQuotes = config.getStringList("quotes") - if (configQuotes.isNotEmpty()) { - quotesList.addAll(configQuotes) + // Check if we have the new quote format + if (config.contains("quotes") && config.isList("quotes")) { + // Check if it's the old format (simple string list) or new format (list of maps) + val quotesSection = config.getList("quotes") + if (quotesSection != null && quotesSection.isNotEmpty()) { + if (quotesSection[0] is String) { + // Old format - migrate + migrateOldQuotesFormat() + } else { + // New format - load quotes with colors + for (i in 0 until config.getList("quotes")!!.size) { + val quoteSection = config.getConfigurationSection("quotes.$i") + if (quoteSection != null) { + val text = quoteSection.getString("text") ?: continue + val color = quoteSection.getString("color") ?: "§f" // Default to white + quotesList.add(QuoteItem(text, color)) + } + } + } + } } else { - // Add default quotes if none found in config - quotesList.add("Add Quote in Config file (config.yml)") - - // Save default quotes to config - config.set("quotes", quotesList) - saveConfig() - logger.info("No quotes found in config, created default quotes list.") + // Create default quotes + createDefaultQuotes() } + + // If still empty after loading, create defaults + if (quotesList.isEmpty()) { + createDefaultQuotes() + } + } + + private fun migrateOldQuotesFormat() { + val oldQuotes = config.getStringList("quotes") + val newQuotesList = ArrayList>() + + for (quote in oldQuotes) { + newQuotesList.add(mapOf("text" to quote, "color" to "§f")) + } + + // Save in new format + config.set("quotes", newQuotesList) + saveConfig() + + // Load the quotes + for (quoteMap in newQuotesList) { + quotesList.add(QuoteItem(quoteMap["text"] ?: "", quoteMap["color"] ?: "§f")) + } + + logger.info("Migrated ${oldQuotes.size} quotes to the new format with colors.") + } + + private fun createDefaultQuotes() { + val defaultQuotes = listOf( + QuoteItem("Welcome to our Minecraft server!", "§e"), + QuoteItem("Have fun and be respectful to others!", "§a"), + QuoteItem("Check out our website for server rules.", "§b") + ) + + quotesList.addAll(defaultQuotes) + + // Save default quotes to config + saveQuotesToConfig() + + logger.info("No quotes found in config, created default quotes list.") } fun startQuoteTask() { @@ -77,10 +135,10 @@ class MOTD : JavaPlugin() { } // Get a random quote - val quote = getRandomQuote() + val quoteItem = getRandomQuote() - // Format the quote - val formattedQuote = formatMOTD(quote) + // Format the quote with its specific color + val formattedQuote = formatMOTD(quoteItem) // Set the server MOTD val server = Bukkit.getServer() @@ -89,22 +147,25 @@ class MOTD : JavaPlugin() { logger.info("MOTD updated: $formattedQuote") } - fun getRandomQuote(): String { + fun getRandomQuote(): QuoteItem { return if (quotesList.isNotEmpty()) { quotesList.random() } else { - "No quotes available" + QuoteItem("No quotes available", "§c") } } - private fun formatMOTD(quote: String): String { + private fun formatMOTD(quoteItem: QuoteItem): String { // Get prefix and suffix from config - val prefix = config.getString("motd-prefix", "§e§l") ?: "§e§l" + val prefix = config.getString("motd-prefix", "") ?: "" val suffix = config.getString("motd-suffix", "") ?: "" - // Trim and limit the quote length if it's too long (Minecraft has MOTD length limitations) + // Apply the quote's specific color + val coloredQuote = quoteItem.color + quoteItem.text + + // Trim and limit the quote length if it's too long val maxLength = config.getInt("max-motd-length", 50) - var trimmedQuote = quote + var trimmedQuote = coloredQuote if (trimmedQuote.length > maxLength) { trimmedQuote = trimmedQuote.substring(0, maxLength - 3) + "..." } @@ -116,4 +177,68 @@ class MOTD : JavaPlugin() { reloadConfig() loadQuotes() } + + fun getCurrentQuotes(): List { + return quotesList.toList() + } + + fun addQuote(text: String, color: String): Boolean { + if (text.isBlank()) return false + + // Validate color code + val validColor = if (color.startsWith("§") && color.length == 2) { + color + } else { + "§f" // Default to white if invalid + } + + // Add to internal list + quotesList.add(QuoteItem(text, validColor)) + + // Save to config + saveQuotesToConfig() + + return true + } + + fun removeQuote(index: Int): Boolean { + if (index < 0 || index >= quotesList.size) return false + + quotesList.removeAt(index) + saveQuotesToConfig() + + return true + } + + fun editQuote(index: Int, text: String, color: String): Boolean { + if (index < 0 || index >= quotesList.size || text.isBlank()) return false + + // Validate color code + val validColor = if (color.startsWith("§") && color.length == 2) { + color + } else { + "§f" // Default to white if invalid + } + + quotesList[index] = QuoteItem(text, validColor) + saveQuotesToConfig() + + return true + } + + private fun saveQuotesToConfig() { + // Convert quotes to format that can be saved in config + val quotesToSave = ArrayList>() + + for (quote in quotesList) { + quotesToSave.add(mapOf( + "text" to quote.text, + "color" to quote.color + )) + } + + // Save to config + config.set("quotes", quotesToSave) + saveConfig() + } } \ No newline at end of file diff --git a/src/main/kotlin/org/server_info/mOTD/MOTDCommand.kt b/src/main/kotlin/org/server_info/mOTD/MOTDCommand.kt index 0bc4040..4ffb2d0 100644 --- a/src/main/kotlin/org/server_info/mOTD/MOTDCommand.kt +++ b/src/main/kotlin/org/server_info/mOTD/MOTDCommand.kt @@ -4,15 +4,14 @@ import org.bukkit.ChatColor import org.bukkit.command.Command import org.bukkit.command.CommandExecutor import org.bukkit.command.CommandSender +import org.bukkit.entity.Player +@Suppress("DEPRECATION") class MOTDCommand(private val plugin: MOTD) : CommandExecutor { - override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array): Boolean { if (args.isEmpty()) { // Display help - sender.sendMessage("${ChatColor.GOLD}==== MOTD Quote Plugin ====") - sender.sendMessage("${ChatColor.YELLOW}/motd refresh ${ChatColor.WHITE}- Set a new random quote") - sender.sendMessage("${ChatColor.YELLOW}/motd reload ${ChatColor.WHITE}- Reload quotes from config") + displayHelp(sender) return true } @@ -28,6 +27,7 @@ class MOTDCommand(private val plugin: MOTD) : CommandExecutor { sender.sendMessage("${ChatColor.GREEN}MOTD has been updated!") return true } + "reload" -> { if (!sender.hasPermission("motd.reload")) { sender.sendMessage("${ChatColor.RED}You don't have permission to use this command.") @@ -39,10 +39,158 @@ class MOTDCommand(private val plugin: MOTD) : CommandExecutor { sender.sendMessage("${ChatColor.GREEN}MOTD quotes reloaded from config!") return true } + + "list" -> { + if (!sender.hasPermission("motd.list")) { + sender.sendMessage("${ChatColor.RED}You don't have permission to use this command.") + return true + } + + listQuotes(sender) + return true + } + + "add" -> { + if (!sender.hasPermission("motd.edit")) { + sender.sendMessage("${ChatColor.RED}You don't have permission to use this command.") + return true + } + + if (args.size < 2) { + sender.sendMessage("${ChatColor.RED}Usage: /motd add [color]") + return true + } + + // Extract text from arguments (can contain spaces) + val text = args.slice(1 until if (args.size > 2 && args.last().matches(Regex("&[0-9a-fA-Fk-oK-OrR]"))) args.size - 1 else args.size).joinToString(" ") + + // Extract color if provided + val colorCode = if (args.size > 2 && args.last().matches(Regex("&[0-9a-fA-Fk-oK-OrR]"))) { + args.last().replace('&', '§') + } else { + "§f" // Default to white + } + + if (plugin.addQuote(text, colorCode)) { + sender.sendMessage("${ChatColor.GREEN}Added new quote: ${colorCode}$text") + } else { + sender.sendMessage("${ChatColor.RED}Failed to add quote. Make sure the text is not empty.") + } + + return true + } + + "remove" -> { + if (!sender.hasPermission("motd.edit")) { + sender.sendMessage("${ChatColor.RED}You don't have permission to use this command.") + return true + } + + if (args.size < 2 || args[1].toIntOrNull() == null) { + sender.sendMessage("${ChatColor.RED}Usage: /motd remove ") + sender.sendMessage("${ChatColor.YELLOW}Use /motd list to view quote indices.") + return true + } + + val index = args[1].toInt() - 1 // Convert to 0-based index + + if (plugin.removeQuote(index)) { + sender.sendMessage("${ChatColor.GREEN}Successfully removed quote #${index + 1}.") + } else { + sender.sendMessage("${ChatColor.RED}Invalid quote index. Use /motd list to view valid indices.") + } + + return true + } + + "edit" -> { + if (!sender.hasPermission("motd.edit")) { + sender.sendMessage("${ChatColor.RED}You don't have permission to use this command.") + return true + } + + if (args.size < 3 || args[1].toIntOrNull() == null) { + sender.sendMessage("${ChatColor.RED}Usage: /motd edit [color]") + sender.sendMessage("${ChatColor.YELLOW}Use /motd list to view quote indices.") + return true + } + + val index = args[1].toInt() - 1 // Convert to 0-based index + + // Extract text from arguments (can contain spaces) + val text = args.slice(2 until if (args.size > 3 && args.last().matches(Regex("&[0-9a-fA-Fk-oK-OrR]"))) args.size - 1 else args.size).joinToString(" ") + + // Extract color if provided + val colorCode = if (args.size > 3 && args.last().matches(Regex("&[0-9a-fA-Fk-oK-OrR]"))) { + args.last().replace('&', '§') + } else { + // Keep existing color if not specified + val quotes = plugin.getCurrentQuotes() + if (index >= 0 && index < quotes.size) { + quotes[index].color + } else { + "§f" // Default to white + } + } + + if (plugin.editQuote(index, text, colorCode)) { + sender.sendMessage("${ChatColor.GREEN}Successfully edited quote #${index + 1}.") + } else { + sender.sendMessage("${ChatColor.RED}Failed to edit quote. Check the index and make sure the text is not empty.") + } + + return true + } + + "gui" -> { + if (!sender.hasPermission("motd.gui")) { + sender.sendMessage("${ChatColor.RED}You don't have permission to use this command.") + return true + } + + if (sender !is Player) { + sender.sendMessage("${ChatColor.RED}This command can only be used by players.") + return true + } + + // Open the GUI for the player + MOTDGuiHandler(plugin).openQuotesGui(sender) + return true + } + else -> { - sender.sendMessage("${ChatColor.RED}Unknown command. Use /motd for help.") + displayHelp(sender) return true } } } + + private fun displayHelp(sender: CommandSender) { + sender.sendMessage("${ChatColor.GOLD}==== MOTD Quote Plugin ====") + sender.sendMessage("${ChatColor.YELLOW}/motd refresh ${ChatColor.WHITE}- Set a new random quote") + sender.sendMessage("${ChatColor.YELLOW}/motd reload ${ChatColor.WHITE}- Reload quotes from config") + sender.sendMessage("${ChatColor.YELLOW}/motd list ${ChatColor.WHITE}- List all available quotes") + sender.sendMessage("${ChatColor.YELLOW}/motd add [color] ${ChatColor.WHITE}- Add a new quote") + sender.sendMessage("${ChatColor.YELLOW}/motd remove ${ChatColor.WHITE}- Remove a quote") + sender.sendMessage("${ChatColor.YELLOW}/motd edit [color] ${ChatColor.WHITE}- Edit a quote") + sender.sendMessage("${ChatColor.YELLOW}/motd gui ${ChatColor.WHITE}- Open quote management GUI") + sender.sendMessage("${ChatColor.AQUA}Colors: &0-&9, &a-&f, &k-&o, &r (Example: &e for yellow)") + } + + private fun listQuotes(sender: CommandSender) { + val quotes = plugin.getCurrentQuotes() + + if (quotes.isEmpty()) { + sender.sendMessage("${ChatColor.YELLOW}No quotes are currently configured.") + return + } + + sender.sendMessage("${ChatColor.GOLD}==== MOTD Quotes (${quotes.size}) ====") + + // List all quotes with their indices + quotes.forEachIndexed { index, quoteItem -> + // Show the quote with its actual color + sender.sendMessage("${ChatColor.GREEN}${index + 1}. ${quoteItem.color}${quoteItem.text}${ChatColor.GRAY} [${quoteItem.color.replace('§', '&')}]") + } + } } \ No newline at end of file diff --git a/src/main/kotlin/org/server_info/mOTD/MOTDGuiHandler.kt b/src/main/kotlin/org/server_info/mOTD/MOTDGuiHandler.kt new file mode 100644 index 0000000..de54bc8 --- /dev/null +++ b/src/main/kotlin/org/server_info/mOTD/MOTDGuiHandler.kt @@ -0,0 +1,294 @@ +package org.server_info.MOTD + +import org.bukkit.Bukkit +import org.bukkit.ChatColor +import org.bukkit.Material +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.event.inventory.InventoryClickEvent +import org.bukkit.event.inventory.InventoryCloseEvent +import org.bukkit.inventory.Inventory +import org.bukkit.inventory.ItemStack +import org.bukkit.inventory.meta.ItemMeta +import java.util.* +import org.bukkit.conversations.* +import org.bukkit.entity.Player + +class MOTDGuiHandler(private val plugin: MOTD) : Listener { + + private val editingSessions = HashMap() + + data class EditSession( + val index: Int, + val action: String // "edit" or "add" + ) + + // Main quotes management GUI + fun openQuotesGui(player: Player) { + val quotes = plugin.getCurrentQuotes() + val inventorySize = ((quotes.size / 9) + 2) * 9 // Round up to nearest multiple of 9, plus action buttons row + + val inventory = Bukkit.createInventory(null, inventorySize, "MOTD Quotes Manager") + + // Add quotes + quotes.forEachIndexed { index, quoteItem -> + val item = ItemStack(Material.PAPER) + val meta = item.itemMeta + + if (meta != null) { + meta.setDisplayName("${quoteItem.color}Quote #${index + 1}") + + val lore = ArrayList() + lore.add("${ChatColor.WHITE}${quoteItem.text}") + lore.add("${ChatColor.GRAY}Color: ${quoteItem.color.replace('§', '&')}") + lore.add("") + lore.add("${ChatColor.YELLOW}Click to edit") + lore.add("${ChatColor.RED}Shift-click to delete") + + meta.lore = lore + item.itemMeta = meta + } + + inventory.setItem(index, item) + } + + // Add action buttons at the bottom + val addButton = ItemStack(Material.EMERALD_BLOCK) + val addMeta = addButton.itemMeta + if (addMeta != null) { + addMeta.setDisplayName("${ChatColor.GREEN}Add New Quote") + addButton.itemMeta = addMeta + } + + val refreshButton = ItemStack(Material.GOLD_BLOCK) + val refreshMeta = refreshButton.itemMeta + if (refreshMeta != null) { + refreshMeta.setDisplayName("${ChatColor.YELLOW}Refresh MOTD Now") + refreshButton.itemMeta = refreshMeta + } + + val exitButton = ItemStack(Material.REDSTONE_BLOCK) + val exitMeta = exitButton.itemMeta + if (exitMeta != null) { + exitMeta.setDisplayName("${ChatColor.RED}Close") + exitButton.itemMeta = exitMeta + } + + // Set buttons in the last row + val lastRowStart = inventorySize - 9 + inventory.setItem(lastRowStart + 2, addButton) + inventory.setItem(lastRowStart + 4, refreshButton) + inventory.setItem(lastRowStart + 6, exitButton) + + player.openInventory(inventory) + } + + // GUI for selecting a color + fun openColorSelectorGui(player: Player, index: Int, action: String) { + val inventory = Bukkit.createInventory(null, 27, "Select Quote Color") + + // Store the user's editing session + editingSessions[player.uniqueId] = EditSession(index, action) + + // Add color options + addColorOption(inventory, 0, Material.WHITE_WOOL, "White", "§f") + addColorOption(inventory, 1, Material.ORANGE_WOOL, "Gold", "§6") + addColorOption(inventory, 2, Material.MAGENTA_WOOL, "Light Purple", "§d") + addColorOption(inventory, 3, Material.LIGHT_BLUE_WOOL, "Aqua", "§b") + addColorOption(inventory, 4, Material.YELLOW_WOOL, "Yellow", "§e") + addColorOption(inventory, 5, Material.LIME_WOOL, "Green", "§a") + addColorOption(inventory, 6, Material.PINK_WOOL, "Light Red", "§c") + addColorOption(inventory, 7, Material.GRAY_WOOL, "Dark Gray", "§8") + addColorOption(inventory, 8, Material.LIGHT_GRAY_WOOL, "Gray", "§7") + addColorOption(inventory, 9, Material.CYAN_WOOL, "Dark Aqua", "§3") + addColorOption(inventory, 10, Material.PURPLE_WOOL, "Dark Purple", "§5") + addColorOption(inventory, 11, Material.BLUE_WOOL, "Blue", "§9") + addColorOption(inventory, 12, Material.BROWN_WOOL, "Brown", "§6") // Using gold as closest to brown + addColorOption(inventory, 13, Material.GREEN_WOOL, "Dark Green", "§2") + addColorOption(inventory, 14, Material.RED_WOOL, "Dark Red", "§4") + addColorOption(inventory, 15, Material.BLACK_WOOL, "Black", "§0") + + // Add formatting options + addColorOption(inventory, 18, Material.IRON_INGOT, "Bold", "§l") + addColorOption(inventory, 19, Material.GOLD_INGOT, "Italic", "§o") + addColorOption(inventory, 20, Material.DIAMOND, "Underline", "§n") + addColorOption(inventory, 21, Material.EMERALD, "Strikethrough", "§m") + addColorOption(inventory, 22, Material.REDSTONE, "Obfuscated", "§k") + addColorOption(inventory, 23, Material.QUARTZ, "Reset", "§r") + + // Cancel button + val cancelButton = ItemStack(Material.BARRIER) + val cancelMeta = cancelButton.itemMeta + if (cancelMeta != null) { + cancelMeta.setDisplayName("${ChatColor.RED}Cancel") + cancelButton.itemMeta = cancelMeta + } + inventory.setItem(26, cancelButton) + + player.openInventory(inventory) + } + + private fun addColorOption(inventory: Inventory, slot: Int, material: Material, name: String, colorCode: String) { + val item = ItemStack(material) + val meta = item.itemMeta + + if (meta != null) { + meta.setDisplayName("${colorCode}$name") + + val lore = ArrayList() + lore.add("${ChatColor.GRAY}Color code: ${colorCode.replace('§', '&')}") + lore.add("${ChatColor.YELLOW}Click to select") + + meta.lore = lore + item.itemMeta = meta + } + + inventory.setItem(slot, item) + } + + @EventHandler + fun onInventoryClick(event: InventoryClickEvent) { + val player = event.whoClicked as? Player ?: return + val clickedInventory = event.clickedInventory ?: return + val title = event.view.title + + // Prevent moving items + if (title == "MOTD Quotes Manager" || title == "Select Quote Color") { + event.isCancelled = true + } + + when (title) { + "MOTD Quotes Manager" -> { + handleMainGuiClick(event, player) + } + "Select Quote Color" -> { + handleColorSelectorClick(event, player) + } + } + } + + private fun handleMainGuiClick(event: InventoryClickEvent, player: Player) { + val item = event.currentItem ?: return + + if (item.type == Material.PAPER) { + // Clicked on a quote + val slotIndex = event.slot + + if (event.isShiftClick) { + // Delete the quote + if (plugin.removeQuote(slotIndex)) { + player.sendMessage("${ChatColor.GREEN}Quote #${slotIndex + 1} has been deleted.") + openQuotesGui(player) // Refresh the GUI + } + } else { + // Edit the quote + openColorSelectorGui(player, slotIndex, "edit") + } + } else if (item.type == Material.EMERALD_BLOCK) { + // Add new quote + openColorSelectorGui(player, -1, "add") + } else if (item.type == Material.GOLD_BLOCK) { + // Refresh MOTD + plugin.updateServerMOTD() + player.sendMessage("${ChatColor.GREEN}MOTD has been refreshed!") + } else if (item.type == Material.REDSTONE_BLOCK) { + // Close GUI + player.closeInventory() + } + } + + private fun handleColorSelectorClick(event: InventoryClickEvent, player: Player) { + val item = event.currentItem ?: return + + if (item.type == Material.BARRIER) { + // Cancel and go back + openQuotesGui(player) + editingSessions.remove(player.uniqueId) + return + } + + // Get the color code from the clicked item + val meta = item.itemMeta ?: return + val displayName = meta.displayName + + if (displayName.isNotEmpty()) { + val colorCode = "§" + displayName[0].toString().replace("§", "") + val session = editingSessions[player.uniqueId] ?: return + + player.closeInventory() + + // Start conversation for text input + startTextInputConversation(player, session.index, session.action, colorCode) + } + } + + private fun startTextInputConversation(player: Player, index: Int, action: String, colorCode: String) { + val factory = ConversationFactory(plugin) + .withModality(true) + .withPrefix { "${ChatColor.GOLD}[MOTD] ${ChatColor.RESET}" } + .withFirstPrompt(object : StringPrompt() { + override fun getPromptText(context: ConversationContext): String { + return if (action == "add") { + "${ChatColor.YELLOW}Enter the text for your new quote:" + } else { + "${ChatColor.YELLOW}Enter the new text for quote #${index + 1}:" + } + } + + override fun acceptInput(context: ConversationContext, input: String?): Prompt? { + if (input == null || input.isBlank()) { + player.sendMessage("${ChatColor.RED}Quote text cannot be empty. Operation cancelled.") + return Prompt.END_OF_CONVERSATION + } + + if (action == "add") { + if (plugin.addQuote(input, colorCode)) { + player.sendMessage("${ChatColor.GREEN}New quote added: ${colorCode}$input") + } else { + player.sendMessage("${ChatColor.RED}Failed to add quote.") + } + } else { + if (plugin.editQuote(index, input, colorCode)) { + player.sendMessage("${ChatColor.GREEN}Quote #${index + 1} has been updated: ${colorCode}$input") + } else { + player.sendMessage("${ChatColor.RED}Failed to update quote.") + } + } + + // Schedule opening the GUI on the next tick + Bukkit.getScheduler().runTask(plugin, Runnable { + openQuotesGui(player) + }) + + return Prompt.END_OF_CONVERSATION + } + }) + .withEscapeSequence("cancel") + .withLocalEcho(false) + .thatExcludesNonPlayersWithMessage("This command can only be run by a player") + + val conversation = factory.buildConversation(player) + conversation.begin() + } + + @EventHandler + fun onInventoryClose(event: InventoryCloseEvent) { + val player = event.player as? Player ?: return + + // If the inventory being closed is the color selector but not via clicking a color option, + // remove the editing session + if (event.view.title == "Select Quote Color") { + // This check is a bit simplistic; in a production plugin you'd want to be more careful + // to differentiate between programmatic closes (which should keep the session) and + // user-initiated closes (which should clear it) + if (!editingSessions.containsKey(player.uniqueId)) { + Bukkit.getScheduler().runTaskLater(plugin, Runnable { + if (player.openInventory.title != "MOTD Quotes Manager") + if (player.openInventory.title != "MOTD Quotes Manager") { + editingSessions.remove(player.uniqueId) + } + }, 1) + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 96908dc..ffe119c 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,21 +1,12 @@ -# MOTD Quote Plugin Configuration - -# How often to update the MOTD (in minutes) +// config.yml update-interval-minutes: 60 - -# Maximum length for MOTD quotes max-motd-length: 50 - -# Style settings -motd-prefix: "§e§l" # Gold color and bold +motd-prefix: "" motd-suffix: "" - -# Debug mode (shows more console output) -debug: false - -# List of quotes to use for MOTD quotes: - - "Wie heißt der Workshop? Rassismus ohne Schule" - - "What da fäck is hier passiert bitte sehr?" - - "Digga meine Yeezys!" - - "Da Sessel kommt auffi, nd owi." + - text: "Welcome to our Minecraft server!" + color: "§e" + - text: "Have fun and be respectful to others!" + color: "§a" + - text: "Check out our website for server rules." + color: "§b" \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 0e80500..1253447 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -2,12 +2,12 @@ name: MOTD version: 1.0-SNAPSHOT main: org.server_info.MOTD.MOTD api-version: 1.19 -description: Sets the server MOTD to random quotes from config +description: Sets the server MOTD to random quotes from config with GUI management author: YourName commands: motd: description: Control the MOTD quote plugin - usage: /motd [refresh|reload] + usage: /motd [refresh|reload|list|add|remove|edit|gui] permission: motd.use aliases: [quotemotd] permissions: @@ -19,4 +19,13 @@ permissions: default: op motd.reload: description: Allows reloading the plugin configuration + default: op + motd.list: + description: Allows listing all available quotes + default: op + motd.edit: + description: Allows adding, removing, and editing quotes + default: op + motd.gui: + description: Allows using the quote management GUI default: op \ No newline at end of file diff --git a/target/MOTD-1.0-SNAPSHOT.jar b/target/MOTD-1.0-SNAPSHOT.jar index 5f67735f2063fdf6fd430fef441c47a7b69391a4..8a271fa013df206fa916d9309b2bf084c9c37e1e 100644 GIT binary patch delta 41716 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 V;k&~Mj0MKfb0Motb`5_t@)xei->3ip delta 23771 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�(&^6xQRAaf9Kc?Aym1FjwX8o!0_n<4gDoNGU~ zjfz_MdG+rF{%H&UjDOz3FY-&<2q&_?;Fq`20*hu?{7Z{m`1y{7gGzeWqJV`TT=L}> z|H`6D)q@@1EQ@Zj=!iuhv>5-|Ext%@@nsg@Ve#Fn{cSaPzeNvNeAME{EPmYL*%rTI u@vHncG+T~(xD{G=sLwmq=W+f3V!e(RbDdoCD)o7(`uv#s{F3^-^?v~;$7}fj delta 3384 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 WFWbvxyHU1{vTc^_PT6+IHu+m&E;@n$ delta 1452 zcmZ`(TTC2f6#o9%VP;vj>@sB+mYV~mTo%}^2yJPrZKYd^g(5d8Ma5}%xGuY}vw)ZC zLKSbVivDVC)v9=X@TI7=T@!6cOiZ6NjfwHiC-q4a6XSz1o|)P3U}7?J&iT*fJO8=N ztaSfevgO7p1UR6Ml ze=XLtM*f@lxi^Hc3r*PJk#H+Ru#V4)em+{@%M0N)g}_@(=S( zwB=zJ_Ap4pk*=dAK0r4B?Ohh6q1h5R%cM zKp=Tp@Ugr2d7+}B3*EUmien7kDQ!Uu$F%r(xIdMgjE~E>o8J`LD*DjxLN5l$C6(w( zEb7U2&Cu&Yp-{aO_wb-YRgc5t!WIlO$Vq)HsT&hcj4(L0q#l`@*J4~^mAuU5EI;AK zeYoHB9c6IOBvR4PW`M>^#bEI%M9o5V21j4ykQ?K6O%r@oY>}oEIMBiyrER%03PiJ2 z0h&S}En}9hH$NNIQhL9hT+oxeyfuV?*KI(*Ks3&zj zuG-PjN+%vvkYi#?Nj;X(qE0-*ke9uzt$37fZyS5(6DhsMa3gJ}T4KmIQd%-)83r_C z+Kn@|>2dCoYui>7NGAApHW;6dCl=%Csl?2T7LSJ1K|@!=W*&7ckyI!2*lfs&rxnPi ze-;0hmC{bgeAHXX|M2+ulGo2K`}T@!*O!|4@4j6;?C&k=%l8T;!VbsrjWgoLnk2Zc zFKv7z74R?oyFK}4!R^^>(4zs{I`;(Hi*booP@;{=B`y$`;UxYR zp9-i)@pjfIk@6jq{bT~XC`N#|DY@XIpf!?ZmPKJGL8*xWu$weMiMW%0AE-&UHmsvQ zgI3@g_6nfW9qTxl!QuZZI5 zxQML;HJL$dGt7j}Adx)>KSj|Mq|&5a%;4coFM>L4LG5c$9{WEiJ9yb?I zpWQrDBOG{_s0Z@41FYq5?3B@4U0qJSOaoKYn*j1qO>ZrI7Olvq>OB~uRt{q;Ch46< zA+4IH&Z z9f6}0FIvw_;GK9GuXN&7oF4%*@ER_RKrs+7aM6IvfX{$zz-gew!0QIe44gGkVc?tr q)zVa1wA8>G_<+(h)2cO7ss_}Xtlc^svFNl#;}(6$qEA}%nSTMQpDhOf diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml index 0e80500..1253447 100644 --- a/target/classes/plugin.yml +++ b/target/classes/plugin.yml @@ -2,12 +2,12 @@ name: MOTD version: 1.0-SNAPSHOT main: org.server_info.MOTD.MOTD api-version: 1.19 -description: Sets the server MOTD to random quotes from config +description: Sets the server MOTD to random quotes from config with GUI management author: YourName commands: motd: description: Control the MOTD quote plugin - usage: /motd [refresh|reload] + usage: /motd [refresh|reload|list|add|remove|edit|gui] permission: motd.use aliases: [quotemotd] permissions: @@ -19,4 +19,13 @@ permissions: default: op motd.reload: description: Allows reloading the plugin configuration + default: op + motd.list: + description: Allows listing all available quotes + default: op + motd.edit: + description: Allows adding, removing, and editing quotes + default: op + motd.gui: + description: Allows using the quote management GUI default: op \ No newline at end of file diff --git a/target/original-MOTD-1.0-SNAPSHOT.jar b/target/original-MOTD-1.0-SNAPSHOT.jar index 85041dc06d46f906fb9dce2f0f2290c5f729a75c..82ae9935b484c69eb22a868aaa01cc69f9d0a813 100644 GIT binary patch delta 24085 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