Compare commits

..

7 Commits

Author SHA1 Message Date
Markil3
4d1cf0d9e2 Fixes the inventory items not moving properly. 2021-06-18 08:46:06 -06:00
Markil3
3b73bf6cb8 Updates for Minecraft 1.17
Still needs a bit of tweaking
2021-06-18 08:27:59 -06:00
Markil3
cf4ed2d4af Fixes a conflict with other poorly-configured mods. 2021-04-06 08:42:49 -06:00
Markil3
93767421ee Gets ready for release 1.1 2021-04-01 13:08:56 -06:00
Markil3
96718b2b57 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:15:55 -06:00
Markil3
e3c0f1d533 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:08:16 -06:00
Markil3
6daf696e01 Fixes a ClassCastException (#1). 2021-03-25 17:09:03 -06:00
26 changed files with 412 additions and 250 deletions

0
.github/workflows/build.yml vendored Normal file → Executable file
View File

3
.gitignore vendored Normal file → Executable file
View File

@@ -32,4 +32,5 @@ bin/
run/ run/
/logs/ /logs/
/remappedSrc/ local.properties
remappedSrc/

0
LICENSE Normal file → Executable file
View File

0
README.md Normal file → Executable file
View File

20
build.gradle Normal file → Executable file
View File

@@ -1,10 +1,10 @@
plugins { plugins {
id 'fabric-loom' version '0.6-SNAPSHOT' id 'fabric-loom' version '0.8-SNAPSHOT'
id 'maven-publish' id 'maven-publish'
} }
sourceCompatibility = JavaVersion.VERSION_1_8 sourceCompatibility = JavaVersion.VERSION_16
targetCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_16
archivesBaseName = project.archives_base_name archivesBaseName = project.archives_base_name
version = project.mod_version + "-" + project.minecraft_version + "-fabric" version = project.mod_version + "-" + project.minecraft_version + "-fabric"
@@ -21,9 +21,8 @@ dependencies {
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
// modApi "me.shedaniel.cloth:config-2:${project.cloth_version}" modApi "me.shedaniel.cloth:cloth-config-fabric:${project.cloth_version}"
modApi "me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig_version}" modImplementation "com.terraformersmc: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. // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
// You may need to force-disable transitiveness on them. // You may need to force-disable transitiveness on them.
@@ -44,13 +43,8 @@ tasks.withType(JavaCompile).configureEach {
// If Javadoc is generated, this must be specified in that task too. // If Javadoc is generated, this must be specified in that task too.
it.options.encoding = "UTF-8" it.options.encoding = "UTF-8"
// The Minecraft launcher currently installs Java 8 for users, so your mod probably wants to target Java 8 too // Minecraft 1.17 (21w19a) upwards uses Java 16.
// JDK 9 introduced a new way of specifying this that will make sure no newer classes or methods are used. it.options.release = 16
// We'll use that if it's available, but otherwise we'll use the older option.
def targetVersion = 8
if (JavaVersion.current().isJava9Compatible()) {
it.options.release = targetVersion
}
} }
java { java {

0
demo.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 37 MiB

After

Width:  |  Height:  |  Size: 37 MiB

13
gradle.properties Normal file → Executable file
View File

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

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

0
screenshot1.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

0
screenshot2.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 767 KiB

After

Width:  |  Height:  |  Size: 767 KiB

0
screenshot3.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

0
screenshot4.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 983 KiB

After

Width:  |  Height:  |  Size: 983 KiB

0
screenshot5.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 405 KiB

After

Width:  |  Height:  |  Size: 405 KiB

0
settings.gradle Normal file → Executable file
View File

38
src/main/java/markil3/immersive_hud/ConfigManager.java Normal file → Executable file
View File

@@ -1,23 +1,11 @@
package markil3.immersive_hud; 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.math.MathHelper;
import net.minecraft.util.registry.Registry;
//import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; import me.shedaniel.autoconfig.AutoConfig;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import static markil3.immersive_hud.Main.TICKS_PER_SECOND; import static markil3.immersive_hud.Main.TICKS_PER_SECOND;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* Configuration manager of this mod, which reads from and writes to this mod's * Configuration manager of this mod, which reads from and writes to this mod's
* configuration file. * configuration file.
@@ -100,7 +88,6 @@ public class ConfigManager
private boolean showArmor = true; private boolean showArmor = true;
private double minHealth = 0.5; private double minHealth = 0.5;
private int minHunger = 17; private int minHunger = 17;
private Identifier[] ignoredItems = new Identifier[]{Registry.ITEM.getId(Items.FIREWORK_ROCKET)};
/** /**
* Returns the instance of this class. * Returns the instance of this class.
@@ -111,7 +98,7 @@ public class ConfigManager
{ {
try try
{ {
if (Class.forName("me.sargunvohra.mcmods.autoconfig1u.AutoConfig") != null) if (Class.forName("me.shedaniel.autoconfig.AutoConfig") != null)
{ {
return AutoConfig.getConfigHolder(ConfigManagerCloth.class) return AutoConfig.getConfigHolder(ConfigManagerCloth.class)
.getConfig(); .getConfig();
@@ -198,7 +185,6 @@ public class ConfigManager
{ {
return this.crosshairTime; return this.crosshairTime;
} }
/** /**
* Checks whether the crosshairs should be hidden after a period of time. * Checks whether the crosshairs should be hidden after a period of time.
* *
@@ -261,16 +247,6 @@ public class ConfigManager
return this.minHunger; 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. * Sets the time that the hands are allowed to display.
* *
@@ -342,16 +318,6 @@ public class ConfigManager
{ {
this.minHunger = MathHelper.clamp(boundary, 0, 20); 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.
*/ */

View File

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

9
src/main/java/markil3/immersive_hud/Main.java Normal file → Executable file
View File

@@ -19,11 +19,8 @@ package markil3.immersive_hud;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; import me.shedaniel.autoconfig.AutoConfig;
import me.sargunvohra.mcmods.autoconfig1u.serializer.Toml4jConfigSerializer; import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer;
//import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
//import me.sargunvohra.mcmods.autoconfig1u.serializer.Toml4jConfigSerializer;
/** /**
* The main entry point for the Immersive HUD mod. * The main entry point for the Immersive HUD mod.
@@ -40,7 +37,7 @@ public class Main implements ModInitializer
{ {
try try
{ {
if (Class.forName("me.sargunvohra.mcmods.autoconfig1u.AutoConfig") != null) if (Class.forName("me.shedaniel.autoconfig.AutoConfig") != null)
{ {
AutoConfig.register(ConfigManagerCloth.class, AutoConfig.register(ConfigManagerCloth.class,
Toml4jConfigSerializer::new); Toml4jConfigSerializer::new);

View File

@@ -0,0 +1,191 @@
package markil3.immersive_hud;
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import net.minecraft.text.TranslatableText;
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;
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());
return builder.build();
};
}
}

126
src/main/java/markil3/immersive_hud/TimerUtils.java Normal file → Executable file
View File

@@ -16,10 +16,11 @@
*/ */
package markil3.immersive_hud; package markil3.immersive_hud;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffect;
@@ -34,11 +35,10 @@ import net.minecraft.item.FilledMapItem;
import net.minecraft.item.FishingRodItem; import net.minecraft.item.FishingRodItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.LingeringPotionItem;
import net.minecraft.item.RangedWeaponItem; import net.minecraft.item.RangedWeaponItem;
import net.minecraft.item.ShieldItem; import net.minecraft.item.ShieldItem;
import net.minecraft.item.SnowballItem; import net.minecraft.item.SnowballItem;
import net.minecraft.item.SplashPotionItem; import net.minecraft.item.ThrowablePotionItem;
import net.minecraft.item.TridentItem; import net.minecraft.item.TridentItem;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.EntityHitResult;
@@ -48,15 +48,13 @@ import net.minecraft.util.math.MathHelper;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
/** /**
* Contains the logic for changing the HUD. * Contains the logic for changing the HUD.
* *
* @author Markil 3 * @author Markil 3
* @version 0.1-1.16.4-fabric * @version 1.1.1-1.17-fabric
*/ */
public class TimerUtils public class TimerUtils
{ {
@@ -175,7 +173,7 @@ public class TimerUtils
*/ */
public static void setAlpha(float alpha) public static void setAlpha(float alpha)
{ {
GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, alpha);
} }
/** /**
@@ -252,8 +250,6 @@ public class TimerUtils
ConfigManager.getInstance().getExperienceTime(); ConfigManager.getInstance().getExperienceTime();
ConfigManager.TimeValues jump = ConfigManager.TimeValues jump =
ConfigManager.getInstance().getJumpTime(); ConfigManager.getInstance().getJumpTime();
ConfigManager.TimeValues healthTimes = ConfigManager.getInstance().getHealthTime();
ConfigManager.TimeValues hungerTimes = ConfigManager.getInstance().getHungerTime();
float hotbarAlpha = Main.getAlpha(hotbarTime, float hotbarAlpha = Main.getAlpha(hotbarTime,
hotbar.getMaxTime(), hotbar.getMaxTime(),
@@ -267,21 +263,8 @@ public class TimerUtils
jump.getMaxTime(), jump.getMaxTime(),
jump.getFadeInTime(), jump.getFadeInTime(),
jump.getFadeOutTime()); 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, return 7 * (1 - Math.max(experienceAlpha,
jumpAlpha)) + 22 * (1 - hotbarAlpha) + 42 * (1 - statusAlpha); jumpAlpha)) + 22 * (1 - hotbarAlpha);
} }
/** /**
@@ -306,7 +289,6 @@ public class TimerUtils
LivingEntity entity; LivingEntity entity;
Item item; Item item;
Iterator<ItemStack> hands; Iterator<ItemStack> hands;
Set<Item> ignored;
if (mc.getCameraEntity() instanceof LivingEntity) if (mc.getCameraEntity() instanceof LivingEntity)
{ {
entity = (LivingEntity) mc.getCameraEntity(); entity = (LivingEntity) mc.getCameraEntity();
@@ -332,14 +314,6 @@ public class TimerUtils
.map(ItemStack::getItem) .map(ItemStack::getItem)
.orElse(null); .orElse(null);
} }
if (item != null)
{
ignored = ConfigManager.getInstance().getIgnoredItems();
if (ignored.contains(item))
{
return;
}
}
crosshairTime = ConfigManager.getInstance().getCrosshairTime(); crosshairTime = ConfigManager.getInstance().getCrosshairTime();
if (hand == Hand.MAIN_HAND) if (hand == Hand.MAIN_HAND)
{ {
@@ -363,6 +337,10 @@ public class TimerUtils
0); 0);
} }
} }
else
{
System.out.println("Unusing hand " + hand);
}
} }
/** /**
@@ -370,12 +348,14 @@ public class TimerUtils
* hands into and out of view as needed. * hands into and out of view as needed.
* *
* @param hand - The hand being rendered. * @param hand - The hand being rendered.
* @param matrixStack - The rendering stack.
* *
* @return If true, then don't render this hand at all. * @return If true, then don't render this hand at all.
* *
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
public static boolean onRenderHand(Hand hand, public static boolean onRenderHand(Hand hand,
MatrixStack matrixStack,
float ticks) float ticks)
{ {
final float HAND_UP_TIME = 20F; final float HAND_UP_TIME = 20F;
@@ -398,9 +378,10 @@ public class TimerUtils
} }
if (offHandTime < HAND_UP_TIME) if (offHandTime < HAND_UP_TIME)
{ {
GlStateManager.translatef(0, matrixStack
(float) (-1.0F * (HAND_UP_TIME - offHandTime) / .translate(0,
HAND_UP_TIME), -1.0F * (HAND_UP_TIME - offHandTime) /
HAND_UP_TIME,
0); 0);
} }
} }
@@ -418,9 +399,10 @@ public class TimerUtils
} }
if (mainHandTime < HAND_UP_TIME) if (mainHandTime < HAND_UP_TIME)
{ {
GlStateManager.translatef(0, matrixStack
(float) (-1.0F * (HAND_UP_TIME - mainHandTime) / .translate(0,
HAND_UP_TIME), -1.0F * (HAND_UP_TIME - mainHandTime) /
HAND_UP_TIME,
0); 0);
} }
} }
@@ -451,13 +433,13 @@ public class TimerUtils
boolean hideCrosshair = ConfigManager.getInstance().hideCrosshair(); boolean hideCrosshair = ConfigManager.getInstance().hideCrosshair();
if (hideCrosshair) if (hideCrosshair)
{ {
if (mc.hitResult != null && mc.hitResult if (mc.crosshairTarget != null && mc.crosshairTarget
.getType() != HitResult.Type.MISS) .getType() != HitResult.Type.MISS)
{ {
if (mc.hitResult.getType() == HitResult.Type if (mc.crosshairTarget.getType() == HitResult.Type
.ENTITY) .ENTITY)
{ {
if (((EntityHitResult) mc.hitResult).getEntity() != entity if (((EntityHitResult) mc.crosshairTarget).getEntity() != entity
.getVehicle()) .getVehicle())
{ {
changed = true; changed = true;
@@ -495,7 +477,7 @@ public class TimerUtils
* *
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
public static boolean drawMountHealth(float ticks) public static boolean drawMountHealth(MatrixStack stack, float ticks)
{ {
/* /*
* When the health percentage falls to this level or below, the * When the health percentage falls to this level or below, the
@@ -527,9 +509,9 @@ public class TimerUtils
mountHealth = mount.getHealth(); mountHealth = mount.getHealth();
changed = true; changed = true;
} }
if (mountMaxHealth != mount.getHealthMaximum()) if (mountMaxHealth != mount.getMaxHealth())
{ {
mountMaxHealth = mount.getHealthMaximum(); mountMaxHealth = mount.getMaxHealth();
changed = true; changed = true;
} }
} }
@@ -550,10 +532,10 @@ public class TimerUtils
*/ */
if (mountHealth / mountMaxHealth > HEALTH_BOUNDARY) if (mountHealth / mountMaxHealth > HEALTH_BOUNDARY)
{ {
if (tmp != null && mountTime > 0) if (mountTime > 0)
{ {
GlStateManager.pushMatrix(); stack.push();
GlStateManager.translatef(0F, stack.translate(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
setAlpha(Main.getAlpha(mountTime, setAlpha(Main.getAlpha(mountTime,
@@ -564,8 +546,8 @@ public class TimerUtils
} }
return true; return true;
} }
GlStateManager.pushMatrix(); stack.push();
GlStateManager.translatef(0F, stack.translate(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
return false; return false;
@@ -725,9 +707,9 @@ public class TimerUtils
health = entity.getHealth(); health = entity.getHealth();
changed = true; changed = true;
} }
if (maxHealth != entity.getHealthMaximum()) if (maxHealth != entity.getMaxHealth())
{ {
maxHealth = entity.getHealthMaximum(); maxHealth = entity.getMaxHealth();
changed = true; changed = true;
} }
if (changed) if (changed)
@@ -843,11 +825,13 @@ public class TimerUtils
* Determines whether or not to draw the horse jump bar, adjusting the alpha * Determines whether or not to draw the horse jump bar, adjusting the alpha
* as needed. * as needed.
* *
* @param stack
*
* @return If true, then cancel drawing the jump bar. * @return If true, then cancel drawing the jump bar.
* *
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
public static boolean drawJumpbar(float ticks) public static boolean drawJumpbar(MatrixStack stack, float ticks)
{ {
ConfigManager.TimeValues jump = ConfigManager.TimeValues jump =
ConfigManager.getInstance().getJumpTime(); ConfigManager.getInstance().getJumpTime();
@@ -863,7 +847,7 @@ public class TimerUtils
return true; return true;
} }
if (entity.method_3151() > 0) if (entity.getMountJumpStrength() > 0)
{ {
jumpTime = jump.getMaxTime() - (jumpTime > 0 ? jumpTime = jump.getMaxTime() - (jumpTime > 0 ?
jump.getFadeInTime() : jump.getFadeInTime() :
@@ -875,8 +859,8 @@ public class TimerUtils
} }
if (jumpTime > 0) if (jumpTime > 0)
{ {
GlStateManager.pushMatrix(); stack.push();
GlStateManager.translatef(0F, TimerUtils.getJumpTranslation(), 0F); stack.translate(0F, TimerUtils.getJumpTranslation(), 0F);
setAlpha(Main.getAlpha(jumpTime, setAlpha(Main.getAlpha(jumpTime,
jump.getMaxTime(), jump.getMaxTime(),
jump.getFadeInTime(), jump.getFadeInTime(),
@@ -894,7 +878,7 @@ public class TimerUtils
* *
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
public static boolean drawExperience(float ticks) public static boolean drawExperience(MatrixStack stack, float ticks)
{ {
ConfigManager.TimeValues experience = ConfigManager.TimeValues experience =
ConfigManager.getInstance().getExperienceTime(); ConfigManager.getInstance().getExperienceTime();
@@ -929,10 +913,8 @@ public class TimerUtils
} }
if (experienceTime > 0) if (experienceTime > 0)
{ {
GlStateManager.pushMatrix(); stack.push();
GlStateManager.translatef(0F, stack.translate(0F, TimerUtils.getExperienceTranslation(), 0F);
TimerUtils.getExperienceTranslation(),
0F);
setAlpha(Main.getAlpha(experienceTime, setAlpha(Main.getAlpha(experienceTime,
experience.getMaxTime(), experience.getMaxTime(),
experience.getFadeInTime(), experience.getFadeInTime(),
@@ -949,7 +931,7 @@ public class TimerUtils
* *
* @return If true, then cancel drawing the hotbar. * @return If true, then cancel drawing the hotbar.
* *
* @see #recolorHotbar() * @see #recolorHotbar(MatrixStack)
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
public static boolean updateHotbar(float ticks) public static boolean updateHotbar(float ticks)
@@ -1074,7 +1056,7 @@ public class TimerUtils
* Items that have the crosshairs enabled for as long * Items that have the crosshairs enabled for as long
* as the item is being held at all. * as the item is being held at all.
*/ */
else if (item instanceof SplashPotionItem || item instanceof LingeringPotionItem || else if (item instanceof ThrowablePotionItem ||
item instanceof SnowballItem || item instanceof item instanceof SnowballItem || item instanceof
EggItem || item instanceof EnderPearlItem || item EggItem || item instanceof EnderPearlItem || item
instanceof FishingRodItem) instanceof FishingRodItem)
@@ -1143,9 +1125,9 @@ public class TimerUtils
/* /*
* Checks for a change in what slot is used. * Checks for a change in what slot is used.
*/ */
if (selectedHotbarSlot != entity.inventory.selectedSlot) if (selectedHotbarSlot != entity.getInventory().selectedSlot)
{ {
selectedHotbarSlot = entity.inventory.selectedSlot; selectedHotbarSlot = entity.getInventory().selectedSlot;
mainHandTime = handTime; mainHandTime = handTime;
changed = true; changed = true;
} }
@@ -1168,19 +1150,25 @@ public class TimerUtils
* Determines whether or not to draw the crosshair, adjusting the alpha as * Determines whether or not to draw the crosshair, adjusting the alpha as
* needed. * needed.
* *
* @return If true, then cancel drawing the crosshair.
*
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
public static void recolorHotbar() public static void recolorHotbar(MatrixStack stack)
{ {
ConfigManager.TimeValues hotbar = ConfigManager.TimeValues hotbar =
ConfigManager.getInstance().getHotbarTime(); ConfigManager.getInstance().getHotbarTime();
GlStateManager.pushMatrix(); // RenderSystem.pushMatrix();
GlStateManager.translatef(0F, TimerUtils.getHotbarTranslation(), 0F); stack.push();
stack.translate(0F, TimerUtils.getHotbarTranslation(), 0F);
setAlpha(Main.getAlpha(hotbarTime, setAlpha(Main.getAlpha(hotbarTime,
hotbar.getMaxTime(), hotbar.getMaxTime(),
hotbar.getFadeInTime(), hotbar.getFadeInTime(),
hotbar.getFadeOutTime())); hotbar.getFadeOutTime()));
/*
* Update the hotbar item matrix
*/
stack = RenderSystem.getModelViewStack();
stack.push();
stack.translate(0F, TimerUtils.getHotbarTranslation(), 0F);
RenderSystem.applyModelViewMatrix();
} }
} }

View File

View File

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

179
src/main/java/markil3/immersive_hud/mixin/HudHook.java Normal file → Executable file
View File

@@ -16,11 +16,12 @@
*/ */
package markil3.immersive_hud.mixin; package markil3.immersive_hud.mixin;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.gui.hud.InGameHud;
import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffectInstance;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
@@ -39,7 +40,7 @@ import markil3.immersive_hud.TimerUtils;
* that most of the logic can be found in {@link TimerUtils}. * that most of the logic can be found in {@link TimerUtils}.
* *
* @author Markil 3 * @author Markil 3
* @version 0.1-1.16.4-fabric * @version 1.1.1-1.17-fabric
*/ */
@Mixin(InGameHud.class) @Mixin(InGameHud.class)
public class HudHook public class HudHook
@@ -51,6 +52,7 @@ public class HudHook
/** /**
* Determines whether or not to draw the crosshair. * Determines whether or not to draw the crosshair.
* *
* @param stack - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
@@ -58,9 +60,8 @@ public class HudHook
*/ */
@Inject(method = "renderCrosshair", at = @At(value = "HEAD"), @Inject(method = "renderCrosshair", at = @At(value = "HEAD"),
cancellable = true) cancellable = true)
public void startCrosshair(CallbackInfo callbackInfo) public void startCrosshair(MatrixStack stack, CallbackInfo callbackInfo)
{ {
LOGGER.debug("Starting crosshair");
try try
{ {
if (TimerUtils.drawCrosshair(MinecraftClient.getInstance() if (TimerUtils.drawCrosshair(MinecraftClient.getInstance()
@@ -73,7 +74,7 @@ public class HudHook
{ {
LOGGER.error( LOGGER.error(
"Error in running net.minecraft.client.gui.hud" + "Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderCrosshair " + ".InGameHud#startCrosshair " +
"event", "event",
e); e);
} }
@@ -82,15 +83,15 @@ public class HudHook
/** /**
* Resets any changes from drawing the crosshair. * Resets any changes from drawing the crosshair.
* *
* @param stack - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
@Inject(method = "renderCrosshair", at = @At(value = "TAIL")) @Inject(method = "renderCrosshair", at = @At(value = "TAIL"))
public void finishCrosshair(CallbackInfo callbackInfo) public void finishCrosshair(MatrixStack stack, CallbackInfo callbackInfo)
{ {
LOGGER.debug("Finishing crosshair");
try try
{ {
/* /*
@@ -111,6 +112,7 @@ public class HudHook
/** /**
* Determines whether or not to draw the horse jump bar. * Determines whether or not to draw the horse jump bar.
* *
* @param stack - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
@@ -118,13 +120,14 @@ public class HudHook
*/ */
@Inject(method = "renderMountJumpBar", at = @At(value = "HEAD"), @Inject(method = "renderMountJumpBar", at = @At(value = "HEAD"),
cancellable = true) cancellable = true)
public void startJumpbar(int x, CallbackInfo callbackInfo) public void startJumpbar(MatrixStack stack,
int x,
CallbackInfo callbackInfo)
{ {
LOGGER.debug("Starting jumpbar");
try try
{ {
if (TimerUtils.drawJumpbar(MinecraftClient.getInstance() if (TimerUtils.drawJumpbar(stack,
.getTickDelta())) MinecraftClient.getInstance().getTickDelta()))
{ {
callbackInfo.cancel(); callbackInfo.cancel();
} }
@@ -142,20 +145,20 @@ public class HudHook
/** /**
* Resets any changes from drawing the horse jump bar. * Resets any changes from drawing the horse jump bar.
* *
* @param stack - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
@Inject(method = "renderMountJumpBar", at = @At(value = "TAIL")) @Inject(method = "renderMountJumpBar", at = @At(value = "TAIL"))
public void finishJumpbar( public void finishJumpbar(MatrixStack stack,
int x, int x,
CallbackInfo callbackInfo) CallbackInfo callbackInfo)
{ {
LOGGER.debug("Finishing jumpbar");
try try
{ {
GlStateManager.popMatrix(); stack.pop();
/* /*
* Resets the color so that nothing else is bothered. * Resets the color so that nothing else is bothered.
*/ */
@@ -174,6 +177,7 @@ public class HudHook
/** /**
* Determines whether or not to draw the experience bar. * Determines whether or not to draw the experience bar.
* *
* @param stack - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
@@ -181,13 +185,14 @@ public class HudHook
*/ */
@Inject(method = "renderExperienceBar", at = @At(value = "HEAD"), @Inject(method = "renderExperienceBar", at = @At(value = "HEAD"),
cancellable = true) cancellable = true)
public void startExperience(int x, CallbackInfo callbackInfo) public void startExperience(MatrixStack stack,
int x,
CallbackInfo callbackInfo)
{ {
LOGGER.debug("Starting experience bar");
try try
{ {
if (TimerUtils.drawExperience(MinecraftClient.getInstance() if (TimerUtils.drawExperience(stack,
.getTickDelta())) MinecraftClient.getInstance().getTickDelta()))
{ {
callbackInfo.cancel(); callbackInfo.cancel();
} }
@@ -205,18 +210,20 @@ public class HudHook
/** /**
* Resets any changes from drawing the experience bar. * Resets any changes from drawing the experience bar.
* *
* @param stack - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
@Inject(method = "renderExperienceBar", at = @At(value = "TAIL")) @Inject(method = "renderExperienceBar", at = @At(value = "TAIL"))
public void finishExperience(int x, CallbackInfo callbackInfo) public void finishExperience(MatrixStack stack,
int x,
CallbackInfo callbackInfo)
{ {
LOGGER.debug("Finishing experience bar");
try try
{ {
GlStateManager.popMatrix(); stack.pop();
/* /*
* Resets the color so that nothing else is bothered. * Resets the color so that nothing else is bothered.
*/ */
@@ -236,18 +243,18 @@ public class HudHook
* Changes the position of the status bars as the ones below them move up * Changes the position of the status bars as the ones below them move up
* and down. * and down.
* *
* @param stack - The matrix stack used.
*
* @return The same matrix stack, with a new matrix pushed onto it. * @return The same matrix stack, with a new matrix pushed onto it.
*/ */
@Inject(method = "renderStatusBars", at = @At("HEAD")) @ModifyVariable(method = "renderStatusBars(Lnet/minecraft/client/util" +
public void startStatus(CallbackInfo info) "/math/MatrixStack;)V", at = @At("HEAD"))
public MatrixStack startStatus(MatrixStack stack)
{ {
LOGGER.debug("Starting status bars");
try try
{ {
GlStateManager.pushMatrix(); stack.push();
GlStateManager.translatef(0F, stack.translate(0F, TimerUtils.getHealthTranslation(), 0F);
TimerUtils.getHealthTranslation(),
0F);
} }
catch (Exception e) catch (Exception e)
{ {
@@ -257,20 +264,20 @@ public class HudHook
"event", "event",
e); e);
} }
return stack;
} }
/** /**
* Adjusts the armor GUI. * Adjusts the armor GUI.
* *
* @param matrices
* @param callbackInfo * @param callbackInfo
*/ */
@Inject(method = "renderStatusBars()V", at = @At(value = "INVOKE", @Inject(method = "renderStatusBars(Lnet/minecraft/client/util" +
target = "Lnet" + "/math/MatrixStack;)V", at = @At(value = "INVOKE", target = "Lnet" +
"/minecraft/util/profiler/Profiler;push" + "/minecraft/util/profiler/Profiler;push(Ljava/lang/String;)V"))
"(Ljava/lang/String;)V")) public void renderArmor(MatrixStack matrices, CallbackInfo callbackInfo)
public void renderArmor(CallbackInfo callbackInfo)
{ {
LOGGER.debug("Rendering armor");
try try
{ {
if (TimerUtils.drawArmor()) if (TimerUtils.drawArmor())
@@ -291,16 +298,15 @@ public class HudHook
/** /**
* Adjusts the health GUI. * Adjusts the health GUI.
* *
* @param matrices
* @param callbackInfo * @param callbackInfo
*/ */
@Inject(method = "renderStatusBars()V", at = @At(value = "INVOKE", @Inject(method = "renderStatusBars(Lnet/minecraft/client/util" +
target = "Lnet" + "/math/MatrixStack;)V", at = @At(value = "INVOKE", target = "Lnet" +
"/minecraft/util/profiler/Profiler;swap" + "/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V",
"(Ljava/lang/String;)V",
ordinal = 0)) ordinal = 0))
public void renderHealth(CallbackInfo callbackInfo) public void renderHealth(MatrixStack matrices, CallbackInfo callbackInfo)
{ {
LOGGER.debug("Rendering health");
try try
{ {
/* /*
@@ -326,15 +332,15 @@ public class HudHook
/** /**
* Adjusts the food GUI. * Adjusts the food GUI.
* *
* @param matrices
* @param callbackInfo * @param callbackInfo
*/ */
@Inject(method = "renderStatusBars()V", at = @At(value = "INVOKE", @Inject(method = "renderStatusBars(Lnet/minecraft/client/util" +
target = "Lnet" + "/math/MatrixStack;)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 = 1, shift = At.Shift.BY, by = 3)) ordinal = 1))
public void renderFood(CallbackInfo callbackInfo) public void renderFood(MatrixStack matrices, CallbackInfo callbackInfo)
{ {
LOGGER.debug("Rendering food");
try try
{ {
/* /*
@@ -360,16 +366,15 @@ public class HudHook
/** /**
* Resets the air GUI. * Resets the air GUI.
* *
* @param matrices
* @param callbackInfo * @param callbackInfo
*/ */
@Inject(method = "renderStatusBars()V", at = @At(value = "INVOKE", @Inject(method = "renderStatusBars(Lnet/minecraft/client/util" +
target = "Lnet" + "/math/MatrixStack;)V", at = @At(value = "INVOKE", target = "Lnet" +
"/minecraft/util/profiler/Profiler;swap" + "/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V",
"(Ljava/lang/String;)V",
ordinal = 2)) ordinal = 2))
public void renderAir(CallbackInfo callbackInfo) public void renderAir(MatrixStack matrices, CallbackInfo callbackInfo)
{ {
LOGGER.debug("Rendering air");
try try
{ {
/* /*
@@ -387,13 +392,13 @@ public class HudHook
} }
} }
@Inject(method = "renderStatusBars", at = @At("TAIL")) @ModifyVariable(method = "renderStatusBars(Lnet/minecraft/client/util" +
public void finishStatus(CallbackInfo info) "/math/MatrixStack;)V", at = @At("TAIL"))
public MatrixStack finishStatus(MatrixStack stack)
{ {
LOGGER.debug("Finishing status bars");
try try
{ {
GlStateManager.popMatrix(); stack.pop();
} }
catch (Exception e) catch (Exception e)
{ {
@@ -403,11 +408,13 @@ public class HudHook
"event", "event",
e); e);
} }
return stack;
} }
/** /**
* Determines whether or not to draw the mount's health. * Determines whether or not to draw the mount's health.
* *
* @param stack - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
@@ -415,19 +422,15 @@ public class HudHook
*/ */
@Inject(method = "renderMountHealth", at = @At(value = "HEAD"), @Inject(method = "renderMountHealth", at = @At(value = "HEAD"),
cancellable = true) cancellable = true)
public void startMountHealth(CallbackInfo callbackInfo) public void startMountHealth(MatrixStack stack, CallbackInfo callbackInfo)
{ {
try try
{ {
if (TimerUtils.drawMountHealth(MinecraftClient.getInstance() if (TimerUtils.drawMountHealth(stack,
.getTickDelta())) MinecraftClient.getInstance().getTickDelta()))
{ {
callbackInfo.cancel(); callbackInfo.cancel();
} }
else
{
LOGGER.debug("Starting mount health");
}
} }
catch (Exception e) catch (Exception e)
{ {
@@ -442,21 +445,21 @@ public class HudHook
/** /**
* Resets any changes from drawing the mount's health. * Resets any changes from drawing the mount's health.
* *
* @param stack - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
@Inject(method = "renderMountHealth", at = @At(value = "TAIL")) @Inject(method = "renderMountHealth", at = @At(value = "TAIL"))
public void finishMountHealth(CallbackInfo callbackInfo) public void finishMountHealth(MatrixStack stack, CallbackInfo callbackInfo)
{ {
LOGGER.debug("Finishing mount health");
try try
{ {
/* /*
* Resets the color so that nothing else is bothered. * Resets the color so that nothing else is bothered.
*/ */
GlStateManager.popMatrix(); stack.pop();
TimerUtils.resetAlpha(); TimerUtils.resetAlpha();
} }
catch (Exception e) catch (Exception e)
@@ -475,11 +478,11 @@ public class HudHook
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
@Inject(method = "renderStatusEffectOverlay()V", at = @Inject(method = "renderStatusEffectOverlay" +
"(Lnet/minecraft/client/util/math/MatrixStack;)V", at =
@At(value = "HEAD", shift = At.Shift.AFTER)) @At(value = "HEAD", shift = At.Shift.AFTER))
public void startPotion(CallbackInfo info) public void startPotion(MatrixStack effect, CallbackInfo info)
{ {
LOGGER.debug("Starting potions");
try try
{ {
TimerUtils.updatePotions(MinecraftClient.getInstance().cameraEntity instanceof ClientPlayerEntity ? TimerUtils.updatePotions(MinecraftClient.getInstance().cameraEntity instanceof ClientPlayerEntity ?
@@ -502,14 +505,14 @@ public class HudHook
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
@Redirect(method = "renderStatusEffectOverlay()V", at = @Redirect(method = "renderStatusEffectOverlay" +
"(Lnet/minecraft/client/util/math/MatrixStack;)V", at =
@At(value = "INVOKE", @At(value = "INVOKE",
target = target =
"Lnet/minecraft/entity/effect/StatusEffectInstance;" + "Lnet/minecraft/entity/effect/StatusEffectInstance;" +
"shouldShowIcon()Z")) "shouldShowIcon()Z"))
public boolean shouldRenderPotion(StatusEffectInstance effect) public boolean shouldRenderPotion(StatusEffectInstance effect)
{ {
LOGGER.debug("Updating potions");
try try
{ {
currentEffect = effect; currentEffect = effect;
@@ -531,15 +534,17 @@ public class HudHook
* Makes the actual adjustment to the hotbar as needed. * Makes the actual adjustment to the hotbar as needed.
* *
* @param f - The original transparency * @param f - The original transparency
* @param stack - The matrix stack
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
@ModifyVariable(method = "renderStatusEffectOverlay()V", at = @ModifyVariable(method = "renderStatusEffectOverlay" +
"(Lnet/minecraft/client/util/math/MatrixStack;)V", at =
@At(value = "STORE")) @At(value = "STORE"))
public float updatePotion(float f) public float updatePotion(float f,
MatrixStack stack)
{ {
LOGGER.debug("Adjusting potions");
try try
{ {
return TimerUtils.getPotionAlpha(currentEffect); return TimerUtils.getPotionAlpha(currentEffect);
@@ -558,15 +563,16 @@ public class HudHook
/** /**
* Resets any changes from drawing the potion effects. * Resets any changes from drawing the potion effects.
* *
* @param matrices - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
* @since 0.2-1.16.4-fabric * @since 0.2-1.16.4-fabric
*/ */
@Inject(method = "renderStatusEffectOverlay", at = @At(value = "TAIL")) @Inject(method = "renderStatusEffectOverlay", at = @At(value = "TAIL"))
public void finishPotion(CallbackInfo callbackInfo) public void finishPotion(MatrixStack matrices,
CallbackInfo callbackInfo)
{ {
LOGGER.debug("Finishing potions");
try try
{ {
/* /*
@@ -588,6 +594,7 @@ public class HudHook
* Determines whether or not to draw the hotbar. * Determines whether or not to draw the hotbar.
* *
* @param tickDelta * @param tickDelta
* @param matrices - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
@@ -596,9 +603,9 @@ public class HudHook
@Inject(method = "renderHotbar", at = @At(value = "HEAD"), cancellable = @Inject(method = "renderHotbar", at = @At(value = "HEAD"), cancellable =
true) true)
public void startHotbar(float tickDelta, public void startHotbar(float tickDelta,
MatrixStack matrices,
CallbackInfo callbackInfo) CallbackInfo callbackInfo)
{ {
LOGGER.debug("Starting hotbar");
try try
{ {
if (TimerUtils.updateHotbar(tickDelta)) if (TimerUtils.updateHotbar(tickDelta))
@@ -620,21 +627,22 @@ public class HudHook
* Makes the actual adjustment to the hotbar as needed. * Makes the actual adjustment to the hotbar as needed.
* *
* @param tickDelta * @param tickDelta
* @param matrices - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 0.2-1.16.4-fabric
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
@Inject(method = "renderHotbar", at = @At(value = "INVOKE", target = @Inject(method = "renderHotbar", at = @At(value = "INVOKE", target =
"Lcom/mojang/blaze3d/platform/GlStateManager;color4f(FFFF)V", shift "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderColor(FFFF)V", shift
= At.Shift.AFTER)) = At.Shift.AFTER))
public void adjustHotbar(float tickDelta, public void adjustHotbar(float tickDelta,
MatrixStack matrices,
CallbackInfo callbackInfo) CallbackInfo callbackInfo)
{ {
LOGGER.debug("Adjusting hotbar");
try try
{ {
TimerUtils.recolorHotbar(); TimerUtils.recolorHotbar(matrices);
} }
catch (Exception e) catch (Exception e)
{ {
@@ -650,19 +658,23 @@ public class HudHook
* Resets any changes from drawing the hotbar. * Resets any changes from drawing the hotbar.
* *
* @param tickDelta * @param tickDelta
* @param stack - The matrix drawing stack.
* @param callbackInfo * @param callbackInfo
* *
* @version 0.2-1.16.4-fabric * @version 1.1.1-1.17-fabric
* @since 0.1-1.16.4-fabric * @since 0.1-1.16.4-fabric
*/ */
@Inject(method = "renderHotbar", at = @At(value = "TAIL")) @Inject(method = "renderHotbar", at = @At(value = "TAIL"))
public void finishHotbar(float tickDelta, public void finishHotbar(float tickDelta,
MatrixStack stack,
CallbackInfo callbackInfo) CallbackInfo callbackInfo)
{ {
LOGGER.debug("Finishing hotbar");
try try
{ {
GlStateManager.popMatrix(); stack.pop();
stack = RenderSystem.getModelViewStack();
stack.pop();
RenderSystem.applyModelViewMatrix();
/* /*
* Resets the color so that nothing else is bothered. * Resets the color so that nothing else is bothered.
*/ */
@@ -671,7 +683,8 @@ public class HudHook
catch (Exception e) catch (Exception e)
{ {
LOGGER.error( LOGGER.error(
"Error in running net.minecraft.client.gui.hud.InGameHud#renderHotbar " + "Error in running net.minecraft.client.gui.hud" +
".InGameHud#renderHotbar " +
"event", "event",
e); e);
} }

0
src/main/resources/assets/immersive_hud/icon.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 380 KiB

After

Width:  |  Height:  |  Size: 380 KiB

View File

View File

@@ -34,8 +34,9 @@
], ],
"depends": { "depends": {
"fabricloader": ">=0.7.4", "fabricloader": ">=0.11.3",
"minecraft": "1.14.x" "minecraft": "1.17.x",
"java": ">=16"
}, },
"suggests": { "suggests": {
"modmenu": "*", "modmenu": "*",

View File

@@ -2,7 +2,7 @@
"required": true, "required": true,
"minVersion": "0.8", "minVersion": "0.8",
"package": "markil3.immersive_hud.mixin", "package": "markil3.immersive_hud.mixin",
"compatibilityLevel": "JAVA_8", "compatibilityLevel": "JAVA_16",
"mixins": [ "mixins": [
], ],
"client": [ "client": [