verify pass: resolve VERIFY flags (corrections + citations + honest UNCONFIRMED)

Corrected real errors: several 1.7.x release dates, resource_pack_send version,
config packet ordering, structured-component count (56), PLAYER_LOADED (1.21.4),
entity_sound_effect field order. Confirmed+cited the rest; remaining ~19 items
re-marked UNCONFIRMED (third-party/ViaLegacy/26.2 internals unreachable from refs).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
claude-timemachine
2026-06-19 15:03:44 +02:00
parent d73c1c9537
commit a3d5f64ef5
25 changed files with 179 additions and 119 deletions
+15 -14
View File
@@ -67,12 +67,12 @@ sequenceDiagram
Note over C,S: CONFIGURATION state begins
C->>S: Client Information (Config SB 0x00)
Note right of S: locale, render distance, chat mode, skin parts, main hand
C->>S: Plugin Message minecraft:brand (Config SB 0x02 / 0x01 pre-1.20.5)
Note right of S: client brand string e.g. "vanilla"
C->>S: Client Information (Config SB 0x00)
Note right of S: locale, render distance, chat mode, skin parts, main hand
alt 1.20.5 and later (protocol 766+)
S->>C: Known Packs (Config CB 0x0E)
C->>S: Known Packs (Config SB 0x07)
@@ -100,10 +100,10 @@ sequenceDiagram
```
The server controls ordering within Configuration. The sequence above reflects
observed Vanilla/Velocity ordering. The client **must not** transition to Play until it
receives `Finish Configuration`.
Vanilla ordering per minecraft.wiki/w/Java_Edition_protocol/FAQ (steps 1120). The client **must not** transition to Play until it
receives `Finish Configuration`. Note: brand (step 11) is sent before Client Information (step 12) per the wiki; the server does not enforce this ordering.
Source: `node-minecraft-protocol/src/server/login.js:224-239` (server sends registry_data
Source: minecraft.wiki/w/Java_Edition_protocol/FAQ steps 1120 (authoritative ordering); `node-minecraft-protocol/src/server/login.js:224-239` (server sends registry_data
then finish_configuration); `node-minecraft-protocol/src/client/play.js:49-68` (client
handles select_known_packs → finish_configuration → state=PLAY).
@@ -270,7 +270,7 @@ function enterConfigState(finishCb) {
}
```
Players in Configuration are not visible on the tab list. <!-- VERIFY: confirmed for initial entry; verify same applies during mid-session re-configuration -->
Players in Configuration are not visible on the tab list. <!-- UNCONFIRMED for mid-session re-configuration: initial entry behaviour is protocol-documented; for re-configuration, Velocity `ClientPlaySessionHandler.java:607` calls `clearAllSilent()` (no packet to peers) when entering config state — whether the vanilla server also removes the player from other clients' tab lists is not confirmed from available proxy sources alone. -->
### How Velocity bridges re-configuration
@@ -320,7 +320,7 @@ if (client.supportFeature('segmentedRegistryCodecData')) {
}
```
<!-- VERIFY: exact version at which registry_data became per-registry (segmented): believed 1.20.5 based on the feature flag name; may be 1.20.3 -->
Confirmed 1.20.5: `minecraft-data/data/pc/common/features.json` sets `segmentedRegistryCodecData -> ['1.20.5', 'latest']`. Verified against protocol.json: 1.20.2 and 1.20.3 use monolithic `codec: anonymousNbt`; 1.20.5 uses `id: string` + `entries: []` (per-registry). Not 1.20.3.
---
@@ -349,17 +349,18 @@ and 0x04 (1.20.5+) in the CONFIG serverbound block.
---
## 8. VERIFY flags
## 8. Resolution of prior VERIFY flags
<!-- VERIFY: exact packet ordering within Configuration — Client Information before or after brand? Wiki describes expected sequence; confirm against a packet capture. -->
**Packet ordering (Client Information vs brand):** CORRECTED. minecraft.wiki/w/Java_Edition_protocol/FAQ steps 1112: client sends brand (step 11) before Client Information (step 12). Sequence diagram above updated accordingly.
<!-- VERIFY: whether Update Tags is always sent during initial Configuration or only during re-configuration in current Vanilla (1.21.x). Wiki packet list includes it; Velocity passes it through but does not generate it. -->
**Update Tags during initial Configuration:** CONFIRMED OPTIONAL. Wiki step 18 lists Update Tags as "(Optional)" during initial configuration. It is present in the clientbound packet table and Vanilla sends it, but it is not mandatory.
<!-- VERIFY: whether Known Packs CB is sent before or after Plugin Message (brand) in 1.20.5+ Vanilla — sequence diagram places Known Packs after brand, matching Velocity's event-ordering comment, but confirm against a live trace. -->
**Known Packs CB vs brand ordering:** CONFIRMED. Wiki steps 13 (server brand) and 15 (Known Packs CB): server sends its brand first, then Feature Flags (step 14), then Known Packs CB (step 15). Sequence diagram above already reflects this correctly (Known Packs inside the 1.20.5+ alt block, after server brand).
<!-- VERIFY: segmentedRegistryCodecData feature flag exact version boundary — believed 1.20.5. -->
**segmentedRegistryCodecData version:** CONFIRMED 1.20.5. `minecraft-data/data/pc/common/features.json`: `segmentedRegistryCodecData -> ['1.20.5', 'latest']`. Verified: 1.20.2/1.20.3 `protocol.json` shows monolithic `codec: anonymousNbt`; 1.20.5 shows `id: string` + `entries: array` (per-registry). Source: `node-minecraft-protocol/src/server/login.js:226` (`if (client.supportFeature('segmentedRegistryCodecData'))`).
**Players hidden from tab list during mid-session re-configuration:** <!-- UNCONFIRMED: Velocity `ClientPlaySessionHandler.java:607` calls `player.getTabList().clearAllSilent()` when switching to Configuration, which clears the **local** tab list state silently (no packet to other players). Whether other connected clients see the re-configuring player disappear from their tab list is a server/Vanilla behaviour not observable from proxy source alone. -->
<!-- VERIFY: players in Configuration during mid-session re-configuration hidden from tab list the same as during initial Configuration. -->
---