summaryrefslogtreecommitdiff
path: root/docs/src/en/admin-guide
diff options
context:
space:
mode:
Diffstat (limited to 'docs/src/en/admin-guide')
-rw-r--r--docs/src/en/admin-guide/cache.md41
-rw-r--r--docs/src/en/admin-guide/channel-chat/introduction.md74
-rw-r--r--docs/src/en/admin-guide/channel-chat/logs.md119
-rw-r--r--docs/src/en/admin-guide/configuration.md326
-rw-r--r--docs/src/en/admin-guide/getting-started.md42
-rw-r--r--docs/src/en/admin-guide/management-data.md107
-rw-r--r--docs/src/en/admin-guide/permissions.md179
-rw-r--r--docs/src/en/admin-guide/velocity.md78
8 files changed, 966 insertions, 0 deletions
diff --git a/docs/src/en/admin-guide/cache.md b/docs/src/en/admin-guide/cache.md
new file mode 100644
index 0000000..1148973
--- /dev/null
+++ b/docs/src/en/admin-guide/cache.md
@@ -0,0 +1,41 @@
+# Cache System
+
+LunaticChat includes a system that automatically caches phrases from Japanese romanization conversion to both memory and disk.
+
+For information on Japanese romanization conversion, see [here](../player-guide/japanese-romanization.md).
+
+## Memory Cache
+
+LunaticChat caches converted phrases in memory, allowing for fast responses when the same phrase is requested again.
+
+This cache is temporary and is saved to disk cache at server restart or at configured intervals.
+
+## Disk Cache
+
+LunaticChat periodically saves the contents of the memory cache to disk. This allows the cache contents to be retained even after server restarts.
+
+The file used for disk cache can be [changed in the configuration](configuration.md#cachefilepath).
+
+## Cache Release
+
+Memory cache is automatically released by the JVM's garbage collection after being cached to disk.
+
+Disk cache can be released by manually deleting the file. LunaticChat will recreate the cache file on restart.
+
+::: warning About Purge Functionality
+
+LunaticChat does not implement a cache purge feature.
+
+This is because allowing players to manipulate the host's file system is not desirable from a security perspective.
+
+:::
+
+## Cache Version
+
+The file used for disk cache includes a `version` field, which handles changes to the cache format due to LunaticChat version updates.
+
+If the version does not match, LunaticChat recognizes the cache file as **an old format cache**, ignores its contents, and recreates it in the new format.
+
+```json
+{"version":"1","entries":{}}
+```
diff --git a/docs/src/en/admin-guide/channel-chat/introduction.md b/docs/src/en/admin-guide/channel-chat/introduction.md
new file mode 100644
index 0000000..c87be1b
--- /dev/null
+++ b/docs/src/en/admin-guide/channel-chat/introduction.md
@@ -0,0 +1,74 @@
+# Channel Chat: Deployment Guide
+
+This guide explains how to deploy channel chat.
+
+## What is Channel Chat
+
+Channel chat is a feature that allows players to create channels and share chat among specific players.
+
+For detailed features, please refer to the [Player Guide](../../player-guide/channel-chat/about.md).
+
+## Preparing to Deploy Channel Chat
+
+To deploy channel chat, you need to enable the channel chat feature in the LunaticChat configuration file `config.yml`.
+
+1. Stop the server.
+2. Open `plugins/LunaticChat/config.yml`.
+3. Set `features.channelChat.enabled` to `true`.
+4. Restart the server.
+
+This will enable the channel chat feature and allow players to use channel chat.
+
+## Channel Chat Configuration
+
+The configuration items related to channel chat are as follows:
+
+- `features.channelChat.maxChannelsPerPlayer`: Specifies the maximum number of channels a single player can create.
+- `features.channelChat.maxMembersPerChannel`: Specifies the maximum number of members that can join a single channel.
+- `features.channelChat.maxMembershipPerPlayer`: Specifies the maximum number of channels a single player can join.
+
+The default is set to `0`, which means there is no limit.
+
+::: tip Recommended Settings
+
+If you want to actively use the channel chat feature, we recommend setting these values higher.
+
+However, as this may impact server performance, please set them appropriately according to your server's resource situation.
+
+Recommended settings are as follows:
+
+- `features.channelChat.maxChannelsPerPlayer`: `3` to `5`
+- `features.channelChat.maxMembersPerChannel`: `20` to `50`
+- `features.channelChat.maxMembershipPerPlayer`: `5` to `10`
+
+:::
+
+## Channel Chat Logging
+
+::: warning Compatibility with Plugins like CoreProtect
+
+As of v0.7.0, LunaticChat's channel chat feature is not compatible with logging plugins like CoreProtect.
+
+:::
+
+Channel chat logging is enabled by default.
+
+For more details, see [Channel Chat: Logs](logs.md).
+
+## Channel Management
+
+Basically, [players manage channels themselves](../../player-guide/channel-chat/moderation.md).
+
+However, as a server administrator, please note the following:
+
+- Server administrators have owner permissions for all channels. If operations are required, please respond appropriately.
+- To maintain server performance, set limits on the number of channels and members as needed.
+- If inappropriate channels or member behavior occurs, take appropriate action.
+
+If you want to avoid troubles related to channel management, consider restricting moderate commands such as `/lc channel ban`.
+
+## Plugins that Intercept Channel Chat
+
+Logging plugins like CoreProtect do not intercept LunaticChat's channel chat messages by default.
+
+However, plugins that use Paper API's `originalMessage()` to retrieve messages may intercept LunaticChat's channel chat messages.
diff --git a/docs/src/en/admin-guide/channel-chat/logs.md b/docs/src/en/admin-guide/channel-chat/logs.md
new file mode 100644
index 0000000..b65750b
--- /dev/null
+++ b/docs/src/en/admin-guide/channel-chat/logs.md
@@ -0,0 +1,119 @@
+# Channel Chat: Logs <Badge type="tip" text="v0.7.0" />
+
+Channel chat logs are a record of all messages and activities that occur within the chat.
+
+::: warning Compatibility with Plugins like CoreProtect
+
+As of v0.7.0, LunaticChat's channel chat feature is not compatible with logging plugins like CoreProtect.
+
+:::
+
+## Checking Channel Chat Logs
+
+Channel chat logs are stored in the `plugins/LunaticChat/logs/channelchat/` directory.
+
+Channel chat log files are saved in the following format:
+
+```
+{"timestamp":"2026-01-31T08:54:18.504343071Z","playerId":"ceaea267-39dd-3bac-931c-761ada671ebe","playerName":"m1sk9","channelId":"test","message":"Hello"}
+```
+
+## About File Size
+
+Each line is a complete JSON object, separated by line breaks, and the file as a whole is not a JSON array.
+
+```text
+plugins/LunaticChat/logs/
+├── channel-messages-2026-01-17.json (5.2 MB)
+├── channel-messages-2026-01-18.json (4.8 MB)
+├── channel-messages-2026-01-19.json (6.1 MB)
+├── channel-messages-2026-01-20.json (5.5 MB)
+├── channel-messages-2026-01-21.json (7.2 MB) <- Weekend, active
+├── channel-messages-2026-01-22.json (6.9 MB)
+├── channel-messages-2026-01-23.json (4.3 MB)
+├── channel-messages-2026-01-24.json (5.0 MB)
+├── channel-messages-2026-01-25.json (5.4 MB)
+├── channel-messages-2026-01-26.json (4.9 MB)
+├── channel-messages-2026-01-27.json (6.2 MB)
+├── channel-messages-2026-01-28.json (7.5 MB)
+├── channel-messages-2026-01-29.json (5.8 MB)
+├── channel-messages-2026-01-30.json (6.0 MB)
+└── channel-messages-2026-01-31.json (2.1 MB) <- Today (in progress)
+```
+
+Total: approximately 83 MB
+
+With a 30-day retention setting, the January 17 file will be automatically deleted tomorrow.
+
+### Size per Message
+
+Channel chat log entries are approximately 200 bytes per line.
+
+Assuming 1000 messages per hour:
+
+```text
+1000 msg/h × 24h × 220 bytes = 5,280,000 bytes ≈ 5.3 MB/day
+```
+
+With the default 30-day retention setting, this amounts to approximately **159 MB**.
+
+```text
+5.3 MB × 30 days = 159 MB
+```
+
+## Visualization with Grafana Loki
+
+Due to the JSON format, using Promtail to ingest channel chat logs into Grafana Loki will parse them for easier reading.
+
+```text
+2026-01-31 10:23:45.123 {job="lunatichat", player="Steve", channel="Global"}
+Hello everyone!
+
+2026-01-31 10:24:12.456 {job="lunatichat", player="Alex", channel="Global"}
+Hi Steve!
+
+2026-01-31 10:25:03.789 {job="lunatichat", player="Notch", channel="Development Team"}
+Working on new features
+```
+
+::: tip Filtering Examples
+
+Examples of querying logs in Grafana Loki:
+
+```text
+{job="lunatichat"} |= "new features"
+{job="lunatichat", channel="Global"}
+{job="lunatichat", player="Steve"}
+```
+
+:::
+
+## Command Line Checking Examples
+
+### View the latest 10 entries
+
+```bash
+tail -n 10 plugins/LunaticChat/logs/channel-messages-2026-01-31.json | jq
+```
+
+### Extract messages from a specific player
+
+```bash
+cat plugins/LunaticChat/logs/channel-messages-*.json | \
+jq 'select(.playerName=="Steve")'
+```
+
+### Count messages from a specific channel
+
+```bash
+cat plugins/LunaticChat/logs/channel-messages-*.json | \
+jq 'select(.channelId=="global")' | wc -l
+```
+
+### Message count by date
+
+```bash
+for file in plugins/LunaticChat/logs/channel-messages-*.json; do
+echo "$file: $(wc -l < $file) messages"
+done
+```
diff --git a/docs/src/en/admin-guide/configuration.md b/docs/src/en/admin-guide/configuration.md
new file mode 100644
index 0000000..9d77d46
--- /dev/null
+++ b/docs/src/en/admin-guide/configuration.md
@@ -0,0 +1,326 @@
+# Configuration
+
+```yaml
+# ----------------------------------------------
+# -------------- LunaticChat ---------------
+# ----------------------------------------------
+#
+# Docs: https://lc.m1sk9.dev
+# GitHub: https://github.com/m1sk9/LunaticChat
+#
+# This configuration file is for customizing LunaticChat's behavior.
+# Please specify appropriate values to ensure LunaticChat functions correctly.
+#
+# For detailed configuration options, please refer to the documentation:
+# Japanese: https://lc.m1sk9.dev/guide/admin/configuration
+# English: https://lc.m1sk9.dev/en/guide/admin/configuration
+# ----------------------------------------------
+
+# If enabled, Activate LunaticChat's debug mode, which provides detailed logging for troubleshooting.
+debug: false
+
+# Path to the YAML file storing player settings
+userSettingsFilePath: "player-settings.yaml"
+
+# If enabled, LunaticChat will check for updates on startup.
+checkForUpdates: true
+
+# Plugin Configuration Language. This setting applies only to player feedback and does not affect plugin logs or similar outputs.
+language: "en"
+
+# ----------------------------------------------
+# ----------- Features Settings ------------
+# ----------------------------------------------
+
+features:
+ quickReplies:
+ # If enabled, the quick reply feature via the /reply command will be activated.
+ enabled: true
+ japaneseConversion:
+ # If enabled, enables the conversion function from Roman letters to hiragana.
+ enabled: false
+ cache:
+ # Specifies the maximum number of entries to store in the Romanization conversion cache.
+ maxEntries: 500
+ # Specify the interval (in seconds) for saving the Romanization conversion cache to disk.
+ saveIntervalSeconds: 300
+ # Specify the file path where the cache for Romanization conversion is saved.
+ filePath: "conversion_cache.json"
+ api:
+ # Specify the timeout duration (in milliseconds) for API requests to the Romanization conversion service.
+ timeout: 3000
+ # Specify the number of retry attempts for failed API requests to the Romanization conversion service.
+ retryAttempts: 2
+ channelChat:
+ # If enabled, channel-based chat functionality will be activated.
+ enabled: false
+ # Maximum number of channels that can be created per server. Set to 0 for unlimited.
+ maxChannelsPerServer: 0
+ # Maximum number of members allowed in a single channel. Set to 0 for unlimited.
+ maxMembersPerChannel: 0
+ # Maximum number of channels a single player can join. Set to 0 for unlimited.
+ maxMembershipPerPlayer: 0
+ # Channel message logging configuration
+ messageLogging:
+ # If enabled, all channel messages will be logged to NDJSON files for analysis and archival.
+ enabled: true
+ # Number of days to retain log files. Set to 0 to keep logs indefinitely.
+ retentionDays: 30
+ # Maximum size of a single log file in megabytes. Files exceeding this size will stop accepting new entries.
+ maxFileSizeMB: 100
+ velocityIntegration:
+ # If enabled, enables integration with Velocity proxy plugin.
+ # This allows Paper and Velocity instances to communicate and verify compatibility.
+ enabled: false
+ # If enabled, global chat messages will be shared across all Paper servers connected to the Velocity proxy.
+ # Players on different servers can communicate through the GLOBAL chat mode.
+ crossServerGlobalChat: false
+ # Server name to display in cross-server chat (e.g., "survival", "creative", "lobby").
+ # This should match the server name defined in your Velocity configuration.
+ serverName: "Unknown"
+ # Size of the message deduplication cache to prevent duplicate messages from appearing.
+ # Keeps track of the most recent N message IDs to filter out duplicates.
+ messageDeduplicationCacheSize: 100
+
+# ----------------------------------------------
+# --------- Message Format Settings --------
+# ----------------------------------------------
+#
+# Customize the format of various chat messages here.
+# You can use placeholders such as {sender}, {message}, etc.
+#
+# {sender} - The name of the message sender
+# {recipient} - The name of the message recipient
+# {message} - The content of the message
+# {channel} - The name of the chat channel (only for channel chat)
+# {server} - The name of the server (only for Velocity cross-server chat)
+# ----------------------------------------------
+
+messageFormat:
+ # Configure the format for direct messages sent via /tell or /msg
+ directMessageFormat: "§7[§e{sender} §7>> §e{recipient}§7] §f{message}"
+ # Configure the format for messages sent in channel chat
+ channelMessageFormat: "§7[§b#{channel}§7] §e{sender}: §f{message}"
+ # Configure the format for global chat messages in Velocity integration
+ crossServerGlobalChatFormat: "§7[§6{server}§7] §e{sender}: §f{message}"
+```
+
+## General Settings
+
+### `debug`
+
+- Type: `boolean`
+- Default: `false`
+
+Starts LunaticChat in debug mode.
+
+### `userSettingsFilePath`
+
+- Type: `string`
+- Default: `player-settings.yaml`
+
+Specifies the path to the YAML file where LunaticChat saves player settings.
+
+### `checkForUpdates`
+
+- Type: `boolean`
+- Default: `true`
+
+Configures whether to prompt for LunaticChat updates at startup and when players with the required permissions join the server.
+
+### `language`
+
+- Type: `string`
+- Default: `en`
+
+Specifies the language for LunaticChat's player-facing messages.
+
+### Supported languages:
+
+- `en`: English
+- `ja`: Japanese (日本語)
+
+## Features Settings
+
+### `features.quickReplies.enabled`
+
+- Type: `boolean`
+- Default: `true`
+
+Enables the quick reply feature via the [`/reply`](../player-guide/commands/reply.md) command in LunaticChat.
+
+When disabled, the [`/reply`](../player-guide/commands/reply.md) command will not be registered with Paper and cannot be used.
+
+### `features.japaneseConversion.enabled`
+
+- Type: `boolean`
+- Default: `false`
+
+Enables the conversion feature from romaji to hiragana.
+
+### `features.japaneseConversion`
+
+#### `cache.maxEntries`
+
+- Type: `integer`
+- Default: `500`
+
+Specifies the maximum number of entries to store in the romanization conversion cache.
+
+When this value is exceeded, the oldest entries are deleted first.
+
+Setting a higher value improves conversion performance, but also increases memory usage and cache file size.
+
+#### `cache.saveIntervalSeconds`
+
+- Type: `integer`
+- Default: `300`
+
+Specifies the interval (in seconds) for saving the romanization conversion cache to disk.
+
+#### `cache.filePath`
+
+- Type: `string`
+- Default: `conversion_cache.json`
+
+Specifies the file path where the romanization conversion cache is saved.
+
+The path set here is interpreted as a relative path from the `plugins/LunaticChat/` directory.
+
+#### `api.timeout`
+
+- Type: `integer`
+- Default: `3000`
+
+Specifies the timeout duration (in milliseconds) for API requests to the romanization conversion service.
+
+#### `api.retryAttempts`
+
+- Type: `integer`
+- Default: `2`
+
+Specifies the number of retry attempts for failed API requests to the romanization conversion service.
+
+### `features.channelChat`
+
+#### `enabled`
+
+- Type: `boolean`
+- Default: `false`
+
+Enables channel-based chat functionality.
+
+#### `maxChannelsPerServer`
+
+- Type: `integer`
+- Default: `0`
+
+Specifies the maximum number of channels that can be created per server.
+
+Set to `0` for unlimited.
+
+#### `maxMembersPerChannel`
+
+- Type: `integer`
+- Default: `0`
+
+Specifies the maximum number of members that can join a single channel.
+
+Set to `0` for unlimited.
+
+#### `maxMembershipPerPlayer`
+
+- Type: `integer`
+- Default: `0`
+
+Specifies the maximum number of channels a single player can join.
+
+Set to `0` for unlimited.
+
+#### `messageLogging.enabled`
+
+- Type: `boolean`
+- Default: `true`
+
+Specifies whether to log channel chat messages in NDJSON format.
+
+#### `messageLogging.retentionDays`
+
+- Type: `integer`
+- Default: `30`
+
+Specifies the number of days to retain channel chat log files.
+
+Set to `0` to never delete log files.
+
+#### `messageLogging.maxFileSizeMB`
+
+- Type: `integer`
+- Default: `100`
+
+Specifies the maximum size (in megabytes) of channel chat log files.
+
+Log files exceeding `maxFileSizeMB` will stop accepting new entries.
+
+### `features.velocityIntegration`
+
+#### `enabled`
+
+- Type: `boolean`
+- Default: `false`
+
+Enables integration with Velocity proxy plugin.
+
+#### `crossServerGlobalChat`
+
+- Type: `boolean`
+- Default: `false`
+
+Specifies whether to share chat messages across all Paper servers connected to the Velocity proxy.
+
+#### `serverName`
+
+- Type: `string`
+- Default: `Unknown`
+
+Specifies the server name to display in Velocity cross-server chat.
+
+Examples: `survival`, `creative`, `lobby`
+
+#### `messageDeduplicationCacheSize`
+
+- Type: `integer`
+- Default: `100`
+
+Specifies the size of the message deduplication cache.
+
+## Message Format Settings
+
+Available placeholders:
+
+- `{sender}`: Name of the message sender
+- `{recipient}`: Name of the message recipient
+- `{message}`: Content of the message
+- `{channel}`: Name of the chat channel (only for channel chat)
+- `{server}`: Name of the server (only for Velocity cross-server chat)
+
+### `messageFormat.directMessageFormat`
+
+- Type: `string`
+- Default: `§7[§e{sender} §7>> §e{recipient}§7] §f{message}`
+
+Specifies the format for messages sent via direct message ([`/tell`](../player-guide/commands/tell.md) or [`/reply`](../player-guide/commands/reply.md) commands).
+
+### `messageFormat.channelMessageFormat`
+
+- Type: `string`
+- Default: `§7[§b#{channel}§7] §e{sender}: §f{message}`
+
+Specifies the format for messages sent in channel chat.
+
+### `messageFormat.crossServerGlobalChatFormat`
+
+- Type: `string`
+- Default: `§7[§6{server}§7] §e{sender}: §f{message}`
+
+Specifies the format for messages sent via Velocity cross-server global chat.
diff --git a/docs/src/en/admin-guide/getting-started.md b/docs/src/en/admin-guide/getting-started.md
new file mode 100644
index 0000000..c7654a0
--- /dev/null
+++ b/docs/src/en/admin-guide/getting-started.md
@@ -0,0 +1,42 @@
+# Getting Started
+
+## Installation
+
+Install LunaticChat. LunaticChat can be obtained from:
+
+- [GitHub](https://github.com/m1sk9/LunaticChat/releases)
+- [Modrinth](https://modrinth.com/project/lunaticchat)
+
+Place the downloaded plugin file in your server's `plugins` folder and restart the server.
+
+## Configuration
+
+When LunaticChat starts, the following files will be created:
+
+- `plugins/LunaticChat/config.yml`: Plugin configuration file
+- `plugins/LunaticChat/player-settings.yaml`: User-specific settings file
+- `plugins/LunaticChat/conversion_cache.json`: Romanization conversion cache file
+
+Open the configuration file `config.yml` and modify the settings as needed. For details on configuration options, refer to the [Configuration Guide](./configuration.md).
+
+## Permissions
+
+Set LunaticChat's permissions using a permission management plugin like LuckPerms.
+
+Basic permissions can be configured using Paper or Velocity's default permission system (`OP` / `non OP`), but LuckPerms is recommended for more detailed control.
+
+- For details on permission nodes, refer to the [Permissions Guide](./permissions.md).
+- For permission nodes corresponding to each command feature, refer to the [Command Reference](../player-guide/index.md).
+
+## Restart the server
+
+After completing the configuration, restart the server to apply the changes.
+
+This completes the basic setup of LunaticChat.
+
+## What's next?
+
+- [Cache System](./cache.md): Explains LunaticChat's cache system.
+- [Channel Chat](./channel-chat/introduction.md): Overview of the channel chat feature.
+- [Command List](../player-guide/index.md): View the list of LunaticChat commands.
+- [Permissions List](./permissions.md): View LunaticChat's permission nodes.
diff --git a/docs/src/en/admin-guide/management-data.md b/docs/src/en/admin-guide/management-data.md
new file mode 100644
index 0000000..ffed59d
--- /dev/null
+++ b/docs/src/en/admin-guide/management-data.md
@@ -0,0 +1,107 @@
+# Data and Logs
+
+::: danger Do Not Edit
+
+These data files are essential to the operation of LunaticChat. Direct editing may cause data corruption or unexpected behavior. Do not directly edit these files unless you are backing up data.
+
+:::
+
+## Data Storage Location
+
+LunaticChat saves channel data and configuration information to local disk.
+
+- `channels.json`: Stores channel information.
+- `chatmodes.json`: Stores player chat mode settings.
+- `conversion_cache.json`: Stores cache for channel conversion.
+- `player-settings.yaml`: Stores player-specific settings.
+
+::: tip Regular Backups
+
+To ensure the safety of your LunaticChat data, we recommend creating regular backups.
+
+:::
+
+### `channels.json`
+
+The `channels.json` file stores information about channels managed by LunaticChat. This file contains information such as channel names, participant lists, and chat modes.
+
+```json
+{
+ "channels": {
+ "general-channel": {
+ "id": "general-channel",
+ "name": "General Channel",
+ "ownerId": "a01e3843-e521-3998-958a-f459800e4d11",
+ "createdAt": 1769507213150,
+ "bannedPlayers": [
+ "ceaea267-39dd-3bac-931c-761ada671ebe"
+ ]
+ }
+ },
+ "members": {
+ "general-channel": [
+ {
+ "channelId": "test2",
+ "playerId": "a01e3843-e521-3998-958a-f459800e4d11",
+ "role": "OWNER",
+ "joinedAt": 1769507213150
+ }
+ ]
+ },
+ "activeChannels": {
+ "a01e3843-e521-3998-958a-f459800e4d11": "test2"
+ }
+}
+```
+
+### `chatmodes.json`
+
+The `chatmodes.json` file stores player chat mode settings. This file contains chat mode information for each player.
+
+```json
+{
+ "modes": {
+ "aed5efd4-551b-3965-bc28-ae21aa072a66": "CHANNEL",
+ "ceaea267-39dd-3bac-931c-761ada671ebe": "CHANNEL",
+ "a01e3843-e521-3998-958a-f459800e4d11": "CHANNEL",
+ "681f539b-8bb8-3f85-85e5-a2945f6c6539": "GLOBAL"
+ }
+}
+```
+
+### `conversion_cache.json`
+
+The `conversion_cache.json` file stores cache for channel conversion. This file contains channel conversion information for each player.
+
+For more information about the cache system, see [here](./cache.md).
+
+
+```json
+{"version":"1","entries":{"hi":"日"}}
+```
+
+### `player-settings.yaml`
+
+The `player-settings.yaml` file stores player-specific settings. This file contains individual player settings.
+
+```yaml
+version: 1
+japaneseConversion:
+ "aed5efd4-551b-3965-bc28-ae21aa072a66": false
+ "ceaea267-39dd-3bac-931c-761ada671ebe": false
+directMessageNotification:
+ "aed5efd4-551b-3965-bc28-ae21aa072a66": true
+ "ceaea267-39dd-3bac-931c-761ada671ebe": true
+channelMessageNotification:
+ "ceaea267-39dd-3bac-931c-761ada671ebe": true
+```
+
+## Cache Version
+
+Files used for disk caching include a `version` field to accommodate changes in cache format as LunaticChat is upgraded.
+
+If the version does not match, LunaticChat recognizes the cache file as **old format cache**, ignores the contents, and recreates it in the new format.
+
+```json
+{"version":"1","entries":{}}
+```
diff --git a/docs/src/en/admin-guide/permissions.md b/docs/src/en/admin-guide/permissions.md
new file mode 100644
index 0000000..6bb8172
--- /dev/null
+++ b/docs/src/en/admin-guide/permissions.md
@@ -0,0 +1,179 @@
+# Permissions
+
+For details on configuration using LuckPerms, refer to the [LuckPerms Wiki](https://luckperms.net/wiki/Home).
+
+## `lunaticchat.*`
+
+### `lunaticchat.spy`
+
+- Default: `OP`
+
+Visualizes communication via [`/tell`](../player-guide/commands/tell.md) / [`/reply`](../player-guide/commands/reply.md) commands.
+
+Players with this permission will have messages from other players' [`/tell`](../player-guide/commands/tell.md) / [`/reply`](../player-guide/commands/reply.md) commands broadcast to them.
+
+### `lunaticchat.noticeUpdate`
+
+- Default: `OP`
+
+Receives LunaticChat update notifications.
+
+[You must have `checkForUpdates` enabled](./configuration.md#checkforupdates) to receive notifications.
+
+### `lunaticchat.channelbypass`
+
+- Default: `OP`
+
+Bypasses moderation features and restrictions on private channels.
+
+## `lunaticchat.command.*`
+
+### `lunaticchat.command.tell`
+
+- Default: `non OP`
+
+Toggles the use of the [`/tell`](../player-guide/commands/tell.md) command.
+
+### `lunaticchat.command.reply`
+
+- Default: `non OP`
+
+Toggles the use of the [`/reply`](../player-guide/commands/reply.md) command.
+
+### `lunaticchat.command.lc`
+
+- Default: `non OP`
+
+Toggles the use of the `/lc` command.
+
+### `lunaticchat.command.lc.settings`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc settings`](../player-guide/commands/lc/settings.md) command.
+
+### `lunaticchat.command.lc.status`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc status`](../player-guide/commands/lc/status.md) command.
+
+### `lunaticchat.command.lc.channel`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.create`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel create`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.list`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel list`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.join`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel join`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.leave`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel leave`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.switch`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel switch`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.status`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel status`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.info`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel info`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.delete`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel delete`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.invite`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel invite`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.kick`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel kick`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.ban`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel ban`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.unban`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel unban`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.mod`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel mod`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.channel.ownership`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc channel ownership`](../player-guide/commands/lc/channel.md) command.
+
+### `lunaticchat.command.lc.chatmode`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc chatmode`](../player-guide/commands/lc/chatmode.md) command.
+
+### `lunaticchat.command.lc.chatmode.toggle`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc chatmode toggle`](../player-guide/commands/lc/chatmode.md) command.
+
+### `lunaticchat.command.lcv.status`
+
+- Default: `OP`
+
+Toggles the use of the [`/lcv status`](../player-guide/commands/lcv/status.md) command.
+
+### `lunaticchat.command.jp` <Badge type="danger" text="Deprecated: Will be removed in v1.0.0" />
+
+- Default: `non OP`
+
+Toggles the use of the [`/jp`](../player-guide/commands/jp.md) command.
+
+### `lunaticchat.command.notice` <Badge type="danger" text="Deprecated: Will be removed in v1.0.0" />
+
+- Default: `non OP`
+
+Toggles the use of the [`/notice`](../player-guide/commands/notice.md) command.
diff --git a/docs/src/en/admin-guide/velocity.md b/docs/src/en/admin-guide/velocity.md
new file mode 100644
index 0000000..e1f9aa0
--- /dev/null
+++ b/docs/src/en/admin-guide/velocity.md
@@ -0,0 +1,78 @@
+# Velocity Integration (Cross-Server Chat) <Badge type="tip" text="v0.8.0" />
+
+This feature enables cross-server chat between Paper servers connected through a Velocity proxy server.
+
+::: warning Experimental Feature
+
+This feature is currently provided as an experimental feature. Specifications may change in future updates.
+
+:::
+
+## Enabling Integration
+
+To enable Velocity integration, follow these steps:
+
+1. Install the Velocity version of LunaticChat on the Velocity side.
+2. Open `plugins/LunaticChat/config.yml` on each Paper server and set `velocity.enabled` to `true`.
+3. Start Velocity and Paper, and verify that the integration completion message appears.
+
+## Plugin Version and Protocol Version
+
+For Velocity and Paper's LunaticChat to integrate correctly, both plugin versions and protocol versions must be compatible.
+
+- Ensure that the LunaticChat versions on Velocity and Paper sides are the same.
+ - Compatibility may not be guaranteed when using beta or development versions.
+- Ensure that protocol versions match.
+
+::: danger Regarding LunaticChat versions prior to v0.7.0
+
+LunaticChat versions prior to v0.7.0 are not backward compatible with the Velocity version.
+
+They cannot be used together, so if you are using LunaticChat prior to v0.7.0, do not use the Velocity integration feature.
+
+:::
+
+## How to Check Integration Status
+
+To verify that Velocity integration is working properly, use the `/lcv status` command.
+
+The current protocol version and connection state will be displayed.
+
+::: warning Behavior When Versions Mismatch
+
+When the version or protocol version does not match, the Velocity integration feature is disabled, but **the plugin itself continues to operate**.
+
+You can check the connection state and error details using the `/lcv status` command. To reconnect, ensure that the LunaticChat version / protocol version on Velocity and Paper sides match.
+
+:::
+
+::: tip About Velocity Integration Timing
+
+LunaticChat connects to Velocity **when the first player joins the server** after startup.
+
+Therefore, if you run the `/lcv status` command immediately after server startup, the Velocity integration may not be established yet.
+
+:::
+
+## Troubleshooting
+
+If you encounter issues with Velocity integration, check the following:
+
+- **Run the `/lcv status` command to check the connection state**. If there are errors such as version mismatches, an error message will be displayed.
+- Ensure that the LunaticChat version / protocol version on Velocity and Paper sides are the same.
+- Verify that LunaticChat settings are correct.
+- Ensure that network connection between Velocity server and Paper servers is working properly.
+
+## Cross-Server Chat
+
+When Velocity integration is enabled, chat messages are shared across all servers connected through the proxy server.
+
+## Features Compatible with Velocity Integration
+
+The main features available during Velocity integration are as follows:
+
+| | Compatibility | Behavior | Notes |
+|------------| --- | --- | --- |
+| Direct Messages | × | `/tell` and `/reply` commands operate only within the server | Direct messages do not support Velocity integration. |
+| Channel Chat | × | Channel chat operates only within the server | Channel chat does not support Velocity integration. |
+| Kana/Romanization | ◯ | Kana/Romanization works across all servers | |