Ender IO Zoo

Ender IO Zoo

961k Downloads

[1.12.2] Client Crash - Mods Interaction - Pressing "U" on Blocks

MokahTGS opened this issue · 35 comments

commented

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

commented

Was it in an ancient warfare storage system?
Does it occur when it is in your inventory?

commented

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.

commented

Just to add, pressing U on an empty (no RF) sag mill or alloy smelter does not produce the crash.

commented

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.

commented

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.

commented

this also accours with the upgraded alloy smelter.(not the simple one)

commented

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?

commented

i had the crash without the ancient warfare mod installed.

commented

moonmoon97, Do you have the crash log?

commented

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.)

commented

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

commented

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.

commented

Same crash here without Ancient Warfare
https://pastebin.com/fCF9fCBD

commented

Yes that is what is being said.

commented

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.

commented

yeah its not JEI.

commented
commented

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

commented

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.

commented

Pretty sure thats how vanilla handles that... but i could be wrong.

commented

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.

commented

Yes? Pretty sure thats intended behavior

commented

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.

commented

How does vanilla wool do it? In 1.12
They use minecraft:wool:(0-15)

commented

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.

commented

i also am not a dev of this project... i was asking mainly for my own learning

commented

Item.getMetadata(ItemStack.getMetadata()) is vanilla's way of converting a item damage to a block meta value. There is no other way.

commented

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=-

commented

That explanation makes it sound like the issue is not Ender IO at all.

commented

Correct.

commented

We should probably close this, or just keep it open to capture this one type of complaint.

commented

anyone got any idea of whether the issue is fixed yet?If so, which build?

commented

According to the devs, it isn't EnderIO's fault. It has to do with how other mods do things.

commented
commented

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...