gnembon / fabric-carpet

Fabric Carpet
MIT License
1.65k stars 261 forks source link

Use a tag or predicate to determine the blocks that are not movable with pistons, even with `movableBlockEntities` #1875

Open James103 opened 3 months ago

James103 commented 3 months ago

Currently, the list of non-movable block entities is hard-coded, as shown below: https://github.com/gnembon/fabric-carpet/blob/2dd8674ea6edd80d4579e949b064b0c9a37b008c/src/main/java/carpet/mixins/PistonBaseBlock_movableBEMixin.java#L54-L56

Would it be possible to take that list, put it in a tag, and make movableBlockEntities use that tag when determining whether or not to let that block entity move?

ch-yx commented 3 months ago

maybe a Predicate (https://minecraft.wiki/w/Predicate) is better. you can write blockstates inside it, but block tag can only have block ids. i m thinking using a special predicate __scarpet:piston_movable is considerable. i use this name is because that __scarpet_marker is a special name already used by this mod.(here)