Compare commits

..

4 Commits

Author SHA1 Message Date
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
Markil3
238d32a27a Fixes the configuration code not triggering. 2021-03-02 15:32:01 -07:00
Markil3
30d3eb9880 Stabilizes the mod for 1.15 2021-03-02 15:28:37 -07:00
Markil3
b9d0d3eaf9 Sets the mod to use 1.15 2021-03-02 15:28:16 -07:00
13 changed files with 305 additions and 974 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,8 +21,9 @@ dependencies {
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modApi "me.shedaniel.cloth:cloth-config-fabric:${project.cloth_version}"
modImplementation "com.terraformersmc:modmenu:${project.modmenu_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}"
// 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,14 +3,15 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://fabricmc.net/use
minecraft_version=1.16.4
yarn_mappings=1.16.4+build.9
loader_version=0.11.1
minecraft_version=1.14.3
yarn_mappings=1.14.3+build.13
loader_version=0.11.2
cloth_version=4.11.14
modmenu_version=1.16.8
cloth_version=2.9.3
modmenu_version=1.6.3-95
autoconfig_version=2.2.0
# Mod Properties
mod_version = 1.2
mod_version = 1.0
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.shedaniel.autoconfig.AutoConfig;
//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.
@@ -90,13 +84,10 @@ public class ConfigManager
private TimeValues hungerTime = new TimeValues();
private TimeValues effectTime = new TimeValues();
private int crosshairTime = 6 * TICKS_PER_SECOND;
private boolean hideCrosshair = true;
private int handTime = 30 * TICKS_PER_SECOND;
private boolean hideHands = true;
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.
@@ -107,7 +98,7 @@ public class ConfigManager
{
try
{
if (Class.forName("me.shedaniel.autoconfig.AutoConfig") != null)
if (Class.forName("me.sargunvohra.mcmods.autoconfig1u.AutoConfig") != null)
{
return AutoConfig.getConfigHolder(ConfigManagerCloth.class)
.getConfig();
@@ -194,15 +185,6 @@ public class ConfigManager
{
return this.crosshairTime;
}
/**
* 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;
}
/**
* Obtains the time that the hands are allowed to display.
@@ -214,16 +196,6 @@ public class ConfigManager
return this.handTime;
}
/**
* 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;
}
/**
* Checks whether the armor bar should render.
*
@@ -256,26 +228,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());
}
/**
* Obtains a collection of items that won't cause hands and crosshairs to show when used.
*
* @return An array of identifiers.
*/
public Identifier[] getIgnoredIdentifiers()
{
return this.ignoredItems;
}
/**
* Sets the time that the hands are allowed to display.
*
@@ -286,16 +238,6 @@ public class ConfigManager
this.crosshairTime = 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 = hide;
}
/**
* Sets the time that the hands are allowed to display.
*
@@ -306,16 +248,6 @@ public class ConfigManager
this.handTime = 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 = hide;
}
/**
* Determines whether the armor bar should render.
*
@@ -347,26 +279,6 @@ 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);
}
/**
* Sets which items won't cause the hands and crosshairs to show when used.
*
* @param items - A set of ignored items.
*/
public void setIgnoredItems(String... items)
{
this.ignoredItems = Arrays.stream(items).map(Identifier::new).filter(i -> Registry.ITEM.getOrEmpty(i).isPresent()).toArray(Identifier[]::new);
}
/**
* Saves changes to this mod's configuration.
*/

View File

@@ -1,13 +1,13 @@
package markil3.immersive_hud;
import me.shedaniel.autoconfig.ConfigData;
import me.shedaniel.autoconfig.annotation.Config;
import me.sargunvohra.mcmods.autoconfig1u.ConfigData;
import me.sargunvohra.mcmods.autoconfig1u.annotation.Config;
@Config(name = "immersive_hud")
public class ConfigManagerCloth extends ConfigManager implements ConfigData
{
@Override
public void validatePostLoad() throws ValidationException
public void validatePostLoad() throws ConfigData.ValidationException
{
this.setMinHealth(this.getMinHealth());
}

View File

@@ -19,8 +19,11 @@ package markil3.immersive_hud;
import net.fabricmc.api.ModInitializer;
import me.shedaniel.autoconfig.AutoConfig;
import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer;
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.
@@ -37,7 +40,7 @@ public class Main implements ModInitializer
{
try
{
if (Class.forName("me.shedaniel.autoconfig.AutoConfig") != null)
if (Class.forName("me.sargunvohra.mcmods.autoconfig1u.AutoConfig") != null)
{
AutoConfig.register(ConfigManagerCloth.class,
Toml4jConfigSerializer::new);

View File

@@ -1,232 +0,0 @@
package markil3.immersive_hud;
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import net.minecraft.item.Items;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier;
import net.minecraft.util.InvalidIdentifierException;
import net.minecraft.util.registry.Registry;
import me.shedaniel.autoconfig.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;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Optional;
import java.util.stream.Collectors;
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(new TranslatableText(
"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(new TranslatableText(
"tooltip.immersive_hud." + name +
"MaxTime"))
.setSaveConsumer(val -> value
.setMaxTime((int) (val * TICKS_PER_SECOND)))
.build();
DoubleListEntry fadeIn =
entryBuilder.startDoubleField(new TranslatableText(
"option.immersive_hud." + name +
"FadeIn"),
(float) value.getFadeInTime() / TICKS_PER_SECOND)
.setDefaultValue(FADE_IN)
.setMin(0)
.setMax(10 * 60 * TICKS_PER_SECOND)
.setTooltip(new TranslatableText(
"tooltip.immersive_hud." + name +
"FadeIn"))
.setSaveConsumer(val -> value
.setFadeInTime((int) (val * TICKS_PER_SECOND)))
.build();
DoubleListEntry fadeOut =
entryBuilder.startDoubleField(new TranslatableText(
"option.immersive_hud." + name +
"FadeOut"),
(float) value.getFadeOutTime() / TICKS_PER_SECOND)
.setDefaultValue(FADE_OUT)
.setMin(0)
.setMax(10 * 60 * TICKS_PER_SECOND)
.setTooltip(new TranslatableText(
"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 ConfigScreenFactory<?> getModConfigScreenFactory()
{
return screen -> {
ConfigCategory general;
ConfigEntryBuilder entryBuilder;
ConfigManager instance = ConfigManager.getInstance();
final ConfigBuilder builder = ConfigBuilder.create()
.setParentScreen(screen)
.setTitle(new TranslatableText(
"immersive_hud.configGui.title"))
.setSavingRunnable(() -> {
try
{
if (Class
.forName("me.shedaniel.autoconfig.AutoConfig") != null)
{
AutoConfig
.getConfigHolder(ConfigManagerCloth.class)
.save();
}
}
catch (ClassNotFoundException e)
{
// Do nothing
}
});
general =
builder.getOrCreateCategory(new TranslatableText(
"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(new TranslatableText(
"option.immersive_hud" +
".crosshairTime"),
(float) instance.getCrosshairTime() / TICKS_PER_SECOND)
.setDefaultValue(6)
.setTooltip(new TranslatableText(
"tooltip.immersive_hud" +
".crosshairTime"))
.setSaveConsumer(val -> instance
.setCrosshairTime((int) (val * TICKS_PER_SECOND)))
.build());
general.addEntry(entryBuilder.startBooleanToggle(new TranslatableText(
"option.immersive_hud.hideCrosshair"),
instance.hideCrosshair())
.setDefaultValue(true)
.setTooltip(new TranslatableText(
"tooltip.immersive_hud.hideCrosshair"))
.setSaveConsumer(val -> instance.hideCrosshair(val))
.build());
general.addEntry(entryBuilder.startDoubleField(new TranslatableText(
"option.immersive_hud.handTime"),
(float) instance.getHandTime() / TICKS_PER_SECOND)
.setDefaultValue(30)
.setTooltip(new TranslatableText(
"tooltip.immersive_hud.handTime"))
.setSaveConsumer(val -> instance
.setHandTime((int) (val * TICKS_PER_SECOND)))
.build());
general.addEntry(entryBuilder.startBooleanToggle(new TranslatableText(
"option.immersive_hud.hideHands"),
instance.hideHands())
.setDefaultValue(true)
.setTooltip(new TranslatableText(
"tooltip.immersive_hud.hideHands"))
.setSaveConsumer(val -> instance.hideHands(val))
.build());
general.addEntry(entryBuilder.startDoubleField(new TranslatableText(
"option.immersive_hud.minHealth"),
instance.getMinHealth())
.setDefaultValue(0.5)
.setTooltip(new TranslatableText(
"tooltip.immersive_hud.minHealth"))
.setSaveConsumer(val -> instance.setMinHealth(val))
.build());
general.addEntry(entryBuilder.startIntField(new TranslatableText(
"option.immersive_hud.minHunger"),
instance.getMinHunger())
.setDefaultValue(17)
.setTooltip(new TranslatableText(
"tooltip.immersive_hud.minHunger"))
.setSaveConsumer(val -> instance.setMinHunger(val))
.build());
general.addEntry(entryBuilder.startBooleanToggle(new TranslatableText(
"option.immersive_hud.showArmor"),
instance.shouldShowArmor())
.setDefaultValue(true)
.setTooltip(new TranslatableText(
"tooltip.immersive_hud.showArmor"))
.setSaveConsumer(val -> instance.shouldShowArmor(val))
.build());
general.addEntry(entryBuilder
.startStrList(new TranslatableText("option.immersive_hud.ignoreList"), Arrays
.asList(instance
.getIgnoredIdentifiers()).stream().map(Identifier::toString)
.collect(Collectors.toList()))
.setDefaultValue(Arrays
.asList(Registry.ITEM.getId(Items.FIREWORK_ROCKET).toString()))
.setTooltip(new TranslatableText("tooltip.immersive_hud.ignoreList"))
.setSaveConsumer(val -> instance.setIgnoredItems(val.toArray(new String[0]))).setErrorSupplier(val -> {
try
{
Optional<String> item = val.stream().filter(i -> !Registry.ITEM.getOrEmpty(new Identifier(i)).isPresent()).findFirst();
if (item.isPresent())
{
return Optional.of(new TranslatableText("error.immersive_hud.ignoreList.unknownItem"));
}
}
catch (InvalidIdentifierException e)
{
return Optional.of(new TranslatableText("error.immersive_hud.ignoreList.illegalId"));
}
return Optional.empty();
})
.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);
}
/**
@@ -290,6 +274,7 @@ public class TimerUtils
*
* @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)
{
@@ -361,10 +337,6 @@ public class TimerUtils
0);
}
}
else
{
System.out.println("Unusing hand " + hand);
}
}
/**
@@ -372,19 +344,16 @@ public class TimerUtils
* hands into and out of view as needed.
*
* @param hand - The hand being rendered.
* @param matrixStack - The rendering stack.
*
* @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;
boolean hideHands = ConfigManager.getInstance().hideHands();
if (hideHands)
{
switch (hand)
{
case OFF_HAND:
@@ -400,10 +369,9 @@ public class TimerUtils
}
if (offHandTime < HAND_UP_TIME)
{
matrixStack
.translate(0,
-1.0F * (HAND_UP_TIME - offHandTime) /
HAND_UP_TIME,
GlStateManager.translatef(0,
(float) (-1.0F * (HAND_UP_TIME - offHandTime) /
HAND_UP_TIME),
0);
}
}
@@ -421,16 +389,14 @@ public class TimerUtils
}
if (mainHandTime < HAND_UP_TIME)
{
matrixStack
.translate(0,
-1.0F * (HAND_UP_TIME - mainHandTime) /
HAND_UP_TIME,
GlStateManager.translatef(0,
(float) (-1.0F * (HAND_UP_TIME - mainHandTime) /
HAND_UP_TIME),
0);
}
}
break;
}
}
return false;
}
@@ -439,6 +405,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)
@@ -451,16 +418,13 @@ public class TimerUtils
boolean changed = false;
boolean canceled = false;
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;
@@ -486,7 +450,6 @@ public class TimerUtils
{
crosshairTime -= ticks;
}
}
return canceled;
}
@@ -495,9 +458,10 @@ 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(MatrixStack stack, float ticks)
public static boolean drawMountHealth(float ticks)
{
/*
* When the health percentage falls to this level or below, the
@@ -516,7 +480,7 @@ public class TimerUtils
LivingEntity mount;
boolean changed = false;
if (tmp == null || !(tmp instanceof LivingEntity))
if (tmp == null)
{
mountHealth = -1;
mountMaxHealth = -1;
@@ -529,9 +493,9 @@ public class TimerUtils
mountHealth = mount.getHealth();
changed = true;
}
if (mountMaxHealth != mount.getMaxHealth())
if (mountMaxHealth != mount.getHealthMaximum())
{
mountMaxHealth = mount.getMaxHealth();
mountMaxHealth = mount.getHealthMaximum();
changed = true;
}
}
@@ -552,10 +516,10 @@ public class TimerUtils
*/
if (mountHealth / mountMaxHealth > HEALTH_BOUNDARY)
{
if (mountTime > 0)
if (tmp != null && mountTime > 0)
{
stack.push();
stack.translate(0F,
GlStateManager.pushMatrix();
GlStateManager.translatef(0F,
getHealthTranslation(),
0F);
setAlpha(Main.getAlpha(mountTime,
@@ -566,8 +530,8 @@ public class TimerUtils
}
return true;
}
stack.push();
stack.translate(0F,
GlStateManager.pushMatrix();
GlStateManager.translatef(0F,
getHealthTranslation(),
0F);
return false;
@@ -626,6 +590,7 @@ public class TimerUtils
* Obtains how transparent
*
* @param effectinstance
*
* @return
*/
public static float getPotionAlpha(StatusEffectInstance effectinstance)
@@ -637,8 +602,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())
@@ -663,6 +627,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()
@@ -690,6 +655,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)
@@ -725,9 +691,9 @@ public class TimerUtils
health = entity.getHealth();
changed = true;
}
if (maxHealth != entity.getMaxHealth())
if (maxHealth != entity.getHealthMaximum())
{
maxHealth = entity.getMaxHealth();
maxHealth = entity.getHealthMaximum();
changed = true;
}
if (changed)
@@ -765,6 +731,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)
@@ -842,11 +809,11 @@ public class TimerUtils
* Determines whether or not to draw the horse jump bar, adjusting the alpha
* as needed.
*
* @param stack
* @return If true, then cancel drawing the jump bar.
*
* @since 0.1-1.16.4-fabric
*/
public static boolean drawJumpbar(MatrixStack stack, float ticks)
public static boolean drawJumpbar(float ticks)
{
ConfigManager.TimeValues jump =
ConfigManager.getInstance().getJumpTime();
@@ -874,8 +841,8 @@ public class TimerUtils
}
if (jumpTime > 0)
{
stack.push();
stack.translate(0F, TimerUtils.getJumpTranslation(), 0F);
GlStateManager.pushMatrix();
GlStateManager.translatef(0F, TimerUtils.getJumpTranslation(), 0F);
setAlpha(Main.getAlpha(jumpTime,
jump.getMaxTime(),
jump.getFadeInTime(),
@@ -890,9 +857,10 @@ 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(MatrixStack stack, float ticks)
public static boolean drawExperience(float ticks)
{
ConfigManager.TimeValues experience =
ConfigManager.getInstance().getExperienceTime();
@@ -927,8 +895,10 @@ public class TimerUtils
}
if (experienceTime > 0)
{
stack.push();
stack.translate(0F, TimerUtils.getExperienceTranslation(), 0F);
GlStateManager.pushMatrix();
GlStateManager.translatef(0F,
TimerUtils.getExperienceTranslation(),
0F);
setAlpha(Main.getAlpha(experienceTime,
experience.getMaxTime(),
experience.getFadeInTime(),
@@ -944,7 +914,8 @@ public class TimerUtils
* or not to draw it.
*
* @return If true, then cancel drawing the hotbar.
* @see #recolorHotbar(MatrixStack)
*
* @see #recolorHotbar()
* @since 0.1-1.16.4-fabric
*/
public static boolean updateHotbar(float ticks)
@@ -1069,7 +1040,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)
@@ -1164,15 +1135,15 @@ public class TimerUtils
* needed.
*
* @return If true, then cancel drawing the crosshair.
*
* @since 0.1-1.16.4-fabric
*/
public static void recolorHotbar(MatrixStack stack)
public static void recolorHotbar()
{
ConfigManager.TimeValues hotbar =
ConfigManager.getInstance().getHotbarTime();
RenderSystem.pushMatrix();
stack.push();
RenderSystem.translatef(0F, TimerUtils.getHotbarTranslation(), 0F);
GlStateManager.pushMatrix();
GlStateManager.translatef(0F, TimerUtils.getHotbarTranslation(), 0F);
setAlpha(Main.getAlpha(hotbarTime,
hotbar.getMaxTime(),
hotbar.getFadeInTime(),

View File

@@ -21,8 +21,6 @@ import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.util.Hand;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -40,9 +38,6 @@ import markil3.immersive_hud.TimerUtils;
@Mixin(ClientPlayerEntity.class)
public class ClientPlayerHook
{
private static final Logger LOGGER =
LogManager.getLogger(ClientPlayerHook.class);
/**
* Updates hand timing every time an attack is initiated.
*
@@ -53,20 +48,9 @@ public class ClientPlayerHook
*/
@Inject(method = "swingHand", at = @At(value = "TAIL"))
public void swingHand(Hand hand, CallbackInfo callbackInfo)
{
try
{
TimerUtils.onClick(hand, hand == null);
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.network" +
".ClientPlayerEntity#swingHand " +
"event",
e);
}
}
/**
* Updates hand timing every time an item is used.
@@ -78,20 +62,9 @@ public class ClientPlayerHook
*/
@Inject(method = "setCurrentHand", at = @At(value = "TAIL"))
public void setCurrentHand(Hand hand, CallbackInfo callbackInfo)
{
try
{
TimerUtils.onClick(hand, hand == null);
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.network" +
".ClientPlayerEntity#setCurrentHand " +
"event",
e);
}
}
/**
* Updates hand timing every the hand is no longer being used.
@@ -102,8 +75,6 @@ public class ClientPlayerHook
*/
@Inject(method = "clearActiveItem", at = @At(value = "HEAD"))
public void clearActiveItem(CallbackInfo callbackInfo)
{
try
{
if (MinecraftClient.getInstance().cameraEntity instanceof LivingEntity)
{
@@ -111,13 +82,4 @@ public class ClientPlayerHook
.getActiveHand(), true);
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.network" +
".ClientPlayerEntity#clearActiveItem " +
"event",
e);
}
}
}

View File

@@ -17,14 +17,10 @@
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;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -39,59 +35,36 @@ 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);
/**
* 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))
if (TimerUtils.onRenderHand(hand, f))
{
callbackInfo.cancel();
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.render.item" +
".HeldItemRenderer#renderFirstPersonItem " +
"event",
e);
}
}
}

View File

@@ -16,12 +16,11 @@
*/
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;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.effect.StatusEffectInstance;
import org.apache.logging.log4j.LogManager;
@@ -45,14 +44,13 @@ import markil3.immersive_hud.TimerUtils;
@Mixin(InGameHud.class)
public class HudHook
{
private static final Logger LOGGER = LogManager.getLogger(HudHook.class);
private static final Logger logger = LogManager.getLogger(HudHook.class);
private StatusEffectInstance currentEffect;
/**
* Determines whether or not to draw the crosshair.
*
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
@@ -60,59 +58,37 @@ public class HudHook
*/
@Inject(method = "renderCrosshair", at = @At(value = "HEAD"),
cancellable = true)
public void startCrosshair(MatrixStack stack, CallbackInfo callbackInfo)
{
try
public void startCrosshair(CallbackInfo callbackInfo)
{
logger.debug("Starting crosshair");
if (TimerUtils.drawCrosshair(MinecraftClient.getInstance()
.getTickDelta()))
{
callbackInfo.cancel();
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#startCrosshair " +
"event",
e);
}
}
/**
* Resets any changes from drawing the crosshair.
*
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric
*/
@Inject(method = "renderCrosshair", at = @At(value = "TAIL"))
public void finishCrosshair(MatrixStack stack, CallbackInfo callbackInfo)
{
try
public void finishCrosshair(CallbackInfo callbackInfo)
{
logger.debug("Finishing crosshair");
/*
* Resets the color so that nothing else is bothered.
*/
TimerUtils.resetAlpha();
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderCrosshair " +
"event",
e);
}
}
/**
* Determines whether or not to draw the horse jump bar.
*
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
@@ -120,64 +96,39 @@ public class HudHook
*/
@Inject(method = "renderMountJumpBar", at = @At(value = "HEAD"),
cancellable = true)
public void startJumpbar(MatrixStack stack,
int x,
CallbackInfo callbackInfo)
public void startJumpbar(int x, CallbackInfo callbackInfo)
{
try
{
if (TimerUtils.drawJumpbar(stack,
MinecraftClient.getInstance().getTickDelta()))
logger.debug("Starting jumpbar");
if (TimerUtils.drawJumpbar(MinecraftClient.getInstance().getTickDelta()))
{
callbackInfo.cancel();
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderMountJumpBar " +
"event",
e);
}
}
/**
* Resets any changes from drawing the horse jump bar.
*
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric
*/
@Inject(method = "renderMountJumpBar", at = @At(value = "TAIL"))
public void finishJumpbar(MatrixStack stack,
public void finishJumpbar(
int x,
CallbackInfo callbackInfo)
{
try
{
stack.pop();
logger.debug("Finishing jumpbar");
GlStateManager.popMatrix();
/*
* Resets the color so that nothing else is bothered.
*/
TimerUtils.resetAlpha();
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderMountJumpBar " +
"event",
e);
}
}
/**
* Determines whether or not to draw the experience bar.
*
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
@@ -185,236 +136,138 @@ public class HudHook
*/
@Inject(method = "renderExperienceBar", at = @At(value = "HEAD"),
cancellable = true)
public void startExperience(MatrixStack stack,
int x,
CallbackInfo callbackInfo)
public void startExperience(int x, CallbackInfo callbackInfo)
{
try
{
if (TimerUtils.drawExperience(stack,
MinecraftClient.getInstance().getTickDelta()))
logger.debug("Starting experience bar");
if (TimerUtils.drawExperience(MinecraftClient.getInstance().getTickDelta()))
{
callbackInfo.cancel();
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderExperienceBar " +
"event",
e);
}
}
/**
* Resets any changes from drawing the experience bar.
*
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric
*/
@Inject(method = "renderExperienceBar", at = @At(value = "TAIL"))
public void finishExperience(MatrixStack stack,
int x,
CallbackInfo callbackInfo)
public void finishExperience(int x, CallbackInfo callbackInfo)
{
try
{
stack.pop();
logger.debug("Finishing experience bar");
GlStateManager.popMatrix();
/*
* Resets the color so that nothing else is bothered.
*/
TimerUtils.resetAlpha();
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderExperienceBar " +
"event",
e);
}
}
/**
* 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)
@Inject(method = "renderStatusBars", at = @At("HEAD"))
public void startStatus(CallbackInfo info)
{
try
{
stack.push();
stack.translate(0F, TimerUtils.getHealthTranslation(), 0F);
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusBars " +
"event",
e);
}
return stack;
logger.debug("Starting status bars");
GlStateManager.pushMatrix();
GlStateManager.translatef(0F, TimerUtils.getHealthTranslation(), 0F);
}
/**
* Adjusts the armor GUI.
*
* @param matrices
* @param callbackInfo
*/
@Inject(method = "renderStatusBars(Lnet/minecraft/client/util" +
"/math/MatrixStack;)V", at = @At(value = "INVOKE", target = "Lnet" +
"/minecraft/util/profiler/Profiler;push(Ljava/lang/String;)V"))
public void renderArmor(MatrixStack matrices, CallbackInfo callbackInfo)
{
try
@Inject(method = "renderStatusBars()V", at = @At(value = "INVOKE",
target = "Lnet" +
"/minecraft/util/profiler/Profiler;push" +
"(Ljava/lang/String;)V"))
public void renderArmor(CallbackInfo callbackInfo)
{
logger.debug("Rendering armor");
if (TimerUtils.drawArmor())
{
TimerUtils.setAlpha(0F);
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusBars " +
"event",
e);
}
}
/**
* Adjusts the health GUI.
*
* @param matrices
* @param callbackInfo
*/
@Inject(method = "renderStatusBars(Lnet/minecraft/client/util" +
"/math/MatrixStack;)V", at = @At(value = "INVOKE", target = "Lnet" +
"/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V",
@Inject(method = "renderStatusBars()V", at = @At(value = "INVOKE",
target = "Lnet" +
"/minecraft/util/profiler/Profiler;swap" +
"(Ljava/lang/String;)V",
ordinal = 0))
public void renderHealth(MatrixStack matrices, CallbackInfo callbackInfo)
{
try
public void renderHealth(CallbackInfo callbackInfo)
{
logger.debug("Rendering health");
/*
* Resets the transparency from the previous call.
*/
TimerUtils.setAlpha(1F);
if (TimerUtils.drawHealth(MinecraftClient.getInstance()
.getTickDelta()))
if (TimerUtils.drawHealth(MinecraftClient.getInstance().getTickDelta()))
{
TimerUtils.setAlpha(0F);
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusBars " +
"event",
e);
}
}
/**
* Adjusts the food GUI.
*
* @param matrices
* @param callbackInfo
*/
@Inject(method = "renderStatusBars(Lnet/minecraft/client/util" +
"/math/MatrixStack;)V", at = @At(value = "INVOKE", target = "Lnet" +
@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))
public void renderFood(MatrixStack matrices, CallbackInfo callbackInfo)
{
try
ordinal = 1))
public void renderFood(CallbackInfo callbackInfo)
{
logger.debug("Rendering food");
/*
* Resets the transparency from the previous call.
*/
TimerUtils.setAlpha(1F);
if (TimerUtils.drawHunger(MinecraftClient.getInstance()
.getTickDelta()))
if (TimerUtils.drawHunger(MinecraftClient.getInstance().getTickDelta()))
{
TimerUtils.setAlpha(0F);
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusBars " +
"event",
e);
}
}
/**
* Resets the air GUI.
*
* @param matrices
* @param callbackInfo
*/
@Inject(method = "renderStatusBars(Lnet/minecraft/client/util" +
"/math/MatrixStack;)V", at = @At(value = "INVOKE", target = "Lnet" +
@Inject(method = "renderStatusBars()V", at = @At(value = "INVOKE", target = "Lnet" +
"/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V",
ordinal = 2))
public void renderAir(MatrixStack matrices, CallbackInfo callbackInfo)
{
try
public void renderAir(CallbackInfo callbackInfo)
{
logger.debug("Rendering air");
/*
* Resets the color so that nothing else is bothered.
*/
TimerUtils.setAlpha(1F);
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusBars " +
"event",
e);
}
}
@ModifyVariable(method = "renderStatusBars(Lnet/minecraft/client/util" +
"/math/MatrixStack;)V", at = @At("TAIL"))
public MatrixStack finishStatus(MatrixStack stack)
@Inject(method = "renderStatusBars", at = @At("TAIL"))
public void finishStatus(CallbackInfo info)
{
try
{
stack.pop();
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusBars " +
"event",
e);
}
return stack;
logger.debug("Finishing status bars");
GlStateManager.popMatrix();
}
/**
* Determines whether or not to draw the mount's health.
*
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
@@ -422,55 +275,36 @@ public class HudHook
*/
@Inject(method = "renderMountHealth", at = @At(value = "HEAD"),
cancellable = true)
public void startMountHealth(MatrixStack stack, CallbackInfo callbackInfo)
public void startMountHealth(CallbackInfo callbackInfo)
{
try
{
if (TimerUtils.drawMountHealth(stack,
MinecraftClient.getInstance().getTickDelta()))
if (TimerUtils.drawMountHealth(MinecraftClient.getInstance().getTickDelta()))
{
callbackInfo.cancel();
}
}
catch (Exception e)
else
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderMountHealth " +
"event",
e);
logger.debug("Starting mount health");
}
}
/**
* Resets any changes from drawing the mount's health.
*
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric
*/
@Inject(method = "renderMountHealth", at = @At(value = "TAIL"))
public void finishMountHealth(MatrixStack stack, CallbackInfo callbackInfo)
{
try
public void finishMountHealth(CallbackInfo callbackInfo)
{
logger.debug("Finishing mount health");
/*
* Resets the color so that nothing else is bothered.
*/
stack.pop();
GlStateManager.popMatrix();
TimerUtils.resetAlpha();
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderMountHealth " +
"event",
e);
}
}
/**
* Makes the actual adjustment to the hotbar as needed.
@@ -478,26 +312,15 @@ public class HudHook
* @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric
*/
@Inject(method = "renderStatusEffectOverlay" +
"(Lnet/minecraft/client/util/math/MatrixStack;)V", at =
@Inject(method = "renderStatusEffectOverlay()V", at =
@At(value = "HEAD", shift = At.Shift.AFTER))
public void startPotion(MatrixStack effect, CallbackInfo info)
{
try
public void startPotion(CallbackInfo info)
{
logger.debug("Starting potions");
TimerUtils.updatePotions(MinecraftClient.getInstance().cameraEntity instanceof ClientPlayerEntity ?
((ClientPlayerEntity) MinecraftClient.getInstance().cameraEntity) :
null);
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusEffectOverlay " +
"event",
e);
}
}
/**
* Makes the actual adjustment to the hotbar as needed.
@@ -505,96 +328,57 @@ public class HudHook
* @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric
*/
@Redirect(method = "renderStatusEffectOverlay" +
"(Lnet/minecraft/client/util/math/MatrixStack;)V", at =
@Redirect(method = "renderStatusEffectOverlay()V", at =
@At(value = "INVOKE",
target =
"Lnet/minecraft/entity/effect/StatusEffectInstance;" +
"shouldShowIcon()Z"))
public boolean shouldRenderPotion(StatusEffectInstance effect)
{
try
{
logger.debug("Updating potions");
currentEffect = effect;
return TimerUtils.updatePotion(effect,
MinecraftClient.getInstance().getTickDelta());
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusEffectOverlay " +
"event",
e);
}
return true;
}
/**
* Makes the actual adjustment to the hotbar as needed.
*
* @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 =
@ModifyVariable(method = "renderStatusEffectOverlay()V", at =
@At(value = "STORE"))
public float updatePotion(float f,
MatrixStack stack)
{
try
public float updatePotion(float f)
{
logger.debug("Adjusting potions");
return TimerUtils.getPotionAlpha(currentEffect);
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusEffectOverlay " +
"event",
e);
}
return 1F;
}
/**
* Resets any changes from drawing the potion effects.
*
* @param matrices - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
* @since 0.2-1.16.4-fabric
*/
@Inject(method = "renderStatusEffectOverlay", at = @At(value = "TAIL"))
public void finishPotion(MatrixStack matrices,
CallbackInfo callbackInfo)
{
try
public void finishPotion(CallbackInfo callbackInfo)
{
logger.debug("Finishing potions");
/*
* Resets the color so that nothing else is bothered.
*/
TimerUtils.resetAlpha();
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderStatusEffectOverlay " +
"event",
e);
}
}
/**
* Determines whether or not to draw the hotbar.
*
* @param tickDelta
* @param matrices - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
@@ -603,62 +387,38 @@ public class HudHook
@Inject(method = "renderHotbar", at = @At(value = "HEAD"), cancellable =
true)
public void startHotbar(float tickDelta,
MatrixStack matrices,
CallbackInfo callbackInfo)
{
try
{
logger.debug("Starting hotbar");
if (TimerUtils.updateHotbar(tickDelta))
{
callbackInfo.cancel();
}
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderHotbar " +
"event",
e);
}
}
/**
* Makes the actual adjustment to the hotbar as needed.
*
* @param tickDelta
* @param matrices - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
* @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,
MatrixStack matrices,
CallbackInfo callbackInfo)
{
try
{
TimerUtils.recolorHotbar(matrices);
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderHotbar " +
"event",
e);
}
logger.debug("Adjusting hotbar");
TimerUtils.recolorHotbar();
}
/**
* Resets any changes from drawing the hotbar.
*
* @param tickDelta
* @param stack - The matrix drawing stack.
* @param callbackInfo
*
* @version 0.2-1.16.4-fabric
@@ -666,25 +426,13 @@ public class HudHook
*/
@Inject(method = "renderHotbar", at = @At(value = "TAIL"))
public void finishHotbar(float tickDelta,
MatrixStack stack,
CallbackInfo callbackInfo)
{
try
{
RenderSystem.popMatrix();
stack.pop();
logger.debug("Finishing hotbar");
GlStateManager.popMatrix();
/*
* Resets the color so that nothing else is bothered.
*/
TimerUtils.resetAlpha();
}
catch (Exception e)
{
LOGGER.error(
"Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderHotbar " +
"event",
e);
}
}
}

View File

@@ -19,13 +19,10 @@
"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",
"option.immersive_hud.ignoreList": "Ignored Items",
"tooltip.immersive_hud.hotbarMaxTime": "How long the hotbar can be displayed on screen in seconds",
"tooltip.immersive_hud.hotbarFadeIn": "How many seconds it takes for the hotbar to fade in",
"tooltip.immersive_hud.hotbarFadeOut": "How many seconds it takes for the hotbar to move out",
@@ -45,13 +42,8 @@
"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",
"tooltip.immersive_hud.ignoreList": "Which items will not trigger the arm and crosshairs when used",
"error.immersive_hud.ignoreList.unknownItem": "Unknown item %s",
"error.immersive_hud.ignoreList.illegalId": "%s is not a legal item identifier"
"tooltip.immersive_hud.showArmor": "Whether or not the armor bar should display on the HUD"
}

View File

@@ -28,14 +28,14 @@
},
"mixins": [
{
"config": "immersive_hud.mixins.json",
"config": "modid.mixins.json",
"environment": "client"
}
],
"depends": {
"fabricloader": ">=0.7.4",
"minecraft": "1.16.x"
"minecraft": "1.14.x"
},
"suggests": {
"modmenu": "*",