From 44bb4340ba17141b62cf195d1489526077cc1f72 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Wed, 9 Jul 2025 21:03:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=81=AB=E7=82=AE=E6=8C=87?= =?UTF-8?q?=E7=A4=BA=E5=99=A8=E6=98=BE=E7=A4=BA=E6=95=88=E6=9E=9C=E5=92=8C?= =?UTF-8?q?=E6=93=8D=E7=BA=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/overlay/SpyglassRangeOverlay.java | 20 ++++++++++++------- .../event/ClientEventHandler.java | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/SpyglassRangeOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/SpyglassRangeOverlay.java index 02e871a48..2a9d0ee7d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/SpyglassRangeOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/SpyglassRangeOverlay.java @@ -59,9 +59,9 @@ public class SpyglassRangeOverlay implements LayeredDraw.Layer { var screenWidth = guiGraphics.guiWidth(); var screenHeight = guiGraphics.guiHeight(); - if (((player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) || player.isScoping()) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) { - if (player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) { - ItemStack stack = player.getUseItem(); + if ((player.getMainHandItem().is(ModItems.ARTILLERY_INDICATOR.get()) || player.isScoping()) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) { + if (player.getMainHandItem().is(ModItems.ARTILLERY_INDICATOR.get())) { + ItemStack stack = player.getMainHandItem(); poseStack.pushPose(); RenderSystem.disableDepthTest(); RenderSystem.depthMask(false); @@ -79,14 +79,16 @@ public class SpyglassRangeOverlay implements LayeredDraw.Layer { float k = ((screenWidth - i) / 2); float l = ((screenHeight - j) / 2); float w = i * 21 / 9; - preciseBlit(guiGraphics, Mod.loc("textures/screens/spyglass.png"), k - (2 * w / 7), l, 0, 0.0F, w, j, w, j); + if (player.isUsingItem()) { + preciseBlit(guiGraphics, Mod.loc("textures/screens/spyglass.png"), k - (2 * w / 7), l, 0, 0.0F, w, j, w, j); + } // 标记位置 Vec3 pos; var parameters = stack.get(ModDataComponents.FIRING_PARAMETERS); if (parameters != null) { var blockPos = parameters.pos(); - pos = new Vec3(blockPos.getX(), blockPos.getY(), blockPos.getZ()); + pos = new Vec3(blockPos.getX() - 0.5, blockPos.getY() + 0.5, blockPos.getZ() + 0.5); } else { pos = Vec3.ZERO; } @@ -115,12 +117,16 @@ public class SpyglassRangeOverlay implements LayeredDraw.Layer { } } - RenderHelper.fill(guiGraphics, RenderType.guiOverlay(), (float) screenWidth / 2 - 20, (float) (screenHeight / 2 + 44), (float) screenWidth / 2 + 20, (float) screenHeight / 2 + 48, -90, -16777216); - RenderHelper.fill(guiGraphics, RenderType.guiOverlay(), (float) screenWidth / 2 - 20, (float) (screenHeight / 2 + 44), (float) (screenWidth / 2 - 20 + 4 * ClientEventHandler.holdArtilleryIndicator), (float) screenHeight / 2 + 48, -90, -1); + if (ClientEventHandler.holdArtilleryIndicator > 0) { + RenderHelper.fill(guiGraphics, RenderType.guiOverlay(), (float) screenWidth / 2 - 20, (float) (screenHeight / 2 + 44), (float) screenWidth / 2 + 20, (float) screenHeight / 2 + 48, -90, -16777216); + RenderHelper.fill(guiGraphics, RenderType.guiOverlay(), (float) screenWidth / 2 - 20, (float) (screenHeight / 2 + 44), (float) (screenWidth / 2 - 20 + 4 * ClientEventHandler.holdArtilleryIndicator), (float) screenHeight / 2 + 48, -90, -1); + } poseStack.popPose(); } + // vehicle info display + boolean lookAtEntity = false; BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getViewVector(1).scale(512)), diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index f50669cdf..16d223cfc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -296,7 +296,7 @@ public class ClientEventHandler { PacketDistributor.sendToServer(ArtilleryIndicatorFireMessage.INSTANCE); } } else { - holdArtilleryIndicator = Mth.clamp(holdArtilleryIndicator - 1, 0, 10); + holdArtilleryIndicator = 0; } isProne(player);