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

damage
This commit is contained in:
nossr50 2019-06-30 12:19:45 -07:00
parent 9092e70544
commit a66940b2b8
5 changed files with 33 additions and 8 deletions

View File

@ -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

View File

@ -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>

View File

@ -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();

View File

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

View File

@ -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) {