Skip to content

v1.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