
[1.10] Farming Station tile seemingly resets
robotgryphon opened this issue · 27 comments
Issue Description:
The farming station loses its internal inventory every now and then. I can't seem to time it, but this includes the capacitors, lock configuration, and any tools/bonemeal in the machine. It's almost like the Tile Entity is being reset, but it may be coincedence.
I'd offer you a log, but there isn't anything being output on client or server. This happens with both 161 and the experimental 164, and both with EnderCore 4.1.65.
Tested with wooden tools, the Tinker's Mattock, and the Mystical Agriculture Supremium tools.
What happens:
The tile seemingly resets itself at random, losing capacitors and inventory.
What you expected to happen:
The tile to not be reset, and to reap all the goodness of automated farming.
Steps to reproduce:
- Put down a farming station
- Throw in some tools (unbreakable ones are fun)
- Throw in a capacitor, maybe?
- Supply all da power.
- ?????
- Lose everything, weep
Affected Versions (Do not use "latest"):
- EnderIO: both 161 beta and 164 experimental
- EnderCore: 4.1.65
- Minecraft: 1.10.2
- Forge: 2185
Your most recent log file where the issue was present:
Can't offer one, as nothing is logged on the client or server.
Just to make sure, it isn't that you just cannot see the contents on the client anymore? So re-logging doesn't help?
ok, how frequent is that problem for you? Or in other words: If I made a special debug version for you, are the chances for it happening again high enough so we'd get any data?
Oh, chances are extremely high. I set it up and within an hour the problem occurred. Worth a shot.
Good. (In a sense.)
Try this build: http://ci.tterrag.com/job/EnderIO-1.10/165/ (once it's finished building), then go into the Ender IO settings, Advanced Settings, and set "debugTraceNBTActivityExtremelyDetailed" to true. (server side is enough if you have a split setup). Then let it run until the problem happens.
Be warned about the amount of data...
Have a look at this: #4010 (comment) --- is this by chance your problem, too?
Thx!
At first glance this is what I see in the server log. There are 3 different Farming Station objects on the server at different times. I will have to dive into the log to see whey, the only legal way for this to happen would be the chunk unloading and reloading---but only the first object is read from the save file.
Next thing I see is "[Client thread/INFO] [EnderIO/]: Saving NBT ... for phase(s) [SAVE]
". The client should never save NBT data. And it also should never write a save file. This is very weird.
wow.... I actually can't believe I didn't notice that the TE was being overridden like that. I only ever saw the server reading from the save during the first time the chunks are loaded, and not subsequent chunk loads. And even then chunk loading didn't really happen at one point and the TE got reset right in front of him.
the only reason why I could see the NBT being 'saved' client side is to send that mass of data to the server for the forceClientUpdate.... but even then it seems weird to do so.
No, the forceClientUpdate is a server flag that is set every time something changes that needs to be sent to the client. From time to time it is checked, then the sync is triggered..The NBT writing code actually resets it when it is asked to save it for phase CLIENT. That way we can can reduce the amount of network traffic and client re-renders.
I'll make another debug version, probably on Monday, that should log what happens in both cases. At the moment we don't see anything more in the log.
Okay, did a whole bunch of work there. Seems to be a packet issue, maybe in your update packet in the tile?
Combined log with TileFarm singled out:
combined-enderio-log.txt
Full server log:
http://hykkota.com/backups/BIGLOG.txt
Full client log:
fml-client-latest.txt
As an addition, this tile is in an RFTools custom dimension. Not sure if that'd actually affect anything, but it should be noted.
As a note I was managing (with the help of another friend) the server as the above logs were happening and we are 3 hours apart so keep that in mind. From the BIGLOG file I can see there at [21:52:58] that forceClientUpdate is false, but then for the double log on the server (which didn't seem to get added to the combined log) at [21:52:59] the forceClientUpdate is set to true and the items disappear in the same NBTwrite. I think what is happening is that the NBT is getting saved server side, but exactly on the client for when the client updates the server. So it's pretty much a total desync between client and server at that point I guess.
So, something doubly screwy just happened. When we first ran into this issue, it was after we upgraded to 164. So, we eventually downgraded back to 161, but it was still happening.
However, for some reason, clearing the configuration by re-crafting the farming station has allowed the hoe I placed in to stay in there overnight. So.. I'll be doing even more testing. This may just be an odd derp with the tile data being messed up.
ok, but I'll make you that version with the extended debugging anyway. I'm really interested in finding out what is happening there.
http://ci.tterrag.com/job/EnderIO-1.10/166/ and the flag is "debugTraceTELivecycleExtremelyDetailed" (only needed on the server).
Update: Went strong for several hours. Second I changed out the hoe for a mattock and locked in a tree section, everything disappeared again. Wut.
Yeah, that is annoying. We really need to get to the bottom of this.
Just a random thought; that Forge setting to remove erroring TileEntities is not on, is it? But I think it would write a log message if it was acting.
We're experiencing the same issue. Same versions as initial report, can confirm the Forge setting is off.
Also had the block physically vanish on me, another friend who could see the block broke it but there were no drops.
Update after some local server testing.
Tried to throw 166 on a server backup to load it up, but the conduit tiles are throwing tons of null pointer exceptions. Can't load the server to test, even WITH the forge erroring stuff turned on.
Here's a log file of the Null stuff for reference.
So.. RIP. I'm not sure whether I should bump back to 161 to try and remove stuff or not at this point. This world has already hopped from 164 to 161 to 165 to 166. I'm kiiinda scared to hop around even more now.
tedsenft, after that error you may have to restore your backup to not lose your conduits. Build 167 fixes the problem.
@tedsenft @MysteriousAges @ZornTaov one of you around to answer @Ivorforce in the linked ticket?
did, and as I said settings got defaulted during a pack update which before caused similar problems with saplings crashing the server, so probably related
Aha! I got it. Seems the tile entity is being invalidated on the server. This is happening with version 168.
enderio-log-168-INVALIDATE.txt
Started the backup with the Mystical Agriculture tools in the farmer, then swapped to an unbreakable Tinker's Mattock after a while. The tools seemed to be fine for quite some time (over an hour)
TILE initially created: Line 44, 12:20.
TILE INVALIDATED: Line 100, 13:47
Seems to have been caused by recurrent complex, but this brings up an extremely interesting point. Remember how I said I had a hoe in there ALL night and nothing happened? And now, magically, the MOMENT I added saplings into the equation around the farmer, the tile invalidates.
It may not even be RC. Might just be trees. But even still.
I'm going to try removing RC and seeing if that fixes it. Wish me luck.
net.minecraft.block.Block.breakBlock(Block.java:514) at
net.minecraft.world.chunk.Chunk.setBlockState(Chunk.java:565) at
net.minecraft.world.World.setBlockState(World.java:331) at
ivorius.reccomplex.world.gen.feature.sapling.RCSaplingGenerator.lambda$growSapling$554(RCSaplingGenerator.java:130) at
So "ivorius.reccomplex" is destroying the Farming Station, and---I guess---is placing a new one just after doing so. No wonder it is reset...