mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 06:36:45 +01:00
Merge pull request #3884 from jstnf/acro-fix
Check if a player has Absorption when calculating Acrobatics XP gain
This commit is contained in:
commit
9b08f9bc44
@ -77,7 +77,9 @@ public class Roll extends AcrobaticsSubSkill {
|
||||
if (canRoll(player)) {
|
||||
entityDamageEvent.setDamage(rollCheck(player, mcMMOPlayer, entityDamageEvent.getDamage()));
|
||||
|
||||
if (entityDamageEvent.getFinalDamage() == 0) {
|
||||
//Check getDamage() instead of getFinalDamage()
|
||||
//Prevent unintended invincibility if Absorption covers all of the damage
|
||||
if (entityDamageEvent.getDamage() == 0) {
|
||||
entityDamageEvent.setCancelled(true);
|
||||
return true;
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.player.PlayerFishEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@ -85,7 +86,7 @@ public class EventUtils {
|
||||
*
|
||||
* 1) The player is real and not an NPC
|
||||
* 2) The player is not in god mode
|
||||
* 3) The damage dealt is above 0
|
||||
* 3) The damage dealt is above 0 (if a player has Absorption, check if damage and final damage are above 0)
|
||||
* 4) The player is loaded into our mcMMO user profiles
|
||||
*
|
||||
* @param entityDamageEvent
|
||||
@ -94,12 +95,27 @@ public class EventUtils {
|
||||
public static boolean isRealPlayerDamaged(EntityDamageEvent entityDamageEvent)
|
||||
{
|
||||
//Make sure the damage is above 0
|
||||
double damage = entityDamageEvent.getFinalDamage();
|
||||
double damage = entityDamageEvent.getDamage();
|
||||
double finalDamage = entityDamageEvent.getFinalDamage();
|
||||
|
||||
if (damage <= 0) {
|
||||
return false;
|
||||
if (entityDamageEvent.getEntity() instanceof Player) {
|
||||
Player player = (Player) entityDamageEvent.getEntity();
|
||||
|
||||
//If a player has Absorption, check both damage and final damage
|
||||
if (player.hasPotionEffect(PotionEffectType.ABSORPTION)) {
|
||||
if (damage <= 0 && finalDamage <= 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//Otherwise, do original check - only check final damage
|
||||
else {
|
||||
if (finalDamage <= 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Entity entity = entityDamageEvent.getEntity();
|
||||
|
||||
//Check to make sure the entity is not an NPC
|
||||
|
Loading…
Reference in New Issue
Block a user