package buildcraftAdditions.blocks;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import buildcraftAdditions.tileEntities.TileMechanicalDuster;
import buildcraftAdditions.utils.RenderUtils;
/**
* 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 class BlockMechanicalDuster extends BlockDusterBase {
@SideOnly(Side.CLIENT)
private IIcon front, sides, bottom, top[];
public BlockMechanicalDuster() {
super("Mechanical", "");
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileMechanicalDuster();
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(IBlockAccess access, int x, int y, int z, int side) {
int meta = access.getBlockMetadata(x, y, z);
if (meta == 0 && side == 3)
return front;
if (side == meta && meta > 1) {
return front;
}
if (side == 1) {
TileMechanicalDuster duster = (TileMechanicalDuster) access.getTileEntity(x, y, z);
return top[duster.progressStage];
}
switch (side) {
case 0:
return bottom;
default:
return sides;
}
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if (super.onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ)) {
TileEntity tile = world.getTileEntity(x, y, z);
if (tile != null && tile instanceof TileMechanicalDuster) {
TileMechanicalDuster duster = (TileMechanicalDuster) tile;
duster.player = player;
return true;
}
}
return false;
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if (meta == 0 && side == 3)
return front;
if (side == meta && meta > 1)
return front;
switch (side) {
case 0:
return bottom;
case 1:
return top[0];
}
return sides;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister register) {
front = RenderUtils.registerIcon(register, "dusters/" + type.toLowerCase() + "/Front");
sides = RenderUtils.registerIcon(register, "dusters/" + type.toLowerCase() + "/Sides");
bottom = RenderUtils.registerIcon(register, "dusters/" + type.toLowerCase() + "/Bottom");
top = new IIcon[4];
top[0] = RenderUtils.registerIcon(register, "dusters/" + type.toLowerCase() + "/Top0");
top[1] = RenderUtils.registerIcon(register, "dusters/" + type.toLowerCase() + "/Top1");
top[2] = RenderUtils.registerIcon(register, "dusters/" + type.toLowerCase() + "/Top2");
top[3] = RenderUtils.registerIcon(register, "dusters/" + type.toLowerCase() + "/Top3");
}
}