优化各种HUD
This commit is contained in:
parent
27893f03ab
commit
2e7e789bc0
11 changed files with 229 additions and 232 deletions
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package com.atsuishio.superbwarfare.client.overlay;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
@ -10,9 +9,9 @@ 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();
|
||||
|
|
|
@ -74,6 +74,5 @@ public class ArmorPlateOverlay {
|
|||
guiGraphics.blit(texture, 20, h - 12, 0, 0, (int) amount, 6, length, 6);
|
||||
|
||||
guiGraphics.pose().popPose();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -37,28 +37,40 @@ 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) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
Player player = mc.player;
|
||||
|
||||
if (player == null) return;
|
||||
|
||||
GuiGraphics guiGraphics = event.getGuiGraphics();
|
||||
PoseStack poseStack = guiGraphics.pose();
|
||||
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
|
||||
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);
|
||||
|
||||
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();
|
||||
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);
|
||||
|
||||
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"),
|
||||
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);
|
||||
|
||||
DroneEntity entity = EntityFindUtil.findDrone(player.level(), stack.getOrCreateTag().getString("LinkedDrone"));
|
||||
|
@ -66,64 +78,62 @@ public class DroneUIOverlay {
|
|||
if (entity != null) {
|
||||
boolean lookAtEntity = false;
|
||||
double distance = player.distanceTo(entity);
|
||||
double block_range = entity.position().distanceTo((Vec3.atLowerCornerOf(entity.level().clip(
|
||||
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 entity_range = 0;
|
||||
double entityRange = 0;
|
||||
|
||||
Entity lookingEntity = SeekTool.seekLivingEntity(entity, entity.level(), 512, 2);
|
||||
|
||||
if (lookingEntity != null) {
|
||||
lookAtEntity = true;
|
||||
entity_range = entity.distanceTo(lookingEntity);
|
||||
entityRange = entity.distanceTo(lookingEntity);
|
||||
}
|
||||
|
||||
int color = -1;
|
||||
|
||||
if (distance > MAX_DISTANCE - 48) {
|
||||
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.warning"),
|
||||
guiGraphics.drawString(mc.font, Component.translatable("des.superbwarfare.drone.warning"),
|
||||
w / 2 - 18, h / 2 - 47, -65536, false);
|
||||
color = -65536;
|
||||
}
|
||||
|
||||
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.distance")
|
||||
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);
|
||||
|
||||
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.health")
|
||||
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)) {
|
||||
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.ammo")
|
||||
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 {
|
||||
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.translatable("des.superbwarfare.drone.kamikaze"),
|
||||
guiGraphics.drawString(mc.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(entityRange) + "M " + lookingEntity.getDisplayName().getString())),
|
||||
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")
|
||||
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.range")
|
||||
.append(Component.literal(new DecimalFormat("##.#").format(block_range) + "M")),
|
||||
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);
|
||||
}
|
||||
}
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
|
||||
Camera camera = mc.gameRenderer.getMainCamera();
|
||||
Vec3 cameraPos = camera.getPosition();
|
||||
PoseStack poseStack = event.getGuiGraphics().pose();
|
||||
|
||||
List<Entity> entities = SeekTool.seekLivingEntities(entity, entity.level(), 256, 30);
|
||||
float fovAdjust2 = (float) (Minecraft.getInstance().options.fov().get() / 30) - 1;
|
||||
float fovAdjust2 = (float) (mc.options.fov().get() / 30) - 1;
|
||||
double zoom = 0.975 * ClientEventHandler.droneFovLerp + 0.06 * fovAdjust2;
|
||||
|
||||
for (var e : entities) {
|
||||
|
@ -132,8 +142,7 @@ public class DroneUIOverlay {
|
|||
|
||||
var cPos = cameraPos.add(lookAngle);
|
||||
Vec3 p = RenderHelper.worldToScreen(pos, cPos);
|
||||
if (p == null) return;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
poseStack.popPose();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,24 +45,29 @@ 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.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;
|
||||
|
@ -69,20 +75,20 @@ public class HelicopterHudOverlay {
|
|||
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);
|
||||
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());
|
||||
// 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);
|
||||
|
||||
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(event.getGuiGraphics(), ModUtils.loc("textures/screens/helicopter/roll_ind.png"), (float) w / 2 - 8, (float) h / 2 - 88, 0, 0, 16, 16, 16, 16);
|
||||
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();
|
||||
|
||||
event.getGuiGraphics().blit(ModUtils.loc("textures/screens/helicopter/heli_power_ruler.png"), w / 2 + 100, h / 2 - 64, 0, 0, 64, 128, 64, 128);
|
||||
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())));
|
||||
|
@ -91,23 +97,23 @@ public class HelicopterHudOverlay {
|
|||
|
||||
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);
|
||||
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(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"),
|
||||
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);
|
||||
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##").format(mobileVehicle.getY())),
|
||||
guiGraphics.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"),
|
||||
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)) {
|
||||
event.getGuiGraphics().drawString(Minecraft.getInstance().font, Component.literal( "TERRAIN TERRAIN"),
|
||||
guiGraphics.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!"),
|
||||
guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("SINK RATE,PULL UP!"),
|
||||
w / 2 - 53, h / 2 + 24, -65536, false);
|
||||
}
|
||||
|
||||
|
@ -127,24 +133,19 @@ public class HelicopterHudOverlay {
|
|||
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;
|
||||
|
||||
if (p != null) {
|
||||
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);
|
||||
poseStack.popPose();
|
||||
}
|
||||
|
||||
poseStack.popPose();
|
||||
|
||||
|
||||
} else {
|
||||
scopeScale = 0.7f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Matrix4f getVehicleTransform(VehicleEntity vehicle) {
|
||||
Matrix4f transform = new Matrix4f();
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
|
||||
if (idf == null) return;
|
||||
|
||||
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;
|
||||
|
||||
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();
|
||||
|
||||
}
|
||||
|
||||
RenderSystem.depthMask(true);
|
||||
RenderSystem.defaultBlendFunc();
|
||||
RenderSystem.enableDepthTest();
|
||||
RenderSystem.disableBlend();
|
||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
|
||||
poseStack.popPose();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue