Compare commits

..

4 Commits

Author SHA1 Message Date
Markil3
711e6121d4 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.
2021-03-26 10:47:38 -06:00
Markil3
13045618ec Catches any errors that occur when triggering events.
It is pretty annoying for the game to crash because of a GUI mod. This should reduce that.
2021-03-26 09:18:01 -06:00
Markil3
5e553f2e72 Fixes a ClassCastException (#1) 2021-03-25 17:14:47 -06:00
Markil3
2fe4ec56f8 Fixes the hand not properly sliding out of view. 2021-03-04 09:05:09 -07:00
6 changed files with 363 additions and 230 deletions

View File

@@ -11,6 +11,6 @@ forge_version=35.1.37
cloth_version=4.11.14
# Mod Properties
mod_version = 1.0
mod_version = 1.1
maven_group = markil3
archives_base_name = immersive_hud

View File

@@ -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.
*

View File

@@ -58,6 +58,8 @@ public class EventBus
*/
@SubscribeEvent
public static void onClick(final PlayerInteractEvent event)
{
try
{
DistExecutor.safeRunWhenOn(Dist.CLIENT,
(DistExecutor.SafeSupplier<DistExecutor.SafeRunnable>) () -> new DistExecutor.SafeRunnable()
@@ -73,6 +75,14 @@ public class EventBus
}
});
}
catch (Exception e)
{
LOGGER.error(
"Error in running markil3.immersive_hud.EventBus#onClick " +
"event",
e);
}
}
/**
* Run whenever the player mounts something. This brings the mount's health
@@ -85,6 +95,8 @@ public class EventBus
*/
@SubscribeEvent
public static void onMount(final EntityMountEvent event)
{
try
{
DistExecutor.safeRunWhenOn(Dist.CLIENT,
(DistExecutor.SafeSupplier<DistExecutor.SafeRunnable>) () -> new DistExecutor.SafeRunnable()
@@ -96,6 +108,14 @@ public class EventBus
}
});
}
catch (Exception e)
{
LOGGER.error(
"Error in running markil3.immersive_hud.EventBus#onMount " +
"event",
e);
}
}
/**
* Run whenever a hand is rendered in 1st person. This brings the player
@@ -106,11 +126,23 @@ public class EventBus
@SubscribeEvent
public static void onRenderHand(final RenderHandEvent event)
{
if (TimerUtils.onRenderHand(event.getHand(), event.getMatrixStack(), event.getPartialTicks()))
try
{
if (TimerUtils.onRenderHand(event.getHand(),
event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running markil3.immersive_hud" +
".EventBus#onRenderHand event",
e);
}
}
/**
* Called whenever we are drawing a part of the GUI. This is where most of
@@ -120,6 +152,8 @@ public class EventBus
*/
@SubscribeEvent
public static void onGUIDraw(final RenderGameOverlayEvent event)
{
try
{
Minecraft mc = Minecraft.getInstance();
boolean fadeIn = false;
@@ -168,7 +202,8 @@ public class EventBus
case HEALTH:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawHealth(event.getMatrixStack(), event.getPartialTicks()))
if (TimerUtils.drawHealth(event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
@@ -182,7 +217,8 @@ public class EventBus
case FOOD:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawHunger(event.getMatrixStack(), event.getPartialTicks()))
if (TimerUtils.drawHunger(event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
@@ -199,7 +235,8 @@ public class EventBus
case ARMOR:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawArmor(event.getMatrixStack(), event.getPartialTicks()))
if (TimerUtils.drawArmor(event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
@@ -216,7 +253,8 @@ public class EventBus
case AIR:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawAir(event.getMatrixStack(), event.getPartialTicks()))
if (TimerUtils.drawAir(event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
@@ -233,7 +271,8 @@ public class EventBus
case HEALTHMOUNT:
if (event instanceof RenderGameOverlayEvent.Pre)
{
if (TimerUtils.drawMountHealth(event.getMatrixStack(), event.getPartialTicks()))
if (TimerUtils.drawMountHealth(event.getMatrixStack(),
event.getPartialTicks()))
{
event.setCanceled(true);
}
@@ -250,8 +289,11 @@ public class EventBus
event.setCanceled(true);
if (!TimerUtils.drawJumpbar(event.getPartialTicks()))
{
RenderUtils.renderHorseJumpBar(mc, mc.ingameGUI,
event.getMatrixStack(), event.getPartialTicks(), TimerUtils.jumpTime);
RenderUtils.renderHorseJumpBar(mc,
mc.ingameGUI,
event.getMatrixStack(),
event.getPartialTicks(),
TimerUtils.jumpTime);
}
}
break;
@@ -261,11 +303,21 @@ public class EventBus
event.setCanceled(true);
if (!TimerUtils.drawExperience(event.getPartialTicks()))
{
RenderUtils.renderExperience(mc, mc.ingameGUI,
event.getMatrixStack(), event.getPartialTicks(), TimerUtils.experienceTime);
RenderUtils.renderExperience(mc,
mc.ingameGUI,
event.getMatrixStack(),
event.getPartialTicks(),
TimerUtils.experienceTime);
}
}
break;
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running markil3.immersive_hud.EventBus#onGUIDraw event",
e);
}
}
}

View File

@@ -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()

View File

@@ -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;
@@ -295,8 +294,12 @@ public class TimerUtils
MatrixStack matrixStack,
float ticks)
{
float HAND_UP_TIME = 1F;
float HAND_UP_TIME = 20F;
boolean hideHands =
ConfigManager.getInstance().hideHands();
if (hideHands)
{
switch (hand)
{
case OFF_HAND:
@@ -350,6 +353,7 @@ public class TimerUtils
}
break;
}
}
return false;
}
@@ -384,6 +388,8 @@ public class TimerUtils
boolean changed = false;
boolean canceled = false;
if (ConfigManager.getInstance().hideCrosshair())
{
if (mc.objectMouseOver != null && mc.objectMouseOver.getType() != RayTraceResult.Type.MISS)
{
if (mc.objectMouseOver.getType() == RayTraceResult.Type.ENTITY)
@@ -413,6 +419,7 @@ public class TimerUtils
{
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
{
@@ -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)
{
@@ -930,7 +939,7 @@ public class TimerUtils
Entity tmp = mc.player.getRidingEntity();
boolean changed = false;
if (tmp == null)
if (tmp == null || !(tmp instanceof LivingEntity))
{
mountHealth = -1;
mountMaxHealth = -1;

View File

@@ -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"