From 371a3ceec79236093c3ab118a7e62e27a6a1ccf9 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Sun, 3 Feb 2019 13:17:42 -0800 Subject: [PATCH] Unarmed now has some spam detection Fixed an error in the skillranks.yml file as well --- Changelog.txt | 1 + .../gmail/nossr50/skills/taming/Taming.java | 3 --- .../nossr50/skills/taming/TamingManager.java | 3 ++- .../gmail/nossr50/skills/unarmed/Unarmed.java | 3 ++- .../skills/unarmed/UnarmedManager.java | 4 ++++ .../nossr50/util/skills/CombatUtils.java | 23 ++++++++++++------- src/main/resources/skillranks.yml | 2 +- 7 files changed, 25 insertions(+), 14 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index b4f778059..096d33833 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -8,6 +8,7 @@ Key: - Removal Version 2.1.7 Fixed an almost 6 year old bug where Salvage materials did not have a defined material count so they defaulted to 2 (which could lead to shovels giving back more diamonds than normal) + Added spam detection for Unarmed's bonus damage and disarm (API) Added addXpFromBlocks to ExperienceAPI to help make adding XP for a player easier (API) Added addXpFromBlocksBySkill to ExperienceAPI to help make adding XP for a player easier (API) Added addXpFromBlock to ExperienceAPI to help make adding XP for a player easier diff --git a/src/main/java/com/gmail/nossr50/skills/taming/Taming.java b/src/main/java/com/gmail/nossr50/skills/taming/Taming.java index dee6f36a3..1b135c2cc 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/Taming.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/Taming.java @@ -12,13 +12,10 @@ public class Taming { public static int goreBleedTicks = 2; //Equivalent to rank 1 in Rupture public static double goreModifier = AdvancedConfig.getInstance().getGoreModifier(); - public static int sharpenedClawsUnlockLevel = RankUtils.getUnlockLevel(SubSkillType.TAMING_SHARPENED_CLAWS); public static double sharpenedClawsBonusDamage = AdvancedConfig.getInstance().getSharpenedClawsBonus(); - public static int shockProofUnlockLevel = RankUtils.getUnlockLevel(SubSkillType.TAMING_SHOCK_PROOF); public static double shockProofModifier = AdvancedConfig.getInstance().getShockProofModifier(); - public static int thickFurUnlockLevel = RankUtils.getUnlockLevel(SubSkillType.TAMING_THICK_FUR); public static double thickFurModifier = AdvancedConfig.getInstance().getThickFurModifier(); public static boolean canPreventDamage(Tameable pet, AnimalTamer owner) { diff --git a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java index b2d5a0ce9..d6c21e6b1 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java @@ -65,7 +65,8 @@ public class TamingManager extends SkillManager { } public boolean canUseSharpenedClaws() { - return getSkillLevel() >= Taming.sharpenedClawsUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_SHARPENED_CLAWS); + return RankUtils.hasUnlockedSubskill(getPlayer(), SubSkillType.TAMING_SHARPENED_CLAWS) + && Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_SHARPENED_CLAWS); } public boolean canUseGore() { diff --git a/src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java b/src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java index d65739b4c..65502d2c1 100644 --- a/src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java +++ b/src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java @@ -10,8 +10,9 @@ import org.bukkit.inventory.ItemStack; public class Unarmed { public static boolean blockCrackerSmoothBrick = Config.getInstance().getUnarmedBlockCrackerSmoothbrickToCracked(); - public static double berserkDamageModifier = 1.5; + public static long lastAttacked = 0; + public static long attackInterval = 750; public static void handleItemPickup(Player player, EntityPickupItemEvent event) { ItemStack[] storageContents = player.getInventory().getStorageContents(); diff --git a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java b/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java index 75ca3394e..c612362ba 100644 --- a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java +++ b/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java @@ -146,6 +146,10 @@ public class UnarmedManager extends SkillManager { return getIronArmDamage(); } + public boolean isPunchingCooldownOver() { + return (Unarmed.lastAttacked + Unarmed.attackInterval) <= System.currentTimeMillis(); + } + public double getIronArmDamage() { return RankUtils.getRank(getPlayer(), SubSkillType.UNARMED_IRON_ARM_STYLE) * 2; } diff --git a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java index 9da6fba57..6cac512cc 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java @@ -17,6 +17,7 @@ import com.gmail.nossr50.skills.archery.ArcheryManager; import com.gmail.nossr50.skills.axes.AxesManager; import com.gmail.nossr50.skills.swords.SwordsManager; 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.*; import com.gmail.nossr50.util.player.NotificationManager; @@ -122,20 +123,26 @@ public final class CombatUtils { mcMMOPlayer.checkAbilityActivation(PrimarySkillType.UNARMED); } - if (unarmedManager.canUseIronArm()) { - finalDamage += unarmedManager.ironArm(); - } + //Only execute bonuses if the player is not spamming + if(unarmedManager.isPunchingCooldownOver()) + { + if (unarmedManager.canUseIronArm()) { + finalDamage += unarmedManager.ironArm(); + } - if (unarmedManager.canUseBerserk()) { - finalDamage += unarmedManager.berserkDamage(initialDamage); - } + if (unarmedManager.canUseBerserk()) { + finalDamage += unarmedManager.berserkDamage(initialDamage); + } - if (unarmedManager.canDisarm(target)) { - unarmedManager.disarmCheck((Player) target); + if (unarmedManager.canDisarm(target)) { + unarmedManager.disarmCheck((Player) target); + } } applyScaledModifiers(initialDamage, finalDamage, event); startGainXp(mcMMOPlayer, target, PrimarySkillType.UNARMED); + + Unarmed.lastAttacked = System.currentTimeMillis(); //Track how often the player is punching } private static void processTamingCombat(LivingEntity target, Player master, Wolf wolf, EntityDamageByEntityEvent event) { diff --git a/src/main/resources/skillranks.yml b/src/main/resources/skillranks.yml index e29c3aad5..9482bb7b5 100644 --- a/src/main/resources/skillranks.yml +++ b/src/main/resources/skillranks.yml @@ -338,7 +338,7 @@ Fishing: Standard: Rank_1: 50 RetroMode: - Rank_1: 150 + Rank_1: 500 IceFishing: Standard: Rank_1: 5