53 lines
1.7 KiB
Java
53 lines
1.7 KiB
Java
package net.minecraft.world.level.block;
|
|
|
|
import net.minecraft.world.phys.Vec3;
|
|
import net.minecraft.world.entity.LivingEntity;
|
|
import net.minecraft.world.level.BlockGetter;
|
|
import net.minecraft.world.entity.Entity;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.world.level.Level;
|
|
|
|
public class SlimeBlock extends HalfTransparentBlock {
|
|
public SlimeBlock(final Properties c) {
|
|
super(c);
|
|
}
|
|
|
|
@Override
|
|
public void fallOn(final Level bjt, final BlockPos fk, final Entity akn, final float float4) {
|
|
if (akn.isSuppressingBounce()) {
|
|
super.fallOn(bjt, fk, akn, float4);
|
|
}
|
|
else {
|
|
akn.causeFallDamage(float4, 0.0f);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void updateEntityAfterFallOn(final BlockGetter bjd, final Entity akn) {
|
|
if (akn.isSuppressingBounce()) {
|
|
super.updateEntityAfterFallOn(bjd, akn);
|
|
}
|
|
else {
|
|
this.bounceUp(akn);
|
|
}
|
|
}
|
|
|
|
private void bounceUp(final Entity akn) {
|
|
final Vec3 cvi3 = akn.getDeltaMovement();
|
|
if (cvi3.y < 0.0) {
|
|
final double double4 = (akn instanceof LivingEntity) ? 1.0 : 0.8;
|
|
akn.setDeltaMovement(cvi3.x, -cvi3.y * double4, cvi3.z);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void stepOn(final Level bjt, final BlockPos fk, final Entity akn) {
|
|
final double double5 = Math.abs(akn.getDeltaMovement().y);
|
|
if (double5 < 0.1 && !akn.isSteppingCarefully()) {
|
|
final double double6 = 0.4 + double5 * 0.2;
|
|
akn.setDeltaMovement(akn.getDeltaMovement().multiply(double6, 1.0, double6));
|
|
}
|
|
super.stepOn(bjt, fk, akn);
|
|
}
|
|
}
|