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); } }