package net.minecraft.block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public class BlockSlime extends BlockBreakable
{
private static final String __OBFID = "CL_00002063";
public BlockSlime()
{
super(Material.clay, false);
this.setCreativeTab(CreativeTabs.tabDecorations);
this.slipperiness = 0.8F;
}
/**
* Block's chance to react to a living entity falling on it.
*
* @param fallDistance The distance the entity has fallen before landing
*/
public void onFallenUpon(World worldIn, BlockPos pos, Entity entityIn, float fallDistance)
{
if (entityIn.isSneaking())
{
super.onFallenUpon(worldIn, pos, entityIn, fallDistance);
}
else
{
entityIn.fall(fallDistance, 0.0F);
}
}
/**
* Called when an Entity lands on this Block. This method *must* update motionY because the entity will not do that
* on its own
*/
public void onLanded(World worldIn, Entity entityIn)
{
if (entityIn.isSneaking())
{
super.onLanded(worldIn, entityIn);
}
else if (entityIn.motionY < 0.0D)
{
entityIn.motionY = -entityIn.motionY;
}
}
/**
* Triggered whenever an entity collides with this block (enters into the block)
*/
public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, Entity entityIn)
{
if (Math.abs(entityIn.motionY) < 0.1D && !entityIn.isSneaking())
{
double var4 = 0.4D + Math.abs(entityIn.motionY) * 0.2D;
entityIn.motionX *= var4;
entityIn.motionZ *= var4;
}
super.onEntityCollidedWithBlock(worldIn, pos, entityIn);
}
}