Archery.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.gmail.nossr50.skills.archery;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import java.util.Random;
  6. import org.bukkit.Material;
  7. import org.bukkit.entity.LivingEntity;
  8. import org.bukkit.inventory.ItemStack;
  9. import com.gmail.nossr50.config.AdvancedConfig;
  10. import com.gmail.nossr50.util.Misc;
  11. public class Archery {
  12. private static AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
  13. private static Random random = new Random();
  14. private static List<TrackedEntity> trackedEntities = new ArrayList<TrackedEntity>();
  15. public static final int ARROW_TRACKING_MAX_BONUS_LEVEL = advancedConfig.getRetrieveMaxBonusLevel();
  16. public static final int ARROW_TRACKING_MAX_BONUS = advancedConfig.getRetrieveBonusMax();
  17. public static final int BONUS_DAMAGE_INCREASE_LEVEL = advancedConfig.getSkillShotIncreaseLevel();
  18. public static final double BONUS_DAMAGE_INCREASE_PERCENT = advancedConfig.getSkillShotIncreasePercentage();
  19. public static final double BONUS_DAMAGE_MAX_BONUS_PERCENTAGE = advancedConfig.getSkillShotBonusMax();
  20. public static final int DAZE_MAX_BONUS_LEVEL = advancedConfig.getDazeMaxBonusLevel();
  21. public static final int DAZE_MAX_BONUS = advancedConfig.getDazeBonusMax();
  22. public static final int DAZE_MODIFIER = advancedConfig.getDazeModifier();
  23. protected static void incrementTrackerValue(LivingEntity livingEntity) {
  24. for (TrackedEntity trackedEntity : trackedEntities) {
  25. if (trackedEntity.getLivingEntity().getEntityId() == livingEntity.getEntityId()) {
  26. trackedEntity.incrementArrowCount();
  27. return;
  28. }
  29. }
  30. addToTracker(livingEntity); //If the entity isn't tracked yet
  31. }
  32. protected static void addToTracker(LivingEntity livingEntity) {
  33. TrackedEntity trackedEntity = new TrackedEntity(livingEntity);
  34. trackedEntity.incrementArrowCount();
  35. trackedEntities.add(trackedEntity);
  36. }
  37. protected static void removeFromTracker(TrackedEntity trackedEntity) {
  38. trackedEntities.remove(trackedEntity);
  39. }
  40. /**
  41. * Check for arrow retrieval.
  42. *
  43. * @param entity The entity hit by the arrows
  44. */
  45. public static void arrowRetrievalCheck(LivingEntity livingEntity) {
  46. for (Iterator<TrackedEntity> it = trackedEntities.iterator() ; it.hasNext() ; ) {
  47. TrackedEntity trackedEntity = it.next();
  48. if (trackedEntity.getLivingEntity() == livingEntity) {
  49. Misc.dropItems(livingEntity.getLocation(), new ItemStack(Material.ARROW), trackedEntity.getArrowCount());
  50. it.remove();
  51. return;
  52. }
  53. }
  54. }
  55. protected static Random getRandom() {
  56. return random;
  57. }
  58. }