diff options
| author | Sho Sakuma <me@m1sk9.dev> | 2026-03-26 06:21:37 +0900 |
|---|---|---|
| committer | Sho Sakuma <me@m1sk9.dev> | 2026-03-26 07:27:51 +0900 |
| commit | e0d1f7a9bc9122d02de829a28a51b9aec8611fa5 (patch) | |
| tree | 8f28eef5f5258bf01c0c4df70cc0df6831d73bc7 /platform-paper/src/main/kotlin | |
| parent | b0e13d04de476cd90eacf59c33e680593d8df0b8 (diff) | |
| download | LunaticChat-e0d1f7a9bc9122d02de829a28a51b9aec8611fa5.tar.gz LunaticChat-e0d1f7a9bc9122d02de829a28a51b9aec8611fa5.tar.bz2 LunaticChat-e0d1f7a9bc9122d02de829a28a51b9aec8611fa5.zip | |
feat: Add Night warning to Status Command
Diffstat (limited to 'platform-paper/src/main/kotlin')
5 files changed, 47 insertions, 1 deletions
diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/BuildInfo.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/BuildInfo.kt index 5609fe9..bac9107 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/BuildInfo.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/BuildInfo.kt @@ -5,6 +5,7 @@ import java.util.Properties object BuildInfo { val version: String val commitHash: String + val channel: String init { val props = Properties() @@ -13,7 +14,10 @@ object BuildInfo { } version = props.getProperty("version", "unknown") commitHash = props.getProperty("commit", "unknown") + channel = props.getProperty("channel", "stable") } + val isNightly: Boolean get() = channel == "nightly" + fun versionWithCommit(): String = "$version ($commitHash)" } diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lc/StatusCommand.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lc/StatusCommand.kt index 82dcd9f..3a4149c 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lc/StatusCommand.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lc/StatusCommand.kt @@ -101,6 +101,13 @@ class StatusCommand( sender.apply { sendMessage(versionLine) + + // Nightly warning + if (BuildInfo.isNightly) { + sendMessage(MessageFormatter.format(languageManager.getMessage("general.nightlyWarning")) + .color(NamedTextColor.YELLOW)) + } + sendMessage(healthLine) // --- Features --- @@ -121,6 +128,14 @@ class StatusCommand( ) sendMessage(getToggleLine(languageManager.getMessage("status.config.debug"), configuration.debug)) sendMessage(getToggleLine(languageManager.getMessage("status.config.checkForUpdates"), configuration.checkForUpdates)) + val channelLabel = languageManager.getMessage("status.channel.${BuildInfo.channel}") + val channelColor = if (BuildInfo.isNightly) NamedTextColor.YELLOW else NamedTextColor.GREEN + sendMessage( + Component + .text(" • ", NamedTextColor.GRAY) + .append(Component.text("${languageManager.getMessage("status.releaseChannel")}: ", NamedTextColor.GRAY)) + .append(Component.text(channelLabel, channelColor)), + ) sendMessage( Component .text(" • ", NamedTextColor.GRAY) diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lcv/VelocityStatusCommand.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lcv/VelocityStatusCommand.kt index 6ebb4f4..9e926fc 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lcv/VelocityStatusCommand.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lcv/VelocityStatusCommand.kt @@ -4,6 +4,7 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder import dev.m1sk9.lunaticChat.engine.command.CommandResult import dev.m1sk9.lunaticChat.engine.permission.LunaticChatPermissionNode import dev.m1sk9.lunaticChat.engine.protocol.ProtocolVersion +import dev.m1sk9.lunaticChat.paper.BuildInfo import dev.m1sk9.lunaticChat.paper.LunaticChat import dev.m1sk9.lunaticChat.paper.command.annotation.Command import dev.m1sk9.lunaticChat.paper.command.annotation.Permission @@ -15,6 +16,7 @@ import dev.m1sk9.lunaticChat.paper.velocity.VelocityConnectionManager import io.papermc.paper.command.brigadier.CommandSourceStack import io.papermc.paper.command.brigadier.Commands import net.kyori.adventure.text.Component +import net.kyori.adventure.text.event.ClickEvent import net.kyori.adventure.text.event.HoverEvent import net.kyori.adventure.text.format.NamedTextColor @@ -138,6 +140,13 @@ class VelocityStatusCommand( languageManager.getMessage("velocity.status.header"), ), ) + + // Nightly warning + if (BuildInfo.isNightly) { + sendMessage(MessageFormatter.format(languageManager.getMessage("general.nightlyWarning")) + .color(NamedTextColor.YELLOW)) + } + // Connection status details connectionStatus.forEach { line -> line?.let { sendMessage(it) } diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt index 19b284b..3bd2d4a 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt @@ -85,7 +85,7 @@ class PlayerChatListener( when { hasActiveChannel && !hasPrefix -> { // Channel chat: player is in a channel and no '!' prefix - if (channelManager != null && channelMessageHandler != null) { + if (channelMessageHandler != null) { event.isCancelled = true event.viewers().clear() event.message(Component.empty()) diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerPresenceListener.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerPresenceListener.kt index 56cbe59..86a8519 100644 --- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerPresenceListener.kt +++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerPresenceListener.kt @@ -1,13 +1,16 @@ package dev.m1sk9.lunaticChat.paper.listener import dev.m1sk9.lunaticChat.engine.permission.LunaticChatPermissionNode +import dev.m1sk9.lunaticChat.paper.BuildInfo import dev.m1sk9.lunaticChat.paper.LunaticChat import dev.m1sk9.lunaticChat.paper.chat.channel.ChannelManager import dev.m1sk9.lunaticChat.paper.common.hasAnyPermission import dev.m1sk9.lunaticChat.paper.i18n.LanguageManager import dev.m1sk9.lunaticChat.paper.i18n.MessageFormatter import dev.m1sk9.lunaticChat.paper.settings.PlayerSettingsManager +import net.kyori.adventure.text.Component import net.kyori.adventure.text.event.ClickEvent +import net.kyori.adventure.text.format.NamedTextColor import org.bukkit.event.EventHandler import org.bukkit.event.Listener import org.bukkit.event.player.PlayerJoinEvent @@ -39,6 +42,21 @@ class PlayerPresenceListener( }, 3, TimeUnit.SECONDS) } + // Nightly build warning + if (BuildInfo.isNightly) { + lunaticChat.server.asyncScheduler.runDelayed(lunaticChat, { _ -> + if (player.isOnline) { + player.sendMessage(MessageFormatter.format(languageManager.getMessage("general.nightlyWarning")) + .color(NamedTextColor.YELLOW)) + player.sendMessage( + MessageFormatter.format(languageManager.getMessage("general.nightlyReportIssue")) + .clickEvent(ClickEvent.openUrl("https://github.com/m1sk9/LunaticChat/issues")) + .color(NamedTextColor.YELLOW) + ) + } + }, 6, TimeUnit.SECONDS) + } + // Restore active channel from membership and notify (delayed to avoid being buried by other plugins' join messages) channelManager?.let { manager -> val context = manager.restorePlayerChannel(player.uniqueId) |
