Trying to clean up duplicate checks & whatnot in our listeners.

This commit is contained in:
GJ
2013-01-24 20:10:50 -05:00
parent 7c59621c9e
commit 9cdfebda9a
22 changed files with 215 additions and 348 deletions

View File

@@ -1,5 +1,6 @@
package com.gmail.nossr50.skills.axes;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -21,7 +22,7 @@ public class AxeManager extends SkillManager {
* @param event The event to modify
*/
public void bonusDamage(EntityDamageByEntityEvent event) {
if (Misc.isNPCPlayer(player) || !Permissions.axeBonus(player)) {
if (!Permissions.axeBonus(player)) {
return;
}
@@ -36,20 +37,16 @@ public class AxeManager extends SkillManager {
*
* @param event The event to modify
*/
public void criticalHitCheck(EntityDamageByEntityEvent event) {
if (Misc.isNPCPlayer(player) || !Permissions.criticalHit(player)) {
public void criticalHitCheck(EntityDamageByEntityEvent event, LivingEntity target) {
if (target.isDead() || (target instanceof Tameable && Misc.isFriendlyPet(player, (Tameable) target)) || !Permissions.criticalHit(player)) {
return;
}
CriticalHitEventHandler eventHandler = new CriticalHitEventHandler(this, event);
if (eventHandler.defender instanceof Tameable && Misc.isFriendlyPet(player, (Tameable) eventHandler.defender)) {
return;
}
CriticalHitEventHandler eventHandler = new CriticalHitEventHandler(this, event, target);
double chance = (Axes.criticalHitMaxChance / Axes.criticalHitMaxBonusLevel) * eventHandler.skillModifier;
if (chance > Misc.getRandom().nextInt(activationChance) && !eventHandler.defender.isDead()) {
if (chance > Misc.getRandom().nextInt(activationChance)) {
eventHandler.modifyEventDamage();
eventHandler.sendAbilityMessages();
}
@@ -60,18 +57,14 @@ public class AxeManager extends SkillManager {
*
* @param event The event to modify
*/
public void impact(EntityDamageByEntityEvent event) {
if (Misc.isNPCPlayer(player) || !Permissions.impact(player)) {
public void impact(EntityDamageByEntityEvent event, LivingEntity target) {
if (target.isDead() || !Permissions.impact(player)) {
return;
}
ImpactEventHandler eventHandler = new ImpactEventHandler(this, event);
ImpactEventHandler eventHandler = new ImpactEventHandler(this, event, target);
if (eventHandler.livingDefender == null) {
return;
}
if (Misc.hasArmor(eventHandler.livingDefender)) {
if (Misc.hasArmor(target)) {
eventHandler.damageArmor();
}
else {
@@ -84,12 +77,12 @@ public class AxeManager extends SkillManager {
*
* @param event The event to process
*/
public void skullSplitter(EntityDamageByEntityEvent event) {
if (Misc.isNPCPlayer(player) || !Permissions.skullSplitter(player) || !profile.getAbilityMode(AbilityType.SKULL_SPLIITER)) {
public void skullSplitter(LivingEntity target, int damage) {
if (target.isDead() || !profile.getAbilityMode(AbilityType.SKULL_SPLIITER) || !Permissions.skullSplitter(player)) {
return;
}
SkullSplitterEventHandler eventHandler = new SkullSplitterEventHandler(this, event);
SkullSplitterEventHandler eventHandler = new SkullSplitterEventHandler(player, damage, target);
eventHandler.applyAbilityEffects();
}
}

View File

@@ -1,6 +1,7 @@
package com.gmail.nossr50.skills.axes;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config;
public class Axes {
public static int bonusDamageMaxBonus = AdvancedConfig.getInstance().getBonusDamageAxesBonusMax();
@@ -19,4 +20,7 @@ public class Axes {
public static int greaterImpactBonusDamage = AdvancedConfig.getInstance().getGreaterImpactBonusDamage();
public static int skullSplitterModifier = AdvancedConfig.getInstance().getSkullSplitterModifier();
public static boolean pvpEnabled = Config.getInstance().getAxesPVP();
public static boolean pveEnabled = Config.getInstance().getAxesPVE();
}

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.skills.axes;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -12,13 +12,13 @@ public class CriticalHitEventHandler {
private EntityDamageByEntityEvent event;
private int damage;
protected Entity defender;
protected LivingEntity defender;
protected int skillModifier;
public CriticalHitEventHandler(AxeManager manager, EntityDamageByEntityEvent event) {
public CriticalHitEventHandler(AxeManager manager, EntityDamageByEntityEvent event, LivingEntity defender) {
this.manager = manager;
this.event = event;
this.defender = event.getEntity();
this.defender = defender;
this.damage = event.getDamage();
calculateSkillModifier();

View File

@@ -1,7 +1,6 @@
package com.gmail.nossr50.skills.axes;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -20,20 +19,15 @@ public class ImpactEventHandler {
private EntityEquipment equipment;
private ItemStack[] armorContents;
protected Entity defender;
protected LivingEntity livingDefender;
protected LivingEntity defender;
public ImpactEventHandler(AxeManager manager, EntityDamageByEntityEvent event) {
public ImpactEventHandler(AxeManager manager, EntityDamageByEntityEvent event, LivingEntity defender) {
this.manager = manager;
this.player = manager.getPlayer();
this.event = event;
this.defender = event.getEntity();
if (defender instanceof LivingEntity) {
this.livingDefender = (LivingEntity) defender;
this.equipment = livingDefender.getEquipment();
this.armorContents = equipment.getArmorContents();
}
this.defender = defender;
this.equipment = defender.getEquipment();
this.armorContents = equipment.getArmorContents();
}
protected void damageArmor() {
@@ -70,14 +64,14 @@ public class ImpactEventHandler {
private void handleGreaterImpactEffect() {
event.setDamage(event.getDamage() + Axes.greaterImpactBonusDamage);
livingDefender.setVelocity(player.getLocation().getDirection().normalize().multiply(Axes.greaterImpactKnockbackMultiplier));
defender.setVelocity(player.getLocation().getDirection().normalize().multiply(Axes.greaterImpactKnockbackMultiplier));
}
private void sendAbilityMessge() {
player.sendMessage(LocaleLoader.getString("Axes.Combat.GI.Proc"));
if (livingDefender instanceof Player) {
((Player) livingDefender).sendMessage(LocaleLoader.getString("Axes.Combat.GI.Struck"));
if (defender instanceof Player) {
((Player) defender).sendMessage(LocaleLoader.getString("Axes.Combat.GI.Struck"));
}
}

View File

@@ -2,7 +2,6 @@ package com.gmail.nossr50.skills.axes;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import com.gmail.nossr50.skills.Combat;
import com.gmail.nossr50.skills.SkillType;
@@ -12,10 +11,10 @@ public class SkullSplitterEventHandler {
private LivingEntity target;
private int damage;
protected SkullSplitterEventHandler(AxeManager manager, EntityDamageByEntityEvent event) {
this.player = manager.getPlayer();
this.target = (LivingEntity) event.getEntity();
this.damage = event.getDamage();
protected SkullSplitterEventHandler(Player player, int damage, LivingEntity target) {
this.player = player;
this.target = target;
this.damage = damage;
}
protected void applyAbilityEffects() {