From 7e7870026e52f4024369a55cdd98587f1f9dd0a2 Mon Sep 17 00:00:00 2001 From: TheCountryGamer Date: Thu, 19 Jun 2014 15:03:05 -0400 Subject: [PATCH] Added RenderBlockOverlayEvent.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a Forge event which controls whether an overlay is rendered. Overlays include: First-person fire, Block (when inside a block) and water when a player is inside a water block. Patched for easier manipulation of event Fixed for Lex To be squashed Removed Contructor Added block XYZ parameters TODO, the second block overlay event’s XYZ might not be correct --- .../client/renderer/ItemRenderer.java.patch | 31 +++++++++++ .../client/event/RenderBlockOverlayEvent.java | 51 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 src/main/java/net/minecraftforge/client/event/RenderBlockOverlayEvent.java diff --git a/patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch index c9c6b709ac..7cc964b852 100644 --- a/patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch @@ -120,3 +120,34 @@ } GL11.glPopMatrix(); +@@ -507,6 +538,7 @@ + + if (this.field_78455_a.field_71439_g.func_70027_ad()) + { ++ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderBlockOverlayEvent(this.field_78455_a.field_71439_g, p_78447_1_, net.minecraftforge.client.event.RenderBlockOverlayEvent.OverlayType.FIRE, Blocks.field_150480_ab, MathHelper.func_76128_c(this.field_78455_a.field_71439_g.field_70165_t), MathHelper.func_76128_c(this.field_78455_a.field_71439_g.field_70163_u), MathHelper.func_76128_c(this.field_78455_a.field_71439_g.field_70161_v)))) + this.func_78442_d(p_78447_1_); + } + +@@ -519,6 +551,7 @@ + + if (this.field_78455_a.field_71441_e.func_147439_a(i, j, k).func_149721_r()) + { ++ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderBlockOverlayEvent(this.field_78455_a.field_71439_g, p_78447_1_, net.minecraftforge.client.event.RenderBlockOverlayEvent.OverlayType.BLOCK, block, i, j, k))) + this.func_78446_a(p_78447_1_, block.func_149733_h(2)); + } + else +@@ -541,12 +574,14 @@ + + if (block.func_149688_o() != Material.field_151579_a) + { ++ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderBlockOverlayEvent(this.field_78455_a.field_71439_g, p_78447_1_, net.minecraftforge.client.event.RenderBlockOverlayEvent.OverlayType.BLOCK, block, i, j, k))) + this.func_78446_a(p_78447_1_, block.func_149733_h(2)); + } + } + + if (this.field_78455_a.field_71439_g.func_70055_a(Material.field_151586_h)) + { ++ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderBlockOverlayEvent(this.field_78455_a.field_71439_g, p_78447_1_, net.minecraftforge.client.event.RenderBlockOverlayEvent.OverlayType.WATER, Blocks.field_150355_j, MathHelper.func_76128_c(this.field_78455_a.field_71439_g.field_70165_t), MathHelper.func_76128_c(this.field_78455_a.field_71439_g.field_70163_u), MathHelper.func_76128_c(this.field_78455_a.field_71439_g.field_70161_v)))) + this.func_78448_c(p_78447_1_); + } + diff --git a/src/main/java/net/minecraftforge/client/event/RenderBlockOverlayEvent.java b/src/main/java/net/minecraftforge/client/event/RenderBlockOverlayEvent.java new file mode 100644 index 0000000000..f0772a278e --- /dev/null +++ b/src/main/java/net/minecraftforge/client/event/RenderBlockOverlayEvent.java @@ -0,0 +1,51 @@ +package net.minecraftforge.client.event; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import cpw.mods.fml.common.eventhandler.Cancelable; +import cpw.mods.fml.common.eventhandler.Event; + +/** + * Called when a block's texture is going to be overlaid on the player's HUD. Cancel this event to prevent the overlay. + */ +@Cancelable +public class RenderBlockOverlayEvent extends Event { + + public static enum OverlayType { + FIRE, BLOCK, WATER + } + + /** + * The player which the overlay will apply to + */ + public final EntityPlayer player; + public final float renderPartialTicks; + /** + * The type of overlay to occur + */ + public final OverlayType overlayType; + /** + * If the overlay type is BLOCK, then this is the block which the overlay is getting it's icon from + */ + public final Block blockForOverlay; + public final int blockX; + public final int blockY; + public final int blockZ; + + public RenderBlockOverlayEvent(EntityPlayer player, float renderPartialTicks, OverlayType type, Block block, int blockX, int blockY, int blockZ) + { + this.player = player; + this.renderPartialTicks = renderPartialTicks; + this.overlayType = type; + if (this.overlayType == OverlayType.BLOCK) + this.blockForOverlay = block; + else + this.blockForOverlay = null; + this.blockX = blockX; + this.blockY = blockY; + this.blockZ = blockZ; + + } + +}