Fixing awkward Bukkit bug related to Flame arrows.

This commit is contained in:
GJ 2013-01-24 21:55:56 -05:00
parent 4639b8b939
commit f5179cdcea
4 changed files with 24 additions and 56 deletions

View File

@ -38,10 +38,10 @@ import com.gmail.nossr50.skills.swords.Swords;
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.unarmed.Unarmed;
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
import com.gmail.nossr50.util.ItemChecks;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.Users;
public class Combat {
@ -58,7 +58,7 @@ public class Combat {
switch (damager.getType()) {
case PLAYER:
Player attacker = (Player) event.getDamager();
Player attacker = (Player) damager;
if (Misc.isNPCPlayer(attacker)) {
return;
@ -184,29 +184,33 @@ public class Combat {
if (targetIsPlayer) {
Player player = (Player) target;
AcrobaticsManager acrobaticsManager = new AcrobaticsManager(player);
SwordsManager swordsManager = new SwordsManager(player);
if (damager instanceof Player) {
if (Swords.pvpEnabled) {
SwordsManager swordsManager = new SwordsManager(player);
swordsManager.counterAttackChecks((LivingEntity) damager, event.getDamage());
}
if (Acrobatics.pvpEnabled) {
AcrobaticsManager acrobaticsManager = new AcrobaticsManager(player);
acrobaticsManager.dodgeCheck(event);
}
if (Unarmed.pvpEnabled && player.getItemInHand().getType() == Material.AIR) {
UnarmedManager unarmedManager = new UnarmedManager(player);
unarmedManager.deflectCheck(event);
}
}
else {
if (Swords.pveEnabled && damager instanceof LivingEntity) {
SwordsManager swordsManager = new SwordsManager(player);
swordsManager.counterAttackChecks((LivingEntity) damager, event.getDamage());
}
if (Acrobatics.pveEnabled) {
if (damager instanceof LightningStrike && Acrobatics.dodgeLightningDisabled) {
return;
if (!(damager instanceof LightningStrike && Acrobatics.dodgeLightningDisabled)) {
AcrobaticsManager acrobaticsManager = new AcrobaticsManager(player);
acrobaticsManager.dodgeCheck(event);
}
acrobaticsManager.dodgeCheck(event);
}
}
}
@ -220,19 +224,11 @@ public class Combat {
* @param event The event to run the archery checks on.
*/
public static void archeryCheck(Player shooter, LivingEntity target, EntityDamageByEntityEvent event) {
if (target instanceof Player) {
Player defender = (Player) target;
if (defender.getItemInHand().getType().equals(Material.AIR)) {
if (configInstance.getUnarmedPVP()) {
UnarmedManager unarmedManager = new UnarmedManager(defender);
unarmedManager.deflectCheck(event);
}
}
if (Misc.isNPCPlayer(shooter)) {
return;
}
ArcheryManager archeryManager = new ArcheryManager(shooter);
archeryManager.skillShot(event);
if (target instanceof Player) {
@ -244,8 +240,7 @@ public class Combat {
}
if (target != shooter) {
PlayerProfile profile = Users.getProfile(shooter);
startGainXp(shooter, profile, target, SkillType.ARCHERY);
startGainXp(shooter, archeryManager.getProfile(), target, SkillType.ARCHERY);
}
}
@ -322,13 +317,7 @@ public class Combat {
}
for (Entity entity : target.getNearbyEntities(2.5, 2.5, 2.5)) {
if (entity instanceof Player) {
if (Misc.isNPCPlayer((Player) entity)) {
continue;
}
}
if (!(entity instanceof LivingEntity)) {
if ((entity instanceof Player && Misc.isNPCPlayer((Player) entity)) || !(entity instanceof LivingEntity) || !shouldBeAffected(attacker, entity)) {
continue;
}
@ -336,10 +325,6 @@ public class Combat {
break;
}
if (!shouldBeAffected(attacker, entity)) {
continue;
}
PlayerAnimationEvent armswing = new PlayerAnimationEvent(attacker);
mcMMO.p.getServer().getPluginManager().callEvent(armswing);
@ -503,19 +488,7 @@ public class Combat {
if (entity instanceof Player) {
Player defender = (Player) entity;
if (!defender.getWorld().getPVP()) {
return false;
}
if (defender == player) {
return false;
}
if (PartyManager.getInstance().inSameParty(player, defender)) {
return false;
}
if (Users.getProfile(defender).getGodMode()) {
if (!defender.getWorld().getPVP() || defender == player || PartyManager.getInstance().inSameParty(player, defender) || Users.getProfile(defender).getGodMode()) {
return false;
}
@ -528,9 +501,7 @@ public class Combat {
}
}
else if (entity instanceof Tameable) {
Tameable pet = (Tameable) entity;
if (Misc.isFriendlyPet(player, pet)) {
if (Misc.isFriendlyPet(player, (Tameable) entity)) {
return false;
}
}

View File

@ -60,11 +60,7 @@ public class ArcheryManager extends SkillManager {
* @param event The event to modify.
*/
public void skillShot(EntityDamageEvent event) {
if (Misc.isNPCPlayer(player) || !Permissions.archeryBonus(player)) {
return;
}
if (skillLevel >= Archery.skillShotIncreaseLevel) {
if (skillLevel >= Archery.skillShotIncreaseLevel && Permissions.archeryBonus(player)) {
SkillShotEventHandler eventHandler = new SkillShotEventHandler(this, event);
eventHandler.calculateDamageBonus();

View File

@ -1,6 +1,7 @@
package com.gmail.nossr50.skills.unarmed;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config;
public class Unarmed {
public static int ironArmMaxBonusDamage = AdvancedConfig.getInstance().getIronArmMaxBonus();
@ -15,5 +16,8 @@ public class Unarmed {
public static double ironGripMaxChance = AdvancedConfig.getInstance().getIronGripChanceMax();
public static int ironGripMaxBonusLevel = AdvancedConfig.getInstance().getIronGripMaxBonusLevel();
public static boolean pvpEnabled = Config.getInstance().getUnarmedPVP();
public static boolean pveEnabled = Config.getInstance().getUnarmedPVE();
public static double berserkDamageModifier = 1.5;
}

View File

@ -49,9 +49,6 @@ public class UnarmedManager extends SkillManager {
* @param event The event to modify
*/
public void deflectCheck(EntityDamageEvent event) {
if (player == null)
return;
if (!Permissions.deflect(player)) {
return;
}