package com.someluigi.slperiph.ccportable.shared;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import com.someluigi.slperiph.SLPMod;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import dan200.computer.api.ComputerCraftAPI;
public class BlockTransmitter extends Block {
public Icon equiv_0, equiv_1, equiv_2;
public Icon turtle_equiv_3;
public static final int MAX_ANTENN_LENGTH = 5;
public static void setRangeAmplifier( World world, int x, int y, int z, int len ){
int range = SLPMod.Config.minTransmitterRange;
len -= 1;
if ( len > 0 ){
double max = SLPMod.Config.maxTransmitterRange - SLPMod.Config.minTransmitterRange;
double amp = MAX_ANTENN_LENGTH - len;
range += MathHelper.floor_double( max / amp );
}
TileEntity tile = world.getBlockTileEntity(x, y, z);
if ( tile instanceof TileEntityTransmitter )
((TileEntityTransmitter) tile).terminal.range = range;
}
public BlockTransmitter( int typeID ) {
super(typeID, Material.circuits);
setCreativeTab(ComputerCraftAPI.getCreativeTab());
setUnlocalizedName("slp.pp.BlockTransmitter");
setHardness( 0.5f );
disableStats();
}
public boolean hasTileEntity(int data) {
return true;
}
public TileEntity createTileEntity( World world, int data ) {
return new TileEntityTransmitter();
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving living, ItemStack is) {
if ( !world.isRemote ){
int dir = MathHelper.floor_double( living.rotationYaw * 4 / 360 + 0.5 ) & 3;
switch( dir ){
case 0: dir = 2; break;
case 1: dir = 5; break;
case 2: dir = 3; break;
case 3: dir = 4; break;
}
world.setBlockMetadataWithNotify(x, y, z, dir, 0);
}
super.onBlockPlacedBy(world, x, y, z, living, is);
}
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float sX, float sY, float sZ) {
GuiManager.openGui(player, GuiManager.GUI_TRANSMITTER, world, x, y, z);
return true;
}
public Icon getBlockTextureFromSideAndMetadata(int side, int meta) {
if ( side == (meta & 7) )
return equiv_2;
if ( side < 2 )
return equiv_0;
return equiv_1;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister ir) {
this.equiv_0 = ir
.registerIcon("slperiph:pp-0");
this.equiv_1 = ir
.registerIcon("slperiph:pp-1");
this.equiv_2 = ir
.registerIcon("slperiph:pp-2");
this.turtle_equiv_3 = ir
.registerIcon("slperiph:pp-3");
}
}