Проблема с фейк слотами в которых ItemStack'и

Версия Minecraft
1.7.10

jopi

Попрошайка
1,421
30
260
Проблема с фейк слотами в которых ItemStack'и
Итак. введу вас в курс дела, хоть проблема на 1.5.2 а я указал 1.7.10 версию мне нужен фикс на 1.7.10, на 1.5.2 я как-нибудь да переверну.
У меня есть фейк слоты(12) вот в таком гуи:
GAVNO1.png
Вы видете слот с квадратиком и рядом с ним нагрудник, они нормальные, меня больше интересуют слоты ниже которых 12 штук
После их добавления в виде IInventory после того как я туда пихаю вещи с SHIFT вещь если не может лечь в слот с квадратиком изчезает, а если может
то ложится, и если ложить с слота с квадратиком SHIFT'ом в инвентарь, она тоже пропадает(вещь).
Код Container'а.

Java:
public ContainerUpgradeArmor(InventoryPlayer inventoryplayer, TileEntityBlockUpgradeArmor tileentity) {
    super(inventoryplayer);
    this.tileentity = tileentity;
    Slot_R r = null;
    r = (Slot_R)Manager.INSTANCE.Get(tileentity.RecipesIndex).get(0);
    SlotInvConsumableIDmeta slot = new SlotInvConsumableIDmeta(r.access, tileentity, 0, 54, 29, r.getFloatIDandDamage());
    this.addSlotToContainer(slot);
    r = (Slot_R)Manager.INSTANCE.Get(tileentity.RecipesIndex).get(1);
    final SlotInvConsumableID slot1 = new SlotInvConsumableID(r.access, tileentity, 1, 112, 29, r.getFloatIDandDamage());
    this.addSlotToContainer(slot1);
    
    IInventory ModuleInv = new IInventory() {
        //Слоты
        ItemStack[] stacks = new ItemStack[12];
        ItemStack[] stacksdouble = new ItemStack[12];

        public int getSizeInventory() {
            return this.stacks.length;
        }
        //Добавлял предметы в слоты
        //которые являются апгрейдами предмета из слота 1(вид брони)
        public ItemStack getStackInSlot(int i) {
            if (Utils.isClient() && slot1.getHasStack()) {
                ItemStack item = slot1.getStack();
                NBTTagCompound n = Utils.getOrCreateNbtData(item);
                if (item.stackTagCompound != null) {
                    if((n.getInteger("amp")/500) > 0)
                    {
                        stacks[0] = new ItemStack(3295, (n.getInteger("amp")/500), 0);
                    }
                    if((n.getInteger("yc")/250) > 0)
                    {
                        stacks[1] = new ItemStack(3299, (n.getInteger("yc")/250), 0);
                    }
                    if((n.getByte("dss")) > 0)
                    {
                        stacks[2] = new ItemStack(getDSS(item), 1, 0);
                    }
                    if((n.getByte("exo")) > 0)
                    {
                        stacks[3] = new ItemStack(3293, 1, 0);
                    }
                    if((n.getByte("heb")) > 0)
                    {
                        stacks[4] = new ItemStack(3301, 1, 0);
                    }
                    if((n.getInteger("lpm")) > 0)
                    {
                        stacks[5] = new ItemStack(2906, 1, 0);
                    }
                    if((n.getInteger("lptm")) > 0)
                    {
                        stacks[6] = new ItemStack(2907, 1, 0);
                    }
                    //if((n.getInteger("cole")) > 0 || n.getInteger("cole") != (0|-1))
                    //{
                    //    stacks[7] = new ItemStack(getCOLOR(item), 1, 0);
                    //}
                    if((n.getByte("inv")) > 0)
                    {
                        stacks[7] = new ItemStack(3257, 1, 0);
                    }
                    if((n.getInteger("encoder$1")) > 0)
                    {
                        stacks[8] = new ItemStack(3327, 1, 0);
                    }
                    if((n.getInteger("lavalitres$1")) > 0)
                    {
                        stacks[9] = new ItemStack(3325, n.getInteger("lavalitres$1"), 0);
                    }
                    if((n.getInteger("shi")/100) > 0)
                    {
                        stacks[10] = new ItemStack(3297, (n.getInteger("shi")/100), 0);
                    }
                }

                return this.stacks[i];
            } else {
                return null;
            }
        }

        public int getCOLOR(ItemStack i)
        {
            NBTTagCompound n = Utils.getOrCreateNbtData(i);
            switch(n.getInteger("colo"))
            {
                case 1:
                    return 3263;
                case 2:
                    return 3265;
                case 3:
                    return 3267;
                case 4:
                    return 3269;
                case 5:
                    return 3271;
                case 6:
                    return 3273;
                case 7:
                    return 3275;
                case 8:
                    return 3277;
                case 9:
                    return 3279;
                case 10:
                    return 3281;
                case 11:
                    return 3283;
                case 12:
                    return 3285;
                case 13:
                    return 3287;
                case 14:
                    return 3289;
                case 15:
                    return 3291;
                default:
                    return 0;
            }
        }

        public int getDSS(ItemStack i)
        {
            NBTTagCompound n = Utils.getOrCreateNbtData(i);
            switch(n.getByte("dss"))
            {
                case 1:
                    return 3305;
                case 2:
                    return 3307;
                case 3:
                    return 3309;
                case 4:
                    return 3311;
                case 5:
                    return 3313;
                case 6:
                    return 3315;
                case 7:
                    return 3317;
                case 8:
                    return 3319;
                case 9:
                    return 3321;
                case 10:
                    return 3323;
                default:
                    return 0;
            }
        }

        public ItemStack decrStackSize(int i, int j) {
            return null;
        }

        public ItemStack getStackInSlotOnClosing(int i) {
            return null;
        }

        public void setInventorySlotContents(int i, ItemStack itemstack) {
        }

        public String getInvName() {
            return "inv.Moduledisabled";
        }

        public boolean isInvNameLocalized() {
            return false;
        }

        public int getInventoryStackLimit() {
            return 64;
        }

        public void onInventoryChanged() {
        }

        public boolean isUseableByPlayer(EntityPlayer entityplayer) {
            return false;
        }

        public void openChest() {
        }

        public void closeChest() {
        }

        public boolean isStackValidForSlot(int slot, ItemStack itemstack) {
            return false;
        }
    };
    int sl = 0;
    //Добавляется 12 слотов в которые нельзя ничего ложить и забирать
    for(int i = 0; i < 2; ++i) {
        for(int j = 0; j < 6; ++j) {
            this.addSlotToContainer(new SlotDisabled(ModuleInv, sl++, 39 + j * 18, 47 + i * 18));
        }
    }
    this.CalcFullInv(84);
}
 
Сверху