[1.7.10] Container shift crash

svk

1,185
3
Код:
    public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int p_82846_2_)
    {
            ItemStack itemstack = null;
            Slot slot = (Slot)this.inventorySlots.get(p_82846_2_);

            if (slot != null && slot.getHasStack())
            {
                ItemStack itemstack1 = slot.getStack();
                itemstack = itemstack1.copy();

                if (p_82846_2_ == 0)
                {
                    if (!this.mergeItemStack(itemstack1, 10, 46, true))
                    {
                        return null;
                    }

                    slot.onSlotChange(itemstack1, itemstack);
                }
                else if (p_82846_2_ >= 10 && p_82846_2_ < 37)
                {
                    if (!this.mergeItemStack(itemstack1, 37, 46, false))
                    {
                        return null;
                    }
                }
                else if (p_82846_2_ >= 37 && p_82846_2_ < 46)
                {
                    if (!this.mergeItemStack(itemstack1, 10, 37, false))
                    {
                        return null;
                    }
                }
                else if (!this.mergeItemStack(itemstack1, 10, 46, false))
                {
                    return null;
                }

                if (itemstack1.stackSize == 0)
                {
                    slot.putStack((ItemStack)null);
                }
                else
                {
                    slot.onSlotChanged();
                }

                if (itemstack1.stackSize == itemstack.stackSize)
                {
                    return null;
                }

                slot.onPickupFromSlot(p_82846_1_, itemstack1);
            }

            return itemstack;
    }
Код полный копипаст, некоторые слоты достаёт, а при некоторых вот эта ошибка:
Код:
java.lang.IndexOutOfBoundsException: Index: 44, Size: 44
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at net.minecraft.inventory.Container.mergeItemStack(Container.java:620)
    at com.svk.industrialGuns.Container.ContainerTableGunCreate.transferStackInSlot(ContainerTableGunCreate.java:91)
    at net.minecraft.inventory.Container.slotClick(Container.java:279)
    at net.minecraft.client.multiplayer.PlayerControllerMP.windowClick(PlayerControllerMP.java:478)
    at net.minecraft.client.gui.inventory.GuiContainer.handleMouseClick(GuiContainer.java:676)
    at net.minecraft.client.gui.inventory.GuiContainer.mouseClicked(GuiContainer.java:418)
    at net.minecraft.client.gui.GuiScreen.handleMouseInput(GuiScreen.java:344)
    at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:313)
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1720)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028)
    at net.minecraft.client.Minecraft.run(Minecraft.java:951)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:78)
    at GradleStart.main(GradleStart.java:45)
Помогите.
 
Код:
(ContainerTableGunCreate.java:91
Покажи 91 +-пару строк.
Индексация начинается с 0, похоже проблема в этом. Попробуй верхние значения уменьшить.

Dovakin написал(а):
Ну у тебя наверное слотов меньше 44?
их похоже как раз 44, но у последнего то индекс будет 43, а не 44
 
Твои слоты+36=все. Там вроде несколько IInventory. (Игроковский и твой)
 
Назад
Сверху