Jump to content

[FIXED Problem] Multiple Slots in Custom GUI Failure


ShadowHoundz

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.