package crazypants.enderio.enderface;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
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 com.enderio.core.api.client.gui.IResourceTooltipProvider;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.BlockEio;
import crazypants.enderio.EnderIO;
import crazypants.enderio.GuiHandler;
import crazypants.enderio.ModObject;
import crazypants.enderio.api.teleport.ITravelAccessable;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.teleport.anchor.BlockTravelAnchor;
public class BlockEnderIO extends BlockEio implements IResourceTooltipProvider {
public static BlockEnderIO create() {
PacketHandler.INSTANCE.registerMessage(PacketOpenServerGUI.class, PacketOpenServerGUI.class, PacketHandler.nextID(), Side.SERVER);
PacketHandler.INSTANCE.registerMessage(PacketLockClientContainer.Handler.class, PacketLockClientContainer.class, PacketHandler.nextID(), Side.CLIENT);
BlockEnderIO result = new BlockEnderIO();
result.init();
return result;
}
@SideOnly(Side.CLIENT)
IIcon frameIcon;
@SideOnly(Side.CLIENT)
IIcon selectedOverlayIcon;
@SideOnly(Side.CLIENT)
IIcon highlightOverlayIcon;
static int pass;
private BlockEnderIO() {
super(ModObject.blockEnderIo.unlocalisedName, TileEnderIO.class);
}
@Override
@SideOnly(Side.CLIENT)
public int getRenderBlockPass() {
return 1;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack item) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEnderIO) {
TileEnderIO eio = (TileEnderIO) te;
eio.initUiPitch = -player.rotationPitch;
eio.initUiYaw = -player.rotationYaw + 180;
eio.lastUiPitch = eio.initUiPitch;
eio.lastUiYaw = eio.initUiYaw;
if(player instanceof EntityPlayer) {
eio.setPlacedBy((EntityPlayer) player);
}
world.markBlockForUpdate(x, y, z);
}
}
@Override
public boolean openGui(World world, int x, int y, int z, EntityPlayer entityPlayer, int side) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof ITravelAccessable) {
ITravelAccessable ta = (ITravelAccessable) te;
if(ta.canUiBeAccessed(entityPlayer)) {
entityPlayer.openGui(EnderIO.instance, GuiHandler.GUI_ID_TRAVEL_ACCESSABLE, world, x, y, z);
} else {
BlockTravelAnchor.sendPrivateChatMessage(entityPlayer, ta.getOwner());
}
return true;
}
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public int getRenderType() {
return -1;
}
@Override
public int getLightValue(IBlockAccess world, int x, int y, int z) {
return 13;
}
@Override
public int getLightOpacity() {
return 100;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iIconRegister) {
super.registerBlockIcons(iIconRegister);
frameIcon = iIconRegister.registerIcon("enderio:enderIOFrame");
highlightOverlayIcon = iIconRegister.registerIcon("enderio:enderIOHighlight");
selectedOverlayIcon = iIconRegister.registerIcon("enderio:enderIOSelected");
}
@Override
public String getUnlocalizedNameForTooltip(ItemStack stack) {
return getUnlocalizedName();
}
}