mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-28 03:34:43 +02:00
Trying to clean up duplicate checks & whatnot in our listeners.
This commit is contained in:
@ -28,11 +28,15 @@ import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.party.PartyManager;
|
||||
import com.gmail.nossr50.runnables.BleedTimer;
|
||||
import com.gmail.nossr50.runnables.GainXp;
|
||||
import com.gmail.nossr50.skills.acrobatics.Acrobatics;
|
||||
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
|
||||
import com.gmail.nossr50.skills.archery.Archery;
|
||||
import com.gmail.nossr50.skills.archery.ArcheryManager;
|
||||
import com.gmail.nossr50.skills.axes.AxeManager;
|
||||
import com.gmail.nossr50.skills.axes.Axes;
|
||||
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.UnarmedManager;
|
||||
import com.gmail.nossr50.util.ItemChecks;
|
||||
@ -48,29 +52,28 @@ public class Combat {
|
||||
*
|
||||
* @param event The event to run the combat checks on.
|
||||
*/
|
||||
public static void combatChecks(EntityDamageByEntityEvent event) {
|
||||
if (event.getDamage() == 0 || event.getEntity().isDead()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Entity damager = event.getDamager();
|
||||
LivingEntity target = (LivingEntity) event.getEntity();
|
||||
|
||||
public static void combatChecks(EntityDamageByEntityEvent event, Entity damager, LivingEntity target) {
|
||||
boolean targetIsPlayer = (target.getType() == EntityType.PLAYER);
|
||||
boolean targetIsTamedPet = (target instanceof Tameable) ? ((Tameable) target).isTamed() : false;
|
||||
|
||||
switch (damager.getType()) {
|
||||
case PLAYER:
|
||||
Player attacker = (Player) event.getDamager();
|
||||
ItemStack itemInHand = attacker.getItemInHand();
|
||||
|
||||
if (ItemChecks.isSword(itemInHand)) {
|
||||
if (Misc.isNPCPlayer(attacker)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack heldItem = attacker.getItemInHand();
|
||||
Material heldItemType = heldItem.getType();
|
||||
|
||||
if (ItemChecks.isSword(heldItem)) {
|
||||
if (targetIsPlayer || targetIsTamedPet) {
|
||||
if (!configInstance.getSwordsPVP()) {
|
||||
if (!Swords.pvpEnabled) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!configInstance.getSwordsPVE()) {
|
||||
else if (!Swords.pveEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -82,13 +85,13 @@ public class Combat {
|
||||
|
||||
startGainXp(attacker, swordsManager.getProfile(), target, SkillType.SWORDS);
|
||||
}
|
||||
else if (ItemChecks.isAxe(itemInHand) && Permissions.axes(attacker)) {
|
||||
else if (ItemChecks.isAxe(heldItem)) {
|
||||
if (targetIsPlayer || targetIsTamedPet) {
|
||||
if (!configInstance.getAxesPVP()) {
|
||||
if (!Axes.pvpEnabled) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!configInstance.getAxesPVE()) {
|
||||
else if (!Axes.pveEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -96,13 +99,13 @@ public class Combat {
|
||||
|
||||
AxeManager axeManager = new AxeManager(attacker);
|
||||
axeManager.bonusDamage(event);
|
||||
axeManager.criticalHitCheck(event);
|
||||
axeManager.impact(event);
|
||||
axeManager.skullSplitter(event);
|
||||
axeManager.criticalHitCheck(event, target);
|
||||
axeManager.impact(event, target);
|
||||
axeManager.skullSplitter(target, event.getDamage());
|
||||
|
||||
startGainXp(attacker, axeManager.getProfile(), target, SkillType.AXES);
|
||||
}
|
||||
else if (itemInHand.getType() == Material.AIR && Permissions.unarmed(attacker)) {
|
||||
else if (heldItemType == Material.AIR) {
|
||||
if (targetIsPlayer || targetIsTamedPet) {
|
||||
if (!configInstance.getUnarmedPVP()) {
|
||||
return;
|
||||
@ -115,20 +118,13 @@ public class Combat {
|
||||
Skills.abilityCheck(attacker, SkillType.UNARMED);
|
||||
|
||||
UnarmedManager unarmedManager = new UnarmedManager(attacker);
|
||||
|
||||
unarmedManager.bonusDamage(event);
|
||||
|
||||
if (unarmedManager.getProfile().getAbilityMode(AbilityType.BERSERK) && Permissions.berserk(attacker)) {
|
||||
event.setDamage((int) (event.getDamage() * 1.5));
|
||||
}
|
||||
|
||||
if (targetIsPlayer) {
|
||||
unarmedManager.disarmCheck((Player) target);
|
||||
}
|
||||
unarmedManager.berserkDamage(event);
|
||||
unarmedManager.disarmCheck(target);
|
||||
|
||||
startGainXp(attacker, unarmedManager.getProfile(), target, SkillType.UNARMED);
|
||||
}
|
||||
else if (itemInHand.getType() == Material.BONE && target instanceof Tameable) {
|
||||
else if (heldItemType == Material.BONE && target instanceof Tameable) {
|
||||
TamingManager tamingManager = new TamingManager(attacker);
|
||||
tamingManager.beastLore(target);
|
||||
event.setCancelled(true);
|
||||
@ -143,21 +139,20 @@ public class Combat {
|
||||
Player master = (Player) wolf.getOwner();
|
||||
|
||||
if (targetIsPlayer || targetIsTamedPet) {
|
||||
if (!configInstance.getTamingPVP()) {
|
||||
if (!Taming.pvpEnabled) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!configInstance.getTamingPVE()) {
|
||||
else if (!Taming.pveEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
TamingManager tamingManager = new TamingManager(master);
|
||||
|
||||
tamingManager.fastFoodService(wolf, event.getDamage());
|
||||
tamingManager.sharpenedClaws(event);
|
||||
tamingManager.gore(event);
|
||||
|
||||
startGainXp(master, Users.getProfile(master), target, SkillType.TAMING);
|
||||
startGainXp(master, tamingManager.getProfile(), target, SkillType.TAMING);
|
||||
}
|
||||
|
||||
break;
|
||||
@ -165,16 +160,17 @@ public class Combat {
|
||||
case ARROW:
|
||||
LivingEntity shooter = ((Arrow) damager).getShooter();
|
||||
|
||||
//TODO: Is there a reason we're breaking here instead of returning?
|
||||
if (shooter == null || shooter.getType() != EntityType.PLAYER) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (targetIsPlayer || targetIsTamedPet) {
|
||||
if (!configInstance.getArcheryPVP()) {
|
||||
if (!Archery.pvpEnabled) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!configInstance.getArcheryPVE()) {
|
||||
else if (!Archery.pveEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -188,29 +184,29 @@ public class Combat {
|
||||
if (targetIsPlayer) {
|
||||
Player player = (Player) target;
|
||||
|
||||
AcrobaticsManager acroManager = new AcrobaticsManager(player);
|
||||
AcrobaticsManager acrobaticsManager = new AcrobaticsManager(player);
|
||||
SwordsManager swordsManager = new SwordsManager(player);
|
||||
|
||||
if (damager.getType() == EntityType.PLAYER) {
|
||||
if (configInstance.getSwordsPVP()) {
|
||||
if (damager instanceof Player) {
|
||||
if (Swords.pvpEnabled) {
|
||||
swordsManager.counterAttackChecks((LivingEntity) damager, event.getDamage());
|
||||
}
|
||||
|
||||
if (configInstance.getAcrobaticsPVP()) {
|
||||
acroManager.dodgeCheck(event);
|
||||
if (Acrobatics.pvpEnabled) {
|
||||
acrobaticsManager.dodgeCheck(event);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (configInstance.getSwordsPVE() && damager instanceof LivingEntity) {
|
||||
if (Swords.pveEnabled && damager instanceof LivingEntity) {
|
||||
swordsManager.counterAttackChecks((LivingEntity) damager, event.getDamage());
|
||||
}
|
||||
|
||||
if (configInstance.getAcrobaticsPVE()) {
|
||||
if (damager instanceof LightningStrike && configInstance.getDodgeLightningDisabled()) {
|
||||
if (Acrobatics.pveEnabled) {
|
||||
if (damager instanceof LightningStrike && Acrobatics.dodgeLightningDisabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
acroManager.dodgeCheck(event);
|
||||
acrobaticsManager.dodgeCheck(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -532,9 +532,6 @@ public class Skills {
|
||||
* @param xp the amount of XP to gain
|
||||
*/
|
||||
public static void xpProcessing(Player player, PlayerProfile profile, SkillType type, int xp) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (type.getPermissions(player)) {
|
||||
if (Users.getPlayer(player) == null)
|
||||
return;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.gmail.nossr50.skills.acrobatics;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
|
||||
public class Acrobatics {
|
||||
public static double dodgeMaxChance = AdvancedConfig.getInstance().getDodgeChanceMax();
|
||||
@ -9,9 +10,16 @@ public class Acrobatics {
|
||||
|
||||
public static double rollMaxChance = AdvancedConfig.getInstance().getRollChanceMax();
|
||||
public static int rollMaxBonusLevel = AdvancedConfig.getInstance().getRollMaxBonusLevel();
|
||||
|
||||
public static double gracefulRollMaxChance = AdvancedConfig.getInstance().getGracefulRollChanceMax();
|
||||
public static int gracefulRollMaxBonusLevel = AdvancedConfig.getInstance().getGracefulRollMaxBonusLevel();
|
||||
|
||||
public static int rollXpModifier = AdvancedConfig.getInstance().getRollXPModifier();
|
||||
public static int fallXpModifier = AdvancedConfig.getInstance().getFallXPModifier();
|
||||
|
||||
public static boolean pvpEnabled = Config.getInstance().getAcrobaticsPVP();
|
||||
public static boolean pveEnabled = Config.getInstance().getAcrobaticsPVE();
|
||||
|
||||
public static boolean afkLevelingDisabled = Config.getInstance().getAcrobaticsAFKDisabled();
|
||||
public static boolean dodgeLightningDisabled = Config.getInstance().getDodgeLightningDisabled();
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ package com.gmail.nossr50.skills.acrobatics;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.skills.SkillType;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
@ -20,14 +19,6 @@ public class AcrobaticsManager extends SkillManager {
|
||||
* @param event The event to check
|
||||
*/
|
||||
public void rollCheck(EntityDamageEvent event) {
|
||||
if (Misc.isNPCPlayer(player) || !Permissions.roll(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Config.getInstance().getAcrobaticsAFKDisabled() && player.isInsideVehicle()) {
|
||||
return;
|
||||
}
|
||||
|
||||
RollEventHandler eventHandler = new RollEventHandler(this, event);
|
||||
|
||||
double chance;
|
||||
|
@ -9,6 +9,7 @@ import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
|
||||
public class Archery {
|
||||
@ -25,6 +26,9 @@ public class Archery {
|
||||
public static double dazeMaxBonus = AdvancedConfig.getInstance().getDazeBonusMax();
|
||||
public static int dazeModifier = AdvancedConfig.getInstance().getDazeModifier();
|
||||
|
||||
public static boolean pvpEnabled = Config.getInstance().getArcheryPVP();
|
||||
public static boolean pveEnabled = Config.getInstance().getArcheryPVE();
|
||||
|
||||
protected static void incrementTrackerValue(LivingEntity livingEntity) {
|
||||
for (TrackedEntity trackedEntity : trackedEntities) {
|
||||
if (trackedEntity.getLivingEntity().getEntityId() == livingEntity.getEntityId()) {
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -15,6 +15,7 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Sheep;
|
||||
import org.bukkit.entity.Skeleton;
|
||||
import org.bukkit.entity.Skeleton.SkeletonType;
|
||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||
import org.bukkit.event.player.PlayerFishEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.material.MaterialData;
|
||||
@ -50,11 +51,20 @@ public class Fishing {
|
||||
public static int shakeChanceLevel5 = AdvancedConfig.getInstance().getShakeChanceRank5();
|
||||
public static int shakeUnlockLevel = AdvancedConfig.getInstance().getShakeUnlockLevel();
|
||||
|
||||
public static int fishermanDietRankChangeLevel = AdvancedConfig.getInstance().getFishermanDietRankChange();
|
||||
public static int fishermanDietMaxLevel = fishermanDietRankChangeLevel * 5;
|
||||
public static int fishermansDietRankLevel1 = AdvancedConfig.getInstance().getFishermanDietRankChange();
|
||||
public static int fishermansDietRankLevel2 = fishermansDietRankLevel1 * 2;
|
||||
public static int fishermansDietMaxLevel = fishermansDietRankLevel1 * 5;
|
||||
|
||||
public static int magicHunterMultiplier = AdvancedConfig.getInstance().getFishingMagicMultiplier();
|
||||
|
||||
public static void fishermansDiet(Player player, int rankChange, FoodLevelChangeEvent event) {
|
||||
if (!Permissions.fishermansDiet(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Skills.handleFoodSkills(player, SkillType.FISHING, event, fishermansDietRankLevel1, fishermansDietMaxLevel, rankChange);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the player's current fishing loot tier.
|
||||
*
|
||||
|
@ -49,7 +49,7 @@ public class FishingCommand extends SkillCommand {
|
||||
shakeChanceLucky = shakeStrings[1];
|
||||
|
||||
//FISHERMAN'S DIET
|
||||
fishermansDietRank = calculateRank(Fishing.fishermanDietMaxLevel, Fishing.fishermanDietRankChangeLevel);
|
||||
fishermansDietRank = calculateRank(Fishing.fishermansDietMaxLevel, Fishing.fishermansDietRankLevel1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -83,10 +83,6 @@ public class MiningManager extends SkillManager{
|
||||
* @param event Event whose explosion damage is being reduced
|
||||
*/
|
||||
public void demolitionsExpertise(EntityDamageEvent event) {
|
||||
if (Misc.isNPCPlayer(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
DemoltionsExpertiseEventHandler eventHandler = new DemoltionsExpertiseEventHandler(this, event);
|
||||
|
||||
eventHandler.calculateDamageModifier();
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.gmail.nossr50.skills.swords;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
|
||||
public class Swords {
|
||||
public static double bleedMaxChance = AdvancedConfig.getInstance().getBleedChanceMax();
|
||||
@ -14,4 +15,8 @@ public class Swords {
|
||||
|
||||
public static int serratedStrikesModifier = AdvancedConfig.getInstance().getSerratedStrikesModifier();
|
||||
public static int serratedStrikesBleedTicks = AdvancedConfig.getInstance().getSerratedStrikesTicks();
|
||||
|
||||
public static boolean pvpEnabled = Config.getInstance().getSwordsPVP();
|
||||
public static boolean pveEnabled = Config.getInstance().getSwordsPVE();
|
||||
}
|
||||
|
||||
|
@ -21,9 +21,6 @@ public class SwordsManager extends SkillManager {
|
||||
* @param defender The defending entity
|
||||
*/
|
||||
public void bleedCheck(LivingEntity defender) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (!Permissions.swordsBleed(player)) {
|
||||
return;
|
||||
}
|
||||
@ -42,9 +39,6 @@ public class SwordsManager extends SkillManager {
|
||||
}
|
||||
|
||||
public void counterAttackChecks(LivingEntity attacker, int damage) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (!Permissions.counterAttack(player)) {
|
||||
return;
|
||||
}
|
||||
@ -65,7 +59,7 @@ public class SwordsManager extends SkillManager {
|
||||
}
|
||||
|
||||
public void serratedStrikes(LivingEntity target, int damage) {
|
||||
if (Misc.isNPCPlayer(player) || !Permissions.serratedStrikes(player) || !profile.getAbilityMode(AbilityType.SERRATED_STRIKES)) {
|
||||
if (!profile.getAbilityMode(AbilityType.SERRATED_STRIKES) || !Permissions.serratedStrikes(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -18,9 +18,6 @@ public class EnvironmentallyAwareEventHandler {
|
||||
}
|
||||
|
||||
protected void teleportWolf() {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (event.getDamage() > wolf.getHealth()) {
|
||||
return;
|
||||
}
|
||||
@ -29,9 +26,6 @@ public class EnvironmentallyAwareEventHandler {
|
||||
}
|
||||
|
||||
protected void sendAbilityMessage() {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
player.sendMessage(LocaleLoader.getString("Taming.Listener.Wolf"));
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.gmail.nossr50.skills.taming;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
|
||||
public class Taming {
|
||||
public static int environmentallyAwareUnlockLevel = AdvancedConfig.getInstance().getEnviromentallyAwareUnlock();
|
||||
@ -21,4 +22,10 @@ public class Taming {
|
||||
|
||||
public static int thickFurUnlockLevel = AdvancedConfig.getInstance().getThickFurUnlock();
|
||||
public static int thickFurModifier = AdvancedConfig.getInstance().getThickFurModifier();
|
||||
|
||||
public static int wolfXP = Config.getInstance().getTamingXPWolf();
|
||||
public static int ocelotXP = Config.getInstance().getTamingXPOcelot();
|
||||
|
||||
public static boolean pvpEnabled = Config.getInstance().getTamingPVP();
|
||||
public static boolean pveEnabled = Config.getInstance().getTamingPVE();
|
||||
}
|
||||
|
@ -6,11 +6,14 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Wolf;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.entity.EntityTameEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.skills.SkillManager;
|
||||
import com.gmail.nossr50.skills.SkillType;
|
||||
import com.gmail.nossr50.skills.Skills;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
|
||||
@ -22,6 +25,30 @@ public class TamingManager extends SkillManager {
|
||||
this.configInstance = Config.getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* Award XP for taming.
|
||||
*
|
||||
* @param event The event to award XP for
|
||||
*/
|
||||
public void awardTamingXP(EntityTameEvent event) {
|
||||
if (mcMMO.placeStore.isSpawnedMob(event.getEntity())) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.getEntityType()) {
|
||||
case WOLF:
|
||||
Skills.xpProcessing(player, profile, SkillType.TAMING, Taming.wolfXP);
|
||||
break;
|
||||
|
||||
case OCELOT:
|
||||
Skills.xpProcessing(player, profile, SkillType.TAMING, Taming.ocelotXP);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the Fast Food Service ability.
|
||||
*
|
||||
@ -29,14 +56,7 @@ public class TamingManager extends SkillManager {
|
||||
* @param damage The damage being absorbed by the wolf
|
||||
*/
|
||||
public void fastFoodService(Wolf wolf, int damage) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (!Permissions.fastFoodService(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (skillLevel >= Taming.fastFoodServiceUnlockLevel) {
|
||||
if (skillLevel >= Taming.fastFoodServiceUnlockLevel && Permissions.fastFoodService(player)) {
|
||||
if (Misc.getRandom().nextInt(activationChance) < Taming.fastFoodServiceActivationChance) {
|
||||
FastFoodServiceEventHandler eventHandler = new FastFoodServiceEventHandler(wolf);
|
||||
|
||||
@ -51,14 +71,7 @@ public class TamingManager extends SkillManager {
|
||||
* @param event The event to modify
|
||||
*/
|
||||
public void sharpenedClaws(EntityDamageEvent event) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (!Permissions.sharpenedClaws(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (skillLevel >= Taming.sharpenedClawsUnlockLevel) {
|
||||
if (skillLevel >= Taming.sharpenedClawsUnlockLevel && Permissions.sharpenedClaws(player)) {
|
||||
SharpenedClawsEventHandler eventHandler = new SharpenedClawsEventHandler(event);
|
||||
|
||||
eventHandler.modifyEventDamage();
|
||||
@ -71,9 +84,6 @@ public class TamingManager extends SkillManager {
|
||||
* @param event The event to modify
|
||||
*/
|
||||
public void gore(EntityDamageEvent event) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (!Permissions.gore(player)) {
|
||||
return;
|
||||
}
|
||||
@ -143,15 +153,11 @@ public class TamingManager extends SkillManager {
|
||||
* @param livingEntity The entity to examine
|
||||
*/
|
||||
public void beastLore(LivingEntity livingEntity) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (!Permissions.beastLore(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
BeastLoreEventHandler eventHandler = new BeastLoreEventHandler(player, livingEntity);
|
||||
|
||||
eventHandler.sendInspectMessage();
|
||||
}
|
||||
|
||||
@ -193,14 +199,7 @@ public class TamingManager extends SkillManager {
|
||||
* @param cause The damage cause of the event
|
||||
*/
|
||||
private void environmentallyAware(EntityDamageEvent event, DamageCause cause) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (!Permissions.environmentallyAware(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (skillLevel >= Taming.environmentallyAwareUnlockLevel) {
|
||||
if (skillLevel >= Taming.environmentallyAwareUnlockLevel && Permissions.environmentallyAware(player)) {
|
||||
EnvironmentallyAwareEventHandler eventHandler = new EnvironmentallyAwareEventHandler(this, event);
|
||||
|
||||
switch (cause) {
|
||||
@ -228,16 +227,8 @@ public class TamingManager extends SkillManager {
|
||||
* @param cause The damage cause of the event
|
||||
*/
|
||||
private void thickFur(EntityDamageEvent event, DamageCause cause) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (!Permissions.thickFur(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (skillLevel >= Taming.thickFurUnlockLevel) {
|
||||
if (skillLevel >= Taming.thickFurUnlockLevel && Permissions.thickFur(player)) {
|
||||
ThickFurEventHandler eventHandler = new ThickFurEventHandler(event, cause);
|
||||
|
||||
eventHandler.modifyEventDamage();
|
||||
}
|
||||
}
|
||||
@ -248,16 +239,8 @@ public class TamingManager extends SkillManager {
|
||||
* @param event The event to modify
|
||||
*/
|
||||
private void shockProof(EntityDamageEvent event) {
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (!Permissions.shockProof(player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (skillLevel >= Taming.shockProofUnlockLevel) {
|
||||
if (skillLevel >= Taming.shockProofUnlockLevel && Permissions.shockProof(player)) {
|
||||
ShockProofEventHandler eventHandler = new ShockProofEventHandler(event);
|
||||
|
||||
eventHandler.modifyEventDamage();
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user