Posted December 16, 20177 yr I made a custom gui that looks like the one from the furnace . The inventory should not be saved and shoul be opened by and item. It should only be an inventory where you can move items. When I'm doing things in the player's inventory part everything goes well. But when i put an item in the inventory of the dispenser and try to left click to it the game crashes with an java.lang.NullPointerException: Rendering screen . But when i left click+shift everything works. I have no more ideas what to do . I hope you can help me . Error Log: Spoiler Reported exception thrown! net.minecraft.util.ReportedException: Rendering screen at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1204) ~[EntityRenderer.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1207) ~[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_151] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_151] 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_151] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_151] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:26) [start/:?] Caused by: java.lang.NullPointerException at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:141) ~[GuiContainer.class:?] at me.marnic.mod.gui.TestGui.drawScreen(TestGui.java:33) ~[TestGui.class:?] at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:353) ~[ForgeHooksClient.class:?] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1177) ~[EntityRenderer.class:?] ... 15 more [18:52:19] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:630]: ---- Minecraft Crash Report ---- // Would you like a cupcake? Time: 12/16/17 6:52 PM Description: Rendering screen java.lang.NullPointerException: Rendering screen at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:141) at me.marnic.mod.gui.TestGui.drawScreen(TestGui.java:33) at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:353) at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1177) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1207) at net.minecraft.client.Minecraft.run(Minecraft.java:441) at net.minecraft.client.main.Main.main(Main.java:118) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) at GradleStart.main(GradleStart.java:26) GUI class: package me.marnic.mod.gui; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.event.terraingen.BiomeEvent.GetWaterColor; public class TestGui extends GuiContainer{ public TestGui(Container inventorySlotsIn) { super(inventorySlotsIn); // TODO Auto-generated constructor stub } final ResourceLocation loc = new ResourceLocation("m_mod","textures/gui/test_gui.png"); @Override public boolean doesGuiPauseGame() { return false; } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { mc.getTextureManager().bindTexture(loc); drawTexturedModalRect(width / 2 - 176 / 2, height / 2 - 166 / 2, 0, 0, 176, 166); super.drawScreen(mouseX, mouseY, partialTicks); } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { // TODO Auto-generated method stub } } GUI Container: package me.marnic.mod.gui; import me.marnic.mod.item.BasicItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ClickType; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraftforge.items.SlotItemHandler; public class TestGuiContainer extends Container { public TestGuiInventory inv; public TestGuiContainer(IInventory playerInventory, TestGuiInventory dispenserInventoryIn) { this.inv = dispenserInventoryIn; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { this.addSlotToContainer(new Slot(dispenserInventoryIn, j + i * 3, 62 + j * 18, 17 + i * 18)); } } for (int k = 0; k < 3; ++k) { for (int i1 = 0; i1 < 9; ++i1) { this.addSlotToContainer(new Slot(playerInventory, i1 + k * 9 + 9, 8 + i1 * 18, 84 + k * 18)); } } for (int l = 0; l < 9; ++l) { this.addSlotToContainer(new Slot(playerInventory, l, 8 + l * 18, 142)); } } /** * Determines whether supplied player can use this container */ @Override public boolean canInteractWith(EntityPlayer playerIn) { return true; } /** * Handle when the stack in slot {@code index} is shift-clicked. Normally this moves the stack between the player * inventory and the other inventory(s). */ @Override public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) { ItemStack itemstack = ItemStack.EMPTY; Slot slot = this.inventorySlots.get(index); if (slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (index < 9) { if (!this.mergeItemStack(itemstack1, 9, 45, true)) { return ItemStack.EMPTY; } } else if (!this.mergeItemStack(itemstack1, 0, 9, false)) { return ItemStack.EMPTY; } if (itemstack1.isEmpty()) { slot.putStack(ItemStack.EMPTY); } else { slot.onSlotChanged(); } if (itemstack1.getCount() == itemstack.getCount()) { return ItemStack.EMPTY; } slot.onTake(playerIn, itemstack1); } return itemstack; } } GUI Inventory: package me.marnic.mod.gui; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.items.IItemHandler; public class TestGuiInventory implements IInventory{ public int SIZE = 9; public NonNullList<ItemStack> items = NonNullList.withSize(SIZE, ItemStack.EMPTY); InventoryPlayer p; @Override public String getName() { // TODO Auto-generated method stub return "GuiInv"; } @Override public boolean hasCustomName() { // TODO Auto-generated method stub return false; } @Override public ITextComponent getDisplayName() { // TODO Auto-generated method stub return null; } @Override public int getSizeInventory() { // TODO Auto-generated method stub return items.size(); } @Override public boolean isEmpty() { for(ItemStack s:items) { if(!s.isEmpty()) { return false; } } return true; } @Override public ItemStack getStackInSlot(int index) { // TODO Auto-generated method stub return items.get(index); } @Override public ItemStack decrStackSize(int index, int count) { // TODO Auto-generated method stub return null; } @Override public ItemStack removeStackFromSlot(int index) { // TODO Auto-generated method stub return items.set(index, ItemStack.EMPTY); } @Override public void setInventorySlotContents(int index, ItemStack stack) { items.set(index, stack); } @Override public int getInventoryStackLimit() { // TODO Auto-generated method stub return 64; } @Override public void markDirty() { // TODO Auto-generated method stub } @Override public boolean isUsableByPlayer(EntityPlayer player) { // TODO Auto-generated method stub return player.getDistanceSq(player) <= 64.0D; } @Override public void openInventory(EntityPlayer player) { // TODO Auto-generated method stub } @Override public void closeInventory(EntityPlayer player) { // TODO Auto-generated method stub } @Override public boolean isItemValidForSlot(int index, ItemStack stack) { // TODO Auto-generated method stub return true; } @Override public int getField(int id) { // TODO Auto-generated method stub return 0; } @Override public void setField(int id, int value) { // TODO Auto-generated method stub } @Override public int getFieldCount() { // TODO Auto-generated method stub return 0; } @Override public void clear() { for(ItemStack s:items) { s = ItemStack.EMPTY; } } } GUI Handler: package me.marnic.mod.gui; import me.marnic.mod.main.Main; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; public class GUIHandler implements IGuiHandler{ public static int TEST_GUI = 0; @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID==TEST_GUI) { return new TestGuiContainer(player.inventory,new TestGuiInventory()); } return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID==TEST_GUI) { return new TestGui(new TestGuiContainer(player.inventory,new TestGuiInventory())); } return null; } } Edited December 16, 20177 yr by MrMarnic
December 16, 20177 yr Problematic code #5 ItemStacks can't be null ( @diesieben07 this could be added to the list) Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
December 16, 20177 yr Author I know that the ItemStacks and that's the problem. I don't know where the ItemStack is null where it must be empty
December 16, 20177 yr 10 minutes ago, Draco18s said: Problematic code #5 Read it, it tells you what's wrong. Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support. 1.12 -> 1.13 primer by williewillus. 1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support. http://www.howoldisminecraft1710.today/
December 16, 20177 yr Author 13 minutes ago, Draco18s said: Problematic code #5 ItemStacks can't be null ( @diesieben07 this could be added to the list) I'm sorry . I didn't click on the link
December 16, 20177 yr I forgot to include the link, sorry. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.