Skip to content
On this page

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 called block_properties.json (renamed blocks.json with 26.50), same schema and palette order;
  • gophertunnel 4794743 (protocol 2168, level sound event names) and pmmp/BedrockData bdb44a4 (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.401.26.51
blocks / block states1 379 / 17 4991 477 / 22 091 (26.50 added concrete and wool slabs and stairs, …)
items1 9762 076
biomes88: no dappled_forest89
entities136: no cushion137
effect ids, enchantment ids, entity sizesidentical

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, and actions in its transaction), every transaction action (window_id, flags) and item_stack_response (containers, item_stack_id). bedboo fills in the outer bools right before serialization, always true like gophertunnel (unset, they would be serialized as 0: 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 *_presence fields, which nothing reads.
  • player_auth_input.input_data is 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_sound playback fields and the subchunk height map format (added in 1.26.50), dimension_data field 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 (no set_time).

Server behaviour

  • Commands: the numeric value_type of 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.tabComplete uses the family's table.
  • Transport: server.properties ships transport=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).