mcMMO/src/main/java/com/gmail/nossr50/skills/archery/TrackedEntity.java

52 lines
1.3 KiB
Java
Raw Normal View History

package com.gmail.nossr50.skills.archery;
import org.bukkit.Bukkit;
import org.bukkit.entity.LivingEntity;
import com.gmail.nossr50.mcMMO;
2012-07-03 03:36:49 +02:00
public class TrackedEntity implements Runnable {
private LivingEntity livingEntity;
private int arrowCount;
private int previousTicksLived;
2012-07-03 03:36:49 +02:00
private int taskId;
public TrackedEntity(LivingEntity livingEntity) {
this.livingEntity = livingEntity;
2012-07-03 03:36:49 +02:00
taskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(mcMMO.p, this, 12000, 12000);
}
//LivingEntity.isDead() isn't a reliable way to know if an entity is still active
//This method must not be called more than once per server tick
public boolean isActive() {
int currentTicksLived = livingEntity.getTicksLived();
if (currentTicksLived == previousTicksLived) {
return false;
}
2012-07-03 03:36:49 +02:00
previousTicksLived = currentTicksLived;
return true;
}
2012-07-03 03:40:12 +02:00
public LivingEntity getLivingEntity() {
return livingEntity;
}
public int getArrowCount() {
return arrowCount;
}
public void incrementArrowCount() {
arrowCount++;
}
2012-07-03 03:36:49 +02:00
@Override
public void run() {
if (!isActive()) {
Archery.removeFromTracker(this);
Bukkit.getScheduler().cancelTask(taskId);
}
}
}