001    package net.minecraft.client.renderer;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.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    }