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 | |
| 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')
8 files changed, 66 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) diff --git a/platform-paper/src/main/resources/build-info.properties b/platform-paper/src/main/resources/build-info.properties index f093468..1f8dbc2 100644 --- a/platform-paper/src/main/resources/build-info.properties +++ b/platform-paper/src/main/resources/build-info.properties @@ -1,2 +1,3 @@ version=${version} commit=${gitCommitHash} +channel=${channel} diff --git a/platform-paper/src/main/resources/languages/en.yml b/platform-paper/src/main/resources/languages/en.yml index 04ca56a..4f3be82 100644 --- a/platform-paper/src/main/resources/languages/en.yml +++ b/platform-paper/src/main/resources/languages/en.yml @@ -56,6 +56,13 @@ status: ok: "OK" degraded: "Degraded" degradedHover: "Velocity integration is enabled but the connection failed. Use /lcv status for details." + nightlyWarning: "WARNING: This is a nightly build and may be unstable. Do not use in production." + nightlyHover: "Nightly builds are automatically generated from the latest code and have not been tested for stability." + nightlyReportIssue: "If you encounter any issues, please report them on GitHub Issues." + releaseChannel: "Release Channel" + channel: + stable: "Stable" + nightly: "Nightly" settings: availableValues: "Available settings value: {values}" @@ -200,6 +207,8 @@ general: newUpdateAvailable: "The new version of LunaticChat is now available! You can download it from GitHub or Modrinth." noPermission: "You do not have permission to execute this command." spyMessage: "You have been granted permission, so this message is displayed in spy mode." + nightlyWarning: "You are running a nightly build of LunaticChat. This build may be unstable or contain bugs." + nightlyReportIssue: "If you encounter any issues, please report them on GitHub Issues." toggle: off: "Disabled" diff --git a/platform-paper/src/main/resources/languages/ja.yml b/platform-paper/src/main/resources/languages/ja.yml index 74f2dfb..327144e 100644 --- a/platform-paper/src/main/resources/languages/ja.yml +++ b/platform-paper/src/main/resources/languages/ja.yml @@ -56,6 +56,13 @@ status: ok: "正常" degraded: "問題あり" degradedHover: "Velocity 連携が有効ですが接続に失敗しました。/lcv status を確認してください。" + nightlyWarning: "警告: これはナイトリービルドです。不安定な可能性があるため、本番環境では使用しないでください。" + nightlyHover: "ナイトリービルドは最新のコードから自動生成されており、安定性のテストは行われていません。" + nightlyReportIssue: "問題を発見した場合は、GitHub Issues で報告してください。" + releaseChannel: "リリースチャンネル" + channel: + stable: "安定版" + nightly: "ナイトリー" settings: availableValues: "使用可能な設定値: {values}" @@ -200,6 +207,8 @@ general: newUpdateAvailable: "LunaticChat の新しいバージョンが利用可能です。GitHubまたはModrinthからダウンロードできます" noPermission: "このコマンドを実行する権限がありません" spyMessage: "あなたに権限が付与されているため、このメッセージはスパイ状態で表示されています" + nightlyWarning: "LunaticChat のナイトリービルドを使用しています。このビルドは不安定であったり、バグが含まれている可能性があります。" + nightlyReportIssue: "問題を発見した場合は、GitHub Issues で報告してください。" toggle: on: "有効" |
