Compare commits

..

8 Commits

Author SHA1 Message Date
Markil3
5219932076 Changes:
+ Adds the ability to determine whether hands and crosshairs disappear or not. This can be changed in the mod configuration.
* Reduces the chance of the mod crashing the game for ordinary events (any errors will be reported to the console, though).
Bug Fixes
* Fixes crash when mounting boat or minecart (#1 thanks, @theFuzzyWarble!)
2021-04-01 13:09:55 -06:00
Markil3
bb18357bfe 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:00:18 -06:00
Markil3
5e3b714190 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 09:27:07 -06:00
Markil3
5059774b34 Fixes a ClassCastException (#1) 2021-03-25 17:15:36 -06:00
Markil3
ea97ade6cd Prepares the mod for 1.14 2021-03-02 22:08:39 -07:00
Markil3
c0da30efae Fixes the hand not moving correctly. 2021-03-02 18:04:39 -07:00
Markil3
bb9998a59b Locks this build out of 1.15.2
There is at least one change that doesn't work in 1.15.2. A new branch will be needed for this.
2021-03-02 18:04:15 -07:00
Markil3
656a548074 Prepares the mod for 1.15 2021-03-02 17:49:11 -07:00
11 changed files with 412 additions and 589 deletions

View File

@@ -100,7 +100,7 @@ dependencies {
// The userdev artifact is a special name and will get all sorts of transformations applied to it. // The userdev artifact is a special name and will get all sorts of transformations applied to it.
minecraft "net.minecraftforge:forge:${project.minecraft_version}-${project.forge_version}" minecraft "net.minecraftforge:forge:${project.minecraft_version}-${project.forge_version}"
compile(fg.deobf("me.shedaniel.cloth:cloth-config-forge:${project.cloth_version}")) // compile(fg.deobf("me.shedaniel.cloth:cloth-config-forge:${project.cloth_version}"))
// You may put jars on which you depend on in ./libs or you may define them like so.. // You may put jars on which you depend on in ./libs or you may define them like so..
// compile "some.group:artifact:version:classifier" // compile "some.group:artifact:version:classifier"
// compile "some.group:artifact:version" // compile "some.group:artifact:version"

View File

@@ -4,13 +4,12 @@ org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false org.gradle.daemon=false
# Forge Properties # Forge Properties
minecraft_version=1.16.4 minecraft_version=1.14.2
mappings=20201028-1.16.3 mappings=20190621-1.14.2
forge_version=35.1.37 forge_version=26.0.63
cloth_version=4.11.14
# Mod Properties # Mod Properties
mod_version = 1.1 mod_version = 1.1
maven_group = markil3 maven_group = markil3
archives_base_name = immersive_hud archives_base_name = immersive_hud

View File

@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists 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

View File

@@ -20,8 +20,7 @@ import static markil3.immersive_hud.Main.TICKS_PER_SECOND;
* <p> * <p>
* The methods that change this mod's configuration do not automatically write * The methods that change this mod's configuration do not automatically write
* those changes to the configuration file on disk. Instead, they only update * those changes to the configuration file on disk. Instead, they only update
* the configuration in memory. To write any changes, use the {@link #save()} * the configuration in memory.
* method.
* *
* @author Markil 3 * @author Markil 3
*/ */
@@ -132,20 +131,20 @@ public class ConfigManager
return this.fadeOut.get(); return this.fadeOut.get();
} }
public void setMaxTime(int time) // public void setMaxTime(int time)
{ // {
this.maxTime.set(time); // this.maxTime.set(time);
} // }
//
public void setFadeInTime(int time) // public void setFadeInTime(int time)
{ // {
this.fadeIn.set(time); // this.fadeIn.set(time);
} // }
//
public void setFadeOutTime(int time) // public void setFadeOutTime(int time)
{ // {
this.fadeOut.set(time); // this.fadeOut.set(time);
} // }
} }
private final TimeValues hotbarTime; private final TimeValues hotbarTime;
@@ -354,83 +353,83 @@ public class ConfigManager
return this.minHunger.get(); return this.minHunger.get();
} }
/** // /**
* Sets the time that the hands are allowed to display. // * Sets the time that the hands are allowed to display.
* // *
* @param time - The hand display time values. // * @param time - The hand display time values.
*/ // */
public void setCrosshairTime(int time) // public void setCrosshairTime(int time)
{ // {
this.crosshairTime.set(time); // this.crosshairTime.set(time);
} // }
//
/** // /**
* Sets whether the crosshairs should be hidden after a period of time. // * Sets whether the crosshairs should be hidden after a period of time.
* // *
* @param hide - Whether or not crosshairs will be hidden. // * @param hide - Whether or not crosshairs will be hidden.
*/ // */
public void hideCrosshair(boolean hide) // public void hideCrosshair(boolean hide)
{ // {
this.hideCrosshair.set(hide); // this.hideCrosshair.set(hide);
} // }
//
/** // /**
* Sets the time that the hands are allowed to display. // * Sets the time that the hands are allowed to display.
* // *
* @param time - The hand display time values. // * @param time - The hand display time values.
*/ // */
public void setHandTime(int time) // public void setHandTime(int time)
{ // {
this.handTime.set(time); // this.handTime.set(time);
} // }
//
/** // /**
* Sets whether hands should be hidden after a period of time. // * Sets whether hands should be hidden after a period of time.
* // *
* @param hide - Whether or not hands will be hidden. // * @param hide - Whether or not hands will be hidden.
*/ // */
public void hideHands(boolean hide) // public void hideHands(boolean hide)
{ // {
this.hideHands.set(hide); // this.hideHands.set(hide);
} // }
//
/** // /**
* Determines whether the armor bar should render. // * Determines whether the armor bar should render.
* // *
* @param show - Whether or not armor shows on the HUD. // * @param show - Whether or not armor shows on the HUD.
*/ // */
public void shouldShowArmor(boolean show) // public void shouldShowArmor(boolean show)
{ // {
this.showArmor.set(show); // this.showArmor.set(show);
} // }
//
/** // /**
* Sets the minimum health for fading. Anything below that and the health // * Sets the minimum health for fading. Anything below that and the health
* always displays. // * always displays.
* // *
* @param boundary - The health boundary, from 0 to 1. // * @param boundary - The health boundary, from 0 to 1.
*/ // */
public void setMinHealth(double boundary) // public void setMinHealth(double boundary)
{ // {
this.minHealth.set(MathHelper.clamp(boundary, 0, 1)); // this.minHealth.set(MathHelper.clamp(boundary, 0, 1));
} // }
//
/** // /**
* Sets the minimum hunger for fading. Anything below that and the hunger // * Sets the minimum hunger for fading. Anything below that and the hunger
* always displays. // * always displays.
* // *
* @param boundary - The hunger boundary, from 0 to 20. // * @param boundary - The hunger boundary, from 0 to 20.
*/ // */
public void setMinHunger(int boundary) // public void setMinHunger(int boundary)
{ // {
this.minHunger.set(MathHelper.clamp(boundary, 0, 20)); // this.minHunger.set(MathHelper.clamp(boundary, 0, 20));
} // }
/** /**
* Saves changes to this mod's configuration. * Saves changes to this mod's configuration.
*/ */
public void save() // public void save()
{ // {
SPEC.save(); // SPEC.save();
} // }
} }

View File

@@ -16,12 +16,14 @@
*/ */
package markil3.immersive_hud; package markil3.immersive_hud;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.RenderGameOverlayEvent; 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.EntityMountEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
@@ -61,19 +63,14 @@ public class EventBus
{ {
try try
{ {
DistExecutor.safeRunWhenOn(Dist.CLIENT, DistExecutor.runWhenOn(Dist.CLIENT, () -> () ->
(DistExecutor.SafeSupplier<DistExecutor.SafeRunnable>) () -> new DistExecutor.SafeRunnable() {
{ Item item =
@Override Optional.ofNullable(event.getItemStack())
public void run() .map(ItemStack::getItem)
{ .orElse(null);
Item item = TimerUtils.onClick(event.getHand(), item);
Optional.ofNullable(event.getItemStack()) });
.map(ItemStack::getItem)
.orElse(null);
TimerUtils.onClick(event.getHand(), item);
}
});
} }
catch (Exception e) catch (Exception e)
{ {
@@ -98,15 +95,10 @@ public class EventBus
{ {
try try
{ {
DistExecutor.safeRunWhenOn(Dist.CLIENT, DistExecutor.runWhenOn(Dist.CLIENT, () -> () ->
(DistExecutor.SafeSupplier<DistExecutor.SafeRunnable>) () -> new DistExecutor.SafeRunnable() {
{ TimerUtils.resetMountHealth();
@Override });
public void run()
{
TimerUtils.resetMountHealth();
}
});
} }
catch (Exception e) catch (Exception e)
{ {
@@ -124,12 +116,11 @@ public class EventBus
* @param event - event data * @param event - event data
*/ */
@SubscribeEvent @SubscribeEvent
public static void onRenderHand(final RenderHandEvent event) public static void onRenderHand(final RenderSpecificHandEvent event)
{ {
try try
{ {
if (TimerUtils.onRenderHand(event.getHand(), if (TimerUtils.onRenderHand(event.getHand(),
event.getMatrixStack(),
event.getPartialTicks())) event.getPartialTicks()))
{ {
event.setCanceled(true); event.setCanceled(true);
@@ -182,8 +173,7 @@ public class EventBus
TimerUtils.updatePotions(mc.player); TimerUtils.updatePotions(mc.player);
event.setCanceled(true); event.setCanceled(true);
RenderUtils.renderPotionIcons(mc, RenderUtils.renderPotionIcons(mc,
mc.ingameGUI, mc.ingameGUI, event.getPartialTicks());
event.getMatrixStack(), event.getPartialTicks());
resetAlpha(); resetAlpha();
} }
break; break;
@@ -194,7 +184,6 @@ public class EventBus
if (!TimerUtils.drawHotbar(event.getPartialTicks())) if (!TimerUtils.drawHotbar(event.getPartialTicks()))
{ {
RenderUtils.renderHotbar(mc, mc.ingameGUI, RenderUtils.renderHotbar(mc, mc.ingameGUI,
event.getMatrixStack(),
event.getPartialTicks(), TimerUtils.hotbarTime); event.getPartialTicks(), TimerUtils.hotbarTime);
} }
} }
@@ -202,23 +191,21 @@ public class EventBus
case HEALTH: case HEALTH:
if (event instanceof RenderGameOverlayEvent.Pre) if (event instanceof RenderGameOverlayEvent.Pre)
{ {
if (TimerUtils.drawHealth(event.getMatrixStack(), if (TimerUtils.drawHealth(event.getPartialTicks()))
event.getPartialTicks()))
{ {
event.setCanceled(true); event.setCanceled(true);
} }
} }
else if (event instanceof RenderGameOverlayEvent.Post) else if (event instanceof RenderGameOverlayEvent.Post)
{ {
event.getMatrixStack().pop(); GlStateManager.popMatrix();
resetAlpha(); resetAlpha();
} }
break; break;
case FOOD: case FOOD:
if (event instanceof RenderGameOverlayEvent.Pre) if (event instanceof RenderGameOverlayEvent.Pre)
{ {
if (TimerUtils.drawHunger(event.getMatrixStack(), if (TimerUtils.drawHunger(event.getPartialTicks()))
event.getPartialTicks()))
{ {
event.setCanceled(true); event.setCanceled(true);
} }
@@ -228,15 +215,14 @@ public class EventBus
*/ */
else if (event instanceof RenderGameOverlayEvent.Post) else if (event instanceof RenderGameOverlayEvent.Post)
{ {
event.getMatrixStack().pop(); GlStateManager.popMatrix();
resetAlpha(); resetAlpha();
} }
break; break;
case ARMOR: case ARMOR:
if (event instanceof RenderGameOverlayEvent.Pre) if (event instanceof RenderGameOverlayEvent.Pre)
{ {
if (TimerUtils.drawArmor(event.getMatrixStack(), if (TimerUtils.drawArmor(event.getPartialTicks()))
event.getPartialTicks()))
{ {
event.setCanceled(true); event.setCanceled(true);
} }
@@ -246,15 +232,14 @@ public class EventBus
*/ */
else if (event instanceof RenderGameOverlayEvent.Post) else if (event instanceof RenderGameOverlayEvent.Post)
{ {
event.getMatrixStack().pop(); GlStateManager.popMatrix();
resetAlpha(); resetAlpha();
} }
break; break;
case AIR: case AIR:
if (event instanceof RenderGameOverlayEvent.Pre) if (event instanceof RenderGameOverlayEvent.Pre)
{ {
if (TimerUtils.drawAir(event.getMatrixStack(), if (TimerUtils.drawAir(event.getPartialTicks()))
event.getPartialTicks()))
{ {
event.setCanceled(true); event.setCanceled(true);
} }
@@ -264,22 +249,21 @@ public class EventBus
*/ */
else if (event instanceof RenderGameOverlayEvent.Post) else if (event instanceof RenderGameOverlayEvent.Post)
{ {
event.getMatrixStack().pop(); GlStateManager.popMatrix();
resetAlpha(); resetAlpha();
} }
break; break;
case HEALTHMOUNT: case HEALTHMOUNT:
if (event instanceof RenderGameOverlayEvent.Pre) if (event instanceof RenderGameOverlayEvent.Pre)
{ {
if (TimerUtils.drawMountHealth(event.getMatrixStack(), if (TimerUtils.drawMountHealth(event.getPartialTicks()))
event.getPartialTicks()))
{ {
event.setCanceled(true); event.setCanceled(true);
} }
} }
else if (event instanceof RenderGameOverlayEvent.Post) else if (event instanceof RenderGameOverlayEvent.Post)
{ {
event.getMatrixStack().pop(); GlStateManager.popMatrix();
resetAlpha(); resetAlpha();
} }
break; break;
@@ -291,7 +275,6 @@ public class EventBus
{ {
RenderUtils.renderHorseJumpBar(mc, RenderUtils.renderHorseJumpBar(mc,
mc.ingameGUI, mc.ingameGUI,
event.getMatrixStack(),
event.getPartialTicks(), event.getPartialTicks(),
TimerUtils.jumpTime); TimerUtils.jumpTime);
} }
@@ -305,7 +288,6 @@ public class EventBus
{ {
RenderUtils.renderExperience(mc, RenderUtils.renderExperience(mc,
mc.ingameGUI, mc.ingameGUI,
event.getMatrixStack(),
event.getPartialTicks(), event.getPartialTicks(),
TimerUtils.experienceTime); TimerUtils.experienceTime);
} }

View File

@@ -17,11 +17,8 @@
*/ */
package markil3.immersive_hud; package markil3.immersive_hud;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraftforge.fml.ExtensionPoint; import net.minecraftforge.fml.ExtensionPoint;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.VersionChecker;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@@ -56,7 +53,7 @@ public class Main
{ {
if (Class.forName("me.shedaniel.clothconfig2.api.ConfigBuilder") != null) if (Class.forName("me.shedaniel.clothconfig2.api.ConfigBuilder") != null)
{ {
ModMenu.setupScreen(); // ModMenu.setupScreen();
} }
} }
catch (ClassNotFoundException e) catch (ClassNotFoundException e)

View File

@@ -1,194 +0,0 @@
package markil3.immersive_hud;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraftforge.fml.ExtensionPoint;
import net.minecraftforge.fml.ModLoadingContext;
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
{
static void startTimeField(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 TranslationTextComponent(
"option.immersive_hud." + value.getName() +
"MaxTime"),
(float) value.getMaxTime() / TICKS_PER_SECOND)
.setDefaultValue(SHOW_TIME)
.setMin(0)
.setMax(10 * 60 * TICKS_PER_SECOND) // 10 Minutes
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud." + value.getName() +
"MaxTime"))
.setSaveConsumer(val -> value.setMaxTime((int) (val * TICKS_PER_SECOND)))
.build();
DoubleListEntry fadeIn =
entryBuilder.startDoubleField(new TranslationTextComponent(
"option.immersive_hud." + value.getName() +
"FadeIn"),
(float) value.getFadeInTime() / TICKS_PER_SECOND)
.setDefaultValue(FADE_IN).setMin(0).setMax(10 * 60 * TICKS_PER_SECOND)
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud." + value.getName() +
"FadeIn"))
.setSaveConsumer(val -> value.setFadeInTime((int) (val * TICKS_PER_SECOND)))
.build();
DoubleListEntry fadeOut =
entryBuilder.startDoubleField(new TranslationTextComponent(
"option.immersive_hud." + value.getName() +
"FadeOut"),
(float) value.getFadeOutTime() / TICKS_PER_SECOND)
.setDefaultValue(FADE_OUT)
.setMin(0)
.setMax(10 * 60 * TICKS_PER_SECOND)
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud." + value.getName() +
"FadeOut"))
.setSaveConsumer(val -> value.setFadeOutTime((int) (val * TICKS_PER_SECOND)))
.build();
cat.addEntry(maxTime);
cat.addEntry(fadeIn);
cat.addEntry(fadeOut);
}
static void setupScreen()
{
ModLoadingContext.get()
.registerExtensionPoint(ExtensionPoint.CONFIGGUIFACTORY,
() -> (mc, screen) -> {
ConfigCategory general;
ConfigEntryBuilder entryBuilder;
final ConfigBuilder builder = ConfigBuilder.create()
.setParentScreen(screen)
.setTitle(new TranslationTextComponent(
"immersive_hud.configGui.title"))
.setSavingRunnable(() -> {
ConfigManager.getInstance().save();
});
general =
builder.getOrCreateCategory(new TranslationTextComponent(
"category.immersive_hud.general"));
entryBuilder = builder.entryBuilder();
startTimeField(entryBuilder,
general,
ConfigManager.getInstance()
.getHotbarTime());
startTimeField(entryBuilder,
general,
ConfigManager.getInstance()
.getExperenceTime());
startTimeField(entryBuilder,
general,
ConfigManager.getInstance().getJumpTime());
startTimeField(entryBuilder,
general,
ConfigManager.getInstance()
.getHealthTime());
startTimeField(entryBuilder,
general,
ConfigManager.getInstance()
.getHungerTime());
startTimeField(entryBuilder,
general,
ConfigManager.getInstance()
.getPotionTime());
general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent(
"option.immersive_hud" +
".crosshairTime"),
(float) ConfigManager.getInstance()
.getCrosshairTime() / TICKS_PER_SECOND)
.setDefaultValue(6)
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud" +
".crosshairTime"))
.setSaveConsumer(val -> ConfigManager.getInstance()
.setCrosshairTime((int) (val * TICKS_PER_SECOND)))
.build());
general.addEntry(entryBuilder.startBooleanToggle(new TranslationTextComponent(
"option.immersive_hud.hideCrosshair"), ConfigManager.getInstance().hideCrosshair())
.setDefaultValue(true)
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud.hideCrosshair"))
.setSaveConsumer(val -> ConfigManager.getInstance()
.hideCrosshair(val))
.build());
general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent(
"option.immersive_hud.handTime"),
(float) ConfigManager.getInstance()
.getHandTime() / TICKS_PER_SECOND)
.setDefaultValue(30)
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud.handTime"))
.setSaveConsumer(val -> ConfigManager.getInstance()
.setHandTime((int) (val * TICKS_PER_SECOND)))
.build());
general.addEntry(entryBuilder.startBooleanToggle(new TranslationTextComponent(
"option.immersive_hud.hideHands"), ConfigManager.getInstance().hideHands())
.setDefaultValue(true)
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud.hideHands"))
.setSaveConsumer(val -> ConfigManager.getInstance()
.hideHands(val))
.build());
general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent(
"option.immersive_hud.minHealth"),
ConfigManager.getInstance()
.getMinHealth())
.setDefaultValue(0.5)
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud.minHealth"))
.setSaveConsumer(val -> ConfigManager.getInstance()
.setMinHealth(
val))
.build());
general.addEntry(entryBuilder.startIntField(new TranslationTextComponent(
"option.immersive_hud.minHunger"),
ConfigManager.getInstance()
.getMinHunger())
.setDefaultValue(17)
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud.minHunger"))
.setSaveConsumer(val -> ConfigManager.getInstance()
.setMinHunger(
val))
.build());
general.addEntry(entryBuilder.startBooleanToggle(new TranslationTextComponent(
"option.immersive_hud.showArmor"),
ConfigManager.getInstance()
.shouldShowArmor())
.setDefaultValue(true)
.setTooltip(new TranslationTextComponent(
"tooltip.immersive_hud.showArmor"))
.setSaveConsumer(val -> ConfigManager.getInstance()
.shouldShowArmor(
val))
.build());
return builder.build();
});
}
}

View File

@@ -16,22 +16,19 @@ package markil3.immersive_hud;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Ordering; 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.Minecraft;
import net.minecraft.client.gui.AbstractGui; import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.IngameGui; import net.minecraft.client.gui.IngameGui;
import net.minecraft.client.gui.screen.inventory.ContainerScreen; 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.RenderHelper;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.client.renderer.model.ItemCameraTransforms;
import net.minecraft.client.renderer.texture.AtlasTexture; 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.PotionSpriteUploader;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.settings.AttackIndicatorStatus; import net.minecraft.client.settings.AttackIndicatorStatus;
import net.minecraft.crash.CrashReport; import net.minecraft.crash.CrashReport;
import net.minecraft.crash.CrashReportCategory; import net.minecraft.crash.CrashReportCategory;
@@ -43,9 +40,10 @@ import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance; import net.minecraft.potion.EffectInstance;
import net.minecraft.util.HandSide; import net.minecraft.util.HandSide;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@@ -60,18 +58,79 @@ import java.util.List;
*/ */
public class RenderUtils 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, public static void renderPotionIcons(Minecraft mc,
IngameGui gui, IngameGui gui,
MatrixStack matrixStack, float ticks) float ticks)
{ {
int scaledWidth = mc.getMainWindow().getScaledWidth();
int scaledHeight = mc.getMainWindow().getScaledHeight(); int scaledWidth = mc.mainWindow.getScaledWidth();
int scaledHeight = mc.mainWindow.getScaledHeight();
Collection<EffectInstance> collection = Collection<EffectInstance> collection =
mc.player.getActivePotionEffects(); mc.player.getActivePotionEffects();
if (!collection.isEmpty()) if (!collection.isEmpty())
{ {
RenderSystem.enableBlend(); GlStateManager.enableBlend();
int i = 0; int i = 0;
int j = 0; int j = 0;
PotionSpriteUploader potionspriteuploader = PotionSpriteUploader potionspriteuploader =
@@ -86,8 +145,10 @@ public class RenderUtils
.sortedCopy(collection)) .sortedCopy(collection))
{ {
Effect effect = effectinstance.getPotion(); Effect effect = effectinstance.getPotion();
float effectAlpha = TimerUtils.getPotionAlpha(mc.player, effectinstance, ticks); float effectAlpha = TimerUtils.getPotionAlpha(mc.player,
if (!effectinstance.shouldRenderHUD() || effectAlpha < 0.01F) effectinstance,
ticks);
if (!effectinstance.isShowIcon() || effectAlpha < 0.01F)
{ {
continue; continue;
} }
@@ -115,43 +176,35 @@ public class RenderUtils
l += 26; l += 26;
} }
RenderSystem.color4f(1.0F, 1.0F, 1.0F, effectAlpha); GlStateManager.color4f(1.0F, 1.0F, 1.0F, effectAlpha);
if (effectinstance.isAmbient()) if (effectinstance.isAmbient())
{ {
gui.blit(matrixStack, k, l, 165, 166, 24, 24); gui.blit(k, l, 165, 166, 24, 24);
} }
else else
{ {
gui.blit(matrixStack, k, l, 141, 166, 24, 24); gui.blit(k, l, 141, 166, 24, 24);
} }
float f_f = effectAlpha;
int k_f = k;
int l_f = l;
TextureAtlasSprite textureatlassprite = TextureAtlasSprite textureatlassprite =
potionspriteuploader.getSprite(effect); potionspriteuploader.func_215288_a(effect);
int j1 = k;
int k1 = l;
float f1 = effectAlpha;
list.add(() -> { list.add(() -> {
mc.getTextureManager() GlStateManager.color4f(1.0F, 1.0F, 1.0F, f_f);
.bindTexture(textureatlassprite.getAtlasTexture() gui.blit(k_f + 3, l_f + 3, getBlitOffset(gui), 18, 18, textureatlassprite);
.getTextureLocation());
RenderSystem.color4f(1.0F, 1.0F, 1.0F, f1);
gui.blit(matrixStack,
j1 + 3,
k1 + 3,
gui.getBlitOffset(),
18,
18,
textureatlassprite);
}); });
effectinstance.renderHUDEffect(gui, effect.renderHUDEffect(effectinstance, gui,
matrixStack,
k, k,
l, l,
gui.getBlitOffset(), getBlitOffset(gui),
effectAlpha); effectAlpha);
} }
} }
mc.getTextureManager().bindTexture(AtlasTexture.LOCATION_EFFECTS_TEXTURE);
list.forEach(Runnable::run); list.forEach(Runnable::run);
} }
} }
@@ -161,45 +214,47 @@ public class RenderUtils
* *
* @param mc - A Minecraft instance. * @param mc - A Minecraft instance.
* @param gui - The GUI. * @param gui - The GUI.
* @param matrixStack - The rendering transformation matrix stack.
* @param ticks * @param ticks
* @param renderTime - How much time before this element becomes fully * @param renderTime - How much time before this element becomes fully
* transparent. * transparent.
* *
* @see IngameGui#renderHorseJumpBar(MatrixStack, int) * @see IngameGui#renderHorseJumpBar(int)
*/ */
public static void renderHorseJumpBar(Minecraft mc, public static void renderHorseJumpBar(Minecraft mc,
IngameGui gui, IngameGui gui,
MatrixStack matrixStack,
float ticks, double renderTime) float ticks, double renderTime)
{ {
ConfigManager.TimeValues jump = ConfigManager.getInstance().getJumpTime(); ConfigManager.TimeValues jump =
ConfigManager.getInstance().getJumpTime();
if (renderTime <= 0) if (renderTime <= 0)
{ {
return; return;
} }
float alpha = Main.getAlpha(renderTime, jump.getMaxTime(), jump.getFadeInTime(), jump.getFadeOutTime()); float alpha = Main.getAlpha(renderTime,
int scaledWidth = mc.getMainWindow().getScaledWidth(); jump.getMaxTime(),
int scaledHeight = mc.getMainWindow().getScaledHeight(); jump.getFadeInTime(),
jump.getFadeOutTime());
int scaledWidth = mc.mainWindow.getScaledWidth();
int scaledHeight = mc.mainWindow.getScaledHeight();
int xPosition = scaledWidth / 2 - 91; int xPosition = scaledWidth / 2 - 91;
mc.getProfiler().startSection("jumpBar"); mc.getProfiler().startSection("jumpBar");
RenderSystem.enableBlend(); GlStateManager.enableBlend();
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha); GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
mc.getTextureManager().bindTexture(AbstractGui.GUI_ICONS_LOCATION); mc.getTextureManager().bindTexture(AbstractGui.GUI_ICONS_LOCATION);
float f = mc.player.getHorseJumpPower(); float f = mc.player.getHorseJumpPower();
int i = 182; int i = 182;
int j = (int) (f * 183.0F); int j = (int) (f * 183.0F);
int k = scaledHeight - TimerUtils.getJumpTranslation(); int k = scaledHeight - TimerUtils.getJumpTranslation();
gui.blit(matrixStack, xPosition, k, 0, 84, 182, 5); gui.blit(xPosition, k, 0, 84, 182, 5);
if (j > 0) if (j > 0)
{ {
gui.blit(matrixStack, xPosition, k, 0, 89, j, 5); 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(); mc.getProfiler().endSection();
} }
@@ -208,36 +263,39 @@ public class RenderUtils
* *
* @param mc - A Minecraft instance. * @param mc - A Minecraft instance.
* @param gui - The GUI. * @param gui - The GUI.
* @param matrixStack - The rendering transformation matrix stack.
* @param ticks * @param ticks
* @param renderTime - How much time before this element becomes fully * @param renderTime - How much time before this element becomes fully
* transparent. * transparent.
* *
* @see IngameGui#func_238454_b_(MatrixStack, int) * @see IngameGui#func_238454_b_(int)
*/ */
public static void renderExperience(Minecraft mc, public static void renderExperience(Minecraft mc,
IngameGui gui, IngameGui gui,
MatrixStack matrixStack,
float ticks, double renderTime) float ticks, double renderTime)
{ {
ConfigManager.TimeValues experience = ConfigManager.getInstance().getHealthTime(); ConfigManager.TimeValues experience =
ConfigManager.TimeValues hotbar = ConfigManager.getInstance().getHotbarTime(); ConfigManager.getInstance().getHealthTime();
ConfigManager.TimeValues hotbar =
ConfigManager.getInstance().getHotbarTime();
if (renderTime <= 0) if (renderTime <= 0)
{ {
return; return;
} }
float alpha = Main.getAlpha(renderTime, experience.getMaxTime(), experience.getFadeInTime(), experience.getFadeOutTime()); float alpha = Main.getAlpha(renderTime,
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha); experience.getMaxTime(),
experience.getFadeInTime(),
experience.getFadeOutTime());
GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
if (mc.playerController.gameIsSurvivalOrAdventure()) if (mc.playerController.gameIsSurvivalOrAdventure())
{ {
int scaledWidth = mc.getMainWindow().getScaledWidth(); int scaledWidth = mc.mainWindow.getScaledWidth();
int scaledHeight = mc.getMainWindow().getScaledHeight(); int scaledHeight = mc.mainWindow.getScaledHeight();
int x = scaledWidth / 2 - 91; int x = scaledWidth / 2 - 91;
mc.getProfiler().startSection("expBar"); mc.getProfiler().startSection("expBar");
RenderSystem.enableBlend(); GlStateManager.enableBlend();
mc.getTextureManager().bindTexture(AbstractGui.GUI_ICONS_LOCATION); mc.getTextureManager().bindTexture(AbstractGui.GUI_ICONS_LOCATION);
int i = mc.player.xpBarCap(); int i = mc.player.xpBarCap();
if (i > 0) if (i > 0)
@@ -245,58 +303,57 @@ public class RenderUtils
int j = 182; int j = 182;
int k = (int) (mc.player.experience * 183.0F); int k = (int) (mc.player.experience * 183.0F);
int l = scaledHeight - TimerUtils.getExperienceTranslation(); int l = scaledHeight - TimerUtils.getExperienceTranslation();
gui.blit(matrixStack, x, l, 0, 64, 182, 5); gui.blit(x, l, 0, 64, 182, 5);
if (k > 0) if (k > 0)
{ {
gui.blit(matrixStack, x, l, 0, 69, k, 5); gui.blit(x, l, 0, 69, k, 5);
} }
} }
RenderSystem.disableBlend(); GlStateManager.disableBlend();
mc.getProfiler().endSection(); mc.getProfiler().endSection();
if (mc.player.experienceLevel > 0) if (mc.player.experienceLevel > 0)
{ {
mc.getProfiler().startSection("expLevel"); mc.getProfiler().startSection("expLevel");
RenderSystem.enableBlend(); GlStateManager.enableBlend();
String s = "" + mc.player.experienceLevel; String s = "" + mc.player.experienceLevel;
int i1 = (scaledWidth - gui.getFontRenderer() int i1 = (scaledWidth - gui.getFontRenderer()
.getStringWidth(s)) / 2; .getStringWidth(s)) / 2;
int j1 = scaledHeight - (int) ((22F * Main.getAlpha(TimerUtils.hotbarTime, hotbar.getMaxTime(), hotbar.getFadeInTime(), hotbar.getFadeOutTime()) + 9F) * alpha) - (int) (4F * alpha); int j1 =
scaledHeight - (int) ((22F * Main.getAlpha(TimerUtils.hotbarTime,
hotbar.getMaxTime(),
hotbar.getFadeInTime(),
hotbar.getFadeOutTime()) + 9F) * alpha) - (int) (4F * alpha);
gui.getFontRenderer() gui.getFontRenderer()
.drawString(matrixStack, .drawString(s,
s,
(float) (i1 + 1), (float) (i1 + 1),
(float) j1, (float) j1,
0); 0);
gui.getFontRenderer() gui.getFontRenderer()
.drawString(matrixStack, .drawString(s,
s,
(float) (i1 - 1), (float) (i1 - 1),
(float) j1, (float) j1,
0); 0);
gui.getFontRenderer() gui.getFontRenderer()
.drawString(matrixStack, .drawString(s,
s,
(float) i1, (float) i1,
(float) (j1 + 1), (float) (j1 + 1),
0); 0);
gui.getFontRenderer() gui.getFontRenderer()
.drawString(matrixStack, .drawString(s,
s,
(float) i1, (float) i1,
(float) (j1 - 1), (float) (j1 - 1),
0); 0);
gui.getFontRenderer() gui.getFontRenderer()
.drawString(matrixStack, .drawString(s,
s,
(float) i1, (float) i1,
(float) j1, (float) j1,
8453920); 8453920);
RenderSystem.disableBlend(); GlStateManager.disableBlend();
mc.getProfiler().endSection(); mc.getProfiler().endSection();
} }
} }
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
} }
@@ -305,20 +362,19 @@ public class RenderUtils
* *
* @param mc - A Minecraft instance. * @param mc - A Minecraft instance.
* @param gui - The GUI. * @param gui - The GUI.
* @param matrixStack - The rendering transformation matrix stack.
* @param partialTicks * @param partialTicks
* @param renderTime - How much time before this element becomes fully * @param renderTime - How much time before this element becomes fully
* transparent. * transparent.
* *
* @see IngameGui#renderHotbar(float, MatrixStack) * @see IngameGui#renderHotbar(float)
*/ */
public static void renderHotbar(Minecraft mc, public static void renderHotbar(Minecraft mc,
IngameGui gui, IngameGui gui,
MatrixStack matrixStack,
float partialTicks, float partialTicks,
double renderTime) double renderTime)
{ {
ConfigManager.TimeValues hotbar = ConfigManager.getInstance().getHotbarTime(); ConfigManager.TimeValues hotbar =
ConfigManager.getInstance().getHotbarTime();
final ResourceLocation WIDGETS_TEX_PATH = final ResourceLocation WIDGETS_TEX_PATH =
new ResourceLocation("textures/gui/widgets.png"); new ResourceLocation("textures/gui/widgets.png");
PlayerEntity playerentity = mc.player; PlayerEntity playerentity = mc.player;
@@ -328,24 +384,27 @@ public class RenderUtils
return; return;
} }
float alpha = Main.getAlpha(renderTime, hotbar.getMaxTime(), hotbar.getFadeInTime(), hotbar.getFadeOutTime()); float alpha = Main.getAlpha(renderTime,
hotbar.getMaxTime(),
hotbar.getFadeInTime(),
hotbar.getFadeOutTime());
int scaledWidth = mc.getMainWindow().getScaledWidth(); int scaledWidth = mc.mainWindow.getScaledWidth();
int scaledHeight = mc.getMainWindow().getScaledHeight(); int scaledHeight = mc.mainWindow.getScaledHeight();
if (playerentity != null) 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); mc.getTextureManager().bindTexture(WIDGETS_TEX_PATH);
ItemStack itemstack = playerentity.getHeldItemOffhand(); ItemStack itemstack = playerentity.getHeldItemOffhand();
HandSide handside = playerentity.getPrimaryHand().opposite(); HandSide handside = playerentity.getPrimaryHand().opposite();
int i = scaledWidth / 2; int i = scaledWidth / 2;
int j = gui.getBlitOffset(); int j = getBlitOffset(gui);
int k = 182; int k = 182;
int l = 91; int l = 91;
gui.setBlitOffset(-90); setBlitOffset(gui, -90);
gui.blit(matrixStack, i - 91, scaledHeight - TimerUtils.getHotbarTranslation(), 0, 0, 182, 22); gui.blit(i - 91, scaledHeight - TimerUtils.getHotbarTranslation(), 0, 0, 182, 22);
gui.blit(matrixStack, gui.blit(i - 91 - 1 + playerentity.inventory.currentItem * 20,
i - 91 - 1 + playerentity.inventory.currentItem * 20,
scaledHeight - (int) (22F * alpha) - 1, scaledHeight - (int) (22F * alpha) - 1,
0, 0,
22, 22,
@@ -355,9 +414,8 @@ public class RenderUtils
{ {
if (handside == HandSide.LEFT) if (handside == HandSide.LEFT)
{ {
gui.blit(matrixStack, gui.blit(i - 91 - 29,
i - 91 - 29, scaledHeight - (int) (23 * alpha),
scaledHeight - (int) (23F * alpha),
24, 24,
22, 22,
29, 29,
@@ -365,26 +423,26 @@ public class RenderUtils
} }
else else
{ {
gui.blit(matrixStack, gui.blit(i + 91, scaledHeight - (int) (23 * alpha), 53, 22, 29, 24);
i + 91,
scaledHeight - (int) (23F * alpha),
53,
22,
29,
24);
} }
} }
gui.setBlitOffset(j); setBlitOffset(gui, j);
RenderSystem.enableRescaleNormal(); GlStateManager.enableRescaleNormal();
RenderSystem.enableBlend(); GlStateManager.enableBlend();
RenderSystem.defaultBlendFunc(); 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) for (int i1 = 0; i1 < 9; ++i1)
{ {
int j1 = i - 90 + i1 * 20 + 2; int j1 = i - 90 + i1 * 20 + 2;
int k1 = scaledHeight - (int) (16F * alpha) - 3; int k1 = scaledHeight - (int) (16 * alpha) - 3;
renderHotbarItem(mc, alpha, j1, renderHotbarItem(mc,
alpha,
j1,
k1, k1,
partialTicks, partialTicks,
playerentity, playerentity,
@@ -393,10 +451,12 @@ public class RenderUtils
if (!itemstack.isEmpty()) if (!itemstack.isEmpty())
{ {
int i2 = scaledHeight - (int) (16F * alpha) - 3; int i2 = scaledHeight - (int) (16 * alpha) - 3;
if (handside == HandSide.LEFT) if (handside == HandSide.LEFT)
{ {
renderHotbarItem(mc, alpha, i - 91 - 26, renderHotbarItem(mc,
alpha,
i - 91 - 26,
i2, i2,
partialTicks, partialTicks,
playerentity, playerentity,
@@ -404,7 +464,9 @@ public class RenderUtils
} }
else else
{ {
renderHotbarItem(mc, alpha, i + 91 + 10, renderHotbarItem(mc,
alpha,
i + 91 + 10,
i2, i2,
partialTicks, partialTicks,
playerentity, playerentity,
@@ -427,20 +489,15 @@ public class RenderUtils
mc.getTextureManager() mc.getTextureManager()
.bindTexture(AbstractGui.GUI_ICONS_LOCATION); .bindTexture(AbstractGui.GUI_ICONS_LOCATION);
int l1 = (int) (f * 19.0F); 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(matrixStack, k2, j2, 0, 94, 18, 18); gui.blit(k2, j2, 0, 94, 18, 18);
gui.blit(matrixStack, gui.blit(k2, j2 + 18 - l1, 18, 112 - l1, 18, l1);
k2,
j2 + 18 - l1,
18,
112 - l1,
18,
l1);
} }
} }
RenderSystem.disableRescaleNormal(); RenderHelper.disableStandardItemLighting();
RenderSystem.disableBlend(); GlStateManager.disableRescaleNormal();
GlStateManager.disableBlend();
} }
} }
@@ -465,109 +522,99 @@ public class RenderUtils
{ {
if (!stack.isEmpty()) if (!stack.isEmpty())
{ {
GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
float f = (float) stack.getAnimationsToGo() - partialTicks; float f = (float) stack.getAnimationsToGo() - partialTicks;
RenderSystem.pushMatrix();
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha);
if (f > 0.0F) if (f > 0.0F)
{ {
RenderSystem.pushMatrix(); GlStateManager.pushMatrix();
float f1 = 1.0F + f / 5.0F; float f1 = 1.0F + f / 5.0F;
RenderSystem.translatef((float) (x + 8), GlStateManager.translatef((float) (x + 8),
(float) (y + 12), (float) (y + 12),
0.0F); 0.0F);
RenderSystem.scalef(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F); GlStateManager.scalef(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F);
RenderSystem.translatef((float) (-(x + 8)), GlStateManager.translatef((float) (-(x + 8)),
(float) (-(y + 12)), (float) (-(y + 12)),
0.0F); 0.0F);
} }
renderItemAndEffectIntoGUI(mc, alpha, player, stack, x, y); renderItemAndEffectIntoGUI(mc, player, stack, x, y, alpha);
if (f > 0.0F) if (f > 0.0F)
{ {
RenderSystem.popMatrix(); GlStateManager.popMatrix();
} }
RenderSystem.popMatrix();
mc.getItemRenderer() mc.getItemRenderer()
.renderItemOverlays(mc.fontRenderer, stack, x, y); .renderItemOverlays(mc.fontRenderer, stack, x, y);
} }
} }
/** private static void renderItemAndEffectIntoGUI(Minecraft mc,
* Renders a single item on the HUD. LivingEntity entityIn,
* ItemStack itemIn,
* @param mc - A Minecraft instance. int x,
* @param alpha - How transparent the item should be, on a scale from 0 to int y,
* 1. float alpha)
* @param ent - The player that the item is from.
* @param stack - The item to render.
* @param x - The x position of the item on the screen.
* @param y - The y position of the item on the screen
*
* @see net.minecraft.client.renderer.ItemRenderer#renderItemIntoGUI(LivingEntity,
* ItemStack, int, int)
*/
static void renderItemAndEffectIntoGUI(Minecraft mc,
float alpha,
PlayerEntity ent,
ItemStack stack,
int x,
int y)
{ {
TextureManager textureManager = mc.textureManager; if (!itemIn.isEmpty())
IBakedModel bakedmodel = mc.getItemRenderer()
.getItemModelWithOverrides(stack,
(World) null,
(LivingEntity) null);
if (!stack.isEmpty())
{ {
float zLevel = 50.0F;
try try
{ {
RenderSystem.pushMatrix(); IBakedModel bakedmodel = mc.getItemRenderer()
textureManager.bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE); .getItemModelWithOverrides(itemIn,
textureManager.getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE) (World) null,
.setBlurMipmapDirect(false, false); entityIn);
RenderSystem.enableRescaleNormal(); GlStateManager.pushMatrix();
// RenderSystem.enableAlphaTest(); mc.getTextureManager()
// RenderSystem.defaultAlphaFunc(); .bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
// RenderSystem.enableBlend(); mc.getTextureManager()
// RenderSystem.blendFunc(GlStateManager.SourceFactor .getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE)
// .SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); .setBlurMipmap(false, false);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha); GlStateManager.enableRescaleNormal();
RenderSystem.translatef((float) x, (float) y, 100.0F + 50F); GlStateManager.enableAlphaTest();
RenderSystem.translatef(8.0F, 8.0F, 0.0F); GlStateManager.alphaFunc(516, 0.1F);
RenderSystem.scalef(1.0F, -1.0F, 1.0F); GlStateManager.enableBlend();
RenderSystem.scalef(16.0F, 16.0F, 16.0F); GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA,
MatrixStack matrixstack = new MatrixStack(); GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
IRenderTypeBuffer.Impl irendertypebuffer$impl = GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
Minecraft.getInstance() Method transformMethod = null;
.getRenderTypeBuffers() try
.getBufferSource();
boolean flag = !bakedmodel.isSideLit();
if (flag)
{ {
RenderHelper.setupGuiFlatDiffuseLighting(); transformMethod = ItemRenderer.class.getDeclaredMethod("setupGuiTransform", int.class, int.class, boolean.class);
} }
catch (NoSuchMethodException e)
mc.getItemRenderer() {
.renderItem(stack, try
{
transformMethod = ItemRenderer.class.getDeclaredMethod("func_180452_a", int.class, int.class, boolean.class);
}
catch (NoSuchMethodException e1)
{
e.printStackTrace();
}
}
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, ItemCameraTransforms.TransformType.GUI,
false, false);
matrixstack, mc.getItemRenderer().renderItem(itemIn, bakedmodel);
irendertypebuffer$impl, GlStateManager.disableAlphaTest();
15728880, GlStateManager.disableRescaleNormal();
OverlayTexture.NO_OVERLAY, GlStateManager.disableLighting();
bakedmodel); GlStateManager.popMatrix();
irendertypebuffer$impl.finish(); mc.textureManager.bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
RenderSystem.enableDepthTest(); mc.textureManager.getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE)
if (flag) .restoreLastBlurMipmap();
{
RenderHelper.setupGui3DDiffuseLighting();
}
// RenderSystem.disableAlphaTest();
RenderSystem.disableRescaleNormal();
RenderSystem.popMatrix();
} }
catch (Throwable throwable) catch (Throwable throwable)
{ {
@@ -576,19 +623,19 @@ public class RenderUtils
CrashReportCategory crashreportcategory = CrashReportCategory crashreportcategory =
crashreport.makeCategory("Item being rendered"); crashreport.makeCategory("Item being rendered");
crashreportcategory.addDetail("Item Type", () -> { crashreportcategory.addDetail("Item Type", () -> {
return String.valueOf((Object) stack.getItem()); return String.valueOf((Object) itemIn.getItem());
}); });
crashreportcategory.addDetail("Registry Name", crashreportcategory.addDetail("Registry Name",
() -> String.valueOf(stack.getItem() () -> String.valueOf(itemIn.getItem()
.getRegistryName())); .getRegistryName()));
crashreportcategory.addDetail("Item Damage", () -> { crashreportcategory.addDetail("Item Damage", () -> {
return String.valueOf(stack.getDamage()); return String.valueOf(itemIn.getDamage());
}); });
crashreportcategory.addDetail("Item NBT", () -> { crashreportcategory.addDetail("Item NBT", () -> {
return String.valueOf((Object) stack.getTag()); return String.valueOf((Object) itemIn.getTag());
}); });
crashreportcategory.addDetail("Item Foil", () -> { crashreportcategory.addDetail("Item Foil", () -> {
return String.valueOf(stack.hasEffect()); return String.valueOf(itemIn.hasEffect());
}); });
throw new ReportedException(crashreport); throw new ReportedException(crashreport);
} }

View File

@@ -1,7 +1,6 @@
package markil3.immersive_hud; package markil3.immersive_hud;
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.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.entity.player.ClientPlayerEntity;
@@ -15,10 +14,11 @@ 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.ShieldItem; import net.minecraft.item.ShieldItem;
import net.minecraft.item.ShootableItem; import net.minecraft.item.ShootableItem;
import net.minecraft.item.SnowballItem; import net.minecraft.item.SnowballItem;
import net.minecraft.item.ThrowablePotionItem; import net.minecraft.item.SplashPotionItem;
import net.minecraft.item.TridentItem; import net.minecraft.item.TridentItem;
import net.minecraft.potion.Effect; import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance; import net.minecraft.potion.EffectInstance;
@@ -169,7 +169,7 @@ public class TimerUtils
*/ */
public static void setAlpha(float alpha) public static void setAlpha(float alpha)
{ {
RenderSystem.color4f(1.0F, 1.0F, 1.0F, alpha); GlStateManager.color4f(1.0F, 1.0F, 1.0F, alpha);
} }
/** /**
@@ -283,7 +283,6 @@ 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.
* @param ticks * @param ticks
* *
* @return If true, then don't render this hand at all. * @return If true, then don't render this hand at all.
@@ -291,7 +290,6 @@ public class TimerUtils
* @since 0.2-1.16.4-forge * @since 0.2-1.16.4-forge
*/ */
public static boolean onRenderHand(Hand hand, public static boolean onRenderHand(Hand hand,
MatrixStack matrixStack,
float ticks) float ticks)
{ {
float HAND_UP_TIME = 20F; float HAND_UP_TIME = 20F;
@@ -308,10 +306,9 @@ public class TimerUtils
/* /*
* Undo the transformation of the previous hand * Undo the transformation of the previous hand
*/ */
matrixStack GlStateManager.translatef(0,
.translate(0, (float) (1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME),
1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME, 0);
0);
} }
if (offHandTime == 0 && !offHandLock) if (offHandTime == 0 && !offHandLock)
{ {
@@ -325,10 +322,9 @@ public class TimerUtils
} }
if (offHandTime < HAND_UP_TIME) if (offHandTime < HAND_UP_TIME)
{ {
matrixStack GlStateManager.translatef(0,
.translate(0, (float) (-1.0F * (HAND_UP_TIME - offHandTime) / HAND_UP_TIME),
-1.0F * (HAND_UP_TIME - offHandTime) / HAND_UP_TIME, 0);
0);
} }
} }
break; break;
@@ -345,10 +341,9 @@ public class TimerUtils
} }
if (mainHandTime < HAND_UP_TIME) if (mainHandTime < HAND_UP_TIME)
{ {
matrixStack GlStateManager.translatef(0,
.translate(0, (float) (-1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME),
-1.0F * (HAND_UP_TIME - mainHandTime) / HAND_UP_TIME, 0);
0);
} }
} }
break; break;
@@ -388,7 +383,9 @@ public class TimerUtils
boolean changed = false; boolean changed = false;
boolean canceled = false; boolean canceled = false;
if (ConfigManager.getInstance().hideCrosshair()) boolean hideCrosshair =
ConfigManager.getInstance().hideCrosshair();
if (hideCrosshair)
{ {
if (mc.objectMouseOver != null && mc.objectMouseOver.getType() != RayTraceResult.Type.MISS) if (mc.objectMouseOver != null && mc.objectMouseOver.getType() != RayTraceResult.Type.MISS)
{ {
@@ -611,7 +608,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 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) switch (i)
{ {
@@ -725,7 +722,7 @@ public class TimerUtils
* *
* @since 0.2-1.16.4-forge * @since 0.2-1.16.4-forge
*/ */
public static boolean drawHealth(MatrixStack stack, float ticks) public static boolean drawHealth(float ticks)
{ {
/* /*
* When the health percentage falls to this level or below, the * When the health percentage falls to this level or below, the
@@ -771,8 +768,8 @@ public class TimerUtils
{ {
if (healthTime > 0) if (healthTime > 0)
{ {
stack.push(); GlStateManager.pushMatrix();
stack.translate(0F, GlStateManager.translatef(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
setAlpha(Main.getAlpha(healthTime, setAlpha(Main.getAlpha(healthTime,
@@ -783,8 +780,8 @@ public class TimerUtils
} }
return true; return true;
} }
stack.push(); GlStateManager.pushMatrix();
stack.translate(0F, GlStateManager.translatef(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
return false; return false;
@@ -798,7 +795,7 @@ public class TimerUtils
* *
* @since 0.2-1.16.4-forge * @since 0.2-1.16.4-forge
*/ */
public static boolean drawHunger(MatrixStack stack, float ticks) public static boolean drawHunger(float ticks)
{ {
/* /*
* When hunger falls to this level or below, the hunger bar won't * When hunger falls to this level or below, the hunger bar won't
@@ -845,16 +842,16 @@ public class TimerUtils
hungerTimes.getMaxTime(), hungerTimes.getMaxTime(),
hungerTimes.getFadeInTime(), hungerTimes.getFadeInTime(),
hungerTimes.getFadeOutTime())); hungerTimes.getFadeOutTime()));
stack.push(); GlStateManager.pushMatrix();
stack.translate(0F, GlStateManager.translatef(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
return false; return false;
} }
return true; return true;
} }
stack.push(); GlStateManager.pushMatrix();
stack.translate(0F, GlStateManager.translatef(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
return false; return false;
@@ -864,14 +861,13 @@ public class TimerUtils
* Determines whether or not to draw the armor bar, adjusting the alpha as * Determines whether or not to draw the armor bar, adjusting the alpha as
* needed. * needed.
* *
* @param stack
* @param ticks * @param ticks
* *
* @return If true, then cancel drawing the armor bar. * @return If true, then cancel drawing the armor bar.
* *
* @since 0.2-1.16.4-forge * @since 0.2-1.16.4-forge
*/ */
public static boolean drawArmor(MatrixStack stack, float ticks) public static boolean drawArmor(float ticks)
{ {
ConfigManager.TimeValues healthTimes; ConfigManager.TimeValues healthTimes;
/* /*
@@ -884,8 +880,8 @@ public class TimerUtils
healthTimes.getMaxTime(), healthTimes.getMaxTime(),
healthTimes.getFadeInTime(), healthTimes.getFadeInTime(),
healthTimes.getFadeOutTime())); healthTimes.getFadeOutTime()));
stack.push(); GlStateManager.pushMatrix();
stack.translate(0F, GlStateManager.translatef(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
return false; return false;
@@ -896,17 +892,16 @@ public class TimerUtils
/** /**
* Repositions the oxygen bar. * Repositions the oxygen bar.
* *
* @param stack
* @param ticks * @param ticks
* *
* @return If true, then cancel drawing the oxygen bar. * @return If true, then cancel drawing the oxygen bar.
* *
* @since 0.2-1.16.4-forge * @since 0.2-1.16.4-forge
*/ */
public static boolean drawAir(MatrixStack stack, float ticks) public static boolean drawAir(float ticks)
{ {
stack.push(); GlStateManager.pushMatrix();
stack.translate(0F, GlStateManager.translatef(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
return false; return false;
@@ -916,14 +911,13 @@ public class TimerUtils
* Determines whether or not to draw the mount's health, adjusting the alpha * Determines whether or not to draw the mount's health, adjusting the alpha
* as needed. * as needed.
* *
* @param stack
* @param ticks * @param ticks
* *
* @return If true, then cancel drawing the mount health bar. * @return If true, then cancel drawing the mount health bar.
* *
* @since 0.2-1.16.4-forge * @since 0.2-1.16.4-forge
*/ */
public static boolean drawMountHealth(MatrixStack stack, float ticks) public static boolean drawMountHealth(float ticks)
{ {
/* /*
* When the health percentage falls to this level or below, the * When the health percentage falls to this level or below, the
@@ -978,8 +972,8 @@ public class TimerUtils
{ {
if (mountTime > 0) if (mountTime > 0)
{ {
stack.push(); GlStateManager.pushMatrix();
stack.translate(0F, GlStateManager.translatef(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
setAlpha(Main.getAlpha(mountTime, setAlpha(Main.getAlpha(mountTime,
@@ -990,8 +984,8 @@ public class TimerUtils
} }
return true; return true;
} }
stack.push(); GlStateManager.pushMatrix();
stack.translate(0F, GlStateManager.translatef(0F,
getHealthTranslation(), getHealthTranslation(),
0F); 0F);
return false; return false;

View File

@@ -6,7 +6,7 @@
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml # The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
modLoader="javafml" #mandatory modLoader="javafml" #mandatory
# A version range to match for said mod loader - for regular FML @Mod it will be the forge version # A version range to match for said mod loader - for regular FML @Mod it will be the forge version
loaderVersion="[35,)" #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. # 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. # 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" 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 # Does this dependency have to exist - if not, ordering below must be specified
mandatory=true #mandatory mandatory=true #mandatory
# The version range of the dependency # The version range of the dependency
versionRange="[35,)" #mandatory versionRange="[26,)" #mandatory
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
ordering="NONE" ordering="NONE"
# Side this dependency is applied on - BOTH, CLIENT or SERVER # Side this dependency is applied on - BOTH, CLIENT or SERVER
@@ -78,7 +78,6 @@ The following elements will only show up under certain conditions:
[[dependencies.immersive_hud]] [[dependencies.immersive_hud]]
modId="minecraft" modId="minecraft"
mandatory=true mandatory=true
# This version range declares a minimum of the current minecraft version up to but not including the next major version versionRange="[1.14,1.15)"
versionRange="[1.16.4,1.17)"
ordering="NONE" ordering="NONE"
side="CLIENT" side="CLIENT"

View File

@@ -1,7 +1,7 @@
{ {
"pack": { "pack": {
"description": "immersive_hud resources", "description": "immersive_hud resources",
"pack_format": 6, "pack_format": 4,
"_comment": "A pack_format of 6 requires json lang files and some texture changes from 1.16.2. Note: we require v6 pack meta for all mods." "_comment": "A pack_format of 4 requires json lang files and some texture changes from 1.16.2. Note: we require v6 pack meta for all mods."
} }
} }