mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-12-28 11:37:39 +01:00
Reworking our invincibility checks to accomodate for vanilla mc behaviour
This commit is contained in:
parent
2f5edb6329
commit
1c866a52e5
@ -40,6 +40,7 @@ import org.bukkit.event.entity.FoodLevelChangeEvent;
|
|||||||
|
|
||||||
import com.gmail.nossr50.Combat;
|
import com.gmail.nossr50.Combat;
|
||||||
import com.gmail.nossr50.Users;
|
import com.gmail.nossr50.Users;
|
||||||
|
import com.gmail.nossr50.m;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.mcPermissions;
|
import com.gmail.nossr50.mcPermissions;
|
||||||
import com.gmail.nossr50.config.LoadProperties;
|
import com.gmail.nossr50.config.LoadProperties;
|
||||||
@ -79,7 +80,7 @@ public class mcEntityListener implements Listener
|
|||||||
if(defender instanceof LivingEntity)
|
if(defender instanceof LivingEntity)
|
||||||
{
|
{
|
||||||
LivingEntity livingDefender = (LivingEntity)defender;
|
LivingEntity livingDefender = (LivingEntity)defender;
|
||||||
if(livingDefender.getNoDamageTicks() < livingDefender.getMaximumNoDamageTicks()/2.0F)
|
if(!m.isInvincible(livingDefender, event))
|
||||||
Combat.combatChecks(event, plugin);
|
Combat.combatChecks(event, plugin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -102,7 +103,7 @@ public class mcEntityListener implements Listener
|
|||||||
if(PP.getGodMode())
|
if(PP.getGodMode())
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
||||||
if(player.getNoDamageTicks() < player.getMaximumNoDamageTicks()/2.0F)
|
if(!m.isInvincible(player, event))
|
||||||
{
|
{
|
||||||
if(cause == DamageCause.FALL && mcPermissions.getInstance().acrobatics(player))
|
if(cause == DamageCause.FALL && mcPermissions.getInstance().acrobatics(player))
|
||||||
Acrobatics.acrobaticsCheck(player, event);
|
Acrobatics.acrobaticsCheck(player, event);
|
||||||
@ -114,7 +115,7 @@ public class mcEntityListener implements Listener
|
|||||||
break;
|
break;
|
||||||
case WOLF:
|
case WOLF:
|
||||||
Wolf wolf = (Wolf) entity;
|
Wolf wolf = (Wolf) entity;
|
||||||
if((wolf.getNoDamageTicks() < wolf.getMaximumNoDamageTicks()/2.0F) && wolf.isTamed() && wolf.getOwner() != null)
|
if((!m.isInvincible(wolf, event)) && wolf.isTamed() && wolf.getOwner() != null)
|
||||||
Taming.preventDamage(event, plugin);
|
Taming.preventDamage(event, plugin);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.*;
|
import org.bukkit.entity.*;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.player.PlayerAnimationEvent;
|
import org.bukkit.event.player.PlayerAnimationEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import com.gmail.nossr50.config.*;
|
import com.gmail.nossr50.config.*;
|
||||||
@ -60,6 +61,20 @@ public class m
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isInvincible(LivingEntity le, EntityDamageEvent event)
|
||||||
|
{
|
||||||
|
//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
|
||||||
|
if(le.getNoDamageTicks() < le.getMaximumNoDamageTicks()/2.0F)
|
||||||
|
{
|
||||||
|
if(event.getDamage() <= le.getLastDamage())
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isDouble(String string)
|
public static boolean isDouble(String string)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
Loading…
Reference in New Issue
Block a user