Fix changing bogey style not updating the block properly (#6273)

* Fix bogey block's placing the wrong block

* Clean the code up a bit

* Fix bitflag
This commit is contained in:
IThundxr 2024-03-22 09:23:20 -04:00 committed by GitHub
parent 7d3d4a1e7c
commit 41f957a94d
Failed to generate hash of commit

View file

@ -227,15 +227,21 @@ public abstract class AbstractBogeyBlock<T extends AbstractBogeyBlockEntity> ext
sbbe.setBogeyData(sbbe.getBogeyData().merge(defaultData)); sbbe.setBogeyData(sbbe.getBogeyData().merge(defaultData));
if (size == getSize()) { if (size == getSize()) {
if (state.getBlock() != style.getBlockOfSize(size)) {
CompoundTag oldData = sbbe.getBogeyData();
level.setBlock(pos, copyProperties(state, getStateOfSize(sbbe, size)), Block.UPDATE_ALL);
if (!(level.getBlockEntity(pos) instanceof AbstractBogeyBlockEntity bogeyBlockEntity))
return InteractionResult.FAIL;
bogeyBlockEntity.setBogeyData(oldData);
}
player.displayClientMessage(Lang.translateDirect("bogey.style.updated_style") player.displayClientMessage(Lang.translateDirect("bogey.style.updated_style")
.append(": ").append(style.displayName), true); .append(": ").append(style.displayName), true);
} else { } else {
CompoundTag oldData = sbbe.getBogeyData(); CompoundTag oldData = sbbe.getBogeyData();
level.setBlock(pos, this.getStateOfSize(sbbe, size), 3); level.setBlock(pos, this.getStateOfSize(sbbe, size), Block.UPDATE_ALL);
BlockEntity newBlockEntity = level.getBlockEntity(pos); if (!(level.getBlockEntity(pos) instanceof AbstractBogeyBlockEntity bogeyBlockEntity))
if (!(newBlockEntity instanceof AbstractBogeyBlockEntity newBlockEntity1))
return InteractionResult.FAIL; return InteractionResult.FAIL;
newBlockEntity1.setBogeyData(oldData); bogeyBlockEntity.setBogeyData(oldData);
player.displayClientMessage(Lang.translateDirect("bogey.style.updated_style_and_size") player.displayClientMessage(Lang.translateDirect("bogey.style.updated_style_and_size")
.append(": ").append(style.displayName), true); .append(": ").append(style.displayName), true);
} }
@ -312,18 +318,18 @@ public abstract class AbstractBogeyBlock<T extends AbstractBogeyBlockEntity> ext
return target; return target;
} }
public BlockState getNextSize(AbstractBogeyBlockEntity sbte) { public BlockState getNextSize(AbstractBogeyBlockEntity sbbe) {
BogeySizes.BogeySize size = this.getSize(); BogeySizes.BogeySize size = this.getSize();
BogeyStyle style = sbte.getStyle(); BogeyStyle style = sbbe.getStyle();
BlockState nextBlock = style.getNextBlock(size).defaultBlockState(); BlockState nextBlock = style.getNextBlock(size).defaultBlockState();
nextBlock = copyProperties(sbte.getBlockState(), nextBlock); nextBlock = copyProperties(sbbe.getBlockState(), nextBlock);
return nextBlock; return nextBlock;
} }
public BlockState getStateOfSize(AbstractBogeyBlockEntity sbte, BogeySizes.BogeySize size) { public BlockState getStateOfSize(AbstractBogeyBlockEntity sbbe, BogeySizes.BogeySize size) {
BogeyStyle style = sbte.getStyle(); BogeyStyle style = sbbe.getStyle();
BlockState state = style.getBlockOfSize(size).defaultBlockState(); BlockState state = style.getBlockOfSize(size).defaultBlockState();
return copyProperties(sbte.getBlockState(), state); return copyProperties(sbbe.getBlockState(), state);
} }
public BogeyStyle getNextStyle(Level level, BlockPos pos) { public BogeyStyle getNextStyle(Level level, BlockPos pos) {