优化火炮指示器显示效果和操纵

This commit is contained in:
Light_Quanta 2025-07-09 21:03:40 +08:00
parent 8b8bbc7f0d
commit 44bb4340ba
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
2 changed files with 14 additions and 8 deletions

View file

@ -59,9 +59,9 @@ public class SpyglassRangeOverlay implements LayeredDraw.Layer {
var screenWidth = guiGraphics.guiWidth(); var screenWidth = guiGraphics.guiWidth();
var screenHeight = guiGraphics.guiHeight(); 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.getMainHandItem().is(ModItems.ARTILLERY_INDICATOR.get()) || player.isScoping()) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) {
if (player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) { if (player.getMainHandItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
ItemStack stack = player.getUseItem(); ItemStack stack = player.getMainHandItem();
poseStack.pushPose(); poseStack.pushPose();
RenderSystem.disableDepthTest(); RenderSystem.disableDepthTest();
RenderSystem.depthMask(false); RenderSystem.depthMask(false);
@ -79,14 +79,16 @@ public class SpyglassRangeOverlay implements LayeredDraw.Layer {
float k = ((screenWidth - i) / 2); float k = ((screenWidth - i) / 2);
float l = ((screenHeight - j) / 2); float l = ((screenHeight - j) / 2);
float w = i * 21 / 9; float w = i * 21 / 9;
if (player.isUsingItem()) {
preciseBlit(guiGraphics, Mod.loc("textures/screens/spyglass.png"), k - (2 * w / 7), l, 0, 0.0F, w, j, w, j); preciseBlit(guiGraphics, Mod.loc("textures/screens/spyglass.png"), k - (2 * w / 7), l, 0, 0.0F, w, j, w, j);
}
// 标记位置 // 标记位置
Vec3 pos; Vec3 pos;
var parameters = stack.get(ModDataComponents.FIRING_PARAMETERS); var parameters = stack.get(ModDataComponents.FIRING_PARAMETERS);
if (parameters != null) { if (parameters != null) {
var blockPos = parameters.pos(); 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 { } else {
pos = Vec3.ZERO; pos = Vec3.ZERO;
} }
@ -115,12 +117,16 @@ public class SpyglassRangeOverlay implements LayeredDraw.Layer {
} }
} }
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, (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); 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(); poseStack.popPose();
} }
// vehicle info display
boolean lookAtEntity = false; boolean lookAtEntity = false;
BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getViewVector(1).scale(512)), BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getViewVector(1).scale(512)),

View file

@ -296,7 +296,7 @@ public class ClientEventHandler {
PacketDistributor.sendToServer(ArtilleryIndicatorFireMessage.INSTANCE); PacketDistributor.sendToServer(ArtilleryIndicatorFireMessage.INSTANCE);
} }
} else { } else {
holdArtilleryIndicator = Mth.clamp(holdArtilleryIndicator - 1, 0, 10); holdArtilleryIndicator = 0;
} }
isProne(player); isProne(player);