[1.7.10]Печка как добавить правильно слот и использовать

Код:
 private Tex_t_Entity_01 tileFurnace;
    private int lastCookTime;
    private int lastBurnTime;
    private int lastItemBurnTime;

    public Container_mex_01(InventoryPlayer player, Tex_t_Entity_01 tileEntityFurnace){
        this.tileFurnace = tileEntityFurnace;
        this.addSlotToContainer(new Slot(tileEntityFurnace, 0, 44, 21));
        this.addSlotToContainer(new Slot(tileEntityFurnace, 1, 54, 56));
        this.addSlotToContainer(new SlotFurnace(player.player, tileEntityFurnace, 2, 122, 21));
        int i;

        for(i = 0; i < 3; ++i){
            for(int j = 0; j < 9; ++j){
                this.addSlotToContainer(new Slot(player, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
            }
        }

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

    public void addCraftingToCrafters(ICrafting craft){
        super.addCraftingToCrafters(craft);
        craft.sendProgressBarUpdate(this, 0, this.tileFurnace.furnaceCookTime);
        craft.sendProgressBarUpdate(this, 1, this.tileFurnace.furnaceBurnTime);
        craft.sendProgressBarUpdate(this, 2, this.tileFurnace.currentBurnTime);
    }

    public void detectAndSendChanges(){
        super.detectAndSendChanges();
        for(int i = 0; i < this.crafters.size(); ++i){
            ICrafting craft = (ICrafting) this.crafters.get(i);

            if(this.lastCookTime != this.tileFurnace.furnaceCookTime){
                craft.sendProgressBarUpdate(this, 0, this.tileFurnace.furnaceCookTime);
            }

            if(this.lastBurnTime != this.tileFurnace.furnaceBurnTime){
                craft.sendProgressBarUpdate(this, 1, this.tileFurnace.furnaceBurnTime);
            }

            if(this.lastItemBurnTime != this.tileFurnace.currentBurnTime){
                craft.sendProgressBarUpdate(this, 2, this.tileFurnace.currentBurnTime);
            }
        }

        this.lastBurnTime = this.tileFurnace.furnaceBurnTime;
        this.lastCookTime = this.tileFurnace.furnaceCookTime;
        this.lastItemBurnTime = this.tileFurnace.currentBurnTime;
    }

    @SideOnly(Side.CLIENT)
    public void updateProgressBar(int par1, int par2){
        if(par1 == 0){
            this.tileFurnace.furnaceCookTime = par2;
        }

        if(par1 == 1){
            this.tileFurnace.furnaceBurnTime = par2;
        }

        if(par1 == 2){
            this.tileFurnace.currentBurnTime = par2;
        }
    }

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

    public ItemStack transferStackInSlot(EntityPlayer player, int par2){
        ItemStack itemstack = null;
        Slot slot = (Slot) this.inventorySlots.get(par2);

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

            if(par2 == 2){
                if(!this.mergeItemStack(itemstack1, 3, 39, true)){
                    return null;
                }
                slot.onSlotChange(itemstack1, itemstack);
            }else if(par2 != 1 && par2 != 0){
                if(Tex_smelt.smelting().getSmeltingResult(itemstack1) != null){
                    if(!this.mergeItemStack(itemstack1, 0, 1, false)){
                        return null;
                    }
                }else if(Tex_t_Entity_01.isItemFuel(itemstack1)){
                    if(!this.mergeItemStack(itemstack1, 1, 2, false)){
                        return null;
                    }
                }else if(par2 >=3 && par2 < 30){
                    if(!this.mergeItemStack(itemstack1, 30, 39, false)){
                        return null;
                    }
                }else if(par2 >= 30 && par2 < 39 && !this.mergeItemStack(itemstack1, 3, 30, false)){
                    return null;
                }
            }else if(!this.mergeItemStack(itemstack1, 3, 39, false)){
                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;
    }
контейнер печки.
Пробовал довить слот
Код:
this.addSlotToContainer(new Slot(tileEntityFurnace, 3, 65, 21));
Крашится при клике на печку это значит что что-то делаю не так.
 
Код:
public Container_mex_01(InventoryPlayer player, Tex_t_Entity_01 tileEntityFurnace){
        this.tileFurnace = tileEntityFurnace;
if (tileEntityFurnace != null && tileEntityFurnace instanceof IInventory) {
IInventory inventoryFurnace = (IInventory)tileEntityFurnace;
        this.addSlotToContainer(new Slot(inventoryFurnace, 0, 44, 21));
        this.addSlotToContainer(new Slot(inventoryFurnace, 1, 54, 56));
        this.addSlotToContainer(new SlotFurnace(player.player, inventoryFurnace, 2, 122, 21));
}
...
[merge_posts_bbcode]Добавлено: 23.01.2016 19:16:27[/merge_posts_bbcode]

Покажи что за краш у тебя.
 
Код:
---- Minecraft Crash Report ----
// I blame Dinnerbone.

Time: 23.01.16 16:11
Description: Rendering screen

java.lang.ArrayIndexOutOfBoundsException: 4
    at ru.redstorm.zero.mods.tile_entity.Tex_t_Entity_01.getStackInSlot(Tex_t_Entity_01.java:51)
    at net.minecraft.inventory.Slot.getStack(Slot.java:88)
    at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:219)
    at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114)
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1068)
    at net.minecraft.client.Minecraft.run(Minecraft.java:962)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)


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

-- Head --
Stacktrace:
    at ru.redstorm.zero.mods.tile_entity.Tex_t_Entity_01.getStackInSlot(Tex_t_Entity_01.java:51)
    at net.minecraft.inventory.Slot.getStack(Slot.java:88)
    at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:219)
    at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114)

-- Screen render details --
Details:
    Screen name: ru.redstorm.zero.mods.Gui.Gui_mex_01
    Mouse location: Scaled: (213, 119). Absolute: (427, 240)
    Screen size: Scaled: (427, 240). Absolute: (854, 480). Scale factor of 2

-- Affected level --
Details:
    Level name: MpServer
    All players: 1 total; [EntityClientPlayerMP['Player250'/239, l='MpServer', x=666,47, y=68,62, z=587,87]]
    Chunk stats: MultiplayerChunkCache: 205, 205
    Level seed: 0
    Level generator: ID 00 - default, ver 1. Features enabled: false
    Level generator options: 
    Level spawn location: World: (832,64,446), Chunk: (at 0,4,14 in 52,27; contains blocks 832,0,432 to 847,255,447), Region: (1,0; contains chunks 32,0 to 63,31, blocks 512,0,0 to 1023,255,511)
    Level time: 44056 game time, 44056 day time
    Level dimension: 0
    Level storage version: 0x00000 - Unknown?
    Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
    Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
    Forced entities: 16 total; [EntityEnderman['Эндермен'/258, l='MpServer', x=727,38, y=69,00, z=539,13], EntityZombie['Зомби'/250, l='MpServer', x=727,50, y=67,00, z=544,50], EntityCreeper['Крипер'/248, l='MpServer', x=673,50, y=67,00, z=518,50], EntityBat['Летучая мышь'/321, l='MpServer', x=725,56, y=61,37, z=626,02], EntitySpider['Паук'/249, l='MpServer', x=607,53, y=70,00, z=619,81], EntityCreeper['Крипер'/296, l='MpServer', x=592,78, y=76,00, z=543,88], EntityCreeper['Крипер'/246, l='MpServer', x=668,25, y=60,00, z=627,53], EntitySkeleton['Скелет'/297, l='MpServer', x=689,53, y=63,00, z=512,00], EntitySkeleton['Скелет'/247, l='MpServer', x=650,97, y=68,00, z=516,50], EntityClientPlayerMP['Player250'/239, l='MpServer', x=666,47, y=68,62, z=587,87], EntitySpider['Паук'/244, l='MpServer', x=632,41, y=69,00, z=574,25], EntityBat['Летучая мышь'/245, l='MpServer', x=692,79, y=39,00, z=600,41], EntityBat['Летучая мышь'/242, l='MpServer', x=667,16, y=51,10, z=618,84], EntityCreeper['Крипер'/243, l='MpServer', x=668,25, y=60,00, z=623,06], EntitySkeleton['Скелет'/240, l='MpServer', x=662,22, y=69,00, z=582,16], EntityWitch['Ведьма'/241, l='MpServer', x=630,50, y=69,00, z=578,50]]
    Retry entities: 0 total; []
    Server brand: fml,forge
    Server type: Integrated singleplayer server
Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
    at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2567)
    at net.minecraft.client.Minecraft.run(Minecraft.java:983)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

-- 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: 1774447864 bytes (1692 MB) / 2112618496 bytes (2014 MB) up to 2112618496 bytes (2014 MB)
    JVM Flags: 3 total; -Xincgc -Xmx2048M -Xms2048M
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
    FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 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.1448-1.7.10.jar) 
    UCHIJAAAA    Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar) 
    UCHIJAAAA    zero{0.1} [Zero] (Forge 1.7.10) 
    GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.5.13416 Compatibility Profile Context 15.300.1025.1001' Renderer: 'AMD Radeon R7 200 Series'
    Launched Version: 1.7.10
    LWJGL: 2.9.1
    OpenGL: AMD Radeon R7 200 Series GL version 4.5.13416 Compatibility Profile Context 15.300.1025.1001, ATI Technologies Inc.
    GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

    Is Modded: Definitely; Client brand changed to 'fml,forge'
    Type: Client (map_client.txt)
    Resource Packs: []
    Current Language: Русский (Россия)
    Profiler Position: N/A (disabled)
    Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    Anisotropic Filtering: Off (1)
 
Судя по ошибке - в пакете ru.redstorm.zero.mods.tile_entity, в классе Tex_t_Entity_01 в методе getStackInSlot идёт возврат неправильного размера массива (строка №51). Проверь, какой размер твоего инвентаря, скорее всего, он у тебя меньше, чем 4.
 
Назад
Сверху