diff options
Diffstat (limited to 'website/src')
| -rw-r--r-- | website/src/docs/configuration.md | 73 | ||||
| -rw-r--r-- | website/src/docs/features/admin.md | 74 | ||||
| -rw-r--r-- | website/src/docs/features/channel-chat.md | 92 | ||||
| -rw-r--r-- | website/src/docs/features/direct-message.md | 52 | ||||
| -rw-r--r-- | website/src/docs/features/japanese-conversion.md | 62 | ||||
| -rw-r--r-- | website/src/docs/features/message-logging.md | 94 | ||||
| -rw-r--r-- | website/src/docs/features/velocity.md | 109 | ||||
| -rw-r--r-- | website/src/docs/getting-started.md | 47 | ||||
| -rw-r--r-- | website/src/docs/permissions.md | 50 | ||||
| -rw-r--r-- | website/src/docs/reference/commands.md | 157 | ||||
| -rw-r--r-- | website/src/docs/reference/message-format.md | 86 | ||||
| -rw-r--r-- | website/src/docs/reference/player-settings.md | 50 | ||||
| -rw-r--r-- | website/src/index.md | 34 | ||||
| -rw-r--r-- | website/src/public/favicon.ico | bin | 0 -> 4286 bytes |
14 files changed, 963 insertions, 17 deletions
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 <channelId> <name> [description] [isPrivate] +``` + +- `channelId`: チャンネルの一意な識別子 (英数字, `_`, `-` のみ, 3〜30文字) +- `name`: チャンネルの表示名 +- `description`: チャンネルの説明 (省略可) +- `isPrivate`: プライベートチャンネルにする場合は `true` (デフォルト: `false`) + +作成者は自動的にオーナーになります. + +## チャンネルへの参加・退出 + +``` +/lc channel join <channelId> # チャンネルに参加 +/lc channel leave # アクティブチャンネルから退出 +/lc channel switch <channelId> # アクティブチャンネルを切り替え +``` + +プライベートチャンネルに参加するには,オーナーまたはモデレーターからの招待が必要です. + +## アクティブチャンネル + +プレイヤーは複数のチャンネルに参加できますが,一度にアクティブにできるチャンネルは1つです.チャットメッセージはアクティブチャンネルに送信されます.`/lc channel switch` でアクティブチャンネルを切り替えられます. + +``` +/lc channel status # 現在のアクティブチャンネルと参加チャンネル一覧を表示 +``` + +## ロールと権限 + +チャンネルには3つのロールがあります. + +| ロール | 権限 | +|--------|------| +| **OWNER** | チャンネルの削除,モデレーター管理,オーナー譲渡,メンバー管理 | +| **MODERATOR** | メンバーの招待,キック,BAN/BAN解除 | +| **MEMBER** | チャットへの参加,チャンネル情報の閲覧 | + +### モデレーター管理 (オーナーのみ) + +``` +/lc channel mod <playerName> # モデレーター権限の付与/剥奪 +/lc channel ownership <playerName> # オーナー権限の譲渡 +``` + +### メンバー管理 (オーナー / モデレーター) + +``` +/lc channel invite <playerName> # プレイヤーを招待 +/lc channel kick <playerName> # プレイヤーをキック +/lc channel ban <playerName> # プレイヤーを BAN +/lc channel unban <playerName> # 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 <player> <message> +``` + +エイリアス: `/t`, `/msg`, `/m`, `/w`, `/whisper` + +指定したプレイヤーにダイレクトメッセージを送信します.受信したメッセージをクリックすると,送信者への返信コマンドが自動入力されます. + +### クイック返信 + +``` +/reply <message> +``` + +エイリアス: `/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-<version>-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-<version>.jar` を,Velocity プロキシには `LunaticChat-<version>-velocity.jar` を使用してください. + +## インストール + +### Paper / Folia + +1. ダウンロードした `LunaticChat-<version>.jar` をサーバーの `plugins/` ディレクトリに配置します +2. サーバーを起動 (または再起動) します +3. `plugins/LunaticChat/config.yml` が自動生成されます +4. 必要に応じて[設定](/docs/configuration)を変更し,サーバーを再起動します + +### Velocity + +1. ダウンロードした `LunaticChat-<version>-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 <player> <message>` + +プレイヤーにダイレクトメッセージを送信します. + +- **エイリアス**: `t`, `msg`, `m`, `w`, `whisper` +- **パーミッション**: `lunaticchat.command.tell` + +### `/reply <message>` + +最後にメッセージを送ってきたプレイヤーに返信します. + +- **エイリアス**: `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 <channelId> <name> [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 <channelId>` + +チャンネルに参加します.プライベートチャンネルには招待が必要です. + +- **パーミッション**: `lunaticchat.command.lc.channel.join` + +#### `/lc channel leave` + +アクティブチャンネルから退出します. + +- **パーミッション**: `lunaticchat.command.lc.channel.leave` + +#### `/lc channel switch <channelId>` + +参加済みの別チャンネルをアクティブに切り替えます. + +- **パーミッション**: `lunaticchat.command.lc.channel.switch` + +#### `/lc channel status` + +自分のチャンネル参加状況(アクティブチャンネルと参加チャンネル一覧)を表示します. + +- **パーミッション**: `lunaticchat.command.lc.channel.status` + +### モデレーション(オーナー / モデレーター) + +#### `/lc channel invite <playerName>` + +プレイヤーをアクティブチャンネルに招待します.プライベートチャンネルの制限をバイパスします. + +- **パーミッション**: `lunaticchat.command.lc.channel.invite` +- **必要ロール**: OWNER または MODERATOR + +#### `/lc channel kick <playerName>` + +プレイヤーをアクティブチャンネルからキックします. + +- **パーミッション**: `lunaticchat.command.lc.channel.kick` +- **必要ロール**: OWNER または MODERATOR + +#### `/lc channel ban <playerName>` + +プレイヤーをアクティブチャンネルから BAN します.BAN されたプレイヤーは再参加できません. + +- **パーミッション**: `lunaticchat.command.lc.channel.ban` +- **必要ロール**: OWNER または MODERATOR + +#### `/lc channel unban <playerName>` + +プレイヤーのチャンネル BAN を解除します. + +- **パーミッション**: `lunaticchat.command.lc.channel.unban` +- **必要ロール**: OWNER または MODERATOR + +### 管理(オーナーのみ) + +#### `/lc channel delete <channelId>` + +チャンネルを削除します. + +- **パーミッション**: `lunaticchat.command.lc.channel.delete` +- **必要ロール**: OWNER(`lunaticchat.channelbypass` 権限で制限をバイパス可能) + +#### `/lc channel mod <playerName>` + +チャンネルメンバーのモデレーター権限を付与・剥奪します. + +- **パーミッション**: `lunaticchat.command.lc.channel.mod` +- **必要ロール**: OWNER + +#### `/lc channel ownership <playerName>` + +チャンネルのオーナー権限を別のメンバーに譲渡します. + +- **パーミッション**: `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} +``` + +**表示例:** <span style="color: gray">[</span><span style="color: gold">Steve</span> <span style="color: gray">>></span> <span style="color: gold">Alex</span><span style="color: gray">]</span> <span style="color: white">こんにちは!</span> + +### `channelMessageFormat` + +チャンネルチャットで送信されるメッセージの表示形式です. + +**デフォルト:** +``` +§7[§b#{channel}§7] §e{sender}: §f{message} +``` + +**表示例:** <span style="color: gray">[</span><span style="color: aqua">#general</span><span style="color: gray">]</span> <span style="color: gold">Steve:</span> <span style="color: white">こんにちは!</span> + +### `crossServerGlobalChatFormat` + +Velocity 連携時のクロスサーバーグローバルチャットの表示形式です. + +**デフォルト:** +``` +§7[§6{server}§7] §e{sender}: §f{message} +``` + +**表示例:** <span style="color: gray">[</span><span style="color: gold">survival</span><span style="color: gray">]</span> <span style="color: gold">Steve:</span> <span style="color: white">こんにちは!</span> + +## カラーコード + +Minecraft のセクション記号(`§`)を使ったカラーコードが使用できます. + +| コード | 色 | +|--------|------| +| `§0` | 黒 | +| `§1` | 濃い青 | +| `§2` | 濃い緑 | +| `§3` | 濃い水色 | +| `§4` | 濃い赤 | +| `§5` | 濃い紫 | +| `§6` | 金色 | +| `§7` | 灰色 | +| `§8` | 濃い灰色 | +| `§9` | 青 | +| `§a` | 緑 | +| `§b` | 水色 | +| `§c` | 赤 | +| `§d` | ピンク | +| `§e` | 黄色 | +| `§f` | 白 | + +### 装飾コード + +| コード | 効果 | +|--------|------| +| `§l` | **太字** | +| `§o` | *斜体* | +| `§n` | <u>下線</u> | +| `§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 <key> # 現在の値を確認 +/lc settings <key> 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: <div class="feature-showcase-text"> <h2>チャンネルチャットで会話を整理</h2> <p> - サーバー内にチャンネルを作成して、トピックやグループごとに会話を分離できます。 - 全体チャットに流れることなく、必要なメンバーだけでコミュニケーションが可能です。 + サーバー内にチャンネルを作成して,トピックやグループごとに会話を分離できます. + 全体チャットに流れることなく,必要なメンバーだけでコミュニケーションが可能です. </p> <ul> <li>パスワード付きのプライベートチャンネルを作成</li> @@ -65,8 +65,8 @@ features: <div class="feature-showcase-text"> <h2>ダイレクトメッセージ & クイック返信</h2> <p> - プレイヤー間で手軽に 1対1 のプライベートチャットができます。 - <code>/reply</code> コマンドで直前の相手にすぐ返信でき、テンポの良いやり取りを実現します。 + プレイヤー間で手軽に 1対1 のプライベートチャットができます. + <code>/reply</code> コマンドで直前の相手にすぐ返信でき,テンポの良いやり取りを実現します. </p> <ul> <li><code>/tell</code> / <code>/msg</code> でダイレクトメッセージを送信</li> @@ -86,8 +86,8 @@ features: <div class="feature-showcase-text"> <h2>ローマ字入力を自動で日本語に</h2> <p> - 日本語入力に対応していない環境でも、ローマ字で入力するだけで自動的に日本語に変換されます。 - Google IME API を活用し、自然な変換結果を提供します。 + 日本語入力に対応していない環境でも,ローマ字で入力するだけで自動的に日本語に変換されます. + Google IME API を活用し,自然な変換結果を提供します. </p> <ul> <li>チャット入力時にリアルタイムでローマ字→日本語変換</li> @@ -107,8 +107,8 @@ features: <div class="feature-showcase-text"> <h2>Velocity でサーバー間連携</h2> <p> - Velocity プロキシと連携して、複数の Paper/Folia サーバー間でグローバルチャットをリレーします。 - プレイヤーはどのサーバーにいても、同じチャット空間で会話に参加できます。 + Velocity プロキシと連携して,複数の Paper/Folia サーバー間でグローバルチャットをリレーします. + プレイヤーはどのサーバーにいても,同じチャット空間で会話に参加できます. </p> <ul> <li>通常チャットを全サーバーにリアルタイムでリレー</li> @@ -133,21 +133,21 @@ features: <img src="./assets/brand/paper.svg" alt="Paper" width="40" height="40" /> </div> <p class="name">Paper</p> - <p class="desc">最も広く利用されている Minecraft サーバー実装。DM、チャンネルチャット、ローマ字変換など全機能をフルサポート。Bukkit/Spigot プラグインとの互換性も維持</p> + <p class="desc">最も広く利用されている Minecraft サーバー実装.DM,チャンネルチャット,ローマ字変換など全機能をフルサポート.Bukkit/Spigot プラグインとの互換性も維持</p> </a> <a class="platform-card" href="https://papermc.io/software/folia" target="_blank" rel="noopener"> <div class="platform-icon"> <img src="./assets/brand/folia.svg" alt="Folia" width="40" height="40" /> </div> <p class="name">Folia</p> - <p class="desc">PaperMC が開発するマルチスレッド対応のサーバー実装。リージョン分割による並列処理で、大規模サーバーでも安定したチャット体験を提供</p> + <p class="desc">PaperMC が開発するマルチスレッド対応のサーバー実装.リージョン分割による並列処理で,大規模サーバーでも安定したチャット体験を提供</p> </a> <a class="platform-card" href="https://papermc.io/software/velocity" target="_blank" rel="noopener"> <div class="platform-icon"> <img src="./assets/brand/velocity.svg" alt="Velocity" width="40" height="40" /> </div> <p class="name">Velocity</p> - <p class="desc">高性能なプロキシサーバー。LunaticChat の Velocity プラグインを導入することで、複数の Paper/Folia サーバー間でグローバルチャットのリレーを実現</p> + <p class="desc">高性能なプロキシサーバー.LunaticChat の Velocity プラグインを導入することで,複数の Paper/Folia サーバー間でグローバルチャットのリレーを実現</p> </a> </div> </div> diff --git a/website/src/public/favicon.ico b/website/src/public/favicon.ico Binary files differnew file mode 100644 index 0000000..46c0cad --- /dev/null +++ b/website/src/public/favicon.ico |
