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

@ -14,4 +14,6 @@ public class Unarmed {
public static double ironGripMaxChance = AdvancedConfig.getInstance().getIronGripChanceMax();
public static int ironGripMaxBonusLevel = AdvancedConfig.getInstance().getIronGripMaxBonusLevel();
public static double berserkDamageModifier = 1.5;
}

View File

@ -1,8 +1,10 @@
package com.gmail.nossr50.skills.unarmed;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageEvent;
import com.gmail.nossr50.skills.AbilityType;
import com.gmail.nossr50.skills.SkillManager;
import com.gmail.nossr50.skills.SkillType;
import com.gmail.nossr50.util.Misc;
@ -18,12 +20,13 @@ public class UnarmedManager extends SkillManager {
*
* @param defender The defending player
*/
public void disarmCheck(Player defender) {
if (Misc.isNPCPlayer(player) || !Permissions.disarm(player)) {
public void disarmCheck(LivingEntity defender) {
if (!(defender instanceof Player) || !Permissions.disarm(player)) {
return;
}
DisarmEventHandler eventHandler = new DisarmEventHandler(this, defender);
Player defendingPlayer = (Player) defender;
DisarmEventHandler eventHandler = new DisarmEventHandler(this, defendingPlayer);
if (eventHandler.isHoldingItem()) {
eventHandler.calculateSkillModifier();
@ -32,7 +35,7 @@ public class UnarmedManager extends SkillManager {
if (chance > Unarmed.disarmMaxChance) chance = (float) Unarmed.disarmMaxChance;
if (chance > Misc.getRandom().nextInt(activationChance)) {
if (!hasIronGrip(defender)) {
if (!hasIronGrip(defendingPlayer)) {
eventHandler.handleDisarm();
}
}
@ -64,15 +67,18 @@ public class UnarmedManager extends SkillManager {
}
}
public void berserkDamage(EntityDamageEvent event) {
if (!profile.getAbilityMode(AbilityType.BERSERK) || !Permissions.berserk(player)) {
event.setDamage((int) (event.getDamage() * Unarmed.berserkDamageModifier));
}
}
/**
* Handle Unarmed bonus damage.
*
* @param event The event to modify.
*/
public void bonusDamage(EntityDamageEvent event) {
if (player == null)
return;
if (!Permissions.unarmedBonus(player)) {
return;
}
@ -90,10 +96,7 @@ public class UnarmedManager extends SkillManager {
* @return true if the defender was not disarmed, false otherwise
*/
private boolean hasIronGrip(Player defender) {
if (defender == null)
return false;
if (!Permissions.ironGrip(defender)) {
if (Misc.isNPCEntity(defender) || !Permissions.ironGrip(defender)) {
return false;
}