package mods.ocminecart.client.renderer.entity; import cpw.mods.fml.common.Loader; import mods.ocminecart.OCMinecart; import mods.ocminecart.common.minecart.ComputerCart; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; import org.lwjgl.opengl.GL11; public class ComputerCartRenderer extends Render { private static final double EMBLEM_BX = 0.5001; private static final double EMBLEM_X = 0.5002; private static final boolean MOD_RAILCRAFT = Loader.isModLoaded("Railcraft"); private static final ResourceLocation minecartTextures = new ResourceLocation(OCMinecart.MODID+":textures/entity/computercart.png"); private static final ResourceLocation emblem_back = new ResourceLocation(OCMinecart.MODID+":textures/entity/computercart_eback.png"); protected ComputerCartModel modelMinecart = new ComputerCartModel(); @Override public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float p_76986_9_) { ComputerCart cart=(ComputerCart)entity; GL11.glPushMatrix(); this.bindEntityTexture(cart); double cx= cart.lastTickPosX + (cart.posX - cart.lastTickPosX) * (double)p_76986_9_; double cy= cart.lastTickPosY + (cart.posY - cart.lastTickPosY) * (double)p_76986_9_; double cz= cart.lastTickPosZ + (cart.posZ - cart.lastTickPosZ) * (double)p_76986_9_; double d6 = 0.30000001192092896D; double ryaw = (cart.rotationYaw+360D)%360; double yaw=p_76986_8_; float pitch = cart.rotationPitch; Vec3 vec1 = cart.func_70495_a(cx,cy,cz, d6); Vec3 vec2 = cart.func_70495_a(cx,cy,cz, -d6); if(vec1!=null && vec2!=null){ y += (vec1.yCoord + vec2.yCoord) / 2.0D - cy; Vec3 vec3 = vec2.addVector(-vec1.xCoord, -vec1.yCoord, -vec1.zCoord); if(vec3.lengthVector()!=0){ yaw = (float)(Math.atan2(vec3.zCoord, vec3.xCoord) * 180.0D / Math.PI); pitch = (float)(Math.atan(vec3.yCoord) * 73.0D); } } yaw=(yaw+360D)%360D; ryaw=yaw-ryaw; if(ryaw<=-90 || ryaw>=90){ yaw+=180D; pitch*=-1; } yaw=90F-yaw; GL11.glTranslatef((float)x, (float)y, (float)z); GL11.glRotated(yaw, 0.0D, 1.0D, 0.0D); GL11.glRotatef(-pitch, 1.0F, 0.0F, 0.0F); float rollamp = (float)cart.getRollingAmplitude() - p_76986_9_; float dmgamp = cart.getDamage() - p_76986_9_; if (dmgamp < 0.0F) dmgamp = 0.0F; if (rollamp > 0.0F) { GL11.glRotatef(MathHelper.sin(rollamp) * rollamp * dmgamp / 10.0F * (float)cart.getRollingDirection(), 0.0F, 0.0F, 1.0F); } GL11.glColor3f(1, 1, 1); GL11.glScalef(-1.0F, -1.0F, 1.0F); this.modelMinecart.renderTile(cart, 0.0625F); GL11.glRotated(90D, 0.0D, 1.0D, 0.0D); ResourceLocation emblem = (MOD_RAILCRAFT) ? cart.getEmblemIcon() : null; if(emblem!=null){ Tessellator tes = Tessellator.instance; Minecraft.getMinecraft().renderEngine.bindTexture(emblem_back); //Render the emblem Background. tes.startDrawingQuads(); tes.addVertexWithUV((3D/16D)+(6D/16D), (5D/16D), -EMBLEM_BX, 0, 1); tes.addVertexWithUV((3D/16D)+(6D/16D) ,0, -EMBLEM_BX, 0, 0); tes.addVertexWithUV((3D/16D), 0, -EMBLEM_BX, 1, 0); tes.addVertexWithUV((3D/16D), (5D/16D), -EMBLEM_BX, 1, 1); tes.draw(); tes.startDrawingQuads(); tes.addVertexWithUV((3D/16D), (5D/16D), EMBLEM_BX, 1, 1); tes.addVertexWithUV((3D/16D), 0, EMBLEM_BX, 1, 0); tes.addVertexWithUV((3D/16D)+(6D/16D) ,0, EMBLEM_BX, 0, 0); tes.addVertexWithUV((3D/16D)+(6D/16D), (5D/16D), EMBLEM_BX, 0, 1); tes.draw(); Minecraft.getMinecraft().renderEngine.bindTexture(emblem); //Render the actual emblem tes.startDrawingQuads(); tes.addVertexWithUV((4D/16D)+(5D/16D), (5D/16D), -EMBLEM_X, 1, 1); tes.addVertexWithUV((4D/16D)+(5D/16D) ,0, -EMBLEM_X, 1, 0); tes.addVertexWithUV((4D/16D), 0, -EMBLEM_X, 0, 0); tes.addVertexWithUV((4D/16D), (5D/16D), -EMBLEM_X, 0, 1); tes.draw(); tes.startDrawingQuads(); tes.addVertexWithUV((4D/16D), (5D/16D), EMBLEM_X, 1, 1); tes.addVertexWithUV((4D/16D), 0, EMBLEM_X, 1, 0); tes.addVertexWithUV((4D/16D)+(5D/16D) ,0, EMBLEM_X, 0, 0); tes.addVertexWithUV((4D/16D)+(5D/16D), (5D/16D), EMBLEM_X, 0, 1); tes.draw(); } GL11.glPopMatrix(); } @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return minecartTextures; } }