Create

Create

86M Downloads

Hose Pulleys don't always extract up to their full range.

X66Herobrine66X opened this issue ยท 4 comments

commented

Describe the Bug

Hose pulley's don't always extract to their full range. Sometimes they cut off halfway. They can always pump fluid out to their full range, but sometimes they cut off. It happens nearly every single time on my server, and was doing it a ton on singleplayer when I was testing for this bug report. At first I thought it had to do with the rotation direction of the pumps input. I was convinced that rotating the cogwheel powering the pumps counter clockwise was the problem, and was receiving fairly consistent results, but then it stopped doing the bug altogether. I can't reproduce it now in the same world.

Reproduction Steps

  1. Create a hose pulley system set to pump a fluid (I used lava) into a 128 block long channel.
  2. Fill the channel with the hose pulley.
  3. Now try and extract it back into the pulley.
  4. Watch as the lava channel gets cutoff halfway (maybe, it's inconsistent).
    ...

Expected Result

The hose pulley should pull all 128 blocks back in via the pump.

Screenshots and Videos

2023-12-25_10 48 37
2023-12-25_10 51 39

Crash Report or Log

N/A

Operating System

Windows 10

Mod Version

0.5.1f

Minecraft Version

1.19.2

Forge Version

43.3.5

Other Mods

https://www.curseforge.com/minecraft/modpacks/thecosmereproject-devserver
This is the modpack I'm using.

Additional Context

No response

commented

This 1 line change fixes the issue:

@@ -146,7 +146,7 @@ public abstract class FluidManipulationBehaviour extends BlockEntityBehaviour {
                BiConsumer<BlockPos, Integer> add, boolean searchDownward) throws ChunkNotLoadedException {
                Level world = getWorld();
                int maxBlocks = maxBlocks();
-               int maxRange = canDrainInfinitely(fluid) ? maxRange() : maxRange() / 2;
+               int maxRange = maxRange(); // canDrainInfinitely(fluid) ? maxRange() : maxRange() / 2;
                int maxRangeSq = maxRange * maxRange;
                int i;

@simibubi do you remember why this conditional was put in place?

It seems to me that, with default settings, it is a reasonable invariant to expect that any non-infinite pool that you can fill, you can also drain.

commented

Ok, further testing has proved that reeling in the hose pulley and then extending it back out will consistently cause the next extraction to pull in the full 128 blocks. After that, pumping out the lava and then pumping it back in will trigger the half range bug again.

commented

i am seeing that issue in 1.20.1 as well.

commented

Further testing has shown that by not fully extracting all the lava back in after resetting the pulley (or by resetting the pipe network by R-clicking on a pipe twice) you can pump it in and out at max range forever so long as you don't fully extract the entire channel.