cc-tweaked / CC-Tweaked

Just another ComputerCraft fork
https://tweaked.cc
917 stars 212 forks source link

Merge block entity types #1862

Open SquidDev opened 3 months ago

SquidDev commented 3 months ago

Several blocks in CC:T have normal and advanced variants (computers, turtles, modems, monitors). We currently create a separate block entity type for each block variant (for instance, monitor_normal and monitor_advanced).

This made sense way back in 1.13, as block entities didn't know anything about their owning block, and so could not infer whether they were advanced or not. However, in recent versions of the game, block entities always have a block state associated with them, and so can read any properties from the owning block.

We should merge the separate block entity types into a single type (e.g. monitor instead of monitor_normal and monitor_advanced). This means we no longer need to pass the BE type to the specific blocks (as there will be a single one), which in turn means we no longer need to store the type in the block property codec — much nicer!

This will of course be a world-breaking change, so we'll need to write datafixers and do this at a major version (1.21).

SquidDev commented 2 months ago

Looks like people are using the alpha version in anger, so will push this back to a later release.