    001    package net.minecraft.client.renderer;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005    import java.util.Comparator;
    006    import net.minecraft.entity.EntityLiving;
    007
    008    @SideOnly(Side.CLIENT)
    009    public class RenderSorter implements Comparator
    010    {
    011        /** The entity (usually the player) that the camera is inside. */
    012        private EntityLiving baseEntity;
    013
    014        public RenderSorter(EntityLiving par1EntityLiving)
    015        {
    016            this.baseEntity = par1EntityLiving;
    017        }
    018
    019        public int doCompare(WorldRenderer par1WorldRenderer, WorldRenderer par2WorldRenderer)
    020        {
    021            if (par1WorldRenderer.isInFrustum && !par2WorldRenderer.isInFrustum)
    022            {
    023                return 1;
    024            }
    025            else if (par2WorldRenderer.isInFrustum && !par1WorldRenderer.isInFrustum)
    026            {
    027                return -1;
    028            }
    029            else
    030            {
    031                double var3 = (double)par1WorldRenderer.distanceToEntitySquared(this.baseEntity);
    032                double var5 = (double)par2WorldRenderer.distanceToEntitySquared(this.baseEntity);
    033                return var3 < var5 ? 1 : (var3 > var5 ? -1 : (par1WorldRenderer.chunkIndex < par2WorldRenderer.chunkIndex ? 1 : -1));
    034            }
    035        }
    036
    037        public int compare(Object par1Obj, Object par2Obj)
    038        {
    039            return this.doCompare((WorldRenderer)par1Obj, (WorldRenderer)par2Obj);
    040        }
    041    }