From adef7f1ce9cf17f6ffe634823db390a9295fa497 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Fri, 1 Jan 2016 09:03:21 -0500 Subject: [PATCH] Added Item Renderer to Altar. --- .../client/render/RenderAlchemyArray.java | 1 - .../bloodmagic/client/render/RenderAltar.java | 68 +++++++++++++++++++ .../bloodmagic/proxy/ClientProxy.java | 19 +++--- 3 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/client/render/RenderAltar.java diff --git a/src/main/java/WayofTime/bloodmagic/client/render/RenderAlchemyArray.java b/src/main/java/WayofTime/bloodmagic/client/render/RenderAlchemyArray.java index 79739bd7..a470d3ba 100644 --- a/src/main/java/WayofTime/bloodmagic/client/render/RenderAlchemyArray.java +++ b/src/main/java/WayofTime/bloodmagic/client/render/RenderAlchemyArray.java @@ -8,7 +8,6 @@ import WayofTime.bloodmagic.tile.TileAlchemyArray; public class RenderAlchemyArray extends TileEntitySpecialRenderer { - @Override public void renderTileEntityAt(TileAlchemyArray alchemyArray, double x, double y, double z, float partialTicks, int destroyStage) { diff --git a/src/main/java/WayofTime/bloodmagic/client/render/RenderAltar.java b/src/main/java/WayofTime/bloodmagic/client/render/RenderAltar.java new file mode 100644 index 00000000..74688831 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/client/render/RenderAltar.java @@ -0,0 +1,68 @@ +package WayofTime.bloodmagic.client.render; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import WayofTime.bloodmagic.tile.TileAltar; + +public class RenderAltar extends TileEntitySpecialRenderer +{ + public static Minecraft mc = Minecraft.getMinecraft(); + + @Override + public void renderTileEntityAt(TileAltar tileAltar, double x, double y, double z, float partialTicks, int destroyStage) + { + ItemStack inputStack = tileAltar.getStackInSlot(0); + + GlStateManager.pushMatrix(); + GlStateManager.translate(x, y, z); + this.renderItem(tileAltar.getWorld(), inputStack, partialTicks); + GlStateManager.popMatrix(); + } + + private void renderItem(World world, ItemStack stack, float partialTicks) + { + RenderItem itemRenderer = mc.getRenderItem(); + if (stack != null) + { + GlStateManager.translate(0.5, 1, 0.5); + EntityItem entityitem = new EntityItem(world, 0.0D, 0.0D, 0.0D, stack); + entityitem.getEntityItem().stackSize = 1; + entityitem.hoverStart = 0.0F; + GlStateManager.pushMatrix(); + GlStateManager.disableLighting(); + + boolean fancyRender = mc.gameSettings.fancyGraphics; + float rotation = fancyRender ? (float) (720.0 * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL) : 0; + + if (fancyRender) + { + GlStateManager.rotate(rotation, 0.0F, 1.0F, 0); + } + + GlStateManager.scale(0.5F, 0.5F, 0.5F); + + //TODO: Render the item non-fancy if requested. + if (!itemRenderer.shouldRenderItemIn3D(entityitem.getEntityItem())) + { + GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F); + } + + GlStateManager.pushAttrib(); + RenderHelper.enableStandardItemLighting(); + itemRenderer.func_181564_a(entityitem.getEntityItem(), ItemCameraTransforms.TransformType.FIXED); + RenderHelper.disableStandardItemLighting(); + GlStateManager.popAttrib(); + + GlStateManager.enableLighting(); + GlStateManager.popMatrix(); + } + } +} diff --git a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java index 22462d0c..3282ba4b 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java @@ -1,19 +1,21 @@ package WayofTime.bloodmagic.proxy; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.client.render.RenderAlchemyArray; -import WayofTime.bloodmagic.entity.projectile.EntityBloodLight; -import WayofTime.bloodmagic.registry.ModBlocks; -import WayofTime.bloodmagic.registry.ModItems; -import WayofTime.bloodmagic.render.RenderEntityBloodLight; -import WayofTime.bloodmagic.tile.TileAlchemyArray; -import WayofTime.bloodmagic.util.helper.InventoryRenderHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.obj.OBJLoader; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.RenderingRegistry; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.client.render.RenderAlchemyArray; +import WayofTime.bloodmagic.client.render.RenderAltar; +import WayofTime.bloodmagic.entity.projectile.EntityBloodLight; +import WayofTime.bloodmagic.registry.ModBlocks; +import WayofTime.bloodmagic.registry.ModItems; +import WayofTime.bloodmagic.render.RenderEntityBloodLight; +import WayofTime.bloodmagic.tile.TileAlchemyArray; +import WayofTime.bloodmagic.tile.TileAltar; +import WayofTime.bloodmagic.util.helper.InventoryRenderHelper; public class ClientProxy extends CommonProxy { @@ -38,6 +40,7 @@ public class ClientProxy extends CommonProxy OBJLoader.instance.addDomain(Constants.Mod.MODID); ModelLoader.setCustomModelResourceLocation(InventoryRenderHelper.getItemFromBlock(ModBlocks.altar), 0, new ModelResourceLocation(Constants.Mod.DOMAIN + "BlockAltar", "inventory")); ClientRegistry.bindTileEntitySpecialRenderer(TileAlchemyArray.class, new RenderAlchemyArray()); + ClientRegistry.bindTileEntitySpecialRenderer(TileAltar.class, new RenderAltar()); } @Override