スライムブロック
スライムブロックは、その上に落ちるとバウンドするという特性のある特殊ブロックである。
摩擦
スライムブロックのslipperinessは0.8で、通常ブロック(0.6)と氷(0.98)の間に位置する。
それに加え、
バウンド
- スライムブロックの上に落ちると、垂直方向の速度が反転され、上方向にバウンドする。
- 着時地にジャンプキーを押しているとバウンドがキャンセルされ、落下ダメージを受けることなく通常通りにジャンプする。
- 着地時にスニークを押しているとバウンドがキャンセルされ、落下ダメージを受ける。
ソースコード
//Entity.moveEntity()の終わりに呼び出される
public void onLanded(Entity e)
{
if (e.isSneaking())
e.motionY = 0.0;
else if (e.motionY < 0.0D)
e.motionY = -e.motionY;
}
//Entity.moveEntity()の終わり、前述のメソッドの後に呼び出される
public void onEntityCollidedWithBlock(Entity e)
{
if (Math.abs(e.motionY) < 0.1D && !e.isSneaking())
{
double mult = 0.4 + Math.abs(e.motionY)*0.2;
e.motionX *= mult;
e.motionZ *= mult;
}
}