package mekanism.common.block;
import java.util.List;
import mekanism.api.EnumColor;
import mekanism.common.Mekanism;
import mekanism.common.block.states.BlockStatePlastic;
import mekanism.common.block.states.BlockStatePlastic.PlasticBlockType;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockPlastic extends Block
{
public PlasticBlockType type;
public BlockPlastic(PlasticBlockType blockType)
{
super(Material.WOOD);
type = blockType;
setHardness(type == PlasticBlockType.REINFORCED ? 50F : 5F);
setResistance(type == PlasticBlockType.REINFORCED ? 2000F : 10F);
setCreativeTab(Mekanism.tabMekanism);
if(type == PlasticBlockType.SLICK)
{
slipperiness = 0.98F;
}
}
@Override
protected BlockStateContainer createBlockState()
{
return new BlockStatePlastic(this);
}
@Override
public IBlockState getStateFromMeta(int meta)
{
return getDefaultState().withProperty(BlockStatePlastic.colorProperty, EnumDyeColor.byDyeDamage(meta));
}
@Override
public int getMetaFromState(IBlockState state)
{
return state.getValue(BlockStatePlastic.colorProperty).getDyeDamage();
}
@Override
public Vec3d modifyAcceleration(World world, BlockPos pos, Entity e, Vec3d motion)
{
if(type == PlasticBlockType.ROAD)
{
double boost = 1.6;
double a = Math.atan2(motion.xCoord, motion.zCoord);
return new Vec3d(motion.xCoord + Math.sin(a) * boost * slipperiness, motion.yCoord, motion.zCoord + Math.cos(a) * boost * slipperiness);
}
return motion;
}
@Override
public int damageDropped(IBlockState state)
{
return getMetaFromState(state);
}
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item item, CreativeTabs creativetabs, List<ItemStack> list)
{
for(int i = 0; i < EnumColor.DYES.length; i++)
{
list.add(new ItemStack(item, 1, i));
}
}
@Override
public int getLightValue(IBlockState state, IBlockAccess world, BlockPos pos)
{
if(type == PlasticBlockType.GLOW)
{
return 10;
}
return 0;
}
}