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