From 73d32b9fbaafa0936f27f4bd0e6dd5b6863bc309 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Fri, 10 Jul 2015 18:19:32 -0400 Subject: [PATCH] Add back in RendererCTM --- .../chisel/api/rendering/ClientUtils.java | 8 ++ .../chisel/block/BlockCarvable.java | 2 +- .../chisel/block/BlockCarvableCarpet.java | 2 +- .../chisel/block/BlockCarvableGlass.java | 2 +- .../chisel/block/BlockCarvableIce.java | 2 +- .../chisel/block/BlockCarvablePackedIce.java | 2 +- .../chisel/block/BlockCarvableSand.java | 2 +- .../chisel/client/render/RendererCTM.java | 78 +++++++++++++++++++ .../chisel/proxy/ClientProxy.java | 25 ++++-- 9 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/cricketcraft/chisel/api/rendering/ClientUtils.java create mode 100644 src/main/java/com/cricketcraft/chisel/client/render/RendererCTM.java diff --git a/src/main/java/com/cricketcraft/chisel/api/rendering/ClientUtils.java b/src/main/java/com/cricketcraft/chisel/api/rendering/ClientUtils.java new file mode 100644 index 00000000..fc3f3ded --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/api/rendering/ClientUtils.java @@ -0,0 +1,8 @@ +package com.cricketcraft.chisel.api.rendering; + + +public class ClientUtils { + + public static int renderCTMId; + +} diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvable.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvable.java index eb892c6e..faef75d4 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvable.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvable.java @@ -16,8 +16,8 @@ import com.cricketcraft.chisel.api.ChiselAPIProps; import com.cricketcraft.chisel.api.ICarvable; import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; +import com.cricketcraft.chisel.api.rendering.ClientUtils; import com.cricketcraft.chisel.init.ChiselTabs; -import com.cricketcraft.ctmlib.ClientUtils; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableCarpet.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableCarpet.java index 9383506e..465429a6 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableCarpet.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableCarpet.java @@ -14,7 +14,7 @@ import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.api.ICarvable; import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.ctmlib.ClientUtils; +import com.cricketcraft.chisel.api.rendering.ClientUtils; public class BlockCarvableCarpet extends BlockCarpet implements ICarvable { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableGlass.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableGlass.java index ec9a96b6..d001868c 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableGlass.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableGlass.java @@ -14,8 +14,8 @@ import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.api.ICarvable; import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; +import com.cricketcraft.chisel.api.rendering.ClientUtils; import com.cricketcraft.chisel.init.ChiselTabs; -import com.cricketcraft.ctmlib.ClientUtils; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIce.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIce.java index 49e601cd..aa530179 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIce.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIce.java @@ -17,7 +17,7 @@ import net.minecraft.world.World; import com.cricketcraft.chisel.api.ICarvable; import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.ctmlib.ClientUtils; +import com.cricketcraft.chisel.api.rendering.ClientUtils; public class BlockCarvableIce extends BlockIce implements ICarvable { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIce.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIce.java index e3d2eba2..052da89b 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIce.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIce.java @@ -19,7 +19,7 @@ import net.minecraft.world.World; import com.cricketcraft.chisel.api.ICarvable; import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.ctmlib.ClientUtils; +import com.cricketcraft.chisel.api.rendering.ClientUtils; public class BlockCarvablePackedIce extends Block implements ICarvable { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSand.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSand.java index b18e2ebf..7ddfc154 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSand.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSand.java @@ -15,8 +15,8 @@ import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; +import com.cricketcraft.chisel.api.rendering.ClientUtils; import com.cricketcraft.chisel.init.ChiselTabs; -import com.cricketcraft.ctmlib.ClientUtils; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/com/cricketcraft/chisel/client/render/RendererCTM.java b/src/main/java/com/cricketcraft/chisel/client/render/RendererCTM.java new file mode 100644 index 00000000..658e5b3b --- /dev/null +++ b/src/main/java/com/cricketcraft/chisel/client/render/RendererCTM.java @@ -0,0 +1,78 @@ +package com.cricketcraft.chisel.client.render; + +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.item.ItemStack; +import net.minecraft.world.IBlockAccess; + +import org.lwjgl.opengl.GL11; + +import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.IVariationInfo; +import com.cricketcraft.chisel.api.rendering.ClientUtils; +import com.cricketcraft.ctmlib.Drawing; +import com.cricketcraft.ctmlib.RenderBlocksCTM; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import cpw.mods.fml.client.registry.RenderingRegistry; + +public class RendererCTM implements ISimpleBlockRenderingHandler { + + public RenderBlocksCTM rendererCTM = new RenderBlocksCTM(); + + public RendererCTM() { + if (ClientUtils.renderCTMId == 0) { + ClientUtils.renderCTMId = RenderingRegistry.getNextAvailableRenderId(); + } + } + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + IVariationInfo var = ((ICarvable) block).getVariation(new ItemStack(block, 1, metadata)); + RenderBlocks rb = getContext(renderer, block, Minecraft.getMinecraft().theWorld, var, metadata); + Drawing.drawBlock(block, metadata, rb); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + rb.unlockBlockBounds(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks rendererOld) { + int meta = world.getBlockMetadata(x, y, z); + IVariationInfo var = ((ICarvable) block).getVariation(world, x, y, z, meta); + RenderBlocks rb = getContext(rendererOld, block, world, var, meta); + boolean ret = rb.renderStandardBlock(block, x, y, z); + rb.unlockBlockBounds(); + return ret; + } + + private RenderBlocks getContext(RenderBlocks rendererOld, Block block, IBlockAccess world, IVariationInfo var, int meta) { + if (!rendererOld.hasOverrideBlockTexture() && var != null) { + RenderBlocks rb = var.getSubmapManager().createRenderContext(rendererOld, block, world); + if (rb != null && rb != rendererOld) { + rb.blockAccess = world; + if (rendererOld.lockBlockBounds) { + rb.overrideBlockBounds(rendererOld.renderMinX, rendererOld.renderMinY, rendererOld.renderMinZ, rendererOld.renderMaxX, rendererOld.renderMaxY, rendererOld.renderMaxZ); + } + if (rb instanceof RenderBlocksCTM) { + RenderBlocksCTM rbctm = (RenderBlocksCTM) rb; + rbctm.manager = rbctm.manager == null ? var.getSubmapManager() : rbctm.manager; + rbctm.rendererOld = rbctm.rendererOld == null ? rendererOld : rbctm.rendererOld; + } + return rb; + } + } + return rendererOld; + } + + @Override + public boolean shouldRender3DInInventory(int renderId) { + return true; + } + + @Override + public int getRenderId() { + return ClientUtils.renderCTMId; + } +} diff --git a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java index 27d21f62..915eb09a 100644 --- a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java +++ b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java @@ -1,11 +1,27 @@ package com.cricketcraft.chisel.proxy; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.RenderSnowball; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.world.World; +import net.minecraftforge.client.MinecraftForgeClient; + import com.cricketcraft.chisel.block.BlockCarvableBeacon; import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel; import com.cricketcraft.chisel.block.tileentity.TileEntityCarvableBeacon; import com.cricketcraft.chisel.block.tileentity.TileEntityPresent; import com.cricketcraft.chisel.client.player.PlayerSpecials; -import com.cricketcraft.chisel.client.render.*; +import com.cricketcraft.chisel.client.render.RenderChiselSnowman; +import com.cricketcraft.chisel.client.render.RendererCTM; +import com.cricketcraft.chisel.client.render.RendererCTMPane; +import com.cricketcraft.chisel.client.render.RendererEldritch; +import com.cricketcraft.chisel.client.render.RendererLayeredGlow; +import com.cricketcraft.chisel.client.render.RendererMultiLayer; +import com.cricketcraft.chisel.client.render.RendererRoadLine; +import com.cricketcraft.chisel.client.render.RendererSimpleLayered; +import com.cricketcraft.chisel.client.render.RendererSnakeStone; +import com.cricketcraft.chisel.client.render.RendererStairs; import com.cricketcraft.chisel.client.render.item.ItemChiselRenderer; import com.cricketcraft.chisel.client.render.tile.RenderAutoChisel; import com.cricketcraft.chisel.client.render.tile.RenderCarvableBeacon; @@ -19,12 +35,6 @@ import com.cricketcraft.chisel.init.ChiselItems; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.entity.RenderSnowball; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.world.World; -import net.minecraftforge.client.MinecraftForgeClient; public class ClientProxy extends CommonProxy { @@ -36,6 +46,7 @@ public class ClientProxy extends CommonProxy { @Override public void init() { + RenderingRegistry.registerBlockHandler(new RendererCTM()); RenderingRegistry.registerBlockHandler(new RendererStairs()); RenderingRegistry.registerBlockHandler(new RendererCTMPane()); RenderingRegistry.registerBlockHandler(new RendererRoadLine());