Catch crash for block state desync. #3424

Could be in some other places as well but let's see what this does.
This commit is contained in:
raoulvdberge
2022-12-10 16:04:49 +01:00
parent 93ac94c251
commit 761b439997

View File

@@ -18,13 +18,18 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.DirectionProperty;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.UUID; import java.util.UUID;
public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor { public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
private static final Logger LOGGER = LogManager.getLogger();
private static final String NBT_OWNER = "Owner"; private static final String NBT_OWNER = "Owner";
private static final String NBT_VERSION = "Version"; private static final String NBT_VERSION = "Version";
private static final int CURRENT_VERSION = 1; private static final int CURRENT_VERSION = 1;
@@ -256,8 +261,15 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
if (direction == null) { if (direction == null) {
BlockState state = level.getBlockState(pos); BlockState state = level.getBlockState(pos);
if (state.getBlock() instanceof BaseBlock) { if (state.getBlock() instanceof BaseBlock baseBlock) {
direction = state.getValue(((BaseBlock) state.getBlock()).getDirection().getProperty()); DirectionProperty property = baseBlock.getDirection().getProperty();
if (state.hasProperty(property)) {
direction = state.getValue(property);
} else {
LOGGER.warn("Node @ {} has no direction! Consider recreating the block", pos);
return Direction.NORTH;
}
} }
} }