Robots not farming everything in an area
Pontiac76 opened this issue ยท 9 comments
I'm playing the Regrowth HQM pack, version 0.8.8. I'm running with Buildcraft 7.1.14 and Buildcraft Compat 7.1.3. I'm playing on a server hosted in my LAN in my basement. Forge 1558. The server is running on an i7 960 in a virtual machine, 4 gig allocated to the VM OS running on a minimal OS. My main rig is an I7-4790
I'm attempting to get a robot to cultivate only a certain area for coal. However, the robot just doesn't want to harvest very specific spots, even though "area of concern" is clearly covered in black as shown in "Zone planner"
I've reused the yellow map several times, and even made a brand new one thinking that might be it. Still no go. I've even replanted each seed, let them grow with no action on my part, and the robot specifically ignores those spots in, but does come out and get some of the harvest. In the attached image, the robot just got back to the charging station. I've rezoned the map to have it go do something else, harvest a few things, reseat the newly-reprogrammed yellow map, and the robot just goes back to get the coal it likes to get.
This isn't the first time I've run into this kind of thing either. I've seen where a 3x3 grid where I make the food to make the "Magical Food", one particular spot is ignored. When I moved that particular food to another spot, just outside of my clean 3x3 (So, I turn into a 3x4 doing 2, 3, 3, 1 kind of deal), the robot started picking up the food.
Now mind you, I've not reset the server since Dec 26, 2015 and here it is Jan 16, 2015, and this particular area is newly built since that restart. This area has been chunk loaded since before that restart.
I'm not seeing anything on the console. No errors showing from when I logged in tonight.
I have a Hopperhawk collecting the materials. I think in this screenshot I'm standing right on top of it.
Thoughts?
I decided to restart the server anyways, and that seemed to have fixed the problem. The server must have thought something was still there, even though I've relogged several times to the client. shrugs
It seems to be a recurring thing even after a server reset. It looks as though either the robot loses track of whether a crop is fully matured, or, the crop isn't telling the robot that it is mature. This one, IMO, is going to be difficult to track down as the this seems to happen after a period of days with "seemingly" no one online. I reset the server this afternoon, and already most of my coal crops aren't being tended to and completely ignored.
When I reset the server, all crops are trimmed, and the robots resume properly tending to the crops. After a good solid day of the server being up and running, the communication between the robot and the crops gets messed up.
ALL areas I work in are chunk loaded.
If you're a developer, I'm willing to let you onto my server so you can witness what is happening.
Edit:
Server restarts don't seem to be helping much now either. When I first started today, most of my coal field was not being touched by the robot. I destroyed all the crops, then restart the server, replanted, then went on my way. In the same instance of the game, I've come back to it a few hours later and again some of the crops aren't being touched. The one observation I had was that I have a gate that is looking at a chest to see if it is full or not. Once it is, the robot is instructed to go back to the charging station. However, I noticed that the instruction to return to the charging station interrupted the robot while it was in the middle of pruning the crop. So I'm wondering if the BC engine remembers that "This crop has been pruned" but doesn't realize it hasn't completed the job since it got called back to station?
I'm going to take a proper loom at this soon (in a few hours) but if you see this before I get back to it, can you try to duplicate this in a creative world?
In answer to some of your questions:
If you're a developer, I'm willing to let you onto my server so you can witness what is happening.
That's probably not necessary, as it is preferable to make a copy of the world and duplicate it in singleplayer.
However, I noticed that the instruction to return to the charging station
interrupted the robot while it was in the middle of pruning the crop.
So I'm wondering if the BC engine remembers that "This crop has been pruned"
but doesn't realize it hasn't completed the job since it got called back to station?
Its entirely possible that this could be happening, as robots might not properly abort their Harvesting AI (and clean it up). To test this, could you try making a robot harvest some crops, but before it does so tell the robot to go back to the station and see if it properly.
Essentially @hea3ven Should https://github.com/BuildCraft/BuildCraft/blob/7.1.x/common/buildcraft/robotics/boards/BoardRobotHarvester.java have a "delegateAIAborted" method?
For this robot, the release of the resources is done in the parent class (https://github.com/BuildCraft/BuildCraft/blob/7.1.x/common/buildcraft/robotics/boards/BoardRobotGenericSearchBlock.java#L71). Maybe it's not calling the end() method when the AIRobotGoToStation triggers. You can ping me in irc if you need anything, I still remember the robot's code like the back of my hand.
@AlexIIL I tried a small farm in creative and I couldn't get the robot to not farm when I manually triggered the bot to return back home. However, one thing I noticed is that I have a sprinkler system running as well. Over the last day or so, I turned off the sprinkler to see if that might have an influence. I'm going to play this tonight, let it run "as is" and see if manages to break.
Currently
- The excess essence of coal is voided, so the robot always runs
- - The emerald gate does not toggle the redstone.
- The sprinkler system is on
If I were to upload the world, where is the best medium for me to get it to you? Would you need the mods packaged up as well?
So after a couple days (Been working, no time to play) the water doesn't seem to affect the robots crops not getting harvested. I've come up with a mechanism that allows the robot to continue harvesting and not void anything. Just when the storage the hopper-hawk is connected to has any contents, when the robot goes back to base, it is told to stay there until the container is empty.
The problem definitely seems to be when the robot is interrupted via an automated fashion, as I said, I couldn't reproduce manually in a creative world, but that was with me just hitting the button.
If I'm awake enough, I'll setup the creative world to run while I'm in bed in about 12 hours or so, but have the robot run autonomously with being told to go back to base as soon as there is something in the buffer inventory.
This will probably not be fixed in Minecraft 1.7.10, as it seems it might require a small rethought/refactor.