|
@@ -34,7 +34,6 @@ import com.gmail.nossr50.skills.archery.ArcheryManager;
|
|
import com.gmail.nossr50.skills.axes.AxesManager;
|
|
import com.gmail.nossr50.skills.axes.AxesManager;
|
|
import com.gmail.nossr50.skills.swords.Swords;
|
|
import com.gmail.nossr50.skills.swords.Swords;
|
|
import com.gmail.nossr50.skills.swords.SwordsManager;
|
|
import com.gmail.nossr50.skills.swords.SwordsManager;
|
|
-import com.gmail.nossr50.skills.taming.Taming;
|
|
|
|
import com.gmail.nossr50.skills.taming.TamingManager;
|
|
import com.gmail.nossr50.skills.taming.TamingManager;
|
|
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
|
|
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
|
|
import com.gmail.nossr50.util.ItemUtils;
|
|
import com.gmail.nossr50.util.ItemUtils;
|
|
@@ -75,18 +74,18 @@ public final class CombatUtils {
|
|
}
|
|
}
|
|
|
|
|
|
if (axesManager.canUseAxeMastery()) {
|
|
if (axesManager.canUseAxeMastery()) {
|
|
- dealDamage(target, axesManager.axeMasteryCheck(event.getDamage()), player);
|
|
|
|
|
|
+ axesManager.axeMastery(target);
|
|
}
|
|
}
|
|
|
|
|
|
if (axesManager.canCriticalHit(target)) {
|
|
if (axesManager.canCriticalHit(target)) {
|
|
- dealDamage(target, axesManager.criticalHitCheck(target, event.getDamage()), player);
|
|
|
|
|
|
+ axesManager.criticalHit(target, event.getDamage());
|
|
}
|
|
}
|
|
|
|
|
|
if (axesManager.canImpact(target)) {
|
|
if (axesManager.canImpact(target)) {
|
|
axesManager.impactCheck(target);
|
|
axesManager.impactCheck(target);
|
|
}
|
|
}
|
|
else if (axesManager.canGreaterImpact(target)) {
|
|
else if (axesManager.canGreaterImpact(target)) {
|
|
- dealDamage(target, axesManager.greaterImpactCheck(target, event.getDamage()), player);
|
|
|
|
|
|
+ axesManager.greaterImpact(target);
|
|
}
|
|
}
|
|
|
|
|
|
if (axesManager.canUseSkullSplitter(target)) {
|
|
if (axesManager.canUseSkullSplitter(target)) {
|
|
@@ -105,11 +104,11 @@ public final class CombatUtils {
|
|
}
|
|
}
|
|
|
|
|
|
if (unarmedManager.canUseIronArm()) {
|
|
if (unarmedManager.canUseIronArm()) {
|
|
- dealDamage(target, unarmedManager.ironArmCheck(event.getDamage()), player);
|
|
|
|
|
|
+ unarmedManager.ironArm(target);
|
|
}
|
|
}
|
|
|
|
|
|
if (unarmedManager.canUseBerserk()) {
|
|
if (unarmedManager.canUseBerserk()) {
|
|
- dealDamage(target, unarmedManager.berserkDamage(event.getDamage()), player);
|
|
|
|
|
|
+ unarmedManager.berserkDamage(target, event.getDamage());
|
|
}
|
|
}
|
|
|
|
|
|
if (unarmedManager.canDisarm(target)) {
|
|
if (unarmedManager.canDisarm(target)) {
|
|
@@ -128,22 +127,22 @@ public final class CombatUtils {
|
|
}
|
|
}
|
|
|
|
|
|
if (tamingManager.canUseSharpenedClaws()) {
|
|
if (tamingManager.canUseSharpenedClaws()) {
|
|
- dealDamage(target, Taming.sharpenedClawsBonusDamage, master);
|
|
|
|
|
|
+ tamingManager.sharpenedClaws(target, wolf);
|
|
}
|
|
}
|
|
|
|
|
|
if (tamingManager.canUseGore()) {
|
|
if (tamingManager.canUseGore()) {
|
|
- dealDamage(target, tamingManager.gore(target, event.getDamage()), master);
|
|
|
|
|
|
+ tamingManager.gore(target, event.getDamage(), wolf);
|
|
}
|
|
}
|
|
|
|
|
|
startGainXp(mcMMOPlayer, target, SkillType.TAMING);
|
|
startGainXp(mcMMOPlayer, target, SkillType.TAMING);
|
|
}
|
|
}
|
|
|
|
|
|
- private static void processArcheryCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event, Entity arrow) {
|
|
|
|
|
|
+ private static void processArcheryCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event, Arrow arrow) {
|
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
|
ArcheryManager archeryManager = mcMMOPlayer.getArcheryManager();
|
|
ArcheryManager archeryManager = mcMMOPlayer.getArcheryManager();
|
|
|
|
|
|
if (archeryManager.canSkillShot()) {
|
|
if (archeryManager.canSkillShot()) {
|
|
- dealDamage(target, archeryManager.skillShotCheck(event.getDamage()), player);
|
|
|
|
|
|
+ archeryManager.skillShot(target, event.getDamage(), arrow);
|
|
}
|
|
}
|
|
|
|
|
|
if (target instanceof Player && SkillType.UNARMED.getPVPEnabled()) {
|
|
if (target instanceof Player && SkillType.UNARMED.getPVPEnabled()) {
|
|
@@ -159,7 +158,7 @@ public final class CombatUtils {
|
|
}
|
|
}
|
|
|
|
|
|
if (archeryManager.canDaze(target)) {
|
|
if (archeryManager.canDaze(target)) {
|
|
- dealDamage(target, archeryManager.dazeCheck((Player) target, event.getDamage()), player);
|
|
|
|
|
|
+ archeryManager.daze((Player) target, arrow);
|
|
}
|
|
}
|
|
|
|
|
|
if (!arrow.hasMetadata(mcMMO.infiniteArrowKey) && archeryManager.canTrackArrows()) {
|
|
if (!arrow.hasMetadata(mcMMO.infiniteArrowKey) && archeryManager.canTrackArrows()) {
|
|
@@ -251,13 +250,14 @@ public final class CombatUtils {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (damager.getType() == EntityType.ARROW) {
|
|
else if (damager.getType() == EntityType.ARROW) {
|
|
- LivingEntity shooter = ((Arrow) damager).getShooter();
|
|
|
|
|
|
+ Arrow arrow = (Arrow) damager;
|
|
|
|
+ LivingEntity shooter = arrow.getShooter();
|
|
|
|
|
|
if (shooter != null && shooter instanceof Player && shouldProcessSkill(target, SkillType.ARCHERY)) {
|
|
if (shooter != null && shooter instanceof Player && shouldProcessSkill(target, SkillType.ARCHERY)) {
|
|
Player player = (Player) shooter;
|
|
Player player = (Player) shooter;
|
|
|
|
|
|
if (!Misc.isNPCEntity(player) && Permissions.skillEnabled(player, SkillType.ARCHERY)) {
|
|
if (!Misc.isNPCEntity(player) && Permissions.skillEnabled(player, SkillType.ARCHERY)) {
|
|
- processArcheryCombat(target, player, event, damager);
|
|
|
|
|
|
+ processArcheryCombat(target, player, event, arrow);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -345,56 +345,54 @@ public final class CombatUtils {
|
|
* Attempt to damage target for value dmg with reason CUSTOM
|
|
* Attempt to damage target for value dmg with reason CUSTOM
|
|
*
|
|
*
|
|
* @param target LivingEntity which to attempt to damage
|
|
* @param target LivingEntity which to attempt to damage
|
|
- * @param dmg Amount of damage to attempt to do
|
|
|
|
|
|
+ * @param damage Amount of damage to attempt to do
|
|
*/
|
|
*/
|
|
- public static void dealDamage(LivingEntity target, double dmg) {
|
|
|
|
- dealDamage(target, dmg, EntityDamageEvent.DamageCause.CUSTOM);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * Attempt to damage target for value dmg with reason cause
|
|
|
|
- *
|
|
|
|
- * @param target LivingEntity which to attempt to damage
|
|
|
|
- * @param dmg Amount of damage to attempt to do
|
|
|
|
- * @param cause DamageCause to pass to damage event
|
|
|
|
- */
|
|
|
|
- private static void dealDamage(LivingEntity target, double dmg, DamageCause cause) {
|
|
|
|
|
|
+ public static void dealDamage(LivingEntity target, double damage) {
|
|
if (Config.getInstance().getEventCallbackEnabled()) {
|
|
if (Config.getInstance().getEventCallbackEnabled()) {
|
|
- EntityDamageEvent ede = new FakeEntityDamageEvent(target, cause, dmg);
|
|
|
|
|
|
+ EntityDamageEvent ede = new FakeEntityDamageEvent(target, DamageCause.CUSTOM, damage);
|
|
mcMMO.p.getServer().getPluginManager().callEvent(ede);
|
|
mcMMO.p.getServer().getPluginManager().callEvent(ede);
|
|
|
|
|
|
if (ede.isCancelled()) {
|
|
if (ede.isCancelled()) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- target.damage(ede.getDamage());
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- target.damage(dmg);
|
|
|
|
|
|
+ damage = ede.getDamage();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ target.damage(damage);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Attempt to damage target for value dmg with reason ENTITY_ATTACK with damager attacker
|
|
|
|
+ *
|
|
|
|
+ * @param target LivingEntity which to attempt to damage
|
|
|
|
+ * @param damage Amount of damage to attempt to do
|
|
|
|
+ * @param attacker Player to pass to event as damager
|
|
|
|
+ */
|
|
|
|
+ public static void dealDamage(LivingEntity target, double damage, LivingEntity attacker) {
|
|
|
|
+ dealDamage(target, damage, DamageCause.ENTITY_ATTACK, attacker);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* Attempt to damage target for value dmg with reason ENTITY_ATTACK with damager attacker
|
|
* Attempt to damage target for value dmg with reason ENTITY_ATTACK with damager attacker
|
|
*
|
|
*
|
|
* @param target LivingEntity which to attempt to damage
|
|
* @param target LivingEntity which to attempt to damage
|
|
- * @param dmg Amount of damage to attempt to do
|
|
|
|
|
|
+ * @param damage Amount of damage to attempt to do
|
|
* @param attacker Player to pass to event as damager
|
|
* @param attacker Player to pass to event as damager
|
|
*/
|
|
*/
|
|
- private static void dealDamage(LivingEntity target, double dmg, Player attacker) {
|
|
|
|
|
|
+ public static void dealDamage(LivingEntity target, double damage, DamageCause cause, Entity attacker) {
|
|
if (Config.getInstance().getEventCallbackEnabled()) {
|
|
if (Config.getInstance().getEventCallbackEnabled()) {
|
|
- EntityDamageEvent ede = new FakeEntityDamageByEntityEvent(attacker, target, EntityDamageEvent.DamageCause.ENTITY_ATTACK, dmg);
|
|
|
|
|
|
+ EntityDamageEvent ede = new FakeEntityDamageByEntityEvent(attacker, target, cause, damage);
|
|
mcMMO.p.getServer().getPluginManager().callEvent(ede);
|
|
mcMMO.p.getServer().getPluginManager().callEvent(ede);
|
|
|
|
|
|
if (ede.isCancelled()) {
|
|
if (ede.isCancelled()) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- target.damage(ede.getDamage());
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- target.damage(dmg);
|
|
|
|
|
|
+ damage = ede.getDamage();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ target.damage(damage);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|