package net.tropicraft.client.tileentity;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.tropicraft.block.tileentity.TileEntityEIHMixer;
import net.tropicraft.client.block.model.ModelBambooMug;
import net.tropicraft.client.entity.model.ModelEIHMixer;
import net.tropicraft.item.ItemCocktail;
import net.tropicraft.util.TropicraftUtils;
import org.lwjgl.opengl.GL11;
public class TileEntityEIHMixerRenderer extends TileEntitySpecialRenderer {
/**
* EIHMixer model instance
*/
private ModelEIHMixer modelMixer = new ModelEIHMixer();
private ModelBambooMug modelBambooMug = new ModelBambooMug();
private EntityItem dummyEntityItem = new EntityItem((World)null, 0.0, 0.0, 0.0, new ItemStack(Items.sugar));
private RenderItem renderItem = new RenderItem();
public TileEntityEIHMixerRenderer() {
renderItem.setRenderManager(RenderManager.instance);
}
/**
* All rendering of EIH mixer done here
* @param te TileEntityEIHMixer instance
* @param x xCoord
* @param y yCoord
* @param z zCoord
* @param partialTicks partial ticks
*/
private void renderEIHMixer(TileEntityEIHMixer te, double x, double y, double z, float partialTicks) {
GL11.glPushMatrix();
GL11.glTranslatef((float)x+0.5f,(float)y+1.5f,(float)z+0.5f);
GL11.glRotatef(180f, 1f, 0f, 1f);
if (te.getWorldObj() == null) {
GL11.glRotatef(180f, 0f, 1f, 0f);
} else {
int meta = te.getBlockMetadata();
if (meta == 2) {
GL11.glRotatef(0f, 0f, 1f, 0f);
} else if (meta == 3) {
GL11.glRotatef(180f, 0f, 1f, 0f);
} else if (meta == 4) {
GL11.glRotatef(270f, 0f, 1f, 0f);
} else if (meta == 5) {
GL11.glRotatef(90f, 0f, 1f, 0f);
}
}
if (te.isMixing()) {
float angle = MathHelper.sin((float)(25f*2f*Math.PI*te.ticks/te.TICKS_TO_MIX))*15f;
GL11.glRotatef(angle, 0f, 1f, 0f);
}
TropicraftUtils.bindTextureTE("eihmixer");
modelMixer.renderEIHMixer();
ItemStack[] ingredients = te.getIngredients();
if (!te.isDoneMixing()) {
if (ingredients[0] != null) {
GL11.glPushMatrix();
GL11.glRotatef(180f, 1f, 0f, 1f);
GL11.glTranslatef(0.3f, -0.5f, 0.05f);
GL11.glRotatef(RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
dummyEntityItem.setEntityItemStack(ingredients[0]);
renderItem.doRender(dummyEntityItem, 0.0, 0.0, 0.0, 0f, 0f);
GL11.glPopMatrix();
}
if (ingredients[1] != null) {
GL11.glPushMatrix();
GL11.glRotatef(180f, 1f, 0f, 1f);
GL11.glTranslatef(-0.3f, -0.5f, 0.05f);
GL11.glRotatef(RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
dummyEntityItem.setEntityItemStack(ingredients[1]);
renderItem.doRender(dummyEntityItem, 0.0, 0.0, 0.0, 0f, 0f);
GL11.glPopMatrix();
}
}
if (te.isMixing()) {
GL11.glPushMatrix();
GL11.glTranslatef(-0.2f, -0.25f, 0.0f);
if (te.isDoneMixing()) {
modelBambooMug.renderLiquid = true;
modelBambooMug.liquidColor = ItemCocktail.getCocktailColor(te.result);
} else {
modelBambooMug.renderLiquid = false;
}
TropicraftUtils.bindTextureTE("bamboomug");
modelBambooMug.renderBambooMug();
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
/**
* Bridge method, calls renderEIHMixer
*/
@Override
public void renderTileEntityAt(TileEntity var1, double var2, double var4,
double var6, float var8) {
renderEIHMixer((TileEntityEIHMixer)var1, var2, var4, var6, var8);
}
}