Skip to content

Bedrock data for 1.16.1201-1.26.60 - #1335

Merged
extremeheat merged 11 commits into
PrismarineJS:masterfrom
mc-zuri:data
Oct 29, 2026
Merged

extremeheat merged 11 commits into
PrismarineJS:masterfrom
mc-zuri:data

Conversation

@mc-zuri

@mc-zuri mc-zuri commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@extremeheat

Copy link
Copy Markdown
Member

Thanks for work on this. I think as mentioned we really want to have something like minecraft-data-generator to auto generate this data going forward. It helps act both as a sanity check and removes need for manual time making update PRs

Right now we can merge only on basis that it "looks good" which isn't ideal

@mc-zuri

mc-zuri commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

@extremeheat

Copy link
Copy Markdown
Member

Cool adding to doc would be good

Does it support all the versions ?

@Pix3lPirat3

Copy link
Copy Markdown
Contributor

Tested the data across all 27 versions it adds (1.16.201 to 1.21.0). Every version has complete items/blocks/blockStates/materials/blockCollisionShapes that parse and are non-empty, and the counts scale per build (items 914 -> 1599, blockStates 6611 -> 14160), so the per-version regeneration looks right.

End-to-end through node-minecraft-data + prismarine-registry + prismarine-block, 1.17.10 to 1.21.0 all work (both the indexed and hashed block-id schemes round-trip getProperties/fromProperties).

The four oldest (1.16.201, 1.16.210, 1.16.220, 1.17.0) are a bit special: this PR adds item data they never had (published dataPaths has items: none for them), but node-minecraft-data still returns 0 items for them even with the files and dataPaths in place, so surfacing those looks like a loader-side change rather than anything missing here.

@rom1504 rom1504 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Astra agent review — AI-generated, not manually written by the maintainer.

Reviewed b34f7dfed829, including the existing discussion and extremeheat's approval. The direction is useful: shared Bedrock facts come from an actual per-build server extractor, and the candidate CI already checks each selected block/state mapping for matching names, complete coverage, and valid default-state ranges. I found no new correctness defect in the portions inspected.

A clarification on the four oldest versions returning no items: replacing the JSON files and dataPaths.json alone does not update the Node wrapper's generated data.js getters. Using the existing wrapper loader with the candidate getters that bin/generate_data.js would produce, I get 914 items for each of 1.16.201, 1.16.210 and 1.16.220, and 1,038 for 1.17.0, including itemsByName.stone. This supports checking wrapper regeneration before assuming a loader-code change is required. It is a focused consumer diagnostic, not a full wrapper release test.

Additional validation: with the candidate 1.17.10 blocks/items/collision shapes and selected 1.17.0 material table, the actual block model round-tripped 7,852 states through fromStateId → getProperties → fromProperties; stone with the candidate diamond-pickaxe ID gives a 300 ms dig time. Dependencies for that diagnostic were minecraft-data 3.110.2, prismarine-registry 1.12.0 and prismarine-block 1.23.0; the unchanged 1.17.10 palette came from that installed data release. I also checked item-ID uniqueness, harvest-tool/drop references for 1.17.10, 1.26.30 and 1.26.51, and all 1.26.30 collision-array lengths against their block state ranges. These checks passed.

I have not rerun the native extractor or established full latest-version downstream compatibility from these samples. The existing documentation/version-coverage request remains relevant: doc/bedrock.md still points at the old extractor and describes collision/material data as coming from Java. I am linking that request rather than adding duplicate inline feedback. The next useful integration check is a regenerated Node wrapper with the 1.26.40/1.26.51 data through current registry/block consumers, alongside recording the generator revision and exact server builds.

Skills used: prismarine-protocol-data-review distinguished generated wrapper exports from the loader and checked producer/consumer references; prismarine-review checked existing feedback and the actual CI validation scope; prismarine-architecture-review checked the shared-data ownership and regeneration boundary; prismarine-item-inventory-review helped trace item IDs into harvest-tool and drop consumers.

Every block state of the exact Bedrock Dedicated Server build of each
version, in runtime id order, each state's properties as the game's
NBT tags. A version whose palette is the previous version's shares its
file through dataPaths.json.
Every block by the server's numeric block id: hardness, resistance,
light, stack size, material and harvest tools, runtime ids, bounding
box, and its drops. Drops are drawn from the game's own drop code for
a player mining the block with an empty hand, or for a data-driven
block taken from its loot tables. A block no player can mine drops
nothing.

blocks_schema.json takes a negative item id in a drop's
{ drop: { id, metadata } }, as items_schema.json does: Bedrock's block
items past id 255 have negative ids, and in 1.16.201 and 1.16.210 such
a drop carries a data value.
Each state's collision boxes as the game's addCollisionShapes gives
them, written in the form of the version's committed file, its blocks
in the order of the version's blocks.json.
Each material's dig speeds by item id, from the destroy speed the game
gives every item on every block.
Every registered item by the runtime id the server sends, with the
stack size, durability, enchantment slots and repair items the game
answers, the block state its creative item places, and from 1.21.60
the nbt and version the item registry packet carries. Each item's keys
keep the order the version's committed file wrote them in.
@mc-zuri

mc-zuri commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

I have regenerated from linux for all 1.16.201+ versions, updated block display names, fixed paths to types.yml, added docs about generator.

@mc-zuri
mc-zuri requested a review from extremeheat October 26, 2026 21:11
@mc-zuri

mc-zuri commented Oct 26, 2026

Copy link
Copy Markdown
Contributor Author

you can see few demos here. it just have biomes and entities in additional commits.

@mc-zuri mc-zuri changed the title Bedrock data for 1.16.1201-1.26.51 Bedrock data for 1.16.1201-1.26.60 Oct 29, 2026
ubuntu-latest is now ubuntu-26.04, whose CMake 4 refuses leveldb-mcpe's cmake_minimum_required. leveldb-zlib has no
prebuilt binary for Node 24, so installing bedrock-protocol compiles it and fails; ubuntu-24.04 has CMake 3.31.
@extremeheat

Copy link
Copy Markdown
Member

Thanks

@extremeheat
extremeheat merged commit b43925c into PrismarineJS:master Oct 29, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants