не открывается гуи 1.7.10

Не открывается гуи, все делал по уроку http://www.minecraftforge.net/wiki/Containers_and_GUIs

ObsidianForge:
Код:
package assets.armorness.src.blocks;

import java.util.Random;

import assets.armorness.src.ModInfo;
import assets.armorness.src.armorness;
import assets.armorness.src.tileentity.TileEntityObsidianForge;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;

public class ObsidianForge extends Block{

    @SideOnly(Side.CLIENT)
    
    protected IIcon ObsidianForgeFront;
    protected IIcon ObsidianForgeSide;
    protected IIcon ObsidianForgeTop;
    
    public ObsidianForge() {
        super(Material.rock);
        this.setCreativeTab(armorness.armornesstab);
        this.setHardness(2.0F);
        this.setBlockTextureName(ModInfo.MODID + ":ObsidianForge");
        
        }
    
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_)
    {
        TileEntity tileEntity = world.getTileEntity(x, y, z);
        if (tileEntity == null || player.isSneaking()) {
                return false;
        }
        if(!world.isRemote){
        player.openGui(armorness.instance, 0, world, 0, 0, 0);
        }
        return true;
    }
    
    @Override
    public void breakBlock(World world, int x, int y, int z, Block par5, int par6) {
            dropItems(world, x, y, z);
            super.breakBlock(world, x, y, z, par5, par6);
    }

    private void dropItems(World world, int x, int y, int z){
            Random rand = new Random();

            TileEntity tileEntity = world.getTileEntity(x, y, z);
            if (!(tileEntity instanceof IInventory)) {
                    return;
            }
            IInventory inventory = (IInventory) tileEntity;

            for (int i = 0; i < inventory.getSizeInventory(); i++) {
                    ItemStack item = inventory.getStackInSlot(i);

                    if (item != null && item.stackSize > 0) {
                            float rx = rand.nextFloat() * 0.8F + 0.1F;
                            float ry = rand.nextFloat() * 0.8F + 0.1F;
                            float rz = rand.nextFloat() * 0.8F + 0.1F;

                            EntityItem entityItem = new EntityItem(world,
                                            x + rx, y + ry, z + rz,
                                            new ItemStack(item.getItem(), item.stackSize, item.getItemDamage()));

                            if (item.hasTagCompound()) {
                                    entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy());
                            }

                            float factor = 0.05F;
                            entityItem.motionX = rand.nextGaussian() * factor;
                            entityItem.motionY = rand.nextGaussian() * factor + 0.2F;
                            entityItem.motionZ = rand.nextGaussian() * factor;
                            world.spawnEntityInWorld(entityItem);
                            item.stackSize = 0;
                    }
            }
    }

    public TileEntity createNewTileEntity(World world) {
            return new TileEntityObsidianForge();
    }

    @SideOnly(Side.CLIENT)
    @Override
    public void registerBlockIcons(IIconRegister par1IconRegister)
    {
        ObsidianForgeFront = par1IconRegister.registerIcon(ModInfo.MODID + ":" + "ObsidianForge_front");
        ObsidianForgeSide = par1IconRegister.registerIcon(ModInfo.MODID + ":" + "ObsidianForge_side");
        ObsidianForgeTop = par1IconRegister.registerIcon(ModInfo.MODID + ":" + "ObsidianForge_top");
    }
    
    @SideOnly(Side.CLIENT)
    @Override
    public IIcon getIcon(int par1int, int par2int)
    {
        if (par1int == 0 || par1int == 1) { return ObsidianForgeTop; }
        if (par2int == 2 && par1int == 2) { return ObsidianForgeFront; }
        if (par2int == 3 && par1int == 5) { return ObsidianForgeFront; }
        if (par2int == 0 && par1int == 3) { return ObsidianForgeFront; }
        if (par2int == 1 && par1int == 4) { return ObsidianForgeFront; }
        return ObsidianForgeSide;
    }
    @Override
    public void onBlockPlacedBy(World par1World, int par2int, int par3int, int par4int, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack)
    {
        int i = MathHelper.floor_double((double)(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
        par1World.setBlockMetadataWithNotify(par2int, par3int, par4int, i, 2);
    }
}
TileEntityObsidianForge:
Код:
package assets.armorness.src.tileentity;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;

public class TileEntityObsidianForge extends TileEntity implements IInventory{

    private ItemStack [] inv;
    
    public TileEntityObsidianForge(){
        inv = new ItemStack[1];
    }
    @Override
    public int getSizeInventory() {
        // TODO Auto-generated method stub
        return inv.length;
    }

    @Override
    public ItemStack getStackInSlot(int slot) {
        // TODO Auto-generated method stub
        return inv[slot];
    }

    @Override
    public ItemStack decrStackSize(int slot, int amt) {
        // TODO Auto-generated method stub
           ItemStack stack = getStackInSlot(slot);
           if (stack != null) {
                   if (stack.stackSize <= amt) {
                           setInventorySlotContents(slot, null);
                   } else {
                           stack = stack.splitStack(amt);
                           if (stack.stackSize == 0) {
                                   setInventorySlotContents(slot, null);
                           }
                   }
           }
           return stack;
    }
    @Override
    public ItemStack getStackInSlotOnClosing(int slot) {
            ItemStack stack = getStackInSlot(slot);
            if (stack != null) {
                    setInventorySlotContents(slot, null);
            }
            return stack;
    }

    @Override
    public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public String getInventoryName() {
        // TODO Auto-generated method stub
        return "Obsidian Forge";
    }

    @Override
    public boolean hasCustomInventoryName() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public int getInventoryStackLimit() {
        // TODO Auto-generated method stub
        return 1;
    }

    @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 void openInventory() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void closeInventory() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
        // TODO Auto-generated method stub
        return false;
    }
    
     @Override
     public void writeToNBT(NBTTagCompound tagCompound) {
             super.writeToNBT(tagCompound);
                            
             NBTTagList itemList = new NBTTagList();
             for (int i = 0; i < inv.length; i++) {
                     ItemStack stack = inv[i];
                     if (stack != null) {
                             NBTTagCompound tag = new NBTTagCompound();
                             tag.setByte("Slot", (byte) i);
                             stack.writeToNBT(tag);
                             itemList.appendTag(tag);
                     }
             }
             tagCompound.setTag("Inventory", itemList);
     }

}
GuiObsidianForge:
Код:
package assets.armorness.src;

import org.lwjgl.opengl.GL11;

import assets.armorness.src.items.ObsidianCrafter;
import assets.armorness.src.tileentity.TileEntityObsidianForge;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;

public class GuiObsidianForge extends GuiContainer {
    
    private static final ResourceLocation backgroundResourceLocation = new ResourceLocation("textures/gui/container/crafting_table.png");
    
    public GuiObsidianForge(InventoryPlayer playerInventory, TileEntityObsidianForge world) {
        super(new ContainerObsidianForge(playerInventory, world));
    }

    @Override
    protected void drawGuiContainerForegroundLayer(int par1, int par2) {
        this.fontRendererObj.drawString(StatCollector.translateToLocal("Obsidian Forge"), 8, 6, 4210752);
        this.fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
    }
    
    @Override
    protected void drawGuiContainerBackgroundLayer(float arg0, int arg1, int arg2) {
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        this.mc.renderEngine.bindTexture(backgroundResourceLocation);
        
        int j = (this.width - this.xSize) / 2;
        int k = (this.height - this.ySize) / 2;
        
        this.drawTexturedModalRect(j, k, 0, 0, this.xSize, this.ySize);
    }
}
ContainerObsidianForge:
Код:
package assets.armorness.src;

import assets.armorness.src.tileentity.TileEntityObsidianForge;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class ContainerObsidianForge extends Container{


    protected TileEntityObsidianForge  tileEntity;

    public ContainerObsidianForge (InventoryPlayer inventoryPlayer, TileEntityObsidianForge  te){
            tileEntity = te;

            //the Slot constructor takes the IInventory and the slot number in that it binds to
            //and the x-y coordinates it resides on-screen
            for (int i = 0; i < 3; i++) {
                    for (int j = 0; j < 3; j++) {
                            addSlotToContainer(new Slot(tileEntity, j + i * 3, 62 + j * 18, 17 + i * 18));
                    }
            }

            //commonly used vanilla code that adds the player's inventory
            bindPlayerInventory(inventoryPlayer);
    }

    @Override
    public boolean canInteractWith(EntityPlayer player) {
            return tileEntity.isUseableByPlayer(player);
    }


    protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) {
            for (int i = 0; i < 3; i++) {
                    for (int j = 0; j < 9; j++) {
                            addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9,
                                            8 + j * 18, 84 + i * 18));
                    }
            }

            for (int i = 0; i < 9; i++) {
                    addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142));
            }
    }

    @Override
    public ItemStack transferStackInSlot(EntityPlayer player, int slot) {
            ItemStack stack = null;
            Slot slotObject = (Slot) inventorySlots.get(slot);

            //null checks and checks if the item can be stacked (maxStackSize > 1)
            if (slotObject != null && slotObject.getHasStack()) {
                    ItemStack stackInSlot = slotObject.getStack();
                    stack = stackInSlot.copy();

                    //merges the item into player inventory since its in the tileEntity
                    if (slot < tileEntity.getSizeInventory()) {
                            if (!this.mergeItemStack(stackInSlot, tileEntity.getSizeInventory(), 36+tileEntity.getSizeInventory(), true)) {
                                    return null;
                            }
                    }
                    //places it into the tileEntity is possible since its in the player inventory
                    else if (!this.mergeItemStack(stackInSlot, 0, tileEntity.getSizeInventory(), false)) {
                            return null;
                    }

                    if (stackInSlot.stackSize == 0) {
                            slotObject.putStack(null);
                    } else {
                            slotObject.onSlotChanged();
                    }

                    if (stackInSlot.stackSize == stack.stackSize) {
                            return null;
                    }
                    slotObject.onPickupFromSlot(player, stackInSlot);
            }
            return stack;
    }
}
CommonProxy:
Код:
package assets.armorness.src;

import assets.armorness.src.tileentity.TileEntityObsidianForge;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.IGuiHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;

public class CommonProxy implements IGuiHandler{

    public void preInit(FMLPreInitializationEvent e) {

    }

    public void init(FMLInitializationEvent e) {

    }

    public void postInit(FMLPostInitializationEvent e) {

    }
    
    @Override
    public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
        if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == armorness.ObsidianCrafter)
            return new GuiObsidianCrafter(player.inventory, world);
        
        TileEntity tileEntity = world.getTileEntity(x, y, z);
        if(tileEntity instanceof TileEntityObsidianForge){
                return new GuiObsidianForge(player.inventory, (TileEntityObsidianForge) tileEntity);
        }
        
        FMLLog.info("No GUI to show");
        return null;
    }

    @Override
    public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
        if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == armorness.ObsidianCrafter)
            return new ContainerObsidianCrafter(player.inventory, world);
        
        TileEntity tileEntity = world.getTileEntity(x, y, z);
        if(tileEntity instanceof TileEntityObsidianForge){
                return new ContainerObsidianForge(player.inventory, (TileEntityObsidianForge) tileEntity);
        }
        
        FMLLog.info("No GUI to show");
        
        return null;
    }
}
P.S. делаю в первый раз, толком незнаю.

[merge_posts_bbcode]Добавлено: 19.09.2015 23:13:42[/merge_posts_bbcode]

Help
 
Код:
 public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_)
    {
        TileEntity tileEntity = world.getTileEntity(x, y, z);
        if (tileEntity == null || player.isSneaking()) {
                return false;
        }
        if(!world.isRemote){
        player.openGui(armorness.instance, 0, world, x, y, z);
        }
        return true;
    }
Вот так будет работать
 
Сейчас попробую
[merge_posts_bbcode]Добавлено: 19.09.2015 23:17:31[/merge_posts_bbcode]

не открывается, кстати в чем различие?
 
В том,что ты передаёшь xyz=[0,0,0],потом по 0 0 0 получается тайл,которого в координатах 0 0 0 нету
 
все равно не открывается
[merge_posts_bbcode]Добавлено: 19.09.2015 23:20:09[/merge_posts_bbcode]

у меня 2 гуи, может им айди какнибудь привинтить?

[merge_posts_bbcode]Добавлено: 19.09.2015 23:20:32[/merge_posts_bbcode]

первый на айтем, а второй с блоком вообще незнаю что делать
 
вообще то айди надо привинчивать.Поищешь темку или тебе дать код?
 
Код:
public class GuiHandler implements IGuiHandler {

    @Override
    public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        switch (ID) {
            case 2:
                return new ContainerStorage(player, x, y, z);
            default:
                return null;
        }
    }

    @Override
    public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        switch (ID) {
            case 2:
                return new GuiStorage(player, x, y, z);
            default:
                return null;
        }
    }
}
Открываю так
player.openGui(instance,w,x,y,z);
 
то есть тут id = 2?
[merge_posts_bbcode]Добавлено: 19.09.2015 23:30:42[/merge_posts_bbcode]

Код:
 case 2:
 
Так сделал, открываю так  player.openGui(armorness.instance, 2, world, x, y, z);

 @Override
    public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
        if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == armorness.ObsidianCrafter)
            return new GuiObsidianCrafter(player.inventory, world);
        switch (id) {
        case 2:
        TileEntity tileEntity = world.getTileEntity(x, y, z);
        if(tileEntity instanceof TileEntityObsidianForge){
                return new GuiObsidianForge(player.inventory, (TileEntityObsidianForge) tileEntity);
                }
        default:
            return null;
        }
    }

    @Override
    public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
        if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == armorness.ObsidianCrafter)
            return new ContainerObsidianCrafter(player.inventory, world);
       
        switch (id) {
        case 2:
        TileEntity tileEntity = world.getTileEntity(x, y, z);
        if(tileEntity instanceof TileEntityObsidianForge){
                return new ContainerObsidianForge(player.inventory, (TileEntityObsidianForge) tileEntity);
        }
        default:
            return null;
        }
    }
[merge_posts_bbcode]Добавлено: 19.09.2015 23:33:32[/merge_posts_bbcode]

не получается
 
Код:
        if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == armorness.ObsidianCrafter)
Оно хоть проходит?
 
это работает
[merge_posts_bbcode]Добавлено: 19.09.2015 23:40:27[/merge_posts_bbcode]

сделал так, первый открывается, а второй нет:

@Override
    public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
        switch (id) {
        case 1:
        if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == armorness.ObsidianCrafter)
            return new GuiObsidianCrafter(player.inventory, world);
        case 2:
        TileEntity tileEntity = world.getTileEntity(x, y, z);
        if(tileEntity instanceof TileEntityObsidianForge){
                return new GuiObsidianForge(player.inventory, (TileEntityObsidianForge) tileEntity);
                }
        default:
            return null;
        }
    }

    @Override
    public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
        switch (id) {
        case 1:
        if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == armorness.ObsidianCrafter)
            return new ContainerObsidianCrafter(player.inventory, world);
        case 2:
        TileEntity tileEntity = world.getTileEntity(x, y, z);
        if(tileEntity instanceof TileEntityObsidianForge){
                return new ContainerObsidianForge(player.inventory, (TileEntityObsidianForge) tileEntity);
        }
        default:
            return null;
        }
    }
}
 
public class ObsidianForge extends Block{

Сделай extends BlockContainer и в предлагаемом тебе методе вставь твой тайл
 
во наконец то хоть что то, сейчас вылетает, пишет:
Код:
---- Minecraft Crash Report ----
// This doesn't make any sense!

Time: 19.09.15 21:43
Description: Ticking memory connection

java.lang.ArrayIndexOutOfBoundsException: 1
    at assets.armorness.src.tileentity.TileEntityObsidianForge.getStackInSlot(TileEntityObsidianForge.java:26)
    at net.minecraft.inventory.Slot.getStack(Slot.java:88)
    at net.minecraft.inventory.Container.getInventory(Container.java:67)
    at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
    at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
    at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
    at assets.armorness.src.blocks.ObsidianForge.onBlockActivated(ObsidianForge.java:48)
    at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
    at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
    at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
    at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
    at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
    at assets.armorness.src.tileentity.TileEntityObsidianForge.getStackInSlot(TileEntityObsidianForge.java:26)
    at net.minecraft.inventory.Slot.getStack(Slot.java:88)
    at net.minecraft.inventory.Container.getInventory(Container.java:67)
    at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
    at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
    at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
    at assets.armorness.src.blocks.ObsidianForge.onBlockActivated(ObsidianForge.java:48)
    at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
    at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
    at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
    at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)

-- Ticking connection --
Details:
    Connection: net.minecraft.network.NetworkManager@da163e0
Stacktrace:
    at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)

-- System Details --
Details:
    Minecraft Version: 1.7.10
    Operating System: Windows 8.1 (amd64) version 6.3
    Java Version: 1.7.0_79, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 685255664 bytes (653 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1492 4 mods loaded, 4 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    UCHIJAAAA    mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
    UCHIJAAAA    FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1492-1.7.10.jar) 
    UCHIJAAAA    Forge{10.13.4.1492} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1492-1.7.10.jar) 
    UCHIJAAAA    armorness{7.5} [armorness mod] (bin) 
    GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
    Profiler Position: N/A (disabled)
    Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    Player Count: 1 / 8; [EntityPlayerMP['Player218'/230, l='New World', x=-1827,02, y=4,00, z=463,33]]
    Type: Integrated Server (map_client.txt)
    Is Modded: Definitely; Client brand changed to 'fml,forge'
 
addSlotToContainer(new Slot(tileEntity, j + i * 3, 62 + j * 18, 17 + i * 18));

> j + i * 3
А в IInventory у тебя размер максимума (в массиве)указан 1
 
мне нужен 1 слот, только один, я поменял все на ноль, но предметы теперь исчезают
 
Код:
public class Inventory implements IInventory {

    private final ItemStack[] itemStacks;

    public InventoryItem(ItemStack item) {
            itemStacks = new ItemStack[numberOfSlots];
    }

    @Override
    public int getSizeInventory() {
        return item.getMaxSlots();
    }

    @Override
    public ItemStack getStackInSlot(int p_70301_1_) {
        return itemStacks[p_70301_1_];
    }

    @Override
    public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) {
        ItemStack stack = this.getStackInSlot(p_70298_1_);
        if (stack != null) {
            if (stack.stackSize <= p_70298_2_) {
                setInventorySlotContents(p_70298_1_, (ItemStack) null);
            } else {
                stack = stack.splitStack(p_70298_2_);
                if (stack.stackSize == 0) {
                    setInventorySlotContents(p_70298_1_, (ItemStack) null);
                }
            }
        }
        markDirty();
        return stack;
    }

    @Override
    public ItemStack getStackInSlotOnClosing(int p_70304_1_) {
        if (itemStacks[p_70304_1_] != null) {
            ItemStack itemstack = itemStacks[p_70304_1_];
            itemStacks[p_70304_1_] = null;
            return itemstack;
        } else {
            return null;
        }
    }

    @Override
    public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) {
        itemStacks[p_70299_1_] = p_70299_2_;
        if (p_70299_2_ != null && p_70299_2_.stackSize > this.getInventoryStackLimit()) {
            p_70299_2_.stackSize = getInventoryStackLimit();
        }
        markDirty();
    }

    @Override
    public String getInventoryName() {
        return "";
    }

    @Override
    public boolean hasCustomInventoryName() {
        return false;
    }

    @Override
    public int getInventoryStackLimit() {
        return 64;
    }

    @Override
    public void markDirty() {
    }

    @Override
    public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
        return !p_70300_1_.isDead;
    }

    @Override
    public void openInventory() {
    }

    @Override
    public void closeInventory() {
    }

    @Override
    public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
        return false;
    }
}
 
Назад
Сверху