    001package net.minecraft.client.renderer;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.util.Comparator;
    006import net.minecraft.entity.Entity;
    007
    008@SideOnly(Side.CLIENT)
    009public class EntitySorter implements Comparator
    010{
    011    /** Entity position X */
    012    private double entityPosX;
    013
    014    /** Entity position Y */
    015    private double entityPosY;
    016
    017    /** Entity position Z */
    018    private double entityPosZ;
    019
    020    public EntitySorter(Entity par1Entity)
    021    {
    022        this.entityPosX = -par1Entity.posX;
    023        this.entityPosY = -par1Entity.posY;
    024        this.entityPosZ = -par1Entity.posZ;
    025    }
    026
    027    /**
    028     * Sorts the two world renderers according to their distance to a given entity.
    029     */
    030    public int sortByDistanceToEntity(WorldRenderer par1WorldRenderer, WorldRenderer par2WorldRenderer)
    031    {
    032        double d0 = (double)par1WorldRenderer.posXPlus + this.entityPosX;
    033        double d1 = (double)par1WorldRenderer.posYPlus + this.entityPosY;
    034        double d2 = (double)par1WorldRenderer.posZPlus + this.entityPosZ;
    035        double d3 = (double)par2WorldRenderer.posXPlus + this.entityPosX;
    036        double d4 = (double)par2WorldRenderer.posYPlus + this.entityPosY;
    037        double d5 = (double)par2WorldRenderer.posZPlus + this.entityPosZ;
    038        return (int)((d0 * d0 + d1 * d1 + d2 * d2 - (d3 * d3 + d4 * d4 + d5 * d5)) * 1024.0D);
    039    }
    040
    041    public int compare(Object par1Obj, Object par2Obj)
    042    {
    043        return this.sortByDistanceToEntity((WorldRenderer)par1Obj, (WorldRenderer)par2Obj);
    044    }
    045}