Skip to content

Commit

Permalink
bugfix: Aquanaut Overlay not rendered with Curios & Baubles #20
Browse files Browse the repository at this point in the history
  • Loading branch information
cech12 committed Sep 28, 2020
1 parent 4488c5b commit 0ec4f3a
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 3 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false

mod_version=1.8.4
mod_version=1.8.5
minecraft_version=1.14.4

forge_version=1.14.4-28.1.0
Expand Down
20 changes: 20 additions & 0 deletions src/main/java/cech12/usefulhats/init/ModItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import cech12.usefulhats.compat.CuriosMod;
import cech12.usefulhats.item.*;
import cech12.usefulhats.UsefulHatsMod;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.color.ItemColors;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.player.PlayerEntity;
Expand All @@ -14,6 +15,7 @@
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.ColorHandlerEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
Expand Down Expand Up @@ -93,6 +95,7 @@ public static void addEventListeners() {
@OnlyIn(Dist.CLIENT)
public static void addClientEventListeners() {
MinecraftForge.EVENT_BUS.addListener(ModItems::onItemToolTipEvent);
MinecraftForge.EVENT_BUS.addListener(ModItems::onRenderGameOverlayEvent);
}

private static void onBreakSpeedEvent(PlayerEvent.BreakSpeed event) {
Expand Down Expand Up @@ -225,4 +228,21 @@ private static void onLivingSetAttackTargetEvent(LivingSetAttackTargetEvent even
}
}
}

@OnlyIn(Dist.CLIENT)
private static void onRenderGameOverlayEvent(RenderGameOverlayEvent.Pre event) {
if (!event.isCanceled() && event.getType() == RenderGameOverlayEvent.ElementType.HELMET) {
Minecraft mc = Minecraft.getInstance();
if (mc.player != null && mc.gameSettings.thirdPersonView == 0) {
for (ItemStack headSlotItemStack : UsefulHatsUtils.getEquippedHatItemStacks(mc.player)) {
for (Item item : ModItems.items) {
if (item instanceof IGameOverlayRenderer && item == headSlotItemStack.getItem()) {
((IGameOverlayRenderer) item).onRenderGameOverlay(mc.mainWindow.getScaledWidth(), mc.mainWindow.getScaledHeight(), event.getPartialTicks());
}
}
}
}
}
}

}
11 changes: 9 additions & 2 deletions src/main/java/cech12/usefulhats/item/AquanautHelmetItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

import java.util.List;

public class AquanautHelmetItem extends AbstractHatItem implements IEquipmentChangeListener {
public class AquanautHelmetItem extends AbstractHatItem implements IEquipmentChangeListener, IUsefulHatModelOwner, IGameOverlayRenderer {

private static final ResourceLocation AQUANAUT_GUI_TEX_PATH = new ResourceLocation(UsefulHatsMod.MOD_ID, "textures/misc/aquanautblur.png");

Expand Down Expand Up @@ -78,8 +80,13 @@ public void onUnequippedHatItem(LivingEntity entity, ItemStack oldStack) {
this.removeEffect(entity, Effects.CONDUIT_POWER, this.getConduitPowerDuration(oldStack), 0);
}

//to support other apis do not use this method
//@Override
//public void renderHelmetOverlay(ItemStack stack, PlayerEntity player, int width, int height, float partialTicks) {}

@OnlyIn(Dist.CLIENT)
@Override
public void renderHelmetOverlay(ItemStack stack, PlayerEntity player, int width, int height, float partialTicks) {
public void onRenderGameOverlay(int width, int height, float partialTicks) {
GlStateManager.disableDepthTest();
GlStateManager.depthMask(false);
GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/cech12/usefulhats/item/IGameOverlayRenderer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package cech12.usefulhats.item;

import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

public interface IGameOverlayRenderer {

@OnlyIn(Dist.CLIENT)
void onRenderGameOverlay(int width, int height, float partialTicks);

}

0 comments on commit 0ec4f3a

Please sign in to comment.