From 961f04a54cd7e7e49e718d08316aac6d05684ce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sun, 6 Feb 2022 21:37:19 +0100 Subject: [PATCH] Fixed ghost loading bug in projector. --- .../li/cil/oc2/common/blockentity/ProjectorBlockEntity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/li/cil/oc2/common/blockentity/ProjectorBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/ProjectorBlockEntity.java index dfee1869..d43b6b2f 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/ProjectorBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/ProjectorBlockEntity.java @@ -262,7 +262,9 @@ public final class ProjectorBlockEntity extends ModBlockEntity implements Tickab } private void updateProjectorState() { - if (level != null && !level.isClientSide()) { + // We may get called from unmount() of our device, which can be triggered due to chunk unload. + // Hence, we need to check the loaded state here, lest we ghost load the chunk, breaking everything. + if (level != null && !level.isClientSide() && level.isLoaded(getBlockPos())) { level.setBlock(getBlockPos(), getBlockState().setValue(ProjectorBlock.LIT, isProjecting), Block.UPDATE_CLIENTS); Network.sendToClientsTrackingBlockEntity(new ProjectorStateMessage(this, isProjecting && hasEnergy), this);