From 5b70f5b1b41bbe637e4ae22d71eb83277b0bdf53 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Wed, 25 Dec 2024 21:53:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B3=E6=BB=91=E6=99=BA=E6=85=A7=E8=8A=AF?= =?UTF-8?q?=E7=89=87=E7=9A=84=E9=94=81=E5=AE=9A=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/event/ClientEventHandler.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 74927fc87..75ac05d4d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -1178,11 +1178,12 @@ public class ClientEventHandler { if (level > 0) { Entity seekingEntity = SeekTool.seekLivingEntity(player, player.level(), 32 + 8 * (level - 1), 25 / zoomFov); if (seekingEntity != null && seekingEntity.isAlive()) { - player.lookAt(EntityAnchorArgument.Anchor.EYES, seekingEntity.getEyePosition()); + Vec3 targetVec = new Vec3(seekingEntity.getX() - player.getX(),seekingEntity.getEyeY() - player.getEyeY(), seekingEntity.getZ() - player.getZ()).normalize(); + Vec3 toVec = new Vec3(player.getViewVector(1).add(targetVec.scale(times)).toVector3f()); + look(player, toVec); } } } - return; } @@ -1201,6 +1202,18 @@ public class ClientEventHandler { } } + public static void look(Player player, Vec3 pTarget) { + double d0 = pTarget.x; + double d1 = pTarget.y; + double d2 = pTarget.z; + double d3 = Math.sqrt(d0 * d0 + d2 * d2); + player.setXRot(Mth.wrapDegrees((float) (-(Mth.atan2(d1, d3) * 57.2957763671875)))); + player.setYRot(Mth.wrapDegrees((float) (Mth.atan2(d2, d0) * 57.2957763671875) - 90.0F)); + player.setYHeadRot(player.getYRot()); + player.xRotO = player.getXRot(); + player.yRotO = player.getYRot(); + } + @SubscribeEvent public static void setPlayerInvisible(RenderPlayerEvent.Pre event) { var otherPlayer = event.getEntity();