From 711e6121d4a39171a21038fcf642c24969096ab7 Mon Sep 17 00:00:00 2001 From: Markil3 <75867393+Markil3@users.noreply.github.com> Date: Fri, 26 Mar 2021 10:47:38 -0600 Subject: [PATCH] Adds the ability to always show hands and crosshairs. Apparently, @rflambert doesn't want the hands to fade. It seemed like a good idea, so I added a configurable option to the main repo. --- .../markil3/immersive_hud/ConfigManager.java | 50 ++++++ .../java/markil3/immersive_hud/ModMenu.java | 18 ++ .../markil3/immersive_hud/TimerUtils.java | 157 +++++++++--------- .../assets/immersive_hud/lang/en_us.json | 4 + 4 files changed, 155 insertions(+), 74 deletions(-) diff --git a/src/main/java/markil3/immersive_hud/ConfigManager.java b/src/main/java/markil3/immersive_hud/ConfigManager.java index 262507c..33638ff 100644 --- a/src/main/java/markil3/immersive_hud/ConfigManager.java +++ b/src/main/java/markil3/immersive_hud/ConfigManager.java @@ -155,7 +155,9 @@ public class ConfigManager private final TimeValues hungerTime; private final TimeValues effectTime; private final ForgeConfigSpec.IntValue crosshairTime; + private final ForgeConfigSpec.BooleanValue hideCrosshair; private final ForgeConfigSpec.IntValue handTime; + private final ForgeConfigSpec.BooleanValue hideHands; private final ForgeConfigSpec.BooleanValue showArmor; private final ForgeConfigSpec.DoubleValue minHealth; private final ForgeConfigSpec.IntValue minHunger; @@ -182,6 +184,10 @@ public class ConfigManager 6 * TICKS_PER_SECOND, 0, 10 * 60 * TICKS_PER_SECOND); + this.hideCrosshair = + configSpecBuilder.translation( + "immersive_hud.configGui.hideCrosshair.title") + .define("hideCrosshair", true); this.handTime = configSpecBuilder.translation( "immersive_hud.configGui.handTime.title") @@ -189,6 +195,10 @@ public class ConfigManager 30 * TICKS_PER_SECOND, 0, 10 * 60 * TICKS_PER_SECOND); + this.hideHands = + configSpecBuilder.translation( + "immersive_hud.configGui.hideHands.title") + .define("hideHands", true); this.showArmor = configSpecBuilder.translation( "immersive_hud.configGui.showArmor.title") .define("showArmor", true); @@ -282,6 +292,16 @@ public class ConfigManager return this.crosshairTime.get(); } + /** + * Checks whether the crosshairs should be hidden after a period of time. + * + * @return - Whether or not crosshairs will be hidden. + */ + public boolean hideCrosshair() + { + return this.hideCrosshair.get(); + } + /** * Obtains the time that the hands are allowed to display. * @@ -292,6 +312,16 @@ public class ConfigManager return this.handTime.get(); } + /** + * Checks whether hands should be hidden after a period of time. + * + * @return - Whether or not hands will be hidden. + */ + public boolean hideHands() + { + return this.hideHands.get(); + } + /** * Checks whether the armor bar should render. * @@ -334,6 +364,16 @@ public class ConfigManager this.crosshairTime.set(time); } + /** + * Sets whether the crosshairs should be hidden after a period of time. + * + * @param hide - Whether or not crosshairs will be hidden. + */ + public void hideCrosshair(boolean hide) + { + this.hideCrosshair.set(hide); + } + /** * Sets the time that the hands are allowed to display. * @@ -344,6 +384,16 @@ public class ConfigManager this.handTime.set(time); } + /** + * Sets whether hands should be hidden after a period of time. + * + * @param hide - Whether or not hands will be hidden. + */ + public void hideHands(boolean hide) + { + this.hideHands.set(hide); + } + /** * Determines whether the armor bar should render. * diff --git a/src/main/java/markil3/immersive_hud/ModMenu.java b/src/main/java/markil3/immersive_hud/ModMenu.java index a5090e7..3f28285 100644 --- a/src/main/java/markil3/immersive_hud/ModMenu.java +++ b/src/main/java/markil3/immersive_hud/ModMenu.java @@ -123,6 +123,15 @@ public class ModMenu .setCrosshairTime((int) (val * TICKS_PER_SECOND))) .build()); + general.addEntry(entryBuilder.startBooleanToggle(new TranslationTextComponent( + "option.immersive_hud.hideCrosshair"), ConfigManager.getInstance().hideCrosshair()) + .setDefaultValue(true) + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud.hideCrosshair")) + .setSaveConsumer(val -> ConfigManager.getInstance() + .hideCrosshair(val)) + .build()); + general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent( "option.immersive_hud.handTime"), (float) ConfigManager.getInstance() @@ -134,6 +143,15 @@ public class ModMenu .setHandTime((int) (val * TICKS_PER_SECOND))) .build()); + general.addEntry(entryBuilder.startBooleanToggle(new TranslationTextComponent( + "option.immersive_hud.hideHands"), ConfigManager.getInstance().hideHands()) + .setDefaultValue(true) + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud.hideHands")) + .setSaveConsumer(val -> ConfigManager.getInstance() + .hideHands(val)) + .build()); + general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent( "option.immersive_hud.minHealth"), ConfigManager.getInstance() diff --git a/src/main/java/markil3/immersive_hud/TimerUtils.java b/src/main/java/markil3/immersive_hud/TimerUtils.java index abe7354..2d62830 100644 --- a/src/main/java/markil3/immersive_hud/TimerUtils.java +++ b/src/main/java/markil3/immersive_hud/TimerUtils.java @@ -24,7 +24,6 @@ import net.minecraft.potion.Effect; import net.minecraft.potion.EffectInstance; import net.minecraft.potion.Effects; import net.minecraft.util.Hand; -import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.RayTraceResult; @@ -270,11 +269,11 @@ public class TimerUtils if (item.isFood()) { healthTime = health.getMaxTime() - (healthTime > 0 ? - health.getFadeInTime() : - 0); + health.getFadeInTime() : + 0); hungerTime = hunger.getMaxTime() - (hungerTime > 0 ? - hunger.getFadeInTime() : - 0); + hunger.getFadeInTime() : + 0); } } } @@ -297,58 +296,63 @@ public class TimerUtils { float HAND_UP_TIME = 20F; - switch (hand) + boolean hideHands = + ConfigManager.getInstance().hideHands(); + if (hideHands) { - case OFF_HAND: - if (mainHandTime > 0 && mainHandTime < HAND_UP_TIME) + switch (hand) { - /* - * Undo the transformation of the previous hand - */ - matrixStack - .translate(0, - 1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME, - 0); - } - if (offHandTime == 0 && !offHandLock) - { - return true; - } - else if (!offHandLock && (mapLock & 0b01) == 0) - { - if (offHandTime > 0) - { - offHandTime -= ticks; - } - if (offHandTime < HAND_UP_TIME) + case OFF_HAND: + if (mainHandTime > 0 && mainHandTime < HAND_UP_TIME) { + /* + * Undo the transformation of the previous hand + */ matrixStack .translate(0, - -1.0F * (HAND_UP_TIME - offHandTime) / HAND_UP_TIME, + 1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME, 0); } - } - break; - case MAIN_HAND: - if (mainHandTime == 0 && !mainHandLock) - { - return true; - } - else if (!mainHandLock && (mapLock & 0b10) == 0) - { - if (mainHandTime > 0) + if (offHandTime == 0 && !offHandLock) { - mainHandTime -= ticks; + return true; } - if (mainHandTime < HAND_UP_TIME) + else if (!offHandLock && (mapLock & 0b01) == 0) { - matrixStack - .translate(0, - -1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME, - 0); + if (offHandTime > 0) + { + offHandTime -= ticks; + } + if (offHandTime < HAND_UP_TIME) + { + matrixStack + .translate(0, + -1.0F * (HAND_UP_TIME - offHandTime) / HAND_UP_TIME, + 0); + } } + break; + case MAIN_HAND: + if (mainHandTime == 0 && !mainHandLock) + { + return true; + } + else if (!mainHandLock && (mapLock & 0b10) == 0) + { + if (mainHandTime > 0) + { + mainHandTime -= ticks; + } + if (mainHandTime < HAND_UP_TIME) + { + matrixStack + .translate(0, + -1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME, + 0); + } + } + break; } - break; } return false; } @@ -361,8 +365,8 @@ public class TimerUtils ConfigManager.TimeValues health = ConfigManager.getInstance().getHealthTime(); mountTime = health.getMaxTime() - (mountTime > 0 ? - health.getFadeInTime() : - 0); + health.getFadeInTime() : + 0); jumpTime = 0; } @@ -384,34 +388,37 @@ public class TimerUtils boolean changed = false; boolean canceled = false; - if (mc.objectMouseOver != null && mc.objectMouseOver.getType() != RayTraceResult.Type.MISS) + if (ConfigManager.getInstance().hideCrosshair()) { - if (mc.objectMouseOver.getType() == RayTraceResult.Type.ENTITY) + if (mc.objectMouseOver != null && mc.objectMouseOver.getType() != RayTraceResult.Type.MISS) { - if (mc.objectMouseOver.hitInfo == null || mc.objectMouseOver.hitInfo != mc.player - .getRidingEntity()) + if (mc.objectMouseOver.getType() == RayTraceResult.Type.ENTITY) + { + if (mc.objectMouseOver.hitInfo == null || mc.objectMouseOver.hitInfo != mc.player + .getRidingEntity()) + { + changed = true; + } + } + else { changed = true; } } + if (changed || mainHandLock || offHandLock || crosshairTime > 0) + { + setAlpha(Main.getAlpha(crosshairTime > 0 ? + crosshairTime : + CROSSHAIR_TIME, CROSSHAIR_TIME, 0, 0)); + } else { - changed = true; + canceled = true; + } + if (crosshairTime > 0) + { + crosshairTime -= ticks; } - } - if (changed || mainHandLock || offHandLock || crosshairTime > 0) - { - setAlpha(Main.getAlpha(crosshairTime > 0 ? - crosshairTime : - CROSSHAIR_TIME, CROSSHAIR_TIME, 0, 0)); - } - else - { - canceled = true; - } - if (crosshairTime > 0) - { - crosshairTime -= ticks; } return canceled; @@ -475,7 +482,8 @@ public class TimerUtils } else if (effectinstance.getDuration() <= BLINK_TIME + potion.getFadeInTime()) { - effectAlpha = -(effectinstance.getDuration() - BLINK_TIME) / 22F + 0.454F; + effectAlpha = + -(effectinstance.getDuration() - BLINK_TIME) / 22F + 0.454F; } else { @@ -646,11 +654,11 @@ public class TimerUtils if (item.isFood()) { healthTime = health.getMaxTime() - (healthTime > 0 ? - health.getFadeInTime() : - 0); + health.getFadeInTime() : + 0); hungerTime = hunger.getMaxTime() - (hungerTime > 0 ? - hunger.getFadeInTime() : - 0); + hunger.getFadeInTime() : + 0); } if (i == 0) { @@ -758,7 +766,8 @@ public class TimerUtils * Only makes a change if the player is healthy. Otherwise, * the bar is shown. */ - if (health / maxHealth > HEALTH_BOUNDARY && !mc.player.isPotionActive(Effects.WITHER) && !mc.player.isPotionActive(Effects.POISON)) + if (health / maxHealth > HEALTH_BOUNDARY && !mc.player.isPotionActive( + Effects.WITHER) && !mc.player.isPotionActive(Effects.POISON)) { if (healthTime > 0) { @@ -817,8 +826,8 @@ public class TimerUtils if (changed || hunger <= HUNGER_BOUNDARY) { hungerTime = hungerTimes.getMaxTime() - (hungerTime > 0 ? - hungerTimes.getFadeInTime() : - 0); + hungerTimes.getFadeInTime() : + 0); } else if (hungerTime > 0) { diff --git a/src/main/resources/assets/immersive_hud/lang/en_us.json b/src/main/resources/assets/immersive_hud/lang/en_us.json index 86e1475..238c055 100644 --- a/src/main/resources/assets/immersive_hud/lang/en_us.json +++ b/src/main/resources/assets/immersive_hud/lang/en_us.json @@ -19,7 +19,9 @@ "option.immersive_hud.effectFadeIn": "Potion Fade In Time", "option.immersive_hud.effectFadeOut": "Potion Fade Out Time", "option.immersive_hud.crosshairTime": "Crosshair Display Time", + "option.immersive_hud.hideCrosshair": "Hide Crosshair", "option.immersive_hud.handTime": "Hand Display Time", + "option.immersive_hud.hideHands": "Hide Hands", "option.immersive_hud.minHealth": "Minimum Health Fade", "option.immersive_hud.minHunger": "Minimum Hunger Fade", "option.immersive_hud.showArmor": "Show Armor", @@ -42,7 +44,9 @@ "tooltip.immersive_hud.effectFadeIn": "How many seconds it takes for potion icons to fade in", "tooltip.immersive_hud.effectFadeOut": "How many seconds it takes for potion icons to fade out", "tooltip.immersive_hud.crosshairTime": "How many seconds the crosshairs can be on screen", + "tooltip.immersive_hud.hideCrosshair": "Whether or not the crosshairs should be hidden after a period of time", "tooltip.immersive_hud.handTime": "How many seconds the hands can be on screen", + "tooltip.immersive_hud.hideHands": "Whether or not hands should be hidden after a period of time", "tooltip.immersive_hud.minHealth": "When the percentage of health goes below this level, the health bar won't fade away", "tooltip.immersive_hud.minHunger": "When the hunger level goes below this level, the hunger bar won't fade away", "tooltip.immersive_hud.showArmor": "Whether or not the armor bar should display on the HUD"