diff --git a/src/main/java/com/simibubi/create/content/fluids/FluidTransportBehaviour.java b/src/main/java/com/simibubi/create/content/fluids/FluidTransportBehaviour.java index faef77eb69..fafef0b5b9 100644 --- a/src/main/java/com/simibubi/create/content/fluids/FluidTransportBehaviour.java +++ b/src/main/java/com/simibubi/create/content/fluids/FluidTransportBehaviour.java @@ -40,10 +40,12 @@ public enum UpdatePhase { public Map interfaces; public UpdatePhase phase; + public boolean scheduleUpdate; public FluidTransportBehaviour(SmartBlockEntity be) { super(be); phase = UpdatePhase.WAIT_FOR_PUMPS; + scheduleUpdate = false; } public boolean canPullFluidFrom(FluidStack fluid, BlockState state, Direction direction) { @@ -67,6 +69,13 @@ public void tick() { if (interfaces == null) return; + + if (onServer && scheduleUpdate) { + FluidPropagator.propagateChangedPipe(world, pos, blockEntity.getBlockState()); + scheduleUpdate = false; + return; + } + Collection connections = interfaces.values(); // Do not provide a lone pipe connection with its own flow input @@ -159,6 +168,9 @@ public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clie interfaces.values() .forEach(connection -> connection.deserializeNBT(nbt, registries, blockEntity.getBlockPos(), clientPacket)); + + if (nbt.contains("ScheduleUpdate")) + scheduleUpdate = nbt.getBoolean("ScheduleUpdate"); } @Override @@ -171,6 +183,9 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli interfaces.values() .forEach(connection -> connection.serializeNBT(nbt, registries, clientPacket)); + + if (scheduleUpdate) + nbt.putBoolean("ScheduleUpdate", true); } public FluidStack getProvidedOutwardFluid(Direction side) { diff --git a/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlockEntity.java index d1e066e0c8..2e15cf5ffc 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlockEntity.java @@ -161,8 +161,10 @@ protected void distributePressureTo(Direction side) { BlockFace blockFace = new BlockFace(currentPos, face); BlockPos connectedPos = blockFace.getConnectedPos(); - if (!level.isLoaded(connectedPos)) + if (!level.isLoaded(connectedPos)) { + pipe.scheduleUpdate = true; continue; + } if (blockFace.isEquivalent(start)) continue; if (hasReachedValidEndpoint(level, blockFace, pull)) {