Makes the hotbar and experience/jump bars slide in and out.

This commit is contained in:
Markil3
2021-03-01 18:54:47 -07:00
parent 1bf31b7bcd
commit 3b42b1729d
2 changed files with 101 additions and 13 deletions

View File

@@ -205,6 +205,50 @@ public class TimerUtils
setAlpha(1.0F);
}
/**
* Obtains the offset from the bottom of the screen that the hotbar
* receives.
*
* @return The offset the hotbar uses.
*/
public static int getHotbarTranslation()
{
return (int) (22F * (1 - Main.getAlpha(hotbarTime)));
}
/**
* Obtains the offset from the bottom of the screen that the experience bar
* receives.
*
* @return The offset the experience bar uses.
*/
public static int getExperienceTranslation()
{
return (int) ((12F + (22 - getHotbarTranslation())) * (1 - Main.getAlpha(experienceTime))) + getHotbarTranslation();
}
/**
* Obtains the offset from the bottom of the screen that the jump bar
* receives.
*
* @return The offset the jump bar uses.
*/
public static int getJumpTranslation()
{
return (int) ((12F + (22 - getHotbarTranslation())) * (1 - Main.getAlpha(jumpTime))) + getHotbarTranslation();
}
/**
* Obtains the offset that the status bars (health, hunger, etc.) gets from
* their usual position.
*
* @return The offset.
*/
public static float getHealthTranslation()
{
return 7 * (1 - Math.max(Main.getAlpha(experienceTime), Main.getAlpha(jumpTime))) + 22 * (1 - Main.getAlpha(hotbarTime));//Math.min(, getHotbarTranslation());
}
/**
* Run whenever the player clicks a mouse button. This brings the hands into
* view, and briefly brings the health and hunger into view if the held item
@@ -386,7 +430,7 @@ public class TimerUtils
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawMountHealth()
public static boolean drawMountHealth(MatrixStack stack)
{
/*
* When the health percentage falls to this level or below, the
@@ -431,6 +475,10 @@ public class TimerUtils
if (mountTime > 0)
{
stack.push();
stack.translate(0F,
getHealthTranslation(),
0F);
setAlpha(Main.getAlpha(mountTime));
return false;
}
@@ -663,8 +711,9 @@ public class TimerUtils
* @return If true, then cancel drawing the jump bar.
*
* @since 0.1-1.16.4-fabric
* @param stack
*/
public static boolean drawJumpbar()
public static boolean drawJumpbar(MatrixStack stack)
{
MinecraftClient mc = MinecraftClient.getInstance();
ClientPlayerEntity entity;
@@ -687,6 +736,8 @@ public class TimerUtils
}
if (jumpTime > 0)
{
stack.push();
stack.translate(0F, TimerUtils.getJumpTranslation(), 0F);
setAlpha(Main.getAlpha(jumpTime));
return false;
}
@@ -701,7 +752,7 @@ public class TimerUtils
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawExperience()
public static boolean drawExperience(MatrixStack stack)
{
MinecraftClient mc = MinecraftClient.getInstance();
ClientPlayerEntity entity;
@@ -731,6 +782,8 @@ public class TimerUtils
}
if (experienceTime > 0)
{
stack.push();
stack.translate(0F, TimerUtils.getExperienceTranslation(), 0F);
setAlpha(Main.getAlpha(experienceTime));
return false;
}
@@ -953,8 +1006,11 @@ public class TimerUtils
*
* @since 0.1-1.16.4-fabric
*/
public static void recolorHotbar()
public static void recolorHotbar(MatrixStack stack)
{
RenderSystem.pushMatrix();
stack.push();
RenderSystem.translatef(0F, TimerUtils.getHotbarTranslation(), 0F);
setAlpha(Main.getAlpha(hotbarTime));
}
}

View File

@@ -16,6 +16,8 @@
*/
package markil3.immersive_hud.mixin;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.hud.InGameHud;
import net.minecraft.client.network.ClientPlayerEntity;
@@ -95,7 +97,7 @@ public class HudHook
int x,
CallbackInfo callbackInfo)
{
if (TimerUtils.drawJumpbar())
if (TimerUtils.drawJumpbar(stack))
{
callbackInfo.cancel();
}
@@ -115,6 +117,7 @@ public class HudHook
int x,
CallbackInfo callbackInfo)
{
stack.pop();
/*
* Resets the color so that nothing else is bothered.
*/
@@ -136,7 +139,7 @@ public class HudHook
int x,
CallbackInfo callbackInfo)
{
if (TimerUtils.drawExperience())
if (TimerUtils.drawExperience(stack))
{
callbackInfo.cancel();
}
@@ -156,12 +159,38 @@ public class HudHook
int x,
CallbackInfo callbackInfo)
{
stack.pop();
/*
* Resets the color so that nothing else is bothered.
*/
TimerUtils.resetAlpha();
}
/**
* Changes the position of the status bars as the ones below them move up
* and down.
*
* @param stack - The matrix stack used.
*
* @return The same matrix stack, with a new matrix pushed onto it.
*/
@ModifyVariable(method = "renderStatusBars(Lnet/minecraft/client/util" +
"/math/MatrixStack;)V", at = @At("HEAD"))
public MatrixStack startStatus(MatrixStack stack)
{
stack.push();
stack.translate(0F, TimerUtils.getHealthTranslation(), 0F);
return stack;
}
@ModifyVariable(method = "renderStatusBars(Lnet/minecraft/client/util" +
"/math/MatrixStack;)V", at = @At("TAIL"))
public MatrixStack finishStatus(MatrixStack stack)
{
stack.pop();
return stack;
}
/**
* Determines whether or not to draw the mount's health.
*
@@ -175,7 +204,7 @@ public class HudHook
cancellable = true)
public void startMountHealth(MatrixStack stack, CallbackInfo callbackInfo)
{
if (TimerUtils.drawMountHealth())
if (TimerUtils.drawMountHealth(stack))
{
callbackInfo.cancel();
}
@@ -196,6 +225,7 @@ public class HudHook
/*
* Resets the color so that nothing else is bothered.
*/
stack.pop();
TimerUtils.resetAlpha();
}
@@ -236,15 +266,15 @@ public class HudHook
/**
* Makes the actual adjustment to the hotbar as needed.
*
* @param matrices - The matrix drawing stack.
* @param callbackInfo
* @param f - The original transparency
* @param stack - The matrix stack
*
* @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric
*/
@ModifyVariable(method = "renderStatusEffectOverlay" +
"(Lnet/minecraft/client/util/math/MatrixStack;)V", at =
@At(value = "STORE"), ordinal = 1)
@At(value = "STORE"))
public float updatePotion(float f,
MatrixStack stack)
{
@@ -309,14 +339,14 @@ public class HudHook
MatrixStack matrices,
CallbackInfo callbackInfo)
{
TimerUtils.recolorHotbar();
TimerUtils.recolorHotbar(matrices);
}
/**
* Resets any changes from drawing the hotbar.
*
* @param tickDelta
* @param matrices - The matrix drawing stack.
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
@@ -324,9 +354,11 @@ public class HudHook
*/
@Inject(method = "renderHotbar", at = @At(value = "TAIL"))
public void finishHotbar(float tickDelta,
MatrixStack matrices,
MatrixStack stack,
CallbackInfo callbackInfo)
{
RenderSystem.popMatrix();
stack.pop();
/*
* Resets the color so that nothing else is bothered.
*/