From 639173db48d037ffa5c084d089e5fc7d85d71d80 Mon Sep 17 00:00:00 2001 From: Sho Sakuma Date: Wed, 5 Aug 2026 19:46:16 +0900 Subject: docs: name both plugin versions for cross-server direct messages The badge read `v1.3.0~`, pointing at a Velocity release that does not exist. The feature needs both halves, and the Velocity half first shipped as 1.2.0 inside the unified v1.3.0 release, so a reader hunting for Velocity v1.3.0 finds nothing and cannot tell which proxy build carries the relay. Also refreshes the gradle.properties example, which still showed the versions current when it was written. Co-Authored-By: Claude --- website/src/docs/developers/resource.md | 4 ++-- website/src/docs/features/direct-message.md | 2 +- website/src/docs/features/velocity.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'website/src/docs') diff --git a/website/src/docs/developers/resource.md b/website/src/docs/developers/resource.md index 1526cf7..543365d 100644 --- a/website/src/docs/developers/resource.md +++ b/website/src/docs/developers/resource.md @@ -20,8 +20,8 @@ Both platforms' `processResources` compute `version` / `gitCommitHash` / `channe ```properties # gradle.properties -paperVersion=1.2.2 -velocityVersion=1.1.0 +paperVersion=1.3.0 +velocityVersion=1.2.0 ``` Paper and Velocity carry separate version numbers and can be released independently. That's because **compatibility is guaranteed by the engine-shared [`ProtocolVersion`](/docs/developers/engine#versioning-strategy-protocolversion) rather than the numeric version**, so the two platforms — which change at different rates — can be bumped and published at their own pace. The wire format is forward-compatible via JSON + `ignoreUnknownKeys`, and backward compatibility is controlled by matching MAJOR + a MINOR-range check on the protocol. diff --git a/website/src/docs/features/direct-message.md b/website/src/docs/features/direct-message.md index ec0f24e..e799985 100644 --- a/website/src/docs/features/direct-message.md +++ b/website/src/docs/features/direct-message.md @@ -30,7 +30,7 @@ Replies to the last player who sent you a message. If there is no such player, t To use quick reply, `features.quickReplies.enabled` must be `true` (default) in `config.yml`. -## Cross-Server Direct Messages +## Cross-Server Direct Messages > [!NOTE] > diff --git a/website/src/docs/features/velocity.md b/website/src/docs/features/velocity.md index 7842a24..f9d3814 100644 --- a/website/src/docs/features/velocity.md +++ b/website/src/docs/features/velocity.md @@ -53,7 +53,7 @@ Each message is assigned a unique ID, and a cache prevents the same message from Entries expire 60 seconds after they are recorded. If the cache is still over its configured size after expired entries are cleared, the oldest remaining entries are dropped. -## Cross-Server Direct Messages +## Cross-Server Direct Messages Setting `crossServerDirectMessage` to `true` lets players exchange direct messages with players on other servers connected to the same proxy. -- cgit v1.2.1 From 54c369939455bcfd7b66faa9d0a18aff901c05b0 Mon Sep 17 00:00:00 2001 From: Sho Sakuma Date: Wed, 5 Aug 2026 20:56:07 +0900 Subject: feat: warn where a pair connects but falls short of a feature MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The matrix marked every accepted pair with a plain tick, which reads as "everything works". It does not. ProtocolVersion bumps PATCH for sub-channels a peer can safely ignore, so Paper 1.3.0 (protocol 1.0.1) against Velocity 1.1.0 (1.0.0) completes the handshake and then silently drops cross-server direct messages — the very feature that PATCH was bumped for. An operator reading the tick had no way to learn that, and the pages around it repeated the claim. The handshake is settled by MAJOR and MINOR alone, so any difference left once a pair is accepted is a feature the newer end offers and the older will never answer. Those pairs now carry a warning that says which end lags. Naming the feature would take a protocol-version-to-feature table on the website, which would drift from the protocol it describes, so the warning stays general and leaves the reader one hop from the compatibility page. The handshake verdict keeps the three checks that mirror Velocity's gate, with the new one layered after them, so the mirror stays honest. isCompatible now holds for a degraded pair, which does connect. Cells are built once per pair in a computed instead of recomputing on each of the template's reads, which a third state would otherwise have multiplied. Co-Authored-By: Claude --- website/src/docs/reference/compatibility.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'website/src/docs') diff --git a/website/src/docs/reference/compatibility.md b/website/src/docs/reference/compatibility.md index 23274ab..2adcea6 100644 --- a/website/src/docs/reference/compatibility.md +++ b/website/src/docs/reference/compatibility.md @@ -18,7 +18,7 @@ The **plugin version** (e.g., Paper v1.2.0) and the **protocol version** (e.g., ## Compatibility Matrix -Each cell indicates whether the corresponding Paper × Velocity combination can connect. Data is fetched from GitHub Releases automatically. +Each cell indicates how far the corresponding Paper × Velocity combination works: ✓ where every feature is available, ⚠ where the pair connects but the older side cannot answer what the newer one adds, and ✗ where the handshake is rejected. Data is fetched from GitHub Releases automatically. @@ -42,7 +42,7 @@ The rules (from Velocity's perspective) are: | Level | Example Change | Compatibility | Deployment Order | |-------|---------------|---------------|------------------| -| **PATCH** (1.0.0 → 1.0.1) | Adding optional fields, new sub-channels | Fully compatible (safe with `ignoreUnknownKeys=true`) | Any order, anytime | +| **PATCH** (1.0.0 → 1.0.1) | Adding optional fields, new sub-channels | Connects (safe with `ignoreUnknownKeys=true`), but the older peer ignores the new sub-channel, so the feature behind it stays unavailable | Any order, anytime | | **MINOR** (1.0.x → 1.1.0) | Adding required fields, changing existing sub-channel semantics | Backward compatible within `MIN_SUPPORTED_MINOR` range | **Update Velocity first** → then update each Paper server | | **MAJOR** (1.x.x → 2.0.0) | Wire format changes, removing/renaming sub-channels | Incompatible | **Simultaneous deployment of all servers** | -- cgit v1.2.1