AgriCraft

AgriCraft

30M Downloads

[1.10.2] Items made wholly of wood have no recipe

dshadowwolf opened this issue ยท 4 comments

commented

AgriCraft 2.0.0a1
Infinitylib 0.3.0
Forge 12.18.2.2151

All other recipes exist, but it looks like there is no call in the recipe initialization to "registerCustomWoodRecipes()" - I think the solution is to put the call in after the registration of the sprinkler, somewhere in the conditional started on line 88 of init/AgriRecipes.java :)

Otherwise, good work!

commented

Interesting...

I'll have to look into this one more...

In my testing recipes were showing up in JEI, but perhaps they are uncraftable?

commented

Ok... They are uncraftable, but this looks like a deeper rooted issue than first thought so it might take a while to resolve. I hope to have it fixed by day's end. However, I currently have to go to the store, so it won't be immediate, like the server crash fix, sorry.

commented

Yeah, found that my eyes had just passed right over the call to "registerCustomWoodRecipes()"... At this point I'm wondering if there is an issue in how the "custom wood types" are registered or if it has to do with something else.

With a bit of hacking it is looking like 'woodList' is never getting filled... AgriRecipes.initWoodList() is completing with zero custom woods found. I'm going to go add some debugging to utility/CustomWoodType.java and see if that is the source of the issue next.

Okay, I think the issue is in the ReflectionHelper call - it looks like AgriRecipes.woodList is not getting properly filled in that call.

...Yes, this appears to be the case. You pass a lambda in to the ReflectionHelper.forEachIn call as the "Consumer" parameter, but the lambda function itself is, apparently, never called. I think this has something to do with the way the 'accept' function works, but this is a part of Java that I am not really familiar with, so cannot say for certain.

(Final Edit - I have no ideas where else to look and see what is going wrong...)
ReflectionHelper.forEachFieldIn() is called at least 13 times - which is the number of fields/functions that are 'public' - and each time failed to either satisfy the check that sets isInstance to truth or the Member.isStatic() check. So... at this point I have zero clues - I am not a trained Java programmer - I've just picked up bits and pieces over the years while doing C and C++ and quite a bit of web programming :)

And... Thanks for the time you have spent working on this!

commented

I solved it. It was an issue with getting the wrong instance of the block registry.