package com.legacy.aether.entities.ai;

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.ai.EntityAIBase;

public class EntityAIUpdateState extends EntityAIBase {

	private EntityLivingBase entity;

	private boolean isStuckWarning = false;

	private long checkTime = 0L;

	private double checkX;

	private double checkY;

	private double checkZ;

	public EntityAIUpdateState(EntityLivingBase entity) {
		this.entity = entity;
		this.setMutexBits(1);
	}

	@Override
	public boolean isInterruptible() {
		return false;
	}

	@Override
	public void updateTask() {
		long curtime = System.currentTimeMillis();

		if (curtime > this.checkTime + 3000L) {
			double diffx = this.entity.posX - this.checkX;
			double diffy = this.entity.posY - this.checkY;
			double diffz = this.entity.posZ - this.checkZ;

			double distanceTravelled = Math.sqrt((diffx * diffx) + (diffy * diffy) + (diffz * diffz));

			if (distanceTravelled < 3D) {
				if (!this.isStuckWarning) {
					this.isStuckWarning = true;
				} else {
					this.entity.setDead();
				}
			}

			this.checkX = this.entity.posX;
			this.checkY = this.entity.posY;
			this.checkZ = this.entity.posZ;
			this.checkTime = curtime;
		}
	}

	@Override
	public boolean shouldExecute() {
		return !this.entity.isDead;
	}

}