    001package net.minecraft.client.renderer.texture;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import net.minecraft.client.Minecraft;
    006
    007@SideOnly(Side.CLIENT)
    008public class TextureClock extends TextureStitched
    009{
    010    private double field_94239_h;
    011    private double field_94240_i;
    012
    013    public TextureClock()
    014    {
    015        super("compass");
    016    }
    017
    018    public void updateAnimation()
    019    {
    020        Minecraft minecraft = Minecraft.getMinecraft();
    021        double d0 = 0.0D;
    022
    023        if (minecraft.theWorld != null && minecraft.thePlayer != null)
    024        {
    025            float f = minecraft.theWorld.getCelestialAngle(1.0F);
    026            d0 = (double)f;
    027
    028            if (!minecraft.theWorld.provider.isSurfaceWorld())
    029            {
    030                d0 = Math.random();
    031            }
    032        }
    033
    034        double d1;
    035
    036        for (d1 = d0 - this.field_94239_h; d1 < -0.5D; ++d1)
    037        {
    038            ;
    039        }
    040
    041        while (d1 >= 0.5D)
    042        {
    043            --d1;
    044        }
    045
    046        if (d1 < -1.0D)
    047        {
    048            d1 = -1.0D;
    049        }
    050
    051        if (d1 > 1.0D)
    052        {
    053            d1 = 1.0D;
    054        }
    055
    056        this.field_94240_i += d1 * 0.1D;
    057        this.field_94240_i *= 0.8D;
    058        this.field_94239_h += this.field_94240_i;
    059        int i;
    060
    061        for (i = (int)((this.field_94239_h + 1.0D) * (double)this.textureList.size()) % this.textureList.size(); i < 0; i = (i + this.textureList.size()) % this.textureList.size())
    062        {
    063            ;
    064        }
    065
    066        if (i != this.frameCounter)
    067        {
    068            this.frameCounter = i;
    069            this.textureSheet.copyFrom(this.originX, this.originY, (Texture)this.textureList.get(this.frameCounter), false); //FML: We rotate the textures in init.
    070        }
    071    }
    072}