diff options
| author | Sho Sakuma <me@m1sk9.dev> | 2026-04-05 01:30:38 +0900 |
|---|---|---|
| committer | Sho Sakuma <me@m1sk9.dev> | 2026-04-05 01:30:38 +0900 |
| commit | 1f73ccd87e9dae859e94475e0697b352b60ad3e7 (patch) | |
| tree | 7ee843c68dc12dc591ca87452cdd879c34a41fc6 /website/src | |
| parent | 00b896b4fee42dd4386768dfc867f0e8c7d2dc11 (diff) | |
| download | LunaticChat-1f73ccd87e9dae859e94475e0697b352b60ad3e7.tar.gz LunaticChat-1f73ccd87e9dae859e94475e0697b352b60ad3e7.tar.bz2 LunaticChat-1f73ccd87e9dae859e94475e0697b352b60ad3e7.zip | |
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 <noreply@anthropic.com>
Diffstat (limited to 'website/src')
| -rw-r--r-- | website/src/en/docs/configuration.md | 70 | ||||
| -rw-r--r-- | website/src/en/docs/features/admin.md | 71 | ||||
| -rw-r--r-- | website/src/en/docs/features/channel-chat.md | 89 | ||||
| -rw-r--r-- | website/src/en/docs/features/direct-message.md | 49 | ||||
| -rw-r--r-- | website/src/en/docs/features/japanese-conversion.md | 59 | ||||
| -rw-r--r-- | website/src/en/docs/features/message-logging.md | 91 | ||||
| -rw-r--r-- | website/src/en/docs/features/velocity.md | 106 | ||||
| -rw-r--r-- | website/src/en/docs/getting-started.md | 44 | ||||
| -rw-r--r-- | website/src/en/docs/permissions.md | 47 | ||||
| -rw-r--r-- | website/src/en/docs/reference/commands.md | 154 | ||||
| -rw-r--r-- | website/src/en/docs/reference/message-format.md | 83 | ||||
| -rw-r--r-- | website/src/en/docs/reference/player-settings.md | 47 |
12 files changed, 910 insertions, 0 deletions
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 <channelId> <name> [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 <channelId> # Join a channel +/lc channel leave # Leave the active channel +/lc channel switch <channelId> # 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 <playerName> # Grant/revoke moderator permissions +/lc channel ownership <playerName> # Transfer ownership +``` + +### Member Management (Owner / Moderator) + +``` +/lc channel invite <playerName> # Invite a player +/lc channel kick <playerName> # Kick a player +/lc channel ban <playerName> # Ban a player +/lc channel unban <playerName> # 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 <player> <message> +``` + +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 <message> +``` + +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-<version>-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-<version>.jar` for Paper / Folia servers and `LunaticChat-<version>-velocity.jar` for Velocity proxies. + +## Installation + +### Paper / Folia + +1. Place the downloaded `LunaticChat-<version>.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-<version>-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 <player> <message>` + +Sends a direct message to a player. + +- **Aliases**: `t`, `msg`, `m`, `w`, `whisper` +- **Permission**: `lunaticchat.command.tell` + +### `/reply <message>` + +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 <channelId> <name> [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 <channelId>` + +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 <channelId>` + +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 <playerName>` + +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 <playerName>` + +Kicks a player from the active channel. + +- **Permission**: `lunaticchat.command.lc.channel.kick` +- **Required role**: OWNER or MODERATOR + +#### `/lc channel ban <playerName>` + +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 <playerName>` + +Unbans a player from the channel. + +- **Permission**: `lunaticchat.command.lc.channel.unban` +- **Required role**: OWNER or MODERATOR + +### Administration (Owner Only) + +#### `/lc channel delete <channelId>` + +Deletes a channel. + +- **Permission**: `lunaticchat.command.lc.channel.delete` +- **Required role**: OWNER (can be bypassed with `lunaticchat.channelbypass` permission) + +#### `/lc channel mod <playerName>` + +Grants or revokes moderator privileges for a channel member. + +- **Permission**: `lunaticchat.command.lc.channel.mod` +- **Required role**: OWNER + +#### `/lc channel ownership <playerName>` + +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:** <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">Hello!</span> + +### `channelMessageFormat` + +The display format for messages sent in channel chat. + +**Default:** +``` +§7[§b#{channel}§7] §e{sender}: §f{message} +``` + +**Example:** <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">Hello!</span> + +### `crossServerGlobalChatFormat` + +The display format for cross-server global chat when using Velocity integration. + +**Default:** +``` +§7[§6{server}§7] §e{sender}: §f{message} +``` + +**Example:** <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">Hello!</span> + +## 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` | <u>Underline</u> | +| `§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 <key> # Check current value +/lc settings <key> 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 +``` |
