Merge pull request #1089 from RainWarrior/render-events

Added world display list render events
This commit is contained in:
LexManos committed 2014-05-25 17:16:08 -07:00
commit 96ee4caf39
3 files changed
+95 -5

No files matched your search

@@ -35,6 +35,7 @@ import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.ChunkCache;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.client.model.ModelBiped;
@@ -42,6 +43,7 @@ import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.renderer.texture.TextureMap;
@@ -49,6 +51,7 @@ import net.minecraft.client.settings.GameSettings;
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.client.event.RenderWorldEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.client.event.sound.PlaySoundEvent17;
@@ -453,4 +456,35 @@ public class ForgeHooksClient
MinecraftForge.EVENT_BUS.post(e);
return e.result;
}
static RenderBlocks worldRendererRB;
static int worldRenderPass;
public static int getWorldRenderPass()
{
return worldRenderPass;
}
public static void setWorldRendererRB(RenderBlocks renderBlocks)
{
worldRendererRB = renderBlocks;
}
public static void onPreRenderWorld(WorldRenderer worldRenderer, int pass)
{
if(worldRendererRB != null)
{
worldRenderPass = pass;
MinecraftForge.EVENT_BUS.post(new RenderWorldEvent.Pre(worldRenderer, (ChunkCache)worldRendererRB.blockAccess, worldRendererRB, pass));
}
}
public static void onPostRenderWorld(WorldRenderer worldRenderer, int pass)
{
if(worldRendererRB != null)
{
MinecraftForge.EVENT_BUS.post(new RenderWorldEvent.Post(worldRenderer, (ChunkCache)worldRendererRB.blockAccess, worldRendererRB, pass));
worldRenderPass = -1;
}
}
}
@@ -0,0 +1,39 @@
package net.minecraftforge.client.event;
import cpw.mods.fml.common.eventhandler.Event;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.world.ChunkCache;
public abstract class RenderWorldEvent extends Event
{
public final WorldRenderer renderer;
public final ChunkCache chunkCache;
public final RenderBlocks renderBlocks;
public final int pass;
public RenderWorldEvent(WorldRenderer renderer, ChunkCache chunkCache, RenderBlocks renderBlocks, int pass)
{
this.renderer = renderer;
this.chunkCache = chunkCache;
this.renderBlocks = renderBlocks;
this.pass = pass;
}
/**
* Fired when 16x16x16 chunk area is being redrawn.
* Fired after GL state is setup, before tessellator is started.
*/
public static class Pre extends RenderWorldEvent
{
public Pre(WorldRenderer renderer, ChunkCache chunkCache, RenderBlocks renderBlocks, int pass){ super(renderer, chunkCache, renderBlocks, pass); }
}
/**
* Fired after the tessellator is stopped, before the display list is ended.
*/
public static class Post extends RenderWorldEvent
{
public Post(WorldRenderer renderer, ChunkCache chunkCache, RenderBlocks renderBlocks, int pass){ super(renderer, chunkCache, renderBlocks, pass); }
}
}