Bedrock 1.26.40
The 1.26.40 protocol family: protocol 2168, BDS 1.26.42.1, 1.26.43.1 and 1.26.44.3. All three builds
answer the same protocol, so createBot({ version }) accepts the family ('1.26.40') or any of the builds; the bot
reports bot.version === '1.26.40' and bot.protocolVersion === 2168. Everything below was checked against
BDS 1.26.44.3 (and the join smoke test against all three builds); the reference for every other page of these docs
is 1.26.51.
Data
@bedboo/bedrock-data ships data/1.26.40/, generated from:
- minecraft-data 3.119.0
data/bedrock/1.26.40(blocks, block states, collision shapes, items, materials); - CloudburstMC/Data
040a6cc(the last 26.40 commit). Its per-state block dump is still calledblock_properties.json(renamedblocks.jsonwith 26.50), same schema and palette order; - gophertunnel
4794743(protocol 2168, level sound event names) and pmmp/BedrockDatabdb44a4(biome ids, as for 1.26.51); - a live probe of BDS 1.26.44.3 (
scripts/probe/1.26.40.json).
Differences from 1.26.51 found there:
| 1.26.40 | 1.26.51 | |
|---|---|---|
| blocks / block states | 1 379 / 17 499 | 1 477 / 22 091 (26.50 added concrete and wool slabs and stairs, …) |
| items | 1 976 | 2 076 |
| biomes | 88: no dappled_forest | 89 |
| entities | 136: no cushion | 137 |
| effect ids, enchantment ids, entity sizes | identical |
Wire differences
bedboo builds every packet in the 1.26.51 shape; the differences that matter are handled per family (feature
optionalsHavePresenceFlag, bot.supportFeature):
- Double optionals. 1.26.40 writes some optional fields as an outer presence bool followed by the usual
optional (gophertunnel
DoubleOptionalFunc):player_auth_input(transaction,item_stack_request,block_action,vehicle_rotation,predicted_vehicle, andactionsin its transaction), every transaction action (window_id,flags) anditem_stack_response(containers,item_stack_id). bedboo fills in the outer bools right before serialization, alwaystruelike gophertunnel (unset, they would be serialized as0: BDS 1.26.44.3 happened to accept that, a reader that follows the schema would read the rest of the packet shifted). Incoming packets keep the extra*_presencefields, which nothing reads. player_auth_input.input_datais optional (a plain list from 1.26.50 on); bedboo always sends it.- Not read or written by bedboo, so without effect:
boss_event.player_id(dropped in 1.26.50),move_entity_delta.ticks,play_soundplayback fields and thesubchunkheight map format (added in 1.26.50),dimension_datafield names,serverbound_pack_setting_change, the furnace option and record packets (1.26.50). - Time is synchronised with
sync_world_clocks, as on 1.26.51 (noset_time).
Server behaviour
- Commands: the numeric
value_typeof a command parameter differs once:execute … run <command>is 88 (90 on 1.26.51, which added two types below it). Targets (8, 10), positions (64, 65), messages (68), raw text (70) and JSON (74) are the same.bot.tabCompleteuses the family's table. - Transport:
server.propertiesshipstransport=raknet; NetherNet works when selected (HTTP signalling on the server port, as on 1.26.51). - Join sequence, loading-screen gate, chunk request mode, server-authoritative inventory and item stack request numbering behave as on 1.26.51 (BDS notes).