From c2e7f613c76d6b16c0c4bbc296f65e5023657dee Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 5 Oct 2025 12:13:00 +0800 Subject: [PATCH] :sparkles: Server start message, and the stop one --- .../solsynth/snConnect/SolarNetworkConnect.kt | 16 ++++++++++- .../snConnect/listeners/SnChatListener.kt | 28 +++++++++---------- src/main/resources/config.yml | 4 ++- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/main/kotlin/dev/solsynth/snConnect/SolarNetworkConnect.kt b/src/main/kotlin/dev/solsynth/snConnect/SolarNetworkConnect.kt index abb4c1c..123ff01 100644 --- a/src/main/kotlin/dev/solsynth/snConnect/SolarNetworkConnect.kt +++ b/src/main/kotlin/dev/solsynth/snConnect/SolarNetworkConnect.kt @@ -82,9 +82,12 @@ class SolarNetworkConnect : JavaPlugin() { messages = mapOf( "join" to "➡️ {player} joined the game.", + "joinFirst" to "➡️ {player} first time joined the game.", "quit" to "⬅️ {player} left the game.", "death" to "💀 {player} {message}", - "advancement" to "🎉 {player} unlocked advancement: {advancement}" + "advancement" to "🎉 {player} unlocked advancement: {advancement}", + "serverStart" to "🚀 Server started successfully", + "serverStop" to "⏹️ Server stopped" ) + (config.getConfigurationSection("messages")?.getValues(false) as? Map ?: emptyMap()) if (!setupNetwork()) { @@ -109,10 +112,21 @@ class SolarNetworkConnect : JavaPlugin() { config.getString("sn.endpoint") ) ); + + // Send server start message + destinationChatId?.let { chatId -> + messageService?.sendMessage(chatId, messages["serverStart"] ?: "🚀 Server started successfully") + } } override fun onDisable() { logger.info(String.format("Disabled Version %s", description.version)); + + // Send server stop message + destinationChatId?.let { chatId -> + messageService?.sendMessage(chatId, messages["serverStop"] ?: "⏹️ Server stopped") + } + sn?.disconnect() webSocketJob?.cancel() } diff --git a/src/main/kotlin/dev/solsynth/snConnect/listeners/SnChatListener.kt b/src/main/kotlin/dev/solsynth/snConnect/listeners/SnChatListener.kt index 8f01b77..1d52a4a 100644 --- a/src/main/kotlin/dev/solsynth/snConnect/listeners/SnChatListener.kt +++ b/src/main/kotlin/dev/solsynth/snConnect/listeners/SnChatListener.kt @@ -3,6 +3,7 @@ package dev.solsynth.snConnect.listeners import dev.solsynth.snConnect.services.SnMessageService import org.bukkit.entity.Player import org.bukkit.event.EventHandler +import org.bukkit.event.EventPriority import org.bukkit.event.Listener import org.bukkit.event.entity.PlayerDeathEvent import org.bukkit.event.player.AsyncPlayerChatEvent @@ -10,40 +11,39 @@ import org.bukkit.event.player.PlayerAdvancementDoneEvent import org.bukkit.event.player.PlayerJoinEvent import org.bukkit.event.player.PlayerQuitEvent -class SnChatListener(private val messageService: SnMessageService, private val destinationChatId: String, private val messages: Map) : Listener { +class SnChatListener( + private val messageService: SnMessageService, + private val destinationChatId: String, + private val messages: Map +) : Listener { - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) fun onPlayerChat(event: AsyncPlayerChatEvent) { val message = "${event.player.name}: ${event.message}" messageService.sendMessage(destinationChatId, message) } - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) fun onPlayerJoin(event: PlayerJoinEvent) { - val template = messages["join"] ?: "➡️ {player} joined the game." + val firstTime = event.player.hasPlayedBefore(); + val templateKey = if (!firstTime) "join" else "joinFirst"; + val template = messages[templateKey] + ?: if (!firstTime) "➡️ {player} joined the game." else "➡️ {player} first time joined the game." val message = template.replace("{player}", event.player.name) messageService.sendMessage(destinationChatId, message) } - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) fun onPlayerQuit(event: PlayerQuitEvent) { val template = messages["quit"] ?: "⬅️ {player} left the game." val message = template.replace("{player}", event.player.name) messageService.sendMessage(destinationChatId, message) } - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) fun onPlayerDeath(event: PlayerDeathEvent) { val template = messages["death"] ?: "💀 {player} {message}" val message = template.replace("{player}", event.entity.name).replace("{message}", event.deathMessage ?: "") messageService.sendMessage(destinationChatId, message) } - - @EventHandler - fun onPlayerAdvancement(event: PlayerAdvancementDoneEvent) { - val advancement = event.advancement.key.toString().substringAfter("minecraft:") - val template = messages["advancement"] ?: "🎉 {player} unlocked advancement: {advancement}" - val message = template.replace("{player}", event.player.name).replace("{advancement}", advancement) - messageService.sendMessage(destinationChatId, message) - } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 9ea53a3..807c89a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -8,6 +8,8 @@ chat: outgoing_room: 00000000-0000-0000-0000-00000000008b messages: join: "➡️ {player} joined the game." + joinFirst: "➡️ {player} first time joined the game." quit: "⬅️ {player} left the game." death: "💀 {player} {message}" - advancement: "🎉 {player} unlocked advancement: {advancement}" + serverStart: "🚀 Server started successfully" + serverStop: "⏹️ Server stopped"