PneumaticCraft: Repressurized

PneumaticCraft: Repressurized

43M Downloads

Drone gets stuck trying to place water block into world

Tekstack opened this issue · 17 comments

commented

For feature requests, just erase this template and clearly describe the feature you'd like to see

Minecraft Version

1.16.5

Forge Version

forge-1.16.5-36.0.14

Mod Version

1.16.5-2.10.0-134

Describe your problem, including steps to reproduce it

The drone will try to continuously place a water block (Export Fluid Piece with 'place in world checked') in block spaces taken up by non solid blocks such as Seagrass and Kelp.

To reproduce, make a hollow cube, place down kelp/seagrass in flowing water.
image

Program PC/Drone to export water into the cube.
image

Any other comments?

commented

As of time of linking this, the video is still processing, but it should illustrate what exactly I'm talking about and how to reproduce (I haven't tested build 135 yet).

https://youtu.be/CavLYIhgegY

commented

I can't get it to fail like in your video. The tank I'm using is bit smaller but the drone still seems to have no problem filling in every block. Tried with both a real drone and a programmable controller, same results. Are you testing with the latest build 135? oops, just saw you haven't. It may or may not help...

commented

I don't understand. You can't place kelp in flowing water, only in source blocks. And once kelp is placed in a source block, you can't bucket out the source block until the kelp has been removed. And the drone won't even attempt to place water in the same space as a source block that already contains kelp.

So I don't see how to reproduce this... please advise :)

(I did spot & fix a problem where the drone won't move into existing water, but the drone was able to fill a partially filled pond which contains kelp block without any trouble).

commented

Build 135 has the moving into fluid fix

commented

I did check all block face checkboxes in the fluid place piece, those aren’t checked by default. Back at work off lunch so I can’t test build 135 till later.

commented

Same issue with build 135. I can post another video, but I followed the same steps to reproduce as the last one.

image

Edit: Added image

commented

Really not sure what to say. With this program: https://pastebin.com/H2nGNKfP

and a 3x5x4(h) tank, I get the following (expected) result: https://streamable.com/v2yx47

Note this particular drone needs at least 3 inventory upgrades to carry enough water to do it one run (since it suicides at the end). I also tested the same program in a Programmable Controller, no problems. And I didn't change the sides of the Liquid Export piece at all - just left it as "Up".

commented

I don’t know if it’ll make a difference but my first point is at the lowest Y level and the second point is at the highest in the tank (drone is filling from the bottom up; PC is level with the lowest Y). Also I had all block faces checked with an infinite water source being pumped into the PC.

commented

Shouldn't make a difference; the area (a Set<BlockPos>) has arbitrary initial sorting - the drone regularly re-sorts the area as it works (or at least those positions it hasn't already processed) which is why it will always move to the next closest position in an area, and appear to be zipping around almost at random sometimes, rather than use any kind of regular block scanning. So the order of the two points should have no effect.

commented

It just occurred to me, but with your drone filling from the top down and having a finite amount of water vs my infinite water be giving the appearance that it has completed? I know that’s a long shot, but your drone would move on and execute the suicide piece if it ran out of water correct? And if it did indeed fill the tank and you reran the drone it should immediately move to the suicide location without ever entering the tank.

commented

Don't think so. The drone has 5 inv upgrades, which is enough to hold 96 buckets - more than the 5x4x3=60 buckets needed.

I just tested placing the drone down again with a tank full of source blocks - it does indeed immediately suicide. If there were any non-source blocks, it would fly in and attempt to replace them.

commented

Think I might have spotted a logic error in the code, stand by...

commented

Give build 136 a go when you get a chance...

commented

Will do. Thanks

commented

You can't place kelp in flowing water, only in source blocks. And once kelp is placed in a source block, you can't bucket out the source block until the kelp has been removed.

I don’t know if a mod or what is changing this, but if you notice in my video, I definitely placed the kelp and sea grass in flowing water. The only starting source blocks were placed on the top row of my tank. Sorry to be such a bother, but in my ‘cleanup’ routine mentioned in discord, I had to break every piece of kelp and sea grass for it to continue placing the water as reproduced test in the video above. I’ll post the full routine in discord this weekend and let you try it out if you want and see if you run into the same problem.

commented

The fix in 136 appears to has done the trick from my testing! Thanks for everything.

https://streamable.com/0qs1lb

commented

Fixed in 2.10.1