[1.4.2][SMP/FTB][CC v1.46]Turtle looses his Mining pickaxe after Server Crash
#41
Posted 13 March 2013 - 08:25 AM
#42
Posted 13 March 2013 - 11:15 AM
What I can't figure out is how if the turtle block is just completely gone, why is it that we log in to find a turtle (albeit a "blank" turtle)? I suspect that there is some code in there that kinda "recovers" from the missing TileEntity, but the route it takes ends up with ComputerCraft supplying a non-upgraded turtle block and the TE not matching that block id either (just a wild guess at this point though).
Problem is looking at the code in MCPC+ (and since they comment where they change code for both bukkit and MCPC it is easy to see vanilla works similar) -- there doesn't seem to be an easy hook to try and find "orphaned" TileEntities before the chunk is loaded and they are attempted to be created in either Forge or Bukkit -- (something like a Chunk.onPreLoad would be nice).
A semi-ugly solution would be to store "Backup" type data in an NBT and check it for inconsistencies on the chunk load event -- at the very least, you'd end up with some consistent state if the server crashed. That way if the CC NBT says "you should have X turtle tile entities at these coordinates" but the chunk says "nuh uh, because the block data didn't get flushed" you could correct it. Is pretty hacky tho.
#43
Posted 13 March 2013 - 07:47 PM
OniBait, on 13 March 2013 - 11:15 AM, said:
What I can't figure out is how if the turtle block is just completely gone, why is it that we log in to find a turtle (albeit a "blank" turtle)? I suspect that there is some code in there that kinda "recovers" from the missing TileEntity, but the route it takes ends up with ComputerCraft supplying a non-upgraded turtle block and the TE not matching that block id either (just a wild guess at this point though).
Problem is looking at the code in MCPC+ (and since they comment where they change code for both bukkit and MCPC it is easy to see vanilla works similar) -- there doesn't seem to be an easy hook to try and find "orphaned" TileEntities before the chunk is loaded and they are attempted to be created in either Forge or Bukkit -- (something like a Chunk.onPreLoad would be nice).
A semi-ugly solution would be to store "Backup" type data in an NBT and check it for inconsistencies on the chunk load event -- at the very least, you'd end up with some consistent state if the server crashed. That way if the CC NBT says "you should have X turtle tile entities at these coordinates" but the chunk says "nuh uh, because the block data didn't get flushed" you could correct it. Is pretty hacky tho.
I think a better solution is to find out why the TE gets out of sync from the block, then fix it so that an inconsistent state is never saved to disk.
#44
Posted 21 March 2013 - 02:35 AM
Is this going to be addressed in the 1.5 update?
#45
Posted 21 March 2013 - 02:37 AM
#46
Posted 21 March 2013 - 03:37 AM
It is a bit of an inconvenience having to go to each excavating turtle after a crash (which sadly sometimes happen) and spawning it in again, getting back the programming, and restoring fuel.
#47
Posted 21 March 2013 - 03:40 AM
Barek, on 21 March 2013 - 03:37 AM, said:
It is a bit of an inconvenience having to go to each excavating turtle after a crash (which sadly sometimes happen) and spawning it in again, getting back the programming, and restoring fuel.
#48
Posted 27 March 2013 - 02:22 PM
This happened in overworld in FTB Mindcrack pack, but the pack has updated couple of times after the last time it happened, so I have no idea what the ComputerCraft version was.
#49
Posted 02 April 2013 - 04:09 AM
#50
Posted 02 April 2013 - 06:00 AM
#51
Posted 21 April 2013 - 12:28 AM
I don't know if it will help but I used this setup,
I had Turtles surrounding an Enderchest outwards with a Chunk Loader directly below the Chest and it was running excavate 64 starting with roughly 500,000 fuel each.
I had the Ender Chest linked to an automatic RP2 sorting system about 200 blocks away. The sorting system consists of a Timer, Filter, and a lot of Pneumatic Pipes going into the top of quite a bit of barrels, a lot of which with Extra-Dimensional Upgrades. I have another Chickenchunk Loader below that Ender Chest with the radius of 10 again.
All four turtles were completely reset when I found them in random positions.
Sorry I can't provide any logs or more detail. That's all I did down to a T both times.
It's odd because my most recent map reset (two weeks ago) is the first time I've ran into this bug on FTB Ultimate Pack (I manually removed Mystcraft) and it's happened twice now with barely a few days passing between them and I've played the FTB Modpack since Dec. 1st. nearly five months ago.
#52
Posted 22 April 2013 - 12:33 PM
#53
Posted 11 August 2013 - 07:38 AM
If it doesn't set the TE data for the new turtle block at the same time it sets the block ID, then there would be a chance the server would save the chunk in between.
updateTileEntityChunkAndDoNothing is badly named, it marks the chunk as "modified" so it gets saved. Setting block ID or metadata already does this for you.
#55
#56
Posted 12 September 2013 - 06:17 AM
immibis, on 11 August 2013 - 07:38 AM, said:
If it doesn't set the TE data for the new turtle block at the same time it sets the block ID, then there would be a chance the server would save the chunk in between.
updateTileEntityChunkAndDoNothing is badly named, it marks the chunk as "modified" so it gets saved. Setting block ID or metadata already does this for you.
Cloudy, immibis brought the thread back up. Just making sure his post is not overlooked.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users