瀏覽代碼

Health and damage are now doubles, not ints.

GJ 12 年之前
父節點
當前提交
d07b67b5bf

+ 1 - 1
src/main/java/com/gmail/nossr50/events/fake/FakeEntityDamageByEntityEvent.java

@@ -7,7 +7,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
  * Called when mcMMO applies damage from an entity due to special abilities.
  */
 public class FakeEntityDamageByEntityEvent extends EntityDamageByEntityEvent {
-    public FakeEntityDamageByEntityEvent(Entity damager, Entity damagee, DamageCause cause, int damage) {
+    public FakeEntityDamageByEntityEvent(Entity damager, Entity damagee, DamageCause cause, double damage) {
         super(damager, damagee, cause, damage);
     }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/events/fake/FakeEntityDamageEvent.java

@@ -7,7 +7,7 @@ import org.bukkit.event.entity.EntityDamageEvent;
  * Called when mcMMO applies damage due to special abilities.
  */
 public class FakeEntityDamageEvent extends EntityDamageEvent {
-    public FakeEntityDamageEvent(Entity damagee, DamageCause cause, int damage) {
+    public FakeEntityDamageEvent(Entity damagee, DamageCause cause, double damage) {
         super(damagee, cause, damage);
     }
 }

+ 2 - 2
src/main/java/com/gmail/nossr50/listeners/EntityListener.java

@@ -124,7 +124,7 @@ public class EntityListener implements Listener {
             return;
         }
 
-        int damage = event.getDamage();
+        double damage = event.getDamage();
 
         if (damage <= 0) {
             return;
@@ -184,7 +184,7 @@ public class EntityListener implements Listener {
             return;
         }
 
-        int damage = event.getDamage();
+        double damage = event.getDamage();
 
         if (damage <= 0) {
             return;

+ 3 - 3
src/main/java/com/gmail/nossr50/runnables/skills/AwardCombatXpTask.java

@@ -11,7 +11,7 @@ public class AwardCombatXpTask extends BukkitRunnable {
     private double baseXp;
     private SkillType skillType;
     private LivingEntity target;
-    private int baseHealth;
+    private double baseHealth;
 
     public AwardCombatXpTask(McMMOPlayer mcMMOPlayer, SkillType skillType, double baseXp, LivingEntity target) {
         this.mcMMOPlayer = mcMMOPlayer;
@@ -23,8 +23,8 @@ public class AwardCombatXpTask extends BukkitRunnable {
 
     @Override
     public void run() {
-        int health = target.getHealth();
-        int damage = baseHealth - health;
+        double health = target.getHealth();
+        double damage = baseHealth - health;
 
         // May avoid negative xp, we don't know what other plugins do with the entity health
         if (damage <= 0) {

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java

@@ -25,11 +25,11 @@ public final class Acrobatics {
 
     private Acrobatics() {};
 
-    protected static int calculateModifiedDodgeDamage(int damage, int damageModifier) {
+    protected static double calculateModifiedDodgeDamage(double damage, int damageModifier) {
         return Math.max(damage / damageModifier, 1);
     }
 
-    protected static int calculateModifiedRollDamage(int damage, int damageThreshold) {
+    protected static double calculateModifiedRollDamage(double damage, int damageThreshold) {
         return Math.max(damage - damageThreshold, 0);
     }
 }

+ 12 - 12
src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java

@@ -44,8 +44,8 @@ public class AcrobaticsManager extends SkillManager {
      * @param damage The amount of damage initially dealt by the event
      * @return the modified event damage if the ability was successful, the original event damage otherwise
      */
-    public int dodgeCheck(int damage) {
-        int modifiedDamage = Acrobatics.calculateModifiedDodgeDamage(damage, Acrobatics.dodgeDamageModifier);
+    public double dodgeCheck(double damage) {
+        double modifiedDamage = Acrobatics.calculateModifiedDodgeDamage(damage, Acrobatics.dodgeDamageModifier);
         Player player = getPlayer();
 
         if (!isFatal(modifiedDamage) && SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Acrobatics.dodgeMaxChance, Acrobatics.dodgeMaxBonusLevel)) {
@@ -57,7 +57,7 @@ public class AcrobaticsManager extends SkillManager {
 
             // Why do we check respawn cooldown here?
             if (System.currentTimeMillis() >= mcMMOPlayer.getRespawnATS() + Misc.PLAYER_RESPAWN_COOLDOWN_SECONDS) {
-                applyXpGain(damage * Acrobatics.dodgeXpModifier);
+                applyXpGain((float) (damage * Acrobatics.dodgeXpModifier));
             }
 
             return modifiedDamage;
@@ -72,23 +72,23 @@ public class AcrobaticsManager extends SkillManager {
      * @param damage The amount of damage initially dealt by the event
      * @return the modified event damage if the ability was successful, the original event damage otherwise
      */
-    public int rollCheck(int damage) {
+    public double rollCheck(double damage) {
         Player player = getPlayer();
 
         if (player.isSneaking() && Permissions.gracefulRoll(player)) {
             return gracefulRollCheck(damage);
         }
 
-        int modifiedDamage = Acrobatics.calculateModifiedRollDamage(damage, Acrobatics.rollThreshold);
+        double modifiedDamage = Acrobatics.calculateModifiedRollDamage(damage, Acrobatics.rollThreshold);
 
         if (!isFatal(modifiedDamage) && isSuccessfulRoll(Acrobatics.rollMaxChance, Acrobatics.rollMaxBonusLevel)) {
             player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Text"));
-            applyXpGain(damage * Acrobatics.rollXpModifier);
+            applyXpGain((float) (damage * Acrobatics.rollXpModifier));
 
             return modifiedDamage;
         }
         else if (!isFatal(damage)) {
-            applyXpGain(damage * Acrobatics.fallXpModifier);
+            applyXpGain((float) (damage * Acrobatics.fallXpModifier));
         }
 
         return damage;
@@ -100,17 +100,17 @@ public class AcrobaticsManager extends SkillManager {
      * @param damage The amount of damage initially dealt by the event
      * @return the modified event damage if the ability was successful, the original event damage otherwise
      */
-    private int gracefulRollCheck(int damage) {
-        int modifiedDamage = Acrobatics.calculateModifiedRollDamage(damage, Acrobatics.gracefulRollThreshold);
+    private double gracefulRollCheck(double damage) {
+        double modifiedDamage = Acrobatics.calculateModifiedRollDamage(damage, Acrobatics.gracefulRollThreshold);
 
         if (!isFatal(modifiedDamage) && isSuccessfulRoll(Acrobatics.gracefulRollMaxChance, Acrobatics.gracefulRollMaxBonusLevel)) {
             getPlayer().sendMessage(LocaleLoader.getString("Acrobatics.Ability.Proc"));
-            applyXpGain(damage * Acrobatics.rollXpModifier);
+            applyXpGain((float) (damage * Acrobatics.rollXpModifier));
 
             return modifiedDamage;
         }
         else if (!isFatal(damage)) {
-            applyXpGain(damage * Acrobatics.fallXpModifier);
+            applyXpGain((float) (damage * Acrobatics.fallXpModifier));
         }
 
         return damage;
@@ -120,7 +120,7 @@ public class AcrobaticsManager extends SkillManager {
         return (maxChance / maxLevel) * Math.min(getSkillLevel(), maxLevel) > Misc.getRandom().nextInt(activationChance);
     }
 
-    private boolean isFatal(int damage) {
+    private boolean isFatal(double damage) {
         return getPlayer().getHealth() - damage < 1;
     }
 }

+ 3 - 3
src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java

@@ -68,7 +68,7 @@ public class ArcheryManager extends SkillManager {
      * @param damage The amount of damage initially dealt by the event
      * @return the modified event damage if the ability was successful, the original event damage otherwise
      */
-    public int dazeCheck(Player defender, int damage) {
+    public double dazeCheck(Player defender, double damage) {
         if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Archery.dazeMaxBonus, Archery.dazeMaxBonusLevel)) {
             Location dazedLocation = defender.getLocation();
             dazedLocation.setPitch(90 - Misc.getRandom().nextInt(181));
@@ -96,9 +96,9 @@ public class ArcheryManager extends SkillManager {
      * @param damage The amount of damage initially dealt by the event
      * @return the modified event damage
      */
-    public int skillShotCheck(int damage) {
+    public double skillShotCheck(double damage) {
         double damageBonusPercent = Math.min(((getSkillLevel() / Archery.skillShotIncreaseLevel) * Archery.skillShotIncreasePercentage), Archery.skillShotMaxBonusPercentage);
-        int archeryBonus = (int) (damage * damageBonusPercent);
+        double archeryBonus = damage * damageBonusPercent;
 
         return damage + archeryBonus;
     }

+ 7 - 7
src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java

@@ -55,8 +55,8 @@ public class AxesManager extends SkillManager {
      * @param damage The amount of damage initially dealt by the event
      * @return the modified event damage
      */
-    public int axeMasteryCheck(int damage) {
-        int axeBonus = Math.min(getSkillLevel() / (Axes.bonusDamageMaxBonusLevel / Axes.bonusDamageMaxBonus), Axes.bonusDamageMaxBonus);
+    public double axeMasteryCheck(double damage) {
+        double axeBonus = Math.min(getSkillLevel() / (Axes.bonusDamageMaxBonusLevel / Axes.bonusDamageMaxBonus), Axes.bonusDamageMaxBonus);
 
         return damage + axeBonus;
     }
@@ -68,17 +68,17 @@ public class AxesManager extends SkillManager {
      * @param damage The amount of damage initially dealt by the event
      * @return the modified event damage if the ability was successful, the original event damage otherwise
      */
-    public int criticalHitCheck(LivingEntity target, int damage) {
+    public double criticalHitCheck(LivingEntity target, double damage) {
         if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Axes.criticalHitMaxChance, Axes.criticalHitMaxBonusLevel)) {
             getPlayer().sendMessage(LocaleLoader.getString("Axes.Combat.CriticalHit"));
 
             if (target instanceof Player) {
                 ((Player) target).sendMessage(LocaleLoader.getString("Axes.Combat.CritStruck"));
 
-                return (int) (damage * Axes.criticalHitPVPModifier);
+                return damage * Axes.criticalHitPVPModifier;
             }
 
-            return (int) (damage * Axes.criticalHitPVEModifier);
+            return damage * Axes.criticalHitPVEModifier;
         }
 
         return damage;
@@ -111,7 +111,7 @@ public class AxesManager extends SkillManager {
      * @param damage The amount of damage initially dealt by the event
      * @return the modified event damage if the ability was successful, the original event damage otherwise
      */
-    public int greaterImpactCheck(LivingEntity target, int damage) {
+    public double greaterImpactCheck(LivingEntity target, double damage) {
         if (Axes.greaterImpactChance > Misc.getRandom().nextInt(getActivationChance())) {
             Player player = getPlayer();
 
@@ -142,7 +142,7 @@ public class AxesManager extends SkillManager {
      * @param target The {@link LivingEntity} being affected by the ability
      * @param damage The amount of damage initially dealt by the event
      */
-    public void skullSplitterCheck(LivingEntity target, int damage) {
+    public void skullSplitterCheck(LivingEntity target, double damage) {
         CombatUtils.applyAbilityAoE(getPlayer(), target, damage / Axes.skullSplitterModifier, skill);
     }
 }

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java

@@ -175,8 +175,8 @@ public class MiningManager extends SkillManager {
         return (float) (radius + getBlastRadiusModifier());
     }
 
-    public int processDemolitionsExpertise(int damage) {
-        return (int) (damage * ((100.0D - getBlastDamageModifier()) / 100.0D));
+    public double processDemolitionsExpertise(double damage) {
+        return damage * ((100.0D - getBlastDamageModifier()) / 100.0D);
     }
 
     /**

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java

@@ -66,7 +66,7 @@ public class SwordsManager extends SkillManager {
         }
     }
 
-    public void counterAttackChecks(LivingEntity attacker, int damage) {
+    public void counterAttackChecks(LivingEntity attacker, double damage) {
         if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Swords.counterAttackMaxChance, Swords.counterAttackMaxBonusLevel)) {
             CombatUtils.dealDamage(attacker, damage / Swords.counterAttackModifier);
 
@@ -78,7 +78,7 @@ public class SwordsManager extends SkillManager {
         }
     }
 
-    public void serratedStrikes(LivingEntity target, int damage) {
+    public void serratedStrikes(LivingEntity target, double damage) {
         CombatUtils.applyAbilityAoE(getPlayer(), target, damage / Swords.serratedStrikesModifier, skill);
         BleedTimerTask.add(target, Swords.serratedStrikesBleedTicks);
     }

+ 5 - 5
src/main/java/com/gmail/nossr50/skills/taming/Taming.java

@@ -39,7 +39,7 @@ public class Taming {
         return pet.isTamed() && owner instanceof Player && pet instanceof Wolf;
     }
 
-    public static int processThickFur(Wolf wolf, int damage) {
+    public static double processThickFur(Wolf wolf, double damage) {
         wolf.playEffect(EntityEffect.WOLF_SHAKE);
         return damage / thickFurModifier;
     }
@@ -49,7 +49,7 @@ public class Taming {
         wolf.setFireTicks(0);
     }
 
-    public static int processShockProof(Wolf wolf, int damage) {
+    public static double processShockProof(Wolf wolf, double damage) {
         wolf.playEffect(EntityEffect.WOLF_SHAKE);
         return damage / shockProofModifier;
     }
@@ -59,12 +59,12 @@ public class Taming {
      *
      * @param event The event to modify
      */
-    public static int sharpenedClaws(int damage) {
+    public static double sharpenedClaws(double damage) {
         return damage + Taming.sharpenedClawsBonusDamage;
     }
 
-    public static void processHolyHound(Wolf wolf, int damage) {
-        int modifiedHealth = Math.min(wolf.getHealth() + damage, wolf.getMaxHealth());
+    public static void processHolyHound(Wolf wolf, double damage) {
+        double modifiedHealth = Math.min(wolf.getHealth() + damage, wolf.getMaxHealth());
 
         wolf.setHealth(modifiedHealth);
         wolf.playEffect(EntityEffect.WOLF_HEARTS);

+ 6 - 6
src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java

@@ -84,14 +84,14 @@ public class TamingManager extends SkillManager {
      * @param wolf The wolf using the ability
      * @param damage The damage being absorbed by the wolf
      */
-    public void fastFoodService(Wolf wolf, int damage) {
+    public void fastFoodService(Wolf wolf, double damage) {
         if (Taming.fastFoodServiceActivationChance > Misc.getRandom().nextInt(getActivationChance())) {
 
-            int health = wolf.getHealth();
-            int maxHealth = wolf.getMaxHealth();
+            double health = wolf.getHealth();
+            double maxHealth = wolf.getMaxHealth();
 
             if (health < maxHealth) {
-                int newHealth = health + damage;
+                double newHealth = health + damage;
                 wolf.setHealth(Math.min(newHealth, maxHealth));
             }
         }
@@ -102,7 +102,7 @@ public class TamingManager extends SkillManager {
      *
      * @param event The event to modify
      */
-    public int gore(LivingEntity target, int damage) {
+    public double gore(LivingEntity target, double damage) {
         if (SkillUtils.activationSuccessful(getSkillLevel(), getActivationChance(), Taming.goreMaxChance, Taming.goreMaxBonusLevel)) {
             BleedTimerTask.add(target, Taming.goreBleedTicks);
 
@@ -150,7 +150,7 @@ public class TamingManager extends SkillManager {
         player.sendMessage(message);
     }
 
-    public void processEnvironmentallyAware(Wolf wolf, int damage) {
+    public void processEnvironmentallyAware(Wolf wolf, double damage) {
         if (damage > wolf.getHealth()) {
             return;
         }

+ 3 - 3
src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java

@@ -95,8 +95,8 @@ public class UnarmedManager extends SkillManager {
         return false;
     }
 
-    public int berserkDamage(int damage) {
-        return (int) (damage * Unarmed.berserkDamageModifier);
+    public double berserkDamage(double damage) {
+        return damage * Unarmed.berserkDamageModifier;
     }
 
     /**
@@ -105,7 +105,7 @@ public class UnarmedManager extends SkillManager {
      * @param damage The amount of damage initially dealt by the event
      * @return the modified event damage
      */
-    public int ironArmCheck(int damage) {
+    public double ironArmCheck(double damage) {
         int unarmedBonus = Math.min(3 + (getSkillLevel() / Unarmed.ironArmIncreaseLevel), Unarmed.ironArmMaxBonusDamage);
 
         return damage + unarmedBonus;

+ 2 - 2
src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java

@@ -103,10 +103,10 @@ public class WoodcuttingManager extends SkillManager {
         if (!Woodcutting.handleDurabilityLoss(treeFellerBlocks, player.getItemInHand())) {
             player.sendMessage(LocaleLoader.getString("Woodcutting.Skills.TreeFeller.Splinter"));
 
-            int health = player.getHealth();
+            double health = player.getHealth();
 
             if (health > 1) {
-                CombatUtils.dealDamage(player, Misc.getRandom().nextInt(health - 1));
+                CombatUtils.dealDamage(player, Misc.getRandom().nextInt((int) (health - 1)));
             }
 
             return;

+ 1 - 1
src/main/java/com/gmail/nossr50/util/ChimaeraWing.java

@@ -95,7 +95,7 @@ public final class ChimaeraWing {
                 player.sendMessage(LocaleLoader.getString("Item.ChimaeraWing.Fail"));
                 player.updateInventory();
                 player.setVelocity(new Vector(0, 0.5D, 0));
-                CombatUtils.dealDamage(player, Misc.getRandom().nextInt(player.getHealth() - 10));
+                CombatUtils.dealDamage(player, Misc.getRandom().nextInt((int) (player.getHealth() - 10)));
                 mcMMOPlayer.actualizeLastTeleport();
                 return;
             }

+ 6 - 6
src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java

@@ -39,7 +39,7 @@ public final class MobHealthbarUtils {
      * @param target the targetted entity
      * @param damage damage done by the attack triggering this
      */
-    public static void handleMobHealthbars(Player player, LivingEntity target, int damage) {
+    public static void handleMobHealthbars(Player player, LivingEntity target, double damage) {
         if (!Permissions.mobHealthDisplay(player)) {
             return;
         }
@@ -91,10 +91,10 @@ public final class MobHealthbarUtils {
         }
     }
 
-    private static String createHealthDisplay(PlayerProfile profile, LivingEntity entity, int damage) {
-        int maxHealth = entity.getMaxHealth();
-        int currentHealth = Math.max(entity.getHealth() - damage, 0);
-        double healthPercentage = (currentHealth / (double) maxHealth) * 100.0D;
+    private static String createHealthDisplay(PlayerProfile profile, LivingEntity entity, double damage) {
+        double maxHealth = entity.getMaxHealth();
+        double currentHealth = Math.max(entity.getHealth() - damage, 0);
+        double healthPercentage = (currentHealth / maxHealth) * 100.0D;
 
         int fullDisplay = 0;
         ChatColor color = ChatColor.BLACK;
@@ -102,7 +102,7 @@ public final class MobHealthbarUtils {
 
         switch (profile.getMobHealthbarType()) {
             case HEARTS:
-                fullDisplay = Math.min(maxHealth / 2, 10);
+                fullDisplay = Math.min((int) (maxHealth / 2), 10);
                 color = ChatColor.DARK_RED;
                 symbol = "❤";
                 break;

+ 7 - 7
src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

@@ -46,7 +46,7 @@ import com.gmail.nossr50.util.player.UserManager;
 public final class CombatUtils {
     private CombatUtils() {}
 
-    private static void processSwordCombat(LivingEntity target, Player player, int damage) {
+    private static void processSwordCombat(LivingEntity target, Player player, double damage) {
         McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
         SwordsManager swordsManager = mcMMOPlayer.getSwordsManager();
 
@@ -317,7 +317,7 @@ public final class CombatUtils {
      * @param target LivingEntity which to attempt to damage
      * @param dmg Amount of damage to attempt to do
      */
-    public static void dealDamage(LivingEntity target, int dmg) {
+    public static void dealDamage(LivingEntity target, double dmg) {
         dealDamage(target, dmg, EntityDamageEvent.DamageCause.CUSTOM);
     }
 
@@ -328,7 +328,7 @@ public final class CombatUtils {
      * @param dmg Amount of damage to attempt to do
      * @param cause DamageCause to pass to damage event
      */
-    private static void dealDamage(LivingEntity target, int dmg, DamageCause cause) {
+    private static void dealDamage(LivingEntity target, double dmg, DamageCause cause) {
         if (Config.getInstance().getEventCallbackEnabled()) {
             EntityDamageEvent ede = new FakeEntityDamageEvent(target, cause, dmg);
             mcMMO.p.getServer().getPluginManager().callEvent(ede);
@@ -351,7 +351,7 @@ public final class CombatUtils {
      * @param dmg Amount of damage to attempt to do
      * @param attacker Player to pass to event as damager
      */
-    private static void dealDamage(LivingEntity target, int dmg, Player attacker) {
+    private static void dealDamage(LivingEntity target, double dmg, Player attacker) {
         if (Config.getInstance().getEventCallbackEnabled()) {
             EntityDamageEvent ede = new FakeEntityDamageByEntityEvent(attacker, target, EntityDamageEvent.DamageCause.ENTITY_ATTACK, dmg);
             mcMMO.p.getServer().getPluginManager().callEvent(ede);
@@ -375,9 +375,9 @@ public final class CombatUtils {
      * @param damage The initial damage amount
      * @param type The type of skill being used
      */
-    public static void applyAbilityAoE(Player attacker, LivingEntity target, int damage, SkillType type) {
+    public static void applyAbilityAoE(Player attacker, LivingEntity target, double damage, SkillType type) {
         int numberOfTargets = Misc.getTier(attacker.getItemInHand()); // The higher the weapon tier, the more targets you hit
-        int damageAmount = Math.max(damage, 1);
+        double damageAmount = Math.max(damage, 1);
 
         for (Entity entity : target.getNearbyEntities(2.5, 2.5, 2.5)) {
             if (numberOfTargets <= 0) {
@@ -565,7 +565,7 @@ public final class CombatUtils {
      * @param eventDamage The damage from the event the entity is involved in
      * @return true if the entity is invincible, false otherwise
      */
-    public static boolean isInvincible(LivingEntity entity, int eventDamage) {
+    public static boolean isInvincible(LivingEntity entity, double eventDamage) {
         /*
          * So apparently if you do more damage to a LivingEntity than its last damage int you bypass the invincibility.
          * So yeah, this is for that.