package com.vapourdrive.harderstart.blocks;
import java.util.List;
import java.util.Random;
import org.apache.logging.log4j.Level;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
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;
import com.vapourdrive.harderstart.HS_ModInfo;
import com.vapourdrive.harderstart.HarderStart;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class CarbonBlock extends Block
{
@SideOnly(Side.CLIENT)
private IIcon[] blockTexture;
public CarbonBlock()
{
super(Material.sand);
setBlockName(HS_BlockInfo.CarbonBlock);
setCreativeTab(HarderStart.tabharderstart);
setStepSound(soundTypeGravel);
this.setHardness(0.6F);
}
@Override
public void getSubBlocks(Item block, CreativeTabs creativeTabs, List list)
{
for (int i = 0; i < HS_BlockInfo.CarbonBlockNames.length; ++i)
{
list.add(new ItemStack(block, 1, i));
}
}
@Override
public int damageDropped(int meta)
{
return meta;
}
@Override
public int getDamageValue(World world, int x, int y, int z)
{
return world.getBlockMetadata(x, y, z);
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister register)
{
blockTexture = new IIcon[HS_BlockInfo.CarbonBlockNames.length];
for (int i = 0; i < HS_BlockInfo.CarbonBlockNames.length; i++)
{
blockTexture[i] = register.registerIcon(HS_ModInfo.RESOURSE_LOCATION + HS_BlockInfo.CarbonBlockNames[i]);
}
}
@Override
public IIcon getIcon(int side, int meta)
{
return blockTexture[meta];
}
@Override
public int getFireSpreadSpeed(IBlockAccess world, int x, int y, int z, ForgeDirection face)
{
return 0;
// return Blocks.fire.getEncouragement(this);
}
@Override
public int getFlammability(IBlockAccess world, int x, int y, int z, ForgeDirection face)
{
return 0;
// return Blocks.fire.getFlammability(this);
}
@Override
public boolean isFlammable(IBlockAccess world, int x, int y, int z, ForgeDirection face)
{
if (world.getBlockMetadata(x, y, z) == 0)
{
return true;
}
return false;
// return getFlammability(world, x, y, z, face) > 0;
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, Block block)
{
HarderStart.log.log(Level.INFO, "neighbor update");
if (world.getBlock(x, y + 1, z) == Blocks.fire && world.getBlockMetadata(x, y, z) == 0)
{
HarderStart.log.log(Level.INFO, "burning");
Random rand = new Random();
int delay = rand.nextInt(40);
world.scheduleBlockUpdate(x, y, z, this, 400 + delay);
}
}
public boolean isInsulated(World world, int x, int y, int z)
{
int insulatedLevel = 0;
for (int i = -1; i <= 1; i++)
{
for (int j = -1; j <= 1; j++)
{
for (int k = -1; k <= 1; k++)
{
if (world.getBlock(x + i, y + j, z + k) == HS_Blocks.HardenedFireClay
&& world.getBlockMetadata(x + i, y + j, z + k) == 1)
{
insulatedLevel++;
}
}
}
}
HarderStart.log.log(Level.INFO, insulatedLevel);
return insulatedLevel >= 24;
}
@Override
public void updateTick(World world, int x, int y, int z, Random rand)
{
if (isInsulated(world, x, y, z))
{
world.setBlockMetadataWithNotify(x, y, z, 1, 3);
}
else if (world.getBlock(x, y + 1, z) == Blocks.fire)
{
world.setBlockToAir(x, y + 1, z);
}
}
}