Jump to content

Recommended Posts

Posted

I have been working on a 2nd custom machine and what i did was just take the code from the first successful one and used it for the 2nd one and changed the name around to match what I needed but now it wont show the gui. no errors given so i added in a few debug lines and it is acting like the entity is not there at all. In the GuiHandler switch it just goes to the default instead of the one choice that's there. I have checked multiple times at different spots of where I thought it would be and can't find anything wrong.

 

This is the block code

 

package bigbaddevil7.supernova;

import java.util.Random;
import bigbaddevil7.supernova.TileEntityFragmenter;
import bigbaddevil7.supernova.SuperNova;
import cpw.mods.fml.common.network.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;

public class Fragmenter extends BlockContainer{
       
        private Random rand = new Random();
       
        private final boolean isActive;
       
        private static boolean keepInventory;

        public Fragmenter(int id, boolean isActive) {
                super(id, Material.rock);
                this.isActive = isActive;
        }
       
        public TileEntity createNewTileEntity(World world){
                return new TileEntityFragmenter();
        }
       
       
        @SideOnly(Side.CLIENT)
        public void registerIcons(IconRegister icon){
                this.blockIcon = icon.registerIcon("supernova:fragmenter");
        }
       
       
        public int idDropped(int par1, Random random, int par3){
                return SuperNova.fragmenterIdle.blockID;
        }
       
        public void onBlockAdded(World world, int x, int y, int z){
                super.onBlockAdded(world, x, y, z);
                this.setDefaultDirection(world, x, y ,z);
        }
       
        private void setDefaultDirection(World world, int x, int y, int z){
                if(!world.isRemote){
                        int l = world.getBlockId(x, y, z - 1);
                        int il = world.getBlockId(x, y, z + 1);
                        int jl = world.getBlockId(x - 1, y, z);
                        int kl = world.getBlockId(x + 1, y, z);
                        byte b0 = 3;
                       
                        if(Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[il]){
                                b0 = 3;
                        }
                       
                        if(Block.opaqueCubeLookup[il] && !Block.opaqueCubeLookup[l]){
                                b0 = 2;
                        }
                       
                        if(Block.opaqueCubeLookup[kl] && !Block.opaqueCubeLookup[jl]){
                                b0 = 5;
                        }
                       
                        if(Block.opaqueCubeLookup[jl] && !Block.opaqueCubeLookup[kl]){
                                b0 = 4;
                        }
               
                        world.setBlockMetadataWithNotify(x, y, z, b0, 2);
       
                }
               
        }

        public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ){
                if(!world.isRemote){
                        FMLNetworkHandler.openGui(player, SuperNova.instance, SuperNova.guiIdFragmenter, world, x, y, z);
                }
               
                return true;
        }
       
        public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLivingBase, ItemStack itemstack){
                int l = MathHelper.floor_double((double)(entityLivingBase.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
               
                if(l == 0){
                        world.setBlockMetadataWithNotify(x, y, z, 2, 2);
                }
               
                if(l == 1){
                        world.setBlockMetadataWithNotify(x, y, z, 5, 2);
                }
               
                if(l == 2){
                        world.setBlockMetadataWithNotify(x, y, z, 3, 2);
                }
               
                if(l == 3){
                        world.setBlockMetadataWithNotify(x, y, z, 4, 2);
                }
               
                if(itemstack.hasDisplayName()){
                        ((TileEntityFragmenter)world.getBlockTileEntity(x, y, z)).setGuiDisplayName(itemstack.getDisplayName());
                }
        }

        public static void updateFragmenterBlockState(boolean active, World worldObj, int xCoord, int yCoord, int zCoord) {
                int i = worldObj.getBlockMetadata(xCoord, yCoord, zCoord);
                TileEntity tileentity = worldObj.getBlockTileEntity(xCoord, yCoord, zCoord);
                keepInventory = true;
               
                if(active){
                        worldObj.setBlock(xCoord, yCoord, zCoord, SuperNova.fragmenterActive.blockID);
                }else{
                        worldObj.setBlock(xCoord, yCoord, zCoord, SuperNova.fragmenterIdle.blockID);
                }
               
                keepInventory = false;
               
                worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, i, 2);
               
                if(tileentity != null){
                        tileentity.validate();
                        worldObj.setBlockTileEntity(xCoord, yCoord, zCoord, tileentity);
                }
        }
        @Override
        public void breakBlock(World world, int x, int y, int z, int oldBlockId, int oldMetadata){
                if(!keepInventory){
                        TileEntityFragmenter tileentity = (TileEntityFragmenter) world.getBlockTileEntity(x, y, z);
                       
                        if(tileentity != null){
                                for(int i = 0; i < tileentity.getSizeInventory(); i++){
                                        ItemStack itemstack = tileentity.getStackInSlot(i);
                                       
                                        if(itemstack != null){
                                                float f = this.rand.nextFloat() * 0.8F + 0.1F;
                                                float f1 = this.rand.nextFloat() * 0.8F + 0.1F;
                                                float f2 = this.rand.nextFloat() * 0.8F + 0.1F;
                                               
                                                while(itemstack.stackSize > 0){
                                                        int j = this.rand.nextInt(21) + 10;
                                                       
                                                        if(j > itemstack.stackSize){
                                                                j = itemstack.stackSize;
                                                        }
                                                       
                                                        itemstack.stackSize -= j;
                                                       
                                                        EntityItem item = new EntityItem(world, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(itemstack.itemID, j, itemstack.getItemDamage()));
                                                       
                                                        if(itemstack.hasTagCompound()){
                                                                item.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
                                                        }
                                                       
                                                        float f3 = 0.05F;
                                                        item.motionX = (double)((float)this.rand.nextGaussian() * f3);
                                                        item.motionY = (double)((float)this.rand.nextGaussian() * f3 + 0.2F);
                                                        item.motionZ = (double)((float)this.rand.nextGaussian() * f3);
                                                       
                                                        world.spawnEntityInWorld(item);
                                                }
                                        }
                                }
                               
                                world.func_96440_m(x, y, z, oldBlockId);
                        }
                }
               
                super.breakBlock(world, x, y, z, oldBlockId, oldMetadata);
        }
       
        @Override
        public boolean hasComparatorInputOverride(){
                return true;
        }
        @Override
        public int getComparatorInputOverride(World world, int x, int y, int z, int i){
                return Container.calcRedstoneFromInventory((IInventory)world.getBlockTileEntity(x, y, z));
        }
        @Override
        public int idPicked(World world, int x, int y, int z){
                return SuperNova.fragmenterIdle.blockID;
        }
}

 

 

This is the TileEntity

 

package bigbaddevil7.supernova;

import bigbaddevil7.supernova.TileEntityFragmenter;
import bigbaddevil7.supernova.Fragmenter;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemHoe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.item.ItemTool;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;

public class TileEntityFragmenter extends TileEntity implements ISidedInventory{
       
        private String localizedName;
       
        private ItemStack[] slots = new ItemStack[3];
       
        public int furanceSpeed = 100;
       
        public int burnTime;
       
        public int currentItemBurnTime;
       
        public int cookTime;
       
        private static final int[] slots_top = new int[]{0};
        private static final int[] slots_bottom = new int[]{2, 1};
        private static final int[] slots_sides = new int[]{1};
       
       
        public String getInvName(){
                return this.isInvNameLocalized() ? this.localizedName : "container.fragmenter";
        }
       
        public boolean isInvNameLocalized(){
                return this.localizedName != null && this.localizedName.length() > 0;
        }

        public void setGuiDisplayName(String displayName) {
                this.localizedName = displayName;
        }

        @Override
        public int getSizeInventory() {
                return this.slots.length;
        }

        @Override
        public ItemStack getStackInSlot(int i) {
                return this.slots[i];
        }

        @Override
        public ItemStack decrStackSize(int i, int j) {
                if(this.slots[i] != null){
                        ItemStack itemstack;
                       
                        if(this.slots[i].stackSize <= j){
                                itemstack = this.slots[i];
                                this.slots[i] = null;
                                return itemstack;
                        }else{
                                itemstack = this.slots[i].splitStack(j);
                               
                                if(this.slots[i].stackSize == 0){
                                        this.slots[i] = null;
                                }
                               
                                return itemstack;
                        }
                }
               
                return null;
        }

        @Override
        public ItemStack getStackInSlotOnClosing(int i) {
                if(this.slots[i] != null){
                        ItemStack itemstack = this.slots[i];
                        this.slots[i] = null;
                        return itemstack;
                }
               
                return null;
        }

        @Override
        public void setInventorySlotContents(int i, ItemStack itemstack) {
                this.slots[i] = itemstack;
               
                if(itemstack != null && itemstack.stackSize > this.getInventoryStackLimit()){
                        itemstack.stackSize = this.getInventoryStackLimit();
                }
        }

        @Override
        public int getInventoryStackLimit() {
                return 64;
        }
       
        public void readFromNBT(NBTTagCompound nbt){
                super.readFromNBT(nbt);
               
                NBTTagList list = nbt.getTagList("Items");
                this.slots = new ItemStack[this.getSizeInventory()];
               
                for(int i = 0; i < list.tagCount(); i++){
                        NBTTagCompound compound = (NBTTagCompound) list.tagAt(i);
                        byte b = compound.getByte("Slot");
                       
                        if(b >= 0 &&  b < this.slots.length){
                                this.slots[b] = ItemStack.loadItemStackFromNBT(compound);
                        }
                }
               
                this.burnTime = nbt.getShort("BurnTime");
                this.cookTime = nbt.getShort("cookTime");
                this.currentItemBurnTime = getItemBurnTime(this.slots[1]);
               
                if(nbt.hasKey("CustomName")){
                        this.localizedName = nbt.getString("CustomName");
                }
        }
       
        public void writeToNBT(NBTTagCompound nbt){
                super.writeToNBT(nbt);
               
                nbt.setShort("BurnTime", (short)this.burnTime);
                nbt.setShort("CookTime", (short)this.cookTime);
                NBTTagList list = new NBTTagList();
               
                for(int i = 0; i < this.slots.length; i++){
                        if(this.slots[i] != null){
                                NBTTagCompound compound = new NBTTagCompound();
                                compound.setByte("Slot", (byte)i);
                                this.slots[i].writeToNBT(compound);
                                list.appendTag(compound);
                        }
                }
               
                nbt.setTag("Items", list);
               
                if(this.isInvNameLocalized()){
                        nbt.setString("CustomName", this.localizedName);
                }
        }

        @Override
        public boolean isUseableByPlayer(EntityPlayer entityplayer) {
                return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : entityplayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
        }

        @Override
        public void openChest() {}

        @Override
        public void closeChest() {}
       
        public boolean isBurning(){
                return this.burnTime > 0;
        }
       
        @Override
        public void updateEntity(){
                boolean flag = this.burnTime > 0;
                boolean flag1 = false;
               
               
                if(this.burnTime > 0){
                        this.burnTime--;
                }
               
                if(!this.worldObj.isRemote){
                        if(this.burnTime == 0 && this.canSmelt()){
                                this.currentItemBurnTime = this.burnTime = getItemBurnTime(this.slots[1]);
                               
                                if(this.burnTime > 0){
                                        flag1 = true;
                                        if(this.slots[1] != null){
                                                this.slots[1].stackSize--;
                                               
                                                if(this.slots[1].stackSize == 0){
                                                        this.slots[1] = this.slots[1].getItem().getContainerItemStack(this.slots[1]);
                                                }
                                        }
                                }
                        }
                       
                        if(this.isBurning() && this.canSmelt()){
                                this.cookTime++;
                               
                                if(this.cookTime == this.furanceSpeed){
                                        this.cookTime = 0;
                                        this.smeltItem();
                                        flag1 = true;
                                }
                        }else{
                                this.cookTime = 0;
                        }
                       
                        if(flag != this.burnTime > 0){
                                flag1 = true;
                                Fragmenter.updateFragmenterBlockState(this.burnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
                        }
                }
               
                if(flag1){
                        this.onInventoryChanged();
                }
               
        }
       
        private boolean canSmelt(){
                if(this.slots[0] == null){
                        return false;
                }else{
                        ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]);
                       
                        if(itemstack == null) return false;
                        if(this.slots[2] == null) return true;
                        if(!this.slots[2].isItemEqual(itemstack)) return false;
                       
                        int result = this.slots[2].stackSize + itemstack.stackSize;
                       
                        return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize());
                }
        }
       
        public void smeltItem(){
                if(this.canSmelt()){
                        ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]);
                       
                        if(this.slots[2] == null){
                                this.slots[2] = itemstack.copy();
                               
                        }else if(this.slots[2].isItemEqual(itemstack)){
                                this.slots[2].stackSize += itemstack.stackSize;
                        }
                       
                        this.slots[0].stackSize--;
                       
                        if(this.slots[0].stackSize <= 0){
                                this.slots[0] = null;
                        }
                }
        }
       
        public static int getItemBurnTime(ItemStack itemstack){
                if(itemstack == null){
                        return 0;
                }else{
                        int i = itemstack.getItem().itemID;
                        Item item = itemstack.getItem();
                       
                        if(itemstack.getItem() instanceof ItemBlock && Block.blocksList[i] != null){
                                Block block = Block.blocksList[i];
                               
                                if(block == Block.woodSingleSlab){
                                        return 150;
                                }
                               
                                if(block.blockMaterial == Material.wood){
                                        return 300;
                                }
                               
                                if(block == Block.coalBlock){
                                        return 16000;
                                }
                        }
                       
                        if (item instanceof ItemTool && ((ItemTool)item).getToolMaterialName().equals("WOOD")) return 200;
                        if (item instanceof ItemSword && ((ItemSword)item).getToolMaterialName().equals("WOOD")) return 200;
                        if (item instanceof ItemHoe && ((ItemHoe)item).getMaterialName().equals("WOOD")) return 200;
                        if (i == Item.stick.itemID) return 100;
                        //if (i == Item.coal.itemID) return (int)Math.ceil(1371.4286 +(itemstack.stackSize * 228.5714));
                        if (i == Item.coal.itemID) return (int)Math.floor(itemstack.stackSize * 12.5);
                        if (i == Item.bucketLava.itemID) return 20000;
                        if (i == Block.sapling.blockID) return 100;
                        if (i == Item.blazeRod.itemID) return 2400;
                       
                        return GameRegistry.getFuelValue(itemstack);
                }
        }
       
        public static boolean isItemFuel(ItemStack itemstack){
                return getItemBurnTime(itemstack) > 0;
        }

        @Override
        public boolean isItemValidForSlot(int i, ItemStack itemstack) {
                return i == 2 ? false : (i == 1 ? isItemFuel(itemstack) : true);
        }

        @Override
        public int[] getAccessibleSlotsFromSide(int var1) {
                return var1 == 0 ? slots_bottom : (var1 == 1 ? slots_top : slots_sides);
        }

        @Override
        public boolean canInsertItem(int i, ItemStack itemstack, int j) {
                return this.isItemValidForSlot(i, itemstack);
        }

        @Override
        public boolean canExtractItem(int i, ItemStack itemstack, int j) {
                return j != 0 || i != 1 || itemstack.itemID == Item.bucketEmpty.itemID;
        }

        public int getCookProgressScaled(int i) {
                        return this.cookTime * i / this.furanceSpeed;
        }

        public int getBurnTimeRemainingScaled(int i) {
                if(this.currentItemBurnTime == 0){
                        this.currentItemBurnTime = this.furanceSpeed;
                }
                return this.burnTime * i / this.currentItemBurnTime;
        }

}

 

 

This is the GUI

 

package bigbaddevil7.supernova;


import org.lwjgl.opengl.GL11;
import bigbaddevil7.supernova.TileEntityFragmenter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.util.ResourceLocation;

public class GuiFragmenter extends GuiContainer{
       
        public static final ResourceLocation fragmenterTexture = new ResourceLocation(SuperNovaInfo.NAME.toLowerCase(), "textures/gui/oxidizer2.png");
       
        public TileEntityFragmenter fragmenter;

        public GuiFragmenter(InventoryPlayer inventoryplayer, TileEntityFragmenter entity) {
                super(new ContainerFragmenter(inventoryplayer, entity));
               
                this.fragmenter = entity;
                this.xSize = 176;
                this.ySize = 166;
        }
       
        public void drawGuiContainerForegroundLayer(int par1, int par2){
                String name = this.fragmenter.isInvNameLocalized() ? this.fragmenter.getInvName() : I18n.getString(this.fragmenter.getInvName());
                this.fontRenderer.drawString(name, this.xSize / 2 - this.fontRenderer.getStringWidth(name) / 2, 6, 4210752);
                this.fontRenderer.drawString(I18n.getString("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
        }

        @Override
        public void drawGuiContainerBackgroundLayer(float f, int i, int j) {
                GL11.glColor4f(1F, 1F, 1F, 1F);
               
        this.mc.getTextureManager().bindTexture(fragmenterTexture);
        int k = (this.width - this.xSize) / 2;
        int l = (this.height - this.ySize) / 2;
        this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);

        if (this.fragmenter.isBurning())
        {
            int i1 = this.fragmenter.getBurnTimeRemainingScaled(18);
            drawTexturedModalRect(k + 34, l + 50 + 18 - i1, 176, 17 - i1, 18, i1 + 2);
            //drawTexturedModalRect(k + 56, l + 36 + 12 - i1, 176, 12 - i1, 14, i1 + 2);
            //drawTexturedModalRect(gui left, gui top, 0, 0, xSize, ySize)
        }

       
       
       
       
       
        int i1 = this.fragmenter.getCookProgressScaled(37);
        drawTexturedModalRect(k + 69, l + 72, 176, 18, i1 + 1, 7);
        }

}

 

 

This is the Container

 

package bigbaddevil7.supernova;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.inventory.SlotFurnace;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import bigbaddevil7.supernova.TileEntityFragmenter;

public class ContainerFragmenter extends Container {

        private TileEntityFragmenter fragmenter;
        public int lastBurnTime;
        public int lastItemBurnTime;
        public int lastCookTime;
       
        public ContainerFragmenter(InventoryPlayer inventory, TileEntityFragmenter tileentity){
                this.fragmenter = tileentity;
               
                this.addSlotToContainer(new Slot(tileentity, 0, 35, 12));
                this.addSlotToContainer(new Slot(tileentity, 1, 35, 52));
                this.addSlotToContainer(new SlotFurnace(inventory.player, tileentity, 2, 124, 34 ));
               
                for(int i = 0; i< 3; i++){
                        for(int j = 0; j < 9; j++){
                                this.addSlotToContainer(new Slot(inventory, j + i*9 + 9, 8 + j * 18, 84 + i * 18));
                        }
                }
               
                for(int i = 0; i < 9; i++){
                        this.addSlotToContainer(new Slot(inventory, i, 8 + i*18, 142));
                }
        }
        @Override
        public void addCraftingToCrafters(ICrafting icrafting){
                super.addCraftingToCrafters(icrafting);
                icrafting.sendProgressBarUpdate(this, 0, this.fragmenter.cookTime);
                icrafting.sendProgressBarUpdate(this, 1, this.fragmenter.burnTime);
                icrafting.sendProgressBarUpdate(this, 2, this.fragmenter.currentItemBurnTime);
        }
       
        public void detectAndSendChanges(){
                super.detectAndSendChanges();
               
                for(int i = 0; i < this.crafters.size(); i++){
                        ICrafting icrafting = (ICrafting)this.crafters.get(i);
                       
                        if(this.lastCookTime != this.fragmenter.cookTime){
                                icrafting.sendProgressBarUpdate(this, 0, this.fragmenter.cookTime);
                        }
                       
                        if(this.lastBurnTime != this.fragmenter.burnTime){
                                icrafting.sendProgressBarUpdate(this, 1, this.fragmenter.burnTime);
                        }
                       
                        if(this.lastItemBurnTime != this.fragmenter.currentItemBurnTime){
                                icrafting.sendProgressBarUpdate(this, 2, this.fragmenter.currentItemBurnTime);
                        }
                }
               
                this.lastCookTime = this.fragmenter.cookTime;
                this.lastBurnTime = this.fragmenter.burnTime;
                this.lastItemBurnTime = this.fragmenter.currentItemBurnTime;
        }
       
        @SideOnly(Side.CLIENT)
        public void updateProgressBar(int slot, int newValue){
                if(slot == 0) this.fragmenter.cookTime = newValue;
                if(slot == 1) this.fragmenter.burnTime = newValue;
                if(slot == 2) this.fragmenter.currentItemBurnTime = newValue;
        }
       
        public ItemStack transferStackInSlot(EntityPlayer player, int clickedSlotNumber){
                ItemStack itemstack = null;
                Slot slot = (Slot)this.inventorySlots.get(clickedSlotNumber);
               
                if(slot != null && slot.getHasStack()){
                        ItemStack itemstack1 = slot.getStack();
                        itemstack = itemstack1.copy();
                       
                        if(clickedSlotNumber == 2){
                                if(!this.mergeItemStack(itemstack1, 3, 39, true)){
                                        return null;
                                }
                               
                                slot.onSlotChange(itemstack1, itemstack);
                        }else if(clickedSlotNumber != 1 && clickedSlotNumber !=0){
                                if(FurnaceRecipes.smelting().getSmeltingResult(itemstack1) != null){
                                        if(!this.mergeItemStack(itemstack1, 0, 1, false)){
                                                return null;
                                        }
                                }else if(TileEntityFragmenter.isItemFuel(itemstack1)){
                                        if(!this.mergeItemStack(itemstack1, 1, 2, false)){
                                                return null;
                                        }
                                }else if(clickedSlotNumber >= 3 && clickedSlotNumber < 30){
                                        if(!this.mergeItemStack(itemstack1, 30, 39, true)){
                                                return null;
                                        }
                                }else if(clickedSlotNumber >= 30 && clickedSlotNumber <= 38){
                                        if(!this.mergeItemStack(itemstack1, 3, 30, true)){
                                                return null;
                                        }
                                }
                        }else if(!this.mergeItemStack(itemstack1, 3, 39, true)){
                                return null;
                        }
                       
                        if(itemstack1.stackSize == 0){
                                slot.putStack((ItemStack)null);
                        }else{
                                slot.onSlotChanged();
                        }
                       
                        if(itemstack1.stackSize == itemstack.stackSize){
                                return null;
                        }
                       
                        slot.onPickupFromSlot(player, itemstack1);
                }
               
                return itemstack;
        }
       
        @Override
        public boolean canInteractWith(EntityPlayer entityplayer) {
                return this.fragmenter.isUseableByPlayer(entityplayer);
        }

}

 

 

This is the GuiHandler(At the moment I just have the one block in the switch statement to narrow things down).

 

package bigbaddevil7.supernova;


import bigbaddevil7.supernova.tileentity.TileEntityOxidizer;
import bigbaddevil7.supernova.Fragmenter;
import bigbaddevil7.supernova.TileEntityFragmenter;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;
import cpw.mods.fml.common.network.NetworkRegistry;

public class GuiHandler implements IGuiHandler{

public GuiHandler(){
	NetworkRegistry.instance().registerGuiHandler(SuperNova.instance, this);
}

@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
	TileEntity entity = world.getBlockTileEntity(x, y, z);

	if(entity != null){
		switch(ID){
			case SuperNova.guiIdOxidizer:
				if(entity instanceof TileEntityFragmenter){
					return new GuiFragmenter(player.inventory, (TileEntityFragmenter) entity);
				}
				return null;
			default:
				return null;
		}
	}
	return null;
}

@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
	TileEntity entity = world.getBlockTileEntity(x, y, z);

	if(entity != null){
		switch(ID){
			case SuperNova.guiIdFragmenter:
				if(entity instanceof TileEntityFragmenter){
					return new GuiFragmenter(player.inventory, (TileEntityFragmenter) entity);
				}
				return null;

		}
	}

	return null;
}

}

 

 

 

I have everything for Registry in my main class.

Posted

Well, you've got SuperNova.guiIdOxidizer in the server side switch when you're looking for the fragmenter I do believe. Be careful how you copy and paste.

If you really want help, give that modder a thank you.

 

Modders LOVE thank yous.

Posted

huh thats strange I know for sure I swapped it must of been when I was testing it must of changed the wrong one back or something, but now im getting

 

2014-02-15 17:41:01 [iNFO] [sTDERR] net.minecraft.util.ReportedException: Ticking memory connection

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:63)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:691)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:587)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:129)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:484)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

2014-02-15 17:41:01 [iNFO] [sTDERR] Caused by: java.lang.ClassCastException: bigbaddevil7.supernova.GuiFragmenter cannot be cast to net.minecraft.inventory.Container

2014-02-15 17:41:01 [iNFO] [sTDERR] at cpw.mods.fml.common.network.NetworkRegistry.openRemoteGui(NetworkRegistry.java:308)

2014-02-15 17:41:01 [iNFO] [sTDERR] at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:353)

2014-02-15 17:41:01 [iNFO] [sTDERR] at bigbaddevil7.supernova.Fragmenter.onBlockActivated(Fragmenter.java:90)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.item.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:421)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:556)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:141)

2014-02-15 17:41:01 [iNFO] [sTDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:54)

2014-02-15 17:41:01 [iNFO] [sTDERR] ... 6 more

2014-02-15 17:41:01 [sEVERE] [Minecraft-Server] Encountered an unexpected exception ReportedException

net.minecraft.util.ReportedException: Ticking memory connection

at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:63)

at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)

at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:691)

at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:587)

at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:129)

at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:484)

at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

Caused by: java.lang.ClassCastException: bigbaddevil7.supernova.GuiFragmenter cannot be cast to net.minecraft.inventory.Container

at cpw.mods.fml.common.network.NetworkRegistry.openRemoteGui(NetworkRegistry.java:308)

at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:353)

at bigbaddevil7.supernova.Fragmenter.onBlockActivated(Fragmenter.java:90)

at net.minecraft.item.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:421)

at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:556)

at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79)

at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)

at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:141)

at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:54)

Posted

Ok, I redid my GuiHandler and fixed that crash now in order to have two custom GUI's I would add another case wouldn't I, because when I do it give me that error again I can have one or the other but not both.

 

Updated GuiHandler(commented out the 2nd GUI)

 

 

package bigbaddevil7.supernova;

import bigbaddevil7.supernova.Fragmenter;
import bigbaddevil7.supernova.tileentity.TileEntityOxidizer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;
import cpw.mods.fml.common.network.NetworkRegistry;

public class GuiHandler implements IGuiHandler{
       
        public GuiHandler(){
                NetworkRegistry.instance().registerGuiHandler(SuperNova.instance, this);
        }

        @Override
        public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
                TileEntity entity = world.getBlockTileEntity(x, y, z);
               
                if(entity != null){
                        switch(ID){
                                case SuperNova.guiIdFragmenter:
                                        if(entity instanceof TileEntityFragmenter){
                                                return new ContainerFragmenter(player.inventory, (TileEntityFragmenter) entity);
                                        }
                                /*case SuperNova.guiIdOxidizer:
                                    if(entity instanceof TileEntityOxidizer){
                                            return new ContainerOxidizer(player.inventory, (TileEntityOxidizer) entity);
                                    }*/
                        }
                }
               
                return null;
        }

        @Override
        public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
                TileEntity entity = world.getBlockTileEntity(x, y, z);
               
                if(entity != null){
                        switch(ID){
                                case SuperNova.guiIdFragmenter:
                                        if(entity instanceof TileEntityFragmenter){
                                                return new GuiFragmenter(player.inventory, (TileEntityFragmenter) entity);
                                        }
                                /*case SuperNova.guiIdOxidizer:
                                    if(entity instanceof TileEntityOxidizer){
                                            return new ContainerOxidizer(player.inventory, (TileEntityOxidizer) entity);
                                    }*/
                        }
                }
               
                return null;
        }

}

 

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.