I have a few questions about various decisions and pack files. Not sure if they need to be documented per se, but I'm not sure where else to find this information:
What is the purpose of textures_list.json and contents.json? What happens if you leave an entry out, or specify them wrongly? Aren't they redundant?
What is the purpose of terrain_texture.json and item_texture.json? Why can't we just specify a texture path directly in the blocks/items like Java does, instead of referencing a thing that references a texture?
Why is flipbook_textures.json used instead of .mcmeta files?
Why do model files have to go in the entity subfolder?
Why does add and remove in entity events have an object containing only a single component_groups key instead of just being a list?
What is the purpose of modules in a manifest? Why does every pack need two UUIDs and versions? Isn't it redundant?
Why is there so much education stuff in the vanilla packs? There's a separate pack for chemistry stuff, why isn't everything in there?
Why doesn't the raw text format match Java Edition? Bedrock's format is so verbose, why change it when everyone was used to the Java way?
Why was /titleraw added instead of simply updating /title to work with raw text? There's already multiple places that support both strings and raw text simultaneously
Why does the set_book_contents loot table function require raw text wrapped in strings and escaped instead of just using the JSON directly?
What is the difference between the set_data and random_aux_value loot table functions?
What is the difference between trade_table and economy_trade_table?
Is the flattening actually planned? All the new blocks have Java-like IDs, are the old ones going to stay in the dark ages forever?
Why was it decided to create dozens of near-identical recipes to implement stuff like campfire crafting? Why can't we just specify multiple item IDs for a key?
Which features are governed by format_version, which by min_engine_version, and which by base_game_version?
Why are multiple versions of various geometries included in the vanilla pack, like geometry.pig and geometry.pig.v1.8?
Why do the vanilla packs use older format versions for some files even when a newer format is available?
Which experimental toggle is the behavior is_experimental key associated with?
Why are functionCommandLimit and maxCommandChainLength separate gamerules? And why is the maximum for functionCommandLimit only 10,000?
Why is NBT allowed in structure files but not in commands?
Why are NBT files formatted in little-endian order unlike Java?
What is the purpose of the 8-byte header at the start of level.dat files? It makes it difficult to read like a normal file
Does the Bedrock creator team communicate with the Java team regarding creator features? It seems very strange that almost all survival features are carefully ported in parity, but new technical Java features are never even acknowledged in Bedrock
I'd love to understand the thought process behind some of these decisions, because I trust there are good reasons behind many of them. And if any are planned to change, I'd love to hear that too! Thanks!!
It looks like we've made some progress on this. Since it's been a while, I'm going to close this issue, but if you have any additional feedback, please reach out to us!
I have a few questions about various decisions and pack files. Not sure if they need to be documented per se, but I'm not sure where else to find this information:
textures_list.json
andcontents.json
? What happens if you leave an entry out, or specify them wrongly? Aren't they redundant?terrain_texture.json
anditem_texture.json
? Why can't we just specify a texture path directly in the blocks/items like Java does, instead of referencing a thing that references a texture?flipbook_textures.json
used instead of.mcmeta
files?entity
subfolder?add
andremove
in entity events have an object containing only a singlecomponent_groups
key instead of just being a list?modules
in a manifest? Why does every pack need two UUIDs and versions? Isn't it redundant?/titleraw
added instead of simply updating/title
to work with raw text? There's already multiple places that support both strings and raw text simultaneouslyset_book_contents
loot table function require raw text wrapped in strings and escaped instead of just using the JSON directly?set_data
andrandom_aux_value
loot table functions?trade_table
andeconomy_trade_table
?format_version
, which bymin_engine_version
, and which bybase_game_version
?geometry.pig
andgeometry.pig.v1.8
?is_experimental
key associated with?functionCommandLimit
andmaxCommandChainLength
separate gamerules? And why is the maximum forfunctionCommandLimit
only 10,000?level.dat
files? It makes it difficult to read like a normal fileI'd love to understand the thought process behind some of these decisions, because I trust there are good reasons behind many of them. And if any are planned to change, I'd love to hear that too! Thanks!!