Хук в книгу

Версия Minecraft
1.12.2

will0376

Токсичная личность
2,079
55
585
Вечера всем. Недавно удалял рецепты и столкнулся с неприятными последствиями - игра крашится при заходе в книгу рецептов. Решил действовать кардинально... Хукнуться в метод, вызывающий краш и убрать вызов краша...
Хукнулся. хук работает, но как-то нестабильно. При загрузке сервера я удаляю рецепты по name:meta из файла - видно, как работает хук по логу
[ru.will0376.mod.Hooks.Hooks:isUnlocked:23]: hook (и еще штук 10 таких.)
Но в момент захода в "книгу" - майн крашится с
Код:
net.minecraft.util.ReportedException: Updating screen events
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1898) ~[Minecraft.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1187) ~[Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.IllegalArgumentException: Attempted to get the ID for a unknown recipe: net.minecraft.item.crafting.ShapelessRecipes@4e93d23e Name: minecraft:light_blue_wool
    at net.minecraft.stats.RecipeBook.getRecipeId(RecipeBook.java:54) ~[RecipeBook.class:?]
    at net.minecraft.stats.RecipeBook.isUnlocked(RecipeBook.java:36) ~[RecipeBook.class:?]
    at net.minecraft.client.gui.recipebook.RecipeList.canCraft(RecipeList.java:46) ~[RecipeList.class:?]
    at net.minecraft.client.gui.recipebook.GuiRecipeBook.lambda$updateCollections$0(GuiRecipeBook.java:162) ~[GuiRecipeBook.class:?]
    at java.util.ArrayList.forEach(ArrayList.java:1257) ~[?:1.8.0_191]
    at net.minecraft.client.gui.recipebook.GuiRecipeBook.updateCollections(GuiRecipeBook.java:160) ~[GuiRecipeBook.class:?]
    at net.minecraft.client.gui.recipebook.GuiRecipeBook.initVisuals(GuiRecipeBook.java:97) ~[GuiRecipeBook.class:?]
    at net.minecraft.client.gui.inventory.GuiCrafting.actionPerformed(GuiCrafting.java:142) ~[GuiCrafting.class:?]
    at net.minecraft.client.gui.GuiScreen.mouseClicked(GuiScreen.java:494) ~[GuiScreen.class:?]
    at net.minecraft.client.gui.inventory.GuiContainer.mouseClicked(GuiContainer.java:361) ~[GuiContainer.class:?]
    at net.minecraft.client.gui.inventory.GuiCrafting.mouseClicked(GuiCrafting.java:124) ~[GuiCrafting.class:?]
    at net.minecraft.client.gui.GuiScreen.handleMouseInput(GuiScreen.java:611) ~[GuiScreen.class:?]
    at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:576) ~[GuiScreen.class:?]
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1885) ~[Minecraft.class:?]
    ... 15 more
т.е. вызывается метод не хука...
При этом в лог падает [17:12:56] [main/INFO] [STDOUT]: [ru.will0376.mod.Hooks.Hooks:isUnlocked:29]: ret: -1
Что я не так то делаю??
сам хук(переделанный 3-4 раза):
Java:
    @Hook(priority = HookPriority.HIGH)
    public static boolean isUnlocked(RecipeBook rb, IRecipe recipe)
    {
        System.out.println("hook");
        try {
            int ret = CraftingManager.REGISTRY.getIDForObject(recipe);
            if (ret == -1) {
                ret = ((net.minecraftforge.registries.ForgeRegistry<IRecipe>) net.minecraftforge.fml.common.registry.ForgeRegistries.RECIPES).getID(recipe.getRegistryName());
                if (ret == -1) {
                    System.out.println("ret: "+ret);
                    return rb.recipes.get(1);

                }
            }
            return rb.recipes.get(ret);
        }catch (Exception e){e.printStackTrace(); return rb.recipes.get(1);}
    }
 
3,005
192
592
А пробовал книгу рецептов обновлять?
В ней вроде тоже нужно удалять (по крайней мере обновлять).
 
Сверху