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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • When I first heard about Bitcoin back in 2018, I was skeptical. The idea of a decentralized, digital currency seemed too good to be true. But I was intrigued as I learned more about the technology behind it and its potential. I started small, investing just a few hundred dollars, dipping my toes into the cryptocurrency waters. At first, it was exhilarating to watch the value of my investment grow exponentially. I felt like I was part of the future, an early adopter of this revolutionary new asset. But that euphoria was short-lived. One day, I logged into my digital wallet only to find it empty - my Bitcoin had vanished without a trace. It turned out that the online exchange I had trusted had been hacked, and my funds were stolen. I was devastated, both financially and emotionally. All the potential I had seen in Bitcoin was tainted by the harsh reality that with decentralization came a lack of regulation and oversight. My hard-earned money was gone, lost to the ether of the digital world. This experience taught me a painful lesson about the price of trust in the uncharted territory of cryptocurrency. While the technology holds incredible promise, the risks can be catastrophic if you don't approach it with extreme caution. My Bitcoin investment gamble had failed, and I was left to pick up the pieces, wiser but poorer for having placed my faith in the wrong hands. My sincere appreciation goes to MUYERN TRUST HACKER. You are my hero in recovering my lost funds. Send a direct m a i l ( muyerntrusted ( @ ) mail-me ( . )c o m ) or message on whats app : + 1 ( 4-4-0 ) ( 3 -3 -5 ) ( 0-2-0-5 )
    • You could try posting a log (if there is no log at all, it may be the launcher you are using, the FAQ may have info on how to enable the log) as described in the FAQ, however this will probably need to be reported to/remedied by the mod author.
    • So me and a couple of friends are playing with a shitpost mod pack and one of the mods in the pack is corail tombstone and for some reason there is a problem with it, where on death to fire the player will get kicked out of the server and the tombstone will not spawn basically deleting an entire inventory, it doesn't matter what type of fire it is, whether it's from vanilla fire/lava, or from modded fire like ice&fire/lycanites and it's common enough to where everyone on the server has experienced at least once or twice and it doesn't give any crash log. a solution to this would be much appreciated thank you!
    • It is 1.12.2 - I have no idea if there is a 1.12 pack
  • Topics

×
×
  • Create New...

Important Information

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