package mods.eln;
import cpw.mods.fml.common.network.IGuiHandler;
import mods.eln.misc.Direction;
import mods.eln.misc.Utils;
import mods.eln.misc.UtilsClient;
import mods.eln.node.INodeEntity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class GuiHandler implements IGuiHandler {
INodeEntity getNodeEntity(World world, int x, int y, int z) {
TileEntity e = world.getTileEntity(x, y, z);
if (e == null || false == e instanceof INodeEntity) return null;
return (INodeEntity) e;
}
// returns an instance of the Container you made earlier
@Override
public Object getServerGuiElement(int id, EntityPlayer player, World world,
int x, int y, int z) {
INodeEntity nodeEntity = getNodeEntity(world, x, y, z);
if (nodeEntity == null) return null;
Direction side = Direction.fromInt(id - nodeBaseOpen);
Object container = nodeEntity.newContainer(side, player);
if (container == null) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream stream = new DataOutputStream(bos);
stream.writeByte(Eln.packetOpenLocalGui);
stream.writeInt(id);
stream.writeInt(x);
stream.writeInt(y);
stream.writeInt(z);
Utils.sendPacketToClient(bos, (EntityPlayerMP) player);
} catch (IOException e) {
e.printStackTrace();
}
}
return container;
}
public static final int genericOpen = 5977;
public static final int nodeBaseOpen = 6935;
// returns an instance of the Gui you made earlier
@Override
public Object getClientGuiElement(int id, EntityPlayer player, World world,
int x, int y, int z) {
if (id == genericOpen) {
return UtilsClient.guiLastOpen;
}
if (id >= nodeBaseOpen && id <= nodeBaseOpen + 5) {
INodeEntity nodeEntity = getNodeEntity(world, x, y, z);
if (nodeEntity == null) return null;
Direction side = Direction.fromInt(id - nodeBaseOpen);
return nodeEntity.newGuiDraw(side, player);
}
return null;
}
}