From 0cf46b3d5d478e73d5d22425765d42c5ed35ac39 Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Thu, 25 Sep 2025 19:59:11 +1000 Subject: [PATCH] dont crash on blockstate deserialization errors --- .../java/me/cortex/voxy/common/world/other/Mapper.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/cortex/voxy/common/world/other/Mapper.java b/src/main/java/me/cortex/voxy/common/world/other/Mapper.java index 113554d6..d7d00cf3 100644 --- a/src/main/java/me/cortex/voxy/common/world/other/Mapper.java +++ b/src/main/java/me/cortex/voxy/common/world/other/Mapper.java @@ -363,8 +363,13 @@ public class Mapper { if (compound.getInt("id", -1) != id) { throw new IllegalStateException("Encoded id != expected id"); } - BlockState state = BlockState.CODEC.parse(NbtOps.INSTANCE, compound.getCompound("block_state").orElseThrow()).getOrThrow(); - return new StateEntry(id, state); + var state = BlockState.CODEC.parse(NbtOps.INSTANCE, compound.getCompound("block_state").orElseThrow()); + if (state.isError()) { + Logger.error("Could not decode blockstate setting to air. id:" + id + " error: " + state.error().get().message()); + return new StateEntry(id, Blocks.AIR.getDefaultState()); + } else { + return new StateEntry(id, state.getOrThrow()); + } } catch (IOException e) { throw new RuntimeException(e); }