From 8b1550dc435daf2b7f49f7e5404bbe3c1bedb2a4 Mon Sep 17 00:00:00 2001 From: fullwall Date: Mon, 1 May 2023 00:18:57 +0800 Subject: [PATCH] Adjust RotationTrait head yaw cone --- .../net/citizensnpcs/trait/RotationTrait.java | 23 ++++++++++++------- .../v1_19_R3/util/CitizensEntityTracker.java | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/trait/RotationTrait.java b/main/src/main/java/net/citizensnpcs/trait/RotationTrait.java index 48328a716..dc386d32e 100644 --- a/main/src/main/java/net/citizensnpcs/trait/RotationTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/RotationTrait.java @@ -459,15 +459,22 @@ public class RotationTrait extends Trait { : Util.clamp(params.rotateHeadYawTowards(t, rot.headYaw, getTargetYaw())); if (!params.headOnly) { - float d = Util.clamp(rot.headYaw - 20); - if (d > rot.bodyYaw) { - rot.bodyYaw = d; + float lo = Util.clamp(rot.headYaw - 20); + float hi = Util.clamp(rot.headYaw + 20); + if (hi < 0 && lo > 0) { + float i = hi; + hi = lo; + lo = i; } - if (d != rot.bodyYaw) { - d = Util.clamp(rot.headYaw + 20); - if (d < rot.bodyYaw) { - rot.bodyYaw = d; - } + boolean contained = false; + float body = Util.clamp(rot.bodyYaw); + if (hi > 0 && lo < 0) { + contained = body >= hi || body <= lo; + } else { + contained = body >= lo && body <= hi; + } + if (!contained) { + rot.bodyYaw = Math.abs(body - lo) > Math.abs(body - hi) ? hi : lo; } } diff --git a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/CitizensEntityTracker.java b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/CitizensEntityTracker.java index 5288a33ba..b6fa2db36 100644 --- a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/CitizensEntityTracker.java +++ b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/CitizensEntityTracker.java @@ -67,7 +67,7 @@ public class CitizensEntityTracker extends ChunkMap.TrackedEntity { new ClientboundMoveEntityPacket.Rot(tracker.getId(), (byte) (tracker.getYRot() * 256.0F / 360.0F), (byte) (tracker.getXRot() * 256.0F / 360.0F), tracker.onGround)); - }, 10); + }, 1); return; } Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> {