verify pass 2: resolve markers via ViaBackwards/ViaRewind/ViaLegacy

Closed most remaining UNCONFIRMED items + caught corrections: 1.7 data[]=proto5,
1.8 multi-block nibble order (z/x), stance y+1.62, 1.15 wolf idx18=begging,
1.18 below-zero sections NOT stripped (claim was wrong), CONTAINER_SLOT_STATE
1.20.3, + pinned first-appeared versions (report details/server links=1.21,
fluidCount=26.1, block-state id14=1.19.4, itemCount VarInt=1.20.5).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
claude-timemachine
2026-06-19 19:13:19 +02:00
parent e4ab541200
commit 02a249a379
10 changed files with 42 additions and 62 deletions
+4 -20
View File
@@ -154,10 +154,7 @@ Slot {
### `itemCount` type discrepancy
`minecraft-data` 1.20.5 records `itemCount` as `i8`. ViaVersion's `ItemType1_20_5.java:51`
reads it as `VAR_INT`. ViaVersion is tested against live servers; the minecraft-data
entry is believed to be an artifact of the dataset's snapshot timing.
From 1.21.2 onwards minecraft-data also records `varint`, confirming the ViaVersion
reading. <!-- UNCONFIRMED: exact snapshot commit when Mojang changed the wire type -->
reads it as `VAR_INT` — confirmed: `Types.VAR_INT.readPrimitive(buffer)` is the first read in the non-empty branch. ViaVersion is tested against live servers and is authoritative; the minecraft-data `i8` entry is a snapshot artifact from before the 1.20.5 release finalised the wire format. `minecraft-data` 1.21.1 independently records `varint`, confirming that VarInt is correct from **1.20.5** onward. Source: `ViaVersion/.../api/type/types/item/ItemType1_20_5.java:51` + `minecraft-data/data/pc/1.21.1/protocol.json` `types.Slot`.
---
@@ -279,19 +276,6 @@ that components replace with per-component `showTooltip` booleans.
## Open items
- **`itemCount` i8 vs VarInt in 1.20.5**: minecraft-data records `i8`; ViaVersion
`ItemType1_20_5.java` reads `VAR_INT`. The ViaVersion implementation is tested
against live traffic and is treated as authoritative here, but the exact protocol
snapshot where Mojang switched is unconfirmed. <!-- UNCONFIRMED -->
- **1.20.2 NBT format**: ViaVersion `ItemType1_20_2.java` uses `Types.COMPOUND_TAG`
(anonymous, no name prefix) while earlier versions used `Types.NAMED_COMPOUND_TAG`.
The exact protocol version of that sub-change within the 1.13.21.20.4 era is
confirmed as 1.20.2 by the class name but not independently verified against
protocol.json (1.20.2 and 1.20.3 files share the same `present+id+count+nbt`
shape in minecraft-data). <!-- UNCONFIRMED: exact NBT name-prefix removal commit -->
- **`jukebox_playable` wire shape in 1.20.5**: present in the component type enum
at id 42 per minecraft-data 1.20.5? The diff above shows `recipes` at 42 in 1.20.5
and `jukebox_playable` absent — consistent with Mojang adding `jukebox_playable`
in the 1.21 pre-releases. If a 1.20.5 release-candidate snapshot introduced it
mid-stream, that is not captured in the current minecraft-data snapshot.
<!-- UNCONFIRMED -->
- **`itemCount` i8 vs VarInt**: confirmed VarInt from **1.20.5**`ItemType1_20_5.java:51` reads `Types.VAR_INT`; `ItemType1_20_2.java:47` reads `readByte()` (i8). `minecraft-data` 1.20.5's `i8` entry is a pre-release snapshot artifact; corrected to `varint` in `minecraft-data` 1.21.1. Source: `ViaVersion/.../api/type/types/item/ItemType1_20_5.java` and `ItemType1_20_2.java`.
- **1.20.2 NBT format (name-prefix removal)**: confirmed at **1.20.2** `ItemType1_20_2.java:47` uses `Types.COMPOUND_TAG` (anonymous); `ItemType1_13_2.java:46` uses `Types.NAMED_COMPOUND_TAG`. There is no `ItemType1_20_3` or `ItemType1_20_4` (those versions reuse `ItemType1_20_2`), so the change landed exactly at the 1.20.2 protocol boundary. Source: `ViaVersion/.../api/type/types/item/ItemType1_20_2.java` vs `ItemType1_13_2.java`.
- **`jukebox_playable` in 1.20.5**: confirmed absent — `minecraft-data` 1.20.5 `SlotComponentType` mappings show `recipes` at id 42; no `jukebox_playable` entry. The 1.21 pre-releases introduced it. The component table in this doc correctly reflects this split.