Compare commits

..

6 Commits

Author SHA1 Message Date
Markil3
7664f7447d Fixes a conflict with other poorly-configured mods. 2021-04-06 08:44:15 -06:00
Markil3
929aeec7ba Gets ready for release 1.1 2021-04-01 12:57:15 -06:00
Markil3
2eff4a4bb2 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 11:25:55 -06:00
Markil3
83d17c1037 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 10:24:23 -06:00
Markil3
b2329a34a9 Fixes a ClassCastException (#1) 2021-03-25 17:11:44 -06:00
Markil3
be64f84832 Sets up for Fabric 1.14
Note that we had to remove the modmenu and cloth APIs, since we couldn't figure out how to get the dependency mess to work. Maybe we will fix it later, but at least the .toml config file still works.
2021-03-03 08:26:28 -07:00
9 changed files with 122 additions and 355 deletions

View File

@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version '0.5-SNAPSHOT'
id 'fabric-loom' version '0.6-SNAPSHOT'
id 'maven-publish'
}
@@ -21,9 +21,9 @@ dependencies {
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modApi "me.shedaniel.cloth:config-2:${project.cloth_version}"
// modApi "me.shedaniel.cloth:config-2:${project.cloth_version}"
modApi "me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig_version}"
modImplementation "io.github.prospector:modmenu:${project.modmenu_version}"
// modImplementation "io.github.prospector:modmenu:${project.modmenu_version}"
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
// You may need to force-disable transitiveness on them.

View File

@@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://fabricmc.net/use
minecraft_version=1.15
yarn_mappings=1.15+build.2
minecraft_version=1.14.3
yarn_mappings=1.14.3+build.13
loader_version=0.11.2
cloth_version=2.9.3
modmenu_version=1.8.4+build.20
modmenu_version=1.6.3-95
autoconfig_version=2.2.0
# Mod Properties
mod_version = 1.2
mod_version = 1.1.1
maven_group = markil3
archives_base_name = immersive_hud

View File

@@ -1,19 +1,13 @@
package markil3.immersive_hud;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.registry.Registry;
//import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import static markil3.immersive_hud.Main.TICKS_PER_SECOND;
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Configuration manager of this mod, which reads from and writes to this mod's
* configuration file.
@@ -96,7 +90,6 @@ public class ConfigManager
private boolean showArmor = true;
private double minHealth = 0.5;
private int minHunger = 17;
private Identifier[] ignoredItems = new Identifier[]{Registry.ITEM.getId(Items.FIREWORK_ROCKET)};
/**
* Returns the instance of this class.
@@ -257,16 +250,6 @@ public class ConfigManager
return this.minHunger;
}
/**
* Obtains a collection of items that won't cause hands and crosshairs to show when used.
*
* @return A set of ignored items.
*/
public Set<Item> getIgnoredItems()
{
return Arrays.stream(ignoredItems).map(Registry.ITEM::get).collect(Collectors.toSet());
}
/**
* Sets the time that the hands are allowed to display.
*
@@ -338,19 +321,9 @@ public class ConfigManager
{
this.minHunger = MathHelper.clamp(boundary, 0, 20);
}
/**
* Sets which items won't cause the hands and crosshairs to show when used.
*
* @param items - A set of ignored items.
*/
public void setIgnoredItems(Item... items)
{
this.ignoredItems = Arrays.stream(items).map(Registry.ITEM::getId).toArray(Identifier[]::new);
}
/**
* Saves changes to this mod's configuration.
*/
* Saves changes to this mod's configuration.
*/
// public void save()
// {
// SPEC.save();

View File

@@ -22,6 +22,9 @@ import net.fabricmc.api.ModInitializer;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import me.sargunvohra.mcmods.autoconfig1u.serializer.Toml4jConfigSerializer;
//import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
//import me.sargunvohra.mcmods.autoconfig1u.serializer.Toml4jConfigSerializer;
/**
* The main entry point for the Immersive HUD mod.
*

View File

@@ -1,184 +0,0 @@
package markil3.immersive_hud;
import net.minecraft.client.gui.screen.Screen;
import java.util.function.Function;
import io.github.prospector.modmenu.api.ModMenuApi;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import me.shedaniel.clothconfig2.api.ConfigBuilder;
import me.shedaniel.clothconfig2.api.ConfigCategory;
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
import me.shedaniel.clothconfig2.gui.entries.DoubleListEntry;
import static markil3.immersive_hud.Main.TICKS_PER_SECOND;
public class ModMenu implements ModMenuApi
{
private void startTimeField(String name, ConfigEntryBuilder entryBuilder,
ConfigCategory cat,
ConfigManager.TimeValues value)
{
final float SHOW_TIME = 6;
final float FADE_IN = 0.25F;
final float FADE_OUT = 0.5F;
DoubleListEntry maxTime =
entryBuilder.startDoubleField("option.immersive_hud." + name +
"MaxTime",
(float) value.getMaxTime() / TICKS_PER_SECOND)
.setDefaultValue(SHOW_TIME)
.setMin(0)
.setMax(10 * 60 * TICKS_PER_SECOND) // 10 Minutes
.setTooltip("tooltip.immersive_hud." + name +
"MaxTime")
.setSaveConsumer(val -> value.setMaxTime((int) (val * TICKS_PER_SECOND)))
.build();
DoubleListEntry fadeIn =
entryBuilder.startDoubleField("option.immersive_hud." + name +
"FadeIn",
(float) value.getFadeInTime() / TICKS_PER_SECOND)
.setDefaultValue(FADE_IN)
.setMin(0)
.setMax(10 * 60 * TICKS_PER_SECOND)
.setTooltip("tooltip.immersive_hud." + name +
"FadeIn")
.setSaveConsumer(val -> value.setFadeInTime((int) (val * TICKS_PER_SECOND)))
.build();
DoubleListEntry fadeOut =
entryBuilder.startDoubleField("option.immersive_hud." + name +
"FadeOut",
(float) value.getFadeOutTime() / TICKS_PER_SECOND)
.setDefaultValue(FADE_OUT)
.setMin(0)
.setMax(10 * 60 * TICKS_PER_SECOND)
.setTooltip("tooltip.immersive_hud." + name +
"FadeOut")
.setSaveConsumer(val -> value.setFadeOutTime((int) (val * TICKS_PER_SECOND)))
.build();
cat.addEntry(maxTime);
cat.addEntry(fadeIn);
cat.addEntry(fadeOut);
}
@Override
public String getModId()
{
return "immersive_hud";
}
@Override
public Function<Screen, ? extends Screen> getConfigScreenFactory()
{
return screen -> {
ConfigCategory general;
ConfigEntryBuilder entryBuilder;
ConfigManager instance = ConfigManager.getInstance();
final ConfigBuilder builder = ConfigBuilder.create()
.setParentScreen(screen)
.setTitle("immersive_hud.configGui.title")
.setSavingRunnable(() -> {
try
{
if (Class.forName(
"me.sargunvohra.mcmods.autoconfig1u" +
".AutoConfig") != null)
{
((me.sargunvohra.mcmods.autoconfig1u.ConfigManager<ConfigManagerCloth>) AutoConfig
.getConfigHolder(
ConfigManagerCloth.class)).save();
}
}
catch (ClassNotFoundException e)
{
// Do nothing
}
});
general =
builder.getOrCreateCategory("category.immersive_hud" +
".general");
entryBuilder = builder.entryBuilder();
startTimeField("hotbar", entryBuilder,
general,
instance.getHotbarTime());
startTimeField("experience", entryBuilder,
general,
instance.getExperienceTime());
startTimeField("jump", entryBuilder,
general,
instance.getJumpTime());
startTimeField("jump", entryBuilder,
general,
instance.getHealthTime());
startTimeField("hunger", entryBuilder,
general,
instance.getHungerTime());
startTimeField("effect", entryBuilder,
general,
instance.getPotionTime());
general.addEntry(entryBuilder.startDoubleField(
"option.immersive_hud.crosshairTime",
(float) instance.getCrosshairTime() / TICKS_PER_SECOND)
.setDefaultValue(6)
.setTooltip("tooltip.immersive_hud.crosshairTime")
.setSaveConsumer(val -> instance.setCrosshairTime((int) (val * TICKS_PER_SECOND)))
.build());
general.addEntry(entryBuilder.startBooleanToggle(
"option.immersive_hud.hideCrosshair",
instance.hideCrosshair())
.setDefaultValue(true)
.setTooltip("tooltip.immersive_hud.hideCrosshair")
.setSaveConsumer(val -> instance.hideCrosshair(val))
.build());
general.addEntry(entryBuilder.startDoubleField(
"option.immersive_hud.handTime",
(float) instance.getHandTime() / TICKS_PER_SECOND)
.setDefaultValue(30)
.setTooltip("tooltip.immersive_hud.handTime")
.setSaveConsumer(val -> instance.setHandTime((int) (val * TICKS_PER_SECOND)))
.build());
general.addEntry(entryBuilder.startBooleanToggle(
"option.immersive_hud.hideHands",
instance.hideHands())
.setDefaultValue(true)
.setTooltip("tooltip.immersive_hud.hideHands")
.setSaveConsumer(val -> instance.hideHands(val))
.build());
general.addEntry(entryBuilder.startDoubleField(
"option.immersive_hud.minHealth",
instance.getMinHealth())
.setDefaultValue(0.5)
.setTooltip("tooltip.immersive_hud.minHealth")
.setSaveConsumer(val -> instance.setMinHealth(val))
.build());
general.addEntry(entryBuilder.startIntField(
"option.immersive_hud.minHunger",
instance.getMinHunger())
.setDefaultValue(17)
.setTooltip("tooltip.immersive_hud.minHunger")
.setSaveConsumer(val -> instance.setMinHunger(val))
.build());
general.addEntry(entryBuilder.startBooleanToggle(
"option.immersive_hud.showArmor",
instance.shouldShowArmor())
.setDefaultValue(true)
.setTooltip("tooltip.immersive_hud.showArmor")
.setSaveConsumer(val -> instance.shouldShowArmor(val))
.build());
return builder.build();
};
}
}

View File

@@ -16,11 +16,10 @@
*/
package markil3.immersive_hud;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.effect.StatusEffect;
@@ -35,10 +34,11 @@ import net.minecraft.item.FilledMapItem;
import net.minecraft.item.FishingRodItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.LingeringPotionItem;
import net.minecraft.item.RangedWeaponItem;
import net.minecraft.item.ShieldItem;
import net.minecraft.item.SnowballItem;
import net.minecraft.item.ThrowablePotionItem;
import net.minecraft.item.SplashPotionItem;
import net.minecraft.item.TridentItem;
import net.minecraft.util.Hand;
import net.minecraft.util.hit.EntityHitResult;
@@ -49,7 +49,6 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Optional;
import java.util.Set;
/**
* Contains the logic for changing the HUD.
@@ -174,7 +173,7 @@ public class TimerUtils
*/
public static void setAlpha(float alpha)
{
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha);
GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
}
/**
@@ -251,8 +250,6 @@ public class TimerUtils
ConfigManager.getInstance().getExperienceTime();
ConfigManager.TimeValues jump =
ConfigManager.getInstance().getJumpTime();
ConfigManager.TimeValues healthTimes = ConfigManager.getInstance().getHealthTime();
ConfigManager.TimeValues hungerTimes = ConfigManager.getInstance().getHungerTime();
float hotbarAlpha = Main.getAlpha(hotbarTime,
hotbar.getMaxTime(),
@@ -266,21 +263,8 @@ public class TimerUtils
jump.getMaxTime(),
jump.getFadeInTime(),
jump.getFadeOutTime());
float statusAlpha = Main.getAlpha(healthTime,
healthTimes.getMaxTime(),
healthTimes.getFadeInTime(),
healthTimes.getFadeOutTime());
statusAlpha = Math.max(statusAlpha, Main.getAlpha(hungerTime,
hungerTimes.getMaxTime(),
hungerTimes.getFadeInTime(),
hungerTimes.getFadeOutTime()));
/*
* Draw it in its standard location until it is completely transparent, then move it
* instantly.
*/
statusAlpha = (float) Math.ceil(statusAlpha);
return 7 * (1 - Math.max(experienceAlpha,
jumpAlpha)) + 22 * (1 - hotbarAlpha) + 42 * (1 - statusAlpha);
jumpAlpha)) + 22 * (1 - hotbarAlpha);
}
/**
@@ -288,8 +272,9 @@ public class TimerUtils
* view, and briefly brings the health and hunger into view if the held item
* is food.
*
* @param hand - The hand being triggered
* @param hand - The hand being triggered
* @param clear - Whether the hand it being enabled or disabled.
*
* @since 0.1-1.16.4-fabric
*/
public static void onClick(Hand hand, boolean clear)
@@ -304,7 +289,6 @@ public class TimerUtils
LivingEntity entity;
Item item;
Iterator<ItemStack> hands;
Set<Item> ignored;
if (mc.getCameraEntity() instanceof LivingEntity)
{
entity = (LivingEntity) mc.getCameraEntity();
@@ -330,14 +314,6 @@ public class TimerUtils
.map(ItemStack::getItem)
.orElse(null);
}
if (item != null)
{
ignored = ConfigManager.getInstance().getIgnoredItems();
if (ignored.contains(item))
{
return;
}
}
crosshairTime = ConfigManager.getInstance().getCrosshairTime();
if (hand == Hand.MAIN_HAND)
{
@@ -354,11 +330,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);
}
}
}
@@ -367,13 +343,13 @@ public class TimerUtils
* Run whenever a hand is rendered in 1st person. This brings the player
* hands into and out of view as needed.
*
* @param hand - The hand being rendered.
* @param matrixStack - The rendering stack.
* @param hand - The hand being rendered.
*
* @return If true, then don't render this hand at all.
*
* @since 0.1-1.16.4-fabric
*/
public static boolean onRenderHand(Hand hand,
MatrixStack matrixStack,
float ticks)
{
final float HAND_UP_TIME = 20F;
@@ -396,11 +372,10 @@ public class TimerUtils
}
if (offHandTime < HAND_UP_TIME)
{
matrixStack
.translate(0,
-1.0F * (HAND_UP_TIME - offHandTime) /
HAND_UP_TIME,
0);
GlStateManager.translatef(0,
(float) (-1.0F * (HAND_UP_TIME - offHandTime) /
HAND_UP_TIME),
0);
}
}
break;
@@ -417,11 +392,10 @@ public class TimerUtils
}
if (mainHandTime < HAND_UP_TIME)
{
matrixStack
.translate(0,
-1.0F * (HAND_UP_TIME - mainHandTime) /
HAND_UP_TIME,
0);
GlStateManager.translatef(0,
(float) (-1.0F * (HAND_UP_TIME - mainHandTime) /
HAND_UP_TIME),
0);
}
}
break;
@@ -435,6 +409,7 @@ public class TimerUtils
* needed.
*
* @return If true, then cancel drawing the crosshair.
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawCrosshair(float ticks)
@@ -450,13 +425,13 @@ public class TimerUtils
boolean hideCrosshair = ConfigManager.getInstance().hideCrosshair();
if (hideCrosshair)
{
if (mc.crosshairTarget != null && mc.crosshairTarget
if (mc.hitResult != null && mc.hitResult
.getType() != HitResult.Type.MISS)
{
if (mc.crosshairTarget.getType() == HitResult.Type
if (mc.hitResult.getType() == HitResult.Type
.ENTITY)
{
if (((EntityHitResult) mc.crosshairTarget).getEntity() != entity
if (((EntityHitResult) mc.hitResult).getEntity() != entity
.getVehicle())
{
changed = true;
@@ -471,8 +446,8 @@ public class TimerUtils
> 0)
{
setAlpha(Main.getAlpha(crosshairTime > 0 ?
crosshairTime :
CROSSHAIR_TIME, CROSSHAIR_TIME, 0, 0));
crosshairTime :
CROSSHAIR_TIME, CROSSHAIR_TIME, 0, 0));
}
else
{
@@ -491,6 +466,7 @@ public class TimerUtils
* as needed.
*
* @return If true, then cancel drawing the mount health bar.
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawMountHealth(float ticks)
@@ -525,17 +501,17 @@ public class TimerUtils
mountHealth = mount.getHealth();
changed = true;
}
if (mountMaxHealth != mount.getMaximumHealth())
if (mountMaxHealth != mount.getHealthMaximum())
{
mountMaxHealth = mount.getMaximumHealth();
mountMaxHealth = mount.getHealthMaximum();
changed = true;
}
}
if (changed)
{
mountTime = healthTimes.getMaxTime() - (mountTime > 0 ?
healthTimes.getFadeInTime() :
0);
healthTimes.getFadeInTime() :
0);
}
else if (mountTime > 0)
{
@@ -550,8 +526,8 @@ public class TimerUtils
{
if (tmp != null && mountTime > 0)
{
RenderSystem.pushMatrix();
RenderSystem.translatef(0F,
GlStateManager.pushMatrix();
GlStateManager.translatef(0F,
getHealthTranslation(),
0F);
setAlpha(Main.getAlpha(mountTime,
@@ -562,8 +538,8 @@ public class TimerUtils
}
return true;
}
RenderSystem.pushMatrix();
RenderSystem.translatef(0F,
GlStateManager.pushMatrix();
GlStateManager.translatef(0F,
getHealthTranslation(),
0F);
return false;
@@ -622,6 +598,7 @@ public class TimerUtils
* Obtains how transparent
*
* @param effectinstance
*
* @return
*/
public static float getPotionAlpha(StatusEffectInstance effectinstance)
@@ -633,8 +610,7 @@ public class TimerUtils
if (effectinstance.getDuration() <= BLINK_TIME)
{
effectAlpha =
MathHelper.sin(7000F / (effectinstance
.getDuration() + 16F * (float) Math.PI)) * 50F / (effectinstance
MathHelper.sin(7000F / (effectinstance.getDuration() + 16F * (float) Math.PI)) * 50F / (effectinstance
.getDuration() + 100F) + 0.5F;
}
else if (effectinstance.getDuration() <= BLINK_TIME + potion.getFadeInTime())
@@ -659,6 +635,7 @@ public class TimerUtils
* needed.
*
* @return If true, then cancel drawing the armor bar.
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawArmor()
@@ -686,6 +663,7 @@ public class TimerUtils
* needed.
*
* @return If true, then cancel drawing the health.
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawHealth(float ticks)
@@ -721,16 +699,16 @@ public class TimerUtils
health = entity.getHealth();
changed = true;
}
if (maxHealth != entity.getMaximumHealth())
if (maxHealth != entity.getHealthMaximum())
{
maxHealth = entity.getMaximumHealth();
maxHealth = entity.getHealthMaximum();
changed = true;
}
if (changed)
{
healthTime = healthTimes.getMaxTime() - (healthTime > 0 ?
healthTimes.getFadeInTime() :
0);
healthTimes.getFadeInTime() :
0);
}
else if (healthTime > 0)
{
@@ -761,6 +739,7 @@ public class TimerUtils
* needed.
*
* @return If true, then cancel drawing the hunger bar.
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawHunger(float ticks)
@@ -807,8 +786,8 @@ public class TimerUtils
if (changed)
{
hungerTime = hungerTimes.getMaxTime() - (hungerTime > 0 ?
hungerTimes.getFadeInTime() :
0);
hungerTimes.getFadeInTime() :
0);
}
else if (hungerTime > 0)
{
@@ -839,6 +818,7 @@ public class TimerUtils
* as needed.
*
* @return If true, then cancel drawing the jump bar.
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawJumpbar(float ticks)
@@ -860,8 +840,8 @@ public class TimerUtils
if (entity.method_3151() > 0)
{
jumpTime = jump.getMaxTime() - (jumpTime > 0 ?
jump.getFadeInTime() :
0);
jump.getFadeInTime() :
0);
}
else if (jumpTime > 0)
{
@@ -869,8 +849,8 @@ public class TimerUtils
}
if (jumpTime > 0)
{
RenderSystem.pushMatrix();
RenderSystem.translatef(0F, TimerUtils.getJumpTranslation(), 0F);
GlStateManager.pushMatrix();
GlStateManager.translatef(0F, TimerUtils.getJumpTranslation(), 0F);
setAlpha(Main.getAlpha(jumpTime,
jump.getMaxTime(),
jump.getFadeInTime(),
@@ -885,6 +865,7 @@ public class TimerUtils
* as needed.
*
* @return If true, then cancel drawing the experience bar.
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawExperience(float ticks)
@@ -913,8 +894,8 @@ public class TimerUtils
if (changed)
{
experienceTime = experience.getMaxTime() - (experienceTime > 0 ?
experience.getFadeInTime() :
0);
experience.getFadeInTime() :
0);
}
else if (experienceTime > 0)
{
@@ -922,8 +903,8 @@ public class TimerUtils
}
if (experienceTime > 0)
{
RenderSystem.pushMatrix();
RenderSystem.translatef(0F,
GlStateManager.pushMatrix();
GlStateManager.translatef(0F,
TimerUtils.getExperienceTranslation(),
0F);
setAlpha(Main.getAlpha(experienceTime,
@@ -941,6 +922,7 @@ public class TimerUtils
* or not to draw it.
*
* @return If true, then cancel drawing the hotbar.
*
* @see #recolorHotbar()
* @since 0.1-1.16.4-fabric
*/
@@ -1049,7 +1031,7 @@ public class TimerUtils
{
if (entity.isUsingItem() && entity
.getActiveHand() != null && entity.getActiveHand()
.ordinal() == i)
.ordinal() == i)
{
switch (i)
{
@@ -1066,7 +1048,7 @@ public class TimerUtils
* Items that have the crosshairs enabled for as long
* as the item is being held at all.
*/
else if (item instanceof ThrowablePotionItem ||
else if (item instanceof SplashPotionItem || item instanceof LingeringPotionItem ||
item instanceof SnowballItem || item instanceof
EggItem || item instanceof EnderPearlItem || item
instanceof FishingRodItem)
@@ -1112,11 +1094,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)
{
@@ -1145,8 +1127,8 @@ public class TimerUtils
if (changed)
{
hotbarTime = hotbar.getMaxTime() - (hotbarTime > 0 ?
hotbar.getFadeInTime() :
0);
hotbar.getFadeInTime() :
0);
}
else if (hotbarTime > 0)
{
@@ -1161,14 +1143,15 @@ public class TimerUtils
* needed.
*
* @return If true, then cancel drawing the crosshair.
*
* @since 0.1-1.16.4-fabric
*/
public static void recolorHotbar()
{
ConfigManager.TimeValues hotbar =
ConfigManager.getInstance().getHotbarTime();
RenderSystem.pushMatrix();
RenderSystem.translatef(0F, TimerUtils.getHotbarTranslation(), 0F);
GlStateManager.pushMatrix();
GlStateManager.translatef(0F, TimerUtils.getHotbarTranslation(), 0F);
setAlpha(Main.getAlpha(hotbarTime,
hotbar.getMaxTime(),
hotbar.getFadeInTime(),

View File

@@ -17,9 +17,7 @@
package markil3.immersive_hud.mixin;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.item.HeldItemRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.render.FirstPersonRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Hand;
@@ -39,56 +37,46 @@ import markil3.immersive_hud.TimerUtils;
* @author Markil 3
* @version 0.1-1.16.4-fabric
*/
@Mixin(HeldItemRenderer.class)
@Mixin(FirstPersonRenderer.class)
public class HeldItemHook
{
private static final Logger LOGGER =
LogManager.getLogger(HeldItemHook.class);
private static final Logger LOGGER = LogManager.getLogger(HeldItemHook.class);
/**
* Determines whether or not to render a certain hand.
*
* @param player
* @param tickDelta
* @param pitch
* @param hand
* @param swingProgress
* @param item
* @param equipProgress
* @param matrices
* @param vertexConsumers
* @param light
* @param callbackInfo
*
* @since 0.1-1.16.4-fabric
*/
@Inject(method = "renderFirstPersonItem", at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/util/math/MatrixStack;push()V",
shift = At.Shift.AFTER), cancellable = true)
public void renderHand(AbstractClientPlayerEntity player,
float tickDelta,
float pitch,
@Inject(method = "renderFirstPersonItem" +
"(Lnet/minecraft/client/network/AbstractClientPlayerEntity;" +
"FFLnet/minecraft/util/Hand;FLnet/minecraft/item/ItemStack;F)V",
at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform" +
"/GlStateManager;pushMatrix()V", shift = At.Shift.AFTER),
cancellable = true)
public void renderHand(AbstractClientPlayerEntity abstractClientPlayerEntity,
float f,
float g,
Hand hand,
float swingProgress,
ItemStack item,
float equipProgress,
MatrixStack matrices,
VertexConsumerProvider vertexConsumers,
int light,
float h,
ItemStack itemStack,
float i,
CallbackInfo callbackInfo)
{
try
{
if (TimerUtils.onRenderHand(hand, matrices, tickDelta))
{
callbackInfo.cancel();
}
if (TimerUtils.onRenderHand(hand, f))
{
callbackInfo.cancel();
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.render.item" +
".HeldItemRenderer#renderFirstPersonItem " +
"Error in running net.minecraft.client.render" +
".FirstPersonRenderer#renderFirstPersonItem " +
"event",
e);
}

View File

@@ -16,7 +16,7 @@
*/
package markil3.immersive_hud.mixin;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.hud.InGameHud;
@@ -155,7 +155,7 @@ public class HudHook
LOGGER.debug("Finishing jumpbar");
try
{
RenderSystem.popMatrix();
GlStateManager.popMatrix();
/*
* Resets the color so that nothing else is bothered.
*/
@@ -216,7 +216,7 @@ public class HudHook
LOGGER.debug("Finishing experience bar");
try
{
RenderSystem.popMatrix();
GlStateManager.popMatrix();
/*
* Resets the color so that nothing else is bothered.
*/
@@ -244,8 +244,10 @@ public class HudHook
LOGGER.debug("Starting status bars");
try
{
RenderSystem.pushMatrix();
RenderSystem.translatef(0F, TimerUtils.getHealthTranslation(), 0F);
GlStateManager.pushMatrix();
GlStateManager.translatef(0F,
TimerUtils.getHealthTranslation(),
0F);
}
catch (Exception e)
{
@@ -328,8 +330,9 @@ public class HudHook
*/
@Inject(method = "renderStatusBars()V", at = @At(value = "INVOKE",
target = "Lnet" +
"/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V",
ordinal = 1, shift = At.Shift.BY, by = 3))
"/minecraft/util/profiler/Profiler;swap" +
"(Ljava/lang/String;)V",
ordinal = 1))
public void renderFood(CallbackInfo callbackInfo)
{
LOGGER.debug("Rendering food");
@@ -362,7 +365,8 @@ public class HudHook
*/
@Inject(method = "renderStatusBars()V", at = @At(value = "INVOKE",
target = "Lnet" +
"/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V",
"/minecraft/util/profiler/Profiler;swap" +
"(Ljava/lang/String;)V",
ordinal = 2))
public void renderAir(CallbackInfo callbackInfo)
{
@@ -390,7 +394,7 @@ public class HudHook
LOGGER.debug("Finishing status bars");
try
{
RenderSystem.popMatrix();
GlStateManager.popMatrix();
}
catch (Exception e)
{
@@ -453,7 +457,7 @@ public class HudHook
/*
* Resets the color so that nothing else is bothered.
*/
RenderSystem.popMatrix();
GlStateManager.popMatrix();
TimerUtils.resetAlpha();
}
catch (Exception e)
@@ -623,7 +627,7 @@ public class HudHook
* @since 0.1-1.16.4-fabric
*/
@Inject(method = "renderHotbar", at = @At(value = "INVOKE", target =
"Lcom/mojang/blaze3d/systems/RenderSystem;color4f(FFFF)V", shift
"Lcom/mojang/blaze3d/platform/GlStateManager;color4f(FFFF)V", shift
= At.Shift.AFTER))
public void adjustHotbar(float tickDelta,
CallbackInfo callbackInfo)
@@ -659,7 +663,7 @@ public class HudHook
LOGGER.debug("Finishing hotbar");
try
{
RenderSystem.popMatrix();
GlStateManager.popMatrix();
/*
* Resets the color so that nothing else is bothered.
*/

View File

@@ -35,7 +35,7 @@
"depends": {
"fabricloader": ">=0.7.4",
"minecraft": "1.15.x"
"minecraft": "1.14.x"
},
"suggests": {
"modmenu": "*",