summaryrefslogtreecommitdiff
path: root/platform-paper/src
diff options
context:
space:
mode:
authorSho Sakuma <me@m1sk9.dev>2026-03-26 06:21:37 +0900
committerSho Sakuma <me@m1sk9.dev>2026-03-26 07:27:51 +0900
commite0d1f7a9bc9122d02de829a28a51b9aec8611fa5 (patch)
tree8f28eef5f5258bf01c0c4df70cc0df6831d73bc7 /platform-paper/src
parentb0e13d04de476cd90eacf59c33e680593d8df0b8 (diff)
downloadLunaticChat-e0d1f7a9bc9122d02de829a28a51b9aec8611fa5.tar.gz
LunaticChat-e0d1f7a9bc9122d02de829a28a51b9aec8611fa5.tar.bz2
LunaticChat-e0d1f7a9bc9122d02de829a28a51b9aec8611fa5.zip
feat: Add Night warning to Status Command
Diffstat (limited to 'platform-paper/src')
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/BuildInfo.kt4
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lc/StatusCommand.kt15
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/impl/lcv/VelocityStatusCommand.kt9
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt2
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerPresenceListener.kt18
-rw-r--r--platform-paper/src/main/resources/build-info.properties1
-rw-r--r--platform-paper/src/main/resources/languages/en.yml9
-rw-r--r--platform-paper/src/main/resources/languages/ja.yml9
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: "有効"