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

78 lines
2.5 KiB
Java
Raw Normal View History

2012-06-13 03:36:01 +02:00
package com.gmail.nossr50.skills.archery;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
2012-06-13 03:36:01 +02:00
import java.util.Random;
2012-06-13 14:54:02 +02:00
2012-06-13 03:36:01 +02:00
import org.bukkit.Material;
import org.bukkit.entity.LivingEntity;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.util.Misc;
public class Archery {
private static Random random = new Random();
private static List<TrackedEntity> trackedEntities = new ArrayList<TrackedEntity>();
2012-06-13 03:36:01 +02:00
public static final int ARROW_TRACKING_MAX_BONUS_LEVEL = 1000;
2012-06-13 14:53:18 +02:00
public static final int BONUS_DAMAGE_INCREASE_LEVEL = 50;
public static final double BONUS_DAMAGE_INCREASE_PERCENT = 0.1D;
public static final double BONUS_DAMAGE_MAX_BONUS_PERCENTAGE = 2.0D;
2012-06-13 03:36:01 +02:00
public static final int DAZE_MAX_BONUS_LEVEL = 1000;
public static final int DAZE_MODIFIER = 4;
protected static boolean arrowTrackerContains(LivingEntity livingEntity) {
for (TrackedEntity trackedEntity : trackedEntities) {
if (trackedEntity.getLivingEntity() == livingEntity) {
return true;
}
}
return false;
2012-06-13 03:36:01 +02:00
}
protected static void incrementTrackerValue(LivingEntity livingEntity) {
for (TrackedEntity trackedEntity : trackedEntities) {
if (trackedEntity.getLivingEntity() == livingEntity) {
trackedEntity.incrementArrowCount();
return;
}
}
2012-06-13 03:36:01 +02:00
}
protected static void addToTracker(LivingEntity livingEntity) {
TrackedEntity trackedEntity = new TrackedEntity(livingEntity);
trackedEntity.incrementArrowCount();
trackedEntities.add(trackedEntity);
}
protected static void removeFromTracker(TrackedEntity trackedEntity) {
trackedEntities.remove(trackedEntity);
2012-06-13 03:36:01 +02:00
}
/**
* Check for arrow retrieval.
*
* @param entity The entity hit by the arrows
*/
public static void arrowRetrievalCheck(LivingEntity livingEntity) {
for (Iterator<TrackedEntity> it = trackedEntities.iterator() ; it.hasNext() ; ) {
TrackedEntity trackedEntity = it.next();
2012-06-13 14:53:18 +02:00
if (trackedEntity.getLivingEntity() == livingEntity) {
Misc.dropItems(livingEntity.getLocation(), new ItemStack(Material.ARROW), trackedEntity.getArrowCount());
it.remove();
return;
}
2012-06-13 03:36:01 +02:00
}
}
protected static Random getRandom() {
return random;
}
}