Feature Request: Block Equivalency
StTheo opened this issue · 5 comments
It would be nice to be able to mark certain blocks as equivalent to others so that I can ignore them when they appear visually the same or will eventually be the same.
A few examples I’m facing from a Minecraft 1.0 build:
Dirt is equivalent to grass so I don’t need to wait for grass to grow.
Old wood slabs are equivalent to new wood slabs.
Persistent leaves are equivalent to non-persistent leaves.
This type of system is planned, but it may be quite tricky to implement nicely, as there are different situations where it would need to work differently. And instead of having a similar but separate system for all those cases, I would like it to be some kind of unified system for managing the substitutions/acceptable replacements/acceptable obstructions etc.
One very annoying related problem I'm running into is the blockstate of distance on leaves. I believe that this state should be ignored altogether, though I'm sure someone somewhere will need it. It's messing up my material lists on tree builds and highlighting about 90% of my leaves yellow, since often building tools like WorldEdit and the like will set distance to 7 by default. Normally I'd edit the schematic in-game to fix this, but I can't seem to change this value using schematicRebuildReplaceAll.
My solution to leaves was to alter them in single player with Worldguard. There’s a way to change the flag for user-placed leaves, and once I gave natural leaves the value of user-placed leaves things started working. Won’t work if the leaves all have an artificial distance, though.
You might also look into the verifier. I’ve found that much more helpful since you can only show things like “air blocks where leaf blocks should be” as opposed to “leaf blocks with the wrong metadata”. It’s also incredibly useful when you only want to lay down one material at a time. It’s a bit hard on the eyes if it’s more than a few layers though, so using a single layer for something dense like those leaves might be better.
You should be able to change any blocks using the Rebuild mode, but in cases like this you need to use the "stored state" way of doing it, since you can't place it to the correct state directly. So you would Alt + middle click to "save" the state from an existing block, and then do the Rebuild operation with an empty main hand. You will then also see the state of that "stored state" on the tool HUD.
However I don't think that is really viable for trees and stuff, because there is no sane way for you to fix the state of all leaves to the correct state depending on where the logs are.
So the "final solution" is waiting for that system where you can mark all the leaf states as equivalent.
Also the material list definitely should not care about the state properties in 1.13+ anymore, now that all blocks and items are nicely separated and not based on metadata values within one block. I don't remember what it does currently, but sounds like it still checks the state as well? I bet this is already on my todo list among all the other things to fix and improve about the material list alone.
Also the material list definitely should not care about the state properties in 1.13+ anymore
Well it definitely still does 😝
I think I've placed just a few more than 39 leaf blocks.
Edit: It does tell me the percentage of "mismatched" blocks, which is nice, but requires extra work to figure out progress.
Also, currently playing on 1.16.5 if that helps.