minecraft-source/src/net/minecraft/world/level/block/SlimeBlock.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);
}
}