package buildcraftAdditions.core;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;
import buildcraftAdditions.api.configurableOutput.IConfigurableOutput;
import buildcraftAdditions.client.gui.GuiBasicCoil;
import buildcraftAdditions.client.gui.GuiChargingStation;
import buildcraftAdditions.client.gui.GuiCoolingTower;
import buildcraftAdditions.client.gui.GuiFluidicCompressor;
import buildcraftAdditions.client.gui.GuiHeatedFurnace;
import buildcraftAdditions.client.gui.GuiItemSorter;
import buildcraftAdditions.client.gui.GuiKEB;
import buildcraftAdditions.client.gui.GuiKineticMultiTool;
import buildcraftAdditions.client.gui.GuiMachineConfigurator;
import buildcraftAdditions.client.gui.GuiPipeColoringTool;
import buildcraftAdditions.client.gui.GuiPortableLaser;
import buildcraftAdditions.client.gui.GuiRefinery;
import buildcraftAdditions.inventories.InventoryKineticMultiTool;
import buildcraftAdditions.inventories.InventoryPortableLaser;
import buildcraftAdditions.inventories.containers.ContainerBasicCoil;
import buildcraftAdditions.inventories.containers.ContainerChargingStation;
import buildcraftAdditions.inventories.containers.ContainerCoolingTower;
import buildcraftAdditions.inventories.containers.ContainerFluidicCompressor;
import buildcraftAdditions.inventories.containers.ContainerHeatedFurnace;
import buildcraftAdditions.inventories.containers.ContainerItemSorter;
import buildcraftAdditions.inventories.containers.ContainerKEB;
import buildcraftAdditions.inventories.containers.ContainerKineticMultiTool;
import buildcraftAdditions.inventories.containers.ContainerMachineConfigurator;
import buildcraftAdditions.inventories.containers.ContainerPipeColoringTool;
import buildcraftAdditions.inventories.containers.ContainerPortableLaser;
import buildcraftAdditions.inventories.containers.ContainerRefinery;
import buildcraftAdditions.items.Tools.ItemKineticMultiTool;
import buildcraftAdditions.items.Tools.ItemPipeColoringTool;
import buildcraftAdditions.items.Tools.ItemPortableLaser;
import buildcraftAdditions.multiBlocks.IMultiBlockTile;
import buildcraftAdditions.reference.Variables;
import buildcraftAdditions.tileEntities.Bases.TileKineticEnergyBufferBase;
import buildcraftAdditions.tileEntities.TileBasicCoil;
import buildcraftAdditions.tileEntities.TileChargingStation;
import buildcraftAdditions.tileEntities.TileCoolingTower;
import buildcraftAdditions.tileEntities.TileFluidicCompressor;
import buildcraftAdditions.tileEntities.TileHeatedFurnace;
import buildcraftAdditions.tileEntities.TileItemSorter;
import buildcraftAdditions.tileEntities.TileRefinery;
import buildcraftAdditions.tileEntities.interfaces.IUpgradableMachine;
/**
* Copyright (c) 2014-2015, AEnterprise
* http://buildcraftadditions.wordpress.com/
* Buildcraft Additions is distributed under the terms of GNU GPL v3.0
* Please check the contents of the license located in
* http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/
*/
public final class GuiHandler implements IGuiHandler {
public static final GuiHandler INSTANCE = new GuiHandler();
private GuiHandler() {
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity tile = world.getTileEntity(x, y, z);
switch (Variables.Gui.values()[ID]) {
case FLUIDIC_COMPRESSOR:
if (tile instanceof TileFluidicCompressor)
return new ContainerFluidicCompressor(player, (TileFluidicCompressor) tile);
case CHARGING_STATION:
if (tile instanceof TileChargingStation)
return new ContainerChargingStation(player, (TileChargingStation) tile);
case KINETIC_MULTI_TOOL:
if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemKineticMultiTool)
return new ContainerKineticMultiTool(player, new InventoryKineticMultiTool(player.getHeldItem()));
case PORTABLE_LASER:
if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemPortableLaser)
return new ContainerPortableLaser(player, new InventoryPortableLaser(player.getHeldItem()));
case HEATED_FURNACE:
if (tile instanceof TileHeatedFurnace)
return new ContainerHeatedFurnace(player, (TileHeatedFurnace) tile);
case BASIC_COIL:
if (tile instanceof TileBasicCoil)
return new ContainerBasicCoil(player, (TileBasicCoil) tile);
case KEB:
if (tile instanceof TileKineticEnergyBufferBase)
return new ContainerKEB(player, (TileKineticEnergyBufferBase) tile);
case MACHINE_CONFIGURATOR:
return new ContainerMachineConfigurator(player, tile);
case REFINERY:
return new ContainerRefinery(player, (TileRefinery) tile);
case COOLING_TOWER:
return new ContainerCoolingTower(player, (TileCoolingTower) tile);
case ITEM_SORTER:
return new ContainerItemSorter(player, (TileItemSorter) tile);
case PIPE_COLORING_TOOL:
if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemPipeColoringTool)
return new ContainerPipeColoringTool();
}
return null;
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity tile = world.getTileEntity(x, y, z);
switch (Variables.Gui.values()[ID]) {
case FLUIDIC_COMPRESSOR:
if (tile instanceof TileFluidicCompressor)
return new GuiFluidicCompressor(player, (TileFluidicCompressor) tile);
case CHARGING_STATION:
if (tile instanceof TileChargingStation)
return new GuiChargingStation(player, (TileChargingStation) tile);
case KINETIC_MULTI_TOOL:
if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemKineticMultiTool)
return new GuiKineticMultiTool(player, new InventoryKineticMultiTool(player.getHeldItem()));
case PORTABLE_LASER:
if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemPortableLaser)
return new GuiPortableLaser(player, new InventoryPortableLaser(player.getHeldItem()));
case HEATED_FURNACE:
if (tile instanceof TileHeatedFurnace)
return new GuiHeatedFurnace(player, (TileHeatedFurnace) tile);
case BASIC_COIL:
if (tile instanceof TileBasicCoil)
return new GuiBasicCoil(player, (TileBasicCoil) tile);
case KEB:
if (tile instanceof TileKineticEnergyBufferBase)
return new GuiKEB((TileKineticEnergyBufferBase) tile, player);
case MACHINE_CONFIGURATOR:
if (tile instanceof IMultiBlockTile) {
IMultiBlockTile multiblock = (IMultiBlockTile) tile;
if (!multiblock.isPartOfMultiblock())
return null;
if (!multiblock.isMaster())
tile = world.getTileEntity(multiblock.getMasterX(), multiblock.getMasterY(), multiblock.getMasterZ());
}
if (tile instanceof IConfigurableOutput || tile instanceof IUpgradableMachine)
return new GuiMachineConfigurator(player, tile);
case REFINERY:
if (tile instanceof TileRefinery)
return new GuiRefinery(player, (TileRefinery) tile);
case COOLING_TOWER:
if (tile instanceof TileCoolingTower)
return new GuiCoolingTower(player, (TileCoolingTower) tile);
case ITEM_SORTER:
if (tile instanceof TileItemSorter)
return new GuiItemSorter(player, (TileItemSorter) tile);
case PIPE_COLORING_TOOL:
if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemPipeColoringTool)
return new GuiPipeColoringTool(player.getCurrentEquippedItem());
}
return null;
}
}