Browse Source

Unarmed no longer uses a serverwide cooldown for all players for bonus
damage

nossr50 6 years ago
parent
commit
a66940b2b8

+ 1 - 0
Changelog.txt

@@ -1,5 +1,6 @@
 Version 2.1.91
 Version 2.1.91
     mcMMO is now more compatible with plugins that spawn arrows in unexpected ways, this fixes some NPE in mcMMO when using certain plugins
     mcMMO is now more compatible with plugins that spawn arrows in unexpected ways, this fixes some NPE in mcMMO when using certain plugins
+    Fixed a bug where Unarmed was using the same CD timer for every player in the server (thanks slop_me)
 
 
 Version 2.1.90
 Version 2.1.90
     Salvaged items now travel much slower towards the player
     Salvaged items now travel much slower towards the player

+ 1 - 1
pom.xml

@@ -2,7 +2,7 @@
     <modelVersion>4.0.0</modelVersion>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.gmail.nossr50.mcMMO</groupId>
     <groupId>com.gmail.nossr50.mcMMO</groupId>
     <artifactId>mcMMO</artifactId>
     <artifactId>mcMMO</artifactId>
-    <version>2.1.91-SNAPSHOT</version>
+    <version>2.1.91</version>
     <name>mcMMO</name>
     <name>mcMMO</name>
     <url>https://github.com/mcMMO-Dev/mcMMO</url>
     <url>https://github.com/mcMMO-Dev/mcMMO</url>
     <scm>
     <scm>

+ 0 - 2
src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java

@@ -10,8 +10,6 @@ import org.bukkit.inventory.ItemStack;
 public class Unarmed {
 public class Unarmed {
     public static boolean blockCrackerSmoothBrick = Config.getInstance().getUnarmedBlockCrackerSmoothbrickToCracked();
     public static boolean blockCrackerSmoothBrick = Config.getInstance().getUnarmedBlockCrackerSmoothbrickToCracked();
     public static double berserkDamageModifier = 1.5;
     public static double berserkDamageModifier = 1.5;
-    public static long lastAttacked = 0;
-    public static long attackInterval = 750;
 
 
     public static void handleItemPickup(Player player, EntityPickupItemEvent event) {
     public static void handleItemPickup(Player player, EntityPickupItemEvent event) {
         ItemStack[] storageContents = player.getInventory().getStorageContents();
         ItemStack[] storageContents = player.getInventory().getStorageContents();

+ 30 - 4
src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java

@@ -20,17 +20,29 @@ import com.gmail.nossr50.util.skills.RankUtils;
 import com.gmail.nossr50.util.skills.SkillActivationType;
 import com.gmail.nossr50.util.skills.SkillActivationType;
 import org.bukkit.Material;
 import org.bukkit.Material;
 import org.bukkit.block.BlockState;
 import org.bukkit.block.BlockState;
-import org.bukkit.block.data.BlockData;
 import org.bukkit.entity.Item;
 import org.bukkit.entity.Item;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.inventory.ItemStack;
 
 
 public class UnarmedManager extends SkillManager {
 public class UnarmedManager extends SkillManager {
+    private long lastAttacked;
+    private long attackInterval;
+
     public UnarmedManager(McMMOPlayer mcMMOPlayer) {
     public UnarmedManager(McMMOPlayer mcMMOPlayer) {
         super(mcMMOPlayer, PrimarySkillType.UNARMED);
         super(mcMMOPlayer, PrimarySkillType.UNARMED);
+        initUnarmedPerPlayerVars();
+    }
+
+    /**
+     * Inits variables used for each player for unarmed
+     */
+    private void initUnarmedPerPlayerVars() {
+        lastAttacked = 0;
+        attackInterval = 750;
     }
     }
 
 
+
     public boolean canActivateAbility() {
     public boolean canActivateAbility() {
         return mcMMOPlayer.getToolPreparationMode(ToolType.FISTS) && Permissions.berserk(getPlayer());
         return mcMMOPlayer.getToolPreparationMode(ToolType.FISTS) && Permissions.berserk(getPlayer());
     }
     }
@@ -74,8 +86,6 @@ public class UnarmedManager extends SkillManager {
             return false;
             return false;
         }
         }
 
 
-        BlockData data = blockState.getBlockData();
-
         switch (blockState.getType()) {
         switch (blockState.getType()) {
             case STONE_BRICKS:
             case STONE_BRICKS:
                 if (!Unarmed.blockCrackerSmoothBrick) {
                 if (!Unarmed.blockCrackerSmoothBrick) {
@@ -150,7 +160,7 @@ public class UnarmedManager extends SkillManager {
     }
     }
 
 
     public boolean isPunchingCooldownOver() {
     public boolean isPunchingCooldownOver() {
-        return (Unarmed.lastAttacked + Unarmed.attackInterval) <= System.currentTimeMillis();
+        return (lastAttacked + attackInterval) <= System.currentTimeMillis();
     }
     }
 
 
     public double getIronArmDamage() {
     public double getIronArmDamage() {
@@ -181,4 +191,20 @@ public class UnarmedManager extends SkillManager {
 
 
         return false;
         return false;
     }
     }
+
+    public long getLastAttacked() {
+        return lastAttacked;
+    }
+
+    public void setLastAttacked(long lastAttacked) {
+        this.lastAttacked = lastAttacked;
+    }
+
+    public long getAttackInterval() {
+        return attackInterval;
+    }
+
+    public void setAttackInterval(long attackInterval) {
+        this.attackInterval = attackInterval;
+    }
 }
 }

+ 1 - 1
src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

@@ -166,7 +166,7 @@ public final class CombatUtils {
 
 
         applyScaledModifiers(initialDamage, finalDamage, event);
         applyScaledModifiers(initialDamage, finalDamage, event);
         startGainXp(mcMMOPlayer, target, PrimarySkillType.UNARMED);
         startGainXp(mcMMOPlayer, target, PrimarySkillType.UNARMED);
-        Unarmed.lastAttacked = System.currentTimeMillis(); //Track how often the player is punching
+        unarmedManager.setLastAttacked(System.currentTimeMillis()); //Track how often the player is punching
     }
     }
 
 
     private static void processTamingCombat(LivingEntity target, Player master, Wolf wolf, EntityDamageByEntityEvent event) {
     private static void processTamingCombat(LivingEntity target, Player master, Wolf wolf, EntityDamageByEntityEvent event) {