Bläddra i källkod

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

nossr50 6 år sedan
förälder
incheckning
a66940b2b8

+ 1 - 0
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

+ 1 - 1
pom.xml

@@ -2,7 +2,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.gmail.nossr50.mcMMO</groupId>
     <artifactId>mcMMO</artifactId>
-    <version>2.1.91-SNAPSHOT</version>
+    <version>2.1.91</version>
     <name>mcMMO</name>
     <url>https://github.com/mcMMO-Dev/mcMMO</url>
     <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 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();

+ 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 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;
+    }
 }

+ 1 - 1
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) {