From eda7592b817404ea0189adfeae2f087aa8b1e449 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Thu, 8 Jan 2015 20:17:57 -0500 Subject: [PATCH] Add back in floaty items to autochisel render --- .../tileentity/TileEntityAutoChisel.java | 2 + .../client/render/tile/RenderAutoChisel.java | 212 +++++++++--------- 2 files changed, 112 insertions(+), 102 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java index 93d5df74..822e94c4 100644 --- a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java +++ b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java @@ -39,6 +39,8 @@ public class TileEntityAutoChisel extends TileEntity implements ISidedInventory boolean equal = false; private ItemStack[] inventory = new ItemStack[6]; private String name = "autoChisel"; + + public float xRot, yRot, zRot; // used for floating target client only @Override public boolean canUpdate() { diff --git a/src/main/java/com/cricketcraft/chisel/client/render/tile/RenderAutoChisel.java b/src/main/java/com/cricketcraft/chisel/client/render/tile/RenderAutoChisel.java index 4abc29ed..ca0d936e 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/tile/RenderAutoChisel.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/tile/RenderAutoChisel.java @@ -1,5 +1,7 @@ package com.cricketcraft.chisel.client.render.tile; +import java.util.Random; + import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; @@ -33,96 +35,85 @@ import cpw.mods.fml.relauncher.SideOnly; public class RenderAutoChisel extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler, IItemRenderer { - private static final WavefrontObject model = new WavefrontObject(new ResourceLocation(Chisel.MOD_ID, "models/autoChisel/autoChisel.obj")); - private static final ResourceLocation texture = new ResourceLocation(Chisel.MOD_ID, "textures/blocks/autoChisel/autoChisel.png"); - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) - { - return true; - } + private static final WavefrontObject model = new WavefrontObject(new ResourceLocation(Chisel.MOD_ID, "models/autoChisel/autoChisel.obj")); + private static final ResourceLocation texture = new ResourceLocation(Chisel.MOD_ID, "textures/blocks/autoChisel/autoChisel.png"); - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) - { - return helper == ItemRendererHelper.INVENTORY_BLOCK || helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION; - } + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return true; + } - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) - { - switch(type) - { - case ENTITY: - GL11.glTranslatef(-0.5f, 0, 0.5f); - break; - case EQUIPPED: - GL11.glRotatef(20, 0, 1, 0); - GL11.glRotatef(-15, 1, 0, -1); - GL11.glScalef(0.65f, 0.65f, 0.65f); - GL11.glTranslatef(0.75f, -0.5f, 1.25f); - break; - case EQUIPPED_FIRST_PERSON: - GL11.glRotatef(20, 0, 0, 1); - GL11.glRotatef(30, 0, 1, 0); - GL11.glTranslatef(0.2f, 0, -0.1f); - GL11.glScalef(0.5f, 0.5f, 0.5f); - break; - case FIRST_PERSON_MAP: - break; - case INVENTORY: - GL11.glTranslatef(-0.5f, -0.5f, 0.5f); - break; - } - - Minecraft.getMinecraft().renderEngine.bindTexture(texture); - model.renderAll(); - } + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return helper == ItemRendererHelper.INVENTORY_BLOCK || helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION; + } - @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) - { - ; - } + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + switch (type) { + case ENTITY: + GL11.glTranslatef(-0.5f, 0, 0.5f); + break; + case EQUIPPED: + GL11.glRotatef(20, 0, 1, 0); + GL11.glRotatef(-15, 1, 0, -1); + GL11.glScalef(0.65f, 0.65f, 0.65f); + GL11.glTranslatef(0.75f, -0.5f, 1.25f); + break; + case EQUIPPED_FIRST_PERSON: + GL11.glRotatef(20, 0, 0, 1); + GL11.glRotatef(30, 0, 1, 0); + GL11.glTranslatef(0.2f, 0, -0.1f); + GL11.glScalef(0.5f, 0.5f, 0.5f); + break; + case FIRST_PERSON_MAP: + break; + case INVENTORY: + GL11.glTranslatef(-0.5f, -0.5f, 0.5f); + break; + } - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) - { - Tessellator tes = Tessellator.instance; - IIcon icon = block.getIcon(0, 0); - tes.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); - tes.setColorOpaque_F(1, 1, 1); - tes.addTranslation(x, y, z + 1); - for (GroupObject go : model.groupObjects) - { - for (Face f : go.faces) - { - Vertex n = f.faceNormal; - tes.setNormal(n.x, n.y, n.z); - for (int i = 0; i < f.vertices.length; i++) - { - Vertex v = f.vertices[i]; - TextureCoordinate t = f.textureCoordinates[i]; - tes.addVertexWithUV(v.x, v.y, v.z, icon.getInterpolatedU(t.u * 16), icon.getInterpolatedV(t.v * 16)); - } - } - } - tes.addTranslation(-x, -y, -z - 1); - return true; - } + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + model.renderAll(); + } - @Override - public boolean shouldRender3DInInventory(int modelId) - { - return true; - } + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + ; + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + Tessellator tes = Tessellator.instance; + IIcon icon = block.getIcon(0, 0); + tes.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tes.setColorOpaque_F(1, 1, 1); + tes.addTranslation(x, y, z + 1); + for (GroupObject go : model.groupObjects) { + for (Face f : go.faces) { + Vertex n = f.faceNormal; + tes.setNormal(n.x, n.y, n.z); + for (int i = 0; i < f.vertices.length; i++) { + Vertex v = f.vertices[i]; + TextureCoordinate t = f.textureCoordinates[i]; + tes.addVertexWithUV(v.x, v.y, v.z, icon.getInterpolatedU(t.u * 16), icon.getInterpolatedV(t.v * 16)); + } + } + } + tes.addTranslation(-x, -y, -z - 1); + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return Chisel.renderAutoChiselId; + } - @Override - public int getRenderId() - { - return Chisel.renderAutoChiselId; - } - private static EntityItem ghostItem; private final RenderItem renderTargetAndChisel, renderBase; @@ -150,6 +141,8 @@ public class RenderAutoChisel extends TileEntitySpecialRenderer implements ISimp renderBase.setRenderManager(RenderManager.instance); } + private static final Random rand = new Random(); + @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float scale) { @@ -157,24 +150,39 @@ public class RenderAutoChisel extends TileEntitySpecialRenderer implements ISimp TileEntityAutoChisel autoChisel = (TileEntityAutoChisel) tile; EntityItem item = autoChisel.getItemForRendering(1); - // TODO item rendering -// if (item != null) { -// GL11.glPushMatrix(); -// GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); -// GL11.glScaled(3, 3, 3); -// renderTargetAndChisel.doRender(item, 0, 0, 0, 0, 0); -// GL11.glPopMatrix(); -// } -// -// EntityItem item2 = autoChisel.getItemForRendering(0); -// -// if (item2 != null) { -// GL11.glPushMatrix(); -// GL11.glTranslated(x + 0.5, y + 1.5, z + 0.5); -// GL11.glScaled(1, 1, 1); -// renderBase.doRender(item2, 0, 0, 0, 0, 0); -// GL11.glPopMatrix(); -// } + rand.setSeed(tile.xCoord + tile.yCoord + tile.zCoord); + rand.nextBoolean(); + + float max = 0.35f; + + if (!Minecraft.getMinecraft().isGamePaused()) { + autoChisel.xRot += (rand.nextFloat() * max) - (max / 2); + autoChisel.yRot += (rand.nextFloat() * max) - (max / 2); + autoChisel.zRot += (rand.nextFloat() * max) - (max / 2); + } + + if (item != null) { + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + GL11.glTranslated(x + 0.5, y + 1.5, z + 0.5); + GL11.glRotatef(autoChisel.xRot, 1, 0, 0); + GL11.glRotatef(autoChisel.yRot, 0, 1, 0); + GL11.glRotatef(autoChisel.zRot, 0, 0, 1); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_CONSTANT_ALPHA); + renderTargetAndChisel.doRender(item, 0, 0, 0, 0, 0); + GL11.glPopMatrix(); + GL11.glPopAttrib(); + } + + EntityItem item2 = autoChisel.getItemForRendering(0); + + if (item2 != null) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.4, y + 0.83, z + 0.5); + renderBase.doRender(item2, 0, 0, 0, 0, 0); + GL11.glPopMatrix(); + } } @SideOnly(Side.CLIENT)