diff --git a/src/main/java/com/atsuishio/superbwarfare/client/screens/JavelinHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/screens/JavelinHudOverlay.java index 015506e91..9f5a4b3c9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/screens/JavelinHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/screens/JavelinHudOverlay.java @@ -35,6 +35,7 @@ import static com.atsuishio.superbwarfare.client.RenderHelper.preciseBlit; public class JavelinHudOverlay { private static final ResourceLocation FRAME = ModUtils.loc("textures/screens/javelin/frame.png"); + private static final ResourceLocation FRAME_TARGET = ModUtils.loc("textures/screens/javelin/frame_target.png"); private static final ResourceLocation FRAME_LOCK = ModUtils.loc("textures/screens/javelin/frame_lock.png"); private static float scopeScale = 1; @@ -90,8 +91,9 @@ public class JavelinHudOverlay { Entity targetEntity = EntityFindUtil.findEntity(player.level(), stack.getOrCreateTag().getString("TargetEntity")); List entities = SeekTool.seekLivingEntities(player, player.level(), 512, 10); + Entity naerestEntity = SeekTool.seekLivingEntity(player, player.level(), 512, 10); - double zoom = 3.6; + double zoom = 3; for (var e : entities) { Vec3 pos = new Vec3(e.getX(), e.getEyeY(), e.getZ()); @@ -102,12 +104,13 @@ public class JavelinHudOverlay { if (p == null) return; boolean lockOn = stack.getOrCreateTag().getInt("SeekTime") > 20 && e == targetEntity; + boolean nearest = e == naerestEntity; poseStack.pushPose(); int x = (int) p.x; int y = (int) p.y; - HudUtil.blit(poseStack, lockOn ? FRAME_LOCK : FRAME, x - 12, y - 12, 0, 0, 24, 24, 24, 24, 1f); + HudUtil.blit(poseStack, lockOn ? FRAME_LOCK : nearest ? FRAME_TARGET : FRAME, x - 12, y - 12, 0, 0, 24, 24, 24, 24, 1f); poseStack.popPose(); } } else { diff --git a/src/main/java/com/atsuishio/superbwarfare/client/screens/RedTriangleOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/screens/RedTriangleOverlay.java index 32ec5feee..b47def666 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/screens/RedTriangleOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/screens/RedTriangleOverlay.java @@ -43,7 +43,9 @@ public class RedTriangleOverlay { if (idf == null) return; - Vec3 p = RenderHelper.worldToScreen(new Vec3(idf.getX(), idf.getEyeY() + 2,idf.getZ()), cameraPos); + double distance = idf.position().distanceTo(cameraPos); + + Vec3 p = RenderHelper.worldToScreen(new Vec3(idf.getX(), idf.getEyeY() + 0.5 + 0.07 * distance, idf.getZ()), cameraPos); if (p == null) return; diff --git a/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame.png b/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame.png index 29c93af16..129e2fd39 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame.png and b/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame_lock.png b/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame_lock.png index ffc05897b..e639cd246 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame_lock.png and b/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame_lock.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame_target.png b/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame_target.png new file mode 100644 index 000000000..37f9425a9 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/screens/javelin/frame_target.png differ