BC Pump: removal of flowing lava? #734

Closed
taleteller opened this Issue Apr 9, 2013 · 18 comments

Comments

Projects
None yet
9 participants

Edit: thanks to comments and deeper investigation, i was falsely blaming the pump, where MC has to be. Therefore the issue should be about the pumps removing flowing (lava) blocks when in touch with them to allow a better clearance, of areas after draining the source blocks.

Original:
Using BC 3.4.3 with MC 1.4.7 i noticed the following. When draining lava pools with the BC Pump it works as intent at first. Lava source blocks get drained depending on power supply, leaving a flowing lava block in their place.

When a layer is drained the pump pretty much stops until all flowing blocks above are remove. Removing them however takes very long, way longer than draining the source blocks before and depending on the pool size even hours.

This behavior extremely prolongs clearing areas of lava. The pump itself does not consume energy while being "delayed" (tested with TE energy cells), any attached engine, however will keep producing power wasting fuel. Breaking or moving the pump within the pool wont change anything. It seems to be the pumps handling of flowing blocks.

Contributor

viliml commented Apr 9, 2013

Can't reproduce, works fine!

Contributor

Flow86 commented Apr 9, 2013

well you can reproduce it even with water mixed with oil - the pump pumps down the oil, but hangs then on "flowing oil" caused by the water-source block

There are no mixed liquids in lava pools. I can reproduce it easily. For example a pool, containing about 50 Buckets of lava. Took a few minutes to drain the source blocks, leaving this:

2013-04-09_21 13 50

from here on, no mB of lava entered the pipe. After 3 minutes the engines status turned orange, after 15 minutes red due to lack of power consumption.

2013-04-09_21 25 34

Whole 38 minute of waiting, the lava pool dried up:

2013-04-09_21 51 18

This was just a small puddle, imagine how long a lava lake takes to dry up. This is on forge 534 (latest for 1.4.7).

Contributor

SandGrainOne commented Apr 9, 2013

How deep was the pool? At first you made it sound like the pump would take one layer of source blocks, then wait for all the flowing lava to clear, and then take next layer of source blocks. I can't see that happening in your example.

Are you expecting the pump to clear flowing lava?

He is saying that it is not clearing flowing lava. Thats a vanilla minecraft "bug". Lava does not update fast at all. This has nothing to do with the buildcraft code.

Contributor

AartBluestoke commented Apr 10, 2013

the picture of the pool shows an area roughly 8x3. if it sucked "about 50" blocks up to begin with, then it would be resonable to assume that several layers of of lava were sucked up before the second picture was taken.

as far as i understand this, the pump is working as designed, all source blocks were rapidly cleared.

@Fred4106
never thought of it as a vanilla issue. in past versions of MC flowing blocks despawned for me at a more "realistic" rate. Might be your totally right. It still an issue pumps sometimes pausing until flowing blocks above source blocks despawned.

However, i would assume a Pump to destroy flowing blocks above the pump opening, since pumps are not only used to gather liquids but to drain areas as well.

Contributor

AartBluestoke commented Apr 10, 2013

perhaps a simple fix of "on removing a source block, remove any flowing blocks directly above".
this could either increase the cpu load by causing blocks to re-flow to that location, or decrease, if that means the fluid disparate quicker, with less updates. (depending on the relative costs of the different calcs - i'd guess the latter, for lava, and the former for water).

I doubt the cpu load would be higher than the typical recalculation of the vanishing source blocks while pumping, or a rapidly drying water puddle.

Contributor

viliml commented Apr 10, 2013

The OP is mistaken, all the source blocks are removed and only useless flowing lava is left.
About the solution: Is it possible to make a block that is replacable(isBlockReplacable() or whatever, I forgot), but fluids can't flow into them?

laz2727 commented Apr 10, 2013

viliml, is it possible to make invisible block that anyone can see?

It seems impractical to do that laz2727

Contributor

viliml commented Apr 10, 2013

@laz2727 I just looked at the MC code, and yes, mine is possible, but yours is impossible. So, the sollution would be to make a new block, and a new material, that would both isAir() and blocksMovement().

So if I am getting this right, those "Airblocks" would replace the flowing lava while being invisible them self. Would that interfere with falling lava, like in the nether?

We should be able to replace the flowing blocks with air without having to make a new air block. The problem is that mc ticks lava to update so infrequently, if we tick it in the code, it should go away on its own. Maybe have it run through all the flowing lava blocks at its level and call onTick() or whatever it is. Maybe im not quite understanding the problem but...

Despawning lava behaves very random, both in timing and pattern. If it were just "infrequent" it would behave like sluggish water. Take for example a flat, place two stones and a source block at top, wait until the lava flew down and destroy the source block. You hardly see a receding pattern twice, sometimes up to 5 blocks vanish at once, followed by minutes of unchanging.

Contributor

SirSengir commented Apr 11, 2013

Despawning behaviour of flowing lava blocks is an intended (afaict) vanilla quirk.

SirSengir closed this Apr 11, 2013

Contributor

agaricusb commented Apr 11, 2013

FWIW, the lava behavior bug/feature is https://mojang.atlassian.net/browse/MC-4631 (there are several mods available to change it).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment