a3d5f64ef5
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>
346 lines
21 KiB
Markdown
346 lines
21 KiB
Markdown
# Java Edition 26.x — Protocol 775 (26.1) / 776 (26.2)
|
||
|
||
| Version | Protocol | Data Version | Release Date |
|
||
|---|---|---|---|
|
||
| 26.1 | 775 | 4786 | 2026-03-24 |
|
||
| 26.1.1 | 775 | 4788 | 2026-04-01 |
|
||
| 26.1.2 | 775 | 4790 | 2026-04-09 |
|
||
| 26.2 | 776 | 4903 | 2026-06-16 |
|
||
|
||
Sources: minecraft.wiki/w/Java_Edition_26.1 (fetched 2026-06-19), minecraft.wiki/w/Java_Edition_26.1.1 (fetched 2026-06-19), minecraft.wiki/w/Java_Edition_26.1.2 (fetched 2026-06-19), minecraft.wiki/w/Java_Edition_26.2 (fetched 2026-06-19), minecraft-data `protocolVersions.json` (`/tmp/mcproto-refs/minecraft-data/data/pc/common/protocolVersions.json`), ViaVersion `ProtocolVersion.java:96` (`/tmp/mcproto-refs/ViaVersion`).
|
||
|
||
---
|
||
|
||
## The versioning-scheme rename: `1.X.Y` → `YY.N.hotfix`
|
||
|
||
### What changed
|
||
|
||
Starting with 26.1 (released 2026-03-24), Mojang retired the `1.X.Y` naming convention it had used since Java Edition's early release era and replaced it with a **calendar-based `year.drop.hotfix`** format.
|
||
|
||
> "This is the first Java Edition release version to use the new 'year.drop.hotfix' version format announced in December 2025."
|
||
> — minecraft.wiki/w/Java_Edition_26.1 (fetched 2026-06-19)
|
||
|
||
**What the fields mean:**
|
||
|
||
| Field | Meaning | Example |
|
||
|---|---|---|
|
||
| `YY` | Two-digit year | `26` = 2026 |
|
||
| `N` | Drop number within that year (first, second, …) | `1` = first 2026 drop, `2` = second |
|
||
| `.hotfix` | Optional patch suffix; shares the same protocol number as the base drop | `26.1.1`, `26.1.2` |
|
||
|
||
The old `1.X.Y` scheme was a pseudo-semver inherited from pre-1.0 Minecraft versioning and carried no calendar meaning. The new format makes the release cadence legible at a glance and aligns Java Edition with Mojang's publicly communicated "drops" model (multiple major content updates per year instead of one big annual release).
|
||
|
||
### What did NOT change
|
||
|
||
- **Protocol wire format**: the protocol version number continues the existing integer sequence (`773 = 1.21.9`, `774 = 1.21.11`, `775 = 26.1`, `776 = 26.2`). The rename is purely in the human-readable game version string; the handshake's VarInt protocol field is unaffected.
|
||
- **Snapshot scheme**: pre-release builds still use the `0x40000000` high-bit convention (`0x40000000 + N`). 26.1's snapshot range ran `0x4000011F` (snapshot-1) through `0x4000012F` (rc-3); 26.2's ran `0x40000134` (snapshot-2) through `0x40000142` (rc-2). Source: minecraft-data `protocolVersions.json`.
|
||
- **Snapshot naming convention**: the `YYwNNa` week-snapshot style is still used — `26w14a` appears in minecraft-data between 26.1.2 and the first 26.2 snapshot (dataVersion 5000, protocol `0x40000131`), consistent with how April-type or interstitial snapshots have always been named.
|
||
|
||
---
|
||
|
||
## 26.1 — Protocol 775 (vs 1.21.11 / protocol 774)
|
||
|
||
**Release name:** "Tiny Takeover"
|
||
**Development timeline:** 11 snapshots, 3 pre-releases, 3 release candidates.
|
||
**Pack formats:** Resource pack 84.0, Data pack 101.1.
|
||
**Minimum Java:** Java SE 25 (LTS); first version to require Java 25.
|
||
**Obfuscation:** First release without an obfuscated jar variant.
|
||
|
||
ViaVersion package: `v1_21_11to26_1/` at `/tmp/mcproto-refs/ViaVersion/common/src/main/java/com/viaversion/viaversion/protocols/v1_21_11to26_1/`.
|
||
|
||
### Headline gameplay changes (mc-wiki, fetched 2026-06-19)
|
||
|
||
- **Golden Dandelion**: new flower (crafted from 1 dandelion + 8 gold nuggets) that pauses/resumes baby mob aging on right-click.
|
||
- **Baby mob overhaul**: updated models, textures, and sounds for 70+ baby mobs — cats, chickens, cows, horses, wolves, pigs, sheep, rabbits, axolotls, squids, foxes, goats, camels, armadillos, polar bears, llamas, zombies, husks, drowned, piglins, villagers, zombie villagers. Dedicated baby armor textures; saddles and armor no longer rendered on baby pigs, camels, wolves.
|
||
- **Craftable name tags**: paper + any nugget type (previously uncraftable).
|
||
- **Note block trumpet**: new instrument on copper blocks; sound varies with oxidation level.
|
||
- **`/swing` command**: animate entity arm movements.
|
||
- **`/time` redesign**: now references world clocks (dimension-specific timekeeping registry).
|
||
- **Villager trades data-driven**: `villager_trade` and `trade_set` datapack types.
|
||
- **Stonecutter**: deepslate and stone craftable directly into variants.
|
||
- **Requires Java SE 25**: first such requirement.
|
||
|
||
### Protocol changes in 775
|
||
|
||
Sources: ViaVersion `ClientboundPackets26_1.java`, `ServerboundPackets26_1.java`, `Protocol1_21_11To26_1.java`, `ChunkSectionType26_1.java`, `EntityDataTypes26_1.java` (all under `/tmp/mcproto-refs/ViaVersion/...`).
|
||
|
||
#### New clientbound packets (play state)
|
||
|
||
Three packets present in 26.1 but absent from 1.21.11:
|
||
|
||
| ID | Name | Purpose |
|
||
|---|---|---|
|
||
| `0x27` | `GAME_RULE_VALUES` | Sends current game rule values to the client (new in 26.1; replaces or supplements the `/gamerule` response flow) |
|
||
| `0x32` | `LOW_DISK_SPACE_WARNING` | Server notifies client of low disk space condition |
|
||
|
||
> Note: `CLEAR_DIALOG` (0x8B) and `SHOW_DIALOG` (0x8C) and `TRACKED_WAYPOINT` (0x8A) already existed in 1.21.11 at `0x89`, `0x8A`, `0x88` respectively. They shifted by two positions because `GAME_RULE_VALUES` and `LOW_DISK_SPACE_WARNING` were inserted earlier in the enum. All IDs shifted accordingly from `GAME_RULE_VALUES`'s position onward.
|
||
|
||
`PLAYER_ROTATION` (`0x49`) similarly existed in 1.21.11 at `0x47`; no new packet, just renumbered by the two insertions above it.
|
||
|
||
ViaVersion cancels `GAME_RULE_VALUES` when translating 26.1→1.21.11 (i.e. it is dropped for older clients); `LOW_DISK_SPACE_WARNING` is likewise unhandled (implicitly cancelled). Source: `Protocol1_21_11To26_1.java` — only `SET_TIME`, `UPDATE_TAGS`, and `LEVEL_CHUNK_WITH_LIGHT` are explicitly remapped.
|
||
|
||
#### New serverbound packets (play state)
|
||
|
||
Four packets present in 26.1 but absent from 1.21.11 / 1.21.6:
|
||
|
||
| ID | Name | ViaVersion translation |
|
||
|---|---|---|
|
||
| `0x01` | `ATTACK` | Split from old `INTERACT`; maps to `INTERACT` with action=1 (Attack) |
|
||
| `0x39` | `SET_GAME_RULE` | Client requests a game rule change; ViaVersion **cancels** this packet (action==`Request game rule values` case) |
|
||
| `0x3E` | `SPECTATE_ENTITY` | Split from `INTERACT`; maps to `INTERACT` with action=1 (Attack) on the target entity |
|
||
| `0x44` | `CUSTOM_CLICK_ACTION` | Custom UI click action (existed in 1.21.6 at `0x41`; renumbered by the three insertions above) |
|
||
|
||
Source: `EntityPacketRewriter26_1.java:registerPackets()` + `ServerboundPackets26_1.java`.
|
||
|
||
**INTERACT refactor** (significant): In 26.1 the monolithic `INTERACT` packet (which carried action=0/interact, 1/attack, 2/interact-at) is split. `ATTACK` carries the attack action; `SPECTATE_ENTITY` carries spectate. The old `INTERACT` (0x1A) remains for right-click interact. ViaVersion synthesizes the old format from the new: for `ATTACK` and `SPECTATE_ENTITY` it writes entity ID + action=1 (Attack) + sneaking state. Sneaking state is now tracked from `PLAYER_INPUT` flags (bit 5) rather than from `INTERACT`'s `secondaryAction` field; ViaVersion stores this in `PlayerSneaking` per-connection storage. Source: `EntityPacketRewriter26_1.java`.
|
||
|
||
#### `SET_TIME` restructured (play state, 0x71 → new multi-clock format)
|
||
|
||
Old format (1.21.11):
|
||
|
||
```
|
||
Long game_time total world age ticks
|
||
Long day_time current day time (negative = paused)
|
||
Boolean tick_day_time whether time advances
|
||
```
|
||
|
||
New format (26.1):
|
||
|
||
```
|
||
Long game_time total world age ticks
|
||
VarInt clock_count number of clock entries (typically 1)
|
||
for each clock:
|
||
VarInt clock_id registry index into world_clock dimension
|
||
VarLong total_ticks current tick count for this clock
|
||
Float partial_tick sub-tick interpolation
|
||
Float tick_rate 0.0 = paused, 1.0 = normal
|
||
```
|
||
|
||
ViaVersion translation: writes `clock_count=1`, `clock_id=0` (overworld), then maps the old `day_time` to `total_ticks` and `tick_day_time` to `tick_rate` (0F or 1F). Source: `Protocol1_21_11To26_1.java:registerClientbound(SET_TIME)`.
|
||
|
||
The restructuring is driven by the new **world clock registry** (`world_clock`) that allows per-dimension custom time tracking. ViaVersion injects `world_clock` registry data with entries for `overworld` and `the_end` during `FINISH_CONFIGURATION`. Source: `Protocol1_21_11To26_1.java:appendClientbound(FINISH_CONFIGURATION)`.
|
||
|
||
#### Chunk section format change (`LEVEL_CHUNK_WITH_LIGHT`)
|
||
|
||
26.1 adds a **fluid count** short to the chunk section header:
|
||
|
||
Old section header (1.21.5–1.21.11):
|
||
|
||
```
|
||
Short non_air_blocks_count
|
||
[block palette]
|
||
[biome palette]
|
||
```
|
||
|
||
New section header (26.1):
|
||
|
||
```
|
||
Short non_air_blocks_count
|
||
Short fluid_count ← NEW
|
||
[block palette]
|
||
[biome palette]
|
||
```
|
||
|
||
ViaVersion computes `fluid_count` from the block palette during downgrade (scanning each block ID against a set of known fluid block-states). Source: `ChunkSectionType26_1.java:read/write`, `BlockItemPacketRewriter26_1.java:replaceClientbound(LEVEL_CHUNK_WITH_LIGHT)`.
|
||
|
||
#### Entity data type additions
|
||
|
||
`EntityDataTypes26_1` adds four new sound-variant entity data types (indices 22, 24, 29, 31), interleaved among the existing variant types:
|
||
|
||
| Index | Name |
|
||
|---|---|
|
||
| 22 | `catSoundVariant` |
|
||
| 24 | `cowSoundVariant` |
|
||
| 29 | `pigSoundVariant` |
|
||
| 31 | `chickenSoundVariant` |
|
||
|
||
These drive the new per-mob sound variant system (distinct cries for different cat breeds, cow breeds, etc.). Existing variant indices above these shift accordingly. Source: `EntityDataTypes26_1.java`.
|
||
|
||
ViaVersion inserts/removes these via `dataTypeMapper().added(entityDataTypes.catSoundVariant)…register()` in `EntityPacketRewriter26_1.registerRewrites()`.
|
||
|
||
Also new entity data indices per the entity rewriter:
|
||
- Villager: index 19 added (`is_villager_data_finalized`)
|
||
- Zombie Villager: index 21 added (`is_villager_data_finalized`)
|
||
|
||
Source: `EntityPacketRewriter26_1.java:registerRewrites()`.
|
||
|
||
#### Item component changes
|
||
|
||
Several structured data keys were renamed/versioned for 26.1. ViaVersion translates:
|
||
|
||
| Old key (1.21.11) | New key (26.1) | Change |
|
||
|---|---|---|
|
||
| `JUKEBOX_PLAYABLE1_21_5` | `JUKEBOX_PLAYABLE26_1` | Internal Holder type change (key vs inline data) |
|
||
| `INSTRUMENT1_21_5` | `INSTRUMENT26_1` | EitherHolder → Holder |
|
||
| `PROVIDES_TRIM_MATERIAL1_21_5` | `PROVIDES_TRIM_MATERIAL26_1` | EitherHolder unwrapping |
|
||
| `CHICKEN_VARIANT1_21_5` | `CHICKEN_VARIANT26_1` | Either resolved to int |
|
||
| `ZOMBIE_NAUTILUS_VARIANT1_21_11` | `ZOMBIE_NAUTILUS_VARIANT26_1` | Either resolved to int |
|
||
| `DAMAGE_TYPE1_21_11` | `DAMAGE_TYPE26_1` | EitherHolder → int |
|
||
| `PROVIDES_BANNER_PATTERNS1_21_5` | `PROVIDES_BANNER_PATTERNS26_1` | Key → HolderSet |
|
||
| `DAMAGE_RESISTANT1_21_2` | `DAMAGE_RESISTANT26_1` | Tag key → HolderSet |
|
||
| `BLOCKS_ATTACKS1_21_5` | `BLOCKS_ATTACKS26_1` | Gains `bypassedBy` field |
|
||
|
||
New components not present in 1.21.11 (removed on downgrade):
|
||
|
||
| Component | Description |
|
||
|---|---|
|
||
| `ADDITIONAL_TRADE_COST` | Transient modifier for villager trade quantities |
|
||
| `DYE` | Dye color component for generic color interactions |
|
||
| `CAT_SOUND_VARIANT` | Per-item cat sound variant |
|
||
| `CHICKEN_SOUND_VARIANT` | Per-item chicken sound variant |
|
||
| `COW_SOUND_VARIANT` | Per-item cow sound variant |
|
||
| `PIG_SOUND_VARIANT` | Per-item pig sound variant |
|
||
|
||
Container item `null` semantics: 26.1 uses `null` for empty container slots instead of empty item objects (`count=0`). ViaVersion converts bidirectionally. Source: `BlockItemPacketRewriter26_1.java:upgradeData/downgradeData`.
|
||
|
||
#### Registry additions (via FINISH_CONFIGURATION injection)
|
||
|
||
ViaVersion injects these registries for 26.1 clients during configuration:
|
||
|
||
| Registry key | Contents |
|
||
|---|---|
|
||
| `world_clock` | `overworld`, `the_end` — dimension clock entries |
|
||
| `cat_sound_variant` | Cat breed sound mappings |
|
||
| `cow_sound_variant` | Cow variant sound mappings |
|
||
| `pig_sound_variant` | Pig variant sound mappings |
|
||
| `chicken_sound_variant` | Chicken variant sound mappings |
|
||
|
||
Also adds `FINISH_CONFIGURATION`-time tag patches: emits an empty `UPDATE_TAGS` if no tags packet was received (to ensure damage type and banner pattern tags are populated). Source: `Protocol1_21_11To26_1.java`.
|
||
|
||
#### Villager/dimension registry rewrites
|
||
|
||
The `dimension_type` registry entry gains `has_ender_dragon_fight` (computed from key == `the_end`) and `visual/ambient_light_color`. `wolf_sound_variant` entries are restructured into `adult_sounds`/`baby_sounds` compound tags. `wolf_variant` gains `baby_assets`. `frog_variant`, `chicken_variant`, `cow_variant`, `pig_variant`, `cat_variant` all gain asset-id affixes and baby asset IDs. Source: `Protocol1_21_11To26_1.java:onMappingDataLoaded`.
|
||
|
||
#### `UPDATE_TAGS` / configuration tags
|
||
|
||
`UPDATE_TAGS` is replaced via `replaceClientbound` in both play and configuration state to track whether tags were sent (for the FINISH_CONFIGURATION injection logic). A large set of `damage_type` and `banner_pattern` empty tags are added for compatibility. Source: `Protocol1_21_11To26_1.java:handleTags`.
|
||
|
||
---
|
||
|
||
## 26.2 — Protocol 776 (vs 26.1 / protocol 775)
|
||
|
||
**Release name:** "Chaos Cubed"
|
||
**Release date:** 2026-06-16
|
||
**Development timeline:** 8 snapshots, 6 pre-releases, 2 release candidates.
|
||
**Pack formats:** Resource pack 88.0, Data pack 107.1.
|
||
**Minimum Java:** Java SE 25 (unchanged).
|
||
|
||
> **Source note:** The ViaVersion clone (`/tmp/mcproto-refs/ViaVersion`) predates 26.2 — no `v26_1to26_2` package exists in the local ref. Protocol 776 is confirmed from minecraft-data `protocolVersions.json` (entry `{'minecraftVersion': '26.2', 'version': 776, 'dataVersion': 4903}`) and minecraft.wiki/w/Java_Edition_26.2 (fetched 2026-06-19). The packet-level diff below is from wiki sources only. All 776 protocol claims in this section remain wiki-sourced and should be re-verified against ViaVersion `v26_1to26_2` once that package ships.
|
||
|
||
### Headline gameplay changes (mc-wiki, fetched 2026-06-19)
|
||
|
||
- **Sulfur Caves biome**: new underground biome with sulfur spikes (stalactite/stalagmite mechanics), sulfur springs, and distinctive lighting.
|
||
- **New blocks**: sulfur block, polished sulfur, sulfur bricks, sulfur stairs/slabs/walls, chiseled sulfur; cinnabar block and all its variants (same palette); potent sulfur (creates geysers); sulfur spike.
|
||
- **Sulfur Cube mob**: passive mob with 12 archetypes (`regular`, `bouncy`, `slow_bouncy`, `fast_flat`, `slow_flat`, `light`, `fast_sliding`, `slow_sliding`, `high_resistance`, `sticky`, `explosive`, `hot`). Physics properties driven by absorbed blocks; can absorb TNT to become explosive.
|
||
- **Music Disc "Bounce"**: by fingerspit.
|
||
- **`/unpublish` command**: disconnects the integrated (LAN) server.
|
||
- **Friends List**: in-game friend request management system. <!-- UNCONFIRMED: wiki describes the feature as integrating with existing chat/presence mechanisms but does not document new packet types for it; no ViaVersion source available for 776 to confirm wire-level implementation -->
|
||
- **Vulkan 1.2 renderer** (experimental): optional renderer with automatic OpenGL fallback.
|
||
|
||
### Protocol changes in 776
|
||
|
||
Sources: minecraft.wiki/w/Java_Edition_26.2 (fetched 2026-06-19). No ViaVersion source available for this bump. All protocol claims in this section are wiki-only and should be reverified against ViaVersion `v26_1to26_2` once available.
|
||
|
||
#### New entity attributes
|
||
|
||
Five new entity attributes registered server-side and sent in `UPDATE_ATTRIBUTES`:
|
||
|
||
| Attribute | Range | Purpose |
|
||
|---|---|---|
|
||
| `minecraft:air_drag_modifier` | 0.0–2048.0 | Air resistance multiplier |
|
||
| `minecraft:bounciness` | 0.0–1.0 | Restitution coefficient for bounce mechanics |
|
||
| `minecraft:friction_modifier` | 0.0–2048.0 | Surface friction multiplier |
|
||
| `minecraft:below_name_distance` | 0.0–512.0 | Minimum distance to show name tag below |
|
||
| `minecraft:name_tag_distance` | 0.0–512.0 | Maximum render distance for name tag |
|
||
|
||
#### New game event
|
||
|
||
`minecraft:bounce` (vibration frequency 2): emitted when an entity with non-zero `bounciness` attribute collides with a surface. Carried in `GAME_EVENT` packets.
|
||
|
||
#### New item component
|
||
|
||
`minecraft:sulfur_cube_content`: holds the block stack absorbed by a Sulfur Cube entity, driving archetype behavior.
|
||
|
||
#### New registry
|
||
|
||
`minecraft:sulfur_cube_archetype`: 12 entries (`regular`, `bouncy`, `slow_bouncy`, `fast_flat`, `slow_flat`, `light`, `fast_sliding`, `slow_sliding`, `high_resistance`, `sticky`, `explosive`, `hot`). Sent via `REGISTRY_DATA` during configuration.
|
||
|
||
#### World generation feature renames
|
||
|
||
`pointed_dripstone` feature type renamed to `speleothem`; `dripstone_cluster` renamed to `speleothem_cluster`. <!-- UNCONFIRMED: wiki documents these as world-generation feature-type renames; whether they affect any wire-format fields (e.g. feature-type IDs embedded in chunk data) cannot be confirmed from wiki or ViaVersion source alone — likely server-side gen only, but ViaVersion v26_1to26_2 source needed to verify -->
|
||
|
||
#### New density function
|
||
|
||
`minecraft:interval_select`: threshold-based density function selector. Server-side only (world generation); not directly in the play protocol. <!-- UNCONFIRMED: described as a worldgen density function on the wiki; no evidence of wire presence, but cannot be definitively excluded without ViaVersion source -->
|
||
|
||
#### Predicate restructuring
|
||
|
||
Entity predicate `type` field renamed to `minecraft:entity_type`; new `minecraft:entity_tags` sub-predicate. Wiki confirms the predicate restructuring but does not specify which packets carry the changed predicate format. <!-- UNCONFIRMED: packet impact (e.g. whether `COMMANDS` argument node serialization changed) not verifiable from wiki alone; ViaVersion v26_1to26_2 source required -->
|
||
|
||
#### Chunk section changes
|
||
|
||
<!-- UNCONFIRMED: wiki does not document any chunk section wire format change in 26.2; format is assumed identical to 26.1 (non-air-block count short + fluid count short + block palette + biome palette). Cannot confirm without ViaVersion v26_1to26_2 source or packet capture. -->
|
||
|
||
#### Particle additions
|
||
|
||
Five new particles: `geyser_base`, `geyser_poof`, `geyser_plume`, `geyser`, `sulfur_cube_goo`. These appear in `LEVEL_PARTICLES` and `SET_ENTITY_DATA` payloads.
|
||
|
||
---
|
||
|
||
## 1.21 trajectory continuity
|
||
|
||
Both 26.1 and 26.2 continue the patterns established in 1.21.x:
|
||
|
||
- **Structured item components** (`minecraft:*` data components introduced in 1.20.5): 26.1 extends this with `dye`, `additional_trade_cost`, sound variant components; 26.2 adds `sulfur_cube_content`. The `EitherHolder` intermediate layer introduced in 1.21.x is being progressively resolved to plain `Holder` or `int` IDs (see 26.1 item component changes above).
|
||
- **Registry-driven content**: new registries (`world_clock`, `sulfur_cube_archetype`, sound variant registries) follow the Configuration-state `REGISTRY_DATA` pattern established in 1.20.2.
|
||
- **Chunk section header**: grew from 1.21.5's block-palette-only header to 1.21.x's non-air count, then 26.1 adds fluid count. Still the same short+palette+palette structure.
|
||
- **Bundle delimiter and batched chunk delivery**: unchanged from 1.21.x.
|
||
- **Snapshot high-bit scheme**: `0x40000000 + N` for all pre-release builds — unbroken from 1.13.
|
||
|
||
---
|
||
|
||
## Proxy and ViaVersion translation notes
|
||
|
||
### 26.1 (775): fully supported by ViaVersion clone
|
||
|
||
ViaVersion's `v1_21_11to26_1` package translates in both directions. Key proxy concerns:
|
||
|
||
| Concern | What to do |
|
||
|---|---|
|
||
| Chunk section fluid count | Recompute from block palette on downgrade; inject zero on upgrade |
|
||
| ATTACK / SPECTATE_ENTITY → INTERACT | Map to `action=1` (attack); track sneak state from `PLAYER_INPUT` bit 5 |
|
||
| INTERACT → ATTACK + optional INTERACT_AT | Split one packet into two for upgrade (entity id + action + location) |
|
||
| SET_TIME multi-clock → old format | Use clock 0 (overworld) only; extract `total_ticks` + `tick_rate` |
|
||
| SET_GAME_RULE serverbound cancel | Drop `SET_GAME_RULE` action=2 (request values) entirely |
|
||
| GAME_RULE_VALUES cancel | Not sent to 1.21.11 clients |
|
||
| LOW_DISK_SPACE_WARNING cancel | Not sent to older clients |
|
||
| World clock registry injection | Inject `world_clock` entries in FINISH_CONFIGURATION |
|
||
| Sound variant registries | Inject `cat_sound_variant`, `cow_sound_variant`, etc. in FINISH_CONFIGURATION |
|
||
| Entity data index shifts | catSoundVariant@22, cowSoundVariant@24, pigSoundVariant@29, chickenSoundVariant@31 inserted |
|
||
| Item component renames | See table in §item-component-changes above |
|
||
|
||
Source: `Protocol1_21_11To26_1.java`, `EntityPacketRewriter26_1.java`, `BlockItemPacketRewriter26_1.java`.
|
||
|
||
### 26.2 (776): no ViaVersion source in local clone
|
||
|
||
The ViaVersion ref predates 26.2. Expected translation requirements (from wiki analysis):
|
||
|
||
- New entity attributes (`air_drag_modifier`, `bounciness`, etc.) in `UPDATE_ATTRIBUTES` must be stripped for 26.1 clients.
|
||
- `sulfur_cube_archetype` registry must be injected or stripped.
|
||
- Five new particles must be remapped or dropped.
|
||
- `sulfur_cube_content` item component must be removed on downgrade.
|
||
- New game event `bounce` can be suppressed without client-visible impact.
|
||
- Entity predicate restructuring may affect `COMMANDS` packet argument types.
|
||
|
||
All items above are derived from wiki analysis only; reverify against ViaVersion `v26_1to26_2` once that package ships.
|
||
|
||
---
|
||
|
||
## Version map summary
|
||
|
||
| Version string | Protocol | Snapshot range | Confirmed by |
|
||
|---|---|---|---|
|
||
| 26.1–26.1.2 | 775 | `0x4000011F`–`0x4000012F` (snapshot-1 to rc-3) | ViaVersion `ProtocolVersion.java:96`; minecraft-data `protocolVersions.json`; mc-wiki |
|
||
| 26.2 | 776 | `0x40000134`–`0x40000142` (snapshot-2 to rc-2) | minecraft-data `protocolVersions.json`; mc-wiki |
|
||
| 26w14a | `0x40000131` | — (interstitial snapshot, April-type) | minecraft-data `protocolVersions.json` (dataVersion 5000) |
|