User:User-12316399/Technical changes/Further flattening

This page documents a theoretical extension to the flattening of 1.13 which aims to further split up and rename blocks, items, entities and the like. This flattening helps for multiple reasons; it eliminates some potentially redundant or illegal block state combinations as well as removing outright unneccesary block states and NBT tags, allows certain blocks, items and entities to show correctly within the Statistics page instead of being lumped under one unintuitive entry, makes certain IDs more intuitive, and splits up skin variants of mobs into separate entity IDs analogously to how texture variants of blocks were split up into separate block IDs. Also listed within this page are some blocks and items existent within Bedrock Edition which could be ported to Java Edition in parity interests.

This proposal deals with Java Edition, but much of this information could also apply to a theoretical Bedrock Edition flattening as well.

Block states
The cauldron change is to allow for cauldrons to remain pushable if Bedrock Edition cauldron mechanics are ported to Java Edition, as water cauldrons will likely require NBT data to define dyed water and potions. Potion cauldrons and lava cauldrons would have their own separate block IDs as well (the latter likely being pushable and usable for redstone contraptions).

The water_adjacent block state is used for sugar cane to handle which blocks it can be placed on; it will either check that the block below has this set to true, or the block below is itself sugar cane. This would help invalid sugar cane to break much faster.

Splitting potions
It may be worth splitting up potions into separate item IDs for each different potion. This would also alleviate the problem with unique potions not showing up within the Statistics screen. Potions would as a result be able to be individually textured as well. A custom potion of each type which still uses NBT data to define effects, colours and the like would be kept, for use in mapmaking and other purposes.

Whether other potion-related objects such as potion particles, potion-filled cauldrons, thrown splash potions, thrown lingering potions, shot tipped arrows and areaeffectclouds should also be split is not known. It will likely be just a tad excessive, and only the items will be neccessary.

Every single potion strength and length variant could be completely flattened out, which would result in hundreds of new block and item IDs, which may be undesirable and excessive, but would allow even more accurate statistics.

Splitting potions may also allow for data-driven brewing recipes as in crafting.

Fluid IDs
See /Fluid changes

Mob skin variants
Numerous skin variants which require NBT data to fully define should be completely split out into different entity IDs, analogously to how trivial "skin variants" of blocks were split in 1.13's flattening (such as the variants of planks or igneous stones and their polished variants receiving unique IDs). As there are 3000+ variants of tropical fish, they are split according to the name of the fish, which is a combination of the shape and pattern, which has 12 possible values. The NBT tag is retained and used to define the rest of the fish.

Pandas use a gene-based format that may be far more difficult to successfully separate, and are best left as-is.

Boat wood types
As every single other object which comes in all different wood variants has been separated into different IDs for each wood type, boats should obviously follow suit.

Tags
Italic denotes a new tag or new addition to an existing tag.

note to self: consider other plants, chorus, mushroom bone mealing, impermeable additions, flammable blocks, blocks that catch fire from lava, blocks that block the third person camera, maybe tags for mobs unaffected by fire or mobs targeted or not targeted by certain mobs? more breedables. split into block item and entity tables

Names
The nominal ID remains unchanged in these cases.

Other notes

 * unstable_tnt could be added to the Creative inventory.
 * oak_leaves, birch_leaves, spruce_leaves, jungle_leaves, acacia_leaves and dark_oak_leaves could be made pushable by pistons instead of disappearing like the tree variants, and also be immune to ravagers.
 * fire would no longer check its dimension for whether it burns infinitely on top of bedrock; rather, it checks whether or not the block it's on is contained within the #infiniburn_blocks tag. The newly added flammable_bedrock block, ported from Bedrock Edition and split from the main bedrock block in block ID terms, is part of this tag.
 * mushroom_stem would drop itself upon breaking.
 * All blocks with obstructed set to true will display a message over the hotbar when attempting to be used.
 * Sugar cane would no longer have to check diagonally to see if the block it is placed on is valid; rather, it would only have to check if the block below is either sugar cane or has the water_adjacent blockstate set to true. As a result, sugar cane can now be also placed on gravel and clay.
 * Cacti, flowers, grass and ferns can now all be placed on dirt, coarse dirt, grass blocks, sand, red sand, clay and gravel.
 * Shulker boxes with open set to true now allow light to pass through their sides. (see )
 * Intersecting nether portal frames can now be lit and nether portal blocks now appear as crosses where appropriate.
 * Biomes and status effects still use numerical IDs - should these go?

Other block state changes

 * waterlogged
 * Remove completely once fluids have been completely separated from blocks.
 * Could potentially be kept for beds, so that beds with this set to true cannot be slept in without the water breathing/conduit power effect, as it currently is on Bedrock Edition.