Server start message, and the stop one

This commit is contained in:
2025-10-05 12:13:00 +08:00
parent bc23269778
commit c2e7f613c7
3 changed files with 32 additions and 16 deletions

View File

@@ -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<String, String> ?: 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()
}

View File

@@ -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<String, String>) : Listener {
class SnChatListener(
private val messageService: SnMessageService,
private val destinationChatId: String,
private val messages: Map<String, String>
) : 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)
}
}