Drone gets stuck trying to place water block into world
Tekstack opened this issue · 17 comments
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.
Program PC/Drone to export water into the cube.
Any other comments?
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).
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...
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).
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.
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".
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.
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.
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.
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.
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.
The fix in 136 appears to has done the trick from my testing! Thanks for everything.