content: package eu.the5zig.mod.listener;
  
  import eu.the5zig.mod.The5zigMod;
  import eu.the5zig.mod.event.EventHandler;
  import eu.the5zig.mod.event.TickEvent;
  import eu.the5zig.mod.util.GLUtil;
  import eu.the5zig.mod.util.IVariables;
  import eu.the5zig.util.Utils;
  import org.lwjgl.opengl.GL11;
  
  public class CrossHairDistanceListener {
  
  	private double distance;
  	private Object pointedEntity;
  	private long lastPointedEntity;
  
  	public CrossHairDistanceListener() {
  		// The5zigMod.getListener().registerListener(this);
  	}
  
  	@EventHandler
  	public void onTick(TickEvent event) {
  		float maxDistance = The5zigMod.getConfig().getFloat("crosshairDistance");
  		boolean showEntityHealth = (The5zigMod.getDataManager().getServer() == null) && The5zigMod.getModuleMaster()
  				.isItemActive("ENTITY_HEALTH");
  		if (pointedEntity != null && System.currentTimeMillis() - lastPointedEntity > 500) {
  			pointedEntity = null;
  			lastPointedEntity = 0;
  		}
  		if (maxDistance > 0 || showEntityHealth) {
  			IVariables.MouseOverObject mouseOverObject = The5zigMod.getVars().calculateMouseOverDistance(Math.max(maxDistance, 10));
  			if (mouseOverObject != null) {
  				distance = maxDistance > 0 ? mouseOverObject.getDistance() : -1;
  				if (showEntityHealth && mouseOverObject.getType() == IVariables.ObjectType.ENTITY) {
  					pointedEntity = mouseOverObject.getObject();
  					lastPointedEntity = System.currentTimeMillis();
  				}
  			} else {
  				distance = -1;
  			}
  		} else {
  			distance = -1;
  		}
  	}
  
  	public void render() {
  		if (The5zigMod.getConfig().getBool("showMod") && distance != -1) {
  			drawString(Utils.getShortenedDouble(distance, The5zigMod.getConfig().getInt("numberPrecision")) + "m", The5zigMod.getVars().getScaledWidth() / 2,
  					The5zigMod.getVars().getScaledHeight() / 2 + 8, true, .5f, true);
  		}
  	}
  
  	public void drawString(String string, int x, int y, boolean alpha, float scale, boolean centered) {
  		if (alpha) {
  			GLUtil.enableBlend();
  			GLUtil.tryBlendFuncSeparate(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR, 1, 0);
  			GL11.glEnable(GL11.GL_ALPHA_TEST);
  		}
  		GLUtil.color(1, 1, 1, 1);
  		GLUtil.pushMatrix();
  		if (centered) {
  			GLUtil.translate(x - The5zigMod.getVars().getStringWidth(string) / 2 * scale, y, 1);
  		} else {
  			GLUtil.translate(x, y, 1);
  		}
  		GLUtil.scale(scale, scale, scale);
  		The5zigMod.getVars().drawString(string, 0, 0, 0xffffff, false);
  		GLUtil.popMatrix();
  		if (alpha) {
  			GLUtil.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0);
  			GLUtil.disableBlend();
  		}
  	}
  
  	public Object getPointedEntity() {
  		return pointedEntity;
  	}
  }
  