Random Things

Random Things

44M Downloads

Time in a bottle and thermal

Sunekaer opened this issue ยท 6 comments

commented

Issue: While playing, I attempted to use the time in a bottle on energetic infuser which was charging a flux jetpack that I just crafted. Right after I clicked on the block, the animation began on it then it crashed. On reboot, it allows me into the world and the animation is running on the infuser, but when attempting to access it, it will crash.

Link to Log or Crash File Paste: https://paste.feed-the-beast.com/view/79de4fbd

Is it Repeatable?: Yes, have attempted twice and happened both times

Mod/s Affected: Either Thermal Expansion (Unable to handle the tick acceleration in it's UI) or Random Things (Possibly trying to accelerate something that cannot)

Known Fix: Wait out the timer and then you are able to access the screen again

commented

No crash for me, odd

commented

the same thing happened to me last night. Sometimes it would crash me other times it would crash other players on the server. It does not seem to crash the server only players and sometimes players that were nowhere near the infuser or the player who used the time in a bottle

commented

Bringing this back up as KingLemming has explained the problem at CoFH/Feedback#1468 .

Oh actually. I know the issue. The bottle is calling update on the client side. it's making a HORRIBLE assumption that if a Tile is ITickable then it ticks on both server and client. That is wrong.
https://github.com/lumien231/Random-Things/blob/master/src/main/java/lumien/randomthings/entitys/EntityTimeAccelerator.java#L75
is the culprit line. It needs to be handled by RandomThings, probably by checking to see if the tile is actually registered in the chunk tickable list.

commented

Here's another crash log, if it's required: https://paste.dimdev.org/ekivukodoc.mccrash
Using Stoneblock 2 modpack, version 1.9.0.
I attempted to use it on an Energetic Infuser. Notably, I didn't actually open the UI (at least, I don't think I did?), it crashed the instant I applied the Time in a Bottle.

In other news, more stuff from the other issue:

@LatvianModder:
That's interesting, and I might use that myself, however I still think it doesn't hurt for you to add a simple if(world.isRemote) return; check. For the tick accelerator, it would be much more performance costly to check if Tile Entity is on the tickableTileEntities list for everything than if the tile itself made that check. Perhaps in future, there could be a forge method for this

@KingLemming:
It probably would be more performance costly, but it would also be correct. And that's more important. The mod doing something should be doing it right. Alternatively, it should only do what it's doing on the server side.

Putting the world remote check in the tile completely defeats the purpose of doing it the way that I am.

commented

My solution is just accelerate things on server side. Client side should receive updates from server anyway, so it should be fine

commented

If this happens with anything else i'll handle it differently.