Jump to content

Recommended Posts

Posted (edited)

What's wrong with this code? When I right-click on crusher or compressor, Minecraft don't crash but world closes and I see "Fatal error: your connection terminated." Only compressor didn't work earlier but when I rewrite code to fix it the same problem became with crusher too.

Spoiler

package net.civerind.civerindbase.gui;

import cpw.mods.fml.common.network.IGuiHandler;
import net.civerind.civerindbase.CiverindBase;
import net.civerind.civerindbase.container.ContainerCompressor;
import net.civerind.civerindbase.container.ContainerCrusher;
import net.civerind.civerindbase.tileentity.TileEntityCompressor;
import net.civerind.civerindbase.tileentity.TileEntityCrusher;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;

public class GuiHandler implements IGuiHandler {

    @Override
    public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        
        TileEntity entity = world.getTileEntity(x, y, z);
        
        if (entity != null)
        {
            if (entity instanceof TileEntityCrusher)
            {
                return new ContainerCrusher(player.inventory, (TileEntityCrusher) entity);
            }
            else if (entity instanceof TileEntityCompressor)
            {
                return new ContainerCompressor(player.inventory, (TileEntityCompressor) entity);
            }
        }
        return null;
    }

    @Override
    public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        
        TileEntity entity = world.getTileEntity(x, y, z);
        
        if (entity != null)
        {
            if (entity instanceof TileEntityCrusher)
            {
                return new ContainerCrusher(player.inventory, (TileEntityCrusher) entity);
            }
            else if (entity instanceof TileEntityCompressor)
            {
                return new ContainerCompressor(player.inventory, (TileEntityCompressor) entity);
            }
        }
        return null;
    }
}

 

Edited by Civerind
Posted
  • getClientGuiElement should return a GUI, not the Container class.
  • You should use the ID parameter to identify which container to open, rather than instanceof checks.

Where do you open your GUI(s)? Please use code tags (<> icon) next time, otherwise it is very hard to read.

Posted
7 minutes ago, larsgerrits said:

1.7.10 is no longer supported on this forum. Update to a newer version (1.10.2 or 1.11.2).

I'm sorry. I don't know.

5 minutes ago, Jay Avery said:
  • getClientGuiElement should return a GUI, not the Container class.
  • You should use the ID parameter to identify which container to open, rather than instanceof checks.

Where do you open your GUI(s)? Please use code tags (<> icon) next time, otherwise it is very hard to read.

Thank you.

  • Guest locked this topic
Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.