From 06b0e2d800de04e7b5dac6e59c5e5915473da663 Mon Sep 17 00:00:00 2001 From: fullwall Date: Mon, 11 Dec 2023 23:17:34 +0800 Subject: [PATCH] Don't set body yaw with head yaw --- main/pom.xml | 2 +- .../net/citizensnpcs/npc/CitizensNPC.java | 2 +- .../ai/StraightLineNavigationStrategy.java | 2 +- .../main/java/net/citizensnpcs/util/NMS.java | 14 +++++++---- .../java/net/citizensnpcs/util/NMSBridge.java | 10 +++++--- .../nms/v1_10_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_10_R1/util/NMSImpl.java | 25 ++++++++++++------- .../nms/v1_11_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_11_R1/util/NMSImpl.java | 25 ++++++++++++------- .../nms/v1_12_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_12_R1/util/NMSImpl.java | 13 +++++++--- .../nms/v1_13_R2/entity/EntityHumanNPC.java | 2 +- .../nms/v1_13_R2/util/NMSImpl.java | 13 +++++++--- .../nms/v1_14_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_14_R1/util/NMSImpl.java | 13 +++++++--- .../nms/v1_15_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_15_R1/util/NMSImpl.java | 13 +++++++--- .../nms/v1_16_R3/entity/EntityHumanNPC.java | 2 +- .../nms/v1_16_R3/util/NMSImpl.java | 11 ++++++-- .../nms/v1_17_R1/entity/EntityHumanNPC.java | 2 +- .../nms/v1_17_R1/util/NMSImpl.java | 15 ++++++++--- .../nms/v1_18_R2/entity/EntityHumanNPC.java | 2 +- .../nms/v1_18_R2/util/NMSImpl.java | 11 ++++++-- .../nms/v1_19_R3/entity/EntityHumanNPC.java | 2 +- .../nms/v1_19_R3/util/NMSImpl.java | 11 ++++++-- v1_20_R3/pom.xml | 2 +- .../v1_20_R3/entity/DolphinController.java | 2 -- .../nms/v1_20_R3/entity/EntityHumanNPC.java | 2 +- .../nms/v1_20_R3/util/NMSImpl.java | 13 +++++++--- .../nms/v1_8_R3/entity/EntityHumanNPC.java | 2 +- .../nms/v1_8_R3/util/NMSImpl.java | 25 ++++++++++++------- 31 files changed, 167 insertions(+), 79 deletions(-) diff --git a/main/pom.xml b/main/pom.xml index 433667a81..1b012496c 100644 --- a/main/pom.xml +++ b/main/pom.xml @@ -9,7 +9,7 @@ citizens-main UTF-8 - 1.20.2-R0.1-SNAPSHOT + 1.20.4-R0.1-SNAPSHOT 2.11.2 ${project.version} 7.1.0-SNAPSHOT diff --git a/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java b/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java index df5599d0f..217ecdd56 100644 --- a/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java +++ b/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java @@ -438,7 +438,7 @@ public class CitizensNPC extends AbstractNPC { Location npcLoc = getEntity().getLocation(); if (isSpawned() && npcLoc.getWorld() == location.getWorld()) { if (npcLoc.distance(location) < 1) { - NMS.setHeadYaw(getEntity(), location.getYaw()); + NMS.setHeadAndBodyYaw(getEntity(), location.getYaw()); } if (getEntity().getType() == EntityType.PLAYER && !getEntity().isInsideVehicle() && NMS.getPassengers(getEntity()).size() == 0) { diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/StraightLineNavigationStrategy.java b/main/src/main/java/net/citizensnpcs/npc/ai/StraightLineNavigationStrategy.java index 18bb33a7f..c40de4d2c 100644 --- a/main/src/main/java/net/citizensnpcs/npc/ai/StraightLineNavigationStrategy.java +++ b/main/src/main/java/net/citizensnpcs/npc/ai/StraightLineNavigationStrategy.java @@ -108,7 +108,7 @@ public class StraightLineNavigationStrategy extends AbstractPathStrategy { } if (npc.getEntity().getType() != EntityType.ENDER_DRAGON) { NMS.setVerticalMovement(npc.getEntity(), 0.5); - NMS.setHeadYaw(npc.getEntity(), currLoc.getYaw() + normalisedTargetYaw); + NMS.setHeadAndBodyYaw(npc.getEntity(), currLoc.getYaw() + normalisedTargetYaw); } } else if (npc.getEntity() instanceof LivingEntity) { NMS.setDestination(npc.getEntity(), destVector.getX(), destVector.getY(), destVector.getZ(), diff --git a/main/src/main/java/net/citizensnpcs/util/NMS.java b/main/src/main/java/net/citizensnpcs/util/NMS.java index 538763d1d..b565c7a98 100644 --- a/main/src/main/java/net/citizensnpcs/util/NMS.java +++ b/main/src/main/java/net/citizensnpcs/util/NMS.java @@ -54,9 +54,9 @@ import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.util.BoundingBox; import net.citizensnpcs.api.util.EntityDim; import net.citizensnpcs.api.util.Messaging; -import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator; import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator; +import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.skin.SkinnableEntity; import net.citizensnpcs.trait.MirrorTrait; import net.citizensnpcs.trait.PacketNPC; @@ -198,6 +198,10 @@ public class NMS { return BRIDGE.getBoundingBox(handle); } + public static double getBoundingBoxHeight(Entity entity) { + return BRIDGE.getBoundingBoxHeight(entity); + } + public static BoundingBox getCollisionBox(Block block) { if (block.getType() == Material.AIR) return BoundingBox.EMPTY; @@ -462,10 +466,6 @@ public class NMS { return BRIDGE.getHeadYaw(entity); } - public static double getBoundingBoxHeight(Entity entity) { - return BRIDGE.getBoundingBoxHeight(entity); - } - public static float getHorizontalMovement(org.bukkit.entity.Entity bukkitEntity) { return BRIDGE.getHorizontalMovement(bukkitEntity); } @@ -790,6 +790,10 @@ public class NMS { BRIDGE.setEndermanAngry(enderman, angry); } + public static void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { + BRIDGE.setHeadAndBodyYaw(entity, yaw); + } + public static void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { BRIDGE.setHeadYaw(entity, yaw); } diff --git a/main/src/main/java/net/citizensnpcs/util/NMSBridge.java b/main/src/main/java/net/citizensnpcs/util/NMSBridge.java index a693eae23..92816a29b 100644 --- a/main/src/main/java/net/citizensnpcs/util/NMSBridge.java +++ b/main/src/main/java/net/citizensnpcs/util/NMSBridge.java @@ -74,6 +74,10 @@ public interface NMSBridge { public BoundingBox getBoundingBox(Entity handle); + public default double getBoundingBoxHeight(Entity entity) { + return entity.getHeight(); + } + public BoundingBox getCollisionBox(Block block); public Location getDestination(Entity entity); @@ -82,10 +86,6 @@ public interface NMSBridge { public float getHeadYaw(Entity entity); - public default double getBoundingBoxHeight(Entity entity) { - return entity.getHeight(); - } - public float getHorizontalMovement(Entity entity); public CompoundTag getNBT(ItemStack item); @@ -201,6 +201,8 @@ public interface NMSBridge { public void setEndermanAngry(Enderman enderman, boolean angry); + public void setHeadAndBodyYaw(Entity entity, float yaw); + public void setHeadYaw(Entity entity, float yaw); public void setKnockbackResistance(LivingEntity entity, double d); diff --git a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/entity/EntityHumanNPC.java b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/entity/EntityHumanNPC.java index fac2db52f..ff46e08d7 100644 --- a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/entity/EntityHumanNPC.java +++ b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/entity/EntityHumanNPC.java @@ -331,7 +331,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable bg *= 0.98F; bh *= 0.9F; moveWithFallDamage(bf, bg); // movement method - NMS.setHeadYaw(getBukkitEntity(), yaw); + NMS.setHeadAndBodyYaw(getBukkitEntity(), yaw); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/NMSImpl.java b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/NMSImpl.java index 020a9cf09..dc9402e9c 100644 --- a/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/NMSImpl.java +++ b/v1_10_R1/src/main/java/net/citizensnpcs/nms/v1_10_R1/util/NMSImpl.java @@ -167,9 +167,9 @@ import net.citizensnpcs.nms.v1_10_R1.entity.nonliving.ThrownPotionController; import net.citizensnpcs.nms.v1_10_R1.entity.nonliving.TippedArrowController; import net.citizensnpcs.nms.v1_10_R1.entity.nonliving.WitherSkullController; import net.citizensnpcs.npc.EntityControllers; -import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator; import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator; +import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.skin.SkinnableEntity; import net.citizensnpcs.trait.RotationTrait; import net.citizensnpcs.trait.versioned.BossBarTrait; @@ -446,6 +446,11 @@ public class NMSImpl implements NMSBridge { return new BoundingBox(bb.a, bb.b, bb.c, bb.d, bb.e, bb.f); } + @Override + public double getBoundingBoxHeight(org.bukkit.entity.Entity entity) { + return getHandle(entity).length; + } + @Override public BoundingBox getCollisionBox(org.bukkit.block.Block block) { WorldServer world = ((CraftWorld) block.getWorld()).getHandle(); @@ -479,11 +484,6 @@ public class NMSImpl implements NMSBridge { return getHandle((LivingEntity) entity).aQ; } - @Override - public double getBoundingBoxHeight(org.bukkit.entity.Entity entity) { - return getHandle(entity).length; - } - @Override public float getHorizontalMovement(org.bukkit.entity.Entity entity) { if (!entity.getType().isAlive()) @@ -1201,16 +1201,23 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof LivingEntity)) return; EntityLiving handle = (EntityLiving) getHandle(entity); yaw = Util.clamp(yaw); handle.aP = yaw; if (!(handle instanceof EntityHuman)) { - handle.aO = yaw; + handle.aO = yaw; // TODO: why this } - handle.aQ = yaw; + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((EntityLiving) getHandle(entity)).aQ = Util.clamp(yaw); } @Override diff --git a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/entity/EntityHumanNPC.java b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/entity/EntityHumanNPC.java index 5a0289ed2..0ae0e7406 100644 --- a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/entity/EntityHumanNPC.java +++ b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/entity/EntityHumanNPC.java @@ -301,7 +301,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable bf *= 0.98F; bg *= 0.9F; moveWithFallDamage(be, bf); // movement method - NMS.setHeadYaw(getBukkitEntity(), yaw); + NMS.setHeadAndBodyYaw(getBukkitEntity(), yaw); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/NMSImpl.java b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/NMSImpl.java index 5622d50fe..425b8928e 100644 --- a/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/NMSImpl.java +++ b/v1_11_R1/src/main/java/net/citizensnpcs/nms/v1_11_R1/util/NMSImpl.java @@ -182,9 +182,9 @@ import net.citizensnpcs.nms.v1_11_R1.entity.nonliving.ThrownPotionController; import net.citizensnpcs.nms.v1_11_R1.entity.nonliving.TippedArrowController; import net.citizensnpcs.nms.v1_11_R1.entity.nonliving.WitherSkullController; import net.citizensnpcs.npc.EntityControllers; -import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator; import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator; +import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.skin.SkinnableEntity; import net.citizensnpcs.trait.RotationTrait; import net.citizensnpcs.trait.versioned.BossBarTrait; @@ -466,6 +466,11 @@ public class NMSImpl implements NMSBridge { return new BoundingBox(bb.a, bb.b, bb.c, bb.d, bb.e, bb.f); } + @Override + public double getBoundingBoxHeight(org.bukkit.entity.Entity entity) { + return getHandle(entity).length; + } + @Override public BoundingBox getCollisionBox(org.bukkit.block.Block block) { WorldServer world = ((CraftWorld) block.getWorld()).getHandle(); @@ -499,11 +504,6 @@ public class NMSImpl implements NMSBridge { return getHandle((LivingEntity) entity).aP; } - @Override - public double getBoundingBoxHeight(org.bukkit.entity.Entity entity) { - return getHandle(entity).length; - } - @Override public float getHorizontalMovement(org.bukkit.entity.Entity entity) { if (!entity.getType().isAlive()) @@ -1254,16 +1254,23 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof LivingEntity)) return; EntityLiving handle = (EntityLiving) getHandle(entity); yaw = Util.clamp(yaw); handle.aO = yaw; if (!(handle instanceof EntityHuman)) { - handle.aN = yaw; + handle.aN = yaw; // TODO: why this } - handle.aP = yaw; + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((EntityLiving) getHandle(entity)).aP = Util.clamp(yaw); } @Override diff --git a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java index a040a0960..ed8037e84 100644 --- a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java +++ b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/entity/EntityHumanNPC.java @@ -318,7 +318,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable bg *= 0.98F; bh *= 0.9F; moveWithFallDamage(be, bf, bg); // movement method - NMS.setHeadYaw(getBukkitEntity(), yaw); + NMS.setHeadAndBodyYaw(getBukkitEntity(), yaw); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/NMSImpl.java b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/NMSImpl.java index 76eae76a6..ffceb3676 100644 --- a/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/NMSImpl.java +++ b/v1_12_R1/src/main/java/net/citizensnpcs/nms/v1_12_R1/util/NMSImpl.java @@ -1261,16 +1261,23 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof LivingEntity)) return; EntityLiving handle = (EntityLiving) getHandle(entity); yaw = Util.clamp(yaw); handle.aO = yaw; if (!(handle instanceof EntityHuman)) { - handle.aN = yaw; + handle.aN = yaw; // TODO: why this } - handle.aP = yaw; + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((EntityLiving) getHandle(entity)).aP = Util.clamp(yaw); } @Override diff --git a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/entity/EntityHumanNPC.java b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/entity/EntityHumanNPC.java index 89e74f203..a033861f3 100644 --- a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/entity/EntityHumanNPC.java +++ b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/entity/EntityHumanNPC.java @@ -294,7 +294,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable bj *= 0.98F; bk *= 0.9F; moveWithFallDamage(bh, bi, bj); // movement method - NMS.setHeadYaw(getBukkitEntity(), yaw); + NMS.setHeadAndBodyYaw(getBukkitEntity(), yaw); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java index 2291404b6..293e92d65 100644 --- a/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java +++ b/v1_13_R2/src/main/java/net/citizensnpcs/nms/v1_13_R2/util/NMSImpl.java @@ -1298,16 +1298,23 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof LivingEntity)) return; EntityLiving handle = (EntityLiving) getHandle(entity); yaw = Util.clamp(yaw); handle.aR = yaw; if (!(handle instanceof EntityHuman)) { - handle.aQ = yaw; + handle.aQ = yaw; // TODO: why this } - handle.aS = yaw; + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((EntityLiving) getHandle(entity)).aS = Util.clamp(yaw); } @Override diff --git a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/EntityHumanNPC.java b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/EntityHumanNPC.java index fb1c20c37..d36e19ced 100644 --- a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/EntityHumanNPC.java +++ b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/EntityHumanNPC.java @@ -298,7 +298,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable bd *= 0.98F; be *= 0.9F; moveWithFallDamage(new Vec3D(this.bb, this.bc, this.bd)); // movement method - NMS.setHeadYaw(getBukkitEntity(), yaw); + NMS.setHeadAndBodyYaw(getBukkitEntity(), yaw); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/NMSImpl.java b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/NMSImpl.java index 9b14bf510..17d859323 100644 --- a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/NMSImpl.java +++ b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/util/NMSImpl.java @@ -1332,16 +1332,23 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof LivingEntity)) return; EntityLiving handle = (EntityLiving) getHandle(entity); yaw = Util.clamp(yaw); handle.aL = yaw; if (!(handle instanceof EntityHuman)) { - handle.aK = yaw; + handle.aK = yaw; // TODO: why this } - handle.aM = yaw; + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((EntityLiving) getHandle(entity)).aM = Util.clamp(yaw); } @Override diff --git a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/EntityHumanNPC.java b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/EntityHumanNPC.java index 37d376860..6cc334287 100644 --- a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/EntityHumanNPC.java +++ b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/EntityHumanNPC.java @@ -298,7 +298,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable aZ *= 0.98F; bb *= 0.98F; moveWithFallDamage(new Vec3D(this.aZ, this.ba, this.bb)); // movement method - NMS.setHeadYaw(getBukkitEntity(), yaw); + NMS.setHeadAndBodyYaw(getBukkitEntity(), yaw); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/NMSImpl.java b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/NMSImpl.java index fee2e2936..d64c66411 100644 --- a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/NMSImpl.java +++ b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/util/NMSImpl.java @@ -1349,16 +1349,23 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof LivingEntity)) return; EntityLiving handle = (EntityLiving) getHandle(entity); yaw = Util.clamp(yaw); handle.aJ = yaw; if (!(handle instanceof EntityHuman)) { - handle.aI = yaw; + handle.aI = yaw; // TODO: why this } - handle.aK = yaw; + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((EntityLiving) getHandle(entity)).aK = Util.clamp(yaw); } @Override diff --git a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/EntityHumanNPC.java b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/EntityHumanNPC.java index 5407dd056..6d4464815 100644 --- a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/EntityHumanNPC.java +++ b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/EntityHumanNPC.java @@ -267,7 +267,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable aR *= 0.98F; aT *= 0.98F; moveWithFallDamage(new Vec3D(this.aR, this.aS, this.aT)); // movement method - NMS.setHeadYaw(getBukkitEntity(), yaw); + NMS.setHeadAndBodyYaw(getBukkitEntity(), yaw); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/NMSImpl.java b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/NMSImpl.java index f520c9bee..06d53012a 100644 --- a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/NMSImpl.java +++ b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/util/NMSImpl.java @@ -1378,7 +1378,7 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof LivingEntity)) return; EntityLiving handle = (EntityLiving) getHandle(entity); @@ -1387,7 +1387,14 @@ public class NMSImpl implements NMSBridge { if (!(handle instanceof EntityHuman)) { handle.aA = yaw; // TODO: why this } - handle.setHeadRotation(yaw); + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((EntityLiving) getHandle(entity)).setHeadRotation(Util.clamp(yaw)); } @Override diff --git a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/EntityHumanNPC.java b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/EntityHumanNPC.java index e98e9e978..e721c6d96 100644 --- a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/EntityHumanNPC.java +++ b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/EntityHumanNPC.java @@ -275,7 +275,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable xxa *= 0.98F; zza *= 0.98F; moveWithFallDamage(new Vec3(this.xxa, this.yya, this.zza)); - NMS.setHeadYaw(getBukkitEntity(), getYRot()); + NMS.setHeadAndBodyYaw(getBukkitEntity(), getYRot()); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java index 225f14c63..e7e201b94 100644 --- a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java +++ b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/util/NMSImpl.java @@ -1035,7 +1035,7 @@ public class NMSImpl implements NMSBridge { return; yaw = Util.clamp(yaw); handle.setYRot(yaw); - setHeadYaw(entity, yaw); + setHeadAndBodyYaw(entity, yaw); handle.setXRot(pitch); } @@ -1063,7 +1063,7 @@ public class NMSImpl implements NMSBridge { yaw = yaw - 90; } if (headOnly) { - setHeadYaw(entity, (float) yaw); + setHeadAndBodyYaw(entity, (float) yaw); } else { look(entity, (float) yaw, (float) pitch); } @@ -1378,7 +1378,7 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof org.bukkit.entity.LivingEntity)) return; LivingEntity handle = (LivingEntity) getHandle(entity); @@ -1387,7 +1387,14 @@ public class NMSImpl implements NMSBridge { if (!(handle instanceof net.minecraft.world.entity.player.Player)) { handle.setYBodyRot(yaw); } - handle.setYHeadRot(yaw); + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((LivingEntity) getHandle(entity)).setYHeadRot(Util.clamp(yaw)); } @Override diff --git a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/EntityHumanNPC.java b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/EntityHumanNPC.java index a74acafd8..3c0adc943 100644 --- a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/EntityHumanNPC.java +++ b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/EntityHumanNPC.java @@ -273,7 +273,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable xxa *= 0.98F; zza *= 0.98F; moveWithFallDamage(new Vec3(this.xxa, this.yya, this.zza)); - NMS.setHeadYaw(getBukkitEntity(), getYRot()); + NMS.setHeadAndBodyYaw(getBukkitEntity(), getYRot()); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java index 1a4e3cc1c..e569cf559 100644 --- a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java +++ b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/NMSImpl.java @@ -1386,7 +1386,7 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof org.bukkit.entity.LivingEntity)) return; LivingEntity handle = (LivingEntity) getHandle(entity); @@ -1395,7 +1395,14 @@ public class NMSImpl implements NMSBridge { if (!(handle instanceof net.minecraft.world.entity.player.Player)) { handle.setYBodyRot(yaw); } - handle.setYHeadRot(yaw); + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((LivingEntity) getHandle(entity)).setYHeadRot(Util.clamp(yaw)); } @Override diff --git a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/EntityHumanNPC.java b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/EntityHumanNPC.java index 52ae45dcb..b9aad835a 100644 --- a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/EntityHumanNPC.java +++ b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/EntityHumanNPC.java @@ -273,7 +273,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable xxa *= 0.98F; zza *= 0.98F; moveWithFallDamage(new Vec3(this.xxa, this.yya, this.zza)); - NMS.setHeadYaw(getBukkitEntity(), getYRot()); + NMS.setHeadAndBodyYaw(getBukkitEntity(), getYRot()); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/NMSImpl.java b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/NMSImpl.java index 9268a1e38..4efb03952 100644 --- a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/NMSImpl.java +++ b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/NMSImpl.java @@ -1527,7 +1527,7 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof org.bukkit.entity.LivingEntity)) return; LivingEntity handle = (LivingEntity) getHandle(entity); @@ -1536,7 +1536,14 @@ public class NMSImpl implements NMSBridge { if (!(handle instanceof net.minecraft.world.entity.player.Player)) { handle.setYBodyRot(yaw); } - handle.setYHeadRot(yaw); + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((LivingEntity) getHandle(entity)).setYHeadRot(Util.clamp(yaw)); } @Override diff --git a/v1_20_R3/pom.xml b/v1_20_R3/pom.xml index c65141b01..5b436509d 100644 --- a/v1_20_R3/pom.xml +++ b/v1_20_R3/pom.xml @@ -9,7 +9,7 @@ citizens-v1_20_R3 UTF-8 - 1.20.3-R0.1-SNAPSHOT + 1.20.4-R0.1-SNAPSHOT diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DolphinController.java b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DolphinController.java index 9554c6943..c4514148c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DolphinController.java +++ b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DolphinController.java @@ -52,9 +52,7 @@ public class DolphinController extends MobEntityController { public static class EntityDolphinNPC extends Dolphin implements NPCHolder { private boolean inProtectedTick; - private final CitizensNPC npc; - private MoveControl oldMoveController; public EntityDolphinNPC(EntityType types, Level level) { diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EntityHumanNPC.java b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EntityHumanNPC.java index 2c6f2a406..01edb7b67 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EntityHumanNPC.java +++ b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EntityHumanNPC.java @@ -277,7 +277,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable xxa *= 0.98F; zza *= 0.98F; moveWithFallDamage(new Vec3(this.xxa, this.yya, this.zza)); - NMS.setHeadYaw(getBukkitEntity(), getYRot()); + NMS.setHeadAndBodyYaw(getBukkitEntity(), getYRot()); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java index a35e94d66..99a057a8c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java +++ b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java @@ -1498,7 +1498,7 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof org.bukkit.entity.LivingEntity)) return; LivingEntity handle = (LivingEntity) getHandle(entity); @@ -1507,7 +1507,14 @@ public class NMSImpl implements NMSBridge { if (!(handle instanceof net.minecraft.world.entity.player.Player)) { handle.setYBodyRot(yaw); } - handle.setYHeadRot(yaw); + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((LivingEntity) getHandle(entity)).setYHeadRot(Util.clamp(yaw)); } @Override @@ -2552,11 +2559,11 @@ public class NMSImpl implements NMSBridge { Map.class); private static final MethodHandle ATTRIBUTE_SUPPLIER = NMS.getFirstGetter(AttributeMap.class, AttributeSupplier.class); + private static final MethodHandle AVAILABLE_BEHAVIORS_BY_PRIORITY = NMS.getGetter(Brain.class, "f"); private static final Set BAD_CONTROLLER_LOOK = EnumSet.of(EntityType.POLAR_BEAR, EntityType.BEE, EntityType.SILVERFISH, EntityType.SHULKER, EntityType.ENDERMITE, EntityType.ENDER_DRAGON, EntityType.BAT, EntityType.SLIME, EntityType.DOLPHIN, EntityType.MAGMA_CUBE, EntityType.HORSE, EntityType.GHAST, EntityType.SHULKER, EntityType.PHANTOM); - private static final MethodHandle AVAILABLE_BEHAVIORS_BY_PRIORITY = NMS.getGetter(Brain.class, "f"); private static final MethodHandle BUKKITENTITY_FIELD_SETTER = NMS.getSetter(Entity.class, "bukkitEntity"); private static final MethodHandle CHUNKMAP_UPDATE_PLAYER_STATUS = NMS.getMethodHandle(ChunkMap.class, "a", true, ServerPlayer.class, boolean.class); diff --git a/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/entity/EntityHumanNPC.java b/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/entity/EntityHumanNPC.java index ea5b7267f..f26e839dc 100644 --- a/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/entity/EntityHumanNPC.java +++ b/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/entity/EntityHumanNPC.java @@ -308,7 +308,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable ba *= 0.98F; bb *= 0.9F; moveWithFallDamage(aZ, ba); // movement method - NMS.setHeadYaw(getBukkitEntity(), yaw); + NMS.setHeadAndBodyYaw(getBukkitEntity(), yaw); if (jumpTicks > 0) { jumpTicks--; } diff --git a/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/util/NMSImpl.java b/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/util/NMSImpl.java index 004f7379d..f11c6230f 100644 --- a/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/util/NMSImpl.java +++ b/v1_8_R3/src/main/java/net/citizensnpcs/nms/v1_8_R3/util/NMSImpl.java @@ -156,9 +156,9 @@ import net.citizensnpcs.nms.v1_8_R3.entity.nonliving.TNTPrimedController; import net.citizensnpcs.nms.v1_8_R3.entity.nonliving.ThrownExpBottleController; import net.citizensnpcs.nms.v1_8_R3.entity.nonliving.WitherSkullController; import net.citizensnpcs.npc.EntityControllers; -import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator; import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator; +import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.skin.SkinnableEntity; import net.citizensnpcs.trait.RotationTrait; import net.citizensnpcs.util.EmptyChannel; @@ -402,6 +402,11 @@ public class NMSImpl implements NMSBridge { return new BoundingBox(bb.a, bb.b, bb.c, bb.d, bb.e, bb.f); } + @Override + public double getBoundingBoxHeight(org.bukkit.entity.Entity entity) { + return getHandle(entity).length; + } + @Override public BoundingBox getCollisionBox(org.bukkit.block.Block block) { WorldServer world = ((CraftWorld) block.getWorld()).getHandle(); @@ -433,11 +438,6 @@ public class NMSImpl implements NMSBridge { return getHandle((LivingEntity) entity).aK; } - @Override - public double getBoundingBoxHeight(org.bukkit.entity.Entity entity) { - return getHandle(entity).length; - } - @Override public float getHorizontalMovement(org.bukkit.entity.Entity entity) { if (!entity.getType().isAlive()) @@ -1119,16 +1119,23 @@ public class NMSImpl implements NMSBridge { } @Override - public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + public void setHeadAndBodyYaw(org.bukkit.entity.Entity entity, float yaw) { if (!(entity instanceof LivingEntity)) return; EntityLiving handle = (EntityLiving) getHandle(entity); yaw = Util.clamp(yaw); handle.aJ = yaw; if (!(handle instanceof EntityHuman)) { - handle.aI = yaw; + handle.aI = yaw; // TODO: why this } - handle.aK = yaw; + setHeadYaw(entity, yaw); + } + + @Override + public void setHeadYaw(org.bukkit.entity.Entity entity, float yaw) { + if (!(entity instanceof org.bukkit.entity.LivingEntity)) + return; + ((EntityLiving) getHandle(entity)).aK = Util.clamp(yaw); } @Override