package crazypants.enderio.machine.farm;
import java.util.Random;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.GuiHandler;
import crazypants.enderio.ModObject;
import crazypants.enderio.machine.AbstractMachineBlock;
import crazypants.enderio.machine.IoMode;
import crazypants.enderio.network.PacketHandler;
public class BlockFarmStation extends AbstractMachineBlock<TileFarmStation> {
public static BlockFarmStation create() {
PacketHandler.INSTANCE.registerMessage(PacketFarmAction.class, PacketFarmAction.class, PacketHandler.nextID(), Side.CLIENT);
PacketHandler.INSTANCE.registerMessage(PacketUpdateNotification.class, PacketUpdateNotification.class, PacketHandler.nextID(), Side.CLIENT);
PacketHandler.INSTANCE.registerMessage(PacketFarmLockedSlot.class, PacketFarmLockedSlot.class, PacketHandler.nextID(), Side.SERVER);
BlockFarmStation result = new BlockFarmStation();
result.init();
return result;
}
public static int renderId;
private IIcon[] overlays;
protected BlockFarmStation() {
super(ModObject.blockFarmStation, TileFarmStation.class);
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileFarmStation) {
return new FarmStationContainer(player.inventory, (TileFarmStation)te);
}
return null;
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileFarmStation) {
return new GuiFarmStation(player.inventory, (TileFarmStation) te);
}
return null;
}
@Override
protected int getGuiId() {
return GuiHandler.GUI_ID_FARM_STATATION;
}
@Override
protected void registerOverlayIcons(IIconRegister iIconRegister) {
super.registerOverlayIcons(iIconRegister);
overlays = new IIcon[IoMode.values().length];
overlays[IoMode.PULL.ordinal()] = iIconRegister.registerIcon("enderio:overlays/pullSides");
overlays[IoMode.PUSH.ordinal()] = iIconRegister.registerIcon("enderio:overlays/pushSides");
overlays[IoMode.PUSH_PULL.ordinal()] = iIconRegister.registerIcon("enderio:overlays/pushPullSides");
overlays[IoMode.DISABLED.ordinal()] = iIconRegister.registerIcon("enderio:overlays/disabledSides");
}
@Override
public IIcon getOverlayIconForMode(TileFarmStation tile, ForgeDirection face, IoMode mode) {
if(face.offsetY != 0 || mode == IoMode.NONE) {
return super.getOverlayIconForMode(tile, face, mode);
}
return overlays[mode.ordinal()];
}
@Override
protected String getMachineFrontIconKey(boolean active) {
return getBackIconKey(active);
}
@Override
protected String getSideIconKey(boolean active) {
return super.getBackIconKey(active);
}
@Override
protected String getModelIconKey(boolean active) {
return "enderio:farmModel";
}
@Override
public int getRenderType() {
return renderId;
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) {
return true;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public boolean isOpaqueCube() {
return false;
}
public IIcon getFrontIcon() {
return iconBuffer[0][3];
}
@Override
@SideOnly(Side.CLIENT)
public void randomDisplayTick(World world, int x, int y, int z, Random rand) {
}
@Override
public String getUnlocalizedNameForTooltip(ItemStack stack) {
return getUnlocalizedName();
}
}