Compare commits
6 Commits
1.15-forge
...
v1.1.1-1.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
47675e4412 | ||
|
|
5219932076 | ||
|
|
bb18357bfe | ||
|
|
5e3b714190 | ||
|
|
5059774b34 | ||
|
|
ea97ade6cd |
@@ -4,12 +4,12 @@ org.gradle.jvmargs=-Xmx3G
|
||||
org.gradle.daemon=false
|
||||
|
||||
# Forge Properties
|
||||
minecraft_version=1.15
|
||||
mappings=20190719-1.14.3
|
||||
forge_version=29.0.4
|
||||
minecraft_version=1.14.2
|
||||
mappings=20190621-1.14.2
|
||||
forge_version=26.0.63
|
||||
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 1.0
|
||||
mod_version = 1.1.1
|
||||
maven_group = markil3
|
||||
archives_base_name = immersive_hud
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip
|
||||
|
||||
@@ -3,6 +3,7 @@ package markil3.immersive_hud;
|
||||
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
|
||||
import com.electronwill.nightconfig.core.io.WritingMode;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
@@ -20,8 +21,7 @@ import static markil3.immersive_hud.Main.TICKS_PER_SECOND;
|
||||
* <p>
|
||||
* The methods that change this mod's configuration do not automatically write
|
||||
* those changes to the configuration file on disk. Instead, they only update
|
||||
* the configuration in memory. To write any changes, use the {@link #save()}
|
||||
* method.
|
||||
* the configuration in memory.
|
||||
*
|
||||
* @author Markil 3
|
||||
*/
|
||||
@@ -50,7 +50,7 @@ public class ConfigManager
|
||||
new ForgeConfigSpec.Builder().configure(ConfigManager::new);
|
||||
INSTANCE = specPair.getLeft();
|
||||
SPEC = specPair.getRight();
|
||||
CommentedFileConfig config = CommentedFileConfig.builder(CONFIG_PATH)
|
||||
CommentedFileConfig config = CommentedFileConfig.builder(Minecraft.getInstance().gameDir.toPath().toAbsolutePath().resolve(CONFIG_PATH))
|
||||
.sync()
|
||||
.autoreload()
|
||||
.writingMode(WritingMode.REPLACE)
|
||||
@@ -132,20 +132,20 @@ public class ConfigManager
|
||||
return this.fadeOut.get();
|
||||
}
|
||||
|
||||
public void setMaxTime(int time)
|
||||
{
|
||||
this.maxTime.set(time);
|
||||
}
|
||||
|
||||
public void setFadeInTime(int time)
|
||||
{
|
||||
this.fadeIn.set(time);
|
||||
}
|
||||
|
||||
public void setFadeOutTime(int time)
|
||||
{
|
||||
this.fadeOut.set(time);
|
||||
}
|
||||
// public void setMaxTime(int time)
|
||||
// {
|
||||
// this.maxTime.set(time);
|
||||
// }
|
||||
//
|
||||
// public void setFadeInTime(int time)
|
||||
// {
|
||||
// this.fadeIn.set(time);
|
||||
// }
|
||||
//
|
||||
// public void setFadeOutTime(int time)
|
||||
// {
|
||||
// this.fadeOut.set(time);
|
||||
// }
|
||||
}
|
||||
|
||||
private final TimeValues hotbarTime;
|
||||
@@ -155,7 +155,9 @@ public class ConfigManager
|
||||
private final TimeValues hungerTime;
|
||||
private final TimeValues effectTime;
|
||||
private final ForgeConfigSpec.IntValue crosshairTime;
|
||||
private final ForgeConfigSpec.BooleanValue hideCrosshair;
|
||||
private final ForgeConfigSpec.IntValue handTime;
|
||||
private final ForgeConfigSpec.BooleanValue hideHands;
|
||||
private final ForgeConfigSpec.BooleanValue showArmor;
|
||||
private final ForgeConfigSpec.DoubleValue minHealth;
|
||||
private final ForgeConfigSpec.IntValue minHunger;
|
||||
@@ -182,6 +184,10 @@ public class ConfigManager
|
||||
6 * TICKS_PER_SECOND,
|
||||
0,
|
||||
10 * 60 * TICKS_PER_SECOND);
|
||||
this.hideCrosshair =
|
||||
configSpecBuilder.translation(
|
||||
"immersive_hud.configGui.hideCrosshair.title")
|
||||
.define("hideCrosshair", true);
|
||||
this.handTime =
|
||||
configSpecBuilder.translation(
|
||||
"immersive_hud.configGui.handTime.title")
|
||||
@@ -189,6 +195,10 @@ public class ConfigManager
|
||||
30 * TICKS_PER_SECOND,
|
||||
0,
|
||||
10 * 60 * TICKS_PER_SECOND);
|
||||
this.hideHands =
|
||||
configSpecBuilder.translation(
|
||||
"immersive_hud.configGui.hideHands.title")
|
||||
.define("hideHands", true);
|
||||
this.showArmor = configSpecBuilder.translation(
|
||||
"immersive_hud.configGui.showArmor.title")
|
||||
.define("showArmor", true);
|
||||
@@ -282,6 +292,16 @@ public class ConfigManager
|
||||
return this.crosshairTime.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the crosshairs should be hidden after a period of time.
|
||||
*
|
||||
* @return - Whether or not crosshairs will be hidden.
|
||||
*/
|
||||
public boolean hideCrosshair()
|
||||
{
|
||||
return this.hideCrosshair.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains the time that the hands are allowed to display.
|
||||
*
|
||||
@@ -292,6 +312,16 @@ public class ConfigManager
|
||||
return this.handTime.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether hands should be hidden after a period of time.
|
||||
*
|
||||
* @return - Whether or not hands will be hidden.
|
||||
*/
|
||||
public boolean hideHands()
|
||||
{
|
||||
return this.hideHands.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the armor bar should render.
|
||||
*
|
||||
@@ -324,63 +354,83 @@ public class ConfigManager
|
||||
return this.minHunger.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the time that the hands are allowed to display.
|
||||
*
|
||||
* @param time - The hand display time values.
|
||||
*/
|
||||
public void setCrosshairTime(int time)
|
||||
{
|
||||
this.crosshairTime.set(time);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the time that the hands are allowed to display.
|
||||
*
|
||||
* @param time - The hand display time values.
|
||||
*/
|
||||
public void setHandTime(int time)
|
||||
{
|
||||
this.handTime.set(time);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether the armor bar should render.
|
||||
*
|
||||
* @param show - Whether or not armor shows on the HUD.
|
||||
*/
|
||||
public void shouldShowArmor(boolean show)
|
||||
{
|
||||
this.showArmor.set(show);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the minimum health for fading. Anything below that and the health
|
||||
* always displays.
|
||||
*
|
||||
* @param boundary - The health boundary, from 0 to 1.
|
||||
*/
|
||||
public void setMinHealth(double boundary)
|
||||
{
|
||||
this.minHealth.set(MathHelper.clamp(boundary, 0, 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the minimum hunger for fading. Anything below that and the hunger
|
||||
* always displays.
|
||||
*
|
||||
* @param boundary - The hunger boundary, from 0 to 20.
|
||||
*/
|
||||
public void setMinHunger(int boundary)
|
||||
{
|
||||
this.minHunger.set(MathHelper.clamp(boundary, 0, 20));
|
||||
}
|
||||
// /**
|
||||
// * Sets the time that the hands are allowed to display.
|
||||
// *
|
||||
// * @param time - The hand display time values.
|
||||
// */
|
||||
// public void setCrosshairTime(int time)
|
||||
// {
|
||||
// this.crosshairTime.set(time);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Sets whether the crosshairs should be hidden after a period of time.
|
||||
// *
|
||||
// * @param hide - Whether or not crosshairs will be hidden.
|
||||
// */
|
||||
// public void hideCrosshair(boolean hide)
|
||||
// {
|
||||
// this.hideCrosshair.set(hide);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Sets the time that the hands are allowed to display.
|
||||
// *
|
||||
// * @param time - The hand display time values.
|
||||
// */
|
||||
// public void setHandTime(int time)
|
||||
// {
|
||||
// this.handTime.set(time);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Sets whether hands should be hidden after a period of time.
|
||||
// *
|
||||
// * @param hide - Whether or not hands will be hidden.
|
||||
// */
|
||||
// public void hideHands(boolean hide)
|
||||
// {
|
||||
// this.hideHands.set(hide);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Determines whether the armor bar should render.
|
||||
// *
|
||||
// * @param show - Whether or not armor shows on the HUD.
|
||||
// */
|
||||
// public void shouldShowArmor(boolean show)
|
||||
// {
|
||||
// this.showArmor.set(show);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Sets the minimum health for fading. Anything below that and the health
|
||||
// * always displays.
|
||||
// *
|
||||
// * @param boundary - The health boundary, from 0 to 1.
|
||||
// */
|
||||
// public void setMinHealth(double boundary)
|
||||
// {
|
||||
// this.minHealth.set(MathHelper.clamp(boundary, 0, 1));
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Sets the minimum hunger for fading. Anything below that and the hunger
|
||||
// * always displays.
|
||||
// *
|
||||
// * @param boundary - The hunger boundary, from 0 to 20.
|
||||
// */
|
||||
// public void setMinHunger(int boundary)
|
||||
// {
|
||||
// this.minHunger.set(MathHelper.clamp(boundary, 0, 20));
|
||||
// }
|
||||
|
||||
/**
|
||||
* Saves changes to this mod's configuration.
|
||||
*/
|
||||
public void save()
|
||||
{
|
||||
SPEC.save();
|
||||
}
|
||||
// public void save()
|
||||
// {
|
||||
// SPEC.save();
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
*/
|
||||
package markil3.immersive_hud;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.event.RenderHandEvent;
|
||||
import net.minecraftforge.client.event.RenderSpecificHandEvent;
|
||||
import net.minecraftforge.event.entity.EntityMountEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
@@ -62,14 +61,24 @@ public class EventBus
|
||||
@SubscribeEvent
|
||||
public static void onClick(final PlayerInteractEvent event)
|
||||
{
|
||||
DistExecutor.runWhenOn(Dist.CLIENT, () -> () ->
|
||||
try
|
||||
{
|
||||
Item item =
|
||||
Optional.ofNullable(event.getItemStack())
|
||||
.map(ItemStack::getItem)
|
||||
.orElse(null);
|
||||
TimerUtils.onClick(event.getHand(), item);
|
||||
});
|
||||
DistExecutor.runWhenOn(Dist.CLIENT, () -> () ->
|
||||
{
|
||||
Item item =
|
||||
Optional.ofNullable(event.getItemStack())
|
||||
.map(ItemStack::getItem)
|
||||
.orElse(null);
|
||||
TimerUtils.onClick(event.getHand(), item);
|
||||
});
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.error(
|
||||
"Error in running markil3.immersive_hud.EventBus#onClick " +
|
||||
"event",
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -84,10 +93,20 @@ public class EventBus
|
||||
@SubscribeEvent
|
||||
public static void onMount(final EntityMountEvent event)
|
||||
{
|
||||
DistExecutor.runWhenOn(Dist.CLIENT, () -> () ->
|
||||
try
|
||||
{
|
||||
TimerUtils.resetMountHealth();
|
||||
});
|
||||
DistExecutor.runWhenOn(Dist.CLIENT, () -> () ->
|
||||
{
|
||||
TimerUtils.resetMountHealth();
|
||||
});
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.error(
|
||||
"Error in running markil3.immersive_hud.EventBus#onMount " +
|
||||
"event",
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,11 +118,20 @@ public class EventBus
|
||||
@SubscribeEvent
|
||||
public static void onRenderHand(final RenderSpecificHandEvent event)
|
||||
{
|
||||
if (TimerUtils.onRenderHand(event.getHand(),
|
||||
event.getMatrixStack(),
|
||||
event.getPartialTicks()))
|
||||
try
|
||||
{
|
||||
event.setCanceled(true);
|
||||
if (TimerUtils.onRenderHand(event.getHand(),
|
||||
event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.error(
|
||||
"Error in running markil3.immersive_hud" +
|
||||
".EventBus#onRenderHand event",
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,153 +144,162 @@ public class EventBus
|
||||
@SubscribeEvent
|
||||
public static void onGUIDraw(final RenderGameOverlayEvent event)
|
||||
{
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
boolean fadeIn = false;
|
||||
|
||||
switch (event.getType())
|
||||
try
|
||||
{
|
||||
case CROSSHAIRS:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
boolean fadeIn = false;
|
||||
|
||||
switch (event.getType())
|
||||
{
|
||||
if (TimerUtils.drawCrosshair(event.getPartialTicks()))
|
||||
case CROSSHAIRS:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawCrosshair(event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Reset the transparency.
|
||||
*/
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case POTION_ICONS:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
TimerUtils.updatePotions(mc.player);
|
||||
event.setCanceled(true);
|
||||
RenderUtils.renderPotionIcons(mc,
|
||||
mc.ingameGUI, event.getPartialTicks());
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case HOTBAR:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
event.setCanceled(true);
|
||||
if (!TimerUtils.drawHotbar(event.getPartialTicks()))
|
||||
{
|
||||
RenderUtils.renderHotbar(mc, mc.ingameGUI,
|
||||
event.getPartialTicks(), TimerUtils.hotbarTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Reset the transparency.
|
||||
*/
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case POTION_ICONS:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
TimerUtils.updatePotions(mc.player);
|
||||
event.setCanceled(true);
|
||||
RenderUtils.renderPotionIcons(mc,
|
||||
mc.ingameGUI, event.getPartialTicks());
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case HOTBAR:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
event.setCanceled(true);
|
||||
if (!TimerUtils.drawHotbar(event.getPartialTicks()))
|
||||
break;
|
||||
case HEALTH:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
RenderUtils.renderHotbar(mc, mc.ingameGUI,
|
||||
event.getPartialTicks(), TimerUtils.hotbarTime);
|
||||
if (TimerUtils.drawHealth(event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case HEALTH:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawHealth(event.getPartialTicks()))
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
GlStateManager.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case FOOD:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawHunger(event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Reset the transparency.
|
||||
*/
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
GlStateManager.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case ARMOR:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawArmor(event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Reset the transparency.
|
||||
*/
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
GlStateManager.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case AIR:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawAir(event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Reset the transparency.
|
||||
*/
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
GlStateManager.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case HEALTHMOUNT:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawMountHealth(event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
GlStateManager.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case JUMPBAR:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
event.setCanceled(true);
|
||||
if (!TimerUtils.drawJumpbar(event.getPartialTicks()))
|
||||
{
|
||||
RenderUtils.renderHorseJumpBar(mc,
|
||||
mc.ingameGUI,
|
||||
event.getPartialTicks(),
|
||||
TimerUtils.jumpTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
RenderSystem.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case FOOD:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawHunger(event.getPartialTicks()))
|
||||
break;
|
||||
case EXPERIENCE:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
event.setCanceled(true);
|
||||
if (!TimerUtils.drawExperience(event.getPartialTicks()))
|
||||
{
|
||||
RenderUtils.renderExperience(mc,
|
||||
mc.ingameGUI,
|
||||
event.getPartialTicks(),
|
||||
TimerUtils.experienceTime);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* Reset the transparency.
|
||||
*/
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
RenderSystem.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case ARMOR:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawArmor(event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Reset the transparency.
|
||||
*/
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
RenderSystem.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case AIR:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawAir(event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Reset the transparency.
|
||||
*/
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
RenderSystem.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case HEALTHMOUNT:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
if (TimerUtils.drawMountHealth(event.getPartialTicks()))
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
else if (event instanceof RenderGameOverlayEvent.Post)
|
||||
{
|
||||
RenderSystem.popMatrix();
|
||||
resetAlpha();
|
||||
}
|
||||
break;
|
||||
case JUMPBAR:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
event.setCanceled(true);
|
||||
if (!TimerUtils.drawJumpbar(event.getPartialTicks()))
|
||||
{
|
||||
RenderUtils.renderHorseJumpBar(mc,
|
||||
mc.ingameGUI,
|
||||
event.getPartialTicks(),
|
||||
TimerUtils.jumpTime);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EXPERIENCE:
|
||||
if (event instanceof RenderGameOverlayEvent.Pre)
|
||||
{
|
||||
event.setCanceled(true);
|
||||
if (!TimerUtils.drawExperience(event.getPartialTicks()))
|
||||
{
|
||||
RenderUtils.renderExperience(mc,
|
||||
mc.ingameGUI,
|
||||
event.getPartialTicks(),
|
||||
TimerUtils.experienceTime);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.error(
|
||||
"Error in running markil3.immersive_hud.EventBus#onGUIDraw event",
|
||||
e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,39 +16,34 @@ package markil3.immersive_hud;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Ordering;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.AbstractGui;
|
||||
import net.minecraft.client.gui.IngameGui;
|
||||
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.ItemRenderer;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
||||
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.client.renderer.texture.PotionSpriteUploader;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.client.renderer.texture.TextureManager;
|
||||
import net.minecraft.client.settings.AttackIndicatorStatus;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.CrashReportCategory;
|
||||
import net.minecraft.crash.ReportedException;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.potion.Effect;
|
||||
import net.minecraft.potion.EffectInstance;
|
||||
import net.minecraft.util.HandSide;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@@ -63,18 +58,79 @@ import java.util.List;
|
||||
*/
|
||||
public class RenderUtils
|
||||
{
|
||||
private static int getBlitOffset(IngameGui gui)
|
||||
{
|
||||
Field blitAccessField = null;
|
||||
int blitAccess = 0;
|
||||
try
|
||||
{
|
||||
blitAccessField = AbstractGui.class.getDeclaredField("blitOffset");
|
||||
}
|
||||
catch (NoSuchFieldException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (!blitAccessField.isAccessible())
|
||||
{
|
||||
blitAccessField.setAccessible(true);
|
||||
}
|
||||
try
|
||||
{
|
||||
blitAccess = (int) blitAccessField.get(gui);
|
||||
}
|
||||
catch (IllegalAccessException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return blitAccess;
|
||||
}
|
||||
|
||||
private static boolean setBlitOffset(IngameGui gui, int value)
|
||||
{
|
||||
Field blitAccessField = null;
|
||||
int blitAccess = 0;
|
||||
try
|
||||
{
|
||||
blitAccessField = AbstractGui.class.getDeclaredField("blitOffset");
|
||||
}
|
||||
catch (NoSuchFieldException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!blitAccessField.isAccessible())
|
||||
{
|
||||
blitAccessField.setAccessible(true);
|
||||
}
|
||||
try
|
||||
{
|
||||
blitAccessField.set(gui, value);
|
||||
return true;
|
||||
}
|
||||
catch (IllegalAccessException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void renderPotionIcons(Minecraft mc,
|
||||
IngameGui gui,
|
||||
float ticks)
|
||||
{
|
||||
int scaledWidth = mc.func_228018_at_().getScaledWidth();
|
||||
int scaledHeight = mc.func_228018_at_().getScaledHeight();
|
||||
|
||||
int scaledWidth = mc.mainWindow.getScaledWidth();
|
||||
int scaledHeight = mc.mainWindow.getScaledHeight();
|
||||
|
||||
Collection<EffectInstance> collection =
|
||||
mc.player.getActivePotionEffects();
|
||||
|
||||
|
||||
if (!collection.isEmpty())
|
||||
{
|
||||
RenderSystem.enableBlend();
|
||||
GlStateManager.enableBlend();
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
PotionSpriteUploader potionspriteuploader =
|
||||
@@ -92,7 +148,7 @@ public class RenderUtils
|
||||
float effectAlpha = TimerUtils.getPotionAlpha(mc.player,
|
||||
effectinstance,
|
||||
ticks);
|
||||
if (!effectinstance.shouldRenderHUD() || effectAlpha < 0.01F)
|
||||
if (!effectinstance.isShowIcon() || effectAlpha < 0.01F)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -120,7 +176,7 @@ public class RenderUtils
|
||||
l += 26;
|
||||
}
|
||||
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, effectAlpha);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, effectAlpha);
|
||||
if (effectinstance.isAmbient())
|
||||
{
|
||||
gui.blit(k, l, 165, 166, 24, 24);
|
||||
@@ -130,31 +186,25 @@ public class RenderUtils
|
||||
gui.blit(k, l, 141, 166, 24, 24);
|
||||
}
|
||||
|
||||
float f_f = effectAlpha;
|
||||
int k_f = k;
|
||||
int l_f = l;
|
||||
|
||||
TextureAtlasSprite textureatlassprite =
|
||||
potionspriteuploader.getSprite(effect);
|
||||
int j1 = k;
|
||||
int k1 = l;
|
||||
float f1 = effectAlpha;
|
||||
potionspriteuploader.func_215288_a(effect);
|
||||
list.add(() -> {
|
||||
mc.getTextureManager()
|
||||
.bindTexture(textureatlassprite.func_229241_m_()
|
||||
.func_229223_g_());
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, f1);
|
||||
gui.blit(j1 + 3,
|
||||
k1 + 3,
|
||||
gui.getBlitOffset(),
|
||||
18,
|
||||
18,
|
||||
textureatlassprite);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, f_f);
|
||||
gui.blit(k_f + 3, l_f + 3, getBlitOffset(gui), 18, 18, textureatlassprite);
|
||||
});
|
||||
effectinstance.renderHUDEffect(gui,
|
||||
effect.renderHUDEffect(effectinstance, gui,
|
||||
k,
|
||||
l,
|
||||
gui.getBlitOffset(),
|
||||
getBlitOffset(gui),
|
||||
effectAlpha);
|
||||
}
|
||||
}
|
||||
|
||||
mc.getTextureManager().bindTexture(AtlasTexture.LOCATION_EFFECTS_TEXTURE);
|
||||
list.forEach(Runnable::run);
|
||||
}
|
||||
}
|
||||
@@ -168,7 +218,7 @@ public class RenderUtils
|
||||
* @param renderTime - How much time before this element becomes fully
|
||||
* transparent.
|
||||
*
|
||||
* @see IngameGui#renderHorseJumpBar(MatrixStack, int)
|
||||
* @see IngameGui#renderHorseJumpBar(int)
|
||||
*/
|
||||
public static void renderHorseJumpBar(Minecraft mc,
|
||||
IngameGui gui,
|
||||
@@ -185,13 +235,13 @@ public class RenderUtils
|
||||
jump.getMaxTime(),
|
||||
jump.getFadeInTime(),
|
||||
jump.getFadeOutTime());
|
||||
int scaledWidth = mc.func_228018_at_().getScaledWidth();
|
||||
int scaledHeight = mc.func_228018_at_().getScaledHeight();
|
||||
int scaledWidth = mc.mainWindow.getScaledWidth();
|
||||
int scaledHeight = mc.mainWindow.getScaledHeight();
|
||||
int xPosition = scaledWidth / 2 - 91;
|
||||
|
||||
mc.getProfiler().startSection("jumpBar");
|
||||
RenderSystem.enableBlend();
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
mc.getTextureManager().bindTexture(AbstractGui.GUI_ICONS_LOCATION);
|
||||
float f = mc.player.getHorseJumpPower();
|
||||
int i = 182;
|
||||
@@ -202,9 +252,9 @@ public class RenderUtils
|
||||
{
|
||||
gui.blit(xPosition, k, 0, 89, j, 5);
|
||||
}
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
|
||||
RenderSystem.disableBlend();
|
||||
GlStateManager.disableBlend();
|
||||
mc.getProfiler().endSection();
|
||||
}
|
||||
|
||||
@@ -217,7 +267,7 @@ public class RenderUtils
|
||||
* @param renderTime - How much time before this element becomes fully
|
||||
* transparent.
|
||||
*
|
||||
* @see IngameGui#func_238454_b_(MatrixStack, int)
|
||||
* @see IngameGui#func_238454_b_(int)
|
||||
*/
|
||||
public static void renderExperience(Minecraft mc,
|
||||
IngameGui gui,
|
||||
@@ -236,16 +286,16 @@ public class RenderUtils
|
||||
experience.getMaxTime(),
|
||||
experience.getFadeInTime(),
|
||||
experience.getFadeOutTime());
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
|
||||
if (mc.playerController.gameIsSurvivalOrAdventure())
|
||||
{
|
||||
int scaledWidth = mc.func_228018_at_().getScaledWidth();
|
||||
int scaledHeight = mc.func_228018_at_().getScaledHeight();
|
||||
int scaledWidth = mc.mainWindow.getScaledWidth();
|
||||
int scaledHeight = mc.mainWindow.getScaledHeight();
|
||||
int x = scaledWidth / 2 - 91;
|
||||
|
||||
mc.getProfiler().startSection("expBar");
|
||||
RenderSystem.enableBlend();
|
||||
GlStateManager.enableBlend();
|
||||
mc.getTextureManager().bindTexture(AbstractGui.GUI_ICONS_LOCATION);
|
||||
int i = mc.player.xpBarCap();
|
||||
if (i > 0)
|
||||
@@ -260,12 +310,12 @@ public class RenderUtils
|
||||
}
|
||||
}
|
||||
|
||||
RenderSystem.disableBlend();
|
||||
GlStateManager.disableBlend();
|
||||
mc.getProfiler().endSection();
|
||||
if (mc.player.experienceLevel > 0)
|
||||
{
|
||||
mc.getProfiler().startSection("expLevel");
|
||||
RenderSystem.enableBlend();
|
||||
GlStateManager.enableBlend();
|
||||
String s = "" + mc.player.experienceLevel;
|
||||
int i1 = (scaledWidth - gui.getFontRenderer()
|
||||
.getStringWidth(s)) / 2;
|
||||
@@ -299,11 +349,11 @@ public class RenderUtils
|
||||
(float) i1,
|
||||
(float) j1,
|
||||
8453920);
|
||||
RenderSystem.disableBlend();
|
||||
GlStateManager.disableBlend();
|
||||
mc.getProfiler().endSection();
|
||||
}
|
||||
}
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
|
||||
@@ -339,25 +389,21 @@ public class RenderUtils
|
||||
hotbar.getFadeInTime(),
|
||||
hotbar.getFadeOutTime());
|
||||
|
||||
int scaledWidth = mc.func_228018_at_().getScaledWidth();
|
||||
int scaledHeight = mc.func_228018_at_().getScaledHeight();
|
||||
int scaledWidth = mc.mainWindow.getScaledWidth();
|
||||
int scaledHeight = mc.mainWindow.getScaledHeight();
|
||||
if (playerentity != null)
|
||||
{
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
mc.getTextureManager().bindTexture(WIDGETS_TEX_PATH);
|
||||
ItemStack itemstack = playerentity.getHeldItemOffhand();
|
||||
HandSide handside = playerentity.getPrimaryHand().opposite();
|
||||
int i = scaledWidth / 2;
|
||||
int j = gui.getBlitOffset();
|
||||
int j = getBlitOffset(gui);
|
||||
int k = 182;
|
||||
int l = 91;
|
||||
gui.setBlitOffset(-90);
|
||||
gui.blit(i - 91,
|
||||
scaledHeight - TimerUtils.getHotbarTranslation(),
|
||||
0,
|
||||
0,
|
||||
182,
|
||||
22);
|
||||
setBlitOffset(gui, -90);
|
||||
gui.blit(i - 91, scaledHeight - TimerUtils.getHotbarTranslation(), 0, 0, 182, 22);
|
||||
gui.blit(i - 91 - 1 + playerentity.inventory.currentItem * 20,
|
||||
scaledHeight - (int) (22F * alpha) - 1,
|
||||
0,
|
||||
@@ -369,7 +415,7 @@ public class RenderUtils
|
||||
if (handside == HandSide.LEFT)
|
||||
{
|
||||
gui.blit(i - 91 - 29,
|
||||
scaledHeight - (int) (23F * alpha),
|
||||
scaledHeight - (int) (23 * alpha),
|
||||
24,
|
||||
22,
|
||||
29,
|
||||
@@ -377,25 +423,26 @@ public class RenderUtils
|
||||
}
|
||||
else
|
||||
{
|
||||
gui.blit(i + 91,
|
||||
scaledHeight - (int) (23F * alpha),
|
||||
53,
|
||||
22,
|
||||
29,
|
||||
24);
|
||||
gui.blit(i + 91, scaledHeight - (int) (23 * alpha), 53, 22, 29, 24);
|
||||
}
|
||||
}
|
||||
|
||||
gui.setBlitOffset(j);
|
||||
RenderSystem.enableRescaleNormal();
|
||||
RenderSystem.enableBlend();
|
||||
RenderSystem.defaultBlendFunc();
|
||||
setBlitOffset(gui, j);
|
||||
GlStateManager.enableRescaleNormal();
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA,
|
||||
GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA,
|
||||
GlStateManager.SourceFactor.ONE,
|
||||
GlStateManager.DestFactor.ZERO);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
|
||||
for (int i1 = 0; i1 < 9; ++i1)
|
||||
{
|
||||
int j1 = i - 90 + i1 * 20 + 2;
|
||||
int k1 = scaledHeight - (int) (16F * alpha) - 3;
|
||||
renderHotbarItem(mc, alpha, j1,
|
||||
int k1 = scaledHeight - (int) (16 * alpha) - 3;
|
||||
renderHotbarItem(mc,
|
||||
alpha,
|
||||
j1,
|
||||
k1,
|
||||
partialTicks,
|
||||
playerentity,
|
||||
@@ -404,10 +451,12 @@ public class RenderUtils
|
||||
|
||||
if (!itemstack.isEmpty())
|
||||
{
|
||||
int i2 = scaledHeight - (int) (16F * alpha) - 3;
|
||||
int i2 = scaledHeight - (int) (16 * alpha) - 3;
|
||||
if (handside == HandSide.LEFT)
|
||||
{
|
||||
renderHotbarItem(mc, alpha, i - 91 - 26,
|
||||
renderHotbarItem(mc,
|
||||
alpha,
|
||||
i - 91 - 26,
|
||||
i2,
|
||||
partialTicks,
|
||||
playerentity,
|
||||
@@ -415,7 +464,9 @@ public class RenderUtils
|
||||
}
|
||||
else
|
||||
{
|
||||
renderHotbarItem(mc, alpha, i + 91 + 10,
|
||||
renderHotbarItem(mc,
|
||||
alpha,
|
||||
i + 91 + 10,
|
||||
i2,
|
||||
partialTicks,
|
||||
playerentity,
|
||||
@@ -438,19 +489,15 @@ public class RenderUtils
|
||||
mc.getTextureManager()
|
||||
.bindTexture(AbstractGui.GUI_ICONS_LOCATION);
|
||||
int l1 = (int) (f * 19.0F);
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
gui.blit(k2, j2, 0, 94, 18, 18);
|
||||
gui.blit(k2,
|
||||
j2 + 18 - l1,
|
||||
18,
|
||||
112 - l1,
|
||||
18,
|
||||
l1);
|
||||
gui.blit(k2, j2 + 18 - l1, 18, 112 - l1, 18, l1);
|
||||
}
|
||||
}
|
||||
|
||||
RenderSystem.disableRescaleNormal();
|
||||
RenderSystem.disableBlend();
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GlStateManager.disableRescaleNormal();
|
||||
GlStateManager.disableBlend();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -473,76 +520,119 @@ public class RenderUtils
|
||||
PlayerEntity player,
|
||||
ItemStack stack)
|
||||
{
|
||||
if (!stack.isEmpty()) {
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
float f = (float)stack.getAnimationsToGo() - partialTicks;
|
||||
if (f > 0.0F) {
|
||||
RenderSystem.pushMatrix();
|
||||
if (!stack.isEmpty())
|
||||
{
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
float f = (float) stack.getAnimationsToGo() - partialTicks;
|
||||
if (f > 0.0F)
|
||||
{
|
||||
GlStateManager.pushMatrix();
|
||||
float f1 = 1.0F + f / 5.0F;
|
||||
RenderSystem.translatef((float)(x + 8), (float)(y + 12), 0.0F);
|
||||
RenderSystem.scalef(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F);
|
||||
RenderSystem.translatef((float)(-(x + 8)), (float)(-(y + 12)), 0.0F);
|
||||
GlStateManager.translatef((float) (x + 8),
|
||||
(float) (y + 12),
|
||||
0.0F);
|
||||
GlStateManager.scalef(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F);
|
||||
GlStateManager.translatef((float) (-(x + 8)),
|
||||
(float) (-(y + 12)),
|
||||
0.0F);
|
||||
}
|
||||
|
||||
renderItemAndEffectIntoGUI(mc, player, stack, x, y, alpha);
|
||||
if (f > 0.0F) {
|
||||
RenderSystem.popMatrix();
|
||||
if (f > 0.0F)
|
||||
{
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
mc.getItemRenderer().renderItemOverlays(mc.fontRenderer, stack, x, y);
|
||||
mc.getItemRenderer()
|
||||
.renderItemOverlays(mc.fontRenderer, stack, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
private static void renderItemAndEffectIntoGUI(Minecraft mc, LivingEntity entityIn, ItemStack itemIn, int x, int y, float alpha)
|
||||
private static void renderItemAndEffectIntoGUI(Minecraft mc,
|
||||
LivingEntity entityIn,
|
||||
ItemStack itemIn,
|
||||
int x,
|
||||
int y,
|
||||
float alpha)
|
||||
{
|
||||
if (!itemIn.isEmpty()) {
|
||||
if (!itemIn.isEmpty())
|
||||
{
|
||||
float zLevel = 50.0F;
|
||||
|
||||
try {
|
||||
IBakedModel bakedmodel = mc.getItemRenderer().getItemModelWithOverrides(itemIn, (World)null, entityIn);
|
||||
RenderSystem.pushMatrix();
|
||||
mc.getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
||||
mc.getTextureManager().func_229267_b_(AtlasTexture.LOCATION_BLOCKS_TEXTURE).setBlurMipmapDirect(false, false);
|
||||
RenderSystem.enableRescaleNormal();
|
||||
RenderSystem.enableAlphaTest();
|
||||
RenderSystem.defaultAlphaFunc();
|
||||
RenderSystem.enableBlend();
|
||||
RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
|
||||
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
RenderSystem.translatef((float)x, (float)y, 100.0F + zLevel);
|
||||
RenderSystem.translatef(8.0F, 8.0F, 0.0F);
|
||||
RenderSystem.scalef(1.0F, -1.0F, 1.0F);
|
||||
RenderSystem.scalef(16.0F, 16.0F, 16.0F);
|
||||
MatrixStack matrixstack = new MatrixStack();
|
||||
IRenderTypeBuffer.Impl irendertypebuffer$impl = Minecraft.getInstance().func_228019_au_().func_228487_b_();
|
||||
Item item = itemIn.getItem();
|
||||
boolean flag = !bakedmodel.isGui3d() || item == Items.SHIELD || item == Items.TRIDENT;
|
||||
if (flag) {
|
||||
RenderHelper.func_227783_c_();
|
||||
try
|
||||
{
|
||||
IBakedModel bakedmodel = mc.getItemRenderer()
|
||||
.getItemModelWithOverrides(itemIn,
|
||||
(World) null,
|
||||
entityIn);
|
||||
GlStateManager.pushMatrix();
|
||||
mc.getTextureManager()
|
||||
.bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
||||
mc.getTextureManager()
|
||||
.getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE)
|
||||
.setBlurMipmap(false, false);
|
||||
GlStateManager.enableRescaleNormal();
|
||||
GlStateManager.enableAlphaTest();
|
||||
GlStateManager.alphaFunc(516, 0.1F);
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA,
|
||||
GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
|
||||
Method transformMethod = null;
|
||||
try
|
||||
{
|
||||
transformMethod = ItemRenderer.class.getDeclaredMethod("setupGuiTransform", int.class, int.class, boolean.class);
|
||||
}
|
||||
|
||||
mc.getItemRenderer().func_229111_a_(itemIn, ItemCameraTransforms.TransformType.GUI, false, matrixstack, irendertypebuffer$impl, 15728880, OverlayTexture.field_229196_a_, bakedmodel);
|
||||
irendertypebuffer$impl.func_228461_a_();
|
||||
RenderSystem.enableDepthTest();
|
||||
if (flag) {
|
||||
RenderHelper.func_227784_d_();
|
||||
catch (NoSuchMethodException e)
|
||||
{
|
||||
try
|
||||
{
|
||||
transformMethod = ItemRenderer.class.getDeclaredMethod("func_180452_a", int.class, int.class, boolean.class);
|
||||
}
|
||||
catch (NoSuchMethodException e1)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
RenderSystem.disableAlphaTest();
|
||||
RenderSystem.disableRescaleNormal();
|
||||
RenderSystem.popMatrix();
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.makeCrashReport(throwable, "Rendering item");
|
||||
CrashReportCategory crashreportcategory = crashreport.makeCategory("Item being rendered");
|
||||
if (transformMethod != null)
|
||||
{
|
||||
if (!transformMethod.isAccessible())
|
||||
{
|
||||
transformMethod.setAccessible(true);
|
||||
}
|
||||
transformMethod.invoke(mc.getItemRenderer(), x, y, bakedmodel.isGui3d());
|
||||
}
|
||||
bakedmodel =
|
||||
net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(
|
||||
bakedmodel,
|
||||
ItemCameraTransforms.TransformType.GUI,
|
||||
false);
|
||||
mc.getItemRenderer().renderItem(itemIn, bakedmodel);
|
||||
GlStateManager.disableAlphaTest();
|
||||
GlStateManager.disableRescaleNormal();
|
||||
GlStateManager.disableLighting();
|
||||
GlStateManager.popMatrix();
|
||||
mc.textureManager.bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
|
||||
mc.textureManager.getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE)
|
||||
.restoreLastBlurMipmap();
|
||||
}
|
||||
catch (Throwable throwable)
|
||||
{
|
||||
CrashReport crashreport = CrashReport.makeCrashReport(throwable,
|
||||
"Rendering item");
|
||||
CrashReportCategory crashreportcategory =
|
||||
crashreport.makeCategory("Item being rendered");
|
||||
crashreportcategory.addDetail("Item Type", () -> {
|
||||
return String.valueOf((Object)itemIn.getItem());
|
||||
return String.valueOf((Object) itemIn.getItem());
|
||||
});
|
||||
crashreportcategory.addDetail("Registry Name", () -> String.valueOf(itemIn.getItem().getRegistryName()));
|
||||
crashreportcategory.addDetail("Registry Name",
|
||||
() -> String.valueOf(itemIn.getItem()
|
||||
.getRegistryName()));
|
||||
crashreportcategory.addDetail("Item Damage", () -> {
|
||||
return String.valueOf(itemIn.getDamage());
|
||||
});
|
||||
crashreportcategory.addDetail("Item NBT", () -> {
|
||||
return String.valueOf((Object)itemIn.getTag());
|
||||
return String.valueOf((Object) itemIn.getTag());
|
||||
});
|
||||
crashreportcategory.addDetail("Item Foil", () -> {
|
||||
return String.valueOf(itemIn.hasEffect());
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package markil3.immersive_hud;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||
@@ -15,16 +14,16 @@ 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.ShieldItem;
|
||||
import net.minecraft.item.ShootableItem;
|
||||
import net.minecraft.item.SnowballItem;
|
||||
import net.minecraft.item.ThrowablePotionItem;
|
||||
import net.minecraft.item.SplashPotionItem;
|
||||
import net.minecraft.item.TridentItem;
|
||||
import net.minecraft.potion.Effect;
|
||||
import net.minecraft.potion.EffectInstance;
|
||||
import net.minecraft.potion.Effects;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.Util;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
|
||||
@@ -170,7 +169,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);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -270,11 +269,11 @@ public class TimerUtils
|
||||
if (item.isFood())
|
||||
{
|
||||
healthTime = health.getMaxTime() - (healthTime > 0 ?
|
||||
health.getFadeInTime() :
|
||||
0);
|
||||
health.getFadeInTime() :
|
||||
0);
|
||||
hungerTime = hunger.getMaxTime() - (hungerTime > 0 ?
|
||||
hunger.getFadeInTime() :
|
||||
0);
|
||||
hunger.getFadeInTime() :
|
||||
0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -284,7 +283,6 @@ public class TimerUtils
|
||||
* hands into and out of view as needed.
|
||||
*
|
||||
* @param hand - The hand being rendered.
|
||||
* @param matrixStack - The rendering stack.
|
||||
* @param ticks
|
||||
*
|
||||
* @return If true, then don't render this hand at all.
|
||||
@@ -292,62 +290,64 @@ public class TimerUtils
|
||||
* @since 0.2-1.16.4-forge
|
||||
*/
|
||||
public static boolean onRenderHand(Hand hand,
|
||||
MatrixStack matrixStack,
|
||||
float ticks)
|
||||
{
|
||||
float HAND_UP_TIME = 20F;
|
||||
|
||||
switch (hand)
|
||||
boolean hideHands =
|
||||
ConfigManager.getInstance().hideHands();
|
||||
if (hideHands)
|
||||
{
|
||||
case OFF_HAND:
|
||||
if (mainHandTime > 0 && mainHandTime < HAND_UP_TIME)
|
||||
switch (hand)
|
||||
{
|
||||
/*
|
||||
* Undo the transformation of the previous hand
|
||||
*/
|
||||
matrixStack.func_227862_a_(0,
|
||||
(float) (1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME),
|
||||
case OFF_HAND:
|
||||
if (mainHandTime > 0 && mainHandTime < HAND_UP_TIME)
|
||||
{
|
||||
/*
|
||||
* Undo the transformation of the previous hand
|
||||
*/
|
||||
GlStateManager.translatef(0,
|
||||
(float) (1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME),
|
||||
0);
|
||||
}
|
||||
if (offHandTime == 0 && !offHandLock)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (!offHandLock && (mapLock & 0b01) == 0)
|
||||
{
|
||||
if (offHandTime > 0)
|
||||
{
|
||||
offHandTime -= ticks;
|
||||
}
|
||||
if (offHandTime < HAND_UP_TIME)
|
||||
{
|
||||
GlStateManager.translatef(0,
|
||||
(float) (-1.0F * (HAND_UP_TIME - offHandTime) / HAND_UP_TIME),
|
||||
0);
|
||||
}
|
||||
if (offHandTime == 0 && !offHandLock)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (!offHandLock && (mapLock & 0b01) == 0)
|
||||
{
|
||||
if (offHandTime > 0)
|
||||
{
|
||||
offHandTime -= ticks;
|
||||
}
|
||||
}
|
||||
if (offHandTime < HAND_UP_TIME)
|
||||
break;
|
||||
case MAIN_HAND:
|
||||
if (mainHandTime == 0 && !mainHandLock)
|
||||
{
|
||||
matrixStack
|
||||
.func_227862_a_(0,
|
||||
(float) (-1.0F * (HAND_UP_TIME - offHandTime) / HAND_UP_TIME),
|
||||
0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MAIN_HAND:
|
||||
if (mainHandTime == 0 && !mainHandLock)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (!mainHandLock && (mapLock & 0b10) == 0)
|
||||
{
|
||||
if (mainHandTime > 0)
|
||||
else if (!mainHandLock && (mapLock & 0b10) == 0)
|
||||
{
|
||||
mainHandTime -= ticks;
|
||||
}
|
||||
if (mainHandTime < HAND_UP_TIME)
|
||||
{
|
||||
matrixStack
|
||||
.func_227861_a_(0,
|
||||
(float) (-1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME),
|
||||
0);
|
||||
if (mainHandTime > 0)
|
||||
{
|
||||
mainHandTime -= ticks;
|
||||
}
|
||||
if (mainHandTime < HAND_UP_TIME)
|
||||
{
|
||||
GlStateManager.translatef(0,
|
||||
(float) (-1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME),
|
||||
0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -360,8 +360,8 @@ public class TimerUtils
|
||||
ConfigManager.TimeValues health =
|
||||
ConfigManager.getInstance().getHealthTime();
|
||||
mountTime = health.getMaxTime() - (mountTime > 0 ?
|
||||
health.getFadeInTime() :
|
||||
0);
|
||||
health.getFadeInTime() :
|
||||
0);
|
||||
jumpTime = 0;
|
||||
}
|
||||
|
||||
@@ -383,34 +383,39 @@ public class TimerUtils
|
||||
boolean changed = false;
|
||||
boolean canceled = false;
|
||||
|
||||
if (mc.objectMouseOver != null && mc.objectMouseOver.getType() != RayTraceResult.Type.MISS)
|
||||
boolean hideCrosshair =
|
||||
ConfigManager.getInstance().hideCrosshair();
|
||||
if (hideCrosshair)
|
||||
{
|
||||
if (mc.objectMouseOver.getType() == RayTraceResult.Type.ENTITY)
|
||||
if (mc.objectMouseOver != null && mc.objectMouseOver.getType() != RayTraceResult.Type.MISS)
|
||||
{
|
||||
if (mc.objectMouseOver.hitInfo == null || mc.objectMouseOver.hitInfo != mc.player
|
||||
.getRidingEntity())
|
||||
if (mc.objectMouseOver.getType() == RayTraceResult.Type.ENTITY)
|
||||
{
|
||||
if (mc.objectMouseOver.hitInfo == null || mc.objectMouseOver.hitInfo != mc.player
|
||||
.getRidingEntity())
|
||||
{
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
if (changed || mainHandLock || offHandLock || crosshairTime > 0)
|
||||
{
|
||||
setAlpha(Main.getAlpha(crosshairTime > 0 ?
|
||||
crosshairTime :
|
||||
CROSSHAIR_TIME, CROSSHAIR_TIME, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
changed = true;
|
||||
canceled = true;
|
||||
}
|
||||
if (crosshairTime > 0)
|
||||
{
|
||||
crosshairTime -= ticks;
|
||||
}
|
||||
}
|
||||
if (changed || mainHandLock || offHandLock || crosshairTime > 0)
|
||||
{
|
||||
setAlpha(Main.getAlpha(crosshairTime > 0 ?
|
||||
crosshairTime :
|
||||
CROSSHAIR_TIME, CROSSHAIR_TIME, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
canceled = true;
|
||||
}
|
||||
if (crosshairTime > 0)
|
||||
{
|
||||
crosshairTime -= ticks;
|
||||
}
|
||||
|
||||
return canceled;
|
||||
@@ -474,7 +479,8 @@ public class TimerUtils
|
||||
}
|
||||
else if (effectinstance.getDuration() <= BLINK_TIME + potion.getFadeInTime())
|
||||
{
|
||||
effectAlpha = -(effectinstance.getDuration() - BLINK_TIME) / 22F + 0.454F;
|
||||
effectAlpha =
|
||||
-(effectinstance.getDuration() - BLINK_TIME) / 22F + 0.454F;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -602,7 +608,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 || item instanceof SnowballItem || item instanceof EggItem || item instanceof EnderPearlItem || item instanceof FishingRodItem)
|
||||
else if (item instanceof SplashPotionItem || item instanceof LingeringPotionItem || item instanceof SnowballItem || item instanceof EggItem || item instanceof EnderPearlItem || item instanceof FishingRodItem)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
@@ -645,11 +651,11 @@ public class TimerUtils
|
||||
if (item.isFood())
|
||||
{
|
||||
healthTime = health.getMaxTime() - (healthTime > 0 ?
|
||||
health.getFadeInTime() :
|
||||
0);
|
||||
health.getFadeInTime() :
|
||||
0);
|
||||
hungerTime = hunger.getMaxTime() - (hungerTime > 0 ?
|
||||
hunger.getFadeInTime() :
|
||||
0);
|
||||
hunger.getFadeInTime() :
|
||||
0);
|
||||
}
|
||||
if (i == 0)
|
||||
{
|
||||
@@ -757,12 +763,13 @@ public class TimerUtils
|
||||
* Only makes a change if the player is healthy. Otherwise,
|
||||
* the bar is shown.
|
||||
*/
|
||||
if (health / maxHealth > HEALTH_BOUNDARY && !mc.player.isPotionActive(Effects.WITHER) && !mc.player.isPotionActive(Effects.POISON))
|
||||
if (health / maxHealth > HEALTH_BOUNDARY && !mc.player.isPotionActive(
|
||||
Effects.WITHER) && !mc.player.isPotionActive(Effects.POISON))
|
||||
{
|
||||
if (healthTime > 0)
|
||||
{
|
||||
RenderSystem.pushMatrix();
|
||||
RenderSystem.translatef(0F,
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translatef(0F,
|
||||
getHealthTranslation(),
|
||||
0F);
|
||||
setAlpha(Main.getAlpha(healthTime,
|
||||
@@ -773,8 +780,8 @@ public class TimerUtils
|
||||
}
|
||||
return true;
|
||||
}
|
||||
RenderSystem.pushMatrix();
|
||||
RenderSystem.translatef(0F,
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translatef(0F,
|
||||
getHealthTranslation(),
|
||||
0F);
|
||||
return false;
|
||||
@@ -816,8 +823,8 @@ public class TimerUtils
|
||||
if (changed || hunger <= HUNGER_BOUNDARY)
|
||||
{
|
||||
hungerTime = hungerTimes.getMaxTime() - (hungerTime > 0 ?
|
||||
hungerTimes.getFadeInTime() :
|
||||
0);
|
||||
hungerTimes.getFadeInTime() :
|
||||
0);
|
||||
}
|
||||
else if (hungerTime > 0)
|
||||
{
|
||||
@@ -835,16 +842,16 @@ public class TimerUtils
|
||||
hungerTimes.getMaxTime(),
|
||||
hungerTimes.getFadeInTime(),
|
||||
hungerTimes.getFadeOutTime()));
|
||||
RenderSystem.pushMatrix();
|
||||
RenderSystem.translatef(0F,
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translatef(0F,
|
||||
getHealthTranslation(),
|
||||
0F);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
RenderSystem.pushMatrix();
|
||||
RenderSystem.translatef(0F,
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translatef(0F,
|
||||
getHealthTranslation(),
|
||||
0F);
|
||||
return false;
|
||||
@@ -873,8 +880,8 @@ public class TimerUtils
|
||||
healthTimes.getMaxTime(),
|
||||
healthTimes.getFadeInTime(),
|
||||
healthTimes.getFadeOutTime()));
|
||||
RenderSystem.pushMatrix();
|
||||
RenderSystem.translatef(0F,
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translatef(0F,
|
||||
getHealthTranslation(),
|
||||
0F);
|
||||
return false;
|
||||
@@ -893,8 +900,8 @@ public class TimerUtils
|
||||
*/
|
||||
public static boolean drawAir(float ticks)
|
||||
{
|
||||
RenderSystem.pushMatrix();
|
||||
RenderSystem.translatef(0F,
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translatef(0F,
|
||||
getHealthTranslation(),
|
||||
0F);
|
||||
return false;
|
||||
@@ -926,7 +933,7 @@ public class TimerUtils
|
||||
Entity tmp = mc.player.getRidingEntity();
|
||||
boolean changed = false;
|
||||
|
||||
if (tmp == null)
|
||||
if (tmp == null || !(tmp instanceof LivingEntity))
|
||||
{
|
||||
mountHealth = -1;
|
||||
mountMaxHealth = -1;
|
||||
@@ -965,8 +972,8 @@ public class TimerUtils
|
||||
{
|
||||
if (mountTime > 0)
|
||||
{
|
||||
RenderSystem.pushMatrix();
|
||||
RenderSystem.translatef(0F,
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translatef(0F,
|
||||
getHealthTranslation(),
|
||||
0F);
|
||||
setAlpha(Main.getAlpha(mountTime,
|
||||
@@ -977,8 +984,8 @@ public class TimerUtils
|
||||
}
|
||||
return true;
|
||||
}
|
||||
RenderSystem.pushMatrix();
|
||||
RenderSystem.translatef(0F,
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translatef(0F,
|
||||
getHealthTranslation(),
|
||||
0F);
|
||||
return false;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
|
||||
modLoader="javafml" #mandatory
|
||||
# A version range to match for said mod loader - for regular FML @Mod it will be the forge version
|
||||
loaderVersion="[28,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions.
|
||||
loaderVersion="[26,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions.
|
||||
# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties.
|
||||
# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here.
|
||||
license="GPL-3.0-only"
|
||||
@@ -57,7 +57,7 @@ The following elements will only show up under certain conditions:
|
||||
# Does this dependency have to exist - if not, ordering below must be specified
|
||||
mandatory=true #mandatory
|
||||
# The version range of the dependency
|
||||
versionRange="[28,)" #mandatory
|
||||
versionRange="[26,)" #mandatory
|
||||
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
|
||||
ordering="NONE"
|
||||
# Side this dependency is applied on - BOTH, CLIENT or SERVER
|
||||
@@ -78,6 +78,6 @@ The following elements will only show up under certain conditions:
|
||||
[[dependencies.immersive_hud]]
|
||||
modId="minecraft"
|
||||
mandatory=true
|
||||
versionRange="[1.15,1.15.2)"
|
||||
versionRange="[1.14,1.15)"
|
||||
ordering="NONE"
|
||||
side="CLIENT"
|
||||
|
||||
@@ -19,7 +19,9 @@
|
||||
"option.immersive_hud.effectFadeIn": "Potion Fade In Time",
|
||||
"option.immersive_hud.effectFadeOut": "Potion Fade Out Time",
|
||||
"option.immersive_hud.crosshairTime": "Crosshair Display Time",
|
||||
"option.immersive_hud.hideCrosshair": "Hide Crosshair",
|
||||
"option.immersive_hud.handTime": "Hand Display Time",
|
||||
"option.immersive_hud.hideHands": "Hide Hands",
|
||||
"option.immersive_hud.minHealth": "Minimum Health Fade",
|
||||
"option.immersive_hud.minHunger": "Minimum Hunger Fade",
|
||||
"option.immersive_hud.showArmor": "Show Armor",
|
||||
@@ -42,7 +44,9 @@
|
||||
"tooltip.immersive_hud.effectFadeIn": "How many seconds it takes for potion icons to fade in",
|
||||
"tooltip.immersive_hud.effectFadeOut": "How many seconds it takes for potion icons to fade out",
|
||||
"tooltip.immersive_hud.crosshairTime": "How many seconds the crosshairs can be on screen",
|
||||
"tooltip.immersive_hud.hideCrosshair": "Whether or not the crosshairs should be hidden after a period of time",
|
||||
"tooltip.immersive_hud.handTime": "How many seconds the hands can be on screen",
|
||||
"tooltip.immersive_hud.hideHands": "Whether or not hands should be hidden after a period of time",
|
||||
"tooltip.immersive_hud.minHealth": "When the percentage of health goes below this level, the health bar won't fade away",
|
||||
"tooltip.immersive_hud.minHunger": "When the hunger level goes below this level, the hunger bar won't fade away",
|
||||
"tooltip.immersive_hud.showArmor": "Whether or not the armor bar should display on the HUD"
|
||||
|
||||
Reference in New Issue
Block a user