From 842bf9df75a5e23ab31bdfb5717b76449264e999 Mon Sep 17 00:00:00 2001 From: Sho Sakuma Date: Sun, 5 Apr 2026 00:02:58 +0900 Subject: docs: add download page and rename docs to website - Add download page with GitHub API data loader for latest releases - Add DownloadCard Vue component with JA/EN i18n support - Include Modrinth and CI build links - Rename docs/ directory to website/ Co-Authored-By: Claude --- website/src/assets/brand/LICENSE | 21 ++++ website/src/assets/brand/folia.svg | 3 + website/src/assets/brand/paper.svg | 3 + website/src/assets/brand/velocity.svg | 12 +++ website/src/assets/features/channel-chat.png | Bin 0 -> 1063857 bytes website/src/assets/features/cross-chat.png | Bin 0 -> 2146241 bytes website/src/assets/features/dm.png | Bin 0 -> 964457 bytes website/src/assets/features/romaji.png | Bin 0 -> 1023051 bytes website/src/assets/icon.png | Bin 0 -> 122601 bytes website/src/download.md | 6 ++ website/src/index.md | 153 +++++++++++++++++++++++++++ 11 files changed, 198 insertions(+) create mode 100644 website/src/assets/brand/LICENSE create mode 100644 website/src/assets/brand/folia.svg create mode 100644 website/src/assets/brand/paper.svg create mode 100644 website/src/assets/brand/velocity.svg create mode 100644 website/src/assets/features/channel-chat.png create mode 100644 website/src/assets/features/cross-chat.png create mode 100644 website/src/assets/features/dm.png create mode 100644 website/src/assets/features/romaji.png create mode 100644 website/src/assets/icon.png create mode 100644 website/src/download.md create mode 100644 website/src/index.md (limited to 'website/src') diff --git a/website/src/assets/brand/LICENSE b/website/src/assets/brand/LICENSE new file mode 100644 index 0000000..bff9945 --- /dev/null +++ b/website/src/assets/brand/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 PaperMC Team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/website/src/assets/brand/folia.svg b/website/src/assets/brand/folia.svg new file mode 100644 index 0000000..59a821b --- /dev/null +++ b/website/src/assets/brand/folia.svg @@ -0,0 +1,3 @@ + + + diff --git a/website/src/assets/brand/paper.svg b/website/src/assets/brand/paper.svg new file mode 100644 index 0000000..126e636 --- /dev/null +++ b/website/src/assets/brand/paper.svg @@ -0,0 +1,3 @@ + + + diff --git a/website/src/assets/brand/velocity.svg b/website/src/assets/brand/velocity.svg new file mode 100644 index 0000000..ee24f2b --- /dev/null +++ b/website/src/assets/brand/velocity.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/website/src/assets/features/channel-chat.png b/website/src/assets/features/channel-chat.png new file mode 100644 index 0000000..4f9dab2 Binary files /dev/null and b/website/src/assets/features/channel-chat.png differ diff --git a/website/src/assets/features/cross-chat.png b/website/src/assets/features/cross-chat.png new file mode 100644 index 0000000..34857e2 Binary files /dev/null and b/website/src/assets/features/cross-chat.png differ diff --git a/website/src/assets/features/dm.png b/website/src/assets/features/dm.png new file mode 100644 index 0000000..bcc429d Binary files /dev/null and b/website/src/assets/features/dm.png differ diff --git a/website/src/assets/features/romaji.png b/website/src/assets/features/romaji.png new file mode 100644 index 0000000..fd1dd9b Binary files /dev/null and b/website/src/assets/features/romaji.png differ diff --git a/website/src/assets/icon.png b/website/src/assets/icon.png new file mode 100644 index 0000000..064445a Binary files /dev/null and b/website/src/assets/icon.png differ diff --git a/website/src/download.md b/website/src/download.md new file mode 100644 index 0000000..ef1167b --- /dev/null +++ b/website/src/download.md @@ -0,0 +1,6 @@ +--- +layout: page +title: ダウンロード +--- + + diff --git a/website/src/index.md b/website/src/index.md new file mode 100644 index 0000000..2336b16 --- /dev/null +++ b/website/src/index.md @@ -0,0 +1,153 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: 'LunaticChat' + tagline: A next-generation chat plugin for Paper, Folia and Velocity. + actions: + - theme: brand + text: ダウンロード + link: /download + - theme: brand + text: ドキュメント + link: /docs/getting-started + - theme: alt + text: GitHub + link: https://github.com/m1sk9/LunaticChat + +features: + - title: チャンネルチャット + details: チャンネルを作成・管理し、特定のプレイヤー間でグループチャットが可能。プライベートチャンネルやモデレーション機能も搭載 + icon: ☎️ + - title: ダイレクトメッセージ + details: /tell や /msg コマンドで 1対1 のチャットが可能。/reply で直前の相手に素早く返信 + icon: ✉️ + - title: ローマ字変換 + details: ローマ字で入力したメッセージを自動的に日本語に変換。キャッシュにより高速に動作 + icon: 🌍 + - title: Velocity サーバー間連携 + details: Velocity プロキシを経由して複数サーバー間でグローバルチャットをリレー。どのサーバーにいても会話に参加可能 + icon: 🔗 + - title: 柔軟な設定 + details: YAML ベースの設定ファイルで機能の有効/無効を切り替え。サーバーの用途に合わせてカスタマイズ可能 + icon: ⚙️ + - title: 最新バージョン対応 + details: 外部プラグインへの依存を最小限に抑え、常に最新の Minecraft バージョンに対応 + icon: ⛏️ +--- + +
+ + +
+
+

チャンネルチャットで会話を整理

+

+ サーバー内にチャンネルを作成して、トピックやグループごとに会話を分離できます。 + 全体チャットに流れることなく、必要なメンバーだけでコミュニケーションが可能です。 +

+
    +
  • パスワード付きのプライベートチャンネルを作成
  • +
  • チャンネルごとのモデレーション機能(キック・ミュート・BAN)
  • +
  • チャンネル参加・退出の通知をカスタマイズ
  • +
+
+
+ LunaticChat のチャンネルチャット機能 +
+
+ +
+ + +
+
+

ダイレクトメッセージ & クイック返信

+

+ プレイヤー間で手軽に 1対1 のプライベートチャットができます。 + /reply コマンドで直前の相手にすぐ返信でき、テンポの良いやり取りを実現します。 +

+
    +
  • /tell / /msg でダイレクトメッセージを送信
  • +
  • /reply で直前の送信者に即座に返信
  • +
  • メッセージは送信者と受信者だけに表示
  • +
+
+
+ LunaticChat のダイレクトメッセージ機能 +
+
+ +
+ + +
+
+

ローマ字入力を自動で日本語に

+

+ 日本語入力に対応していない環境でも、ローマ字で入力するだけで自動的に日本語に変換されます。 + Google IME API を活用し、自然な変換結果を提供します。 +

+
    +
  • チャット入力時にリアルタイムでローマ字→日本語変換
  • +
  • 変換結果のキャッシュで高速動作を実現
  • +
  • プレイヤーごとに変換機能のオン/オフを切り替え可能
  • +
+
+
+ LunaticChat のローマ字変換機能 +
+
+ +
+ + +
+
+

Velocity でサーバー間連携

+

+ Velocity プロキシと連携して、複数の Paper/Folia サーバー間でグローバルチャットをリレーします。 + プレイヤーはどのサーバーにいても、同じチャット空間で会話に参加できます。 +

+
    +
  • 通常チャットを全サーバーにリアルタイムでリレー
  • +
  • 独自のプラグインメッセージングプロトコルで高速な通信
  • +
  • プロトコルバージョニングによる後方互換性の保証
  • +
+
+
+ LunaticChat のクロスチャット機能 +
+
+ +
+ + + -- cgit v1.2.1 From 6e96b5de6ef49140a49eb0bd9cbd4b9fa541a2cb Mon Sep 17 00:00:00 2001 From: Sho Sakuma Date: Sun, 5 Apr 2026 01:18:10 +0900 Subject: docs(website): add v1 documentation pages and fix dark theme Add 12 documentation pages covering configuration, permissions, features (DM, channel chat, romaji conversion, Velocity integration, message logging, admin), and reference (commands, message format, player settings). Restructure sidebar for new docs layout. Fix dark theme rendering caused by :global(.dark) in DownloadCard.vue applying filter:invert(1) to html element. Fix download button colors for dark mode. Add protocol version compatibility notice to download page. Move favicon.ico to correct public directory. Co-Authored-By: Claude --- website/src/docs/configuration.md | 73 +++++++++++ website/src/docs/features/admin.md | 74 +++++++++++ website/src/docs/features/channel-chat.md | 92 +++++++++++++ website/src/docs/features/direct-message.md | 52 ++++++++ website/src/docs/features/japanese-conversion.md | 62 +++++++++ website/src/docs/features/message-logging.md | 94 ++++++++++++++ website/src/docs/features/velocity.md | 109 ++++++++++++++++ website/src/docs/getting-started.md | 47 +++++++ website/src/docs/permissions.md | 50 ++++++++ website/src/docs/reference/commands.md | 157 +++++++++++++++++++++++ website/src/docs/reference/message-format.md | 86 +++++++++++++ website/src/docs/reference/player-settings.md | 50 ++++++++ website/src/index.md | 34 ++--- website/src/public/favicon.ico | Bin 0 -> 4286 bytes 14 files changed, 963 insertions(+), 17 deletions(-) create mode 100644 website/src/docs/configuration.md create mode 100644 website/src/docs/features/admin.md create mode 100644 website/src/docs/features/channel-chat.md create mode 100644 website/src/docs/features/direct-message.md create mode 100644 website/src/docs/features/japanese-conversion.md create mode 100644 website/src/docs/features/message-logging.md create mode 100644 website/src/docs/features/velocity.md create mode 100644 website/src/docs/getting-started.md create mode 100644 website/src/docs/permissions.md create mode 100644 website/src/docs/reference/commands.md create mode 100644 website/src/docs/reference/message-format.md create mode 100644 website/src/docs/reference/player-settings.md create mode 100644 website/src/public/favicon.ico (limited to 'website/src') diff --git a/website/src/docs/configuration.md b/website/src/docs/configuration.md new file mode 100644 index 0000000..8e603de --- /dev/null +++ b/website/src/docs/configuration.md @@ -0,0 +1,73 @@ +--- +layout: doc +--- + +# 設定 + +LunaticChat の設定は `plugins/LunaticChat/config.yml` で管理されます.サーバーの初回起動時にデフォルトの設定ファイルが生成されます. + +## グローバル設定 + +| キー | 型 | デフォルト | 説明 | +|------|------|------------|------| +| `debug` | Boolean | `false` | デバッグログを有効にする | +| `userSettingsFilePath` | String | `"player-settings.yaml"` | プレイヤー設定ファイルのパス | +| `checkForUpdates` | Boolean | `true` | 起動時にアップデートを確認する | +| `language` | String | `"en"` | プラグインの言語 (`en` / `ja`) | + +## 機能設定 (`features`) + +### クイックリプライ (`features.quickReplies`) + +| キー | 型 | デフォルト | 説明 | +|------|------|------------|------| +| `enabled` | Boolean | `true` | `/reply` コマンドを有効にする | + +### ローマ字変換 (`features.japaneseConversion`) + +| キー | 型 | デフォルト | 説明 | +|------|------|------------|------| +| `enabled` | Boolean | `false` | ローマ字→ひらがな変換を有効にする | +| `cache.maxEntries` | Int | `500` | 変換キャッシュの最大エントリ数 | +| `cache.saveIntervalSeconds` | Int | `300` | キャッシュのディスク保存間隔(秒) | +| `cache.filePath` | String | `"conversion_cache.json"` | キャッシュファイルのパス | +| `api.timeout` | Long | `3000` | API リクエストのタイムアウト(ミリ秒) | +| `api.retryAttempts` | Int | `2` | API リクエスト失敗時のリトライ回数 | + +### チャンネルチャット (`features.channelChat`) + +| キー | 型 | デフォルト | 説明 | +|------|------|------------|------| +| `enabled` | Boolean | `false` | チャンネルチャット機能を有効にする | +| `maxChannelsPerServer` | Int | `0` | サーバーあたりの最大チャンネル数(`0` = 無制限) | +| `maxMembersPerChannel` | Int | `0` | チャンネルあたりの最大メンバー数(`0` = 無制限) | +| `maxMembershipPerPlayer` | Int | `0` | プレイヤーあたりの最大参加チャンネル数(`0` = 無制限) | + +#### メッセージログ (`features.channelChat.messageLogging`) + +| キー | 型 | デフォルト | 説明 | +|------|------|------------|------| +| `enabled` | Boolean | `true` | チャンネルメッセージを NDJSON ファイルに記録する | +| `retentionDays` | Int | `30` | ログファイルの保持日数(`0` = 無期限) | +| `maxFileSizeMB` | Int | `100` | 単一ログファイルの最大サイズ(MB) | + +### Velocity 連携 (`features.velocityIntegration`) + +| キー | 型 | デフォルト | 説明 | +|------|------|------------|------| +| `enabled` | Boolean | `false` | Velocity プロキシとの連携を有効にする | +| `crossServerGlobalChat` | Boolean | `false` | サーバー間グローバルチャットを有効にする | +| `serverName` | String | `"Unknown"` | クロスサーバーチャットで表示されるサーバー名 | +| `messageDeduplicationCacheSize` | Int | `100` | メッセージ重複排除キャッシュのサイズ | + +## メッセージフォーマット (`messageFormat`) + +| キー | デフォルト | 利用可能なプレースホルダー | +|------|------------|--------------------------| +| `directMessageFormat` | `§7[§e{sender} §7>> §e{recipient}§7] §f{message}` | `{sender}`, `{recipient}`, `{message}` | +| `channelMessageFormat` | `§7[§b#{channel}§7] §e{sender}: §f{message}` | `{sender}`, `{message}`, `{channel}` | +| `crossServerGlobalChatFormat` | `§7[§6{server}§7] §e{sender}: §f{message}` | `{sender}`, `{message}`, `{server}` | + +## デフォルト設定ファイル + +[GitHub で確認する](https://github.com/m1sk9/LunaticChat/blob/main/platform-paper/src/main/resources/config.yml) diff --git a/website/src/docs/features/admin.md b/website/src/docs/features/admin.md new file mode 100644 index 0000000..57d38c0 --- /dev/null +++ b/website/src/docs/features/admin.md @@ -0,0 +1,74 @@ +--- +layout: doc +--- + +# 管理者向け機能 + +サーバー管理者向けの機能をまとめて解説します.これらの機能は主に OP 権限を持つプレイヤーが利用できます. + +## プラグインステータス (`/lc status`) + +プラグインの動作状況を一覧で確認できます. + +``` +/lc status +``` + +表示される情報: + +- プラグインバージョン (Git コミットハッシュ付き) +- ヘルスステータス (OK / Degraded) +- 各機能の有効/無効状態 +- 設定値 (デバッグモード,アップデート確認,言語) +- GitHub,Modrinth,ドキュメントへのリンク + +## スパイモード + +`lunaticchat.spy` パーミッション (デフォルト: op) を持つプレイヤーは,サーバー上で送受信されるすべてのダイレクトメッセージを閲覧できます. + +- スパイプレイヤーにはローマ字変換前の元のメッセージが表示されます +- ホバーテキストでスパイメッセージであることが示されます +- スパイプレイヤー自身は通常の送受信者リストには含まれません + +## チャンネルバイパス + +`lunaticchat.channelbypass` パーミッション (デフォルト: op) を持つプレイヤーは,チャンネルに関する以下の制限を無視できます. + +- キック・BAN の対象にならない +- オーナーでなくてもチャンネルを削除できる + +## アップデート通知 + +`checkForUpdates` が `true` (デフォルト) の場合,プラグインは起動時に新しいバージョンが利用可能か確認します.`lunaticchat.noticeupdate` パーミッション (デフォルト: op) を持つプレイヤーがサーバーに参加した際にアップデート通知が表示されます. + +```yaml +# config.yml +checkForUpdates: true +``` + +## デバッグモード + +`debug` を `true` にすると,プラグインの詳細なログが出力されます.問題の調査やバグ報告時に有用です. + +```yaml +# config.yml +debug: true +``` + +## 言語設定 + +プレイヤーに表示されるメッセージの言語を切り替えられます.プラグインログやコンソール出力には影響せず,英語のみ出力となります. + +```yaml +# config.yml +language: "ja" # "en" または "ja" +``` + +## 管理者パーミッション一覧 + +| パーミッション | デフォルト | 説明 | +|---------------|-----------|------| +| `lunaticchat.spy` | op | 全ダイレクトメッセージの閲覧 | +| `lunaticchat.channelbypass` | op | チャンネル制限のバイパス | +| `lunaticchat.noticeupdate` | op | アップデート通知の受信 | +| `lunaticchat.command.lcv.status` | op | `/lcv status` コマンドの使用 | diff --git a/website/src/docs/features/channel-chat.md b/website/src/docs/features/channel-chat.md new file mode 100644 index 0000000..b0caa43 --- /dev/null +++ b/website/src/docs/features/channel-chat.md @@ -0,0 +1,92 @@ +--- +layout: doc +--- + +# チャンネルチャット + +チャンネルを作成してグループごとに会話を分離できます.この機能を利用するには `config.yml` で `features.channelChat.enabled` を `true` に設定してください. + +## チャンネルの作成 + +``` +/lc channel create [description] [isPrivate] +``` + +- `channelId`: チャンネルの一意な識別子 (英数字, `_`, `-` のみ, 3〜30文字) +- `name`: チャンネルの表示名 +- `description`: チャンネルの説明 (省略可) +- `isPrivate`: プライベートチャンネルにする場合は `true` (デフォルト: `false`) + +作成者は自動的にオーナーになります. + +## チャンネルへの参加・退出 + +``` +/lc channel join # チャンネルに参加 +/lc channel leave # アクティブチャンネルから退出 +/lc channel switch # アクティブチャンネルを切り替え +``` + +プライベートチャンネルに参加するには,オーナーまたはモデレーターからの招待が必要です. + +## アクティブチャンネル + +プレイヤーは複数のチャンネルに参加できますが,一度にアクティブにできるチャンネルは1つです.チャットメッセージはアクティブチャンネルに送信されます.`/lc channel switch` でアクティブチャンネルを切り替えられます. + +``` +/lc channel status # 現在のアクティブチャンネルと参加チャンネル一覧を表示 +``` + +## ロールと権限 + +チャンネルには3つのロールがあります. + +| ロール | 権限 | +|--------|------| +| **OWNER** | チャンネルの削除,モデレーター管理,オーナー譲渡,メンバー管理 | +| **MODERATOR** | メンバーの招待,キック,BAN/BAN解除 | +| **MEMBER** | チャットへの参加,チャンネル情報の閲覧 | + +### モデレーター管理 (オーナーのみ) + +``` +/lc channel mod # モデレーター権限の付与/剥奪 +/lc channel ownership # オーナー権限の譲渡 +``` + +### メンバー管理 (オーナー / モデレーター) + +``` +/lc channel invite # プレイヤーを招待 +/lc channel kick # プレイヤーをキック +/lc channel ban # プレイヤーを BAN +/lc channel unban # BAN を解除 +``` + +## 制限設定 + +`config.yml` でチャンネルの上限を設定できます (すべて `0` で無制限) . + +| 設定キー | 説明 | +|----------|------| +| `maxChannelsPerServer` | サーバーあたりの最大チャンネル数 | +| `maxMembersPerChannel` | チャンネルあたりの最大メンバー数 | +| `maxMembershipPerPlayer` | プレイヤーあたりの最大参加チャンネル数 | + +## メッセージログ + +チャンネルメッセージは NDJSON 形式でログファイルに記録できます.ファイルは日次でローテーションされ,`maxFileSizeMB` を超えるとサフィックス付きの新しいファイルが作成されます. + +```json +{"timestamp":"2026-04-05T14:23:45.123Z","playerId":"550e8400-...","playerName":"Steve","channelId":"general","message":"Hello!"} +``` + +ログ設定の詳細は[設定ページ](/docs/configuration)の `features.channelChat.messageLogging` を参照してください. + +## バイパス権限 + +`lunaticchat.channelbypass` パーミッション (デフォルト: op) を持つプレイヤーは,キック・BAN の保護やチャンネルの強制削除が可能です. + +## メッセージフォーマット + +チャンネルメッセージの表示形式は `config.yml` の `messageFormat.channelMessageFormat` でカスタマイズできます.詳細は[メッセージフォーマット](/docs/reference/message-format)を参照してください. diff --git a/website/src/docs/features/direct-message.md b/website/src/docs/features/direct-message.md new file mode 100644 index 0000000..7b12aff --- /dev/null +++ b/website/src/docs/features/direct-message.md @@ -0,0 +1,52 @@ +--- +layout: doc +--- + +# ダイレクトメッセージ + +プレイヤー間で 1対1 のプライベートメッセージを送受信できます. + +## 基本的な使い方 + +### メッセージの送信 + +``` +/tell +``` + +エイリアス: `/t`, `/msg`, `/m`, `/w`, `/whisper` + +指定したプレイヤーにダイレクトメッセージを送信します.受信したメッセージをクリックすると,送信者への返信コマンドが自動入力されます. + +### クイック返信 + +``` +/reply +``` + +エイリアス: `/r` + +最後にメッセージを送ってきたプレイヤーに返信します.該当するプレイヤーがいない場合は,最後にメッセージを送った相手に送信されます. + +クイック返信を利用するには `config.yml` で `features.quickReplies.enabled` が `true` (デフォルト) である必要があります. + +## 通知設定 + +プレイヤーはダイレクトメッセージ受信時のサウンド通知を個別に制御できます. + +``` +/lc settings notice on # 通知を有効化 +/lc settings notice off # 通知を無効化 +``` + +## ローマ字変換との連携 + +[ローマ字変換](/docs/features/japanese-conversion)が有効な場合,ダイレクトメッセージの内容も自動的に日本語に変換されます.変換はプレイヤーの `japanese` 設定に従います. + +## スパイ機能 + +`lunaticchat.spy` パーミッション (デフォルト: op) を持つプレイヤーは,サーバー上のすべてのダイレクトメッセージを閲覧できます.スパイプレイヤーには変換前のメッセージが表示されます. + +## メッセージフォーマット + +ダイレクトメッセージの表示形式は `config.yml` の `messageFormat.directMessageFormat` でカスタマイズできます.詳細は[メッセージフォーマット](/docs/reference/message-format)を参照してください. diff --git a/website/src/docs/features/japanese-conversion.md b/website/src/docs/features/japanese-conversion.md new file mode 100644 index 0000000..e5e751b --- /dev/null +++ b/website/src/docs/features/japanese-conversion.md @@ -0,0 +1,62 @@ +--- +layout: doc +--- + +# ローマ字変換 + +ローマ字で入力したチャットメッセージを自動的に日本語に変換します.この機能を利用するには `config.yml` で `features.japaneseConversion.enabled` を `true` に設定してください. + +## 変換の仕組み + +変換は2段階で行われます. + +1. **ローマ字 → ひらがな**: プラグイン内蔵の Trie ベースの変換エンジンでローマ字をひらがなに変換します +2. **ひらがな → 漢字/カナ**: Google IME API を使用してひらがなを自然な日本語に変換します + +### 変換例 + +``` +入力: konnichiha sekai +変換1: こんにちは せかい +変換2: こんにちは 世界 +``` + +## 変換対象 + +- 通常チャット +- ダイレクトメッセージ (`/tell`, `/reply`) +- チャンネルチャット + +入力が有効なローマ字でない場合 (英単語などが含まれる場合),変換は行われずそのまま送信されます. + +## プレイヤー設定 + +プレイヤーは個別に変換のオン/オフを切り替えられます. + +``` +/lc settings japanese on # 変換を有効化 +/lc settings japanese off # 変換を無効化 +``` + +## キャッシュ + +変換結果は単語単位でキャッシュされ,同じ単語の再変換時には API を呼び出さずにキャッシュから取得します.キャッシュは JSON ファイルとしてディスクに定期保存されます. + +| 設定キー | デフォルト | 説明 | +|----------|-----------|------| +| `cache.maxEntries` | `500` | キャッシュの最大エントリ数 | +| `cache.saveIntervalSeconds` | `300` | ディスク保存の間隔 (秒) | +| `cache.filePath` | `"conversion_cache.json"` | キャッシュファイルのパス | + +キャッシュが上限に達すると,古いエントリの10%が自動的に削除されます. + +## API 設定 + +Google IME API への接続に関する設定です. + +| 設定キー | デフォルト | 説明 | +|----------|-----------|------| +| `api.timeout` | `3000` | リクエストタイムアウト (ミリ秒) | +| `api.retryAttempts` | `2` | 失敗時のリトライ回数 | + +API がタイムアウトまたは失敗した場合,ひらがなのまま送信されます. diff --git a/website/src/docs/features/message-logging.md b/website/src/docs/features/message-logging.md new file mode 100644 index 0000000..944b9e9 --- /dev/null +++ b/website/src/docs/features/message-logging.md @@ -0,0 +1,94 @@ +--- +layout: doc +--- + +# メッセージログ + +チャンネルチャットのメッセージを NDJSON (Newline Delimited JSON) 形式でファイルに記録します.この機能はチャンネルチャットが有効な場合に利用でき,デフォルトで有効です. + +## 設定 + +```yaml +# config.yml +features: + channelChat: + enabled: true + messageLogging: + enabled: true + retentionDays: 30 + maxFileSizeMB: 100 +``` + +| 設定キー | デフォルト | 説明 | +|----------|-----------|------| +| `enabled` | `true` | メッセージログを有効にする | +| `retentionDays` | `30` | ログファイルの保持日数 (`0` で無期限保持) | +| `maxFileSizeMB` | `100` | 単一ログファイルの最大サイズ (MB) | + +## ログファイルの形式 + +ログファイルは `plugins/LunaticChat/logs/` ディレクトリに保存されます.各行が1つの JSON オブジェクトです. + +### ファイル名 + +``` +channel-messages-YYYY-MM-dd.json +``` + +ファイルサイズが `maxFileSizeMB` を超えた場合,サフィックス付きの新しいファイルが作成されます. + +``` +channel-messages-2026-04-05.json # 基本ファイル +channel-messages-2026-04-05-1.json # サイズ超過時 +channel-messages-2026-04-05-2.json # さらに超過時 +``` + +### エントリ形式 + +各行は以下の JSON 構造を持ちます. + +```json +{ + "timestamp": "2026-04-05T14:23:45.123Z", + "playerId": "550e8400-e29b-41d4-a716-446655440000", + "playerName": "Steve", + "channelId": "general", + "message": "Hello everyone!" +} +``` + +| フィールド | 型 | 説明 | +|-----------|------|------| +| `timestamp` | String | ISO 8601 形式のタイムスタンプ (UTC) | +| `playerId` | String | プレイヤーの UUID | +| `playerName` | String | プレイヤーの表示名 | +| `channelId` | String | メッセージが送信されたチャンネルの ID | +| `message` | String | メッセージの内容 | + +## ファイルローテーション + +- **日次ローテーション**: 日付が変わると新しいファイルが作成されます +- **サイズローテーション**: `maxFileSizeMB` を超えるとサフィックス付きファイルに切り替わります +- **自動クリーンアップ**: `retentionDays` で指定した日数を超えたログファイルは自動的に削除されます (`0` の場合は削除されません) + +## ログの活用例 + +NDJSON 形式のため,`jq` などのツールで簡単にフィルタリング・集計が可能です. + +### 特定チャンネルのメッセージを抽出 + +```bash +jq 'select(.channelId == "general")' channel-messages-2026-04-05.json +``` + +### 特定プレイヤーのメッセージを抽出 + +```bash +jq 'select(.playerName == "Steve")' channel-messages-2026-04-05.json +``` + +### メッセージ数をチャンネルごとに集計 + +```bash +jq -s 'group_by(.channelId) | map({channel: .[0].channelId, count: length})' channel-messages-2026-04-05.json +``` diff --git a/website/src/docs/features/velocity.md b/website/src/docs/features/velocity.md new file mode 100644 index 0000000..d1394ec --- /dev/null +++ b/website/src/docs/features/velocity.md @@ -0,0 +1,109 @@ +--- +layout: doc +--- + +# Velocity 連携 + +Velocity プロキシを経由して複数の Paper / Folia サーバー間でグローバルチャットをリレーします. + +## セットアップ + +### 1. Velocity プラグインの導入 + +`LunaticChat--velocity.jar` を Velocity の `plugins/` ディレクトリに配置し,プロキシを再起動します. + +### 2. Paper 側の設定 + +各 Paper サーバーの `config.yml` で以下を設定します. + +```yaml +features: + velocityIntegration: + enabled: true + crossServerGlobalChat: true + serverName: "survival" # Velocity 設定のサーバー名に合わせる +``` + +### 3. 接続の確認 + +``` +/lcv status +``` + +接続状態,プロトコルバージョン,Velocity プラグインのバージョンなどを確認できます (パーミッション: `lunaticchat.command.lcv.status`, デフォルト: op) . + +## クロスサーバーグローバルチャット + +`crossServerGlobalChat` を `true` にすると,プレイヤーのチャットメッセージが Velocity を経由して他のすべての Paper サーバーに中継されます. + +### メッセージの流れ + +1. プレイヤーがチャットメッセージを送信 +2. Paper サーバーがメッセージを Velocity に送信 +3. Velocity が送信元以外の全サーバーにメッセージを中継 +4. 各サーバーのプレイヤーにメッセージが表示される + +### メッセージ重複排除 + +各メッセージに一意な ID が付与され,キャッシュにより同じメッセージが重複して表示されることを防ぎます.キャッシュサイズは `messageDeduplicationCacheSize` (デフォルト: `100`) で設定できます. + +## プロトコルバージョン + +Paper と Velocity 間の互換性はプロトコルバージョンで管理されます.接続時にハンドシェイクが行われ,互換性のないバージョン同士では接続が拒否されます. + +### バージョンバンプルール + +| レベル | 変更例 | 互換性 | デプロイ順序 | +|--------|--------|--------|-------------| +| PATCH (1.0.0 → 1.0.1) | optional フィールド追加,新 sub-channel 追加 | 完全互換 (`ignoreUnknownKeys=true` で安全) | 順不同,いつでも | +| MINOR (1.0.x → 1.1.0) | required フィールド追加,既存 sub-channel のセマンティクス変更 | `MIN_SUPPORTED_MINOR` の範囲内で後方互換 | **Velocity を先に更新** → 各 Paper を順次更新 | +| MAJOR (1.x.x → 2.0.0) | ワイヤフォーマット変更,sub-channel 削除/リネーム | 非互換 | **全サーバー同時デプロイ** | + +### 互換性判定 + +ハンドシェイク時に以下のルールで互換性が判定されます: + +- **MAJOR** が一致すること +- リモートの **MINOR** が `MIN_SUPPORTED_MINOR` 以上かつ自身の MINOR 以下であること +- **PATCH** は互換性判定に影響しない + +#### 例: Velocity がプロトコル 1.2.0 で `MIN_SUPPORTED_MINOR=1` の場合 + +| Paper プロトコル | 結果 | +|-----------------|------| +| 1.1.x | 接続 OK | +| 1.2.x | 接続 OK | +| 1.0.x | 拒否 (`MIN_SUPPORTED_MINOR` より古い) | +| 1.3.x | 拒否 (Velocity より新しい) | +| 2.0.x | 拒否 (MAJOR 不一致) | + +### 運用サイクル + +1. **プロトコル変更なし** → Paper / Velocity を独立にデプロイ可能 +2. **PATCH 変更** → どちら側からでも自由にデプロイ +3. **MINOR 変更** → Velocity を先行更新し,`MIN_SUPPORTED_MINOR` で旧 Paper の猶予期間を設定.全 Paper 更新後に `MIN_SUPPORTED_MINOR` を引き上げ +4. **MAJOR 変更** → メンテナンスウィンドウで一括更新 + +## 接続状態 + +| 状態 | 説明 | +|------|------| +| `DISCONNECTED` | 未接続 | +| `HANDSHAKING` | ハンドシェイク中 | +| `CONNECTED` | 接続済み | +| `FAILED` | 接続失敗 | + +ハンドシェイクのタイムアウトは5秒です.タイムアウトした場合,状態は `FAILED` になります. + +## 設定一覧 + +| 設定キー | デフォルト | 説明 | +|----------|-----------|------| +| `enabled` | `false` | Velocity 連携を有効にする | +| `crossServerGlobalChat` | `false` | クロスサーバーグローバルチャットを有効にする | +| `serverName` | `"Unknown"` | クロスサーバーチャットで表示されるサーバー名 | +| `messageDeduplicationCacheSize` | `100` | メッセージ重複排除キャッシュのサイズ | + +## メッセージフォーマット + +クロスサーバーチャットの表示形式は `config.yml` の `messageFormat.crossServerGlobalChatFormat` でカスタマイズできます.詳細は[メッセージフォーマット](/docs/reference/message-format)を参照してください. diff --git a/website/src/docs/getting-started.md b/website/src/docs/getting-started.md new file mode 100644 index 0000000..63b52d5 --- /dev/null +++ b/website/src/docs/getting-started.md @@ -0,0 +1,47 @@ +--- +layout: doc +--- + +# はじめる + +LunaticChat を導入するための手順を説明します. + +## 動作要件 + +| 項目 | 要件 | +|------|------| +| Minecraft | 26.1 以降 | +| Java | 25 以降 | +| サーバー | Paper, Folia, または Velocity | + +## ダウンロード + +以下のいずれかからプラグイン JAR をダウンロードできます. + +- [GitHub Releases](https://github.com/m1sk9/LunaticChat/releases) +- [Modrinth](https://modrinth.com/project/lunaticchat) + +Paper / Folia サーバーには `LunaticChat-.jar` を,Velocity プロキシには `LunaticChat--velocity.jar` を使用してください. + +## インストール + +### Paper / Folia + +1. ダウンロードした `LunaticChat-.jar` をサーバーの `plugins/` ディレクトリに配置します +2. サーバーを起動 (または再起動) します +3. `plugins/LunaticChat/config.yml` が自動生成されます +4. 必要に応じて[設定](/docs/configuration)を変更し,サーバーを再起動します + +### Velocity + +1. ダウンロードした `LunaticChat--velocity.jar` を Velocity の `plugins/` ディレクトリに配置します +2. Velocity プロキシを起動 (または再起動) します +3. Paper 側の `config.yml` で `features.velocityIntegration.enabled` を `true` に設定します +4. 詳細は [Velocity 連携](/docs/features/velocity)を参照してください + +## 次のステップ + +- [設定](/docs/configuration) - `config.yml` の全設定項目を確認する +- [ダイレクトメッセージ](/docs/features/direct-message) - DM 機能の使い方 +- [チャンネルチャット](/docs/features/channel-chat) - チャンネル機能の使い方 +- [コマンド一覧](/docs/reference/commands) - 全コマンドのリファレンス diff --git a/website/src/docs/permissions.md b/website/src/docs/permissions.md new file mode 100644 index 0000000..3fb20f5 --- /dev/null +++ b/website/src/docs/permissions.md @@ -0,0 +1,50 @@ +--- +layout: doc +--- + +# パーミッション + +LunaticChat のすべてのパーミッションノードの一覧です. + +## コマンドパーミッション + +すべてのコマンドパーミッションはデフォルトで全プレイヤーに付与されています. + +| パーミッション | 説明 | +|---------------|------| +| `lunaticchat.command.lc` | `/lc` コマンドの使用 | +| `lunaticchat.command.tell` | `/tell` コマンドの使用 | +| `lunaticchat.command.reply` | `/reply` コマンドの使用 | +| `lunaticchat.command.lc.settings` | `/lc settings` の使用 | +| `lunaticchat.command.lc.status` | `/lc status` の使用 | + +### チャンネル関連 + +| パーミッション | 説明 | +|---------------|------| +| `lunaticchat.command.lc.channel` | `/lc channel` の使用 | +| `lunaticchat.command.lc.channel.create` | チャンネルの作成 | +| `lunaticchat.command.lc.channel.list` | チャンネル一覧の表示 | +| `lunaticchat.command.lc.channel.join` | チャンネルへの参加 | +| `lunaticchat.command.lc.channel.leave` | チャンネルからの退出 | +| `lunaticchat.command.lc.channel.switch` | アクティブチャンネルの切り替え | +| `lunaticchat.command.lc.channel.status` | チャンネル参加状況の確認 | +| `lunaticchat.command.lc.channel.info` | チャンネル情報の表示 | +| `lunaticchat.command.lc.channel.delete` | チャンネルの削除 | +| `lunaticchat.command.lc.channel.invite` | チャンネルへの招待 | +| `lunaticchat.command.lc.channel.kick` | チャンネルからのキック | +| `lunaticchat.command.lc.channel.ban` | チャンネルからの BAN | +| `lunaticchat.command.lc.channel.unban` | チャンネル BAN の解除 | +| `lunaticchat.command.lc.channel.mod` | モデレーター権限の付与・剥奪 | +| `lunaticchat.command.lc.channel.ownership` | チャンネルオーナーの譲渡 | + +## 管理者パーミッション + +以下のパーミッションはデフォルトで OP のみに付与されています. + +| パーミッション | デフォルト | 説明 | +|---------------|-----------|------| +| `lunaticchat.spy` | op | サーバー上の全ダイレクトメッセージを閲覧 | +| `lunaticchat.noticeupdate` | op | アップデート通知の受信 | +| `lunaticchat.channelbypass` | op | チャンネル制限のバイパス(キック・BAN 保護,強制削除) | +| `lunaticchat.command.lcv.status` | op | `/lcv status` コマンドの使用 | diff --git a/website/src/docs/reference/commands.md b/website/src/docs/reference/commands.md new file mode 100644 index 0000000..4c40b9b --- /dev/null +++ b/website/src/docs/reference/commands.md @@ -0,0 +1,157 @@ +--- +layout: doc +--- + +# コマンド一覧 + +LunaticChat で使用できるすべてのコマンドのリファレンスです. + +## ダイレクトメッセージ + +### `/tell ` + +プレイヤーにダイレクトメッセージを送信します. + +- **エイリアス**: `t`, `msg`, `m`, `w`, `whisper` +- **パーミッション**: `lunaticchat.command.tell` + +### `/reply ` + +最後にメッセージを送ってきたプレイヤーに返信します. + +- **エイリアス**: `r` +- **パーミッション**: `lunaticchat.command.reply` +- **前提条件**: クイックリプライ機能が有効であること + +## メインコマンド (`/lc`) + +**エイリアス**: `lunaticchat` + +### `/lc status` + +プラグインのバージョン,ヘルス,有効な機能,設定値を表示します. + +- **パーミッション**: `lunaticchat.command.lc.status` + +### `/lc settings [key] [on|off]` + +プレイヤー個人の設定を確認・変更します.引数なしで設定一覧を表示します. + +- **パーミッション**: `lunaticchat.command.lc.settings` +- **設定キー**: `japanese`, `notice`, `chNotice`(詳細は[プレイヤー設定](/docs/reference/player-settings)を参照) + +## チャンネルコマンド (`/lc channel`) + +チャンネルチャット機能が有効な場合にのみ使用できます. + +### 作成・探索 + +#### `/lc channel create [description] [isPrivate]` + +新しいチャンネルを作成します.作成者がオーナーになります. + +- **パーミッション**: `lunaticchat.command.lc.channel.create` +- `channelId`: 英数字,アンダースコア,ハイフンのみ使用可能 +- `isPrivate`: `true` / `false`(デフォルト: `false`) + +#### `/lc channel list [page]` + +公開チャンネルの一覧を表示します(1ページ10件). + +- **パーミッション**: `lunaticchat.command.lc.channel.list` + +#### `/lc channel info [channelId]` + +チャンネルの詳細情報を表示します.引数なしでアクティブチャンネルの情報を表示します. + +- **パーミッション**: `lunaticchat.command.lc.channel.info` + +### 参加・退出 + +#### `/lc channel join ` + +チャンネルに参加します.プライベートチャンネルには招待が必要です. + +- **パーミッション**: `lunaticchat.command.lc.channel.join` + +#### `/lc channel leave` + +アクティブチャンネルから退出します. + +- **パーミッション**: `lunaticchat.command.lc.channel.leave` + +#### `/lc channel switch ` + +参加済みの別チャンネルをアクティブに切り替えます. + +- **パーミッション**: `lunaticchat.command.lc.channel.switch` + +#### `/lc channel status` + +自分のチャンネル参加状況(アクティブチャンネルと参加チャンネル一覧)を表示します. + +- **パーミッション**: `lunaticchat.command.lc.channel.status` + +### モデレーション(オーナー / モデレーター) + +#### `/lc channel invite ` + +プレイヤーをアクティブチャンネルに招待します.プライベートチャンネルの制限をバイパスします. + +- **パーミッション**: `lunaticchat.command.lc.channel.invite` +- **必要ロール**: OWNER または MODERATOR + +#### `/lc channel kick ` + +プレイヤーをアクティブチャンネルからキックします. + +- **パーミッション**: `lunaticchat.command.lc.channel.kick` +- **必要ロール**: OWNER または MODERATOR + +#### `/lc channel ban ` + +プレイヤーをアクティブチャンネルから BAN します.BAN されたプレイヤーは再参加できません. + +- **パーミッション**: `lunaticchat.command.lc.channel.ban` +- **必要ロール**: OWNER または MODERATOR + +#### `/lc channel unban ` + +プレイヤーのチャンネル BAN を解除します. + +- **パーミッション**: `lunaticchat.command.lc.channel.unban` +- **必要ロール**: OWNER または MODERATOR + +### 管理(オーナーのみ) + +#### `/lc channel delete ` + +チャンネルを削除します. + +- **パーミッション**: `lunaticchat.command.lc.channel.delete` +- **必要ロール**: OWNER(`lunaticchat.channelbypass` 権限で制限をバイパス可能) + +#### `/lc channel mod ` + +チャンネルメンバーのモデレーター権限を付与・剥奪します. + +- **パーミッション**: `lunaticchat.command.lc.channel.mod` +- **必要ロール**: OWNER + +#### `/lc channel ownership ` + +チャンネルのオーナー権限を別のメンバーに譲渡します. + +- **パーミッション**: `lunaticchat.command.lc.channel.ownership` +- **必要ロール**: OWNER + +## Velocity コマンド (`/lcv`) + +**エイリアス**: `lunaticvelocity` + +### `/lcv status` + +Velocity プロキシとの接続状態,プロトコルバージョン,オンラインプレイヤー数を表示します. + +- **パーミッション**: `lunaticchat.command.lcv.status` +- **デフォルト**: op のみ diff --git a/website/src/docs/reference/message-format.md b/website/src/docs/reference/message-format.md new file mode 100644 index 0000000..7ae42e9 --- /dev/null +++ b/website/src/docs/reference/message-format.md @@ -0,0 +1,86 @@ +--- +layout: doc +--- + +# メッセージフォーマット + +`config.yml` の `messageFormat` セクションで,チャットメッセージの表示形式をカスタマイズできます. + +## プレースホルダー + +| プレースホルダー | 説明 | 使用可能なフォーマット | +|----------------|------|----------------------| +| `{sender}` | メッセージの送信者名 | すべて | +| `{recipient}` | メッセージの受信者名 | `directMessageFormat` | +| `{message}` | メッセージの内容 | すべて | +| `{channel}` | チャンネル名 | `channelMessageFormat` | +| `{server}` | サーバー名 | `crossServerGlobalChatFormat` | + +## フォーマット一覧 + +### `directMessageFormat` + +`/tell` や `/reply` で送信されるダイレクトメッセージの表示形式です. + +**デフォルト:** +``` +§7[§e{sender} §7>> §e{recipient}§7] §f{message} +``` + +**表示例:** [Steve >> Alex] こんにちは! + +### `channelMessageFormat` + +チャンネルチャットで送信されるメッセージの表示形式です. + +**デフォルト:** +``` +§7[§b#{channel}§7] §e{sender}: §f{message} +``` + +**表示例:** [#general] Steve: こんにちは! + +### `crossServerGlobalChatFormat` + +Velocity 連携時のクロスサーバーグローバルチャットの表示形式です. + +**デフォルト:** +``` +§7[§6{server}§7] §e{sender}: §f{message} +``` + +**表示例:** [survival] Steve: こんにちは! + +## カラーコード + +Minecraft のセクション記号(`§`)を使ったカラーコードが使用できます. + +| コード | 色 | +|--------|------| +| `§0` | 黒 | +| `§1` | 濃い青 | +| `§2` | 濃い緑 | +| `§3` | 濃い水色 | +| `§4` | 濃い赤 | +| `§5` | 濃い紫 | +| `§6` | 金色 | +| `§7` | 灰色 | +| `§8` | 濃い灰色 | +| `§9` | 青 | +| `§a` | 緑 | +| `§b` | 水色 | +| `§c` | 赤 | +| `§d` | ピンク | +| `§e` | 黄色 | +| `§f` | 白 | + +### 装飾コード + +| コード | 効果 | +|--------|------| +| `§l` | **太字** | +| `§o` | *斜体* | +| `§n` | 下線 | +| `§m` | ~~取り消し線~~ | +| `§k` | 難読化(文字がランダムに変化) | +| `§r` | リセット | diff --git a/website/src/docs/reference/player-settings.md b/website/src/docs/reference/player-settings.md new file mode 100644 index 0000000..bbd294d --- /dev/null +++ b/website/src/docs/reference/player-settings.md @@ -0,0 +1,50 @@ +--- +layout: doc +--- + +# プレイヤー設定 + +プレイヤーは `/lc settings` コマンドで個人設定を変更できます.設定はサーバーの `player-settings.yaml`(設定ファイルの `userSettingsFilePath` で変更可能)に UUID ごとに保存されます. + +## コマンド + +``` +/lc settings # 設定一覧を表示 +/lc settings # 現在の値を確認 +/lc settings on|off # 値を変更 +``` + +## 設定キー + +| キー | 説明 | デフォルト | +|------|------|-----------| +| `japanese` | ローマ字→日本語変換を有効にする | `true` | +| `notice` | ダイレクトメッセージの通知を有効にする | `true` | +| `chNotice` | チャンネルメッセージの通知を有効にする | `true` | + +### `japanese` + +ローマ字で入力したチャットメッセージを自動的に日本語(ひらがな)に変換します.この設定はサーバー側で `features.japaneseConversion.enabled` が `true` の場合にのみ機能します. + +``` +/lc settings japanese on # 変換を有効化 +/lc settings japanese off # 変換を無効化 +``` + +### `notice` + +ダイレクトメッセージ(`/tell` / `/reply`)を受信した際の通知を制御します. + +``` +/lc settings notice on # 通知を有効化 +/lc settings notice off # 通知を無効化 +``` + +### `chNotice` + +チャンネルチャットのメッセージを受信した際の通知を制御します.この設定はサーバー側で `features.channelChat.enabled` が `true` の場合にのみ機能します. + +``` +/lc settings chNotice on # 通知を有効化 +/lc settings chNotice off # 通知を無効化 +``` diff --git a/website/src/index.md b/website/src/index.md index 2336b16..007a6ad 100644 --- a/website/src/index.md +++ b/website/src/index.md @@ -18,22 +18,22 @@ hero: features: - title: チャンネルチャット - details: チャンネルを作成・管理し、特定のプレイヤー間でグループチャットが可能。プライベートチャンネルやモデレーション機能も搭載 + details: チャンネルを作成・管理し,特定のプレイヤー間でグループチャットが可能.プライベートチャンネルやモデレーション機能も搭載 icon: ☎️ - title: ダイレクトメッセージ - details: /tell や /msg コマンドで 1対1 のチャットが可能。/reply で直前の相手に素早く返信 + details: /tell や /msg コマンドで 1対1 のチャットが可能./reply で直前の相手に素早く返信 icon: ✉️ - title: ローマ字変換 - details: ローマ字で入力したメッセージを自動的に日本語に変換。キャッシュにより高速に動作 + details: ローマ字で入力したメッセージを自動的に日本語に変換.キャッシュにより高速に動作 icon: 🌍 - title: Velocity サーバー間連携 - details: Velocity プロキシを経由して複数サーバー間でグローバルチャットをリレー。どのサーバーにいても会話に参加可能 + details: Velocity プロキシを経由して複数サーバー間でグローバルチャットをリレー.どのサーバーにいても会話に参加可能 icon: 🔗 - title: 柔軟な設定 - details: YAML ベースの設定ファイルで機能の有効/無効を切り替え。サーバーの用途に合わせてカスタマイズ可能 + details: YAML ベースの設定ファイルで機能の有効/無効を切り替え.サーバーの用途に合わせてカスタマイズ可能 icon: ⚙️ - title: 最新バージョン対応 - details: 外部プラグインへの依存を最小限に抑え、常に最新の Minecraft バージョンに対応 + details: 外部プラグインへの依存を最小限に抑え,常に最新の Minecraft バージョンに対応 icon: ⛏️ --- @@ -44,8 +44,8 @@ features:

チャンネルチャットで会話を整理

- サーバー内にチャンネルを作成して、トピックやグループごとに会話を分離できます。 - 全体チャットに流れることなく、必要なメンバーだけでコミュニケーションが可能です。 + サーバー内にチャンネルを作成して,トピックやグループごとに会話を分離できます. + 全体チャットに流れることなく,必要なメンバーだけでコミュニケーションが可能です.

  • パスワード付きのプライベートチャンネルを作成
  • @@ -65,8 +65,8 @@ features:

    ダイレクトメッセージ & クイック返信

    - プレイヤー間で手軽に 1対1 のプライベートチャットができます。 - /reply コマンドで直前の相手にすぐ返信でき、テンポの良いやり取りを実現します。 + プレイヤー間で手軽に 1対1 のプライベートチャットができます. + /reply コマンドで直前の相手にすぐ返信でき,テンポの良いやり取りを実現します.

    diff --git a/website/src/public/favicon.ico b/website/src/public/favicon.ico new file mode 100644 index 0000000..46c0cad Binary files /dev/null and b/website/src/public/favicon.ico differ -- cgit v1.2.1 From 00b896b4fee42dd4386768dfc867f0e8c7d2dc11 Mon Sep 17 00:00:00 2001 From: Sho Sakuma Date: Sun, 5 Apr 2026 01:24:51 +0900 Subject: docs(website): fix old docs/ path references and add English i18n pages Update editLink patterns, git log path, and footer labels from docs/ to website/ in config.mts, ja.ts, and en.ts. Restructure English sidebar/nav to match new docs layout. Add English stub pages for all 12 documentation routes. Co-Authored-By: Claude --- website/src/en/docs/configuration.md | 3 +++ website/src/en/docs/features/admin.md | 3 +++ website/src/en/docs/features/channel-chat.md | 3 +++ website/src/en/docs/features/direct-message.md | 3 +++ website/src/en/docs/features/japanese-conversion.md | 3 +++ website/src/en/docs/features/message-logging.md | 3 +++ website/src/en/docs/features/velocity.md | 3 +++ website/src/en/docs/getting-started.md | 3 +++ website/src/en/docs/permissions.md | 3 +++ website/src/en/docs/reference/commands.md | 3 +++ website/src/en/docs/reference/message-format.md | 3 +++ website/src/en/docs/reference/player-settings.md | 3 +++ 12 files changed, 36 insertions(+) create mode 100644 website/src/en/docs/configuration.md create mode 100644 website/src/en/docs/features/admin.md create mode 100644 website/src/en/docs/features/channel-chat.md create mode 100644 website/src/en/docs/features/direct-message.md create mode 100644 website/src/en/docs/features/japanese-conversion.md create mode 100644 website/src/en/docs/features/message-logging.md create mode 100644 website/src/en/docs/features/velocity.md create mode 100644 website/src/en/docs/getting-started.md create mode 100644 website/src/en/docs/permissions.md create mode 100644 website/src/en/docs/reference/commands.md create mode 100644 website/src/en/docs/reference/message-format.md create mode 100644 website/src/en/docs/reference/player-settings.md (limited to 'website/src') diff --git a/website/src/en/docs/configuration.md b/website/src/en/docs/configuration.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/configuration.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/features/admin.md b/website/src/en/docs/features/admin.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/features/admin.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/features/channel-chat.md b/website/src/en/docs/features/channel-chat.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/features/channel-chat.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/features/direct-message.md b/website/src/en/docs/features/direct-message.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/features/direct-message.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/features/japanese-conversion.md b/website/src/en/docs/features/japanese-conversion.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/features/japanese-conversion.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/features/message-logging.md b/website/src/en/docs/features/message-logging.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/features/message-logging.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/features/velocity.md b/website/src/en/docs/features/velocity.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/features/velocity.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/getting-started.md b/website/src/en/docs/getting-started.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/getting-started.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/permissions.md b/website/src/en/docs/permissions.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/permissions.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/reference/commands.md b/website/src/en/docs/reference/commands.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/reference/commands.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/reference/message-format.md b/website/src/en/docs/reference/message-format.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/reference/message-format.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- diff --git a/website/src/en/docs/reference/player-settings.md b/website/src/en/docs/reference/player-settings.md new file mode 100644 index 0000000..b2ea1e6 --- /dev/null +++ b/website/src/en/docs/reference/player-settings.md @@ -0,0 +1,3 @@ +--- +layout: doc +--- -- cgit v1.2.1 From 1f73ccd87e9dae859e94475e0697b352b60ad3e7 Mon Sep 17 00:00:00 2001 From: Sho Sakuma Date: Sun, 5 Apr 2026 01:30:38 +0900 Subject: docs(website): translate all documentation pages to English Translate 12 documentation pages into English under /en/docs/: getting-started, configuration, permissions, features (direct-message, channel-chat, japanese-conversion, velocity, message-logging, admin), and reference (commands, message-format, player-settings). Co-Authored-By: Claude --- website/src/en/docs/configuration.md | 70 ++++++++++ website/src/en/docs/features/admin.md | 71 ++++++++++ website/src/en/docs/features/channel-chat.md | 89 ++++++++++++ website/src/en/docs/features/direct-message.md | 49 +++++++ .../src/en/docs/features/japanese-conversion.md | 59 ++++++++ website/src/en/docs/features/message-logging.md | 91 ++++++++++++ website/src/en/docs/features/velocity.md | 106 ++++++++++++++ website/src/en/docs/getting-started.md | 44 ++++++ website/src/en/docs/permissions.md | 47 +++++++ website/src/en/docs/reference/commands.md | 154 +++++++++++++++++++++ website/src/en/docs/reference/message-format.md | 83 +++++++++++ website/src/en/docs/reference/player-settings.md | 47 +++++++ 12 files changed, 910 insertions(+) (limited to 'website/src') diff --git a/website/src/en/docs/configuration.md b/website/src/en/docs/configuration.md index b2ea1e6..e7891b3 100644 --- a/website/src/en/docs/configuration.md +++ b/website/src/en/docs/configuration.md @@ -1,3 +1,73 @@ --- layout: doc --- + +# Configuration + +LunaticChat's configuration is managed in `plugins/LunaticChat/config.yml`. A default configuration file is generated on the server's first startup. + +## Global Settings + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| `debug` | Boolean | `false` | Enable debug logging | +| `userSettingsFilePath` | String | `"player-settings.yaml"` | Path to the player settings file | +| `checkForUpdates` | Boolean | `true` | Check for updates on startup | +| `language` | String | `"en"` | Plugin language (`en` / `ja`) | + +## Feature Settings (`features`) + +### Quick Replies (`features.quickReplies`) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| `enabled` | Boolean | `true` | Enable the `/reply` command | + +### Japanese Conversion (`features.japaneseConversion`) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| `enabled` | Boolean | `false` | Enable romaji-to-hiragana conversion | +| `cache.maxEntries` | Int | `500` | Maximum number of conversion cache entries | +| `cache.saveIntervalSeconds` | Int | `300` | Interval (in seconds) for saving cache to disk | +| `cache.filePath` | String | `"conversion_cache.json"` | Path to the cache file | +| `api.timeout` | Long | `3000` | API request timeout (in milliseconds) | +| `api.retryAttempts` | Int | `2` | Number of retries on API request failure | + +### Channel Chat (`features.channelChat`) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| `enabled` | Boolean | `false` | Enable the channel chat feature | +| `maxChannelsPerServer` | Int | `0` | Maximum channels per server (`0` = unlimited) | +| `maxMembersPerChannel` | Int | `0` | Maximum members per channel (`0` = unlimited) | +| `maxMembershipPerPlayer` | Int | `0` | Maximum channel memberships per player (`0` = unlimited) | + +#### Message Logging (`features.channelChat.messageLogging`) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| `enabled` | Boolean | `true` | Log channel messages to an NDJSON file | +| `retentionDays` | Int | `30` | Log file retention period in days (`0` = indefinite) | +| `maxFileSizeMB` | Int | `100` | Maximum size of a single log file (MB) | + +### Velocity Integration (`features.velocityIntegration`) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| `enabled` | Boolean | `false` | Enable integration with the Velocity proxy | +| `crossServerGlobalChat` | Boolean | `false` | Enable cross-server global chat | +| `serverName` | String | `"Unknown"` | Server name displayed in cross-server chat | +| `messageDeduplicationCacheSize` | Int | `100` | Size of the message deduplication cache | + +## Message Format (`messageFormat`) + +| Key | Default | Available Placeholders | +|-----|---------|----------------------| +| `directMessageFormat` | `§7[§e{sender} §7>> §e{recipient}§7] §f{message}` | `{sender}`, `{recipient}`, `{message}` | +| `channelMessageFormat` | `§7[§b#{channel}§7] §e{sender}: §f{message}` | `{sender}`, `{message}`, `{channel}` | +| `crossServerGlobalChatFormat` | `§7[§6{server}§7] §e{sender}: §f{message}` | `{sender}`, `{message}`, `{server}` | + +## Default Configuration File + +[View on GitHub](https://github.com/m1sk9/LunaticChat/blob/main/platform-paper/src/main/resources/config.yml) diff --git a/website/src/en/docs/features/admin.md b/website/src/en/docs/features/admin.md index b2ea1e6..c3a3d2f 100644 --- a/website/src/en/docs/features/admin.md +++ b/website/src/en/docs/features/admin.md @@ -1,3 +1,74 @@ --- layout: doc --- + +# Admin Features + +This page covers features intended for server administrators. These features are primarily available to players with OP permissions. + +## Plugin Status (`/lc status`) + +View an overview of the plugin's operational status. + +``` +/lc status +``` + +Displayed information: + +- Plugin version (with Git commit hash) +- Health status (OK / Degraded) +- Enabled/disabled state of each feature +- Configuration values (debug mode, update checking, language) +- Links to GitHub, Modrinth, and documentation + +## Spy Mode + +Players with the `lunaticchat.spy` permission (default: op) can view all direct messages sent and received on the server. + +- Spy players see the original message before romaji conversion +- Hover text indicates the message is a spy message +- Spy players themselves are not included in the normal sender/recipient list + +## Channel Bypass + +Players with the `lunaticchat.channelbypass` permission (default: op) can bypass the following channel restrictions. + +- Cannot be kicked or banned +- Can delete channels even without being the owner + +## Update Notifications + +When `checkForUpdates` is `true` (default), the plugin checks for new versions at startup. Players with the `lunaticchat.noticeupdate` permission (default: op) receive an update notification when they join the server. + +```yaml +# config.yml +checkForUpdates: true +``` + +## Debug Mode + +Setting `debug` to `true` enables verbose plugin logging. This is useful for troubleshooting issues or submitting bug reports. + +```yaml +# config.yml +debug: true +``` + +## Language Setting + +You can change the language of messages displayed to players. Plugin logs and console output are not affected and remain in English only. + +```yaml +# config.yml +language: "ja" # "en" or "ja" +``` + +## Admin Permissions Reference + +| Permission | Default | Description | +|-----------|---------|-------------| +| `lunaticchat.spy` | op | View all direct messages | +| `lunaticchat.channelbypass` | op | Bypass channel restrictions | +| `lunaticchat.noticeupdate` | op | Receive update notifications | +| `lunaticchat.command.lcv.status` | op | Use the `/lcv status` command | diff --git a/website/src/en/docs/features/channel-chat.md b/website/src/en/docs/features/channel-chat.md index b2ea1e6..68d216e 100644 --- a/website/src/en/docs/features/channel-chat.md +++ b/website/src/en/docs/features/channel-chat.md @@ -1,3 +1,92 @@ --- layout: doc --- + +# Channel Chat + +Create channels to separate conversations by group. To use this feature, set `features.channelChat.enabled` to `true` in `config.yml`. + +## Creating a Channel + +``` +/lc channel create [description] [isPrivate] +``` + +- `channelId`: A unique identifier for the channel (alphanumeric, `_`, `-` only, 3-30 characters) +- `name`: The display name of the channel +- `description`: A description of the channel (optional) +- `isPrivate`: Set to `true` to make the channel private (default: `false`) + +The creator automatically becomes the owner. + +## Joining and Leaving Channels + +``` +/lc channel join # Join a channel +/lc channel leave # Leave the active channel +/lc channel switch # Switch the active channel +``` + +Joining a private channel requires an invitation from the owner or a moderator. + +## Active Channel + +Players can join multiple channels, but only one channel can be active at a time. Chat messages are sent to the active channel. Use `/lc channel switch` to change the active channel. + +``` +/lc channel status # Display the current active channel and list of joined channels +``` + +## Roles and Permissions + +Channels have three roles. + +| Role | Permissions | +|------|-------------| +| **OWNER** | Delete the channel, manage moderators, transfer ownership, manage members | +| **MODERATOR** | Invite, kick, ban/unban members | +| **MEMBER** | Participate in chat, view channel information | + +### Moderator Management (Owner Only) + +``` +/lc channel mod # Grant/revoke moderator permissions +/lc channel ownership # Transfer ownership +``` + +### Member Management (Owner / Moderator) + +``` +/lc channel invite # Invite a player +/lc channel kick # Kick a player +/lc channel ban # Ban a player +/lc channel unban # Unban a player +``` + +## Limit Settings + +You can set channel limits in `config.yml` (set to `0` for unlimited). + +| Setting Key | Description | +|-------------|-------------| +| `maxChannelsPerServer` | Maximum number of channels per server | +| `maxMembersPerChannel` | Maximum number of members per channel | +| `maxMembershipPerPlayer` | Maximum number of channels a player can join | + +## Message Logging + +Channel messages can be logged in NDJSON format. Files are rotated daily, and a new file with a suffix is created when `maxFileSizeMB` is exceeded. + +```json +{"timestamp":"2026-04-05T14:23:45.123Z","playerId":"550e8400-...","playerName":"Steve","channelId":"general","message":"Hello!"} +``` + +See the `features.channelChat.messageLogging` section on the [Configuration page](/en/docs/configuration) for logging settings. + +## Bypass Permission + +Players with the `lunaticchat.channelbypass` permission (default: op) are protected from kicks and bans, and can force-delete channels. + +## Message Format + +The display format for channel messages can be customized via `messageFormat.channelMessageFormat` in `config.yml`. See [Message Format](/en/docs/reference/message-format) for details. diff --git a/website/src/en/docs/features/direct-message.md b/website/src/en/docs/features/direct-message.md index b2ea1e6..7a88ecd 100644 --- a/website/src/en/docs/features/direct-message.md +++ b/website/src/en/docs/features/direct-message.md @@ -1,3 +1,52 @@ --- layout: doc --- + +# Direct Message + +Send and receive private 1-on-1 messages between players. + +## Basic Usage + +### Sending a Message + +``` +/tell +``` + +Aliases: `/t`, `/msg`, `/m`, `/w`, `/whisper` + +Sends a direct message to the specified player. Clicking on a received message will auto-fill the reply command to the sender. + +### Quick Reply + +``` +/reply +``` + +Alias: `/r` + +Replies to the last player who sent you a message. If there is no such player, the message is sent to the last player you messaged. + +To use quick reply, `features.quickReplies.enabled` must be `true` (default) in `config.yml`. + +## Notification Settings + +Players can individually control the sound notification when receiving direct messages. + +``` +/lc settings notice on # Enable notifications +/lc settings notice off # Disable notifications +``` + +## Integration with Japanese Conversion + +When [Japanese Conversion](/en/docs/features/japanese-conversion) is enabled, direct message content is also automatically converted to Japanese. Conversion follows each player's `japanese` setting. + +## Spy Feature + +Players with the `lunaticchat.spy` permission (default: op) can view all direct messages on the server. Spy players see the original message before conversion. + +## Message Format + +The display format for direct messages can be customized via `messageFormat.directMessageFormat` in `config.yml`. See [Message Format](/en/docs/reference/message-format) for details. diff --git a/website/src/en/docs/features/japanese-conversion.md b/website/src/en/docs/features/japanese-conversion.md index b2ea1e6..3bcd52b 100644 --- a/website/src/en/docs/features/japanese-conversion.md +++ b/website/src/en/docs/features/japanese-conversion.md @@ -1,3 +1,62 @@ --- layout: doc --- + +# Japanese Conversion + +Automatically converts chat messages typed in romaji into Japanese. To use this feature, set `features.japaneseConversion.enabled` to `true` in `config.yml`. + +## How Conversion Works + +Conversion is performed in two stages. + +1. **Romaji to Hiragana**: The plugin's built-in Trie-based conversion engine converts romaji to hiragana +2. **Hiragana to Kanji/Katakana**: The Google IME API converts hiragana into natural Japanese + +### Conversion Example + +``` +Input: konnichiha sekai +Stage 1: こんにちは せかい +Stage 2: こんにちは 世界 +``` + +## Conversion Targets + +- Normal chat +- Direct messages (`/tell`, `/reply`) +- Channel chat + +If the input is not valid romaji (e.g., contains English words), no conversion is performed and the message is sent as-is. + +## Player Settings + +Players can individually toggle conversion on or off. + +``` +/lc settings japanese on # Enable conversion +/lc settings japanese off # Disable conversion +``` + +## Cache + +Conversion results are cached per word. When the same word is converted again, the result is retrieved from cache instead of calling the API. The cache is periodically saved to disk as a JSON file. + +| Setting Key | Default | Description | +|-------------|---------|-------------| +| `cache.maxEntries` | `500` | Maximum number of cache entries | +| `cache.saveIntervalSeconds` | `300` | Interval for saving to disk (seconds) | +| `cache.filePath` | `"conversion_cache.json"` | Path to the cache file | + +When the cache reaches its limit, the oldest 10% of entries are automatically removed. + +## API Settings + +Settings related to the connection to the Google IME API. + +| Setting Key | Default | Description | +|-------------|---------|-------------| +| `api.timeout` | `3000` | Request timeout (milliseconds) | +| `api.retryAttempts` | `2` | Number of retry attempts on failure | + +If the API times out or fails, the message is sent in hiragana as-is. diff --git a/website/src/en/docs/features/message-logging.md b/website/src/en/docs/features/message-logging.md index b2ea1e6..5e929bc 100644 --- a/website/src/en/docs/features/message-logging.md +++ b/website/src/en/docs/features/message-logging.md @@ -1,3 +1,94 @@ --- layout: doc --- + +# Message Logging + +Records channel chat messages in NDJSON (Newline Delimited JSON) format to files. This feature is available when channel chat is enabled and is turned on by default. + +## Configuration + +```yaml +# config.yml +features: + channelChat: + enabled: true + messageLogging: + enabled: true + retentionDays: 30 + maxFileSizeMB: 100 +``` + +| Setting Key | Default | Description | +|-------------|---------|-------------| +| `enabled` | `true` | Enable message logging | +| `retentionDays` | `30` | Number of days to retain log files (`0` for unlimited retention) | +| `maxFileSizeMB` | `100` | Maximum size of a single log file (MB) | + +## Log File Format + +Log files are saved in the `plugins/LunaticChat/logs/` directory. Each line is a single JSON object. + +### File Naming + +``` +channel-messages-YYYY-MM-dd.json +``` + +When the file size exceeds `maxFileSizeMB`, a new file with a suffix is created. + +``` +channel-messages-2026-04-05.json # Base file +channel-messages-2026-04-05-1.json # On size overflow +channel-messages-2026-04-05-2.json # On further overflow +``` + +### Entry Format + +Each line has the following JSON structure. + +```json +{ + "timestamp": "2026-04-05T14:23:45.123Z", + "playerId": "550e8400-e29b-41d4-a716-446655440000", + "playerName": "Steve", + "channelId": "general", + "message": "Hello everyone!" +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `timestamp` | String | ISO 8601 timestamp (UTC) | +| `playerId` | String | Player UUID | +| `playerName` | String | Player display name | +| `channelId` | String | ID of the channel the message was sent to | +| `message` | String | Message content | + +## File Rotation + +- **Daily rotation**: A new file is created when the date changes +- **Size rotation**: Switches to a suffixed file when `maxFileSizeMB` is exceeded +- **Automatic cleanup**: Log files older than the number of days specified by `retentionDays` are automatically deleted (no deletion when set to `0`) + +## Usage Examples + +Since the format is NDJSON, you can easily filter and aggregate logs using tools like `jq`. + +### Extract Messages from a Specific Channel + +```bash +jq 'select(.channelId == "general")' channel-messages-2026-04-05.json +``` + +### Extract Messages from a Specific Player + +```bash +jq 'select(.playerName == "Steve")' channel-messages-2026-04-05.json +``` + +### Count Messages by Channel + +```bash +jq -s 'group_by(.channelId) | map({channel: .[0].channelId, count: length})' channel-messages-2026-04-05.json +``` diff --git a/website/src/en/docs/features/velocity.md b/website/src/en/docs/features/velocity.md index b2ea1e6..9241e80 100644 --- a/website/src/en/docs/features/velocity.md +++ b/website/src/en/docs/features/velocity.md @@ -1,3 +1,109 @@ --- layout: doc --- + +# Velocity Integration + +Relays global chat across multiple Paper / Folia servers via a Velocity proxy. + +## Setup + +### 1. Install the Velocity Plugin + +Place `LunaticChat--velocity.jar` in the Velocity `plugins/` directory and restart the proxy. + +### 2. Paper-Side Configuration + +Set the following in each Paper server's `config.yml`. + +```yaml +features: + velocityIntegration: + enabled: true + crossServerGlobalChat: true + serverName: "survival" # Must match the server name in the Velocity configuration +``` + +### 3. Verify the Connection + +``` +/lcv status +``` + +You can check the connection status, protocol version, Velocity plugin version, and more (permission: `lunaticchat.command.lcv.status`, default: op). + +## Cross-Server Global Chat + +When `crossServerGlobalChat` is set to `true`, player chat messages are relayed via Velocity to all other Paper servers. + +### Message Flow + +1. A player sends a chat message +2. The Paper server sends the message to Velocity +3. Velocity relays the message to all servers except the sender's +4. The message is displayed to players on each server + +### Message Deduplication + +Each message is assigned a unique ID, and a cache prevents the same message from being displayed more than once. The cache size can be configured with `messageDeduplicationCacheSize` (default: `100`). + +## Protocol Version + +Compatibility between Paper and Velocity is managed by protocol version. A handshake is performed upon connection, and incompatible versions are rejected. + +### Version Bump Rules + +| Level | Example Change | Compatibility | Deployment Order | +|-------|---------------|---------------|-----------------| +| PATCH (1.0.0 -> 1.0.1) | Adding optional fields, new sub-channels | Fully compatible (safe with `ignoreUnknownKeys=true`) | Any order, anytime | +| MINOR (1.0.x -> 1.1.0) | Adding required fields, changing existing sub-channel semantics | Backward compatible within `MIN_SUPPORTED_MINOR` range | **Update Velocity first** -> then update each Paper server | +| MAJOR (1.x.x -> 2.0.0) | Wire format changes, removing/renaming sub-channels | Incompatible | **Simultaneous deployment of all servers** | + +### Compatibility Check + +Compatibility is determined during the handshake using the following rules: + +- **MAJOR** versions must match +- The remote **MINOR** must be at least `MIN_SUPPORTED_MINOR` and at most the local MINOR +- **PATCH** does not affect the compatibility check + +#### Example: Velocity with protocol 1.2.0 and `MIN_SUPPORTED_MINOR=1` + +| Paper Protocol | Result | +|---------------|--------| +| 1.1.x | Connection OK | +| 1.2.x | Connection OK | +| 1.0.x | Rejected (older than `MIN_SUPPORTED_MINOR`) | +| 1.3.x | Rejected (newer than Velocity) | +| 2.0.x | Rejected (MAJOR mismatch) | + +### Operational Cycle + +1. **No protocol change** -> Paper / Velocity can be deployed independently +2. **PATCH change** -> Deploy freely from either side +3. **MINOR change** -> Update Velocity first and set `MIN_SUPPORTED_MINOR` to allow a grace period for older Paper servers. After all Paper servers are updated, raise `MIN_SUPPORTED_MINOR` +4. **MAJOR change** -> Simultaneous update during a maintenance window + +## Connection States + +| State | Description | +|-------|-------------| +| `DISCONNECTED` | Not connected | +| `HANDSHAKING` | Handshake in progress | +| `CONNECTED` | Connected | +| `FAILED` | Connection failed | + +The handshake timeout is 5 seconds. If the handshake times out, the state becomes `FAILED`. + +## Configuration Reference + +| Setting Key | Default | Description | +|-------------|---------|-------------| +| `enabled` | `false` | Enable Velocity integration | +| `crossServerGlobalChat` | `false` | Enable cross-server global chat | +| `serverName` | `"Unknown"` | Server name displayed in cross-server chat | +| `messageDeduplicationCacheSize` | `100` | Size of the message deduplication cache | + +## Message Format + +The display format for cross-server chat can be customized via `messageFormat.crossServerGlobalChatFormat` in `config.yml`. See [Message Format](/en/docs/reference/message-format) for details. diff --git a/website/src/en/docs/getting-started.md b/website/src/en/docs/getting-started.md index b2ea1e6..abfd2ac 100644 --- a/website/src/en/docs/getting-started.md +++ b/website/src/en/docs/getting-started.md @@ -1,3 +1,47 @@ --- layout: doc --- + +# Getting Started + +This guide explains how to set up LunaticChat. + +## Requirements + +| Item | Requirement | +|------|-------------| +| Minecraft | 26.1 or later | +| Java | 25 or later | +| Server | Paper, Folia, or Velocity | + +## Download + +You can download the plugin JAR from either of the following: + +- [GitHub Releases](https://github.com/m1sk9/LunaticChat/releases) +- [Modrinth](https://modrinth.com/project/lunaticchat) + +Use `LunaticChat-.jar` for Paper / Folia servers and `LunaticChat--velocity.jar` for Velocity proxies. + +## Installation + +### Paper / Folia + +1. Place the downloaded `LunaticChat-.jar` into the server's `plugins/` directory +2. Start (or restart) the server +3. `plugins/LunaticChat/config.yml` will be generated automatically +4. Modify the [configuration](/en/docs/configuration) as needed and restart the server + +### Velocity + +1. Place the downloaded `LunaticChat--velocity.jar` into the Velocity `plugins/` directory +2. Start (or restart) the Velocity proxy +3. Set `features.velocityIntegration.enabled` to `true` in the Paper-side `config.yml` +4. See [Velocity Integration](/en/docs/features/velocity) for details + +## Next Steps + +- [Configuration](/en/docs/configuration) - Review all settings in `config.yml` +- [Direct Message](/en/docs/features/direct-message) - How to use the DM feature +- [Channel Chat](/en/docs/features/channel-chat) - How to use the channel feature +- [Command Reference](/en/docs/reference/commands) - Reference for all commands diff --git a/website/src/en/docs/permissions.md b/website/src/en/docs/permissions.md index b2ea1e6..d059bba 100644 --- a/website/src/en/docs/permissions.md +++ b/website/src/en/docs/permissions.md @@ -1,3 +1,50 @@ --- layout: doc --- + +# Permissions + +A list of all permission nodes in LunaticChat. + +## Command Permissions + +All command permissions are granted to all players by default. + +| Permission | Description | +|------------|-------------| +| `lunaticchat.command.lc` | Use the `/lc` command | +| `lunaticchat.command.tell` | Use the `/tell` command | +| `lunaticchat.command.reply` | Use the `/reply` command | +| `lunaticchat.command.lc.settings` | Use `/lc settings` | +| `lunaticchat.command.lc.status` | Use `/lc status` | + +### Channel-Related + +| Permission | Description | +|------------|-------------| +| `lunaticchat.command.lc.channel` | Use `/lc channel` | +| `lunaticchat.command.lc.channel.create` | Create a channel | +| `lunaticchat.command.lc.channel.list` | View the channel list | +| `lunaticchat.command.lc.channel.join` | Join a channel | +| `lunaticchat.command.lc.channel.leave` | Leave a channel | +| `lunaticchat.command.lc.channel.switch` | Switch the active channel | +| `lunaticchat.command.lc.channel.status` | View channel membership status | +| `lunaticchat.command.lc.channel.info` | View channel information | +| `lunaticchat.command.lc.channel.delete` | Delete a channel | +| `lunaticchat.command.lc.channel.invite` | Invite to a channel | +| `lunaticchat.command.lc.channel.kick` | Kick from a channel | +| `lunaticchat.command.lc.channel.ban` | Ban from a channel | +| `lunaticchat.command.lc.channel.unban` | Unban from a channel | +| `lunaticchat.command.lc.channel.mod` | Grant or revoke moderator privileges | +| `lunaticchat.command.lc.channel.ownership` | Transfer channel ownership | + +## Admin Permissions + +The following permissions are granted to OPs only by default. + +| Permission | Default | Description | +|------------|---------|-------------| +| `lunaticchat.spy` | op | View all direct messages on the server | +| `lunaticchat.noticeupdate` | op | Receive update notifications | +| `lunaticchat.channelbypass` | op | Bypass channel restrictions (kick/ban protection, force deletion) | +| `lunaticchat.command.lcv.status` | op | Use the `/lcv status` command | diff --git a/website/src/en/docs/reference/commands.md b/website/src/en/docs/reference/commands.md index b2ea1e6..3ed72df 100644 --- a/website/src/en/docs/reference/commands.md +++ b/website/src/en/docs/reference/commands.md @@ -1,3 +1,157 @@ --- layout: doc --- + +# Command Reference + +A reference for all commands available in LunaticChat. + +## Direct Messages + +### `/tell ` + +Sends a direct message to a player. + +- **Aliases**: `t`, `msg`, `m`, `w`, `whisper` +- **Permission**: `lunaticchat.command.tell` + +### `/reply ` + +Replies to the last player who sent you a message. + +- **Aliases**: `r` +- **Permission**: `lunaticchat.command.reply` +- **Prerequisite**: Quick reply feature must be enabled + +## Main Command (`/lc`) + +**Aliases**: `lunaticchat` + +### `/lc status` + +Displays the plugin version, health, enabled features, and configuration values. + +- **Permission**: `lunaticchat.command.lc.status` + +### `/lc settings [key] [on|off]` + +Views or changes your personal settings. Without arguments, displays the settings list. + +- **Permission**: `lunaticchat.command.lc.settings` +- **Setting keys**: `japanese`, `notice`, `chNotice` (see [Player Settings](/en/docs/reference/player-settings) for details) + +## Channel Commands (`/lc channel`) + +Only available when the channel chat feature is enabled. + +### Create & Browse + +#### `/lc channel create [description] [isPrivate]` + +Creates a new channel. The creator becomes the owner. + +- **Permission**: `lunaticchat.command.lc.channel.create` +- `channelId`: Only alphanumeric characters, underscores, and hyphens are allowed +- `isPrivate`: `true` / `false` (default: `false`) + +#### `/lc channel list [page]` + +Displays a list of public channels (10 per page). + +- **Permission**: `lunaticchat.command.lc.channel.list` + +#### `/lc channel info [channelId]` + +Displays detailed information about a channel. Without arguments, shows information about the active channel. + +- **Permission**: `lunaticchat.command.lc.channel.info` + +### Join & Leave + +#### `/lc channel join ` + +Joins a channel. An invitation is required for private channels. + +- **Permission**: `lunaticchat.command.lc.channel.join` + +#### `/lc channel leave` + +Leaves the active channel. + +- **Permission**: `lunaticchat.command.lc.channel.leave` + +#### `/lc channel switch ` + +Switches the active channel to another channel you have already joined. + +- **Permission**: `lunaticchat.command.lc.channel.switch` + +#### `/lc channel status` + +Displays your channel membership status (active channel and list of joined channels). + +- **Permission**: `lunaticchat.command.lc.channel.status` + +### Moderation (Owner / Moderator) + +#### `/lc channel invite ` + +Invites a player to the active channel. Bypasses private channel restrictions. + +- **Permission**: `lunaticchat.command.lc.channel.invite` +- **Required role**: OWNER or MODERATOR + +#### `/lc channel kick ` + +Kicks a player from the active channel. + +- **Permission**: `lunaticchat.command.lc.channel.kick` +- **Required role**: OWNER or MODERATOR + +#### `/lc channel ban ` + +Bans a player from the active channel. Banned players cannot rejoin. + +- **Permission**: `lunaticchat.command.lc.channel.ban` +- **Required role**: OWNER or MODERATOR + +#### `/lc channel unban ` + +Unbans a player from the channel. + +- **Permission**: `lunaticchat.command.lc.channel.unban` +- **Required role**: OWNER or MODERATOR + +### Administration (Owner Only) + +#### `/lc channel delete ` + +Deletes a channel. + +- **Permission**: `lunaticchat.command.lc.channel.delete` +- **Required role**: OWNER (can be bypassed with `lunaticchat.channelbypass` permission) + +#### `/lc channel mod ` + +Grants or revokes moderator privileges for a channel member. + +- **Permission**: `lunaticchat.command.lc.channel.mod` +- **Required role**: OWNER + +#### `/lc channel ownership ` + +Transfers channel ownership to another member. + +- **Permission**: `lunaticchat.command.lc.channel.ownership` +- **Required role**: OWNER + +## Velocity Commands (`/lcv`) + +**Aliases**: `lunaticvelocity` + +### `/lcv status` + +Displays the connection status with the Velocity proxy, protocol version, and online player count. + +- **Permission**: `lunaticchat.command.lcv.status` +- **Default**: op only diff --git a/website/src/en/docs/reference/message-format.md b/website/src/en/docs/reference/message-format.md index b2ea1e6..2669adb 100644 --- a/website/src/en/docs/reference/message-format.md +++ b/website/src/en/docs/reference/message-format.md @@ -1,3 +1,86 @@ --- layout: doc --- + +# Message Format + +You can customize the display format of chat messages in the `messageFormat` section of `config.yml`. + +## Placeholders + +| Placeholder | Description | Available formats | +|-------------|-------------|-------------------| +| `{sender}` | Name of the message sender | All | +| `{recipient}` | Name of the message recipient | `directMessageFormat` | +| `{message}` | Message content | All | +| `{channel}` | Channel name | `channelMessageFormat` | +| `{server}` | Server name | `crossServerGlobalChatFormat` | + +## Format List + +### `directMessageFormat` + +The display format for direct messages sent via `/tell` or `/reply`. + +**Default:** +``` +§7[§e{sender} §7>> §e{recipient}§7] §f{message} +``` + +**Example:** [Steve >> Alex] Hello! + +### `channelMessageFormat` + +The display format for messages sent in channel chat. + +**Default:** +``` +§7[§b#{channel}§7] §e{sender}: §f{message} +``` + +**Example:** [#general] Steve: Hello! + +### `crossServerGlobalChatFormat` + +The display format for cross-server global chat when using Velocity integration. + +**Default:** +``` +§7[§6{server}§7] §e{sender}: §f{message} +``` + +**Example:** [survival] Steve: Hello! + +## Color Codes + +You can use color codes with the Minecraft section sign (`§`). + +| Code | Color | +|------|-------| +| `§0` | Black | +| `§1` | Dark blue | +| `§2` | Dark green | +| `§3` | Dark aqua | +| `§4` | Dark red | +| `§5` | Dark purple | +| `§6` | Gold | +| `§7` | Gray | +| `§8` | Dark gray | +| `§9` | Blue | +| `§a` | Green | +| `§b` | Aqua | +| `§c` | Red | +| `§d` | Pink | +| `§e` | Yellow | +| `§f` | White | + +### Formatting Codes + +| Code | Effect | +|------|--------| +| `§l` | **Bold** | +| `§o` | *Italic* | +| `§n` | Underline | +| `§m` | ~~Strikethrough~~ | +| `§k` | Obfuscated (characters change randomly) | +| `§r` | Reset | diff --git a/website/src/en/docs/reference/player-settings.md b/website/src/en/docs/reference/player-settings.md index b2ea1e6..6db48ac 100644 --- a/website/src/en/docs/reference/player-settings.md +++ b/website/src/en/docs/reference/player-settings.md @@ -1,3 +1,50 @@ --- layout: doc --- + +# Player Settings + +Players can change their personal settings using the `/lc settings` command. Settings are saved per UUID in the server's `player-settings.yaml` (the file path can be changed via `userSettingsFilePath` in the configuration file). + +## Command + +``` +/lc settings # Display settings list +/lc settings # Check current value +/lc settings on|off # Change value +``` + +## Setting Keys + +| Key | Description | Default | +|-----|-------------|---------| +| `japanese` | Enable romaji-to-Japanese conversion | `true` | +| `notice` | Enable direct message notifications | `true` | +| `chNotice` | Enable channel message notifications | `true` | + +### `japanese` + +Automatically converts chat messages typed in romaji to Japanese (hiragana). This setting only works when `features.japaneseConversion.enabled` is set to `true` on the server side. + +``` +/lc settings japanese on # Enable conversion +/lc settings japanese off # Disable conversion +``` + +### `notice` + +Controls notifications when receiving direct messages (`/tell` / `/reply`). + +``` +/lc settings notice on # Enable notifications +/lc settings notice off # Disable notifications +``` + +### `chNotice` + +Controls notifications when receiving channel chat messages. This setting only works when `features.channelChat.enabled` is set to `true` on the server side. + +``` +/lc settings chNotice on # Enable notifications +/lc settings chNotice off # Disable notifications +``` -- cgit v1.2.1 From 483f455ebdfe4079d16a185cf98a0004f25d5149 Mon Sep 17 00:00:00 2001 From: Sho Sakuma Date: Sun, 5 Apr 2026 01:32:23 +0900 Subject: docs(website): translate landing page to English Co-Authored-By: Claude --- website/src/en/index.md | 153 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 website/src/en/index.md (limited to 'website/src') diff --git a/website/src/en/index.md b/website/src/en/index.md new file mode 100644 index 0000000..8f5e184 --- /dev/null +++ b/website/src/en/index.md @@ -0,0 +1,153 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: 'LunaticChat' + tagline: A next-generation chat plugin for Paper, Folia and Velocity. + actions: + - theme: brand + text: Download + link: /download + - theme: brand + text: Documentation + link: /en/docs/getting-started + - theme: alt + text: GitHub + link: https://github.com/m1sk9/LunaticChat + +features: + - title: Channel Chat + details: Create and manage channels for group conversations between specific players. Includes private channels and moderation features. + icon: ☎️ + - title: Direct Messages + details: Send 1-on-1 chats with /tell or /msg commands. Quickly reply to the last sender with /reply. + icon: ✉️ + - title: Romaji Conversion + details: Automatically convert romaji input into Japanese. Fast performance powered by caching. + icon: 🌍 + - title: Velocity Cross-Server Chat + details: Relay global chat across multiple servers via a Velocity proxy. Join conversations from any server. + icon: 🔗 + - title: Flexible Configuration + details: Toggle features on/off with a YAML-based config file. Customize to fit your server's needs. + icon: ⚙️ + - title: Latest Version Support + details: Minimal external plugin dependencies, always supporting the latest Minecraft versions. + icon: ⛏️ +--- + +
    + + +
    +
    +

    Organize Conversations with Channel Chat

    +

    + Create channels within your server to separate conversations by topic or group. + Communicate with only the members you need, without flooding the global chat. +

    +
      +
    • Create password-protected private channels
    • +
    • Per-channel moderation (kick, mute, ban)
    • +
    • Customizable join/leave notifications
    • +
    +
    +
    + LunaticChat Channel Chat feature +
    +
    + +
    + + +
    +
    +

    Direct Messages & Quick Reply

    +

    + Easily send private 1-on-1 chats between players. + Use the /reply command to instantly respond to the last sender. +

    +
      +
    • Send direct messages with /tell / /msg
    • +
    • Instantly reply to the last sender with /reply
    • +
    • Messages are visible only to the sender and recipient
    • +
    +
    +
    + LunaticChat Direct Message feature +
    +
    + +
    + + +
    +
    +

    Automatic Romaji to Japanese Conversion

    +

    + Even in environments without Japanese input support, simply type in romaji and it will be automatically converted to Japanese. + Powered by the Google IME API for natural conversion results. +

    +
      +
    • Real-time romaji-to-Japanese conversion while chatting
    • +
    • Fast performance with conversion result caching
    • +
    • Per-player toggle to enable/disable conversion
    • +
    +
    +
    + LunaticChat Romaji Conversion feature +
    +
    + +
    + + +
    +
    +

    Cross-Server Chat with Velocity

    +

    + Integrate with a Velocity proxy to relay global chat across multiple Paper/Folia servers. + Players can join the same chat space regardless of which server they're on. +

    +
      +
    • Relay regular chat to all servers in real time
    • +
    • Fast communication via a custom plugin messaging protocol
    • +
    • Backward compatibility guaranteed through protocol versioning
    • +
    +
    +
    + LunaticChat Cross-Server Chat feature +
    +
    + +
    + + + -- cgit v1.2.1 From f46b5a0f0033ac86e19ccf6af762af9ff3c9d711 Mon Sep 17 00:00:00 2001 From: Sho Sakuma Date: Sun, 5 Apr 2026 01:33:50 +0900 Subject: docs(website): add English download page Co-Authored-By: Claude --- website/src/en/download.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 website/src/en/download.md (limited to 'website/src') diff --git a/website/src/en/download.md b/website/src/en/download.md new file mode 100644 index 0000000..e629415 --- /dev/null +++ b/website/src/en/download.md @@ -0,0 +1,6 @@ +--- +layout: page +title: Download +--- + + -- cgit v1.2.1 From 72d8a27419cfeaec8bf70e8d6291b64b7463eab9 Mon Sep 17 00:00:00 2001 From: Sho Sakuma Date: Sun, 5 Apr 2026 01:37:32 +0900 Subject: docs(website): fix links and i18n for download compatibility notice Update README documentation link to new docs path. Fix English nav download link to use /en/download. Make compatibility notice title translatable via i18n. Co-Authored-By: Claude --- website/src/en/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'website/src') diff --git a/website/src/en/index.md b/website/src/en/index.md index 8f5e184..b823a0d 100644 --- a/website/src/en/index.md +++ b/website/src/en/index.md @@ -8,7 +8,7 @@ hero: actions: - theme: brand text: Download - link: /download + link: /en/download - theme: brand text: Documentation link: /en/docs/getting-started -- cgit v1.2.1