From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MWHunter Date: Wed, 24 Aug 2022 09:54:11 -0400 Subject: [PATCH] Stop large look changes from crashing the server Co-authored-by: Jaren Knodel diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java index 0c737b3c0a7645fddf157e1f12af14b8da34d09e..8e56fdb91fdf006e99a1464568b0d87e9e8daee1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3142,37 +3142,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.level().getProfiler().pop(); this.level().getProfiler().push("rangeChecks"); - while (this.getYRot() - this.yRotO < -180.0F) { - this.yRotO -= 360.0F; - } - - while (this.getYRot() - this.yRotO >= 180.0F) { - this.yRotO += 360.0F; - } + // Paper start - stop large pitch and yaw changes from crashing the server + this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; - while (this.yBodyRot - this.yBodyRotO < -180.0F) { - this.yBodyRotO -= 360.0F; - } + this.yBodyRotO += Math.round((this.yBodyRot - this.yBodyRotO) / 360.0F) * 360.0F; - while (this.yBodyRot - this.yBodyRotO >= 180.0F) { - this.yBodyRotO += 360.0F; - } - - while (this.getXRot() - this.xRotO < -180.0F) { - this.xRotO -= 360.0F; - } + this.xRotO += Math.round((this.getXRot() - this.xRotO) / 360.0F) * 360.0F; - while (this.getXRot() - this.xRotO >= 180.0F) { - this.xRotO += 360.0F; - } - - while (this.yHeadRot - this.yHeadRotO < -180.0F) { - this.yHeadRotO -= 360.0F; - } - - while (this.yHeadRot - this.yHeadRotO >= 180.0F) { - this.yHeadRotO += 360.0F; - } + this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; + // Paper end this.level().getProfiler().pop(); this.animStep += f2; diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java index ccb7aa341e3087255bce1f6fb953d33584147fd3..4c6fbf19d6bb01e67c6141aea757fae434ee8233 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java @@ -298,13 +298,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { } protected static float lerpRotation(float prevRot, float newRot) { - while (newRot - prevRot < -180.0F) { - prevRot -= 360.0F; - } - - while (newRot - prevRot >= 180.0F) { - prevRot += 360.0F; - } + prevRot += Math.round((newRot - prevRot) / 360.0F) * 360.0F; // Paper - stop large look changes from crashing the server return Mth.lerp(0.2F, prevRot, newRot); }