Leon Posted July 7, 2012 Posted July 7, 2012 Things are going great, I've made some marbles of my own and I'm adding the bricks, the problem comes to the creative mode menu. You see I've added Green and Yellow Bricks yet when I scroll down to them in the menu the game crashes expressing Null Pointer Exception, this as I understand occurs because there is nothing were the Block is meant to be. Here's the error message followed by the code in my mod_ file. Mods loaded: 2 ModLoader 1.2.5 mod_BlockMarble 1.2.5 Minecraft has crashed! ---------------------- Minecraft has stopped running because it encountered a problem. --- BEGIN ERROR REPORT 2b95d8b8 -------- Generated 07/07/12 18:17 Minecraft: Minecraft 1.2.5 OS: Windows 7 (amd64) version 6.1 Java: 1.7.0_05, Oracle Corporation VM: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation LWJGL: 2.4.2 OpenGL: GeForce GTX 560 Ti/PCIe/SSE2 version 4.2.0, NVIDIA Corporation java.lang.NullPointerException at net.minecraft.src.ItemStack.getIconIndex(ItemStack.java:105) at net.minecraft.src.RenderItem.renderItemIntoGUI(RenderItem.java:270) at net.minecraft.src.GuiContainer.drawSlotInventory(GuiContainer.java:228) at net.minecraft.src.GuiContainer.drawScreen(GuiContainer.java:74) at net.minecraft.src.GuiContainerCreative.drawScreen(GuiContainerCreative.java:235) at net.minecraft.src.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1008) at net.minecraft.src.EntityRendererProxy.updateCameraAndRender(EntityRendererProxy.java:20) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:922) at net.minecraft.client.Minecraft.run(Minecraft.java:801) at java.lang.Thread.run(Unknown Source) --- END ERROR REPORT f9fe730e ---------- package net.minecraft.src; import net.minecraft.client.Minecraft; import java.util.List; import java.util.Random; public class mod_BlockMarble extends BaseMod { private static GuiScreen creativeInventory; // Blocks public static final Block BlockMarble = new BlockMarble(160, 0).setBlockName("Marble").setHardness(3F).setResistance(4F).setLightValue(0F); public static final Block BlockMarbleG = new BlockMarbleG(162, 0).setBlockName("Marble").setHardness(3F).setResistance(4F).setLightValue(0F); public static final Block BlockMarbleY = new BlockMarbleY(163, 0).setBlockName("Marble").setHardness(3F).setResistance(4F).setLightValue(0F); public static final Block BlockMarbleBricks = new BlockMarbleBricks(161, 0).setBlockName("Marble Bricks").setHardness(3F).setResistance(4F).setLightValue(0F); public static final Block BlockMarbleGBricks = new BlockMarbleGBricks(164, 0).setBlockName("Marble").setHardness(3F).setResistance(4F).setLightValue(0F); public static final Block BlockMarbleYBricks = new BlockMarbleYBricks(165, 0).setBlockName("Marble").setHardness(3F).setResistance(4F).setLightValue(0F); @Override public void load() { BlockMarble.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/img/BlockMarble.png"); ModLoader.registerBlock(BlockMarble); ModLoader.addName(BlockMarble, "Marble"); ModLoader.setInGameHook(this,true,false); ModLoader.setInGUIHook(this,true,false); BlockMarbleY.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/img/BlockMarbleY.png"); ModLoader.registerBlock(BlockMarble); ModLoader.addName(BlockMarble, "Marble"); ModLoader.setInGameHook(this,true,false); ModLoader.setInGUIHook(this,true,false); BlockMarbleG.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/img/BlockMarbleG.png"); ModLoader.registerBlock(BlockMarble); ModLoader.addName(BlockMarble, "Marble"); ModLoader.setInGameHook(this,true,false); ModLoader.setInGUIHook(this,true,false); BlockMarbleBricks.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/img/BlockMarbleBricks.png"); ModLoader.registerBlock(BlockMarbleBricks); ModLoader.addName(BlockMarbleBricks, "Marble Bricks"); ModLoader.addRecipe(new ItemStack(BlockMarbleBricks, 4), new Object [] {"##","##", Character.valueOf('#'), BlockMarble}); ModLoader.setInGameHook(this,true,false); ModLoader.setInGUIHook(this,true,false); BlockMarbleGBricks.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/img/BlockMarbleGBricks.png"); ModLoader.registerBlock(BlockMarbleGBricks); ModLoader.addName(BlockMarbleGBricks, "Marble Bricks"); ModLoader.addRecipe(new ItemStack(BlockMarbleGBricks, 4), new Object [] {"##","##", Character.valueOf('#'), BlockMarbleG}); ModLoader.setInGameHook(this,true,false); ModLoader.setInGUIHook(this,true,false); BlockMarbleYBricks.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/img/BlockMarbleYBricks.png"); ModLoader.registerBlock(BlockMarbleYBricks); ModLoader.addName(BlockMarbleYBricks, "Marble Bricks"); ModLoader.addRecipe(new ItemStack(BlockMarbleYBricks, 4), new Object [] {"##","##", Character.valueOf('#'), BlockMarbleY}); ModLoader.setInGameHook(this,true,false); ModLoader.setInGUIHook(this,true,false); } public boolean onTickInGame(float f, Minecraft minecraft) { if(minecraft.currentScreen == null) { creativeInventory = null; } return true; } public boolean onTickInGUI(float f, Minecraft minecraft, GuiScreen guiscreen) { if((guiscreen instanceof GuiContainerCreative) && !(creativeInventory instanceof GuiContainerCreative) && !minecraft.theWorld.isRemote) { Container container = ((GuiContainer)guiscreen).inventorySlots; List list = ((ContainerCreative)container).itemList; int i = 0; list.add(new ItemStack(BlockMarble, 1, i)); list.add(new ItemStack(BlockMarbleBricks, 1, i)); list.add(new ItemStack(BlockMarbleG, 1, i)); list.add(new ItemStack(BlockMarbleY, 1, i)); } creativeInventory = guiscreen; return true; } public void generateSurface(World world, Random random, int chunkX, int chunkZ) { BiomeGenBase biomegenbase = world.getWorldChunkManager().getBiomeGenAt(chunkX, chunkZ); if(biomegenbase instanceof BiomeGenPlains || biomegenbase instanceof BiomeGenForest || biomegenbase instanceof BiomeGenRiver) { for(int i =0; i < 30; i++) { int randPosX = chunkX + random.nextInt(16); int randPosY = random.nextInt(128); int randPosZ = chunkZ + random.nextInt(16); (new WorldGenMinable(BlockMarble.blockID, 35)).generate(world, random, randPosX, randPosY, randPosZ); } } if(biomegenbase instanceof BiomeGenSwamp) { for(int i =0; i < 20; i++) { int randPosX = chunkX + random.nextInt(16); int randPosY = random.nextInt(128); int randPosZ = chunkZ + random.nextInt(16); (new WorldGenMinable(BlockMarbleG.blockID, 35)).generate(world, random, randPosX, randPosY, randPosZ); } } if(biomegenbase instanceof BiomeGenDesert) { for(int i =0; i < 20; i++) { int randPosX = chunkX + random.nextInt(16); int randPosY = random.nextInt(128); int randPosZ = chunkZ + random.nextInt(16); (new WorldGenMinable(BlockMarbleY.blockID, 35)).generate(world, random, randPosX, randPosY, randPosZ); } } } @Override public String getVersion() { return "1.2.5"; } }
gotyaoi Posted July 7, 2012 Posted July 7, 2012 So, first, you appear to adding the same two hooks over and over again, so that's probably not helping you. Second, there's a much cleaner way to add items to the creative inventory. Simply override the addCreativeItems method in your Block classes. Like so: public void addCreativeItems( ArrayList itemList ) { itemList.add( new ItemStack(this, 1, 0)); } At a guess, since you were modifying the creative list every tick in the gui, it wasn't so happy. Edit: Or it could be that you registered BlockMarble 3 times, and never registered BlockMarbleG or BlockMarbleY.
Leon Posted July 7, 2012 Author Posted July 7, 2012 So, first, you appear to adding the same two hooks over and over again, so that's probably not helping you. Second, there's a much cleaner way to add items to the creative inventory. Simply override the addCreativeItems method in your Block classes. Like so: public void addCreativeItems( ArrayList itemList ) { itemList.add( new ItemStack(this, 1, 0)); } At a guess, since you were modifying the creative list every tick in the gui, it wasn't so happy. Edit: Or it could be that you registered BlockMarble 3 times, and never registered BlockMarbleG or BlockMarbleY. Yeah I didn't spot the BlockMarble thing. You really helped, thanks!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now