1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
---
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 <player>@<server>` 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
|