mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-26 07:06:45 +01:00
These functions fit better in CombatTools.
This commit is contained in:
parent
c39827ed59
commit
d0d9527d39
@ -124,7 +124,7 @@ public class EntityListener implements Listener {
|
|||||||
if (defender instanceof LivingEntity) {
|
if (defender instanceof LivingEntity) {
|
||||||
LivingEntity livingDefender = (LivingEntity) defender;
|
LivingEntity livingDefender = (LivingEntity) defender;
|
||||||
|
|
||||||
if (!Misc.isInvincible(livingDefender, event)) {
|
if (!CombatTools.isInvincible(livingDefender, event)) {
|
||||||
CombatTools.combatChecks(event, attacker, livingDefender);
|
CombatTools.combatChecks(event, attacker, livingDefender);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -166,7 +166,7 @@ public class EntityListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Misc.isInvincible(player, event)) {
|
if (!CombatTools.isInvincible(player, event)) {
|
||||||
if (cause == DamageCause.FALL && player.getItemInHand().getType() != Material.ENDER_PEARL && !(Acrobatics.afkLevelingDisabled && player.isInsideVehicle()) && Permissions.roll(player)) {
|
if (cause == DamageCause.FALL && player.getItemInHand().getType() != Material.ENDER_PEARL && !(Acrobatics.afkLevelingDisabled && player.isInsideVehicle()) && Permissions.roll(player)) {
|
||||||
AcrobaticsManager acrobaticsManager = new AcrobaticsManager(mcMMOPlayer);
|
AcrobaticsManager acrobaticsManager = new AcrobaticsManager(mcMMOPlayer);
|
||||||
acrobaticsManager.rollCheck(event);
|
acrobaticsManager.rollCheck(event);
|
||||||
@ -185,7 +185,7 @@ public class EntityListener implements Listener {
|
|||||||
Tameable pet = (Tameable) livingEntity;
|
Tameable pet = (Tameable) livingEntity;
|
||||||
AnimalTamer owner = pet.getOwner();
|
AnimalTamer owner = pet.getOwner();
|
||||||
|
|
||||||
if ((!Misc.isInvincible(livingEntity, event)) && pet.isTamed() && owner instanceof Player && pet instanceof Wolf) {
|
if ((!CombatTools.isInvincible(livingEntity, event)) && pet.isTamed() && owner instanceof Player && pet instanceof Wolf) {
|
||||||
TamingManager tamingManager = new TamingManager(Users.getPlayer((Player) owner));
|
TamingManager tamingManager = new TamingManager(Users.getPlayer((Player) owner));
|
||||||
tamingManager.preventDamage(event);
|
tamingManager.preventDamage(event);
|
||||||
}
|
}
|
||||||
@ -357,7 +357,7 @@ public class EntityListener implements Listener {
|
|||||||
Player player = (Player) event.getTarget();
|
Player player = (Player) event.getTarget();
|
||||||
Tameable tameable = (Tameable) event.getEntity();
|
Tameable tameable = (Tameable) event.getEntity();
|
||||||
|
|
||||||
if (Misc.isFriendlyPet(player, tameable)) {
|
if (CombatTools.isFriendlyPet(player, tameable)) {
|
||||||
// isFriendlyPet ensures that the Tameable is: Tamed, owned by a player, and the owner is in the same party
|
// isFriendlyPet ensures that the Tameable is: Tamed, owned by a player, and the owner is in the same party
|
||||||
// So we can make some assumptions here, about our casting and our check
|
// So we can make some assumptions here, about our casting and our check
|
||||||
Player owner = (Player) tameable.getOwner();
|
Player owner = (Player) tameable.getOwner();
|
||||||
|
@ -2,6 +2,7 @@ package com.gmail.nossr50.skills.utilities;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.entity.AnimalTamer;
|
||||||
import org.bukkit.entity.Animals;
|
import org.bukkit.entity.Animals;
|
||||||
import org.bukkit.entity.Arrow;
|
import org.bukkit.entity.Arrow;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
@ -604,7 +605,7 @@ public final class CombatTools {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (entity instanceof Tameable) {
|
else if (entity instanceof Tameable) {
|
||||||
if (Misc.isFriendlyPet(player, (Tameable) entity)) {
|
if (isFriendlyPet(player, (Tameable) entity)) {
|
||||||
// isFriendlyPet ensures that the Tameable is: Tamed, owned by a player, and the owner is in the same party
|
// isFriendlyPet ensures that the Tameable is: Tamed, owned by a player, and the owner is in the same party
|
||||||
// So we can make some assumptions here, about our casting and our check
|
// So we can make some assumptions here, about our casting and our check
|
||||||
Player owner = (Player) ((Tameable) entity).getOwner();
|
Player owner = (Player) ((Tameable) entity).getOwner();
|
||||||
@ -616,4 +617,47 @@ public final class CombatTools {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks to see if an entity is currently invincible.
|
||||||
|
*
|
||||||
|
* @param le The LivingEntity to check
|
||||||
|
* @param event The event the entity is involved in
|
||||||
|
* @return true if the entity is invincible, false otherwise
|
||||||
|
*/
|
||||||
|
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 && event.getDamage() <= le.getLastDamage()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks to see if an entity is currently friendly toward a given player.
|
||||||
|
*
|
||||||
|
* @param attacker The player to check.
|
||||||
|
* @param pet The entity to check.
|
||||||
|
* @return true if the entity is friendly, false otherwise
|
||||||
|
*/
|
||||||
|
public static boolean isFriendlyPet(Player attacker, Tameable pet) {
|
||||||
|
if (pet.isTamed()) {
|
||||||
|
AnimalTamer tamer = pet.getOwner();
|
||||||
|
|
||||||
|
if (tamer instanceof Player) {
|
||||||
|
Player owner = (Player) tamer;
|
||||||
|
|
||||||
|
if (owner == attacker || PartyManager.inSameParty(attacker, owner)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,9 @@ import java.util.Random;
|
|||||||
import org.bukkit.Location;
|
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.AnimalTamer;
|
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Tameable;
|
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
|
||||||
@ -23,7 +19,6 @@ import com.gmail.nossr50.events.fake.FakeBlockDamageEvent;
|
|||||||
import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
|
import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
|
||||||
import com.gmail.nossr50.events.items.McMMOItemSpawnEvent;
|
import com.gmail.nossr50.events.items.McMMOItemSpawnEvent;
|
||||||
import com.gmail.nossr50.mods.ModChecks;
|
import com.gmail.nossr50.mods.ModChecks;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
|
||||||
|
|
||||||
public final class Misc {
|
public final class Misc {
|
||||||
private static Random random = new Random();
|
private static Random random = new Random();
|
||||||
@ -43,22 +38,6 @@ public final class Misc {
|
|||||||
|
|
||||||
private Misc() {};
|
private Misc() {};
|
||||||
|
|
||||||
public static boolean isFriendlyPet(Player attacker, Tameable pet) {
|
|
||||||
if (pet.isTamed()) {
|
|
||||||
AnimalTamer tamer = pet.getOwner();
|
|
||||||
|
|
||||||
if (tamer instanceof Player) {
|
|
||||||
Player owner = (Player) tamer;
|
|
||||||
|
|
||||||
if (owner == attacker || PartyManager.inSameParty(attacker, owner)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isNPCEntity(Entity entity) {
|
public static boolean isNPCEntity(Entity entity) {
|
||||||
if (entity == null || entity.hasMetadata("NPC")) {
|
if (entity == null || entity.hasMetadata("NPC")) {
|
||||||
return true;
|
return true;
|
||||||
@ -75,26 +54,6 @@ public final class Misc {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks to see if an entity is currently invincible.
|
|
||||||
*
|
|
||||||
* @param le The LivingEntity to check
|
|
||||||
* @param event The event the entity is involved in
|
|
||||||
* @return true if the entity is invincible, false otherwise
|
|
||||||
*/
|
|
||||||
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 && event.getDamage() <= le.getLastDamage()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simulate a block break event.
|
* Simulate a block break event.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user