diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java index f84f63500..220c59d58 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java @@ -227,15 +227,21 @@ public abstract class AbstractBogeyBlock ext sbbe.setBogeyData(sbbe.getBogeyData().merge(defaultData)); 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") .append(": ").append(style.displayName), true); } else { CompoundTag oldData = sbbe.getBogeyData(); - level.setBlock(pos, this.getStateOfSize(sbbe, size), 3); - BlockEntity newBlockEntity = level.getBlockEntity(pos); - if (!(newBlockEntity instanceof AbstractBogeyBlockEntity newBlockEntity1)) + level.setBlock(pos, this.getStateOfSize(sbbe, size), Block.UPDATE_ALL); + if (!(level.getBlockEntity(pos) instanceof AbstractBogeyBlockEntity bogeyBlockEntity)) return InteractionResult.FAIL; - newBlockEntity1.setBogeyData(oldData); + bogeyBlockEntity.setBogeyData(oldData); player.displayClientMessage(Lang.translateDirect("bogey.style.updated_style_and_size") .append(": ").append(style.displayName), true); } @@ -312,18 +318,18 @@ public abstract class AbstractBogeyBlock ext return target; } - public BlockState getNextSize(AbstractBogeyBlockEntity sbte) { + public BlockState getNextSize(AbstractBogeyBlockEntity sbbe) { BogeySizes.BogeySize size = this.getSize(); - BogeyStyle style = sbte.getStyle(); + BogeyStyle style = sbbe.getStyle(); BlockState nextBlock = style.getNextBlock(size).defaultBlockState(); - nextBlock = copyProperties(sbte.getBlockState(), nextBlock); + nextBlock = copyProperties(sbbe.getBlockState(), nextBlock); return nextBlock; } - public BlockState getStateOfSize(AbstractBogeyBlockEntity sbte, BogeySizes.BogeySize size) { - BogeyStyle style = sbte.getStyle(); + public BlockState getStateOfSize(AbstractBogeyBlockEntity sbbe, BogeySizes.BogeySize size) { + BogeyStyle style = sbbe.getStyle(); BlockState state = style.getBlockOfSize(size).defaultBlockState(); - return copyProperties(sbte.getBlockState(), state); + return copyProperties(sbbe.getBlockState(), state); } public BogeyStyle getNextStyle(Level level, BlockPos pos) {