package mcjty.rftools.blocks.shards;
import mcjty.lib.varia.BlockTools;
import mcjty.rftools.RFTools;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class AbstractDirectionalBlock extends Block {
private IIcon iconSideHoriz;
private IIcon iconSideVert;
private IIcon iconTop;
public AbstractDirectionalBlock() {
super(Material.rock);
setCreativeTab(RFTools.tabRfTools);
}
@Override
public int getLightValue() {
return 6;
}
protected abstract String getHorizTexture();
protected abstract String getVertTexture();
protected abstract String getTopBottomTexture();
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLivingBase, ItemStack itemStack) {
ForgeDirection dir = BlockTools.determineOrientation(x, y, z, entityLivingBase);
int meta = world.getBlockMetadata(x, y, z);
world.setBlockMetadataWithNotify(x, y, z, BlockTools.setOrientation(meta, dir), 2);
}
@Override
public void registerBlockIcons(IIconRegister iconRegister) {
iconSideVert = iconRegister.registerIcon(RFTools.MODID + ":" + getVertTexture());
iconSideHoriz = iconRegister.registerIcon(RFTools.MODID + ":" + getHorizTexture());
iconTop = iconRegister.registerIcon(RFTools.MODID + ":" + getTopBottomTexture());
}
@Override
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
int meta = world.getBlockMetadata(x, y, z);
ForgeDirection k = BlockTools.getOrientation(meta);
if (side == k.ordinal() || side == k.getOpposite().ordinal()) {
return iconTop;
} else {
if (k == ForgeDirection.DOWN || k == ForgeDirection.UP) {
return iconSideVert;
} else if (k == ForgeDirection.SOUTH || k == ForgeDirection.NORTH) {
if (side == ForgeDirection.DOWN.ordinal() || side == ForgeDirection.UP.ordinal()) {
return iconSideVert;
} else {
return iconSideHoriz;
}
} else {
return iconSideHoriz;
}
}
}
@Override
public IIcon getIcon(int side, int meta) {
if (side == ForgeDirection.UP.ordinal() || side == ForgeDirection.DOWN.ordinal()) {
return iconTop;
} else {
return iconSideVert;
}
}
}