Extra bracket validation #6271

This commit is contained in:
simibubi 2024-07-25 15:15:25 +02:00
parent f6dfe7d688
commit dd7eedd1f0

View File

@ -85,6 +85,10 @@ public class BracketedBlockEntityBehaviour extends BlockEntityBehaviour {
public boolean isBracketPresent() { public boolean isBracketPresent() {
return bracket != null; return bracket != null;
} }
public boolean isBracketValid(BlockState bracketState) {
return bracketState.getBlock() instanceof BracketBlock;
}
@Nullable @Nullable
public BlockState getBracket() { public BlockState getBracket() {
@ -110,7 +114,7 @@ public class BracketedBlockEntityBehaviour extends BlockEntityBehaviour {
@Override @Override
public void write(CompoundTag nbt, boolean clientPacket) { public void write(CompoundTag nbt, boolean clientPacket) {
if (isBracketPresent()) { if (isBracketPresent() && isBracketValid(bracket)) {
nbt.put("Bracket", NbtUtils.writeBlockState(bracket)); nbt.put("Bracket", NbtUtils.writeBlockState(bracket));
} }
if (clientPacket && reRender) { if (clientPacket && reRender) {
@ -122,8 +126,12 @@ public class BracketedBlockEntityBehaviour extends BlockEntityBehaviour {
@Override @Override
public void read(CompoundTag nbt, boolean clientPacket) { public void read(CompoundTag nbt, boolean clientPacket) {
if (nbt.contains("Bracket")) if (nbt.contains("Bracket")) {
bracket = NbtUtils.readBlockState(nbt.getCompound("Bracket")); bracket = null;
BlockState readBlockState = NbtUtils.readBlockState(nbt.getCompound("Bracket"));
if (isBracketValid(readBlockState))
bracket = readBlockState;
}
if (clientPacket && nbt.contains("Redraw")) if (clientPacket && nbt.contains("Redraw"))
getWorld().sendBlockUpdated(getPos(), blockEntity.getBlockState(), blockEntity.getBlockState(), 16); getWorld().sendBlockUpdated(getPos(), blockEntity.getBlockState(), blockEntity.getBlockState(), 16);
super.read(nbt, clientPacket); super.read(nbt, clientPacket);