mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-04-18 17:46:24 +02:00
Fix some issues from the merge.
This commit is contained in:
parent
1470feb958
commit
0a927768f5
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user