Проблема с getTileEntity в GuiHandler и NullPointException

Здравствуйте, товарищи мододелы! Пытаюсь сделать кастом печку на 1.7.10, в процессе чего возникла проблема. При нажатии ПКМ на нужный мне блок идёт краш с NullPointException. Причём как позже выяснилось, краш возникает тогда, когда я в своём GuiHandler`е пытаюсь вызвать getTileEntity(как я понял, он вернул null). Причём если вызвать этот самый  getTileEntity внутри класса с блоком, то он работает. Из-за этого мне напрашивается вывод, что в GuiHandler`е ему передаются не те х, у и z. Но я не понимаю как такое может быть! Я изучал кучу разных гайдов и делал, как мне казалось, аналогичные действия. Свой TileEntity я регистрировал, функционал его ещё не добавлял, пробовал ещё со стандартным майновым TileEntityFurnace, тоже не вышло. Собственно, хочу спросить, что я упустил в коде, может, мне надо добавить что-либо? Или где я ошибся?
GuiHandler:
Код:
package com.Pedrael.lootingnigger;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;

public class GuiHandler implements IGuiHandler {

    @Override
    public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        switch(ID){
        case 1:
            //TileEntityElFur t_e = (TileEntityElFur)world.getTileEntity(x, y, z);
            return new ContainerElFur(player);
        default:
            return null;
        }
    }
    
    @Override
    public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        switch(ID){
        case 1:
            //TileEntityElFur t_e = (TileEntityElFur)world.getTileEntity(x, y, z);
            return new GuiElFur(player);
        default:
            return null;
    }
    }

}

BlockElFur(мой блок печки):
Код:
package com.Pedrael.lootingnigger;

import java.util.Random;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;

public class BlockElFur extends BlockContainer {    

    @SideOnly(Side.CLIENT)
    private IIcon top;
    @SideOnly(Side.CLIENT)
    private IIcon face;
    
    private static boolean isBurning;
    private final boolean isBurning2;
    private final Random random = new Random();
    
    protected BlockElFur(boolean isActive) {
        super(Material.rock);
        this.setBlockName("ElFur");
        this.setHardness(6F);
        this.setResistance(4F);
        this.setHarvestLevel("pickaxe",2);
        this.setLightLevel(0F);
        isBurning2 = isActive;
    }
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(int side, int meta)
    {
        return side == 1 ? this.top : (side == 0 ? this.top : (meta == 2 && side == 2 ? this.face: (meta == 3 && side == 5 ? this.face : (meta == 0 && side == 3 ? this.face : (meta == 1 && side == 4 ? this.face : this.blockIcon)))));
    }
    
    public void onBlockPlacedBy(World w, int x, int y, int z, EntityLivingBase ent, ItemStack stack)
    {
        int l = MathHelper.floor_double((double)(ent.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
        w.setBlockMetadataWithNotify(x, y, z, l, 2);
    }
    
    public void registerBlockIcons(IIconRegister i)
    {
        this.face = i.registerIcon(this.isBurning2 ? "victor:case_mouth" : "victor:case_mouth");
        this.top = i.registerIcon("victor:case_front");
        this.blockIcon = i.registerIcon("victor:case");

}

@Override public boolean onBlockActivated (World w, int x, int y, int z, EntityPlayer ent, int a6, float a7, float a8, float a9)
{
    if(w.isRemote) return true;
    else
    {
        TileEntity t_e = w.getTileEntity(x,y,z);
        if (t_e instanceof TileEntityElFur)
    ent.openGui(MainClass.instance, 1, null, 1, 1, 1);
    return true;
    }
}

@Override public TileEntity createNewTileEntity(World w, int hz) {
    return new TileEntityElFur();
}

public Item getItemDropped(int par1, Random random, int par3) {
    return Item.getItemFromBlock(MainClass.ElFurOFF);
}

public Item getItem(World world, int par2, int par3, int par4) {
    return Item.getItemFromBlock(MainClass.ElFurOFF);
}

public static void updateBlockState(boolean burning, World world, int x, int y, int z) {
    int direction = world.getBlockMetadata(x, y, z);
    TileEntity tileentity = world.getTileEntity(x, y, z);
    isBurning = true;

    if (burning) {
        world.setBlock(x, y, z, MainClass.ElFurON);
    } else {
        world.setBlock(x, y, z, MainClass.ElFurOFF);
    }

    isBurning = false;
    world.setBlockMetadataWithNotify(x, y, z, direction, 2);

    if (tileentity != null) {
        tileentity.validate();
        world.setTileEntity(x, y, z, tileentity);
    }
}

Краш-лог:
Код:
---- Minecraft Crash Report ----
// There are four lights!

Time: 26.02.15 19:47
Description: Ticking memory connection

java.lang.NullPointerException: Ticking memory connection
    at com.Pedrael.lootingnigger.GuiHandler.getServerGuiElement(GuiHandler.java:15)
    at cpw.mods.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:241)
    at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:75)
    at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
    at com.Pedrael.lootingnigger.BlockElFur.onBlockActivated(BlockElFur.java:73)
    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 com.Pedrael.lootingnigger.GuiHandler.getServerGuiElement(GuiHandler.java:15)
    at cpw.mods.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:241)
    at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:75)
    at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
    at com.Pedrael.lootingnigger.BlockElFur.onBlockActivated(BlockElFur.java:73)
    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@1f9b213
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)

Регистрация TileEntity и сведения о моде(я знаю, что можно и даже нужно как modid + "", мне лень):
Код:
@Mod (modid = "victor", name = "Glorious evolution", version = "1.0")
@EventHandler
    public static void load(FMLInitializationEvent Event){
        NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler());
        GameRegistry.registerTileEntity(TileEntityElFur.class, "victor.TE_ElFur");
    }
 
ent.openGui(MainClass.instance, 1, null, 1, 1, 1);
Действительно, почему твоего тайла нет в нулевом мире на координатах 1 1 1?
Параметры метода openGui в игроке - Инстанс мода, айди гуи, мир, x, y, z.
 
Dragon2488 написал(а):
ent.openGui(MainClass.instance, 1, null, 1, 1, 1);
Действительно, почему твоего тайла нет в нулевом мире на координатах 1 1 1?
Параметры метода openGui в игроке - Инстанс мода, айди гуи, мир, x, y, z.
Эх, невнимательность моя :pinch: Спасибо огромное, исправил.
 
Назад
Сверху