Everything posted by mclich
-
[Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
Updated
-
[Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
Container class: public class BreweryContainer extends Container { private BreweryTileEntity tileEntity; private List<BrewingRecipe> recipes; public BreweryContainer(int windowId, PlayerInventory playerInventory, PacketBuffer data) { this(windowId, ENGTileEntities.BREWERY_TILE.get().create(), playerInventory, playerInventory.player); } public BreweryContainer(int windowId, BreweryTileEntity tileEntity, PlayerInventory playerInventory, PlayerEntity player) { super(ENGContainers.BREWERY_CONTAINER.get(), windowId); this.tileEntity=tileEntity; if(this.tileEntity!=null) { //if(!this.tileEntity.getLevel().isClientSide()) this.recipes=this.tileEntity.getLevel().getRecipeManager().getAllRecipesFor(ENGRecipeTypes.getBrewingType()); this.tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).ifPresent ( itemHandler-> { this.addSlot(new BottleSlot(itemHandler, 0, 35, 17)); this.addSlot(new BottleSlot(itemHandler, 1, 58, 17)); this.addSlot(new BottleSlot(itemHandler, 2, 81, 17)); this.addSlot(new FuelSlot(itemHandler, 3, 58, 53)); this.addSlot(new IngredientSlot(itemHandler, 4, 16, 53)); this.addSlot(new ResultSlot(itemHandler, 5, 140, 35)); } ); } for(int i=0; i<3; ++i) { for(int j=0; j<9; ++j) { this.addSlot(new Slot(playerInventory, j+i*9+9, 8+j*18, 84+i*18)); } } for(int k=0; k<9; ++k) { this.addSlot(new Slot(playerInventory, k, 8+k*18, 142)); } } public boolean isValidBottle(ItemStack itemStack) { ElderNorseGods.LOGGER.info("recipes ---> "+this.getRecipes(this.tileEntity.getLevel())); return true; } public boolean isFuel(ItemStack itemStack) { return ForgeHooks.getBurnTime(itemStack, null)>0; } public boolean isIngredient(ItemStack itemStack) { return itemStack.getItem()==Items.WHEAT|| itemStack.getItem()==ENGItems.BARLEY.get()|| itemStack.getItem()==ENGItems.HOP.get(); } public boolean isResultItem(ItemStack itemStack) { return true; } public List<BrewingRecipe> getRecipes(World world) { if(this.recipes==null) this.recipes=world.getRecipeManager().getAllRecipesFor(ENGRecipeTypes.getBrewingType()); return this.recipes; } @Override public boolean stillValid(PlayerEntity player) { return this.tileEntity!=null?this.tileEntity.stillValid(player):false; } @Override public ItemStack quickMoveStack(PlayerEntity player, int slotIndex) { Slot slot=this.slots.get(slotIndex); if(slot!=null&&slot.hasItem()) { ItemStack itemStack=slot.getItem(); if(this.isValidBottle(itemStack)) { if((slotIndex==0||slotIndex==1||slotIndex==2)&&!this.moveItemStackTo(itemStack, 6, 42, false)) return ItemStack.EMPTY; else if(!this.moveItemStackTo(itemStack, 0, 3, false)) return ItemStack.EMPTY; } else if(this.isFuel(itemStack)) { if(slotIndex==3&&!this.moveItemStackTo(itemStack, 6, 42, false)) return ItemStack.EMPTY; else if(!this.moveItemStackTo(itemStack, 3, 4, false)) return ItemStack.EMPTY; } else if(this.isIngredient(itemStack)) { if(slotIndex==4&&!this.moveItemStackTo(itemStack, 6, 42, false)) return ItemStack.EMPTY; else if(!this.moveItemStackTo(itemStack, 4, 5, false)) return ItemStack.EMPTY; } else if(this.isResultItem(itemStack)&&slotIndex==5&&!this.moveItemStackTo(itemStack, 6, 42, true)) return ItemStack.EMPTY; else if(slotIndex>5&&slotIndex<33&&!this.moveItemStackTo(itemStack, 33, 42, false)) return ItemStack.EMPTY; else if(!this.moveItemStackTo(itemStack, 6, 33, false)) return ItemStack.EMPTY; if(itemStack.isEmpty()) slot.set(ItemStack.EMPTY); slot.setChanged(); } return ItemStack.EMPTY; } public class BottleSlot extends SlotItemHandler { public BottleSlot(IItemHandler itemHandler, int index, int xPixel, int yPixel) { super(itemHandler, index, xPixel, yPixel); } @Override public int getMaxStackSize() { return 1; } @Override public boolean mayPlace(ItemStack itemStack) { return isValidBottle(itemStack); } } public class FuelSlot extends SlotItemHandler { public FuelSlot(IItemHandler itemHandler, int index, int xPixel, int yPixel) { super(itemHandler, index, xPixel, yPixel); } @Override public int getMaxStackSize(ItemStack itemStack) { return itemStack.getItem()==Items.BUCKET?1:64; } @Override public boolean mayPlace(ItemStack itemStack) { return isFuel(itemStack); } } public class IngredientSlot extends SlotItemHandler { public IngredientSlot(IItemHandler itemHandler, int index, int xPixel, int yPixel) { super(itemHandler, index, xPixel, yPixel); } @Override public int getMaxStackSize() { return 64; } @Override public boolean mayPlace(ItemStack itemStack) { return isIngredient(itemStack); } } public class ResultSlot extends SlotItemHandler { public ResultSlot(IItemHandler itemHandler, int index, int xPixel, int yPixel) { super(itemHandler, index, xPixel, yPixel); } @Override public int getMaxStackSize() { return 64; } @Override public boolean mayPlace(ItemStack itemStack) { return false; } } } Logs: [17:50:51] [Render thread/FATAL] [minecraft/Minecraft]: Reported exception thrown! net.minecraft.crash.ReportedException: Container click at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:434) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.onPress(MouseHelper.java:91) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$null$4(MouseHelper.java:181) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.util.concurrent.ThreadTaskExecutor.execute(ThreadTaskExecutor.java:86) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.MouseHelper.lambda$setup$5(MouseHelper.java:180) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:36) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.2.2.jar:build 10] {} at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3101) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:93) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MainWindow.updateDisplay(MainWindow.java:305) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runTick(Minecraft.java:996) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:607) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_291] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_291] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_291] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_291] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {} Caused by: java.lang.NullPointerException at com.mclich.engmod.block.container.BreweryContainer.getRecipes(BreweryContainer.java:94) ~[main/:?] {re:classloading} at com.mclich.engmod.block.container.BreweryContainer.isValidBottle(BreweryContainer.java:71) ~[main/:?] {re:classloading} at com.mclich.engmod.block.container.BreweryContainer$BottleSlot.mayPlace(BreweryContainer.java:151) ~[main/:?] {re:classloading} at net.minecraft.inventory.container.Container.doClick(Container.java:272) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.inventory.container.Container.clicked(Container.java:160) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.client.multiplayer.PlayerController.handleInventoryMouseClick(PlayerController.java:379) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.inventory.ContainerScreen.slotClicked(ContainerScreen.java:539) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.inventory.ContainerScreen.mouseReleased(ContainerScreen.java:509) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$onPress$1(MouseHelper.java:93) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:427) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} ... 23 more [17:50:51] [Render thread/INFO] [STDOUT/]: [net.minecraft.util.registry.Bootstrap:realStdoutPrintln:123]: ---- Minecraft Crash Report ---- // You should try our sister game, Minceraft! Time: 28.08.21 17:50 Description: Container click java.lang.NullPointerException: Container click at com.mclich.engmod.block.container.BreweryContainer.getRecipes(BreweryContainer.java:94) ~[main/:?] {re:classloading} at com.mclich.engmod.block.container.BreweryContainer.isValidBottle(BreweryContainer.java:71) ~[main/:?] {re:classloading} at com.mclich.engmod.block.container.BreweryContainer$BottleSlot.mayPlace(BreweryContainer.java:151) ~[main/:?] {re:classloading} at net.minecraft.inventory.container.Container.doClick(Container.java:272) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.inventory.container.Container.clicked(Container.java:160) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraft.client.multiplayer.PlayerController.handleInventoryMouseClick(PlayerController.java:379) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.inventory.ContainerScreen.slotClicked(ContainerScreen.java:539) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.inventory.ContainerScreen.mouseReleased(ContainerScreen.java:509) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$onPress$1(MouseHelper.java:93) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:427) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.onPress(MouseHelper.java:91) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$null$4(MouseHelper.java:181) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.util.concurrent.ThreadTaskExecutor.execute(ThreadTaskExecutor.java:86) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.MouseHelper.lambda$setup$5(MouseHelper.java:180) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:36) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.2.2.jar:build 10] {} at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3101) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:93) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MainWindow.updateDisplay(MainWindow.java:305) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runTick(Minecraft.java:996) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:607) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_291] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_291] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_291] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_291] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace: at com.mclich.engmod.block.container.BreweryContainer.getRecipes(BreweryContainer.java:94) ~[?:?] {re:classloading} at com.mclich.engmod.block.container.BreweryContainer.isValidBottle(BreweryContainer.java:71) ~[?:?] {re:classloading} at com.mclich.engmod.block.container.BreweryContainer$BottleSlot.mayPlace(BreweryContainer.java:151) ~[?:?] {re:classloading} at net.minecraft.inventory.container.Container.doClick(Container.java:272) ~[forge:?] {re:classloading} -- Click info -- Details: Menu Type: engmod:brewery Menu Class: com.mclich.engmod.block.container.BreweryContainer Slot Count: 42 Slot: 0 Button: 1 Type: PICKUP Stacktrace: at net.minecraft.inventory.container.Container.clicked(Container.java:160) ~[forge:?] {re:classloading} at net.minecraft.client.multiplayer.PlayerController.handleInventoryMouseClick(PlayerController.java:379) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.inventory.ContainerScreen.slotClicked(ContainerScreen.java:539) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.gui.screen.inventory.ContainerScreen.mouseReleased(ContainerScreen.java:509) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$onPress$1(MouseHelper.java:93) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A} -- Affected screen -- Details: Screen name: com.mclich.engmod.client.gui.screen.BreweryScreen Stacktrace: at net.minecraft.client.gui.screen.Screen.wrapScreenError(Screen.java:427) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.onPress(MouseHelper.java:91) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.MouseHelper.lambda$null$4(MouseHelper.java:181) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.util.concurrent.ThreadTaskExecutor.execute(ThreadTaskExecutor.java:86) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.client.MouseHelper.lambda$setup$5(MouseHelper.java:180) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:36) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.2.2.jar:build 10] {} at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3101) ~[lwjgl-glfw-3.2.2.jar:build 10] {} at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:93) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A} -- Affected level -- Details: All players: 1 total; [ClientPlayerEntity['mclich'/13, l='ClientLevel', x=109.10, y=3.94, z=533.66]] Chunk stats: Client Chunk Cache: 841, 529 Level dimension: minecraft:overworld Level spawn location: World: (32,4,112), Chunk: (at 0,0,0 in 2,7; contains blocks 32,0,112 to 47,255,127), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Level time: 477766 game time, 1007 day time Server brand: forge Server type: Integrated singleplayer server Stacktrace: at net.minecraft.client.world.ClientWorld.fillReportDetails(ClientWorld.java:447) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.fillReport(Minecraft.java:2029) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:623) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_291] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_291] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_291] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_291] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {}
-
[Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
It didn't help. I don't know why you think i have 'final' modifier on the field of recipes. As i've already said, i've never had it
-
[Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
Update 2: so i've done some debugging and seems that you are right: getLevel returns null. The thing is constructor is called twice every time i open my container in-game, when it needs to be called once (as i understand). Here is my container constructor code and logs: public BreweryContainer(int windowId, BreweryTileEntity tileEntity, PlayerInventory playerInventory, PlayerEntity player) { super(ENGContainers.BREWERY_CONTAINER.get(), windowId); this.tileEntity=tileEntity; World world=this.tileEntity.getLevel(); ElderNorseGods.LOGGER.info("world ---> "+world); ElderNorseGods.LOGGER.info("tile_entity ---> "+this.tileEntity); try { ElderNorseGods.LOGGER.info("world_try ---> "+world); ElderNorseGods.LOGGER.info("tile_entity_try ---> "+this.tileEntity); this.recipes=world.getRecipeManager().getAllRecipesFor(ENGRecipeTypes.getBrewingType()); } catch(NullPointerException ex) { ElderNorseGods.LOGGER.info("msg ---> "+ex.getLocalizedMessage()); ElderNorseGods.LOGGER.info("world_catch ---> "+world); ElderNorseGods.LOGGER.info("tile_entity_catch ---> "+this.tileEntity); ElderNorseGods.LOGGER.info("recipes ---> "+this.recipes); } if(this.tileEntity!=null) { this.tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).ifPresent ( itemHandler-> { this.addSlot(new BottleSlot(itemHandler, 0, 35, 17)); this.addSlot(new BottleSlot(itemHandler, 1, 58, 17)); this.addSlot(new BottleSlot(itemHandler, 2, 81, 17)); this.addSlot(new FuelSlot(itemHandler, 3, 58, 53)); this.addSlot(new IngredientSlot(itemHandler, 4, 16, 53)); this.addSlot(new ResultSlot(itemHandler, 5, 140, 35)); } ); } for(int i=0; i<3; ++i) { for(int j=0; j<9; ++j) { this.addSlot(new Slot(playerInventory, j+i*9+9, 8+j*18, 84+i*18)); } } for(int k=0; k<9; ++k) { this.addSlot(new Slot(playerInventory, k, 8+k*18, 142)); } } [01:57:34] [Server thread/INFO] [co.mc.en.ElderNorseGods/]: world ---> ServerLevel[New World] [01:57:34] [Server thread/INFO] [co.mc.en.ElderNorseGods/]: tile_entity ---> com.mclich.engmod.entity.tile.BreweryTileEntity@4ee51390 [01:57:34] [Server thread/INFO] [co.mc.en.ElderNorseGods/]: world_try ---> ServerLevel[New World] [01:57:34] [Server thread/INFO] [co.mc.en.ElderNorseGods/]: tile_entity_try ---> com.mclich.engmod.entity.tile.BreweryTileEntity@4ee51390 [01:57:34] [Render thread/INFO] [co.mc.en.ElderNorseGods/]: world ---> null [01:57:34] [Render thread/INFO] [co.mc.en.ElderNorseGods/]: tile_entity ---> com.mclich.engmod.entity.tile.BreweryTileEntity@43d84df1 [01:57:34] [Render thread/INFO] [co.mc.en.ElderNorseGods/]: world_try ---> null [01:57:34] [Render thread/INFO] [co.mc.en.ElderNorseGods/]: tile_entity_try ---> com.mclich.engmod.entity.tile.BreweryTileEntity@43d84df1 [01:57:34] [Render thread/INFO] [co.mc.en.ElderNorseGods/]: msg ---> null [01:57:34] [Render thread/INFO] [co.mc.en.ElderNorseGods/]: world_catch ---> null [01:57:34] [Render thread/INFO] [co.mc.en.ElderNorseGods/]: tile_entity_catch ---> com.mclich.engmod.entity.tile.BreweryTileEntity@43d84df1 [01:57:34] [Render thread/INFO] [co.mc.en.ElderNorseGods/]: recipes ---> null
-
[Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
If u are talking about recipes field, i didn't even have 'final' on it
-
[Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
Update: tried this, but didn't help too
-
[Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
I just initialize it like usual variable in constructor, so this is not a case
-
[Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
I thought it just returns first found recipe, because there is an findFirst method in return statement: public <C extends IInventory, T extends IRecipe<C>> Optional<T> getRecipeFor(IRecipeType<T> p_215371_1_, C p_215371_2_, World p_215371_3_) { return this.byType(p_215371_1_).values().stream().flatMap((p_215372_3_) -> { return Util.toStream(p_215371_1_.tryMatch(p_215372_3_, p_215371_3_, p_215371_2_)); }).findFirst(); } Edit: in my case, i need all the recipes, not just first
-
[Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
- [Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
Done, seems it did not help.. What should i return in getType method in that case? I need to have field that stores IRecipeType Well, i have a list variable in my container class for my custom recipes. When i try to initialize it in constructor like that: this.recipes=this.tileEntity.getLevel().getRecipeManager().getAllRecipesFor(BrewingRecipe.TYPE); where BrewingRecipe.TYPE is my recipe type variable, i get the following error in that line: [22:30:56] [Render thread/FATAL] [minecraft/ThreadTaskExecutor]: Error executing task on Client java.lang.NullPointerException: null- [Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
So i have my custom block with its own tile entity and container, and i also added my own recipe and serializer for it and they work absolutely fine. In my container class i want to get all my custom recipes (actually a few .json files in assets/mod/recipes folder) to check if input is correct by comparing inputs from .json files with my custom container item holder. Similar thing is also implemented in AbstractFurnaceTileEntity#tick method: IRecipe<?> irecipe = this.level.getRecipeManager().getRecipeFor((IRecipeType<AbstractCookingRecipe>)this.recipeType, this, this.level).orElse(null); The only difference is in my container class i want to use RecipeManager#getAllRecipesFor method, not RecipeManager#getRecipeFor, but it actually doesn't matter. What does matter is getAllRecipesFor method always returns null even though all my .json files are loaded and serializer doesn't have errors. I've also implemented getType method in my recipe class and it returns static field that i pass in RecipeManager#getAllRecipesFor method: public static final IRecipeType<BrewingRecipe> TYPE=IRecipeType.register("brewing"); So the problem is RecipeManager just cannot find my .json recipes that are loaded. Can someone figure out where am i wrong? Or maybe there is another way to access all my .json recipes by IRecipeType?- Creating custom spawn eggs with DeferredRegister 1.16.5
i've shown it above- Creating custom spawn eggs with DeferredRegister 1.16.5
using DeferredRegsiter- Creating custom spawn eggs with DeferredRegister 1.16.5
public static final EntityType<ValkyrieEntity> VALKYRIE_ENTITY=Builder.of(ValkyrieEntity::new, EntityClassification.MONSTER).sized(1.0f, 2.0f).build(new ResourceLocation(ENGMod.MOD_ID, ValkyrieEntity.ID).toString());- Creating custom spawn eggs with DeferredRegister 1.16.5
I've already deleted it from my project (because it didn't work), but i had something like this in my items class: package com.mclich.engmod.util; import java.util.ArrayList; import java.util.List; import com.mclich.engmod.ENGMod; import com.mclich.engmod.block.CustomBlock; import com.mclich.engmod.block.CustomBlock.CustomBlockBase; import com.mclich.engmod.entity.ValkyrieEntity; import com.mclich.engmod.item.CustomMaterial; import com.mclich.engmod.item.CustomSpawnEggItem; import com.mclich.engmod.item.CustomSword; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.item.Item; import net.minecraft.item.SpawnEggItem; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent.Register; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ObjectHolder; public abstract class ENGModItems { public static final DeferredRegister<Item> ITEMS=DeferredRegister.create(ForgeRegistries.ITEMS, ENGMod.MOD_ID); // custom items public static final RegistryObject<Item> CUSTOM_SWORD_ITEM=ENGModItems.ITEMS.register(CustomSword.ID, CustomSword::new); public static final RegistryObject<Item> CUSTOM_MATERIAL_ITEM=ENGModItems.ITEMS.register(CustomMaterial.ID, CustomMaterial::new); public static final RegistryObject<Item> CUSTOM_BLOCK_ITEM=ENGModItems.ITEMS.register(CustomBlock.ID, CustomBlockBase::new); // custom eggs @SubscribeEvent public static void registerItems(Register<Item> event) { event.getRegistry().register(new SpawnEggItem(ENGModEntities.VALKYRIE_ENTITY, 0X340000, 0XA52929, new Item.Properties().tab(ENGModTabs.MISC_TAB)).setRegistryName("engmod:"+ValkyrieEntity.SPAWN_EGG_ID)); } }- Creating custom spawn eggs with DeferredRegister 1.16.5
When i register it using events my custom entity just spawns as pig (if use an egg), i don't know why- Creating custom spawn eggs with DeferredRegister 1.16.5
bump- Creating custom spawn eggs with DeferredRegister 1.16.5
In my project i use DeferredRegister to register entities, blocks, items and so on. But as i recently discovered, DeferredRegister has some problems with registring spawn eggs that summon custom entities. As i know there is some sort of registration order that registers items first, and only after that entities; and because of that system cannot register spawn egg that has reference to non-existent entity. So my question is there any way to change that order? If not, is there any other way to create spawn eggs using DeferredRegister? My classes with current logs are below: Entities class: package com.mclich.engmod.util; import java.util.ArrayList; import java.util.List; import com.mclich.engmod.ENGMod; import com.mclich.engmod.entity.CustomEntity; import com.mclich.engmod.entity.ValkyrieEntity; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType.Builder; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.RegistryEvent.Register; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; public abstract class ENGModEntities { public static final DeferredRegister<EntityType<?>> ENTITIES=DeferredRegister.create(ForgeRegistries.ENTITIES, ENGMod.MOD_ID); public static final RegistryObject<EntityType<ValkyrieEntity>> VALKYRIE_ENTITY=ENGModEntities.ENTITIES.register(ValkyrieEntity.ID, ()-> EntityType.Builder.<ValkyrieEntity>of(ValkyrieEntity::new, EntityClassification.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(32) .setUpdateInterval(3).sized(1.0f, 2.0f).build(new ResourceLocation(ENGMod.MOD_ID, ValkyrieEntity.ID).toString())); } Items class: package com.mclich.engmod.util; import java.util.ArrayList; import java.util.List; import com.mclich.engmod.ENGMod; import com.mclich.engmod.block.CustomBlock; import com.mclich.engmod.block.CustomBlock.CustomBlockBase; import com.mclich.engmod.entity.ValkyrieEntity; import com.mclich.engmod.item.CustomMaterial; import com.mclich.engmod.item.CustomSpawnEggItem; import com.mclich.engmod.item.CustomSword; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.item.Item; import net.minecraft.item.SpawnEggItem; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent.Register; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ObjectHolder; public abstract class ENGModItems { public static final DeferredRegister<Item> ITEMS=DeferredRegister.create(ForgeRegistries.ITEMS, ENGMod.MOD_ID); public static final RegistryObject<Item> VALKYRIE_SPAWN_EGG_ITEM=ENGModItems.ITEMS.register(ValkyrieEntity.SPAWN_EGG_ID, ()-> new SpawnEggItem(ENGModEntities.VALKYRIE_ENTITY.get(), -26317, -3394816, new Item.Properties().tab(ENGModTabs.MATERIALS_TAB))); } Entity class: package com.mclich.engmod.entity; import net.minecraft.block.BlockState; import net.minecraft.entity.EntityType; import net.minecraft.entity.ai.attributes.AttributeModifierMap; import net.minecraft.entity.ai.attributes.Attributes; import net.minecraft.entity.ai.controller.FlyingMovementController; import net.minecraft.entity.ai.goal.LookAtGoal; import net.minecraft.entity.ai.goal.LookRandomlyGoal; import net.minecraft.entity.ai.goal.PanicGoal; import net.minecraft.entity.ai.goal.SwimGoal; import net.minecraft.entity.ai.goal.TemptGoal; import net.minecraft.entity.ai.goal.WaterAvoidingRandomWalkingGoal; import net.minecraft.entity.monster.MonsterEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.crafting.Ingredient; import net.minecraft.pathfinding.FlyingPathNavigator; import net.minecraft.util.DamageSource; import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class ValkyrieEntity extends MonsterEntity { public static final String ID="valkyrie_entity"; public static final String SPAWN_EGG_ID="valkyrie_spawn_egg"; public ValkyrieEntity(EntityType<? extends MonsterEntity> type, World worldIn) { super(type, worldIn); this.setItemSlot(EquipmentSlotType.MAINHAND, new ItemStack(Items.IRON_SWORD, 1)); this.moveControl=new FlyingMovementController(this, 10, true); this.navigation=new FlyingPathNavigator(this, worldIn); } public static AttributeModifierMap.MutableAttribute createAttributes() { return MonsterEntity.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 60.0D) .add(Attributes.MOVEMENT_SPEED, 0.35D) .add(Attributes.ATTACK_DAMAGE, 10.0D) .add(Attributes.ARMOR, 16.0D) .add(Attributes.FLYING_SPEED, 1.0D); } @Override public void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new SwimGoal(this)); this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); this.goalSelector.addGoal(2, new WaterAvoidingRandomWalkingGoal(this, 0.8)); this.goalSelector.addGoal(3, new LookAtGoal(this, PlayerEntity.class, 6.0F)); this.goalSelector.addGoal(4, new LookRandomlyGoal(this)); } @Override public int getExperienceReward(PlayerEntity player) { return 15; } @Override public SoundEvent getAmbientSound() { return SoundEvents.ARMOR_EQUIP_ELYTRA; } @Override public SoundEvent getDeathSound() { return SoundEvents.BEACON_DEACTIVATE; } @Override public SoundEvent getHurtSound(DamageSource damageSource) { return super.getHurtSound(damageSource); } @Override protected void playStepSound(BlockPos pos, BlockState blockOn) { this.playSound(SoundEvents.NETHER_SPROUTS_STEP, 0.15F, 1.0F); } } Logs: -- Head -- Thread: Render thread Stacktrace: at java.util.Objects.requireNonNull(Objects.java:290) ~[?:1.8.0_291] {} -- MOD engmod -- Details: Mod File: main Failure message: Elder Norse Gods (engmod) encountered an error during the load_registries event phase java.lang.NullPointerException: Registry Object not present: engmod:valkyrie_entity Mod Version: 1.0 Mod Issue URL: https://change.me.to.your.issue.tracker.example.invalid Exception message: java.lang.NullPointerException: Registry Object not present: engmod:valkyrie_entity Stacktrace: at java.util.Objects.requireNonNull(Objects.java:290) ~[?:1.8.0_291] {} at net.minecraftforge.fml.RegistryObject.get(RegistryObject.java:120) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at com.mclich.engmod.util.ENGModItems.lambda$3(ENGModItems.java:24) ~[main/:?] {re:classloading} at net.minecraftforge.registries.DeferredRegister.lambda$register$0(DeferredRegister.java:124) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.registries.DeferredRegister.addEntries(DeferredRegister.java:200) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.registries.DeferredRegister.access$000(DeferredRegister.java:61) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.registries.DeferredRegister$EventDispatcher.handleEvent(DeferredRegister.java:172) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.eventbus.ASMEventHandler_0_EventDispatcher_handleEvent_Register.invoke(.dynamic) ~[?:?] {} at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-4.0.0.jar:?] {} at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:120) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:36.2] {re:classloading} at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:121) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1640) ~[?:1.8.0_291] {} at net.minecraftforge.fml.ModWorkManager$SyncExecutor.driveOne(ModWorkManager.java:56) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.ModWorkManager$DrivenExecutor.drive(ModWorkManager.java:40) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.ModLoader.waitForTransition(ModLoader.java:249) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:236) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:202) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.client.ClientModLoader.lambda$begin$1(ClientModLoader.java:103) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraftforge.fml.client.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:123) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraftforge.fml.client.ClientModLoader.begin(ClientModLoader.java:103) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.<init>(Minecraft.java:437) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:149) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_291] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_291] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_291] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_291] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.2_mapped_official_1.16.5-recomp.jar:?] {} - [Solved] [1.16.5] Getting my custom recipes by IRecipeType using RecipeManager#getAllRecipesFor method
IPS spam blocked by CleanTalk.
Important Information
By using this site, you agree to our Terms of Use.