Chisel GUI crash
OfficialEsco opened this issue · 14 comments
The client crashes when i'm trying to open the chisel GUI
I used JEI x.341 and FEI x.17.1 before and it worked, then i decided i wanted to try NEI, so i installed JEI x.349 and NEI x.2.163 and removed FEI, everything seemed to work perfectly until i needed to chisel something, the second i right clicked on the chisel tool my client just said byebye /wo crash screen
https://gist.github.com/OfficalEsco/e92e21fbc7943229a272bb612ad35c34
Not sure if this is a NEI problem or JEI is still making GUI problems in version x.341+
Didn't really do much research before posting so i took a gamble that it was your problem, but i did my research now and no the problem does not exist when i remove NEI, so my gut was right
Chisel-Team/Chisel#247 and #25
This only occurs when using the iChisel, normal chisels work fine.
I'll just kindly bump this up because I had this happen just now on my server.
Well, on the client, that is :P
Bump too, bug still persist => When you use IChisel, game crash :
Crash report available here : Here !
Hope a fix soon about that :)
This issue does not persist if you only have CodeChickenCore/Lib installed. NEI is the main offender. Trying to make sure this issue is still alive and aware of. Thanks.
Same bug, instant crash. No need for a log I'm sure but wanted to keep this going
I have finally found the source of this problem, and it's rather stupid.
NEI patches in an entirely new method to GuiContainer, which initializes a field (which it also patches in). Before doing this, it invokes super. Here's what the generated method looks like decompiled:
The problem is that the iChisel GUI calls updateScreen() from initGui() which is called from setWorldAndResolution, and thus the manager field has not been initialized yet. We do this to assure there are no "blinks" between the open of the GUI and the first draw pass, as updateScreen does some state processing.
The preferred fix would be to remove this patching altogether, of course. However, I think in the mean time I can trycatch the updateScreen() call, and you can initialize the field before calling super (you can still call load after, if necessary).
Sounds awesome that you figured it out.
How does that translate to the lamen? Just copy a script or we gotta put in some fancy coding into console everytime we want to use it?
There are updates out for NEI and Chisel which on both ends solves this problem. Go ahead and update.
It would be on the site, just didnt hit the magical button to push to curse :P. Should be on curse now.