Problème GUI



  • Bonjour, 
    J'ai créé 2 blocs avec un GUI mais, après avoir ajouté le 2eme bloc, le GUI du 1er ne marchait plus.

    Pouvez-vous m'aider ?

    BlockCrusher.java

    
    package fr.MrBlockTNT.NewOres.Basic.crusher;
    
    import java.util.List;
    import java.util.Random;
    
    import net.minecraft.block.Block;
    import net.minecraft.client.renderer.texture.IIconRegister;
    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.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.IIcon;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.IBlockAccess;
    import net.minecraft.world.World;
    import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import fr.MrBlockTNT.NewOres.Basic.Basic;
    import fr.MrBlockTNT.NewOres.Basic.BasicBlock;
    
    public class BlockCrusher extends BasicBlock
    {
    public static String[] subBlock = new String[] {"copper", "bronze", "steel"};
    private IIcon[][] iconArray = new IIcon[subBlock.length][3];
    private IIcon[] on_state = new IIcon[subBlock.length];
    private static boolean field_149934_M;
    
    public void registerBlockIcons(IIconRegister iconRegister)
    {
    for(int i = 0; i < subBlock.length; i++)
    {
    this.iconArray*[0] = iconRegister.registerIcon("neworesbasic:" + subBlock* + "_crusher_top");
    this.iconArray*[1] = iconRegister.registerIcon("neworesbasic:" + subBlock* + "_crusher_front");
    this.iconArray*[2] = iconRegister.registerIcon("neworesbasic:" + subBlock* + "_crusher_side");
    this.on_state* = iconRegister.registerIcon("neworesbasic:" + subBlock* + "_crusher_front_active");
    }
    }
    
    public void getSubBlocks(Item item, CreativeTabs tabs, List list)
    {
    for(int i = 0; i < subBlock.length; i++)
    {
    list.add(new ItemStack(item, 1, i));
    }
    }
    
    public int damageDropped(int metadata)
    {
    return metadata;
    }
    
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
    {
    int metadata = world.getBlockMetadata(x, y, z);
    TileEntity tile = world.getTileEntity(x, y, z);
    if(side == 1) // UP
       {
        return this.iconArray[metadata][0];
       }
    else if(tile instanceof TileEntityCrusher)
            {
    TileEntityCrusher crusher = (TileEntityCrusher)tile;
                byte direction = ((TileEntityCrusher)tile).getDirection();
                switch(direction)
    {
    case 0:
    return side == 3 ? (crusher.isActive() ? this.on_state[metadata] : this.iconArray[metadata][1]) : this.iconArray[metadata][2];
    case 1:
    return side == 4 ? (crusher.isActive() ? this.on_state[metadata] : this.iconArray[metadata][1]) : this.iconArray[metadata][2];
    case 2:
    return side == 2 ? (crusher.isActive() ? this.on_state[metadata] : this.iconArray[metadata][1]) : this.iconArray[metadata][2];
    case 3:
    return side == 5 ? (crusher.isActive() ? this.on_state[metadata] : this.iconArray[metadata][1]) : this.iconArray[metadata][2];
    }
            }
       else
       {
        return this.iconArray[metadata][2];
       }
    return getIcon(side, world.getBlockMetadata(x, y, z));
    }
    
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(int side, int metadata)
    {
    if(side == 1) // UP
       {
        return this.iconArray[metadata][0];
       }
       else if(side == 3) // FRONT : 3
       {
        return this.iconArray[metadata][1];
       }
       else
       {
        return this.iconArray[metadata][2];
       }
    }
    
    public BlockCrusher()
    {
    this.setCreativeTab(Basic.BasicTab);
    }
    
    @Override
        public TileEntity createTileEntity(World world, int metadata)
        {
            return new TileEntityCrusher();
        }
    
        @Override
        public boolean hasTileEntity(int metadata)
        {
            return true;
        }
    
        public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9)
    {
        FMLNetworkHandler.openGui(player, Basic.instance, 0, world, x, y, z);
    return true;
    }
    
        public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
    {
    TileEntity te = world.getTileEntity(x, y, z);
    if(te != null && te instanceof TileEntityCrusher && stack.hasDisplayName())
    {
    ((TileEntityCrusher)te).setCustomGuiName(stack.getDisplayName());
    }
    if(te instanceof TileEntityCrusher)
    {
    int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
                ((TileEntityCrusher)te).setDirection((byte)direction);
    }
    }
    
        public void breakBlock(World world, int x, int y, int z, Block block, int metadata)
        {
        dropContainerItem(world, x, y, z);
            super.breakBlock(world, x, y, z, block, metadata);
        }
    
        protected void dropContainerItem(World world, int x, int y, int z)
        {
        TileEntityCrusher tecrusher = (TileEntityCrusher)world.getTileEntity(x, y, z);
    
            if (tecrusher != null)
            {
                for (int slotId = 0; slotId < tecrusher.getSizeInventory(); slotId++)
                {
                    ItemStack stack = tecrusher.getStackInSlot(slotId);
    
                    if (stack != null)
                    {
                        float f = world.rand.nextFloat() * 0.8F + 0.1F;
                        float f1 = world.rand.nextFloat() * 0.8F + 0.1F;
                        EntityItem entityitem;
    
                        for (float f2 = world.rand.nextFloat() * 0.8F + 0.1F; stack.stackSize > 0; world.spawnEntityInWorld(entityitem))
                        {
                            int k1 = world.rand.nextInt(21) + 10;
    
                            if (k1 > stack.stackSize)
                            {
                                k1 = stack.stackSize;
                            }
    
                            stack.stackSize -= k1;
                            entityitem = new EntityItem(world, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(stack.getItem(), k1, stack.getItemDamage()));
                            float f3 = 0.05F;
                            entityitem.motionX = (double)((float)world.rand.nextGaussian() * f3);
                            entityitem.motionY = (double)((float)world.rand.nextGaussian() * f3 + 0.2F);
                            entityitem.motionZ = (double)((float)world.rand.nextGaussian() * f3);
    
                            if (stack.hasTagCompound())
                            {
                                entityitem.getEntityItem().setTagCompound((NBTTagCompound)stack.getTagCompound().copy());
                            }
                        }
                    }
                }
            }
        }
    
        public static void updateCrusherBlockState(boolean p_149931_0_, World world, int x, int y, int z)
        {
            int l = world.getBlockMetadata(x, y, z);
            TileEntity tileentity = world.getTileEntity(x, y, z);
            field_149934_M = true;
            int metadata = world.getBlockMetadata(x, y, z);
    
            /*if (p_149931_0_)
            {
                world.setBlock(x, y, z, Basic.crusher_active, metadata, 0); // In-crushing block
            }
            else
            {
                world.setBlock(x, y, z, Basic.crusher, metadata, 0);
            }*/
    
            field_149934_M = false;
            world.setBlockMetadataWithNotify(x, y, z, l, 2);
    
            if (tileentity != null)
            {
                tileentity.validate();
                world.setTileEntity(x, y, z, tileentity);
            }
        }
    
        public boolean hasComparatorInputOverride()
        {
            return true;
        }
    
        public int getComparatorInputOverride(World p_149736_1_, int p_149736_2_, int p_149736_3_, int p_149736_4_, int p_149736_5_)
        {
            return Container.calcRedstoneFromInventory((IInventory)p_149736_1_.getTileEntity(p_149736_2_, p_149736_3_, p_149736_4_));
        }
    
        @SideOnly(Side.CLIENT)
        public void randomDisplayTick(World world, int x, int y, int z, Random rand)
    {
        TileEntity tile = world.getTileEntity(x, y, z);
        if(tile instanceof TileEntityCrusher && ((TileEntityCrusher)tile).isActive())
        {
        for(int i = 0; i < rand.nextInt(8); i++)
    {
    float f = (float)x + 0.4F + rand.nextFloat() * 6.0F / 16.0F;
            float f1 = (float)y + 1.1F;
            float f2 = (float)z + 0.4F;
            float f3 = 0.52F;
            float f4 = rand.nextFloat() * 0.6F - 0.3F;
    
    world.spawnParticle("smoke", (double)f, (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
    }
        }
    }
    
        @SideOnly(Side.CLIENT)
    public int getLightValue(IBlockAccess world, int x, int y, int z)
    {
    TileEntity te = world.getTileEntity(x, y, z);
    if(te instanceof TileEntityCrusher && ((TileEntityCrusher)te).isActive())
    {
    return 13;
    }
    return super.getLightValue(world, x, y, z);
    }
    
    }
    
    

    TileEntityCrusher.java :

    
    package fr.MrBlockTNT.NewOres.Basic.crusher;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.init.Blocks;
    import net.minecraft.init.Items;
    import net.minecraft.inventory.IInventory;
    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.nbt.NBTTagCompound;
    import net.minecraft.nbt.NBTTagList;
    import net.minecraft.network.NetworkManager;
    import net.minecraft.network.Packet;
    import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
    import net.minecraft.tileentity.TileEntity;
    import cpw.mods.fml.common.registry.GameRegistry;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    public class TileEntityCrusher extends TileEntity implements IInventory
    {
    private static final int[] slotsTop = new int[] {0};
        private static final int[] slotsBottom = new int[] {2, 1};
        private static final int[] slotsSides = new int[] {1};
    
    private ItemStack[] inventory = new ItemStack[3];
    private String customName;
    
    public int crusherCrushTime;
        public int currentItemPowerTime;
        public int crusherResultCrushTime;
    
        public int maxCrushTime = 200;
        public static float powerMultiplier = 1F;
    
        private byte direction;
        private boolean active;
    
    @Override
    public void readFromNBT(NBTTagCompound nbttag)
        {
    super.readFromNBT(nbttag);
    this.direction = nbttag.getByte("Direction");
            NBTTagList nbttaglist = nbttag.getTagList("Items", 10);
            this.inventory = new ItemStack[this.getSizeInventory()];
    
            for (int i = 0; i < nbttaglist.tagCount(); ++i)
            {
                NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
                byte b0 = nbttagcompound1.getByte("Slot");
    
                if (b0 >= 0 && b0 < this.inventory.length)
                {
                    this.inventory[b0] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
                }
            }
    
            this.crusherCrushTime = nbttag.getShort("CrushTime");
            this.crusherResultCrushTime = nbttag.getShort("CrushResultTime");
            this.currentItemPowerTime = getItemPowerTime(this.inventory[1]);
    
            if (nbttag.hasKey("CustomName", 8))
            {
                this.customName = nbttag.getString("CustomName");
            }
            this.active = nbttag.getBoolean("Active");
        }
    
    @Override
        public void writeToNBT(NBTTagCompound nbttag)
        {
    super.writeToNBT(nbttag);
    nbttag.setByte("Direction", this.direction);
    nbttag.setShort("CrushTime", (short)this.crusherCrushTime);
    nbttag.setShort("CrushResultTime", (short)this.crusherResultCrushTime);
            NBTTagList nbttaglist = new NBTTagList();
    
            for (int i = 0; i < this.inventory.length; ++i)
            {
                if (this.inventory* != null)
                {
                    NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                    nbttagcompound1.setByte("Slot", (byte)i);
                    this.inventory*.writeToNBT(nbttagcompound1);
                    nbttaglist.appendTag(nbttagcompound1);
                }
            }
    
            nbttag.setTag("Items", nbttaglist);
    
            if (this.hasCustomInventoryName())
            {
            nbttag.setString("CustomName", this.customName);
            }
            nbttag.setBoolean("Active", this.active);
        }
    
    public boolean isActive()
    {
    return this.active;
    }
    
    public byte getDirection()
        {
            return direction;
        }
    
    public void setDirection(byte direction)
    {
    this.direction = direction;
    this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
    }
    
    public Packet getDescriptionPacket()
        {
            NBTTagCompound nbttagcompound = new NBTTagCompound();
            this.writeToNBT(nbttagcompound);
            return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbttagcompound);
        }
    
        public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
        {
            this.readFromNBT(pkt.func_148857_g());
            this.worldObj.markBlockRangeForRenderUpdate(this.xCoord, this.yCoord, this.zCoord, this.xCoord, this.yCoord, this.zCoord);
        }
    
       @Override
    public int getSizeInventory()
    {
    return inventory.length;
    }
    
    public ItemStack getStackInSlot(int par1)
    {
    return this.inventory[par1];
    }
    
       @Override
        public ItemStack decrStackSize(int slotId, int quantity)
        {
      if (this.inventory[slotId] != null)
           {
               ItemStack itemstack;
    
               if (this.inventory[slotId].stackSize <= quantity)
               {
                   itemstack = this.inventory[slotId];
                   this.inventory[slotId] = null;
                   return itemstack;
               }
               else
               {
                   itemstack = this.inventory[slotId].splitStack(quantity);
    
                   if (this.inventory[slotId].stackSize == 0)
                   {
                       this.inventory[slotId] = null;
                   }
    
                   return itemstack;
               }
           }
           else
           {
               return null;
           }
        }
    
    @Override
    public ItemStack getStackInSlotOnClosing(int slotId)
    {
            if (this.inventory[slotId] != null)
            {
                ItemStack itemstack = this.inventory[slotId];
                this.inventory[slotId] = null;
                return itemstack;
            }
            else
            {
                return null;
            }
    }
    
    @Override
    public void setInventorySlotContents(int slotId, ItemStack stack)
    {
            this.inventory[slotId] = stack;
    
            if (stack != null && stack.stackSize > this.getInventoryStackLimit())
            {
                stack.stackSize = this.getInventoryStackLimit();
            }
    
            this.markDirty();
    }
    
    @Override
    public String getInventoryName()
    {
    return this.hasCustomInventoryName() ? this.customName : "container.crusher";
    }
    
    @Override
    public boolean hasCustomInventoryName()
    {
            return this.customName != null && this.customName.length() > 0;
    }
    
       public void setCustomGuiName(String name)
       {
           this.customName = name;
       }
    
       @Override
    public int getInventoryStackLimit()
    {
    return 64;
    }
    
       @Override
    public boolean isUseableByPlayer(EntityPlayer player)
    {
    return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64;
    }
    
       @Override
       public boolean isItemValidForSlot(int par1, ItemStack par2ItemStack)
       {
           return par1 == 2 ? false : (par1 == 1 ? isItemFuel(par2ItemStack) : true);
       }
    
       @Override
       public void openInventory()
       {
       }
    
       @Override
       public void closeInventory() 
       {
       }
    
       @SideOnly(Side.CLIENT)
       public int getCrushProgressScaled(int speed)
       {
           return this.crusherResultCrushTime * speed/ this.maxCrushTime;
       }
    
       @SideOnly(Side.CLIENT)
       public int getCrushTimeRemainingScaled(int p_145955_1_)
       {
           if (this.currentItemPowerTime == 0)
           {
               this.currentItemPowerTime = this.maxCrushTime;
           }
    
           return this.crusherCrushTime * p_145955_1_ / this.currentItemPowerTime;
       }
    
       public boolean isCrushing()
       {
           return this.crusherCrushTime > 0;
       }
    
       public void updateEntity()
       {
      this.active = this.crusherCrushTime > 0;
      if(this.getBlockMetadata() == 0)
           {
          this.maxCrushTime = 200;
          this.powerMultiplier = 1.0F;
           }
           else if(this.getBlockMetadata() == 1)
           {
          this.maxCrushTime = 190;
          this.powerMultiplier = 1.1F;
           }
           else if(this.getBlockMetadata() == 2)
           {
          this.maxCrushTime = 150;
          this.powerMultiplier = 1.3F;
           }
    
           boolean flag1 = false;
    
           if (this.crusherCrushTime > 0)
           {
               –this.crusherCrushTime;
           }
    
           if (!this.worldObj.isRemote)
           {
               if (this.crusherCrushTime == 0 && this.canCrush())
               {
                   this.currentItemPowerTime = this.crusherCrushTime = getItemPowerTime(this.inventory[1]);
    
                   if (this.crusherCrushTime > 0)
                   {
                       flag1 = true;
    
                       if (this.inventory[1] != null)
                       {
                           –this.inventory[1].stackSize;
    
                           if (this.inventory[1].stackSize == 0)
                           {
                               this.inventory[1] = inventory[1].getItem().getContainerItem(inventory[1]);
                           }
                       }
                   }
               }
    
               if (this.isCrushing() && this.canCrush())
               {
                   ++this.crusherResultCrushTime;
    
                   if (this.crusherResultCrushTime == maxCrushTime)
                   {
                       this.crusherResultCrushTime = 0;
                       this.crushItem();
                       flag1 = true;
                   }
    
                   /**
                    * <todo>*/
               }
               else
               {
                   this.crusherResultCrushTime = 0;
               }
    
               if(active != this.crusherCrushTime > 0)
    {
    flag1 = true;
    this.active = this.crusherCrushTime > 0;
    if(!this.worldObj.isRemote)
    {
    this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
    }
    }
           }
    
           if (flag1)
           {
               this.markDirty();
           }
       }
    
       private boolean canCrush()
       {
           if (this.inventory[0] == null)
           {
               return false;
           }
           else
           {
               ItemStack itemstack = CrusherRecipes.crushing().getCrushingResult(this.inventory[0]);
               if (itemstack == null) return false;
               if (this.inventory[2] == null) return true;
               if (!this.inventory[2].isItemEqual(itemstack)) return false;
               int result = inventory[2].stackSize + itemstack.stackSize;
               return result <= getInventoryStackLimit() && result <= this.inventory[2].getMaxStackSize(); //Forge BugFix: Make it respect stack sizes properly.
           }
       }
    
       public void crushItem()
       {
           if (this.canCrush())
           {
               ItemStack itemstack = CrusherRecipes.crushing().getCrushingResult(this.inventory[0]);
    
               if (this.inventory[2] == null)
               {
                   this.inventory[2] = itemstack.copy();
               }
               else if (this.inventory[2].getItem() == itemstack.getItem())
               {
                   this.inventory[2].stackSize += itemstack.stackSize; // Forge BugFix: Results may have multiple items
               }
    
               –this.inventory[0].stackSize;
    
               if (this.inventory[0].stackSize <= 0)
               {
                   this.inventory[0] = null;
               }
           }
       }
    
       public static int getItemPowerTime(ItemStack p_145952_0_)
       {
           if (p_145952_0_ == null)
           {
               return 0;
           }
           else
           {
               Item item = p_145952_0_.getItem();
    
               if (item instanceof ItemBlock && Block.getBlockFromItem(item) != Blocks.air)
               {
                   Block block = Block.getBlockFromItem(item);
    
                   if (block == Blocks.wooden_slab)
                   {
                       return Integer.valueOf((int) (150 * powerMultiplier));
                   }
    
                   if (block.getMaterial() == Material.wood)
                   {
                       return Integer.valueOf((int) (300 * powerMultiplier));
                   }
    
                   if (block == Blocks.coal_block)
                   {
                       return Integer.valueOf((int) (16000 * powerMultiplier));
                   }
               }
    
               if (item instanceof ItemTool && ((ItemTool)item).getToolMaterialName().equals("WOOD")) return Integer.valueOf((int) (200 * powerMultiplier));
               if (item instanceof ItemSword && ((ItemSword)item).getToolMaterialName().equals("WOOD")) return Integer.valueOf((int) (200 * powerMultiplier));
               if (item instanceof ItemHoe && ((ItemHoe)item).getToolMaterialName().equals("WOOD")) return Integer.valueOf((int) (200 * powerMultiplier));
               if (item == Items.stick) return Integer.valueOf((int) (100 * powerMultiplier));
               if (item == Items.coal) return Integer.valueOf((int) (1600 * powerMultiplier));
               if (item == Items.lava_bucket) return Integer.valueOf((int) (20000 * powerMultiplier));
               if (item == Item.getItemFromBlock(Blocks.sapling)) return Integer.valueOf((int) (100 * powerMultiplier));
               if (item == Items.blaze_rod) return Integer.valueOf((int) (2400 * powerMultiplier));
               return GameRegistry.getFuelValue(p_145952_0_);
           }
       }
    
       public static boolean isItemFuel(ItemStack p_145954_0_)
       {
           return getItemPowerTime(p_145954_0_) > 0;
       }
    
       public boolean canInsertItem(int par1, ItemStack par2ItemStack, int par3)
       {
           return this.isItemValidForSlot(par1, par2ItemStack);
       }
    
       public boolean canExtractItem(int par1, ItemStack par2ItemStack, int par3)
       {
           return par3 != 0 || par1 != 1 || par2ItemStack.getItem() == Items.bucket;
       }
    }
    
    

    BlockCompressor.java :

    
    package fr.MrBlockTNT.NewOres.Basic.compressor;
    
    import java.util.List;
    import java.util.Random;
    
    import net.minecraft.block.Block;
    import net.minecraft.client.renderer.texture.IIconRegister;
    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.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.IIcon;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.IBlockAccess;
    import net.minecraft.world.World;
    import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import fr.MrBlockTNT.NewOres.Basic.Basic;
    import fr.MrBlockTNT.NewOres.Basic.BasicBlock;
    
    public class BlockCompressor extends BasicBlock
    {
    public static String[] subBlock = new String[] {"copper", "bronze", "steel"};
    private IIcon[][] iconArray = new IIcon[subBlock.length][3];
    private IIcon[] on_state = new IIcon[subBlock.length];
    private static boolean field_149934_M;
    
    public void registerBlockIcons(IIconRegister iconRegister)
    {
    for(int i = 0; i < subBlock.length; i++)
    {
    this.iconArray*[0] = iconRegister.registerIcon("neworesbasic:" + subBlock* + "_compressor_top");
    this.iconArray*[1] = iconRegister.registerIcon("neworesbasic:" + subBlock* + "_compressor_front");
    this.iconArray*[2] = iconRegister.registerIcon("neworesbasic:" + subBlock* + "_crusher_side");
    this.on_state* = iconRegister.registerIcon("neworesbasic:" + subBlock* + "_compressor_front_active");
    }
    }
    
    public void getSubBlocks(Item item, CreativeTabs tabs, List list)
    {
    for(int i = 0; i < subBlock.length; i++)
    {
    list.add(new ItemStack(item, 1, i));
    }
    }
    
    public int damageDropped(int metadata)
    {
    return metadata;
    }
    
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
    {
    int metadata = world.getBlockMetadata(x, y, z);
    TileEntity tile = world.getTileEntity(x, y, z);
    if(side == 1) // UP
       {
        return this.iconArray[metadata][0];
       }
    else if(tile instanceof TileEntityCompressor)
            {
    TileEntityCompressor compressor = (TileEntityCompressor)tile;
                byte direction = ((TileEntityCompressor)tile).getDirection();
                switch(direction)
    {
    case 0:
    return side == 3 ? (compressor.isActive() ? this.on_state[metadata] : this.iconArray[metadata][1]) : this.iconArray[metadata][2];
    case 1:
    return side == 4 ? (compressor.isActive() ? this.on_state[metadata] : this.iconArray[metadata][1]) : this.iconArray[metadata][2];
    case 2:
    return side == 2 ? (compressor.isActive() ? this.on_state[metadata] : this.iconArray[metadata][1]) : this.iconArray[metadata][2];
    case 3:
    return side == 5 ? (compressor.isActive() ? this.on_state[metadata] : this.iconArray[metadata][1]) : this.iconArray[metadata][2];
    }
            }
       else
       {
        return this.iconArray[metadata][2];
       }
    return getIcon(side, world.getBlockMetadata(x, y, z));
    }
    
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(int side, int metadata)
    {
    if(side == 1) // UP
       {
        return this.iconArray[metadata][0];
       }
       else if(side == 3) // FRONT : 3
       {
        return this.iconArray[metadata][1];
       }
       else
       {
        return this.iconArray[metadata][2];
       }
    }
    
    public BlockCompressor()
    {
    this.setCreativeTab(Basic.BasicTab);
    }
    
    @Override
        public TileEntity createTileEntity(World world, int metadata)
        {
            return new TileEntityCompressor();
        }
    
        @Override
        public boolean hasTileEntity(int metadata)
        {
            return true;
        }
    
        public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9)
    {
        FMLNetworkHandler.openGui(player, Basic.instance, 1, world, x, y, z);
    return true;
    }
    
        public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
    {
    TileEntity te = world.getTileEntity(x, y, z);
    if(te != null && te instanceof TileEntityCompressor && stack.hasDisplayName())
    {
    ((TileEntityCompressor)te).setCustomGuiName(stack.getDisplayName());
    }
    if(te instanceof TileEntityCompressor)
    {
    int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
                ((TileEntityCompressor)te).setDirection((byte)direction);
    }
    }
    
        public void breakBlock(World world, int x, int y, int z, Block block, int metadata)
        {
        dropContainerItem(world, x, y, z);
            super.breakBlock(world, x, y, z, block, metadata);
        }
    
        protected void dropContainerItem(World world, int x, int y, int z)
        {
        TileEntityCompressor tecompressor = (TileEntityCompressor)world.getTileEntity(x, y, z);
    
            if (tecompressor != null)
            {
                for (int slotId = 0; slotId < tecompressor.getSizeInventory(); slotId++)
                {
                    ItemStack stack = tecompressor.getStackInSlot(slotId);
    
                    if (stack != null)
                    {
                        float f = world.rand.nextFloat() * 0.8F + 0.1F;
                        float f1 = world.rand.nextFloat() * 0.8F + 0.1F;
                        EntityItem entityitem;
    
                        for (float f2 = world.rand.nextFloat() * 0.8F + 0.1F; stack.stackSize > 0; world.spawnEntityInWorld(entityitem))
                        {
                            int k1 = world.rand.nextInt(21) + 10;
    
                            if (k1 > stack.stackSize)
                            {
                                k1 = stack.stackSize;
                            }
    
                            stack.stackSize -= k1;
                            entityitem = new EntityItem(world, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(stack.getItem(), k1, stack.getItemDamage()));
                            float f3 = 0.05F;
                            entityitem.motionX = (double)((float)world.rand.nextGaussian() * f3);
                            entityitem.motionY = (double)((float)world.rand.nextGaussian() * f3 + 0.2F);
                            entityitem.motionZ = (double)((float)world.rand.nextGaussian() * f3);
    
                            if (stack.hasTagCompound())
                            {
                                entityitem.getEntityItem().setTagCompound((NBTTagCompound)stack.getTagCompound().copy());
                            }
                        }
                    }
                }
            }
        }
    
        public static void updateCompressorBlockState(boolean p_149931_0_, World world, int x, int y, int z)
        {
            int l = world.getBlockMetadata(x, y, z);
            TileEntity tileentity = world.getTileEntity(x, y, z);
            field_149934_M = true;
            int metadata = world.getBlockMetadata(x, y, z);
    
            /*if (p_149931_0_)
            {
                world.setBlock(x, y, z, Basic.compressor_active, metadata, 0); // In-compressing block
            }
            else
            {
                world.setBlock(x, y, z, Basic.compressor, metadata, 0);
            }*/
    
            field_149934_M = false;
            world.setBlockMetadataWithNotify(x, y, z, l, 2);
    
            if (tileentity != null)
            {
                tileentity.validate();
                world.setTileEntity(x, y, z, tileentity);
            }
        }
    
        public boolean hasComparatorInputOverride()
        {
            return true;
        }
    
        public int getComparatorInputOverride(World p_149736_1_, int p_149736_2_, int p_149736_3_, int p_149736_4_, int p_149736_5_)
        {
            return Container.calcRedstoneFromInventory((IInventory)p_149736_1_.getTileEntity(p_149736_2_, p_149736_3_, p_149736_4_));
        }
    
        @SideOnly(Side.CLIENT)
        public void randomDisplayTick(World world, int x, int y, int z, Random rand)
    {
        TileEntity tile = world.getTileEntity(x, y, z);
        if(tile instanceof TileEntityCompressor && ((TileEntityCompressor)tile).isActive())
        {
        for(int i = 0; i < rand.nextInt(8); i++)
    {
    float f = (float)x + 0.4F + rand.nextFloat() * 6.0F / 16.0F;
            float f1 = (float)y + 1.1F;
            float f2 = (float)z + 0.4F;
            float f3 = 0.52F;
            float f4 = rand.nextFloat() * 0.6F - 0.3F;
    
    world.spawnParticle("smoke", (double)f, (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
    }
        }
    }
    
        @SideOnly(Side.CLIENT)
    public int getLightValue(IBlockAccess world, int x, int y, int z)
    {
    TileEntity te = world.getTileEntity(x, y, z);
    if(te instanceof TileEntityCompressor && ((TileEntityCompressor)te).isActive())
    {
    return 13;
    }
    return super.getLightValue(world, x, y, z);
    }
    
    }
    
    

    TileEntityCompressor.java :

    
    package fr.MrBlockTNT.NewOres.Basic.compressor;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.init.Blocks;
    import net.minecraft.init.Items;
    import net.minecraft.inventory.IInventory;
    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.nbt.NBTTagCompound;
    import net.minecraft.nbt.NBTTagList;
    import net.minecraft.network.NetworkManager;
    import net.minecraft.network.Packet;
    import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
    import net.minecraft.tileentity.TileEntity;
    import cpw.mods.fml.common.registry.GameRegistry;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    public class TileEntityCompressor extends TileEntity implements IInventory
    {
    private static final int[] slotsTop = new int[] {0};
        private static final int[] slotsBottom = new int[] {2, 1};
        private static final int[] slotsSides = new int[] {1};
    
    private ItemStack[] inventory = new ItemStack[3];
    private String customName;
    
    public int compressorCompressTime;
        public int currentItemPowerTime;
        public int compressorResultCompressTime;
    
        public int maxCompressTime = 200;
        public static float powerMultiplier = 1F;
    
        private byte direction;
        private boolean active;
    
    @Override
    public void readFromNBT(NBTTagCompound nbttag)
        {
    super.readFromNBT(nbttag);
    this.direction = nbttag.getByte("Direction");
            NBTTagList nbttaglist = nbttag.getTagList("Items", 10);
            this.inventory = new ItemStack[this.getSizeInventory()];
    
            for (int i = 0; i < nbttaglist.tagCount(); ++i)
            {
                NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
                byte b0 = nbttagcompound1.getByte("Slot");
    
                if (b0 >= 0 && b0 < this.inventory.length)
                {
                    this.inventory[b0] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
                }
            }
    
            this.compressorCompressTime = nbttag.getShort("CompressTime");
            this.compressorResultCompressTime = nbttag.getShort("CompressResultTime");
            this.currentItemPowerTime = getItemPowerTime(this.inventory[1]);
    
            if (nbttag.hasKey("CustomName", 8))
            {
                this.customName = nbttag.getString("CustomName");
            }
            this.active = nbttag.getBoolean("Active");
        }
    
    @Override
        public void writeToNBT(NBTTagCompound nbttag)
        {
    super.writeToNBT(nbttag);
    nbttag.setByte("Direction", this.direction);
    nbttag.setShort("CompressTime", (short)this.compressorCompressTime);
    nbttag.setShort("CompressResultTime", (short)this.compressorResultCompressTime);
            NBTTagList nbttaglist = new NBTTagList();
    
            for (int i = 0; i < this.inventory.length; ++i)
            {
                if (this.inventory* != null)
                {
                    NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                    nbttagcompound1.setByte("Slot", (byte)i);
                    this.inventory*.writeToNBT(nbttagcompound1);
                    nbttaglist.appendTag(nbttagcompound1);
                }
            }
    
            nbttag.setTag("Items", nbttaglist);
    
            if (this.hasCustomInventoryName())
            {
            nbttag.setString("CustomName", this.customName);
            }
            nbttag.setBoolean("Active", this.active);
        }
    
    public boolean isActive()
    {
    return this.active;
    }
    
    public byte getDirection()
        {
            return direction;
        }
    
    public void setDirection(byte direction)
    {
    this.direction = direction;
    this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
    }
    
    public Packet getDescriptionPacket()
        {
            NBTTagCompound nbttagcompound = new NBTTagCompound();
            this.writeToNBT(nbttagcompound);
            return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbttagcompound);
        }
    
        public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
        {
            this.readFromNBT(pkt.func_148857_g());
            this.worldObj.markBlockRangeForRenderUpdate(this.xCoord, this.yCoord, this.zCoord, this.xCoord, this.yCoord, this.zCoord);
        }
    
       @Override
    public int getSizeInventory()
    {
    return inventory.length;
    }
    
    public ItemStack getStackInSlot(int par1)
    {
    return this.inventory[par1];
    }
    
       @Override
        public ItemStack decrStackSize(int slotId, int quantity)
        {
      if (this.inventory[slotId] != null)
           {
               ItemStack itemstack;
    
               if (this.inventory[slotId].stackSize <= quantity)
               {
                   itemstack = this.inventory[slotId];
                   this.inventory[slotId] = null;
                   return itemstack;
               }
               else
               {
                   itemstack = this.inventory[slotId].splitStack(quantity);
    
                   if (this.inventory[slotId].stackSize == 0)
                   {
                       this.inventory[slotId] = null;
                   }
    
                   return itemstack;
               }
           }
           else
           {
               return null;
           }
        }
    
    @Override
    public ItemStack getStackInSlotOnClosing(int slotId)
    {
            if (this.inventory[slotId] != null)
            {
                ItemStack itemstack = this.inventory[slotId];
                this.inventory[slotId] = null;
                return itemstack;
            }
            else
            {
                return null;
            }
    }
    
    @Override
    public void setInventorySlotContents(int slotId, ItemStack stack)
    {
            this.inventory[slotId] = stack;
    
            if (stack != null && stack.stackSize > this.getInventoryStackLimit())
            {
                stack.stackSize = this.getInventoryStackLimit();
            }
    
            this.markDirty();
    }
    
    @Override
    public String getInventoryName()
    {
    return this.hasCustomInventoryName() ? this.customName : "container.compressor";
    }
    
    @Override
    public boolean hasCustomInventoryName()
    {
            return this.customName != null && this.customName.length() > 0;
    }
    
       public void setCustomGuiName(String name)
       {
           this.customName = name;
       }
    
       @Override
    public int getInventoryStackLimit()
    {
    return 64;
    }
    
       @Override
    public boolean isUseableByPlayer(EntityPlayer player)
    {
    return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64;
    }
    
       @Override
       public boolean isItemValidForSlot(int par1, ItemStack par2ItemStack)
       {
           return par1 == 2 ? false : (par1 == 1 ? isItemFuel(par2ItemStack) : true);
       }
    
       @Override
       public void openInventory()
       {
       }
    
       @Override
       public void closeInventory() 
       {
       }
    
       @SideOnly(Side.CLIENT)
       public int getCompressProgressScaled(int speed)
       {
           return this.compressorResultCompressTime * speed/ this.maxCompressTime;
       }
    
       @SideOnly(Side.CLIENT)
       public int getCompressTimeRemainingScaled(int p_145955_1_)
       {
           if (this.currentItemPowerTime == 0)
           {
               this.currentItemPowerTime = this.maxCompressTime;
           }
    
           return this.compressorCompressTime * p_145955_1_ / this.currentItemPowerTime;
       }
    
       public boolean isCompressing()
       {
           return this.compressorCompressTime > 0;
       }
    
       public void updateEntity()
       {
      this.active = this.compressorCompressTime > 0;
      if(this.getBlockMetadata() == 0)
           {
          this.maxCompressTime = 200;
          this.powerMultiplier = 1.0F;
           }
           else if(this.getBlockMetadata() == 1)
           {
          this.maxCompressTime = 190;
          this.powerMultiplier = 1.1F;
           }
           else if(this.getBlockMetadata() == 2)
           {
          this.maxCompressTime = 150;
          this.powerMultiplier = 1.3F;
           }
    
           boolean flag1 = false;
    
           if (this.compressorCompressTime > 0)
           {
               –this.compressorCompressTime;
           }
    
           if (!this.worldObj.isRemote)
           {
               if (this.compressorCompressTime == 0 && this.canCompress())
               {
                   this.currentItemPowerTime = this.compressorCompressTime = getItemPowerTime(this.inventory[1]);
    
                   if (this.compressorCompressTime > 0)
                   {
                       flag1 = true;
    
                       if (this.inventory[1] != null)
                       {
                           –this.inventory[1].stackSize;
    
                           if (this.inventory[1].stackSize == 0)
                           {
                               this.inventory[1] = inventory[1].getItem().getContainerItem(inventory[1]);
                           }
                       }
                   }
               }
    
               if (this.isCompressing() && this.canCompress())
               {
                   ++this.compressorResultCompressTime;
    
                   if (this.compressorResultCompressTime == maxCompressTime)
                   {
                       this.compressorResultCompressTime = 0;
                       this.compressItem();
                       flag1 = true;
                   }
               }
               else
               {
                   this.compressorResultCompressTime = 0;
               }
    
               if(active != this.compressorCompressTime > 0)
    {
    flag1 = true;
    this.active = this.compressorCompressTime > 0;
    if(!this.worldObj.isRemote)
    {
    this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
    }
    }
           }
    
           if (flag1)
           {
               this.markDirty();
           }
       }
    
       private boolean canCompress()
       {
           if (this.inventory[0] == null)
           {
               return false;
           }
           else
           {
               ItemStack itemstack = CompressorRecipes.compressing().getCompressingResult(this.inventory[0]);
               if (itemstack == null) return false;
               if (this.inventory[2] == null) return true;
               if (!this.inventory[2].isItemEqual(itemstack)) return false;
               int result = inventory[2].stackSize + itemstack.stackSize;
               return result <= getInventoryStackLimit() && result <= this.inventory[2].getMaxStackSize(); //Forge BugFix: Make it respect stack sizes properly.
           }
       }
    
       public void compressItem()
       {
           if (this.canCompress())
           {
               ItemStack itemstack = CompressorRecipes.compressing().getCompressingResult(this.inventory[0]);
    
               if (this.inventory[2] == null)
               {
                   this.inventory[2] = itemstack.copy();
               }
               else if (this.inventory[2].getItem() == itemstack.getItem())
               {
                   this.inventory[2].stackSize += itemstack.stackSize; // Forge BugFix: Results may have multiple items
               }
    
               –this.inventory[0].stackSize;
    
               if (this.inventory[0].stackSize <= 0)
               {
                   this.inventory[0] = null;
               }
           }
       }
    
       public static int getItemPowerTime(ItemStack p_145952_0_)
       {
           if (p_145952_0_ == null)
           {
               return 0;
           }
           else
           {
               Item item = p_145952_0_.getItem();
    
               if (item instanceof ItemBlock && Block.getBlockFromItem(item) != Blocks.air)
               {
                   Block block = Block.getBlockFromItem(item);
    
                   if (block == Blocks.wooden_slab)
                   {
                       return Integer.valueOf((int) (150 * powerMultiplier));
                   }
    
                   if (block.getMaterial() == Material.wood)
                   {
                       return Integer.valueOf((int) (300 * powerMultiplier));
                   }
    
                   if (block == Blocks.coal_block)
                   {
                       return Integer.valueOf((int) (16000 * powerMultiplier));
                   }
               }
    
               if (item instanceof ItemTool && ((ItemTool)item).getToolMaterialName().equals("WOOD")) return Integer.valueOf((int) (200 * powerMultiplier));
               if (item instanceof ItemSword && ((ItemSword)item).getToolMaterialName().equals("WOOD")) return Integer.valueOf((int) (200 * powerMultiplier));
               if (item instanceof ItemHoe && ((ItemHoe)item).getToolMaterialName().equals("WOOD")) return Integer.valueOf((int) (200 * powerMultiplier));
               if (item == Items.stick) return Integer.valueOf((int) (100 * powerMultiplier));
               if (item == Items.coal) return Integer.valueOf((int) (1600 * powerMultiplier));
               if (item == Items.lava_bucket) return Integer.valueOf((int) (20000 * powerMultiplier));
               if (item == Item.getItemFromBlock(Blocks.sapling)) return Integer.valueOf((int) (100 * powerMultiplier));
               if (item == Items.blaze_rod) return Integer.valueOf((int) (2400 * powerMultiplier));
               return GameRegistry.getFuelValue(p_145952_0_);
           }
       }
    
       public static boolean isItemFuel(ItemStack p_145954_0_)
       {
           return getItemPowerTime(p_145954_0_) > 0;
       }
    
       public boolean canInsertItem(int par1, ItemStack par2ItemStack, int par3)
       {
           return this.isItemValidForSlot(par1, par2ItemStack);
       }
    
       public boolean canExtractItem(int par1, ItemStack par2ItemStack, int par3)
       {
           return par3 != 0 || par1 != 1 || par2ItemStack.getItem() == Items.bucket;
       }
    }
    
    

    Basic.java :

    
    // Tile Entity
    
    GameRegistry.registerTileEntity(TileEntityCrusher.class, "neworesbasic:crusher");
    GameRegistry.registerTileEntity(TileEntityCompressor.class, "neworesbasic:compressor");
    
    // Gui Handler
    NetworkRegistry.INSTANCE.registerGuiHandler(this.instance, new GuiHandlerCrusher());
    NetworkRegistry.INSTANCE.registerGuiHandler(this.instance, new GuiHandlerCompressor());
    ```</todo>


  • Je t'aide une fois que tu as mis le code formater.


  • Administrateurs

    NetworkRegistry.INSTANCE.registerGuiHandler(this.instance, new GuiHandlerCrusher());
    NetworkRegistry.INSTANCE.registerGuiHandler(this.instance, new GuiHandlerCompressor());

    Ça fait la deuxième fois que je vois la même connerie u_U
    [size=xx-largeUN MOD = UN GUI HANDLER]

    Ce n'est pourtant pas compliqué, il suffit de mettre des conditions dans le gui handler pour chaque gui / container …



  • Ah pardon… Sujet résolu.