diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Brute/Takedown.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Brute/Takedown.java index dde2e6a1b..09faffdd8 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Brute/Takedown.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Brute/Takedown.java @@ -2,6 +2,7 @@ package mineplex.minecraft.game.classcombat.Skill.Brute; import java.util.HashMap; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.Sound; @@ -34,21 +35,21 @@ public class Takedown extends SkillActive { private HashMap _live = new HashMap(); - public Takedown(SkillFactory skills, String name, ClassType classType, SkillType skillType, - int cost, int levels, - int energy, int energyMod, - long recharge, long rechargeMod, boolean rechargeInform, - Material[] itemArray, - Action[] actionArray) + public Takedown(SkillFactory skills, String name, ClassType classType, SkillType skillType, + int cost, int levels, + int energy, int energyMod, + long recharge, long rechargeMod, boolean rechargeInform, + Material[] itemArray, + Action[] actionArray) { super(skills, name, classType, skillType, cost, levels, - energy, energyMod, - recharge, rechargeMod, rechargeInform, + energy, energyMod, + recharge, rechargeMod, rechargeInform, itemArray, actionArray); - SetDesc(new String[] + SetDesc(new String[] { "Hurl yourself towards an opponent.", "If you collide with them, you deal", @@ -58,7 +59,7 @@ public class Takedown extends SkillActive } @Override - public boolean CustomCheck(Player player, int level) + public boolean CustomCheck(Player player, int level) { if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9) { @@ -76,7 +77,7 @@ public class Takedown extends SkillActive } @Override - public void Skill(Player player, int level) + public void Skill(Player player, int level) { //Action Vector vec = player.getLocation().getDirection(); @@ -108,11 +109,11 @@ public class Takedown extends SkillActive int level = getLevel(player); if (level == 0) continue; - if (!UtilTime.elapsed(_live.get(player), 1000)) + if (!UtilTime.elapsed(_live.get(player), 1000)) continue; - _live.remove(player); - } + _live.remove(player); + } //Collide for (Player player : GetUsers()) @@ -167,25 +168,28 @@ public class Takedown extends SkillActive int damage = 3 + (level); //Damage Event - Factory.Damage().NewDamageEvent(damagee, damager, null, + CustomDamageEvent customDamageEvent = Factory.Damage().NewDamageEvent(damagee, damager, null, DamageCause.CUSTOM, damage, false, true, false, - damager.getName(), GetName()); + damager.getName(), GetName()); - //Damage Event - Factory.Damage().NewDamageEvent(damager, damagee, null, - DamageCause.CUSTOM, damage/2, false, true, false, - damager.getName(), GetName() + " Recoil"); + if (!customDamageEvent.IsCancelled()) + { + //Damage Event + Factory.Damage().NewDamageEvent(damager, damagee, null, + DamageCause.CUSTOM, damage / 2, false, true, false, + damager.getName(), GetName() + " Recoil"); - //Conditions - Factory.Condition().Factory().Slow(GetName(), damagee, damager, 2.5 + 0.5*level, 3, false, true, true, true); - Factory.Condition().Factory().Slow(GetName(), damager, damager, 2.5 + 0.5*level, 3, false, true, true, true); + //Conditions + Factory.Condition().Factory().Slow(GetName(), damagee, damager, 2.5 + 0.5 * level, 3, false, true, true, true); + Factory.Condition().Factory().Slow(GetName(), damager, damager, 2.5 + 0.5 * level, 3, false, true, true, true); - //Inform - UtilPlayer.message(damager, F.main(GetClassType().name(), "You hit " + F.name(UtilEnt.getName(damagee)) + " with " + F.skill(GetName(level)) + ".")); - UtilPlayer.message(damagee, F.main(GetClassType().name(), F.name(damager.getName()) + " hit you with " + F.skill(GetName(level)) + ".")); + //Inform + UtilPlayer.message(damager, F.main(GetClassType().name(), "You hit " + F.name(UtilEnt.getName(damagee)) + " with " + F.skill(GetName(level)) + ".")); + UtilPlayer.message(damagee, F.main(GetClassType().name(), F.name(damager.getName()) + " hit you with " + F.skill(GetName(level)) + ".")); - //Sound - damager.getWorld().playSound(damager.getLocation(), Sound.ZOMBIE_WOOD, 1f, 0.5f); + //Sound + damager.getWorld().playSound(damager.getLocation(), Sound.ZOMBIE_WOOD, 1f, 0.5f); + } } @EventHandler diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java index 8feccdccf..daba8449a 100644 --- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java +++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java @@ -171,37 +171,39 @@ public class DamageManager extends MiniPlugin } */ - public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, + public CustomDamageEvent NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor, String source, String reason) { - NewDamageEvent(damagee, damager, proj, + return NewDamageEvent(damagee, damager, proj, cause, damage, knockback, ignoreRate, ignoreArmor, source, reason, false); } - public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, + public CustomDamageEvent NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor, String source, String reason, boolean cancelled) { - NewDamageEvent(damagee, damager, proj, null, cause, damage, knockback, ignoreRate, ignoreArmor, source, reason, cancelled); + return NewDamageEvent(damagee, damager, proj, null, cause, damage, knockback, ignoreRate, ignoreArmor, source, reason, cancelled); } - - public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, Location knockbackOrigin, + + public CustomDamageEvent NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, Location knockbackOrigin, DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor, String source, String reason) { - NewDamageEvent(damagee, damager, proj, knockbackOrigin, cause, damage, knockback, ignoreRate, ignoreArmor, source, + return NewDamageEvent(damagee, damager, proj, knockbackOrigin, cause, damage, knockback, ignoreRate, ignoreArmor, source, reason, false); } - public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, Location knockbackOrigin, + public CustomDamageEvent NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, Location knockbackOrigin, DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor, String source, String reason, boolean cancelled) - { - _plugin.getServer().getPluginManager().callEvent(new CustomDamageEvent(damagee, damager, proj, knockbackOrigin, cause, - damage, knockback, ignoreRate, ignoreArmor, source, reason, cancelled)); - } + { + CustomDamageEvent customDamageEvent = new CustomDamageEvent(damagee, damager, proj, knockbackOrigin, cause, + damage, knockback, ignoreRate, ignoreArmor, source, reason, cancelled); + _plugin.getServer().getPluginManager().callEvent(customDamageEvent); + return customDamageEvent; + } @EventHandler(priority = EventPriority.LOW) public void CancelDamageEvent(CustomDamageEvent event) @@ -282,21 +284,21 @@ public class DamageManager extends MiniPlugin if (e.equals(Enchantment.PROTECTION_ENVIRONMENTAL)) event.AddMod("Ench Prot", damagee.getName(), 0.5 * (double)enchants.get(e), false); - else if (e.equals(Enchantment.PROTECTION_FIRE) && + else if (e.equals(Enchantment.PROTECTION_FIRE) && event.GetCause() == DamageCause.FIRE && event.GetCause() == DamageCause.FIRE_TICK && event.GetCause() == DamageCause.LAVA) event.AddMod("Ench Prot", damagee.getName(), 0.5 * (double)enchants.get(e), false); - else if (e.equals(Enchantment.PROTECTION_FALL) && + else if (e.equals(Enchantment.PROTECTION_FALL) && event.GetCause() == DamageCause.FALL) event.AddMod("Ench Prot", damagee.getName(), 0.5 * (double)enchants.get(e), false); - else if (e.equals(Enchantment.PROTECTION_EXPLOSIONS) && + else if (e.equals(Enchantment.PROTECTION_EXPLOSIONS) && event.GetCause() == DamageCause.ENTITY_EXPLOSION) event.AddMod("Ench Prot", damagee.getName(), 0.5 * (double)enchants.get(e), false); - else if (e.equals(Enchantment.PROTECTION_PROJECTILE) && + else if (e.equals(Enchantment.PROTECTION_PROJECTILE) && event.GetCause() == DamageCause.PROJECTILE) event.AddMod("Ench Prot", damagee.getName(), 0.5 * (double)enchants.get(e), false); } @@ -322,7 +324,7 @@ public class DamageManager extends MiniPlugin else if (e.equals(Enchantment.FIRE_ASPECT)) if (_conditionManager != null) - _conditionManager.Factory().Ignite("Ench Fire", event.GetDamageeEntity(), damager, + _conditionManager.Factory().Ignite("Ench Fire", event.GetDamageeEntity(), damager, 4 * (double)enchants.get(e), false, false); } } @@ -351,8 +353,15 @@ public class DamageManager extends MiniPlugin } } } - - //Debug + } + + /* + * Should only be used to debug the damage event + * No modification of the event should take place + */ + @EventHandler (priority = EventPriority.MONITOR) + public void debugDamageEvent(CustomDamageEvent event) + { DisplayDamage(event); }