Posted December 25, 201212 yr Hi, I've recently been having multiple amounts of trouble when making this custom GUI. I'm not sure what I'm missing but I thought I'm supposed to change the ID in the Slot Constructor Please Excuse all the other code in kingdomcraft.java if its not conflicting, I just thought it could conflict in some small way so I posted all the code, it seems fine in the files its stating though so I dis included those so if you need those to find a problem, just ask. Lastly, sorry for my clumsy package organization. kingdomcraft.java package net.minecraft.kingdomcraft; import ibxm.Player; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import cpw.mods.fml.common.network.NetworkMod; import net.minecraft.item.EnumArmorMaterial; import net.minecraft.item.EnumToolMaterial; import net.minecraft.item.Item; import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.NetworkMod.SidedPacketHandler; import cpw.mods.fml.common.network.NetworkRegistry; import net.minecraft.item.ItemSeeds; import net.minecraft.item.ItemStack; import net.minecraft.kingdomcraft.Blocks.BCarpetBlock; import net.minecraft.kingdomcraft.Blocks.CobaltBlock; import net.minecraft.kingdomcraft.Blocks.ContainerDNA; import net.minecraft.kingdomcraft.Blocks.DNABlock; import net.minecraft.kingdomcraft.Blocks.DarkBlock; import net.minecraft.kingdomcraft.Blocks.GCarpetBlock; import net.minecraft.kingdomcraft.Blocks.GuiDNA; import net.minecraft.kingdomcraft.Blocks.GuiHandler; import net.minecraft.kingdomcraft.Blocks.MCarpetBlock; import net.minecraft.kingdomcraft.Blocks.OCarpetBlock; import net.minecraft.kingdomcraft.Blocks.PlatinumBlock; import net.minecraft.kingdomcraft.Blocks.TileEntityDNA; import net.minecraft.kingdomcraft.Blocks.WCarpetBlock; import net.minecraft.kingdomcraft.Blocks.YCarpetBlock; import net.minecraft.kingdomcraft.Blocks.cottonCrop; import net.minecraft.kingdomcraft.Blocks.TileEntityDNA; import net.minecraft.kingdomcraft.Common.CommonProxy; import net.minecraft.kingdomcraft.Items.BowCobalt; import net.minecraft.kingdomcraft.Items.BowPlatinum; import net.minecraft.kingdomcraft.Items.CobaltItem; import net.minecraft.kingdomcraft.Items.PlatinumItem; import net.minecraft.kingdomcraft.Items.Tools.CobaltItemAxe; import net.minecraft.kingdomcraft.Items.Tools.CobaltItemHoe; import net.minecraft.kingdomcraft.Items.Tools.CobaltItemPickaxe; import net.minecraft.kingdomcraft.Items.Tools.CobaltItemSpade; import net.minecraft.kingdomcraft.Items.Tools.CobaltItemSword; import net.minecraft.kingdomcraft.Items.Tools.PlatinumItemAxe; import net.minecraft.kingdomcraft.Items.Tools.PlatinumItemHoe; import net.minecraft.kingdomcraft.Items.Tools.PlatinumItemPickaxe; import net.minecraft.kingdomcraft.Items.Tools.PlatinumItemSpade; import net.minecraft.kingdomcraft.Items.Tools.PlatinumItemSword; import net.minecraft.kingdomcraft.armor.CobaltArmor; import net.minecraft.kingdomcraft.armor.PlatinumArmor; import net.minecraft.src.ModLoader; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.EnumHelper; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.Mod.PostInit; import cpw.mods.fml.common.Mod.PreInit; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import net.minecraft.kingdomcraft.Blocks.ServerPacketHandler; import net.minecraft.kingdomcraft.Blocks.ClientPacketHandler; @Mod(modid="kingdomcraft", name="kingdomcraft1", version="0.0.1") @NetworkMod(clientSideRequired=true, serverSideRequired=false, clientPacketHandlerSpec = @SidedPacketHandler(channels = {"kingdomcraft" }, packetHandler = ClientPacketHandler.class), serverPacketHandlerSpec = @SidedPacketHandler(channels = {"kingdomcraft" }, packetHandler = ServerPacketHandler.class)) public class kingdomcraft { private GuiHandler guiHandler = new GuiHandler(); public static final Block CottonCrop = new cottonCrop(1002); static EnumToolMaterial toolPLATINUM = EnumHelper.addToolMaterial("PLATINUM", 4, 1025, 9F, 2, 24); static EnumToolMaterial toolCOBALT = EnumHelper.addToolMaterial("COBALT", 4, 821, 12F, 2, 24); public static EnumArmorMaterial Platinum = EnumHelper.addArmorMaterial("Platinum", 34, new int[]{3, 8, 6, 3}, 12); //Enchantment ability is higher on Platinum, Cobalt is strong so it has a better chance for more hardness, platinum has a chance to get more defensive abilitys. public static EnumArmorMaterial Cobalt = EnumHelper.addArmorMaterial("Cobalt", 28, new int[]{4, 8, 6, 4}, 11); public static final Item swordPlatinum = new PlatinumItemSword(5012, toolPLATINUM).setIconIndex(10).setItemName("Platinum Sword"); public static final Item pickPlatinum = new PlatinumItemPickaxe(5013, toolPLATINUM).setIconIndex(12).setItemName("Platinum Pick"); public static final Item shovelPlatinum = new PlatinumItemSpade(5014, toolPLATINUM).setIconIndex(14).setItemName("Platinum Spade"); public static final Item axePlatinum = new PlatinumItemAxe(5015, toolPLATINUM).setIconIndex(16).setItemName("Platinum Axe"); public static final Item hoePlatinum = new PlatinumItemHoe(5016, toolPLATINUM).setIconIndex(18).setItemName("Platinum Hoe"); public static final Item swordCobalt = new CobaltItemSword(5017, toolCOBALT).setIconIndex(11).setItemName("Cobalt Sword"); public static final Item pickCobalt = new CobaltItemPickaxe(5018, toolPLATINUM).setIconIndex(13).setItemName("Cobalt Pick"); public static final Item shovelCobalt = new CobaltItemSpade(5019, toolPLATINUM).setIconIndex(15).setItemName("Cobalt Spade"); public static final Item axeCobalt = new CobaltItemAxe(5020, toolPLATINUM).setIconIndex(17).setItemName("Cobalt Axe"); public static final Item hoeCobalt = new CobaltItemHoe(5021, toolPLATINUM).setIconIndex(19).setItemName("Cobalt Hoe"); public static Item helmetPlatinum = new PlatinumArmor(5004, Platinum, ModLoader.addArmor("Platinum"), 0).setIconIndex(20).setItemName("Platinum Helm");; public static Item chestPlatinum = new PlatinumArmor(5005, Platinum, ModLoader.addArmor("Platinum"), 1).setIconIndex(21).setItemName("Platinum ChestPlate");; public static Item pantsPlatinum = new PlatinumArmor(5006, Platinum, ModLoader.addArmor("Platinum"), 2).setIconIndex(22).setItemName("Platinum Leggings");; public static Item bootsPlatinum = new PlatinumArmor(5007, Platinum, ModLoader.addArmor("Platinum"), 3).setIconIndex(23).setItemName("Platinum Boots");; public static Item helmetCobalt = new CobaltArmor(5008, Cobalt, ModLoader.addArmor("Cobalt"), 0).setIconIndex(24).setItemName("Cobalt Helm");; public static Item chestCobalt = new CobaltArmor(5009, Cobalt, ModLoader.addArmor("Cobalt"), 1).setIconIndex(25).setItemName("Cobalt ChestPlate");; public static Item pantsCobalt = new CobaltArmor(5010, Cobalt, ModLoader.addArmor("Cobalt"), 2).setIconIndex(26).setItemName("Cobalt Leggings");; public static Item bootsCobalt = new CobaltArmor(5011, Cobalt, ModLoader.addArmor("Cobalt"), 3).setIconIndex(27).setItemName("Cobalt Boots");; public final static Item CottonBall = new Item(5023).setIconIndex(29).setTextureFile(CommonProxy.ITEMS_PNG).setItemName("Woolen Fabric Ball");; public final static Item CottonSeeds = new ItemSeeds(5022, CottonCrop.blockID, Block.tilledField.blockID).setIconIndex(28).setItemName("Woolen Fabric Seeds").setTextureFile(CommonProxy.ITEMS_PNG);; public final static Item PlatinumIngot = new PlatinumItem(5000); public final static Item CobaltIngot = new CobaltItem(5001); public final static Item PlatinumBow = new BowPlatinum(5002); public final static Item CobaltBow = new BowCobalt(5003); public final static Block PlatinumOre = new PlatinumBlock(1000, 0, Material.iron); public final static Block CobaltOre = new CobaltBlock(1001, 1, Material.iron); public final static Block DarkBrick = new DarkBlock(1003, 2, Material.rock); public final static Block WhiteCarpet = new WCarpetBlock(1004, 16, Material.cloth).setTextureFile(CommonProxy.BLOCK_PNG); public final static Block OrangeCarpet= new OCarpetBlock(1005, 17, Material.cloth).setTextureFile(CommonProxy.BLOCK_PNG); public final static Block MagentaCarpet = new MCarpetBlock(1006, 18, Material.cloth).setTextureFile(CommonProxy.BLOCK_PNG); public final static Block BlueCarpet = new BCarpetBlock(1007, 19, Material.cloth).setTextureFile(CommonProxy.BLOCK_PNG); public final static Block YellowCarpet = new YCarpetBlock(1008, 20, Material.cloth).setTextureFile(CommonProxy.BLOCK_PNG); public final static Block GreenCarpet = new GCarpetBlock(1009, 21, Material.cloth).setTextureFile(CommonProxy.BLOCK_PNG); public final static Block DNAAnalyzer = new DNABlock(1010, 3, Material.rock).setTextureFile(CommonProxy.BLOCK_PNG); public static final Object guiHandlerObject = null; // The instance of your mod that Forge uses. @Instance("kingdomcraft") public static kingdomcraft instance; // Says where the client and server 'proxy' code is loaded. @SidedProxy(clientSide="net.minecraft.kingdomcraft.client.ClientProxy", serverSide="net.minecraft.Common.CommonProxy") public static CommonProxy proxy; @PreInit public void preInit(FMLPreInitializationEvent event) { // Stub Method } @Init public void load(FMLInitializationEvent event) { proxy.registerRenderers(); NetworkRegistry.instance().registerGuiHandler(this, guiHandler); LanguageRegistry.addName(CottonBall, "Woolen Fabric Ball"); DNAAnalyzer.setTextureFile(CommonProxy.BLOCK_PNG); MinecraftForge.addGrassSeed(new ItemStack(CottonSeeds), 10); GameRegistry.registerBlock(DNAAnalyzer); LanguageRegistry.addName(DNAAnalyzer, "DNA Analyzer"); CottonSeeds.setTextureFile(CommonProxy.ITEMS_PNG); LanguageRegistry.addName(CottonSeeds, "Woolen Fabric Seeds"); GameRegistry.registerTileEntity(TileEntityDNA.class, "DnaAnalyzer"); LanguageRegistry.addName(WhiteCarpet, "Plain Carpet"); MinecraftForge.setToolClass(pickPlatinum, "pickaxe", 4); MinecraftForge.setToolClass(shovelPlatinum, "shovel", 4); MinecraftForge.setToolClass(axePlatinum, "axe", 4); MinecraftForge.setToolClass(hoePlatinum, "hoe", 4); MinecraftForge.setToolClass(pickCobalt, "pickaxe", 4); MinecraftForge.setToolClass(shovelCobalt, "shovel", 4); MinecraftForge.setToolClass(axeCobalt, "axe", 4); MinecraftForge.setToolClass(hoeCobalt, "hoe", 4); LanguageRegistry.addName(helmetPlatinum, "Platinum Helm"); LanguageRegistry.addName(chestPlatinum, "Platinum Chestplate"); LanguageRegistry.addName(pantsPlatinum, "Platinum Leggings"); LanguageRegistry.addName(bootsPlatinum, "Platinum Boots"); LanguageRegistry.addName(pickCobalt, "Cobalt Pickaxe"); LanguageRegistry.addName(shovelCobalt, "Cobalt Shovel"); LanguageRegistry.addName(axeCobalt, "Cobalt Axe"); LanguageRegistry.addName(hoeCobalt, "Cobalt Hoe"); LanguageRegistry.addName(swordCobalt, "Cobalt Sword"); LanguageRegistry.addName(pickPlatinum, "Platinum Pickaxe"); LanguageRegistry.addName(shovelPlatinum, "Platinum Shovel"); LanguageRegistry.addName(axePlatinum, "Platinum Axe"); LanguageRegistry.addName(hoePlatinum, "Platinum Hoe"); LanguageRegistry.addName(swordPlatinum, "Platinum Sword"); LanguageRegistry.addName(helmetCobalt, "Cobalt Helm"); LanguageRegistry.addName(chestCobalt, "Cobalt Chestplate"); LanguageRegistry.addName(pantsCobalt, "Cobalt Leggings"); LanguageRegistry.addName(bootsCobalt, "Cobalt Boots"); LanguageRegistry.addName(PlatinumIngot, "Platinum Ingot"); LanguageRegistry.addName(CobaltIngot, "Cobalt Ingot"); LanguageRegistry.addName(PlatinumBow, "Platinum Bow"); LanguageRegistry.addName(CobaltBow, "Cobalt Bow"); //Weapons GameRegistry.addRecipe(new ItemStack(PlatinumBow, 1), new Object[] {" XS", "X S"," XS", Character.valueOf('X'), kingdomcraft.PlatinumIngot, Character.valueOf('S'), Item.silk}); GameRegistry.addRecipe(new ItemStack(PlatinumBow, 1), new Object[] {"SX", "S X","SX", Character.valueOf('X'), kingdomcraft.PlatinumIngot, Character.valueOf('S'), Item.silk}); GameRegistry.addRecipe(new ItemStack(CobaltBow, 1), new Object[] {" XS", "X S"," XS", Character.valueOf('X'), kingdomcraft.CobaltIngot, Character.valueOf('S'), Item.silk}); GameRegistry.addRecipe(new ItemStack(CobaltBow, 1), new Object[] {"SX", "S X","SX", Character.valueOf('X'), kingdomcraft.CobaltIngot, Character.valueOf('S'), Item.silk}); GameRegistry.addRecipe(new ItemStack(pickPlatinum, 1), new Object[] {"PPP", " S", " S", Character.valueOf('P'), kingdomcraft.PlatinumIngot, Character.valueOf('S'), Item.stick}); GameRegistry.addRecipe(new ItemStack(axePlatinum, 1), new Object[] {"PP", "PS", " S", Character.valueOf('P'), kingdomcraft.PlatinumIngot, Character.valueOf('S'), Item.stick}); GameRegistry.addRecipe(new ItemStack(hoePlatinum, 1), new Object[] {"PP", " S", " S", Character.valueOf('P'), kingdomcraft.PlatinumIngot, Character.valueOf('S'), Item.stick}); GameRegistry.addRecipe(new ItemStack(swordPlatinum, 1), new Object[] {" P", " P", " S", Character.valueOf('P'), kingdomcraft.PlatinumIngot, Character.valueOf('S'), Item.stick}); GameRegistry.addRecipe(new ItemStack(shovelPlatinum, 1), new Object[] {" P", " S", " S", Character.valueOf('P'), kingdomcraft.PlatinumIngot, Character.valueOf('S'), Item.stick}); GameRegistry.addRecipe(new ItemStack(Block.cloth, 1), new Object[] {"SS", "SS", Character.valueOf('S'),kingdomcraft.CottonBall}); GameRegistry.addRecipe(new ItemStack(WhiteCarpet, 1), new Object[] {"CCC", "CCC", Character.valueOf('C'),kingdomcraft.CottonBall}); GameRegistry.addRecipe(new ItemStack(OrangeCarpet, 1), new Object[] {"CD", Character.valueOf('C'),kingdomcraft.CottonBall, Character.valueOf('D'),Item.ingotGold}); GameRegistry.addRecipe(new ItemStack(MagentaCarpet, 1), new Object[] {"CD", Character.valueOf('C'),kingdomcraft.CottonBall, Character.valueOf('D'),Block.obsidian}); GameRegistry.addRecipe(new ItemStack(BlueCarpet, 1), new Object[] {"CD", Character.valueOf('C'),kingdomcraft.CottonBall, Character.valueOf('D'),kingdomcraft.CobaltIngot}); GameRegistry.addRecipe(new ItemStack(YellowCarpet, 1), new Object[] {"CD", Character.valueOf('C'),kingdomcraft.CottonBall, Character.valueOf('D'),Item.diamond}); GameRegistry.addRecipe(new ItemStack(GreenCarpet, 1), new Object[] {"CD", Character.valueOf('C'),kingdomcraft.CottonBall, Character.valueOf('D'),Item.emerald}); GameRegistry.addRecipe(new ItemStack(DarkBrick, 2), new Object[] {"OCO", "OPO", "OCO", Character.valueOf('O'), Item.coal, Character.valueOf('P'),kingdomcraft.PlatinumIngot, Character.valueOf('C'), kingdomcraft.CobaltIngot}); GameRegistry.addRecipe(new ItemStack(DNAAnalyzer, 2), new Object[] {"COC", "OPO", "COC", Character.valueOf('O'), kingdomcraft.DarkBrick, Character.valueOf('P'),kingdomcraft.PlatinumIngot, Character.valueOf('C'), kingdomcraft.CobaltIngot}); GameRegistry.addSmelting(kingdomcraft.CobaltOre.blockID, new ItemStack(kingdomcraft.CobaltIngot),0.1f); GameRegistry.addSmelting(kingdomcraft.PlatinumOre.blockID, new ItemStack(kingdomcraft.PlatinumIngot), 0.1f); GameRegistry.registerWorldGenerator(new WorldGeneration()); LanguageRegistry.addName(PlatinumOre, "Platinum Ore"); MinecraftForge.setBlockHarvestLevel(PlatinumOre, "pickaxe", 3); GameRegistry.registerBlock(PlatinumOre); GameRegistry.registerBlock(CottonCrop); LanguageRegistry.addName(CobaltOre, "Cobalt Ore"); MinecraftForge.setBlockHarvestLevel(CobaltOre, "pickaxe", 4); GameRegistry.registerBlock(CobaltOre); LanguageRegistry.addName(DarkBrick, "Dark Brick"); GameRegistry.registerBlock(DarkBrick); LanguageRegistry.addName(WhiteCarpet, "Plain Carpet"); GameRegistry.registerBlock(WhiteCarpet); LanguageRegistry.addName(OrangeCarpet, "Orange Carpet"); GameRegistry.registerBlock(OrangeCarpet); LanguageRegistry.addName(MagentaCarpet, "Magenta Carpet"); GameRegistry.registerBlock(MagentaCarpet); LanguageRegistry.addName(BlueCarpet, "Blue Carpet"); GameRegistry.registerBlock(BlueCarpet); LanguageRegistry.addName(YellowCarpet, "Yellow Carpet"); GameRegistry.registerBlock(YellowCarpet); LanguageRegistry.addName(GreenCarpet, "Green Carpet"); GameRegistry.registerBlock(GreenCarpet); } @PostInit public void postInit(FMLPostInitializationEvent event) { } } ContainerDNA.java package net.minecraft.kingdomcraft.Blocks; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; public class ContainerDNA extends Container { protected TileEntityDNA tileEntity; public ContainerDNA (InventoryPlayer inventoryPlayer, TileEntityDNA te){ tileEntity = te; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { addSlotToContainer(new Slot(tileEntity, 0, 8, 12)); addSlotToContainer(new Slot(tileEntity, 1, 62, 12)); addSlotToContainer(new Slot(tileEntity, 2, 8, 48)); addSlotToContainer(new Slot(tileEntity, 3, 26, 48)); } } bindPlayerInventory(inventoryPlayer); } @Override public boolean canInteractWith(EntityPlayer player) { return tileEntity.isUseableByPlayer(player); } protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 9; j++) { addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } for (int i = 0; i < 9; i++) { addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142)); } } @Override public ItemStack transferStackInSlot(EntityPlayer player, int slot) { ItemStack stack = null; Slot slotObject = (Slot) inventorySlots.get(slot); //null checks and checks if the item can be stacked (maxStackSize > 1) if (slotObject != null && slotObject.getHasStack()) { ItemStack stackInSlot = slotObject.getStack(); stack = stackInSlot.copy(); if (slot < 9) { if (!this.mergeItemStack(stackInSlot, 9, 45, true)) { return null; } } else if (!this.mergeItemStack(stackInSlot, 0, 9, false)) { return null; } if (stackInSlot.stackSize == 0) { slotObject.putStack(null); } else { slotObject.onSlotChanged(); } if (stackInSlot.stackSize == stack.stackSize) { return null; } slotObject.onPickupFromSlot(player, stackInSlot); } return stack; } } GuiDNA.java package net.minecraft.kingdomcraft.Blocks; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.kingdomcraft.Common.CommonProxy; import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; public class GuiDNA extends GuiContainer { public GuiDNA (InventoryPlayer inventoryPlayer, TileEntityDNA tileEntity) { super(new ContainerDNA(inventoryPlayer, tileEntity)); } @Override protected void drawGuiContainerForegroundLayer(int param1, int param2) { //draw text and stuff here //the parameters for drawString are: string, x, y, color fontRenderer.drawString("", 8, 6, 4210752); //draws "Inventory" or your regional equivalent fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"),8, ySize - 96 + 2, 4210752); } @Override protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { int texture = mc.renderEngine.getTexture(CommonProxy.GUI1_PNG); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.renderEngine.bindTexture(texture); int x = (width - xSize) / 2; int y = (height - ySize) / 2; this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); } } GuiHandler.java package net.minecraft.kingdomcraft.Blocks; import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.NetworkRegistry; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class GuiHandler implements IGuiHandler { public Object getServerGuiElement(int id, EntityPlayer player, World world,int x, int y, int z) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity instanceof TileEntityDNA) { return new ContainerDNA(player.inventory, (TileEntityDNA) tileEntity); } return null; } public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity instanceof TileEntityDNA) { return new GuiDNA(player.inventory, (TileEntityDNA) tileEntity); } return null; }} DNABlock.java package net.minecraft.kingdomcraft.Blocks; import java.util.Random; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.kingdomcraft.kingdomcraft; import net.minecraft.kingdomcraft.Common.CommonProxy; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class DNABlock extends BlockContainer { public DNABlock (int id, int texture, Material material) { super(id, 3, Material.rock); setHardness(5.0F); setResistance(9.0F); setBlockName("DNA Analyzer"); this.blockIndexInTexture = 3; setCreativeTab(CreativeTabs.tabBlock); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (tileEntity == null || player.isSneaking()) { return false; } player.openGui(kingdomcraft.instance, 0, world, x, y, z); return true; } @Override public void breakBlock(World world, int x, int y, int z, int par5, int par6) { dropItems(world, x, y, z); super.breakBlock(world, x, y, z, par5, par6); } private void dropItems(World world, int x, int y, int z){ Random rand = new Random(); TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (!(tileEntity instanceof IInventory)) { return; } IInventory inventory = (IInventory) tileEntity; for (int i = 0; i < inventory.getSizeInventory(); i++) { ItemStack item = inventory.getStackInSlot(i); if (item != null && item.stackSize > 0) { float rx = rand.nextFloat() * 0.8F + 0.1F; float ry = rand.nextFloat() * 0.8F + 0.1F; float rz = rand.nextFloat() * 0.8F + 0.1F; EntityItem entityItem = new EntityItem(world, x + rx, y + ry, z + rz, new ItemStack(item.itemID, item.stackSize, item.getItemDamage())); if (item.hasTagCompound()) { } float factor = 0.05F; entityItem.motionX = rand.nextGaussian() * factor; entityItem.motionY = rand.nextGaussian() * factor + 0.2F; entityItem.motionZ = rand.nextGaussian() * factor; world.spawnEntityInWorld(entityItem); item.stackSize = 0; } } } @Override public TileEntity createNewTileEntity(World world) { return new TileEntityDNA(); } @Override public String getTextureFile () { return CommonProxy.BLOCK_PNG; } } TileEntityDNA.java package net.minecraft.kingdomcraft.Blocks; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; public class TileEntityDNA extends TileEntity implements IInventory { private ItemStack[] inv; public TileEntityDNA(){ inv = new ItemStack[1]; } @Override public int getSizeInventory() { return inv.length; } @Override public ItemStack getStackInSlot(int slot) { return inv[slot]; } @Override public void setInventorySlotContents(int slot, ItemStack stack) { inv[slot] = stack; if (stack != null && stack.stackSize > getInventoryStackLimit()) { stack.stackSize = getInventoryStackLimit(); } } @Override public ItemStack decrStackSize(int slot, int amt) { ItemStack stack = getStackInSlot(slot); if (stack != null) { if (stack.stackSize <= amt) { setInventorySlotContents(slot, null); } else { stack = stack.splitStack(amt); if (stack.stackSize == 0) { setInventorySlotContents(slot, null); } } } return stack; } @Override public ItemStack getStackInSlotOnClosing(int slot) { ItemStack stack = getStackInSlot(slot); if (stack != null) { setInventorySlotContents(slot, null); } return stack; } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer player) { return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64; } @Override public void openChest() {} @Override public void closeChest() {} @Override public void readFromNBT(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); NBTTagList tagList = tagCompound.getTagList("Inventory"); for (int i = 0; i < tagList.tagCount(); i++) { NBTTagCompound tag = (NBTTagCompound) tagList.tagAt(i); byte slot = tag.getByte("Slot"); if (slot >= 0 && slot < inv.length) { inv[slot] = ItemStack.loadItemStackFromNBT(tag); } } } @Override public void writeToNBT(NBTTagCompound tagCompound) { super.writeToNBT(tagCompound); NBTTagList itemList = new NBTTagList(); for (int i = 0; i < inv.length; i++) { ItemStack stack = inv[i]; if (stack != null) { NBTTagCompound tag = new NBTTagCompound(); tag.setByte("Slot", (byte) i); stack.writeToNBT(tag); itemList.appendTag(tag); } } tagCompound.setTag("Inventory", itemList); } @Override public String getInvName() { return null; } } ConnectionHandler.java package net.minecraft.kingdomcraft.Blocks; import net.minecraft.network.INetworkManager; import net.minecraft.network.NetLoginHandler; import net.minecraft.network.packet.NetHandler; import net.minecraft.network.packet.Packet1Login; import net.minecraft.server.MinecraftServer; import cpw.mods.fml.common.network.IConnectionHandler; import cpw.mods.fml.common.network.Player; public class ConnectionHandler implements IConnectionHandler { @Override public void playerLoggedIn(Player player, NetHandler netHandler, INetworkManager manager) {} @Override public String connectionReceived(NetLoginHandler netHandler, INetworkManager manager) { return null; } @Override public void connectionOpened(NetHandler netClientHandler, String server, int port, INetworkManager manager) {} @Override public void connectionOpened(NetHandler netClientHandler, MinecraftServer server, INetworkManager manager) {} @Override public void connectionClosed(INetworkManager manager) {} @Override public void clientLoggedIn(NetHandler clientHandler, INetworkManager manager, Packet1Login login) {} } ClientPacketHandler.java package net.minecraft.kingdomcraft.Blocks; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet250CustomPayload; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.Player; public class ClientPacketHandler implements IPacketHandler{ @Override public void onPacketData(INetworkManager manager, Packet250CustomPayload payload, Player player){ DataInputStream data = new DataInputStream(new ByteArrayInputStream(payload.data)); }} ServerPacketHandler.java package net.minecraft.kingdomcraft.Blocks; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet250CustomPayload; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.Player; public class ServerPacketHandler implements IPacketHandler{ @Override public void onPacketData(INetworkManager manager, Packet250CustomPayload payload, Player player){ DataInputStream data = new DataInputStream(new ByteArrayInputStream(payload.data)); EntityPlayer sender = (EntityPlayer) player; } } ClientProxy.java package net.minecraft.kingdomcraft.client; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraft.kingdomcraft.Common.CommonProxy; public class ClientProxy extends CommonProxy { @Override public void registerRenderers(){ MinecraftForgeClient.preloadTexture(ITEMS_PNG); MinecraftForgeClient.preloadTexture(BLOCK_PNG); } } CommonProxy.java package net.minecraft.kingdomcraft.Common; public class CommonProxy { public static String ITEMS_PNG = "/net/minecraft/kingdomcraft/textures/items.png"; public static String BLOCK_PNG = "/net/minecraft/kingdomcraft/textures/blocks.png"; public static String GUI1_PNG = "/net/minecraft/kingdomcraft/textures/DNAAnalyzer.png"; // Client stuff public void registerRenderers() { } } Now, to help you find where to look here was my error msg, I cant find exactly how I'm getting it. ERROR 2012-12-25 00:08:53 [iNFO] [sTDERR] net.minecraft.util.ReportedException: Ticking memory connection 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:64) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:108) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:702) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:598) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:123) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:497) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) 2012-12-25 00:08:53 [iNFO] [sTDERR] Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.kingdomcraft.Blocks.TileEntityDNA.getStackInSlot(TileEntityDNA.java:25) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.inventory.Slot.getStack(Slot.java:87) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.inventory.Container.getInventory(Container.java:63) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:49) 2012-12-25 00:08:53 [iNFO] [sTDERR] at cpw.mods.fml.common.network.NetworkRegistry.openRemoteGui(NetworkRegistry.java:309) 2012-12-25 00:08:53 [iNFO] [sTDERR] at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:335) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2285) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.kingdomcraft.Blocks.DNABlock.onBlockActivated(DNABlock.java:37) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.item.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:411) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:578) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:80) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:136) 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:57) 2012-12-25 00:08:53 [iNFO] [sTDERR] ... 6 more 2012-12-25 00:08:54 [iNFO] [ForgeModLoader] Unloading dimension 0 2012-12-25 00:08:54 [iNFO] [ForgeModLoader] Unloading dimension -1 2012-12-25 00:08:54 [iNFO] [ForgeModLoader] Unloading dimension 1 2012-12-25 00:08:55 [iNFO] [sTDERR] net.minecraft.util.ReportedException: Rendering screen 2012-12-25 00:08:55 [iNFO] [sTDERR] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1013) 2012-12-25 00:08:55 [iNFO] [sTDERR] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:882) 2012-12-25 00:08:55 [iNFO] [sTDERR] at net.minecraft.client.Minecraft.run(Minecraft.java:771) 2012-12-25 00:08:55 [iNFO] [sTDERR] at java.lang.Thread.run(Unknown Source) 2012-12-25 00:08:55 [iNFO] [sTDERR] Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 2012-12-25 00:08:55 [iNFO] [sTDERR] at net.minecraft.kingdomcraft.Blocks.TileEntityDNA.getStackInSlot(TileEntityDNA.java:25) 2012-12-25 00:08:55 [iNFO] [sTDERR] at net.minecraft.inventory.Slot.getStack(Slot.java:87) 2012-12-25 00:08:55 [iNFO] [sTDERR] at net.minecraft.client.gui.inventory.GuiContainer.drawSlotInventory(GuiContainer.java:315) 2012-12-25 00:08:55 [iNFO] [sTDERR] at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:107) 2012-12-25 00:08:55 [iNFO] [sTDERR] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1004) 2012-12-25 00:08:55 [iNFO] [sTDERR] ... 3 more If possible I wouldn't like a code fix but a small explanation, after all I'm gonna be doing more GUI's like this. Thanks for the help
December 25, 201212 yr 2012-12-25 00:08:53 [iNFO] [sTDERR] Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.kingdomcraft.Blocks.TileEntityDNA.getStackInSlot(TileEntityDNA.java:25) look at the error message, it helps A LOT ________________________________________________________/\ PROBLEM: @Override public ItemStack getStackInSlot(int slot) { [glow=red,2,300]return inv[slot];[/glow] } FIX: At top private ItemStack[] inv; TO: private ItemStack[] inv = new ItemStack[length of this ItemStack Array]; The Korecraft Mod
December 25, 201212 yr Author 2012-12-25 00:08:53 [iNFO] [sTDERR] Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 2012-12-25 00:08:53 [iNFO] [sTDERR] at net.minecraft.kingdomcraft.Blocks.TileEntityDNA.getStackInSlot(TileEntityDNA.java:25) look at the error message, it helps A LOT ________________________________________________________/\ PROBLEM: @Override public ItemStack getStackInSlot(int slot) { [glow=red,2,300]return inv[slot];[/glow] } FIX: At top private ItemStack[] inv; TO: private ItemStack[] inv = new ItemStack[length of this ItemStack Array]; Thanks for the try, but I got the exact same error. I've already tried reading the error message before.
December 25, 201212 yr Author I've got it fixed. Here is what my error was. private ItemStack[] inv; public TileEntityDNA(){ inv = new ItemStack[1]; } to private ItemStack[] inv; public TileEntityDNA(){ inv = new ItemStack[4]; } I had the variable set to 1 in the inv = new ItemStack[4]; which was causing my game to crash by it unable to process the slots.
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.