
[1.12.2] Client Crash - Mods Interaction - Pressing "U" on Blocks
MokahTGS opened this issue · 35 comments
Issue Description:
I was trying to upgrade the simple alloy smelter and simple sag mill and picked them up. I moused over and pressed the "U" key to bring up the JEI crafting method of getting to the upgrade recipe.
What happens:
Doing the above crashed the SP game.
What you expected to happen:
The JEI usage of the block should appear in the GUI.
Affected Versions (Do not use "latest"):
- EnderIO: EnderIO-1.12.2-5.0.29.jar
- EnderCore: EnderCore-1.12.2-0.5.35.jar
- Minecraft: 1.12.2
- Forge: 2707
Your most recent log file where the issue was present:
https://paste.dimdev.org/newojekipe.mccrash
Full mod list: https://pastebin.com/JN5H9P0E
Was it in an ancient warfare storage system?
Does it occur when it is in your inventory?
In my inventory. Picked up the sag mill and the alloy smelter to upgrade them.
Haven't done anything with Ancient Warfare yet, so no, not in a storage system.
Just to add, pressing U on an empty (no RF) sag mill or alloy smelter does not produce the crash.
I ran into a similar crash while trying to press U on cobblestone to check a recipe.
Affected Versions (Do not use "latest"):
- EnderIO: EnderIO-1.12.2-5.0.29.jar
- EnderCore: EnderCore-1.12.2-0.5.35.jar
- Minecraft: 1.12.2
- Forge: 2708
Your most recent log file where the issue was present:
https://paste.dimdev.org/iyoqexeduz.mccrash
admittedly I've got an excessively large amount of mods still active and would have tested in a more barebones environment but when I noticed that the enderio painter was being referenced in the crash reports I went and set B:allowTileEntitiesAsPaintSource=false
and found that that temporarily solved the issue for me.
This is a crash due to the rendering in ancient warfare of blocks. Ender io triggers it when it's getting the models of blocks for painting recipes. Please contact them instead.
I will post an issue on the Ancient Warfare GitHub and reference this. In the meantime, is there a way to stop JEI from trying to render what the painter can do? Would that stop the issue?
https://pastebin.com/NNXEQmtz
https://pastebin.com/j5XZhzPr
https://pastebin.com/kq5Q07Uw
i didn't no, and this happened in world of dragons modpack. but here's the logs. first one is what mc told me, second is the one in "crash log" folder, and third is latest.log in logs folder.
(i didn't at the time i posted the comment, but i recreated the crash.)
Here's some crash logs of it happening with a few other mods. These were both when trying to view recipes for cobblestone:
The Betweenlands: https://pastebin.com/pWd80nav
Ultimate Car Mod: https://pastebin.com/tayk8FCc
Is what is being said that the other mod makers have to fix their mods for this bug to go away? I'm not sure I understand the problem, but want to know if we need bug reports to the other mods, as it looks like it's not just Ancient Warfare that is affected.
Same crash here without Ancient Warfare
https://pastebin.com/fCF9fCBD
I'm getting the same thing without Ancient Warfare installed as well. Looks like some of my people are here reporting it. In my crash report it appears as if SecurityCraft is the culprit so I reported it there first. However, since they use Google Docs and a custom form I can't cross link the bug report.
Client Crash Report: https://pastebin.com/aPvgw1Mx
Forge: 1.12.2-14.23.4.2739
I was pressing 'u' while looking at Cobblestone in the creative inventory screen. I'll cross post this to mezz's JEI as well.
I'm getting what looks like the same issue in my custom modpack when I try to look at the uses for the EnderIO enhanced machines. The error message and crash report both point toward EnderIO calling the Futurepack thrusters with invalid meta while looking for painter recipes.
I'm using:
EnderIO-1.12.2-5.0.29
EnderCore-1.12.2-0.5.35
1.12.2-forge1.12.2-14.23.4.2736
I opened an issue on Futurepack's issue tracker and was told to open an issue here and link to that one.
Futurepack issue tracker: mcenderdragon/Futurepack-API#474
Error message: https://pastebin.com/TFZyQBj0
Full crash report: https://pastebin.com/bmtd6Rw1
The issue is this line:
final IBlockState stateFromMeta = paintBlock.getStateFromMeta(paintSource.getItem().getMetadata(paintSource.getMetadata()));
in https://github.com/SleepyTrousers/EnderIO/blob/master/enderio-base/src/main/java/crazypants/enderio/base/paint/PaintUtil.java#L311
You can not asume a block has the same amount of metas as the original block or vise versa.
The issue comes from whatever source paintSource
gets its ItemStacks from. I all crash reports the meta was 1 above the maximum amount of possibilities and it crashed.
The problem is somehow inside the PainterRegistryPlugin:
https://github.com/SleepyTrousers/EnderIO/blob/master/enderio-machines/src/main/java/crazypants/enderio/machines/integration/jei/PainterRegistryPlugin.java#L169-L173
It just iterates over every ItemStack and checks if it works as paint.
OK yeah in my case it the above assumption. I add 15 items to the creative inventory (meta 0 to 14) but my block has only 12 metas as the items represent different colors and they get stored in a tileentity and get applied via getActualState, the blockState itself is the rotation and if the block is active. I think to only way to fix this is either trying to place the item and get the block or suround it with a try - catch.
Vanilla doesnt have to make an Item to a full Block without a valid player. I think it is also possible to iterate over every possible blockstate get the drops of them, filter out what is not the same ItemBlock as the Block we want and delete duplicated entrys, this would solve the whole item-meta is-not-block-meta problem. But I am not the dev of this project, so these are just some ideas.
Item.getMetadata(ItemStack.getMetadata())
is vanilla's way of converting a item damage to a block meta value. There is no other way.
Ok, to make what happens here clear to everyone:
Ender IO: "Hello item XY, do you have a block?"
Item XY: "Yes, I do. It is Block Zet."
Ender IO: "Thank you Item XY. I see that you have sub-items. Which variant of the block would match the sub-item I see here?"
Item XY: "That would be variant 7."
Ender IO: "Thank you Item XY. Have a nice day."
Ender IO: "Hello Block Zet. Could you give me your state for 'variant 7', please?"
Block Zet: "Piss off, I'm crashing the game NOW"
-=Lost Connection=-
We should probably close this, or just keep it open to capture this one type of complaint.
anyone got any idea of whether the issue is fixed yet?If so, which build?
According to the devs, it isn't EnderIO's fault. It has to do with how other mods do things.
Is it possible to disable EnderIO Painter JEI integration, so this function wouldn't be called? Would that (temporarily) fix this problem until the relevant mod is fixed?
Edit: Alas, setting B:allowTileEntitiesAsPaintSource
to false
in EnderIO.cfg also seems to fix this for now...