package mattparks.mods.space.io.blocks; import java.util.List; import java.util.Random; import mattparks.mods.space.core.SpaceCore; import mattparks.mods.space.io.IoCore; 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.entity.Entity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class BlockMagmaRock extends Block { private IIcon[] rockIcon; public BlockMagmaRock(String name) { super(Material.rock); this.setBlockName(name); } @Override public void registerBlockIcons(IIconRegister par1IconRegister) { this.rockIcon = new IIcon[2]; this.rockIcon[0] = par1IconRegister.registerIcon(IoCore.TEXTURE_PREFIX + "magmaRock"); this.rockIcon[1] = par1IconRegister.registerIcon(IoCore.TEXTURE_PREFIX + "sulfurRock"); } @Override public CreativeTabs getCreativeTabToDisplayOn() { return SpaceCore.spaceBlocksTab; } @Override public IIcon getIcon(int side, int meta) { return this.rockIcon[meta]; } @Override public void getSubBlocks(Item block, CreativeTabs creativeTabs, List list) { for (int i = 0; i < 2; ++i) { list.add(new ItemStack(this, 1, i)); } } @Override public float getBlockHardness(World par1World, int par2, int par3, int par4) { // FIX final int meta = par1World.getBlockMetadata(par2, par3, par4); if (meta == 0) { return 2.25F; } if (meta == 1) { return 2.0F; } return 1.0F; } @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int par2, int par3, int par4) { if (world.getBlockMetadata(par2, par3, par4) == 0) { final float f = 0.1F; return AxisAlignedBB.getBoundingBox(par2, par3, par4, par2 + 1, par3 + 1 - f, par4 + 1); } return super.getCollisionBoundingBoxFromPool(world, par2, par3, par4); } @Override public boolean isFireSource(World world, int x, int y, int z, ForgeDirection side) { if (world.getBlockMetadata(x, y, z) == 0) { if (side == ForgeDirection.UP) { return true; } } return super.isFireSource(world, x, y, z, side); } @Override public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { if (world.getBlockMetadata(x, y, z) == 0) { entity.setFire(10); entity.motionX *= 0.5D; entity.motionZ *= 0.5D; } } @Override public void randomDisplayTick(World world, int x, int y, int z, Random random) { if (random.nextInt(1) == 0) { world.spawnParticle("smoke", x + random.nextFloat(), y + 1.1F, z + random.nextFloat(), 0.0D, 0.0D, 0.0D); } } }