Add back in floaty items to autochisel render

This commit is contained in:
tterrag1098 committed 2015-01-08 20:17:57 -05:00
1 parent f2cdd40c78
commit eda7592b81
2 files changed
+112 -102

No files matched your search

@@ -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() {
@@ -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)