summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSho Sakuma <me@m1sk9.dev>2026-01-24 05:01:27 +0900
committerGitHub <noreply@github.com>2026-01-24 05:01:27 +0900
commite3387a401c6d0d094b3afa734558e9257465a42b (patch)
tree4202c404fc72249f117162a37a573bcec274d555
parentac80dc3ce71f9be0397442208cac80f6069eea03 (diff)
parentf6b0baf90c20a1d3b0cd53629102883b4bd913c6 (diff)
downloadLunaticChat-0.5.0.tar.gz
LunaticChat-0.5.0.tar.bz2
LunaticChat-0.5.0.zip
Merge pull request #65 from m1sk9/chore/release-beta-stagev0.5.0
chore: Release to beta stage
-rw-r--r--.github/renovate.json3
-rw-r--r--.github/workflows/release.yaml5
-rw-r--r--CLAUDE.md308
-rw-r--r--README.md18
-rw-r--r--docs/.vitepress/config.mts266
-rw-r--r--docs/src/en/guide/about.md60
-rw-r--r--docs/src/en/guide/admin/cache.md41
-rw-r--r--docs/src/en/guide/admin/configuration.md180
-rw-r--r--docs/src/en/guide/admin/velocity.md13
-rw-r--r--docs/src/en/guide/getting-started.md29
-rw-r--r--docs/src/en/guide/patch-notes/cache-file.md5
-rw-r--r--docs/src/en/guide/patch-notes/plugin.md9
-rw-r--r--docs/src/en/guide/player/channel-chat.md13
-rw-r--r--docs/src/en/guide/player/direct-message.md65
-rw-r--r--docs/src/en/guide/player/japanese-romanization.md101
-rw-r--r--docs/src/en/index.md51
-rw-r--r--docs/src/en/reference/commands/jp.md17
-rw-r--r--docs/src/en/reference/commands/lc/settings.md18
-rw-r--r--docs/src/en/reference/commands/lc/status.md9
-rw-r--r--docs/src/en/reference/commands/notice.md17
-rw-r--r--docs/src/en/reference/commands/reply.md17
-rw-r--r--docs/src/en/reference/commands/tell.md11
-rw-r--r--docs/src/en/reference/index.md23
-rw-r--r--docs/src/en/reference/permissions.md59
-rw-r--r--docs/src/guide/about.md60
-rw-r--r--docs/src/guide/admin/cache.md41
-rw-r--r--docs/src/guide/admin/configuration.md (renamed from docs/src/guide/configuration.md)6
-rw-r--r--docs/src/guide/admin/velocity.md13
-rw-r--r--docs/src/guide/getting-started.md6
-rw-r--r--docs/src/guide/patch-notes/cache-file.md5
-rw-r--r--docs/src/guide/patch-notes/plugin.md9
-rw-r--r--docs/src/guide/permissions.md47
-rw-r--r--docs/src/guide/player/channel-chat.md13
-rw-r--r--docs/src/guide/player/direct-message.md65
-rw-r--r--docs/src/guide/player/japanese-romanization.md (renamed from docs/src/guide/japanese-romanization.md)62
-rw-r--r--docs/src/index.md30
-rw-r--r--docs/src/reference/commands/jp.md10
-rw-r--r--docs/src/reference/commands/lc/settings.md18
-rw-r--r--docs/src/reference/commands/lc/status.md9
-rw-r--r--docs/src/reference/commands/notice.md12
-rw-r--r--docs/src/reference/commands/reply.md4
-rw-r--r--docs/src/reference/commands/tell.md2
-rw-r--r--docs/src/reference/permissions.md59
-rw-r--r--docs/src/static/direct-message/minecraft-player-sound.pngbin0 -> 1609414 bytes
-rw-r--r--docs/src/static/favicon.icobin4286 -> 4286 bytes
-rw-r--r--docs/src/static/icon.pngbin8069496 -> 122601 bytes
-rw-r--r--platform-paper/src/main/resources/paper-plugin.yml2
47 files changed, 1373 insertions, 438 deletions
diff --git a/.github/renovate.json b/.github/renovate.json
index fc2b67c..55f60b6 100644
--- a/.github/renovate.json
+++ b/.github/renovate.json
@@ -2,5 +2,8 @@
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"github>m1sk9/renovate-config"
+ ],
+ "addLabels": [
+ "Type: dependencies"
]
}
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index ab2374e..d130b85 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -96,11 +96,12 @@ jobs:
TAG_NAME=${GITHUB_REF#refs/tags/}
VERSION=${{ needs.validate.outputs.version }}
JAR_NAME=${{ needs.validate.outputs.jar_name }}
+ VERSION_ANCHOR=$(echo "$VERSION" | tr -d '.')
gh release create "$TAG_NAME" \
"$JAR_NAME" \
--title "$TAG_NAME" \
- --notes "Please refer to [changelog](./CHANGELOG.md) for update details."
+ --notes "Please refer to [changelog](./CHANGELOG.md#v${VERSION_ANCHOR}) for update details."
- name: Publish to Modrinth
uses: cloudnode-pro/modrinth-publish@0a5268ad092d4727bb6424326746fa2fe88761ff # v2
@@ -109,7 +110,7 @@ jobs:
name: LunaticChat v${{ needs.validate.outputs.version }}
project: ${{ secrets.MODRINTH_PROJECT_ID }}
version: ${{ needs.validate.outputs.version }}
- channel: alpha
+ channel: beta
changelog: |
Please refer to [changelog](https://github.com/m1sk9/LunaticChat/blob/main/CHANGELOG.md) for update details.
loaders: paper
diff --git a/CLAUDE.md b/CLAUDE.md
deleted file mode 100644
index fd482ab..0000000
--- a/CLAUDE.md
+++ /dev/null
@@ -1,308 +0,0 @@
-# LunaticChat - Design Document
-
-## Project Overview
-
-LunaticChat is a Minecraft chat plugin providing 1on1 messaging, quick reply functionality, and romaji-to-Japanese conversion features.
-
-## Technology Stack
-
-- **Language**: Kotlin
-- **Target Platforms**:
- - Paper (Minecraft 1.21.x+)
- - Velocity (planned for future)
-- **Build Tool**: Gradle (multi-project setup)
-
-## Core Principles
-
-1. **Always support the latest version** while maintaining backward compatibility (e.g., 1.21.x)
-2. **Maintainability**: Design for extensibility and easy maintenance
-3. **Use Paper's LifecycleEventManager** for command registration
-4. **Chat logs must be compatible** with CoreProtect and similar logging plugins
-
-## Project Structure
-
-```
-LunaticChat/
-├── engine/ # Core logic (shared code, chat processing, romaji conversion)
-├── platform-paper/ # Paper plugin implementation
-├── platform-velocity/ # Velocity plugin implementation
-└── docker/ # Docker configuration
-```
-
-### Why Separate JARs?
-
-- Paper and Velocity use different APIs
-- Avoids classloader conflicts
-- Clear deployment boundaries
-- Gradle multi-project keeps build unified
-
-## Features (v0.1.0)
-
-### 1. Direct Messaging System
-
-**Commands**:
-- `/tell` (aliases: `/t`, `/msg`, `/m`, `/w`, `/whisper`)
-- `/reply` (alias: `/r`)
-
-**Requirements**:
-- Use Paper's `LifecycleEventManager` for command registration
-- Messages must appear in CoreProtect logs
-- Use `io.papermc.paper.event.player.AsyncChatEvent` (not deprecated `AsyncPlayerChatEvent`)
-- Don't cancel events; modify messages instead
-
-### 2. Quick Reply Functionality
-
-- `/reply` sends message to last person who messaged you
-- Maintain conversation context per player
-
-### 3. Romaji to Japanese Conversion
-
-**Trigger**: Player's personal setting via `/jp on` or `/jp off`
-
-**Conversion Timing**: When player sends message (`AsyncChatEvent` fires)
-
-**Architecture**: Simple cache + Google IME API approach
-
-```
-┌─────────────────────────────────────────┐
-│ Player Input (Romanji) │
-└──────────────────┬──────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────┐
-│ Check Memory Cache │
-├─────────────────────────────────────────┤
-│ Hit: Return cached result (< 1ms) │
-│ Miss: Call Google IME API │
-│ → Save to cache │
-│ → Queue async disk save │
-└──────────────────┬──────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────┐
-│ Converted Text (Japanese) │
-└─────────────────────────────────────────┘
-```
-
-**Key Components**:
-
-1. **RomanjiConverter** - Main conversion coordinator
-2. **ConversionCache** - Two-tier caching (memory + disk)
- - Memory: ConcurrentHashMap for instant access
- - Disk: JSON file loaded on startup, saved periodically
-3. **GoogleIMEClient** - HTTP client for Google Transliterate API
-
-**Cache Strategy**:
-- Load cache from disk on plugin enable (once)
-- All conversions check memory cache first
-- Cache misses trigger API call and store result
-- Periodic async saves (every 5 minutes) + final save on disable
-- LRU eviction when max entries (500) exceeded
-
-**Performance**:
-- Cached conversions: < 1ms
-- API calls: < 3000ms (first time only per phrase)
-- Disk I/O: Async, no gameplay impact
-- Memory footprint: ~25KB for 500 entries
-- Startup load time: < 10ms
-
-**Example Implementation**:
-```kotlin
-class RomanjiConverter(
- private val cache: ConversionCache,
- private val apiClient: GoogleIMEClient
-) {
- suspend fun convert(input: String): String {
- // Check cache first
- cache.get(input)?.let { return it }
-
- // Call Google IME API
- val result = apiClient.convert(input)
-
- // Store in cache
- cache.put(input, result)
-
- return result
- }
-}
-```
-
-**Cache Implementation**:
-```kotlin
-class ConversionCache(
- private val cacheFile: Path,
- private val maxEntries: Int = 500
-) {
- private val memoryCache = ConcurrentHashMap<String, String>()
- private val saveQueue = AtomicBoolean(false)
-
- fun loadFromDisk() {
- if (!cacheFile.exists()) return
- val data = Json.decodeFromString<CacheData>(cacheFile.readText())
- memoryCache.putAll(data.entries)
- }
-
- fun get(key: String): String? = memoryCache[key]
-
- fun put(key: String, value: String) {
- if (memoryCache.size >= maxEntries) evictOldest()
- memoryCache[key] = value
- queueDiskSave()
- }
-
- fun saveToDisk() {
- val data = CacheData(version = "1.0", entries = memoryCache.toMap())
- cacheFile.writeText(Json.encodeToString(data))
- }
-}
-```
-
-## Data Persistence
-
-**No SQL databases** - Use JSON file storage instead
-
-**Storage Strategy**:
-- Player settings stored as JSON files
-- UUID-based file naming
-- In-memory cache with periodic saves
-- Use kotlinx.serialization for JSON handling
-
-**Data Model**:
-```kotlin
-data class PlayerChatSettings(
- val uuid: UUID,
- val japaneseConversionEnabled: Boolean = false
-)
-```
-
-**Cache Data Model**:
-```kotlin
-@Serializable
-data class CacheData(
- val version: String,
- val entries: Map<String, String>
-)
-```
-
-## Configuration
-
-```yaml
-features:
- japaneseConversion:
- enabled: true
- cache:
- maxEntries: 500
- saveIntervalSeconds: 300 # 5 minutes
- cacheFile: "conversion-cache.json"
- api:
- timeout: 3000 # milliseconds
- retryCount: 2
-```
-
-## Future Features (Post v0.1.0)
-
-### Cross-Server Chat (Velocity)
-
-- Broadcast normal messages across all servers
-- Enable `/tell` for 1on1 chat across servers
-
-### Channel Chat System
-
-- Players can create custom channels
-- Chat within specific channels
-- Channel management commands
-
-## Implementation Order
-
-1. **Setup multi-project structure** (Paper/Velocity extensibility)
-2. **Implement JSON-based data persistence**
-3. **Implement `/tell` and `/reply` commands**
-4. **Implement romaji conversion system**
-
-## Event Handling
-
-```kotlin
-@EventHandler(priority = EventPriority.HIGHEST)
-fun onChat(event: AsyncChatEvent) {
- val player = event.player
- val settings = settingsManager.get(player.uniqueId)
-
- if (settings.japaneseConversionEnabled) {
- val plainText = (event.message() as? TextComponent)?.content() ?: return
- val converted = runBlocking { romajiConverter.convert(plainText) }
- event.message(Component.text(converted))
- }
-}
-```
-
-## Plugin Lifecycle
-
-```kotlin
-class LunaticChat : JavaPlugin() {
- private lateinit var romanjiConverter: RomanjiConverter
-
- override fun onEnable() {
- // Load cache on startup
- val cache = ConversionCache(
- cacheFile = dataFolder.resolve("conversion-cache.json").toPath(),
- maxEntries = config.getInt("features.japaneseConversion.cache.maxEntries", 500)
- )
- cache.loadFromDisk()
-
- // Initialize converter
- val apiClient = GoogleIMEClient(
- timeout = config.getInt("features.japaneseConversion.api.timeout", 3000).milliseconds
- )
- romanjiConverter = RomanjiConverter(cache, apiClient)
-
- // Periodic save task
- val saveInterval = config.getLong(
- "features.japaneseConversion.cache.saveIntervalSeconds", 300
- ) * 20L // Convert seconds to ticks
-
- server.scheduler.runTaskTimerAsynchronously(this, {
- cache.saveToDisk()
- }, saveInterval, saveInterval)
-
- logger.info("Japanese conversion system initialized")
- }
-
- override fun onDisable() {
- // Final save on shutdown
- cache.saveToDisk()
- logger.info("Cache saved on shutdown")
- }
-}
-```
-
-## Notes
-
-- **AsyncChatEvent** uses Paper's Component API - handle accordingly
-- Command aliases must be properly registered
-- Settings file location: `plugins/LunaticChat/settings/`
-- Cache settings in memory to avoid frequent file I/O
-- Cache file location: `plugins/LunaticChat/conversion-cache.json`
-- All disk I/O is async to prevent blocking game thread
-
-## Performance Considerations
-
-### Memory Usage
-- 500 entries × ~50 bytes average = ~25KB
-- Parse-time memory consumption: < 100KB
-- Negligible impact on Minecraft server
-
-### Disk I/O
-- **Startup**: Once (< 10ms for 500 entries)
-- **Runtime**: Periodic saves every 5 minutes (async)
-- **Shutdown**: Once (final save)
-
-### Network
-- No network calls after cache hit
-- Each unique phrase calls Google API only once
-
-## Development Environment
-
-- Shell: Fish
-- Java: 21+
-- Gradle: 9+
-- Kotlin: 2.3.0+
diff --git a/README.md b/README.md
index 6f66807..ebe7c4c 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,11 @@
# LunaticChat
+[![CI](https://github.com/m1sk9/LunaticChat/actions/workflows/ci.yaml/badge.svg)](https://github.com/m1sk9/LunaticChat/actions/workflows/ci.yaml)
+[![Release](https://github.com/m1sk9/LunaticChat/actions/workflows/release.yaml/badge.svg)](https://github.com/m1sk9/LunaticChat/actions/workflows/release.yaml)
+[![Deploy Dokka](https://github.com/m1sk9/LunaticChat/actions/workflows/dokka.yaml/badge.svg)](https://github.com/m1sk9/LunaticChat/actions/workflows/dokka.yaml)
+[![GNU General Public License v3.0](https://img.shields.io/github/license/m1sk9/LunaticChat?color=%239944ee)](https://github.com/m1sk9/LunaticChat/blob/main/LICENSE)
+![Modrinth Downloads](https://img.shields.io/modrinth/dt/MBeAdO4L)
+
Next-generation channel chat plugin for Paper/Velocity.
- [Documentation](https://lc.m1sk9.dev)
@@ -24,17 +30,9 @@ See the [Documentation](https://lc.m1sk9.dev/guide/getting-started).
- Quick Reply Functionality (`/reply`)
- Romaji to Japanese Conversion
- CoreProtect-compatible chat logging
-- Multi-platform support (Paper, Velocity)
+- Multi-platform support (Paper, Velocity) (coming soon)
- Spigot? No problem, just use Paper!
-- Channel Chat System
-
-## Todo
-
-- [x] 1on1 Direct Messaging System
-- [x] Quick Reply Functionality
-- [x] Romaji to Japanese Conversion
-- [ ] Velocity Support
-- [ ] Channel Chat System
+- Channel Chat System (coming soon)
## License
diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts
index 6a0797b..f88316e 100644
--- a/docs/.vitepress/config.mts
+++ b/docs/.vitepress/config.mts
@@ -4,68 +4,248 @@ export default defineConfig({
title: 'LunaticChat Docs',
titleTemplate: 'LunaticChat',
description: 'Next-generation channel chat plugin for Paper/Velocity',
- lang: 'ja-JP',
cleanUrls: true,
srcDir: './src',
outDir: './dist',
head: [['link', { rel: 'icon', href: '/static/favicon.ico' }]],
themeConfig: {
- nav: [
- { text: 'Guide', link: '/guide/getting-started' },
- { text: 'Reference', link: '/reference' },
+ socialLinks: [
+ { icon: 'github', link: 'https://github.com/m1sk9/LunaticChat' },
],
- sidebar: {
- '/guide/': [
- {
- text: 'はじめる',
- link: '/guide/getting-started',
- },
- {
- text: '設定',
- link: '/guide/configuration',
+ },
+ locales: {
+ root: {
+ label: '日本語',
+ lang: 'ja-JP',
+ themeConfig: {
+ nav: [
+ { text: 'ガイド', link: '/guide/getting-started' },
+ { text: 'リファレンス', link: '/reference' },
+ ],
+ sidebar: {
+ '/guide/': [
+ {
+ text: 'はじめる',
+ link: '/guide/getting-started',
+ },
+ {
+ text: 'LunaticChat について',
+ link: '/guide/about',
+ },
+ {
+ text: 'サーバー管理者向け',
+ items: [
+ {
+ text: 'キャッシュシステム',
+ link: '/guide/admin/cache',
+ },
+ {
+ text: '設定',
+ link: '/guide/admin/configuration',
+ },
+ {
+ text: 'Velocity 連携',
+ link: '/guide/admin/velocity',
+ },
+ ],
+ },
+ {
+ text: 'プレイヤー向け',
+ items: [
+ {
+ text: 'チャンネルチャット',
+ link: '/guide/player/channel-chat',
+ },
+ {
+ text: 'ダイレクトメッセージ',
+ link: '/guide/player/direct-message',
+ },
+ {
+ text: 'ローマ字変換',
+ link: '/guide/player/japanese-romanization',
+ },
+ ],
+ },
+ {
+ text: 'パッチノート',
+ items: [
+ {
+ text: 'プラグイン',
+ link: '/guide/patch-notes/plugin',
+ },
+ {
+ text: 'キャッシュファイル',
+ link: '/guide/patch-notes/cache-file',
+ },
+ ],
+ },
+ ],
+ '/reference/': [
+ {
+ text: 'パーミッション',
+ link: '/reference/permissions',
+ },
+ {
+ text: 'コマンド',
+ items: [
+ {
+ text: '/tell',
+ link: '/reference/commands/tell',
+ },
+ {
+ text: '/reply',
+ link: '/reference/commands/reply',
+ },
+ {
+ text: '/jp',
+ link: '/reference/commands/jp',
+ },
+ {
+ text: '/notice',
+ link: '/reference/commands/notice',
+ },
+ {
+ text: '/lc',
+ items: [
+ {
+ text: '/lc settings',
+ link: '/reference/commands/lc/settings',
+ },
+ {
+ text: '/lc status',
+ link: '/reference/commands/lc/status',
+ },
+ ],
+ },
+ ],
+ },
+ ],
},
- {
- text: 'パーミッション',
- link: '/guide/permissions',
+ editLink: {
+ pattern: 'https://github.com/m1sk9/LunaticChat/edit/main/docs/src/:path',
+ text: 'GitHub で編集',
},
- {
- text: 'ローマ字変換',
- link: '/guide/japanese-romanization',
+ footer: {
+ copyright: 'Copyright © 2026 m1sk9',
},
- ],
- '/reference/': [
- {
- text: 'コマンド',
- items: [
+ },
+ },
+ en: {
+ label: 'English',
+ lang: 'en-US',
+ link: '/en/',
+ themeConfig: {
+ nav: [
+ { text: 'Guide', link: '/en/guide/getting-started' },
+ { text: 'Reference', link: '/en/reference' },
+ ],
+ sidebar: {
+ '/en/guide/': [
+ {
+ text: 'Getting Started',
+ link: '/en/guide/getting-started',
+ },
{
- text: '/tell',
- link: '/reference/commands/tell',
+ text: 'About LunaticChat',
+ link: '/en/guide/about',
},
{
- text: '/reply',
- link: '/reference/commands/reply',
+ text: 'For Server Administrators',
+ items: [
+ {
+ text: 'Cache System',
+ link: '/en/guide/admin/cache',
+ },
+ {
+ text: 'Configuration',
+ link: '/en/guide/admin/configuration',
+ },
+ {
+ text: 'Velocity Integration',
+ link: '/en/guide/admin/velocity',
+ },
+ ],
},
{
- text: '/jp',
- link: '/reference/commands/jp',
+ text: 'For Players',
+ items: [
+ {
+ text: 'Channel Chat',
+ link: '/en/guide/player/channel-chat',
+ },
+ {
+ text: 'Direct Messages',
+ link: '/en/guide/player/direct-message',
+ },
+ {
+ text: 'Romanization Conversion',
+ link: '/en/guide/player/japanese-romanization',
+ },
+ ],
},
{
- text: '/notice',
- link: '/reference/commands/notice',
+ text: 'Patch Notes',
+ items: [
+ {
+ text: 'Plugin',
+ link: '/en/guide/patch-notes/plugin',
+ },
+ {
+ text: 'Cache File',
+ link: '/en/guide/patch-notes/cache-file',
+ },
+ ],
+ },
+ ],
+ '/en/reference/': [
+ {
+ text: 'Permissions',
+ link: '/en/reference/permissions',
+ },
+ {
+ text: 'Commands',
+ items: [
+ {
+ text: '/tell',
+ link: '/en/reference/commands/tell',
+ },
+ {
+ text: '/reply',
+ link: '/en/reference/commands/reply',
+ },
+ {
+ text: '/jp',
+ link: '/en/reference/commands/jp',
+ },
+ {
+ text: '/notice',
+ link: '/en/reference/commands/notice',
+ },
+ {
+ text: '/lc',
+ items: [
+ {
+ text: '/lc settings',
+ link: '/en/reference/commands/lc/settings',
+ },
+ {
+ text: '/lc status',
+ link: '/en/reference/commands/lc/status',
+ },
+ ],
+ },
+ ],
},
],
},
- ],
- },
- editLink: {
- pattern: 'https://github.com/m1sk9/LunaticChat/edit/main/docs/:path',
- text: 'Edit this page on GitHub',
- },
- footer: {
- copyright: 'Copyright © 2026 m1sk9',
+ editLink: {
+ pattern: 'https://github.com/m1sk9/LunaticChat/edit/main/docs/src/:path',
+ text: 'Edit this page on GitHub',
+ },
+ footer: {
+ copyright: 'Copyright © 2026 m1sk9',
+ },
+ },
},
- socialLinks: [
- { icon: 'github', link: 'https://github.com/m1sk9/LunaticChat' },
- ],
},
});
diff --git a/docs/src/en/guide/about.md b/docs/src/en/guide/about.md
new file mode 100644
index 0000000..388df7b
--- /dev/null
+++ b/docs/src/en/guide/about.md
@@ -0,0 +1,60 @@
+# About LunaticChat
+
+LunaticChat is a chat plugin for the Minecraft server software Paper/Velocity.
+
+In 2013, [ucchyocean](https://github.com/ucchyocean) released [LunaChat](https://github.com/ucchyocean/LunaChat). LunaticChat is developed as a successor to LunaChat, rewritten from scratch to work with the latest versions.
+
+LunaChat is no longer being developed and does not support the latest Minecraft versions. While many server administrators have forked LunaChat, LunaticChat is designed as an alternative that inherits LunaChat's features while being designed to work with the latest Minecraft versions.
+
+## Key Features
+
+- **Lightweight and Fast**: LunaticChat is designed to maintain high performance while minimizing server load.
+- **1-on-1 Direct Messaging**: Chat one-on-one using /tell or /msg commands.
+- **Quick Reply**: Quickly reply to the most recent message sender with /reply.
+- **Japanese Romanization Conversion**: Automatically converts messages input in romaji to Japanese.
+- **CoreProtect Support**: LunaticChat's chat logs are compatible with CoreProtect.
+- **High-Speed Performance with Caching**: Uses caching for romaji-to-Japanese conversion, operating faster than traditional LunaChat.
+- **Latest Version Support**: Reduces dependencies on other plugins, always supporting the latest Minecraft versions.
+
+## Comparison
+
+| | LunaticChat | LunaChat |
+| ----- |-------------|----------------------------------------|
+| Development Status | Actively Developed | Development Ended |
+| Supported Platforms | Paper / Velocity | Bukkit / Spigot / BungeeCord |
+| Supported Versions | 1.21.x ~ | Up to 1.16.x |
+| Language | Kotlin | Java |
+| Plugin Dependencies | None | EssentialsX, etc. |
+| Caching | Yes | No |
+| Documentation | Yes | No |
+| License | GNU General Public License v3.0 | GNU Lesser General Public License v3.0 |
+
+## FAQ
+
+### Is LunaticChat free to use?
+
+As open-source software, LunaticChat can be used, modified, and distributed for free.
+
+### Which Minecraft versions does LunaticChat support?
+
+LunaticChat supports Minecraft version 1.21.x and later.
+
+### Can LunaticChat be used alongside other chat plugins?
+
+LunaticChat can be used alongside other chat plugins, but to avoid conflicts, ensure that chat-related features do not overlap.
+
+### Where can I get support for LunaticChat?
+
+Support for LunaticChat is available on the [official GitHub Discussions](https://github.com/m1sk9/LunaticChat/discussions).
+
+### Where can I get the source code for LunaticChat?
+
+The source code for LunaticChat is available on [GitHub](https://github.com/m1sk9/LunaticChat).
+
+### Is there a Spigot/BungeeCord version of LunaticChat?
+
+No. There are no plans to support these platforms. Please use Paper/Velocity.
+
+### Under what license is LunaticChat distributed?
+
+LunaticChat is distributed under the GNU General Public License v3.0 (GPLv3).
diff --git a/docs/src/en/guide/admin/cache.md b/docs/src/en/guide/admin/cache.md
new file mode 100644
index 0000000..2fa2802
--- /dev/null
+++ b/docs/src/en/guide/admin/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/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/guide/admin/configuration.md b/docs/src/en/guide/admin/configuration.md
new file mode 100644
index 0000000..1fdf5b5
--- /dev/null
+++ b/docs/src/en/guide/admin/configuration.md
@@ -0,0 +1,180 @@
+# 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:
+# https://lc.m1sk9.dev/guide/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
+
+# ----------------------------------------------
+# --------- 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
+# ----------------------------------------------
+
+messageFormat:
+ # Configure the format for direct messages sent via /tell or /msg
+ directMessageFormat: "§7[§e{sender} §7>> §e{recipient}§7] §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`](../../reference/commands/reply.md) command in LunaticChat.
+
+When disabled, the [`/reply`](../../reference/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.
+
+## Message Format Settings
+
+Available placeholders:
+
+- `{sender}`: Name of the message sender
+- `{recipient}`: Name of the message recipient
+- `{message}`: Content of the message
+
+### `messageFormat.directMessageFormat`
+
+- Type: `string`
+- Default: `§7[§e{sender} §7>> §e{recipient}§7] §f{message}`
+
+Specifies the format for messages sent via direct message ([`/tell`](../../reference/commands/tell.md) or [`/reply`](../../reference/commands/reply.md) commands).
diff --git a/docs/src/en/guide/admin/velocity.md b/docs/src/en/guide/admin/velocity.md
new file mode 100644
index 0000000..b9ec3b5
--- /dev/null
+++ b/docs/src/en/guide/admin/velocity.md
@@ -0,0 +1,13 @@
+# Velocity Integration (Cross-Server Chat) <Badge type="tip" text="v1.0.0" /> <Badge type="warning" text="Experimental" />
+
+This feature enables cross-server chat between Paper servers connected through a Velocity proxy server.
+
+::: warning Experimental Feature
+
+This feature is currently implemented experimentally, and specifications may change in future updates.
+
+Since this is a large-scale feature, we plan to implement it gradually rather than all at once.
+
+For detailed implementation plans, see the [Roadmap (m1sk9/LunaticChat #54)](https://github.com/m1sk9/LunaticChat/issues/54).
+
+:::
diff --git a/docs/src/en/guide/getting-started.md b/docs/src/en/guide/getting-started.md
new file mode 100644
index 0000000..1fd9f0d
--- /dev/null
+++ b/docs/src/en/guide/getting-started.md
@@ -0,0 +1,29 @@
+# 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](admin/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](../reference/permissions.md).
+- For permission nodes corresponding to each command feature, refer to the [Command Reference](../reference/index.md).
diff --git a/docs/src/en/guide/patch-notes/cache-file.md b/docs/src/en/guide/patch-notes/cache-file.md
new file mode 100644
index 0000000..1f5fe05
--- /dev/null
+++ b/docs/src/en/guide/patch-notes/cache-file.md
@@ -0,0 +1,5 @@
+# Patch Notes: Cache File
+
+| Cache Version | Supported Versions |
+|------------|-----------|
+| v1 | v0.1.0 ~ |
diff --git a/docs/src/en/guide/patch-notes/plugin.md b/docs/src/en/guide/patch-notes/plugin.md
new file mode 100644
index 0000000..0559417
--- /dev/null
+++ b/docs/src/en/guide/patch-notes/plugin.md
@@ -0,0 +1,9 @@
+# Patch Notes: Plugin
+
+Plugin patch notes are not listed here. Please refer to the [GitHub releases page](https://github.com/m1sk9/LunaticChat/releases) or the [release notes category on the discussions page](https://github.com/m1sk9/LunaticChat/discussions/categories/announcements).
+
+----
+
+| Major Version | Codename | Development Period | Supported Versions |
+|-----------|---------|-----------|-----------|
+| v0 | lunatic | 2026/01 ~ | 1.21.x |
diff --git a/docs/src/en/guide/player/channel-chat.md b/docs/src/en/guide/player/channel-chat.md
new file mode 100644
index 0000000..f1dcbf0
--- /dev/null
+++ b/docs/src/en/guide/player/channel-chat.md
@@ -0,0 +1,13 @@
+# Channel Chat <Badge type="tip" text="v0.6.0" /> <Badge type="warning" text="Experimental" />
+
+This feature allows specific players to share chat.
+
+::: warning Experimental Feature
+
+This feature is currently implemented experimentally, and specifications may change in future updates.
+
+Since this is a large-scale feature, we plan to implement it gradually rather than all at once.
+
+For detailed implementation plans, see the [Roadmap (m1sk9/LunaticChat #54)](https://github.com/m1sk9/LunaticChat/issues/54).
+
+:::
diff --git a/docs/src/en/guide/player/direct-message.md b/docs/src/en/guide/player/direct-message.md
new file mode 100644
index 0000000..2cbc084
--- /dev/null
+++ b/docs/src/en/guide/player/direct-message.md
@@ -0,0 +1,65 @@
+# Direct Messages <Badge type="tip" text="v0.1.0" />
+
+The direct message feature allows you to send messages to specific players only.
+
+## Sending Messages
+
+To send a message, use the [`/tell`](../../reference/commands/tell.md) command.
+
+You can only send messages to online players. Messages cannot be sent to offline players.
+
+```
+/tell <player> <message>
+```
+
+::: tip Auto-completion Feature
+
+LunaticChat supports player name auto-completion during chat input.
+
+For example, if you type `/tell Al`, online player names starting with `Al` will be suggested as candidates.
+
+:::
+
+::: warning Operation in GeyserMC Environments
+
+We do not guarantee functionality for players connecting from Minecraft Bedrock Edition using GeyserMC environments.
+
+Since LunaticChat is designed based on the Minecraft Java Edition/Paper chat system, issues may occur when operating through GeyserMC. There are no plans to support this.
+
+:::
+
+## Quick Reply Feature <Badge type="tip" text="v0.1.0" />
+
+LunaticChat provides a quick reply feature that allows you to quickly respond to the most recent player who sent you a direct message.
+
+To use quick reply, use the [`/reply`](../../reference/commands/reply.md) command.
+
+```
+/reply <message>
+```
+
+::: warning If This Command Cannot Be Used
+
+This command may be disabled (this feature can be toggled ON/OFF in the configuration).
+
+Please contact your server administrator.
+
+:::
+
+## Notification Settings <Badge type="tip" text="v0.4.0" />
+
+As of v0.4.0, you can change the notification settings for direct messages.
+
+A notification sound will play when you receive or send a direct message.
+
+To change notification settings, use the [`/lc settings`](../../reference/commands/lc/settings.md) command.
+
+::: tip Client Volume Settings
+
+This notification sound depends on the **Players** category volume setting on the client.
+
+If you cannot hear LunaticChat's notification sound, check your client's volume settings.
+
+![](/static/direct-message/minecraft-player-sound.png)
+
+:::
diff --git a/docs/src/en/guide/player/japanese-romanization.md b/docs/src/en/guide/player/japanese-romanization.md
new file mode 100644
index 0000000..e851bb9
--- /dev/null
+++ b/docs/src/en/guide/player/japanese-romanization.md
@@ -0,0 +1,101 @@
+# Romanization Conversion <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper" />
+
+LunaticChat provides a feature to convert Japanese text from romaji.
+
+## Enabling/Disabling
+
+The romanization conversion feature is enabled by default.
+
+You can toggle the romanization conversion setting using the [`/lc settings`](../../reference/commands/lc/settings.md) command.
+
+## Conversion Process
+
+LunaticChat converts text from players through the following steps:
+
+1. Verify that the player's text is composed of romaji
+2. Check if the phrase exists in the memory cache
+ 1. If a matching phrase is found here, return it to the server
+3. If it doesn't exist in the memory cache, convert from romaji to hiragana
+4. Send the converted string to the Google IME API to convert it to a human-readable form
+5. Save to memory cache and return it to the server
+
+```
+┌───────────────────────────────────────────────────┐
+│ User Input │
+│ (Romanji Text) │
+└─────────────────────┬─────────────────────────────┘
+ │
+ ▼
+┌───────────────────────────────────────────────────┐
+│ RomanjiConverter │
+│ ┌───────────────────────────────────────────┐ │
+│ │ 1. Check Memory Cache │ │
+│ │ └─→ Hit: Return immediately │ │
+│ │ │ │
+│ │ 2. Call Google IME API │ │
+│ │ │ │
+│ │ 3. Store in Memory Cache │ │
+│ │ │ │
+│ │ 4. Queue for Disk Save (async) │ │
+│ └───────────────────────────────────────────┘ │
+└─────────────────────┬─────────────────────────────┘
+ │
+ ▼
+┌───────────────────────────────────────────────────┐
+│ Converted Text │
+│ (Japanese Text) │
+└───────────────────────────────────────────────────┘
+```
+
+::: tip Saving to File
+
+To avoid adding load, the contents of the memory cache are automatically saved to file cache at configured intervals and after server shutdown.
+
+:::
+
+For information on cache files, see [here](../admin/cache.md).
+
+## Improved Cache Strategy <Badge type="tip" text="v0.5.0" />
+
+As of v0.5.0, LunaticChat has improved the cache strategy for romanization conversion.
+
+Player chat is now cached word by word, enabling more efficient conversion.
+
+For example, consider the following long chat message:
+
+> konnichiwa minna ohayou gozaimasu kyou wa totemo ii tenki desu ne bokutachi wa issho ni asobi ni ikimashou kono atarashii game wo tameshite mitai to omoimasu sore wa totemo omoshiroi to kiite imasu arigatou gozaimasu mata ne
+
+LunaticChat doesn't convert this sentence all at once, but splits and caches it word by word.
+
+This means that if words like "konnichiwa" or "minna" are already cached, those words don't need to be converted again, significantly improving conversion speed.
+
+### First Conversion
+
+```
+Input: "konnichiwa minna ohayou gozaimasu"
+
+konnichiwa → API → こんにちは (cached)
+minna → API → みんな (cached)
+ohayou → API → おはよう (cached)
+gozaimasu → API → ございます (cached)
+
+Result: "こんにちは みんな おはよう ございます"
+API Calls: 4
+```
+
+### Second Conversion
+
+```
+Input: "ohayou gozaimasu kyou wa ii tenki desu"
+
+ohayou → Cache hit → おはよう
+gozaimasu → Cache hit → ございます
+kyou → API → 今日 (cached)
+wa → API → は (cached)
+ii → API → いい (cached)
+tenki → API → 天気 (cached)
+desu → API → です (cached)
+
+Result: "おはよう ございます 今日 は いい 天気 です"
+API Calls: 5 (Cache hits: 2)
+```
diff --git a/docs/src/en/index.md b/docs/src/en/index.md
new file mode 100644
index 0000000..ce77a87
--- /dev/null
+++ b/docs/src/en/index.md
@@ -0,0 +1,51 @@
+---
+# https://vitepress.dev/reference/default-theme-home-page
+layout: home
+
+hero:
+ name: "LunaticChat"
+ tagline: Next-generation chat plugin for Paper/Velocity.
+ actions:
+ - theme: brand
+ text: Getting Started
+ link: /en/guide/getting-started
+ - theme: brand
+ text: About LunaticChat
+ link: /en/guide/about
+ - theme: brand
+ text: Reference
+ link: /en/reference
+ - theme: alt
+ text: GitHub
+ link: https://github.com/m1sk9/LunaticChat
+ image:
+ src: /static/icon.png
+ alt: LunaticChat Logo
+
+features:
+ - title: 1-on-1 Direct Messaging
+ details: Chat one-on-one using /tell or /msg commands
+ icon: ✉️
+ - title: Quick Reply
+ details: Quickly reply to the most recent message sender with /reply
+ icon: 💌
+ - title: Japanese Romanization Conversion
+ details: Automatically converts messages input in romaji to Japanese
+ icon: 🌍
+ - title: CoreProtect Support
+ details: LunaticChat's chat logs are compatible with CoreProtect
+ icon: 🗒️
+ - title: Channel Chat Feature (Planned)
+ details: Create and manage chat channels, send private messages between specific players
+ icon: ☎️
+ - title: Multi-Platform Support (Planned)
+ details: Support for multi-platform Paper and Velocity, enabling cross-server chat
+ icon: 🚀
+ - title: High-Speed Performance with Caching
+ details: Uses caching for romaji-to-Japanese conversion, operating faster than traditional LunaChat
+ icon: 🎈
+ - title: Latest Version Support
+ details: Reduces dependencies on other plugins, always supporting the latest Minecraft versions
+ icon: ⛏️️
+---
+
diff --git a/docs/src/en/reference/commands/jp.md b/docs/src/en/reference/commands/jp.md
new file mode 100644
index 0000000..839e6e1
--- /dev/null
+++ b/docs/src/en/reference/commands/jp.md
@@ -0,0 +1,17 @@
+# /jp <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper" />
+
+### `/jp [on | off]` <Badge type="danger" text="Deprecated: Will be removed in v1.0.0" />
+
+::: danger Deprecated
+
+This command was deprecated in v0.5.0. Please use the [`/lc settings`](lc/settings.md) command instead.
+
+:::
+
+| Permission |
+|--------------------------|
+| `lunaticchat.command.jp` |
+
+Toggles the romanization conversion setting.
+
+This setting is saved by UUID, so the setting will not be lost even if you change your MCID.
diff --git a/docs/src/en/reference/commands/lc/settings.md b/docs/src/en/reference/commands/lc/settings.md
new file mode 100644
index 0000000..742e85c
--- /dev/null
+++ b/docs/src/en/reference/commands/lc/settings.md
@@ -0,0 +1,18 @@
+# /lc settings <Badge type="tip" text="v0.5.0" /> <Badge type="tip" text="Paper" />
+
+### `/lc settings <key> [value]`
+
+| Permission |
+|--------------------------------|
+| `lunaticchat.command.settings` |
+
+Manages player settings for LunaticChat. If no value is specified, the current setting value will be displayed.
+
+This setting is saved by UUID, so the setting will not be lost even if you change your MCID.
+
+#### Available Keys
+
+| Key | Description | Default Value |
+|----------|----------------------------------------------------------|--------|
+| `jp` | Toggles romanization conversion on or off. | `true` |
+| `notice` | Toggles whether to receive notifications when receiving direct messages via `/tell` or `/reply`. | `true` |
diff --git a/docs/src/en/reference/commands/lc/status.md b/docs/src/en/reference/commands/lc/status.md
new file mode 100644
index 0000000..365519a
--- /dev/null
+++ b/docs/src/en/reference/commands/lc/status.md
@@ -0,0 +1,9 @@
+# /lc status <Badge type="tip" text="v0.5.0" /> <Badge type="tip" text="Paper" />
+
+### `/lc status`
+
+| Permission |
+|------------------------------|
+| `lunaticchat.command.status` |
+
+Displays the status of LunaticChat.
diff --git a/docs/src/en/reference/commands/notice.md b/docs/src/en/reference/commands/notice.md
new file mode 100644
index 0000000..4e7f41f
--- /dev/null
+++ b/docs/src/en/reference/commands/notice.md
@@ -0,0 +1,17 @@
+# /notice <Badge type="tip" text="v0.4.0" /> <Badge type="tip" text="Paper" />
+
+### `/notice [on | off]` <Badge type="danger" text="Deprecated: Will be removed in v1.0.0" />
+
+::: danger Deprecated
+
+This command was deprecated in v0.5.0. Please use the [`/lc settings`](lc/settings.md) command instead.
+
+:::
+
+| Permission | Aliases |
+|-----------------------------|-------------|
+| `lunaticchat.command.notice` | `/dmnotice` |
+
+Toggles notifications for direct messages sent via [`/tell`](tell.md) or [`/reply`](reply.md) commands on or off.
+
+This setting is saved by UUID, so the setting will not be lost even if you change your MCID.
diff --git a/docs/src/en/reference/commands/reply.md b/docs/src/en/reference/commands/reply.md
new file mode 100644
index 0000000..0884eb8
--- /dev/null
+++ b/docs/src/en/reference/commands/reply.md
@@ -0,0 +1,17 @@
+# /reply <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper" />
+
+### `/reply <message>`
+
+| Permission | Aliases |
+|-----------------------------|-------|
+| `lunaticchat.command.reply` | `/r` |
+
+Replies to the player with whom you most recently communicated using [`/tell`](tell.md).
+
+::: info If This Command Cannot Be Used
+
+This command may be disabled (this feature can be toggled ON/OFF in the configuration).
+
+Please contact your server administrator.
+
+:::
diff --git a/docs/src/en/reference/commands/tell.md b/docs/src/en/reference/commands/tell.md
new file mode 100644
index 0000000..6687e94
--- /dev/null
+++ b/docs/src/en/reference/commands/tell.md
@@ -0,0 +1,11 @@
+# /tell <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper" />
+
+### `/tell <player ID> <message>`
+
+| Permission | Aliases |
+| ---- | ---- |
+| `lunaticchat.command.tell` | `/t`, `/msg`, `/m`, `/w`, `/whisper` |
+
+Sends a message to the specified player.
+
+Clicking on a sent message will automatically input this command into the chat bar.
diff --git a/docs/src/en/reference/index.md b/docs/src/en/reference/index.md
new file mode 100644
index 0000000..338694e
--- /dev/null
+++ b/docs/src/en/reference/index.md
@@ -0,0 +1,23 @@
+# Player Reference
+
+This page is a reference for players using LunaticChat.
+
+For plugin installation and configuration, refer to the [Guide](../guide/getting-started.md).
+
+## Legend
+
+The legend used in the command reference is as follows:
+
+- `<argument>`: Indicates a required argument. Must be specified for execution.
+- `[argument]`: Indicates an optional argument. Can be omitted during execution.
+- `|`: Used when there are multiple choices. For example, `<yes|no>` means specifying either `yes` or `no`.
+- `...`: Indicates that multiple arguments can be specified. For example, `<item>...` means multiple items can be specified.
+
+## Labels
+
+When the following labels are present, they have these meanings:
+
+- <Badge type="info" text="v0.1.0" />: Indicates this feature was introduced in LunaticChat version 0.1.0.
+- <Badge type="tip" text="Paper" />: Indicates this feature is available in Paper environments.
+- <Badge type="tip" text="Velocity" />: Indicates this feature is available in Velocity environments.
+- <Badge type="tip" text="Paper / Velocity" />: Indicates this feature is available in both Paper and Velocity environments.
diff --git a/docs/src/en/reference/permissions.md b/docs/src/en/reference/permissions.md
new file mode 100644
index 0000000..ed30a77
--- /dev/null
+++ b/docs/src/en/reference/permissions.md
@@ -0,0 +1,59 @@
+# 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`](commands/tell.md) / [`/reply`](commands/reply.md) commands.
+
+Players with this permission will have messages from other players' [`/tell`](commands/tell.md) / [`/reply`](commands/reply.md) commands broadcast to them.
+
+### `lunaticchat.noticeUpdate`
+
+- Default: `OP`
+
+Receives LunaticChat update notifications.
+
+[You must have `checkForUpdates` enabled](../guide/admin/configuration.md#checkforupdates) to receive notifications.
+
+## `lunaticchat.command.*`
+
+### `lunaticchat.command.tell`
+
+- Default: `non OP`
+
+Toggles the use of the [`/tell`](commands/tell.md) command.
+
+### `lunaticchat.command.reply`
+
+- Default: `non OP`
+
+Toggles the use of the [`/reply`](commands/reply.md) command.
+
+### `lunaticchat.command.lc.settings`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc settings`](commands/lc/settings.md) command.
+
+### `lunaticchat.command.lc.status`
+
+- Default: `non OP`
+
+Toggles the use of the [`/lc status`](commands/lc/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`](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`](commands/notice.md) command.
diff --git a/docs/src/guide/about.md b/docs/src/guide/about.md
new file mode 100644
index 0000000..41df712
--- /dev/null
+++ b/docs/src/guide/about.md
@@ -0,0 +1,60 @@
+# LunaticChat について
+
+LunaticChat は Minecraft サーバソフトウェアである Paper / Velocity 向けのチャットプラグインです.
+
+2013年,[ucchyocean](https://github.com/ucchyocean) 氏が公開した [LunaChat](https://github.com/ucchyocean/LunaChat) の後継,そして最新版で動くように一から書き直したプラグインとして開発しています.
+
+現在 LunaChat は開発が終了しており,最新の Minecraft バージョンには対応していません.多くのサーバー管理者が LunaChat を Fork していますが, LunaticChat はその代替として,LunaChat の機能を引き継ぎつつ,最新の Minecraft バージョンで動作するよう設計されています.
+
+## 主な特徴
+
+- **軽量で高速**: LunaticChat は高いパフォーマンスを維持しつつ,サーバーへの負荷を最小限に抑えるよう設計されています.
+- **1on1 ダイレクトメッセージ機能**: /tell や /msg コマンドで,1対1のチャットが可能です.
+- **クイック返信**: /reply で,直前にメッセージを送信した相手に素早く返信可能です.
+- **かな・ローマ字変換**: ローマ字で入力したメッセージを,自動的に日本語に変換します.
+- **CoreProtect への対応**: LunaticChat のチャットログは CoreProtect と互換性があります.
+- **キャッシュによる高速動作**: ローマ字から日本語の変換はキャッシュを使用し,従来の LunaChat よりも高速に動作します.
+- **最新版の対応**: 他プラグインとの依存を減らし,常に最新の Minecraft バージョンに対応します.
+
+## 比較
+
+| | LunaticChat | LunaChat |
+| ----- |-------------|----------------------------------------|
+| 開発状況 | 継続的に開発中 | 開発終了 |
+| 対応プラットフォーム | Paper / Velocity | Bukkit / Spigot / BungeeCord |
+| サポートバージョン | 1.21.x ~ | 1.16.x まで |
+| 使用言語 | Kotlin | Java |
+| 依存プラグイン | なし | EssentialsX など |
+| キャッシュ | あり | なし |
+| ドキュメント | あり | なし |
+| ライセンス | GNU General Public License v3.0 | GNU Lesser General Public License v3.0 |
+
+## FAQ
+
+### LunaticChat は無料で使えますか?
+
+オープンソースソフトウェアとして,LunaticChat は無料で使用,修正,配布できます.
+
+### LunaticChat はどの Minecraft バージョンに対応していますか?
+
+LunaticChat は Minecraft 1.21.x 以降のバージョンに対応しています.
+
+### LunaticChat は他のチャットプラグインと併用できますか?
+
+LunaticChat は他のチャットプラグインと併用できますが,競合を避けるために,チャット関連の機能が重複しないように注意してください.
+
+### LunaticChat のサポートはどこで受けられますか?
+
+LunaticChat のサポートは,[公式の GitHub Discussion](https://github.com/m1sk9/LunaticChat/discussions) で受けられます.
+
+### LunaticChat のソースコードはどこで入手できますか?
+
+LunaticChat のソースコードは,[GitHub](https://github.com/m1sk9/LunaticChat) で公開されています.
+
+### Spigot / BungeeCord 版の LunaticChat はありますか?
+
+ありません.対応する予定もありません.Paper / Velocity でご利用ください.
+
+### LunaticChat はどのようなライセンスで配布されていますか?
+
+LunaticChat は GNU General Public License v3.0 (GPLv3) の下で配布されています.
diff --git a/docs/src/guide/admin/cache.md b/docs/src/guide/admin/cache.md
new file mode 100644
index 0000000..9e45ff2
--- /dev/null
+++ b/docs/src/guide/admin/cache.md
@@ -0,0 +1,41 @@
+# キャッシュシステム
+
+LunaticChat では,かな・ローマ字変換時のフレーズを自動でメモリ・ディスクにキャッシュするシステムが搭載されています.
+
+かな・ローマ字変換に関する情報は [こちら](../player/japanese-romanization.md) をご覧ください.
+
+## メモリキャッシュ
+
+LunaticChat は変換済みのフレーズをメモリ上にキャッシュし,再度同じフレーズが要求された際に高速に応答できるようにしています.
+
+このキャッシュは一時的であり,サーバー再起動時や設定した秒数毎にディスクキャッシュへ保存されます.
+
+## ディスクキャッシュ
+
+LunaticChat はメモリキャッシュの内容を定期的にディスクに保存します. これにより,サーバー再起動後もキャッシュ内容を保持できるようになっています.
+
+ディスクキャッシュとして使用されるファイルは [設定で変更できます](configuration.md#cachefilepath).
+
+## キャッシュの解放
+
+メモリキャッシュは,ディスクにキャッシュしたのち自動的に JVM のガベージコレクションにより解放されます.
+
+ディスクキャッシュは,手動でファイルを削除することで解放できます. 再起動時に LunaticChat は再度キャッシュファイルを作成します.
+
+::: warning パージ機能について
+
+LunaticChat では,キャッシュのパージ 機能は実装されていません.
+
+これはプレイヤー側にホストのファイルシステムを操作させることがセキュリティ上好ましくないためです.
+
+:::
+
+## キャッシュバージョン
+
+ディスクキャッシュに使用されるファイルには `version` フィールドが含まれており,LunaticChat のバージョンアップに伴うキャッシュフォーマットの変更に対応しています.
+
+バージョンが不一致の場合,LunaticChat はキャッシュファイルを **古い形式のキャッシュ** として認識し,内容を無視して新しい形式で再作成します.
+
+```json
+{"version":"1","entries":{}}
+```
diff --git a/docs/src/guide/configuration.md b/docs/src/guide/admin/configuration.md
index 3b7bd1e..bf9b9e6 100644
--- a/docs/src/guide/configuration.md
+++ b/docs/src/guide/admin/configuration.md
@@ -110,9 +110,9 @@ LunaticChat のプレイヤー向けメッセージの言語を指定します
- Type: `boolean`
- Default: `true`
-LunaticChat の [`/reply`](../reference/commands/reply.md) コマンドによるクイックリプライ機能を有効にします.
+LunaticChat の [`/reply`](../../reference/commands/reply.md) コマンドによるクイックリプライ機能を有効にします.
-無効にすると [`/reply`](../reference/commands/reply.md) コマンドは Paper に登録されず,使用できなくなります.
+無効にすると [`/reply`](../../reference/commands/reply.md) コマンドは Paper に登録されず,使用できなくなります.
### `features.japaneseConversion.enabled`
@@ -177,4 +177,4 @@ LunaticChat の [`/reply`](../reference/commands/reply.md) コマンドによる
- Type: `string`
- Default: `§7[§e{sender} §7>> §e{recipient}§7] §f{message}`
-ダイレクトメッセージ( [`/tell`](../reference/commands/tell.md) や [`/reply`](../reference/commands/reply.md) コマンド)で送信されるメッセージのフォーマットを指定します.
+ダイレクトメッセージ( [`/tell`](../../reference/commands/tell.md) や [`/reply`](../../reference/commands/reply.md) コマンド)で送信されるメッセージのフォーマットを指定します.
diff --git a/docs/src/guide/admin/velocity.md b/docs/src/guide/admin/velocity.md
new file mode 100644
index 0000000..bc7f8d5
--- /dev/null
+++ b/docs/src/guide/admin/velocity.md
@@ -0,0 +1,13 @@
+# Velocity 連携 (クロスサーバーチャット) <Badge type="tip" text="v1.0.0" /> <Badge type="warning" text="試験的" />
+
+Velocity を使用して,プロキシサーバーを繋いだ Paper サーバー間のクロスサーバーチャットを行う機能です.
+
+::: warning 試験的機能
+
+この機能は現在,試験的に実装されており,今後のアップデートで仕様が変更される可能性があります.
+
+規模が大きい機能なので,一気に実装はせず段階的な展開を予定しています.
+
+詳しい実装計画は [ロードマップ (m1sk9/LunaticChat #54)](https://github.com/m1sk9/LunaticChat/issues/54) をご覧ください.
+
+:::
diff --git a/docs/src/guide/getting-started.md b/docs/src/guide/getting-started.md
index 85fbf31..08fe38a 100644
--- a/docs/src/guide/getting-started.md
+++ b/docs/src/guide/getting-started.md
@@ -2,7 +2,7 @@
## インストール
-プラグインをインストールします.プラグインは以下から入手できます:
+LunaticChat をインストールします.LunaticChat は以下から入手できます:
- [GitHub](https://github.com/m1sk9/LunaticChat/releases)
- [Modrinth](https://modrinth.com/project/lunaticchat)
@@ -17,7 +17,7 @@ LunaticChat を起動すると以下のファイルが作成されます.
- `plugins/LunaticChat/player-settings.yaml`:ユーザーごとの設定ファイル
- `plugins/LunaticChat/conversion_cache.json`: ローマ字変換のキャッシュファイル
-設定ファイル `config.yml` を開き,必要に応じて設定を変更します.設定項目の詳細については,[設定ガイド](./configuration.md)を参照してください.
+設定ファイル `config.yml` を開き,必要に応じて設定を変更します.設定項目の詳細については,[設定ガイド](admin/configuration.md)を参照してください.
## パーミッション
@@ -25,5 +25,5 @@ LunaticChat のパーミッションを LuckPerms などのパーミッション
基本的なパーミッションは Paper や Velocity のデフォルトパーミッションシステム ( `OP` / `non OP` ) でも設定できますが,より詳細な制御を行う場合は LuckPerms の使用を推奨します.
-- パーミッションノードの詳細については [パーミッションガイド](./permissions.md)を参照してください.
+- パーミッションノードの詳細については [パーミッションガイド](../reference/permissions.md)を参照してください.
- コマンドの各機能に対応するパーミッションノードは,[コマンドリファレンス](../reference/index.md)を参照してください.
diff --git a/docs/src/guide/patch-notes/cache-file.md b/docs/src/guide/patch-notes/cache-file.md
new file mode 100644
index 0000000..654dc77
--- /dev/null
+++ b/docs/src/guide/patch-notes/cache-file.md
@@ -0,0 +1,5 @@
+# パッチノート: キャッシュファイル
+
+| キャッシュバージョン | サポートバージョン |
+|------------|-----------|
+| v1 | v0.1.0 ~ |
diff --git a/docs/src/guide/patch-notes/plugin.md b/docs/src/guide/patch-notes/plugin.md
new file mode 100644
index 0000000..9fc1ad2
--- /dev/null
+++ b/docs/src/guide/patch-notes/plugin.md
@@ -0,0 +1,9 @@
+# パッチノート: プラグイン
+
+プラグインのパッチノートはここでは記載していません.[GitHubのリリースページ](https://github.com/m1sk9/LunaticChat/releases) や [ディスカッションページのリリースノートカテゴリー](https://github.com/m1sk9/LunaticChat/discussions/categories/announcements) をご覧ください.
+
+----
+
+| メジャーバージョン | コードネーム | 開発期間 | サポートバージョン |
+|-----------|---------|-----------|-----------|
+| v0 | lunatic | 2026/01 ~ | 1.21.x |
diff --git a/docs/src/guide/permissions.md b/docs/src/guide/permissions.md
deleted file mode 100644
index 3042e6f..0000000
--- a/docs/src/guide/permissions.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# パーミッション
-
-LuckPerms を使用した設定方法に関する詳細は [LuckPerms Wiki](https://luckperms.net/wiki/Home) を参照してください.
-
-## `lunaticchat.*`
-
-### `lunaticchat.spy`
-
-- Default: `OP`
-
-[`/tell`](../reference/commands/tell.md) / [`/reply`](../reference/commands/reply.md) コマンドでのやり取りを可視化します.
-
-この権限を持つプレイヤーは他プレイヤーの [`/tell`](../reference/commands/tell.md) / [`/reply`](../reference/commands/reply.md) でのメッセージがブロードキャストされます.
-
-### `lunaticchat.noticeUpdate`
-
-- Default: `OP`
-
-LunaticChat のアップデート通知を受け取ります.
-
-[受け取るには `checkForUpdates` を有効にしておく](../guide/configuration.md#checkforupdates) 必要があります.
-
-## `lunaticchat.command.*`
-
-### `lunaticchat.command.tell`
-
-- Default: `non OP`
-
-[`/tell`](../reference/commands/tell.md) コマンドの使用を切り替えます.
-
-### `lunaticchat.command.reply`
-
-- Default: `non OP`
-
-[`/reply`](../reference/commands/reply.md) コマンドの使用を切り替えます.
-
-### `lunaticchat.command.jp`
-
-- Default: `non OP`
-
-[`/jp`](../reference/commands/jp.md) コマンドの使用を切り替えます.
-
-### `lunaticchat.command.notice`
-
-- Default: `non OP`
-
-[`/notice`](../reference/commands/notice.md) コマンドの使用を切り替えます.
diff --git a/docs/src/guide/player/channel-chat.md b/docs/src/guide/player/channel-chat.md
new file mode 100644
index 0000000..ce5a43e
--- /dev/null
+++ b/docs/src/guide/player/channel-chat.md
@@ -0,0 +1,13 @@
+# チャンネルチャット <Badge type="tip" text="v0.6.0" /> <Badge type="warning" text="試験的" />
+
+特定のプレイヤー間で,チャットを共有できる機能です.
+
+::: warning 試験的機能
+
+この機能は現在,試験的に実装されており,今後のアップデートで仕様が変更される可能性があります.
+
+規模が大きい機能なので,一気に実装はせず段階的な展開を予定しています.
+
+詳しい実装計画は [ロードマップ (m1sk9/LunaticChat #54)](https://github.com/m1sk9/LunaticChat/issues/54) をご覧ください.
+
+:::
diff --git a/docs/src/guide/player/direct-message.md b/docs/src/guide/player/direct-message.md
new file mode 100644
index 0000000..78de1c3
--- /dev/null
+++ b/docs/src/guide/player/direct-message.md
@@ -0,0 +1,65 @@
+# ダイレクトメッセージ <Badge type="tip" text="v0.1.0" />
+
+特定のプレイヤーに対してのみメッセージを送信するダイレクトメッセージ機能です.
+
+## メッセージを送信する
+
+メッセージを送信するには [`/tell`](../../reference/commands/tell.md) コマンドを使用します.
+
+オンラインプレイヤーに対してのみメッセージを送信できます.オフラインプレイヤーには送信できません.
+
+```
+/tell <player> <message>
+```
+
+::: tip 補完機能
+
+LunaticChat はチャット入力時にプレイヤー名の補完をサポートしています.
+
+例えば,`/tell Al` と入力した場合,`Al` で始まるオンラインプレイヤー名が候補として表示されます.
+
+:::
+
+::: warning GeyserMC 環境での動作
+
+GeyserMC 環境を用いて Minecraft Bedrock Edition から接続しているプレイヤーに機能を提供している場合の動作は保証していません.
+
+LunaticChat は Minecraft Java Edition / Paper のチャットシステムを前提として設計されているため,GeyserMC 経由での動作に問題が発生する可能性があります.対応の予定はありません.
+
+:::
+
+## クイックリプライ機能 <Badge type="tip" text="v0.1.0" />
+
+LunaticChat では,直前にダイレクトメッセージを送信した相手に対して素早く返信できるクイックリプライ機能が提供されています.
+
+クイックリプライを使用するには [`/reply`](../../reference/commands/reply.md) コマンドを使用します.
+
+```
+/reply <message>
+```
+
+::: warning このコマンドが使用できない場合
+
+このコマンドが無効化されている可能性があります (この機能は設定で ON/OFF できるため)
+
+サーバーの管理者に連絡してください.
+
+:::
+
+## 通知設定 <Badge type="tip" text="v0.4.0" />
+
+v0.4.0 以降,ダイレクトメッセージの通知設定を変更できるようになりました.
+
+ダイレクトメッセージを受信・送信時に通知音がなるようになります.
+
+通知設定を変更するには [`/lc settings`](../../reference/commands/lc/settings.md) コマンドを使用します.
+
+::: tip クライアントでの音量設定
+
+この通知音はクライアント上の **プレイヤー** カテゴリーの音量設定に依存します.
+
+LunaticChat の通知音が聞こえない場合は,クライアントの音量設定を確認してください.
+
+![](/static/direct-message/minecraft-player-sound.png)
+
+:::
diff --git a/docs/src/guide/japanese-romanization.md b/docs/src/guide/player/japanese-romanization.md
index 3e9d702..3b62e51 100644
--- a/docs/src/guide/japanese-romanization.md
+++ b/docs/src/guide/player/japanese-romanization.md
@@ -1,17 +1,12 @@
-# ローマ字変換
+# ローマ字変換 <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper" />
LunaticChat では、日本語のテキストをローマ字に変換する機能が提供されています.
-## 設定を有効化する
+## 有効化・無効化
-ローマ字変換機能を有効にするには `features.japaneseConversion.enabled` の値を `true` にする必要があります.
+ローマ字変換機能はデフォルトで有効化されています.
-```yaml{4}
-features:
- # ...
- japaneseConversion:
- enabled: true
-```
+[`/lc settings`](../../reference/commands/lc/settings.md) コマンドを使用して,ローマ字変換の設定を切り替えることができます.
## 変換の仕組み
@@ -54,8 +49,53 @@ LunaticChat はプレイヤーからのテキストを以下の手順で変換
::: tip ファイルへの保存
-メモリキャッシュの内容は負荷にならないよう,設定した秒毎にファイルキャッシュへ自動でセーブします.
+メモリキャッシュの内容は負荷にならないよう,設定した秒毎・サーバ停止後にファイルキャッシュへ自動でセーブします.
:::
-##
+キャッシュファイルに関する情報は [こちら](../admin/cache.md) をご覧ください.
+
+## 改善されたキャッシュ戦略 <Badge type="tip" text="v0.5.0" />
+
+v0.5.0 以降,LunaticChat はローマ字変換のキャッシュ戦略を改善しました.
+
+プレイヤーのチャットを単語ごとにキャッシュするようになり,より効率的に変換を行えるようになりました.
+
+例えば,以下のような長文のチャットがあるとします.
+
+> konnichiwa minna ohayou gozaimasu kyou wa totemo ii tenki desu ne bokutachi wa issho ni asobi ni ikimashou kono atarashii game wo tameshite mitai to omoimasu sore wa totemo omoshiroi to kiite imasu arigatou gozaimasu mata ne
+
+LunaticChat はこの文章を一度に変換するのではなく,単語ごとに分割してキャッシュを行います.
+
+これにより,例えば「konnichiwa」や「minna」などの単語が既にキャッシュされている場合,それらの単語は再度変換する必要がなくなり,変換速度が大幅に向上します.
+
+### 1回目の変換
+
+```
+入力: "konnichiwa minna ohayou gozaimasu"
+
+konnichiwa → API → こんにちは (キャッシュ保存)
+minna → API → みんな (キャッシュ保存)
+ohayou → API → おはよう (キャッシュ保存)
+gozaimasu → API → ございます (キャッシュ保存)
+
+結果: "こんにちは みんな おはよう ございます"
+APIコール: 4回
+```
+
+### 2回目の変換
+
+```
+入力: "ohayou gozaimasu kyou wa ii tenki desu"
+
+ohayou → キャッシュヒット → おはよう
+gozaimasu → キャッシュヒット → ございます
+kyou → API → 今日 (キャッシュ保存)
+wa → API → は (キャッシュ保存)
+ii → API → いい (キャッシュ保存)
+tenki → API → 天気 (キャッシュ保存)
+desu → API → です (キャッシュ保存)
+
+結果: "おはよう ございます 今日 は いい 天気 です"
+APIコール: 5回(キャッシュヒット: 2回)
+```
diff --git a/docs/src/index.md b/docs/src/index.md
index e5da462..272e3a0 100644
--- a/docs/src/index.md
+++ b/docs/src/index.md
@@ -4,24 +4,48 @@ layout: home
hero:
name: "LunaticChat"
- tagline: Next-generation channel chat plugin
+ tagline: Next-generation chat plugin for Paper/Velocity.
actions:
- theme: brand
text: はじめる
link: /guide/getting-started
- theme: brand
+ text: LunaticChat について
+ link: /guide/about
+ - theme: brand
text: リファレンス
link: /reference
- theme: alt
text: GitHub
link: https://github.com/m1sk9/LunaticChat
+ image:
+ src: /static/icon.png
+ alt: LunaticChat Logo
features:
+ - title: 1on1 ダイレクトメッセージ機能
+ details: /tell や /msg コマンドで,1対1のチャットが可能
+ icon: ✉️
+ - title: クイック返信
+ details: /reply で,直前にメッセージを送信した相手に素早く返信可能
+ icon: 💌
+ - title: かな・ローマ字変換
+ details: ローマ字で入力したメッセージを,自動的に日本語に変換
+ icon: 🌍
+ - title: CoreProtect への対応
+ details: LunaticChat のチャットログは CoreProtect と互換性があります
+ icon: 🗒️
+ - title: チャンネルチャット機能 (実装予定)
+ details: チャットチャンネルを作成・管理し,特定のプレイヤー間でのプライベートメッセージを送信可能
+ icon: ☎️
+ - title: マルチプラットフォーム対応 (実装予定)
+ details: Paper と Velocity のマルチプラットフォームに対応し,サーバ間チャットを実現します
+ icon: 🚀
- title: キャッシュによる高速動作
details: ローマ字から日本語の変換はキャッシュを使用し,従来の LunaChat よりも高速に動作します
- - title: マルチプラットフォーム対応 (予定)
- details: Paper と Velocity のマルチプラットフォームに対応し,サーバ間チャットを実現します
+ icon: 🎈
- title: 最新版の対応
details: 他プラグインとの依存を減らし,常に最新の Minecraft バージョンに対応します
+ icon: ⛏️️
---
diff --git a/docs/src/reference/commands/jp.md b/docs/src/reference/commands/jp.md
index 8f77b12..e850400 100644
--- a/docs/src/reference/commands/jp.md
+++ b/docs/src/reference/commands/jp.md
@@ -1,6 +1,12 @@
-# /jp <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper / Velocity" />
+# /jp <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper" />
-### `/jp [on | off]`
+### `/jp [on | off]` <Badge type="danger" text="非推奨: v1.0.0 で削除予定" />
+
+::: danger 非推奨
+
+このコマンドは v0.5.0 で非推奨となりました.代わりに [`/lc settings`](lc/settings.md) コマンドを使用してください.
+
+:::
| パーミッション |
|--------------------------|
diff --git a/docs/src/reference/commands/lc/settings.md b/docs/src/reference/commands/lc/settings.md
new file mode 100644
index 0000000..86e0a9d
--- /dev/null
+++ b/docs/src/reference/commands/lc/settings.md
@@ -0,0 +1,18 @@
+# /lc settings <Badge type="tip" text="v0.5.0" /> <Badge type="tip" text="Paper" />
+
+### `/lc settings <key> [value]`
+
+| パーミッション |
+|--------------------------------|
+| `lunaticchat.command.settings` |
+
+LunaticChat のプレイヤー設定を管理します.値を指定しなかった場合は設定値が表示されます.
+
+この設定は UUID で保存されるため, MCID を切り替えても設定が消えることはありません.
+
+#### 利用可能なキー
+
+| キー | 説明 | デフォルト値 |
+|----------|----------------------------------------------------------|--------|
+| `jp` | ローマ字変換の有効化・無効化を切り替えます. | `true` |
+| `notice` | `/tell` や `/reply` でダイレクトメッセージを受信した際に通知を受け取るかどうかを切り替えます. | `true` |
diff --git a/docs/src/reference/commands/lc/status.md b/docs/src/reference/commands/lc/status.md
new file mode 100644
index 0000000..1b9ddcb
--- /dev/null
+++ b/docs/src/reference/commands/lc/status.md
@@ -0,0 +1,9 @@
+# /lc status <Badge type="tip" text="v0.5.0" /> <Badge type="tip" text="Paper" />
+
+### `/lc status`
+
+| パーミッション |
+|------------------------------|
+| `lunaticchat.command.status` |
+
+LunaticChat のステータスを表示します.
diff --git a/docs/src/reference/commands/notice.md b/docs/src/reference/commands/notice.md
index 5cd1a2c..5c08671 100644
--- a/docs/src/reference/commands/notice.md
+++ b/docs/src/reference/commands/notice.md
@@ -1,11 +1,17 @@
-# /notice <Badge type="tip" text="v0.4.0" /> <Badge type="tip" text="Paper / Velocity" />
+# /notice <Badge type="tip" text="v0.4.0" /> <Badge type="tip" text="Paper" />
-### `/notice [on | off]`
+### `/notice [on | off]` <Badge type="danger" text="非推奨: v1.0.0 で削除予定" />
+
+::: danger 非推奨
+
+このコマンドは v0.5.0 で非推奨となりました.代わりに [`/lc settings`](lc/settings.md) コマンドを使用してください.
+
+:::
| パーミッション | エイリアス |
|-----------------------------|-------------|
| `lunaticchat.command.notice` | `/dmnotice` |
-[`/tell`](./tell.md) や [`/reply`](./reply.md) コマンドで送信されるダイレクトメッセージの通知をオンまたはオフに切り替えます.
+[`/tell`](tell.md) や [`/reply`](reply.md) コマンドで送信されるダイレクトメッセージの通知をオンまたはオフに切り替えます.
この設定は UUID で保存されるため, MCID を切り替えても設定が消えることはありません.
diff --git a/docs/src/reference/commands/reply.md b/docs/src/reference/commands/reply.md
index 27e0660..fa9306a 100644
--- a/docs/src/reference/commands/reply.md
+++ b/docs/src/reference/commands/reply.md
@@ -1,4 +1,4 @@
-# /reply <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper / Velocity" />
+# /reply <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper" />
### `/reply <メッセージ>`
@@ -6,7 +6,7 @@
|-----------------------------|-------|
| `lunaticchat.command.reply` | `/r` |
-直近で [`/tell`](./tell.md) を使用し,やりとりをしたプレイヤーに対して返信します.
+直近で [`/tell`](tell.md) を使用し,やりとりをしたプレイヤーに対して返信します.
::: info このコマンドが使用できない場合
diff --git a/docs/src/reference/commands/tell.md b/docs/src/reference/commands/tell.md
index cf38815..6f6e897 100644
--- a/docs/src/reference/commands/tell.md
+++ b/docs/src/reference/commands/tell.md
@@ -1,4 +1,4 @@
-# /tell <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper / Velocity" />
+# /tell <Badge type="tip" text="v0.1.0" /> <Badge type="tip" text="Paper" />
### `/tell <プレイヤーID> <メッセージ>`
diff --git a/docs/src/reference/permissions.md b/docs/src/reference/permissions.md
new file mode 100644
index 0000000..0f3cd97
--- /dev/null
+++ b/docs/src/reference/permissions.md
@@ -0,0 +1,59 @@
+# パーミッション
+
+LuckPerms を使用した設定方法に関する詳細は [LuckPerms Wiki](https://luckperms.net/wiki/Home) を参照してください.
+
+## `lunaticchat.*`
+
+### `lunaticchat.spy`
+
+- Default: `OP`
+
+[`/tell`](commands/tell.md) / [`/reply`](commands/reply.md) コマンドでのやり取りを可視化します.
+
+この権限を持つプレイヤーは他プレイヤーの [`/tell`](commands/tell.md) / [`/reply`](commands/reply.md) でのメッセージがブロードキャストされます.
+
+### `lunaticchat.noticeUpdate`
+
+- Default: `OP`
+
+LunaticChat のアップデート通知を受け取ります.
+
+[受け取るには `checkForUpdates` を有効にしておく](../guide/admin/configuration.md#checkforupdates) 必要があります.
+
+## `lunaticchat.command.*`
+
+### `lunaticchat.command.tell`
+
+- Default: `non OP`
+
+[`/tell`](commands/tell.md) コマンドの使用を切り替えます.
+
+### `lunaticchat.command.reply`
+
+- Default: `non OP`
+
+[`/reply`](commands/reply.md) コマンドの使用を切り替えます.
+
+### `lunaticchat.command.lc.settings`
+
+- Default: `non OP`
+
+[`/lc settings`](commands/lc/settings.md) コマンドの使用を切り替えます.
+
+### `lunaticchat.command.lc.status`
+
+- Default: `non OP`
+
+[`/lc status`](commands/lc/status.md) コマンドの使用を切り替えます.
+
+### `lunaticchat.command.jp` <Badge type="danger" text="非推奨: v1.0.0 で削除予定" />
+
+- Default: `non OP`
+
+[`/jp`](commands/jp.md) コマンドの使用を切り替えます.
+
+### `lunaticchat.command.notice` <Badge type="danger" text="非推奨: v1.0.0 で削除予定" />
+
+- Default: `non OP`
+
+[`/notice`](commands/notice.md) コマンドの使用を切り替えます.
diff --git a/docs/src/static/direct-message/minecraft-player-sound.png b/docs/src/static/direct-message/minecraft-player-sound.png
new file mode 100644
index 0000000..56059e5
--- /dev/null
+++ b/docs/src/static/direct-message/minecraft-player-sound.png
Binary files differ
diff --git a/docs/src/static/favicon.ico b/docs/src/static/favicon.ico
index 5a2affe..46c0cad 100644
--- a/docs/src/static/favicon.ico
+++ b/docs/src/static/favicon.ico
Binary files differ
diff --git a/docs/src/static/icon.png b/docs/src/static/icon.png
index a6865f7..064445a 100644
--- a/docs/src/static/icon.png
+++ b/docs/src/static/icon.png
Binary files differ
diff --git a/platform-paper/src/main/resources/paper-plugin.yml b/platform-paper/src/main/resources/paper-plugin.yml
index 40c3fc3..3f991a9 100644
--- a/platform-paper/src/main/resources/paper-plugin.yml
+++ b/platform-paper/src/main/resources/paper-plugin.yml
@@ -17,6 +17,8 @@ permissions:
default: true
lunaticchat.command.lc.settings:
default: true
+ lunaticchat.command.lc.status:
+ default: true
lunaticchat.spy:
default: op