diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java index 4a6d25405..8a071a116 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java @@ -32,17 +32,10 @@ public class AmmoBarOverlay { private static final ResourceLocation DIR = ModUtils.loc("textures/gun_icon/fire_mode/dir.png"); private static final ResourceLocation MOUSE = ModUtils.loc("textures/gun_icon/fire_mode/mouse.png"); - private static boolean creativeAmmo() { + private static boolean hasCreativeAmmo() { Player player = Minecraft.getInstance().player; - int count = 0; - if (player != null) { - for (var inv : player.getInventory().items) { - if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { - count++; - } - } - } - return count > 0; + if (player == null) return false; + return player.getInventory().hasAnyMatching(s -> s.is(ModItems.CREATIVE_AMMO_BOX.get())); } @SubscribeEvent(priority = EventPriority.NORMAL) @@ -150,7 +143,7 @@ public class AmmoBarOverlay { poseStack.pushPose(); poseStack.scale(1.5f, 1.5f, 1f); - if ((stack.getItem() == ModItems.MINIGUN.get() || stack.getItem() == ModItems.BOCEK.get()) && creativeAmmo()) { + if ((stack.getItem() == ModItems.MINIGUN.get() || stack.getItem() == ModItems.BOCEK.get()) && hasCreativeAmmo()) { event.getGuiGraphics().drawString( Minecraft.getInstance().font, "∞", @@ -238,7 +231,7 @@ public class AmmoBarOverlay { return ""; } - if (!creativeAmmo()) { + if (!hasCreativeAmmo()) { if (stack.is(ModTags.Items.LAUNCHER) || stack.getItem() == ModItems.TASER.get()) { return "" + stack.getOrCreateTag().getInt("max_ammo"); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/ArmRendererFixOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/ArmRendererFixOverlay.java index 8eda93945..55acd7bb7 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/ArmRendererFixOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/ArmRendererFixOverlay.java @@ -1,4 +1,3 @@ - package com.atsuishio.superbwarfare.client.overlay; import net.minecraft.client.Minecraft; @@ -10,16 +9,16 @@ import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber({Dist.CLIENT}) +@Mod.EventBusSubscriber(value = Dist.CLIENT) public class ArmRendererFixOverlay { - @SubscribeEvent(priority = EventPriority.NORMAL) - public static void eventHandler(RenderGuiEvent.Pre event) { - int w = event.getWindow().getGuiScaledWidth(); - int h = event.getWindow().getGuiScaledHeight(); - Player entity = Minecraft.getInstance().player; - if (entity != null) { - InventoryScreen.renderEntityInInventoryFollowsAngle(event.getGuiGraphics(), w / 2 - 114514, h / 2 + 22, 1, 0f, 0, entity); - } + + @SubscribeEvent(priority = EventPriority.NORMAL) + public static void eventHandler(RenderGuiEvent.Pre event) { + int w = event.getWindow().getGuiScaledWidth(); + int h = event.getWindow().getGuiScaledHeight(); + Player entity = Minecraft.getInstance().player; + if (entity != null) { + InventoryScreen.renderEntityInInventoryFollowsAngle(event.getGuiGraphics(), w / 2 - 114514, h / 2 + 22, 1, 0f, 0, entity); + } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/ArmorPlateOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/ArmorPlateOverlay.java index b942b585e..8bb4f8d13 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/ArmorPlateOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/ArmorPlateOverlay.java @@ -74,6 +74,5 @@ public class ArmorPlateOverlay { guiGraphics.blit(texture, 20, h - 12, 0, 0, (int) amount, 6, length, 6); guiGraphics.pose().popPose(); - } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/CannonHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/CannonHudOverlay.java index b87895e21..fa66172a8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/CannonHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/CannonHudOverlay.java @@ -29,7 +29,6 @@ import java.text.DecimalFormat; @Mod.EventBusSubscriber(value = Dist.CLIENT) public class CannonHudOverlay { - public static float indicatorPosH = 0; @SubscribeEvent(priority = EventPriority.NORMAL) public static void eventHandler(RenderGuiEvent.Pre event) { @@ -49,6 +48,7 @@ public class CannonHudOverlay { RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); RenderSystem.setShaderColor(1, 1, 1, 1); + float indicatorPosH = 0; if (cannon instanceof Mk42Entity) { indicatorPosH = 1.3f; } @@ -80,27 +80,26 @@ public class CannonHudOverlay { if (ClientEventHandler.zoom) { Entity lookingEntity = TraceTool.findLookingEntity(player, 512); boolean lookAtEntity = false; - double block_range = player.position().distanceTo((Vec3.atLowerCornerOf(player.level().clip( + double blockRange = player.position().distanceTo((Vec3.atLowerCornerOf(player.level().clip( new ClipContext(new Vec3(player.getX(), player.getEyeY() + 1, player.getZ()), new Vec3(player.getX(), player.getEyeY() + 1, player.getZ()).add(player.getLookAngle().scale(512)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos()))); - double entity_range = 0; - + double entityRange = 0; if (lookingEntity instanceof LivingEntity living) { lookAtEntity = true; - entity_range = player.distanceTo(living); + entityRange = player.distanceTo(living); } if (lookAtEntity) { event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range") - .append(Component.literal(new DecimalFormat("##.#").format(entity_range) + "M " + lookingEntity.getDisplayName().getString())), + .append(Component.literal(new DecimalFormat("##.#").format(entityRange) + "M " + lookingEntity.getDisplayName().getString())), w / 2 + 14, h / 2 - 20, -1, false); } else { - if (block_range > 511) { + if (blockRange > 511) { event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range") .append(Component.literal("---M")), w / 2 + 14, h / 2 - 20, -1, false); } else { event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range") - .append(Component.literal(new DecimalFormat("##.#").format(block_range) + "M")), + .append(Component.literal(new DecimalFormat("##.#").format(blockRange) + "M")), w / 2 + 14, h / 2 - 20, -1, false); } } @@ -117,8 +116,6 @@ public class CannonHudOverlay { event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.mortar.pitch") .append(Component.literal(new DecimalFormat("##.#").format(-cannon.getXRot()) + "°")), w / 2 + 14, h / 2 - 29, -1, false); - - } private static boolean shouldRenderCrossHair(Player player) { diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/CrossHairOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/CrossHairOverlay.java index 442622f71..fe2688825 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/CrossHairOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/CrossHairOverlay.java @@ -33,6 +33,7 @@ import static com.atsuishio.superbwarfare.client.RenderHelper.preciseBlit; @Mod.EventBusSubscriber(value = Dist.CLIENT) public class CrossHairOverlay { + private static final ResourceLocation REX_HORIZONTAL = ModUtils.loc("textures/screens/rex_horizontal.png"); private static final ResourceLocation REX_VERTICAL = ModUtils.loc("textures/screens/rex_vertical.png"); @@ -52,7 +53,8 @@ public class CrossHairOverlay { return; } - if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).edit) return; + if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).edit) + return; if (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity) return; GuiGraphics guiGraphics = event.getGuiGraphics(); @@ -131,7 +133,7 @@ public class CrossHairOverlay { PoseStack poseStack = guiGraphics.pose(); poseStack.pushPose(); - poseStack.rotateAround(Axis.ZP.rotationDegrees(-gunRot * Mth.RAD_TO_DEG),w / 2f + moveX, h / 2f + moveY, 0); + poseStack.rotateAround(Axis.ZP.rotationDegrees(-gunRot * Mth.RAD_TO_DEG), w / 2f + moveX, h / 2f + moveY, 0); preciseBlit(guiGraphics, REX_HORIZONTAL, (float) (w / 2f - 13.5f - 2.8f * spread) + moveX, h / 2f - 7.5f + moveY, 0, 0, 16, 16, 16, 16); preciseBlit(guiGraphics, REX_HORIZONTAL, (float) (w / 2f - 2.5f + 2.8f * spread) + moveX, h / 2f - 7.5f + moveY, 0, 0, 16, 16, 16, 16); preciseBlit(guiGraphics, REX_VERTICAL, w / 2f - 7.5f + moveX, (float) (h / 2f - 2.5f + 2.8f * spread) + moveY, 0, 0, 16, 16, 16, 16); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/DroneUIOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/DroneUIOverlay.java index 020ffe484..499d71994 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/DroneUIOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/DroneUIOverlay.java @@ -37,103 +37,112 @@ import static com.atsuishio.superbwarfare.entity.DroneEntity.KAMIKAZE; @Mod.EventBusSubscriber(value = Dist.CLIENT) public class DroneUIOverlay { + public static int MAX_DISTANCE = 256; private static final ResourceLocation FRAME = ModUtils.loc("textures/screens/javelin/frame.png"); + @SubscribeEvent(priority = EventPriority.NORMAL) public static void eventHandler(RenderGuiEvent.Pre event) { int w = event.getWindow().getGuiScaledWidth(); int h = event.getWindow().getGuiScaledHeight(); - Player player = Minecraft.getInstance().player; - if (player != null) { - ItemStack stack = player.getMainHandItem(); - RenderSystem.disableDepthTest(); - RenderSystem.depthMask(false); - RenderSystem.enableBlend(); - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - RenderSystem.setShaderColor(1, 1, 1, 1); - if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using") && stack.getOrCreateTag().getBoolean("Linked")) { - event.getGuiGraphics().blit(ModUtils.loc("textures/screens/drone.png"), w / 2 - 16, h / 2 - 16, 0, 0, 32, 32, 32, 32); - event.getGuiGraphics().blit(ModUtils.loc("textures/screens/drone_fov.png"), w / 2 + 100, h / 2 - 64, 0, 0, 64, 129, 64, 129); - GuiGraphics guiGraphics = event.getGuiGraphics(); - preciseBlit(guiGraphics, ModUtils.loc("textures/screens/drone_fov_move.png"), (float) w / 2 + 100, (float) (h / 2 - 64 - ((ClientEventHandler.droneFovLerp - 1) * 23.8)), 0, 0, 64, 129, 64, 129); - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##.#").format(ClientEventHandler.droneFovLerp) + "x"), - w / 2 + 144, h / 2 + 56 - (int) ((ClientEventHandler.droneFovLerp - 1) * 23.8), -1, false); + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; - DroneEntity entity = EntityFindUtil.findDrone(player.level(), stack.getOrCreateTag().getString("LinkedDrone")); + if (player == null) return; - if (entity != null) { - boolean lookAtEntity = false; - double distance = player.distanceTo(entity); - double block_range = entity.position().distanceTo((Vec3.atLowerCornerOf(entity.level().clip( - new ClipContext(entity.getEyePosition(), entity.getEyePosition().add(entity.getViewVector(event.getPartialTick()).scale(520)), - ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos()))); + GuiGraphics guiGraphics = event.getGuiGraphics(); + PoseStack poseStack = guiGraphics.pose(); - double entity_range = 0; + ItemStack stack = player.getMainHandItem(); - Entity lookingEntity = SeekTool.seekLivingEntity(entity, entity.level(), 512, 2); + poseStack.pushPose(); - if (lookingEntity != null) { - lookAtEntity = true; - entity_range = entity.distanceTo(lookingEntity); - } + RenderSystem.disableDepthTest(); + RenderSystem.depthMask(false); + RenderSystem.enableBlend(); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + RenderSystem.setShaderColor(1, 1, 1, 1); - int color = -1; + if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using") && stack.getOrCreateTag().getBoolean("Linked")) { + guiGraphics.blit(ModUtils.loc("textures/screens/drone.png"), w / 2 - 16, h / 2 - 16, 0, 0, 32, 32, 32, 32); + guiGraphics.blit(ModUtils.loc("textures/screens/drone_fov.png"), w / 2 + 100, h / 2 - 64, 0, 0, 64, 129, 64, 129); - if (distance > MAX_DISTANCE - 48) { - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.warning"), - w / 2 - 18, h / 2 - 47, -65536, false); - color = -65536; - } + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/drone_fov_move.png"), (float) w / 2 + 100, (float) (h / 2 - 64 - ((ClientEventHandler.droneFovLerp - 1) * 23.8)), 0, 0, 64, 129, 64, 129); + guiGraphics.drawString(mc.font, Component.literal(new DecimalFormat("##.#").format(ClientEventHandler.droneFovLerp) + "x"), + w / 2 + 144, h / 2 + 56 - (int) ((ClientEventHandler.droneFovLerp - 1) * 23.8), -1, false); - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.distance") - .append(Component.literal(new DecimalFormat("##.#").format(distance) + "M")), - w / 2 + 10, h / 2 + 33, color, false); + DroneEntity entity = EntityFindUtil.findDrone(player.level(), stack.getOrCreateTag().getString("LinkedDrone")); - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.health") - .append(Component.literal(new DecimalFormat("##.#").format(entity.getHealth()) + "/" + new DecimalFormat("##.#").format(entity.getMaxHealth()))), - w / 2 - 77, h / 2 + 33, -1, false); - if (!entity.getEntityData().get(KAMIKAZE)) { - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.ammo") - .append(Component.literal(new DecimalFormat("##.#").format(entity.getEntityData().get(AMMO)) + " / 6")), - w / 2 + 12, h / 2 - 37, -1, false); + if (entity != null) { + boolean lookAtEntity = false; + double distance = player.distanceTo(entity); + double blockRange = entity.position().distanceTo((Vec3.atLowerCornerOf(entity.level().clip( + new ClipContext(entity.getEyePosition(), entity.getEyePosition().add(entity.getViewVector(event.getPartialTick()).scale(520)), + ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos()))); + + double entityRange = 0; + + Entity lookingEntity = SeekTool.seekLivingEntity(entity, entity.level(), 512, 2); + if (lookingEntity != null) { + lookAtEntity = true; + entityRange = entity.distanceTo(lookingEntity); + } + + int color = -1; + + if (distance > MAX_DISTANCE - 48) { + guiGraphics.drawString(mc.font, Component.translatable("des.superbwarfare.drone.warning"), + w / 2 - 18, h / 2 - 47, -65536, false); + color = -65536; + } + + guiGraphics.drawString(mc.font, Component.translatable("des.superbwarfare.drone.distance") + .append(Component.literal(new DecimalFormat("##.#").format(distance) + "M")), + w / 2 + 10, h / 2 + 33, color, false); + + guiGraphics.drawString(mc.font, Component.translatable("des.superbwarfare.drone.health") + .append(Component.literal(new DecimalFormat("##.#").format(entity.getHealth()) + "/" + new DecimalFormat("##.#").format(entity.getMaxHealth()))), + w / 2 - 77, h / 2 + 33, -1, false); + if (!entity.getEntityData().get(KAMIKAZE)) { + guiGraphics.drawString(mc.font, Component.translatable("des.superbwarfare.drone.ammo") + .append(Component.literal(new DecimalFormat("##.#").format(entity.getEntityData().get(AMMO)) + " / 6")), + w / 2 + 12, h / 2 - 37, -1, false); + } else { + guiGraphics.drawString(mc.font, Component.translatable("des.superbwarfare.drone.kamikaze"), + w / 2 + 12, h / 2 - 37, -65536, false); + } + + if (lookAtEntity) { + guiGraphics.drawString(mc.font, Component.translatable("des.superbwarfare.drone.range") + .append(Component.literal(new DecimalFormat("##.#").format(entityRange) + "M " + lookingEntity.getDisplayName().getString())), + w / 2 + 12, h / 2 - 28, color, false); + } else { + if (blockRange > 512) { + guiGraphics.drawString(mc.font, Component.translatable("des.superbwarfare.drone.range") + .append(Component.literal("---M")), w / 2 + 12, h / 2 - 28, color, false); } else { - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.kamikaze"), - w / 2 + 12, h / 2 - 37, -65536, false); - } - - if (lookAtEntity) { - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range") - .append(Component.literal(new DecimalFormat("##.#").format(entity_range) + "M " + lookingEntity.getDisplayName().getString())), + guiGraphics.drawString(mc.font, Component.translatable("des.superbwarfare.drone.range") + .append(Component.literal(new DecimalFormat("##.#").format(blockRange) + "M")), w / 2 + 12, h / 2 - 28, color, false); - } else { - if (block_range > 512) { - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range") - .append(Component.literal("---M")), w / 2 + 12, h / 2 - 28, color, false); - } else { - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range") - .append(Component.literal(new DecimalFormat("##.#").format(block_range) + "M")), - w / 2 + 12, h / 2 - 28, color, false); - } } - Minecraft mc = Minecraft.getInstance(); - Camera camera = mc.gameRenderer.getMainCamera(); - Vec3 cameraPos = camera.getPosition(); - PoseStack poseStack = event.getGuiGraphics().pose(); + } - List entities = SeekTool.seekLivingEntities(entity, entity.level(), 256, 30); - float fovAdjust2 = (float) (Minecraft.getInstance().options.fov().get() / 30) - 1; - double zoom = 0.975 * ClientEventHandler.droneFovLerp + 0.06 * fovAdjust2; + Camera camera = mc.gameRenderer.getMainCamera(); + Vec3 cameraPos = camera.getPosition(); - for (var e : entities) { - Vec3 pos = new Vec3(e.getX(), e.getEyeY(), e.getZ()); - Vec3 lookAngle = entity.getLookAngle().normalize().scale(pos.distanceTo(cameraPos) * (1 - 1.0 / zoom)); + List entities = SeekTool.seekLivingEntities(entity, entity.level(), 256, 30); + float fovAdjust2 = (float) (mc.options.fov().get() / 30) - 1; + double zoom = 0.975 * ClientEventHandler.droneFovLerp + 0.06 * fovAdjust2; - var cPos = cameraPos.add(lookAngle); - Vec3 p = RenderHelper.worldToScreen(pos, cPos); - if (p == null) return; + for (var e : entities) { + Vec3 pos = new Vec3(e.getX(), e.getEyeY(), e.getZ()); + Vec3 lookAngle = entity.getLookAngle().normalize().scale(pos.distanceTo(cameraPos) * (1 - 1.0 / zoom)); + var cPos = cameraPos.add(lookAngle); + Vec3 p = RenderHelper.worldToScreen(pos, cPos); + if (p != null) { poseStack.pushPose(); int x = (int) p.x; int y = (int) p.y; @@ -143,12 +152,14 @@ public class DroneUIOverlay { } } } - - RenderSystem.depthMask(true); - RenderSystem.defaultBlendFunc(); - RenderSystem.enableDepthTest(); - RenderSystem.disableBlend(); - RenderSystem.setShaderColor(1, 1, 1, 1); } + + RenderSystem.depthMask(true); + RenderSystem.defaultBlendFunc(); + RenderSystem.enableDepthTest(); + RenderSystem.disableBlend(); + RenderSystem.setShaderColor(1, 1, 1, 1); + + poseStack.popPose(); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/HelicopterHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/HelicopterHudOverlay.java index db207f51b..793887818 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/HelicopterHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/HelicopterHudOverlay.java @@ -15,6 +15,7 @@ import com.mojang.math.Axis; import net.minecraft.client.Camera; import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; @@ -44,105 +45,105 @@ public class HelicopterHudOverlay { public static void eventHandler(RenderGuiEvent.Pre event) { int w = event.getWindow().getGuiScaledWidth(); int h = event.getWindow().getGuiScaledHeight(); - Player player = Minecraft.getInstance().player; + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; Camera camera = mc.gameRenderer.getMainCamera(); Vec3 cameraPos = camera.getPosition(); - PoseStack poseStack = event.getGuiGraphics().pose(); + GuiGraphics guiGraphics = event.getGuiGraphics(); + PoseStack poseStack = guiGraphics.pose(); - if (player != null) { + if (player == null) return; - if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).edit) - return; + if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).edit) + return; - if (player.getVehicle() instanceof IHelicopterEntity iHelicopterEntity && player.getVehicle() instanceof MobileVehicleEntity mobileVehicle && iHelicopterEntity.isDriver(player) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) { - RenderSystem.disableDepthTest(); - RenderSystem.depthMask(false); - RenderSystem.enableBlend(); - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - RenderSystem.setShaderColor(1, 1, 1, 1); - scopeScale = Mth.lerp(event.getPartialTick(), scopeScale, 1F); - float f = (float) Math.min(w, h); - float f1 = Math.min((float) w / f, (float) h / f) * scopeScale; - float i = Mth.floor(f * f1); - float j = Mth.floor(f * f1); - float k = ((w - i) / 2); - float l = ((h - j) / 2); - preciseBlit(event.getGuiGraphics(), ModUtils.loc("textures/screens/helicopter/heli_base.png"), k, l, 0, 0.0F, i, j, i, j); + if (player.getVehicle() instanceof IHelicopterEntity iHelicopterEntity && player.getVehicle() instanceof MobileVehicleEntity mobileVehicle && iHelicopterEntity.isDriver(player) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) { + poseStack.pushPose(); + RenderSystem.disableDepthTest(); + RenderSystem.depthMask(false); + RenderSystem.enableBlend(); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + RenderSystem.setShaderColor(1, 1, 1, 1); + + scopeScale = Mth.lerp(event.getPartialTick(), scopeScale, 1F); + float f = (float) Math.min(w, h); + float f1 = Math.min((float) w / f, (float) h / f) * scopeScale; + float i = Mth.floor(f * f1); + float j = Mth.floor(f * f1); + float k = ((w - i) / 2); + float l = ((h - j) / 2); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/helicopter/heli_base.png"), k, l, 0, 0.0F, i, j, i, j); + + poseStack.pushPose(); + poseStack.rotateAround(Axis.ZP.rotationDegrees(-iHelicopterEntity.getRotZ(event.getPartialTick())), w / 2f, h / 2f, 0); + float pitch = iHelicopterEntity.getRotX(event.getPartialTick()); + + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/helicopter/heli_line.png"), (float) w / 2 - 128, (float) h / 2 - 512 - 5.475f * pitch, 0, 0, 256, 1024, 256, 1024); + poseStack.popPose(); + poseStack.pushPose(); + poseStack.rotateAround(Axis.ZP.rotationDegrees(-iHelicopterEntity.getRotZ(event.getPartialTick())), w / 2f, h / 2f - 56, 0); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/helicopter/roll_ind.png"), (float) w / 2 - 8, (float) h / 2 - 88, 0, 0, 16, 16, 16, 16); + poseStack.popPose(); + + guiGraphics.blit(ModUtils.loc("textures/screens/helicopter/heli_power_ruler.png"), w / 2 + 100, h / 2 - 64, 0, 0, 64, 128, 64, 128); + + double height = mobileVehicle.position().distanceTo((Vec3.atLowerCornerOf(mobileVehicle.level().clip(new ClipContext(mobileVehicle.position(), mobileVehicle.position().add(new Vec3(0, -1, 0).scale(100)), + ClipContext.Block.OUTLINE, ClipContext.Fluid.ANY, mobileVehicle)).getBlockPos()))); + double blockInWay = mobileVehicle.position().distanceTo((Vec3.atLowerCornerOf(mobileVehicle.level().clip(new ClipContext(mobileVehicle.position(), mobileVehicle.position().add(new Vec3(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z).normalize().scale(100)), + ClipContext.Block.OUTLINE, ClipContext.Fluid.ANY, mobileVehicle)).getBlockPos()))); + + float power = iHelicopterEntity.getPower(); + lerpPower = Mth.lerp(0.001f * event.getPartialTick(), lerpPower, power); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/helicopter/heli_power.png"), (float) w / 2 + 130f, ((float) h / 2 - 64 + 124 - power * 980), 0, 0, 4, power * 980, 4, power * 980); + lerpVy = (float) Mth.lerp(0.021f * event.getPartialTick(), lerpVy, mobileVehicle.getDeltaMovement().y() + 0.06f); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/helicopter/heli_vy_move.png"), (float) w / 2 + 138, ((float) h / 2 - 3 - Math.max(lerpVy * 20, -24) * 2.5f), 0, 0, 8, 8, 8, 8); + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##").format(lerpVy * 20) + "m/s"), + w / 2 + 146, (int) (h / 2 - 3 - Math.max(lerpVy * 20, -24) * 2.5), (((lerpVy < -20 || lerpVy * 20 < -5 || (lerpVy * 20 < -1 && length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72 > 100)) && height < 36) || (length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72 > 40 && blockInWay < 72) ? -65536 : 0x66FF00), false); + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##").format(mobileVehicle.getY())), + w / 2 + 104, h / 2, 0x66FF00, false); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/helicopter/speed_frame.png"), (float) w / 2 - 144, (float) h / 2 - 6, 0, 0, 50, 18, 50, 18); + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##").format(length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72) + "KM/H"), + w / 2 - 140, h / 2, 0x66FF00, false); + + if (((lerpVy * 20 < -5 || (lerpVy * 20 < -1 && length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72 > 100)) && height < 36) + || (length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72 > 40 && blockInWay < 72)) { + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("TERRAIN TERRAIN"), + w / 2 - 42, h / 2 + 24, -65536, false); + } else if (lerpVy * 20 < -20) { + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("SINK RATE,PULL UP!"), + w / 2 - 53, h / 2 + 24, -65536, false); + } + + Matrix4f transform = getVehicleTransform(mobileVehicle); + float x0 = 0f; + float y0 = 0.65f; + float z0 = 0.8f; + + Vector4f worldPosition = transformPosition(transform, x0, y0, z0); + + float fovAdjust2 = (float) (Minecraft.getInstance().options.fov().get() / 30) - 1; + double zoom = 0.96 * 3 + 0.06 * fovAdjust2; + + Vec3 pos = new Vec3(worldPosition.x, worldPosition.y, worldPosition.z).add(mobileVehicle.getViewVector(event.getPartialTick()).scale(500)); + Vec3 lookAngle = player.getLookAngle().normalize().scale(pos.distanceTo(cameraPos) * (1 - 1.0 / zoom)); + + var cPos = cameraPos.add(lookAngle); + + Vec3 p = RenderHelper.worldToScreen(new Vec3(worldPosition.x, worldPosition.y, worldPosition.z).add(mobileVehicle.getViewVector(event.getPartialTick()).scale(500)), ClientEventHandler.zoom ? cPos : cameraPos); + if (p != null) { poseStack.pushPose(); - poseStack.rotateAround(Axis.ZP.rotationDegrees(-iHelicopterEntity.getRotZ(event.getPartialTick())),w / 2f, h / 2f, 0); - float pitch = iHelicopterEntity.getRotX(event.getPartialTick()); -// player.displayClientMessage(Component.literal("Angle:" + new java.text.DecimalFormat("##").format(pitch)), true); - preciseBlit(event.getGuiGraphics(), ModUtils.loc("textures/screens/helicopter/heli_line.png"), (float) w / 2 - 128, (float) h / 2 - 512 - 5.475f * pitch, 0, 0, 256, 1024, 256, 1024); - poseStack.popPose(); - poseStack.pushPose(); - poseStack.rotateAround(Axis.ZP.rotationDegrees(-iHelicopterEntity.getRotZ(event.getPartialTick())),w / 2f, h / 2f - 56, 0); - preciseBlit(event.getGuiGraphics(), ModUtils.loc("textures/screens/helicopter/roll_ind.png"), (float) w / 2 - 8, (float) h / 2 - 88, 0, 0, 16, 16, 16, 16); - poseStack.popPose(); - - event.getGuiGraphics().blit(ModUtils.loc("textures/screens/helicopter/heli_power_ruler.png"), w / 2 + 100, h / 2 - 64, 0, 0, 64, 128, 64, 128); - - double height = mobileVehicle.position().distanceTo((Vec3.atLowerCornerOf(mobileVehicle.level().clip(new ClipContext(mobileVehicle.position(), mobileVehicle.position().add(new Vec3(0, -1, 0).scale(100)), - ClipContext.Block.OUTLINE, ClipContext.Fluid.ANY, mobileVehicle)).getBlockPos()))); - double blockInWay = mobileVehicle.position().distanceTo((Vec3.atLowerCornerOf(mobileVehicle.level().clip(new ClipContext(mobileVehicle.position(), mobileVehicle.position().add(new Vec3(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z).normalize().scale(100)), - ClipContext.Block.OUTLINE, ClipContext.Fluid.ANY, mobileVehicle)).getBlockPos()))); - - float power = iHelicopterEntity.getPower(); - lerpPower = Mth.lerp(0.001f * event.getPartialTick(), lerpPower, power); - preciseBlit(event.getGuiGraphics(), ModUtils.loc("textures/screens/helicopter/heli_power.png"), (float) w / 2 + 130f, ((float) h / 2 - 64 + 124 - power * 980), 0, 0, 4, power * 980, 4, power * 980); - lerpVy = (float) Mth.lerp(0.021f * event.getPartialTick(), lerpVy, mobileVehicle.getDeltaMovement().y() + 0.06f); - preciseBlit(event.getGuiGraphics(), ModUtils.loc("textures/screens/helicopter/heli_vy_move.png"), (float) w / 2 + 138, ((float) h / 2 - 3 - Math.max(lerpVy * 20, -24) * 2.5f), 0, 0, 8, 8, 8, 8); - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##").format(lerpVy * 20) + "m/s"), - w / 2 + 146, (int)(h / 2 - 3 - Math.max(lerpVy * 20, -24) * 2.5), (((lerpVy < -20 || lerpVy * 20 < -5 || (lerpVy * 20 < -1 && length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72 > 100)) && height < 36) || (length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72 > 40 && blockInWay < 72) ? -65536 : 0x66FF00), false); - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##").format(mobileVehicle.getY())), - w / 2 + 104, h / 2, 0x66FF00, false); - preciseBlit(event.getGuiGraphics(), ModUtils.loc("textures/screens/helicopter/speed_frame.png"), (float) w / 2 - 144, (float) h / 2 - 6, 0, 0, 50, 18, 50, 18); - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##").format(length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72) + "KM/H"), - w / 2 - 140, h / 2, 0x66FF00, false); - - if (((lerpVy * 20 < -5 || (lerpVy * 20 < -1 && length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72 > 100)) && height < 36) - ||(length(mobileVehicle.getDeltaMovement().x, mobileVehicle.getDeltaMovement().y + 0.06, mobileVehicle.getDeltaMovement().z) * 72 > 40 && blockInWay < 72)) { - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.literal( "TERRAIN TERRAIN"), - w / 2 - 42, h / 2 + 24, -65536, false); - } else if (lerpVy * 20 < -20) { - event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.literal( "SINK RATE,PULL UP!"), - w / 2 - 53, h / 2 + 24, -65536, false); - } - - Matrix4f transform = getVehicleTransform(mobileVehicle); - float x0 = 0f; - float y0 = 0.65f; - float z0 = 0.8f; - - Vector4f worldPosition = transformPosition(transform, x0, y0, z0); - - float fovAdjust2 = (float) (Minecraft.getInstance().options.fov().get() / 30) - 1; - double zoom = 0.96 * 3 + 0.06 * fovAdjust2; - - Vec3 pos = new Vec3(worldPosition.x, worldPosition.y, worldPosition.z).add(mobileVehicle.getViewVector(event.getPartialTick()).scale(500)); - Vec3 lookAngle = player.getLookAngle().normalize().scale(pos.distanceTo(cameraPos) * (1 - 1.0 / zoom)); - - var cPos = cameraPos.add(lookAngle); - - Vec3 p = RenderHelper.worldToScreen(new Vec3(worldPosition.x, worldPosition.y, worldPosition.z).add(mobileVehicle.getViewVector(event.getPartialTick()).scale(500)),ClientEventHandler.zoom ? cPos : cameraPos); - - if (p == null) return; - - poseStack.pushPose(); - int x = (int) p.x; int y = (int) p.y; - - HudUtil.blit(poseStack, ModUtils.loc("textures/screens/helicopter/crosshair_ind.png"), x-8, y-8, 0, 0, 16, 16, 16, 16, 0x66FF00); - + HudUtil.blit(poseStack, ModUtils.loc("textures/screens/helicopter/crosshair_ind.png"), x - 8, y - 8, 0, 0, 16, 16, 16, 16, 0x66FF00); poseStack.popPose(); - - - } else { - scopeScale = 0.7f; } + + poseStack.popPose(); + } else { + scopeScale = 0.7f; } } @@ -159,7 +160,7 @@ public class HelicopterHudOverlay { return transform.transform(new Vector4f(x, y, z, 1)); } - public static double length(double x, double y,double z) { + public static double length(double x, double y, double z) { return Math.sqrt(x * x + y * y + z * z); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/KillMessageOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/KillMessageOverlay.java index ba2fe1057..b05e19303 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/KillMessageOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/KillMessageOverlay.java @@ -31,6 +31,7 @@ import static com.atsuishio.superbwarfare.client.RenderHelper.preciseBlit; @Mod.EventBusSubscriber(value = Dist.CLIENT) public class KillMessageOverlay { + private static final ResourceLocation HEADSHOT = ModUtils.loc("textures/screens/damage_types/headshot.png"); private static final ResourceLocation KNIFE = ModUtils.loc("textures/screens/damage_types/knife.png"); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/RedTriangleOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/RedTriangleOverlay.java index 66b6362a7..02629be70 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/RedTriangleOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/RedTriangleOverlay.java @@ -22,48 +22,41 @@ import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(value = Dist.CLIENT) public class RedTriangleOverlay { + private static final ResourceLocation TRIANGLE = ModUtils.loc("textures/screens/red_triangle.png"); @SubscribeEvent(priority = EventPriority.NORMAL) public static void eventHandler(RenderGuiEvent.Pre event) { - int w = event.getWindow().getGuiScaledWidth(); - int h = event.getWindow().getGuiScaledHeight(); Minecraft mc = Minecraft.getInstance(); Camera camera = mc.gameRenderer.getMainCamera(); Vec3 cameraPos = camera.getPosition(); PoseStack poseStack = event.getGuiGraphics().pose(); - Player player = Minecraft.getInstance().player; + Player player = mc.player; if (player == null) return; ItemStack stack = player.getMainHandItem(); + if (!stack.is(ModItems.RPG.get())) return; - if (stack.is(ModItems.RPG.get())) { - Entity idf = SeekTool.seekLivingEntity(player, player.level(),128,6); + Entity idf = SeekTool.seekLivingEntity(player, player.level(), 128, 6); + if (idf == null) return; + double distance = idf.position().distanceTo(cameraPos); - if (idf == null) return; + Vec3 p = RenderHelper.worldToScreen(new Vec3(idf.getX(), idf.getEyeY() + 0.5 + 0.07 * distance, idf.getZ()), cameraPos); + if (p == null) return; - double distance = idf.position().distanceTo(cameraPos); + poseStack.pushPose(); + int x = (int) p.x; + int y = (int) p.y; - Vec3 p = RenderHelper.worldToScreen(new Vec3(idf.getX(), idf.getEyeY() + 0.5 + 0.07 * distance, idf.getZ()), cameraPos); - - if (p == null) return; - - poseStack.pushPose(); - - int x = (int) p.x; - int y = (int) p.y; - - HudUtil.blit(poseStack, TRIANGLE, x-4, y-4, 0, 0, 8, 8, 8, 8, -65536); - - poseStack.popPose(); - - } + HudUtil.blit(poseStack, TRIANGLE, x - 4, y - 4, 0, 0, 8, 8, 8, 8, -65536); RenderSystem.depthMask(true); RenderSystem.defaultBlendFunc(); RenderSystem.enableDepthTest(); RenderSystem.disableBlend(); RenderSystem.setShaderColor(1, 1, 1, 1); + + poseStack.popPose(); } } 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 f00e3a242..9a5858da3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/SpyglassRangeOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/SpyglassRangeOverlay.java @@ -26,30 +26,29 @@ public class SpyglassRangeOverlay { Player player = Minecraft.getInstance().player; if (player != null && (player.getMainHandItem().getItem() == Items.SPYGLASS || player.getOffhandItem().getItem() == Items.SPYGLASS) && player.isUsingItem()) { boolean lookAtEntity = false; - double block_range = player.position().distanceTo((Vec3.atLowerCornerOf(player.level().clip( + double blockRange = player.position().distanceTo((Vec3.atLowerCornerOf(player.level().clip( new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(520)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos()))); - double entity_range = 0; - + double entityRange = 0; Entity lookingEntity = TraceTool.findLookingEntity(player, 520); if (lookingEntity != null) { lookAtEntity = true; - entity_range = player.distanceTo(lookingEntity); + entityRange = player.distanceTo(lookingEntity); } if (lookAtEntity) { event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range") - .append(Component.literal(new DecimalFormat("##.#").format(entity_range) + "M " + lookingEntity.getDisplayName().getString())), + .append(Component.literal(new DecimalFormat("##.#").format(entityRange) + "M " + lookingEntity.getDisplayName().getString())), w / 2 + 12, h / 2 - 28, -1, false); } else { - if (block_range > 512) { + if (blockRange > 512) { event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range") .append(Component.literal("---M")), w / 2 + 12, h / 2 - 28, -1, false); } else { event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.range") - .append(Component.literal(new DecimalFormat("##.#").format(block_range) + "M")), + .append(Component.literal(new DecimalFormat("##.#").format(blockRange) + "M")), w / 2 + 12, h / 2 - 28, -1, false); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java index 0a48abc48..8f8441720 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/VehicleHudOverlay.java @@ -1,6 +1,7 @@ package com.atsuishio.superbwarfare.client.overlay; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.config.client.DisplayConfig; import com.atsuishio.superbwarfare.entity.*; import com.atsuishio.superbwarfare.init.ModItems; import com.mojang.blaze3d.platform.GlStateManager; @@ -136,6 +137,7 @@ public class VehicleHudOverlay { ItemStack stack = player.getItemBySlot(EquipmentSlot.CHEST); if (stack == ItemStack.EMPTY) return 0; if (stack.getTag() == null || !stack.getTag().contains("ArmorPlate")) return 0; + if (!DisplayConfig.ARMOR_PLATE_HUD.get()) return 0; return 9; } }