Fix some issues from the merge.

This commit is contained in:
GJ 2012-03-14 02:04:00 -04:00
parent 1470feb958
commit 0a927768f5

View File

@ -22,6 +22,7 @@ import com.gmail.nossr50.events.FakeEntityDamageByEntityEvent;
import com.gmail.nossr50.events.FakeEntityDamageEvent; import com.gmail.nossr50.events.FakeEntityDamageEvent;
import com.gmail.nossr50.locale.mcLocale; import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.party.Party; import com.gmail.nossr50.party.Party;
import com.gmail.nossr50.runnables.GainXp;
import com.gmail.nossr50.skills.Acrobatics; import com.gmail.nossr50.skills.Acrobatics;
import com.gmail.nossr50.skills.Archery; import com.gmail.nossr50.skills.Archery;
import com.gmail.nossr50.skills.Axes; import com.gmail.nossr50.skills.Axes;
@ -36,9 +37,9 @@ public class Combat {
* Apply combat modifiers and process and XP gain. * Apply combat modifiers and process and XP gain.
* *
* @param event The event to run the combat checks on. * @param event The event to run the combat checks on.
* @param pluginx mcMMO plugin instance * @param plugin mcMMO plugin instance
*/ */
public static void combatChecks(EntityDamageByEntityEvent event, mcMMO pluginx) { public static void combatChecks(EntityDamageByEntityEvent event, mcMMO plugin) {
if (event.getDamage() == 0 || event.getEntity().isDead()) { if (event.getDamage() == 0 || event.getEntity().isDead()) {
return; return;
} }
@ -58,15 +59,15 @@ public class Combat {
combatAbilityChecks(attacker); combatAbilityChecks(attacker);
if (ItemChecks.isSword(itemInHand) && mcPermissions.getInstance().swords(attacker)) { if (ItemChecks.isSword(itemInHand) && mcPermissions.getInstance().swords(attacker)) {
if (!pluginx.misc.bleedTracker.contains(target)) { if (!plugin.misc.bleedTracker.contains(target)) {
Swords.bleedCheck(attacker, target, pluginx); Swords.bleedCheck(attacker, target, plugin);
} }
if (PPa.getSerratedStrikesMode()) { if (PPa.getSerratedStrikesMode()) {
applyAbilityAoE(attacker, target, damage, pluginx, SkillType.SWORDS); applyAbilityAoE(attacker, target, damage, plugin, SkillType.SWORDS);
} }
startGainXp(attacker, PPa, target, SkillType.SWORDS, pluginx); startGainXp(attacker, PPa, target, SkillType.SWORDS, plugin);
} }
else if (ItemChecks.isAxe(itemInHand) && mcPermissions.getInstance().axes(attacker)) { else if (ItemChecks.isAxe(itemInHand) && mcPermissions.getInstance().axes(attacker)) {
Axes.axesBonus(attacker, event); Axes.axesBonus(attacker, event);
@ -74,10 +75,10 @@ public class Combat {
Axes.impact(attacker, target, event); Axes.impact(attacker, target, event);
if (PPa.getSkullSplitterMode()) { if (PPa.getSkullSplitterMode()) {
applyAbilityAoE(attacker, target, damage, pluginx, SkillType.AXES); applyAbilityAoE(attacker, target, damage, plugin, SkillType.AXES);
} }
startGainXp(attacker, PPa, target, SkillType.AXES, pluginx); startGainXp(attacker, PPa, target, SkillType.AXES, plugin);
} }
else if (itemInHand.getType().equals(Material.AIR) && mcPermissions.getInstance().unarmed(attacker)) { else if (itemInHand.getType().equals(Material.AIR) && mcPermissions.getInstance().unarmed(attacker)) {
Unarmed.unarmedBonus(attacker, event); Unarmed.unarmedBonus(attacker, event);
@ -90,7 +91,7 @@ public class Combat {
Unarmed.disarmProcCheck(attacker, (Player) target); Unarmed.disarmProcCheck(attacker, (Player) target);
} }
startGainXp(attacker, PPa, target, SkillType.UNARMED, pluginx); startGainXp(attacker, PPa, target, SkillType.UNARMED, plugin);
} }
else if (itemInHand.getType().equals(Material.BONE) && mcPermissions.getInstance().taming(attacker) && targetType.equals(EntityType.WOLF)) { else if (itemInHand.getType().equals(Material.BONE) && mcPermissions.getInstance().taming(attacker) && targetType.equals(EntityType.WOLF)) {
Wolf wolf = (Wolf) target; Wolf wolf = (Wolf) target;
@ -120,15 +121,14 @@ public class Combat {
if (mcPermissions.getInstance().taming(master)) { if (mcPermissions.getInstance().taming(master)) {
Taming.fastFoodService(PPo, wolf, event); Taming.fastFoodService(PPo, wolf, event);
Taming.sharpenedClaws(PPo, event); Taming.sharpenedClaws(PPo, event);
Taming.gore(PPo, event, master, pluginx); Taming.gore(PPo, event, master, plugin);
startGainXp(master, PPo, target, SkillType.TAMING, plugin);
startGainXp(master, PPo, target, SkillType.TAMING, pluginx);
} }
} }
break; break;
case ARROW: case ARROW:
archeryCheck((EntityDamageByEntityEvent)event, pluginx); archeryCheck((EntityDamageByEntityEvent) event, plugin);
break; break;
default: default:
@ -235,7 +235,7 @@ public class Combat {
* @param dmg Amount of damage to attempt to do * @param dmg Amount of damage to attempt to do
* @param cause DamageCause to pass to damage event * @param cause DamageCause to pass to damage event
*/ */
public static void dealDamage(LivingEntity target, int dmg, DamageCause cause) { private static void dealDamage(LivingEntity target, int dmg, DamageCause cause) {
if (LoadProperties.eventCallback) { if (LoadProperties.eventCallback) {
EntityDamageEvent ede = (EntityDamageEvent) new FakeEntityDamageEvent(target, cause, dmg); EntityDamageEvent ede = (EntityDamageEvent) new FakeEntityDamageEvent(target, cause, dmg);
Bukkit.getPluginManager().callEvent(ede); Bukkit.getPluginManager().callEvent(ede);
@ -308,12 +308,7 @@ public class Combat {
if (tamer instanceof Player) { if (tamer instanceof Player) {
Player owner = (Player) tamer; Player owner = (Player) tamer;
//Reasons why the target shouldn't be hit if (owner.equals(attacker) || Party.getInstance().inSameParty(attacker, owner)) {
if (owner.equals(attacker)) {
continue;
}
if (Party.getInstance().inSameParty(attacker, owner)) {
continue; continue;
} }
} }
@ -405,7 +400,7 @@ public class Combat {
} }
else if (!pluginx.misc.mobSpawnerList.contains(target.getEntityId())) { else if (!pluginx.misc.mobSpawnerList.contains(target.getEntityId())) {
if (target instanceof Animals) { if (target instanceof Animals) {
baseXP = 10 * LoadProperties.animalXP; baseXP = LoadProperties.animalXP; //I'm assuming the 10x multiplier here was accidental...
} }
else else
{ {
@ -415,88 +410,66 @@ public class Combat {
case BLAZE: case BLAZE:
baseXP = LoadProperties.blazeXP; baseXP = LoadProperties.blazeXP;
break; break;
case CAVE_SPIDER: case CAVE_SPIDER:
baseXP = LoadProperties.cavespiderXP; baseXP = LoadProperties.cavespiderXP;
break; break;
case CREEPER: case CREEPER:
baseXP = LoadProperties.creeperXP; baseXP = LoadProperties.creeperXP;
break; break;
case ENDER_DRAGON: case ENDER_DRAGON:
baseXP = LoadProperties.enderdragonXP; baseXP = LoadProperties.enderdragonXP;
break; break;
case ENDERMAN: case ENDERMAN:
baseXP = LoadProperties.endermanXP; baseXP = LoadProperties.endermanXP;
break; break;
case GHAST: case GHAST:
baseXP = LoadProperties.ghastXP; baseXP = LoadProperties.ghastXP;
break; break;
case MAGMA_CUBE: case MAGMA_CUBE:
baseXP = LoadProperties.magmacubeXP; baseXP = LoadProperties.magmacubeXP;
break; break;
case PIG_ZOMBIE: case PIG_ZOMBIE:
baseXP = LoadProperties.pigzombieXP; baseXP = LoadProperties.pigzombieXP;
break; break;
case SILVERFISH: case SILVERFISH:
baseXP = LoadProperties.silverfishXP; baseXP = LoadProperties.silverfishXP;
break; break;
case SKELETON: case SKELETON:
baseXP = LoadProperties.skeletonXP; baseXP = LoadProperties.skeletonXP;
break; break;
case SLIME: case SLIME:
baseXP = LoadProperties.slimeXP; baseXP = LoadProperties.slimeXP;
break; break;
case SPIDER: case SPIDER:
baseXP = LoadProperties.spiderXP; baseXP = LoadProperties.spiderXP;
break; break;
case ZOMBIE: case ZOMBIE:
baseXP = LoadProperties.zombieXP; baseXP = LoadProperties.zombieXP;
break; break;
default:
break;
} }
} }
baseXP *= 10; baseXP *= 10;
} }
if (baseXP != 0) if (baseXP != 0) {
Bukkit.getScheduler().scheduleSyncDelayedTask(pluginx, new GainXp(attacker, PP, skillType, baseXP, target), 0); Bukkit.getScheduler().scheduleSyncDelayedTask(pluginx, new GainXp(attacker, PP, skillType, baseXP, target), 0);
}
} }
} }
class GainXp implements Runnable
{
private Player player = null;
private PlayerProfile PP = null;
private double baseXp = 0;
private SkillType skillType = null;
private LivingEntity target = null;
private int baseHealth = 0;
public GainXp(Player player, PlayerProfile PP, SkillType skillType, double baseXp, LivingEntity target)
{
this.player = player;
this.PP = PP;
this.skillType = skillType;
this.baseXp = baseXp;
this.target = target;
baseHealth = target.getHealth();
}
@Override
public void run()
{
int health = target.getHealth();
int damage = baseHealth - health;
//May avoid negative xp, we don't know what other plugins do with the entity health
if (damage <= 0)
return;
//Don't reward the player for overkills
if (health < 0)
damage += health;
PP.addXP(skillType, (int) (damage * baseXp), player);
Skills.XpCheckSkill(skillType, player);
}
}