package net.tropicraft.client.tileentity; import java.util.List; 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.tropicraft.block.tileentity.TileEntityCurareBowl; import net.tropicraft.client.block.model.ModelCurareBowl; import net.tropicraft.util.TropicraftUtils; import org.lwjgl.opengl.GL11; public class TileEntityCurareBowlRenderer extends TileEntitySpecialRenderer { ModelCurareBowl modelBowl = new ModelCurareBowl(); private EntityItem dummyEntityItem = new EntityItem(null, 0.0, 0.0, 0.0, new ItemStack(Items.sugar)); private RenderItem renderItem = new RenderItem(); public TileEntityCurareBowlRenderer() { renderItem.setRenderManager(RenderManager.instance); } private void renderBowl(TileEntityCurareBowl bowl, double x, double y, double z, float partialTicks) { GL11.glPushMatrix(); GL11.glScalef(1F, 1F, 1F); GL11.glTranslatef((float)x+0.5f,(float)y+1.5f,(float)z+0.5f); GL11.glRotatef(180f, 1f, 0f, 1f); List<ItemStack> ingredients = bowl.getIngredientList(); if (ingredients != null) { int count = ingredients.size(); float turnRate = 1f; float startAngle; if (bowl.pestleTicks > 0) { int ticksPerPestleClick = TileEntityCurareBowl.TICKS_PER_PESTLE_CLICK; float progress = bowl.pestleTicks/(float)ticksPerPestleClick; startAngle = (float) (turnRate*2*Math.PI*progress); } else { startAngle = 0f; } for (int i = 0; i < count; i++) { GL11.glPushMatrix(); float angle = (float)(2*Math.PI*((float)i)/count); float radius = 0.666f; float offsetx = MathHelper.sin(startAngle+angle)*radius; float offsetz = MathHelper.cos(startAngle+angle)*radius; GL11.glTranslatef(-0.05f, 1.4f, 0.0f); GL11.glScalef(0.333f, 0.333f, 0.333f); GL11.glTranslatef(offsetx, 0, offsetz); GL11.glRotatef(90f, 0f, 0f, 1f); GL11.glRotatef(180f, 1f, 0f, 1f); GL11.glRotatef(RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F); dummyEntityItem.setEntityItemStack(ingredients.get(i)); renderItem.doRender(dummyEntityItem, 0.0, 0.0, 0.0, 0f, 0f); GL11.glPopMatrix(); } } TropicraftUtils.bindTextureBlock("curareBowlModel"); modelBowl.renderBowl(); GL11.glPopMatrix(); } @Override public void renderTileEntityAt(TileEntity var1, double var2, double var4, double var6, float var8) { renderBowl((TileEntityCurareBowl)var1, var2, var4, var6, var8); } }