diff --git a/Changelog.txt b/Changelog.txt
index ca8f771cf..34c025f03 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,5 +1,6 @@
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
+ Fixed a bug where Unarmed was using the same CD timer for every player in the server (thanks slop_me)
Version 2.1.90
Salvaged items now travel much slower towards the player
diff --git a/pom.xml b/pom.xml
index b2d5d1425..c8835b4d1 100755
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
4.0.0
com.gmail.nossr50.mcMMO
mcMMO
- 2.1.91-SNAPSHOT
+ 2.1.91
mcMMO
https://github.com/mcMMO-Dev/mcMMO
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 7f4c25c1c..a39cbccc5 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,6 @@ 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 44a7b1047..4df9d7903 100644
--- a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java
+++ b/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 org.bukkit.Material;
import org.bukkit.block.BlockState;
-import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class UnarmedManager extends SkillManager {
+ private long lastAttacked;
+ private long attackInterval;
+
public UnarmedManager(McMMOPlayer mcMMOPlayer) {
super(mcMMOPlayer, PrimarySkillType.UNARMED);
+ initUnarmedPerPlayerVars();
}
+ /**
+ * Inits variables used for each player for unarmed
+ */
+ private void initUnarmedPerPlayerVars() {
+ lastAttacked = 0;
+ attackInterval = 750;
+ }
+
+
public boolean canActivateAbility() {
return mcMMOPlayer.getToolPreparationMode(ToolType.FISTS) && Permissions.berserk(getPlayer());
}
@@ -74,8 +86,6 @@ public class UnarmedManager extends SkillManager {
return false;
}
- BlockData data = blockState.getBlockData();
-
switch (blockState.getType()) {
case STONE_BRICKS:
if (!Unarmed.blockCrackerSmoothBrick) {
@@ -150,7 +160,7 @@ public class UnarmedManager extends SkillManager {
}
public boolean isPunchingCooldownOver() {
- return (Unarmed.lastAttacked + Unarmed.attackInterval) <= System.currentTimeMillis();
+ return (lastAttacked + attackInterval) <= System.currentTimeMillis();
}
public double getIronArmDamage() {
@@ -181,4 +191,20 @@ public class UnarmedManager extends SkillManager {
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;
+ }
}
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 5b5aecb04..cd3ffb75a 100644
--- a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java
+++ b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java
@@ -166,7 +166,7 @@ public final class CombatUtils {
applyScaledModifiers(initialDamage, finalDamage, event);
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) {