From 885d46c7b9844096ebd8ae6af0874fbb5764d534 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 6 Aug 2022 16:42:32 +0200 Subject: [PATCH] Fixed crashing the game when a network block was removed in a bad way. Fixes #3326 --- CHANGELOG.md | 1 + .../blockentity/NetworkNodeBlockEntity.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79ab1dea2..df2fc975d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Fixed Storage Monitor not showing all matching items in non-exact mode - Fixed items getting lost on Creative Disk when more than 2,147,483,647 of one type is stored - Fixed incorrect autocrafting keybind prompt on macOS +- Fixed crashing the game when a network block was removed in a bad way ### Changed diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java index 207c21a2c..b81292352 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java @@ -6,10 +6,10 @@ import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.api.util.Action; import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkNode; -import com.refinedmods.refinedstorage.capability.NetworkNodeProxyCapability; import com.refinedmods.refinedstorage.blockentity.config.IRedstoneConfigurable; import com.refinedmods.refinedstorage.blockentity.config.RedstoneMode; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.capability.NetworkNodeProxyCapability; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -18,6 +18,8 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -28,6 +30,8 @@ public abstract class NetworkNodeBlockEntity extends Base private N clientNode; private N removedNode; + private static final Logger LOGGER = LogManager.getLogger(); + protected NetworkNodeBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); @@ -61,7 +65,10 @@ public abstract class NetworkNodeBlockEntity extends Base INetworkNode node = manager.getNode(worldPosition); if (node == null) { - throw new IllegalStateException("No network node present at " + worldPosition.toString() + ", consider removing the block at this position"); + LOGGER.warn("Expected a node @ {} but couldn't find it, creating a new one...", worldPosition); + node = createNode(level, worldPosition); + manager.setNode(worldPosition, node); + manager.markForSaving(); } return (N) node;