--- layout: doc --- # v1.3.0 - Download: - [GitHub](https://github.com/m1sk9/LunaticChat/releases/tag/paper/v1.3.0) - [Modrinth](https://modrinth.com/plugin/lunaticchat/version/1.3.0) ## New Features - Added support for Paper 26.2 (Minecraft 26.2) - Support for Paper 26.1 has ended at the same time. - Paper 26.2 bundles Adventure 5.2.0, which is not binary compatible with 26.1. - Builds from v1.3.0 onward therefore no longer run on Paper 26.1. - `/tell @` can now message a player on a server connected through Velocity - Disabled by default. - Enable it with `features.velocityIntegration.crossServerDirectMessage`. - Raised the protocol version to `1.0.1`. - Paper and Velocity can be updated in either order. - Cross-server direct messages do, however, require both sides to be updated. ## Improvements - A failed player data save no longer aborts the remaining shutdown steps, so channel logs and the Velocity connection are always closed. - File persistence has been consolidated behind a single storage layer. - As a result, a crash or a concurrent save can no longer leave a file in a half-written state. - Each player's messages are now delivered in the order they were sent. - Work still queued when a player disconnects is discarded rather than delivered to a player who has already logged out. - Direct message delivery and channel message logging no longer run on the tick thread. - Cached romaji conversion results no longer wait for a permit from the shared API concurrency limiter. - Previously, even a message whose every word was already cached could exhaust its conversion budget waiting for a permit it did not need, and be sent unconverted. - The words in a message are now converted concurrently. - Player settings are only rewritten when something has changed. - Previously, every player quit re-serialized every player stored in the file, even when the bytes were identical. - When a player quits without an active channel, clearing their active channel no longer takes a snapshot of the channel caches. - Previously, a mass disconnect produced one full snapshot per disconnecting player within a single tick. - Spy notification for direct messages and channel messages no longer builds its translation lookup and member set when no recipient is online. - Channel data writes are now batched instead of rewriting the whole file on every change. - Performed internal cleanup. ## Changes - `config.yml` is now read with KAML, which changes how a broken file is treated. - An unreadable configuration file no longer disables the plugin; it starts on its default settings instead. - When a single value cannot be read, the other settings in the file are no longer all discarded: only that value falls back to its default, with a warning. - Per-player delivery queues are now bounded. - A player who sends faster than delivery drains is refused with a warning, rather than building an unbounded backlog that arrives all at once minutes later. ## Bug Fixes - Fixed the player argument of `/tell` matching partially - This came from the switch away from the old Bukkit API. - Fixed `features.channelChat.messageLogging` never actually being read and falling back to its default values - The loading was never implemented despite being documented, so it stayed at its defaults regardless of what the file said. - Fixed a slow Google IME reply silently stopping every subsequent message delivery for that player's session - Fixed a single conversion timeout permanently pinning a word to its hiragana form - Fixed `/reply` not recognizing a reply target that had just been recorded - Fixed reply target entries that had already been cleared on disconnect being recorded again