diff --git a/mcMMO/Changelog.txt b/mcMMO/Changelog.txt index d85a2366b..774ecf43b 100644 --- a/mcMMO/Changelog.txt +++ b/mcMMO/Changelog.txt @@ -3,10 +3,12 @@ Changelog: Version 0.9 --NEW CONTENT-- Woodcutting now has the "Tree Feller" Ability +Unarmed now has the "Berserk" Ability +Swords now has the "Serrated Strikes" Ability Mining now has the "Super Breaker" Ability Axes now has the "Skull Splitter" Ability Excavation now has the "Giga Drill Breaker" Ability -Added /mcrefresh tool for refreshing cooldowns +Added /mcrefresh - tool for refreshing cooldowns Unarmed now has the "Deflect Arrows" passive skill Chimaera Wing Item Added diff --git a/mcMMO/com/gmail/nossr50/mcBlockListener.java b/mcMMO/com/gmail/nossr50/mcBlockListener.java index 9ce45fa9d..fe793515f 100644 --- a/mcMMO/com/gmail/nossr50/mcBlockListener.java +++ b/mcMMO/com/gmail/nossr50/mcBlockListener.java @@ -68,6 +68,19 @@ public class mcBlockListener extends BlockListener { block.setType(Material.AIR); block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); } + /* + * BERSERK MODE CHECKS + */ + if(mcUsers.getProfile(player).getBerserkMode() && player.getItemInHand().getTypeId() == 0 && dmg == 0 && mcExcavation.getInstance().canBeGigaDrillBroken(block)){ + Material mat = Material.getMaterial(block.getTypeId()); + if(block.getTypeId() == 2) + mat = Material.DIRT; + byte type = block.getData(); + ItemStack item = new ItemStack(mat, 1, (byte)0, type); + block.setType(Material.AIR); + block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item); + } + /* * SUPER BREAKER CHECKS */ @@ -120,7 +133,7 @@ public class mcBlockListener extends BlockListener { /* * IF PLAYER IS USING TREEFELLER */ - if(mcPermissions.getInstance().woodcuttingability(player) && mcUsers.getProfile(player).getTreeFellerMode() && block.getTypeId() == 17){ + if(mcPermissions.getInstance().woodCuttingAbility(player) && mcUsers.getProfile(player).getTreeFellerMode() && block.getTypeId() == 17){ mcWoodCutting.getInstance().treeFeller(block, player); for(Block blockx : mcConfig.getInstance().getTreeFeller()){ if(blockx != null){ diff --git a/mcMMO/com/gmail/nossr50/mcCombat.java b/mcMMO/com/gmail/nossr50/mcCombat.java index 5cf83bdc5..2f794681c 100644 --- a/mcMMO/com/gmail/nossr50/mcCombat.java +++ b/mcMMO/com/gmail/nossr50/mcCombat.java @@ -498,7 +498,7 @@ public class mcCombat { } public void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Entity x){ for(Entity derp : x.getWorld().getEntities()){ - if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 5){ + if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 7){ if(derp instanceof Player){ Player target = (Player)derp; if(mcParty.getInstance().inSameParty(attacker, target)) @@ -519,6 +519,37 @@ public class mcCombat { } } } + public void applySerratedStrikes(Player attacker, EntityDamageByEntityEvent event, Entity x){ + for(Entity derp : x.getWorld().getEntities()){ + if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 7){ + if(derp instanceof Player){ + Player target = (Player)derp; + if(mcParty.getInstance().inSameParty(attacker, target)) + continue; + if(!target.getName().equals(attacker.getName())){ + target.damage(event.getDamage() / 4); + target.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strike!"); + if(!mcConfig.getInstance().isBleedTracked(derp)){ + mcConfig.getInstance().addBleedTrack(x); + mcUsers.getProfile(target).setBleedTicks(12); + } + } + } + if(derp instanceof Monster){ + if(!mcConfig.getInstance().isBleedTracked(derp)) + mcConfig.getInstance().addBleedTrack(x); + Monster target = (Monster)derp; + target.damage(event.getDamage() / 4); + } + if(derp instanceof Animals){ + if(!mcConfig.getInstance().isBleedTracked(derp)) + mcConfig.getInstance().addBleedTrack(x); + Animals target = (Animals)derp; + target.damage(event.getDamage() / 4); + } + } + } + } public void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Entity x){ if(mcm.getInstance().isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){ if(mcUsers.getProfile(attacker).getAxesInt() >= 750){ diff --git a/mcMMO/com/gmail/nossr50/mcEntityListener.java b/mcMMO/com/gmail/nossr50/mcEntityListener.java index ddec98e1f..f9ce89f2d 100644 --- a/mcMMO/com/gmail/nossr50/mcEntityListener.java +++ b/mcMMO/com/gmail/nossr50/mcEntityListener.java @@ -96,6 +96,11 @@ public class mcEntityListener extends EntityListener { Player attacker = (Player)f; if(mcUsers.getProfile(attacker).getAxePreparationMode()) mcSkills.getInstance().skullSplitterCheck(attacker); + /* + * BERSERK DAMAGE MODIFIER + */ + if(mcUsers.getProfile(attacker).getBerserkMode()) + event.setDamage(event.getDamage() + (event.getDamage() / 2)); /* * Player versus Monster checks, this handles all skill damage modifiers and any procs. */ @@ -118,6 +123,8 @@ public class mcEntityListener extends EntityListener { */ if(!event.isCancelled() && mcUsers.getProfile(attacker).getSkullSplitterMode()) mcCombat.getInstance().applyAoeDamage(attacker, eventb, x); + if(!event.isCancelled() && mcUsers.getProfile(attacker).getSerratedStrikesMode()) + mcCombat.getInstance().applyAoeDamage(attacker, eventb, x); } if(e instanceof Monster || e instanceof Animals){ diff --git a/mcMMO/com/gmail/nossr50/mcPermissions.java b/mcMMO/com/gmail/nossr50/mcPermissions.java index fb0931f30..c14eb0d44 100644 --- a/mcMMO/com/gmail/nossr50/mcPermissions.java +++ b/mcMMO/com/gmail/nossr50/mcPermissions.java @@ -65,7 +65,7 @@ public class mcPermissions { return true; } } - public boolean miningability(Player player){ + public boolean miningAbility(Player player){ if (permissionsEnabled) { return permission(player, "mcmmo.ability.mining"); } else { @@ -79,14 +79,14 @@ public class mcPermissions { return true; } } - public boolean swordsability(Player player){ + public boolean swordsAbility(Player player){ if (permissionsEnabled) { return permission(player, "mcmmo.ability.swords"); } else { return true; } } - public boolean woodcuttingability(Player player) { + public boolean woodCuttingAbility(Player player) { if (permissionsEnabled) { return permission(player, "mcmmo.ability.woodcutting"); } else { @@ -128,6 +128,13 @@ public class mcPermissions { return true; } } + public boolean setMySpawnOther(Player player) { + if (permissionsEnabled) { + return permission(player, "mcmmo.commands.setmyspawnother"); + } else { + return true; + } + } public boolean partyChat(Player player) { if (permissionsEnabled) { return permission(player, "mcmmo.chat.partychat"); diff --git a/mcMMO/com/gmail/nossr50/mcPlayerListener.java b/mcMMO/com/gmail/nossr50/mcPlayerListener.java index b3d23fbb9..188d87f69 100644 --- a/mcMMO/com/gmail/nossr50/mcPlayerListener.java +++ b/mcMMO/com/gmail/nossr50/mcPlayerListener.java @@ -61,7 +61,7 @@ public class mcPlayerListener extends PlayerListener { public void onPlayerJoin(PlayerEvent event) { Player player = event.getPlayer(); if(mcPermissions.getInstance().motd(player)){ - player.sendMessage(ChatColor.BLUE + "This server is running mcMMO "+plugin.getDescription().getVersion()+" type /"+ChatColor.YELLOW+mcLoadProperties.mcmmo+ChatColor.BLUE+ " for help."); + player.sendMessage(ChatColor.BLUE + "This server is running mcMMO "+plugin.getDescription().getVersion()+" type /"+ChatColor.YELLOW+mcLoadProperties.mcmmo+ChatColor.BLUE+ " for help."); } } //Check if string is a player @@ -131,6 +131,12 @@ public class mcPlayerListener extends PlayerListener { mcUsers.getProfile(player).setTreeFellerCooldown(0); mcUsers.getProfile(player).setTreeFellerMode(false); mcUsers.getProfile(player).setTreeFellerTicks(0); + /* + * BERSERK + */ + mcUsers.getProfile(player).setBerserkCooldown(0); + mcUsers.getProfile(player).setBerserkMode(false); + mcUsers.getProfile(player).setBerserkTicks(0); player.sendMessage(ChatColor.GREEN+"**ABILITIES REFRESHED!**"); } @@ -300,13 +306,17 @@ public class mcPlayerListener extends PlayerListener { player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions."); return; } + if((mcPermissions.getInstance().setMySpawnOther(player) || player.isOp()) && split.length >= 2 && isPlayer(split[1])){ + player.sendMessage("You have set "+split[1]+"'s spawn!"); + player = getPlayer(split[1]); + } event.setCancelled(true); double x = player.getLocation().getX(); double y = player.getLocation().getY(); double z = player.getLocation().getZ(); String myspawnworld = player.getWorld().getName(); mcUsers.getProfile(player).setMySpawn(x, y, z, myspawnworld); - player.sendMessage(ChatColor.DARK_AQUA + "Myspawn has been set to your current location."); + player.sendMessage(ChatColor.DARK_AQUA + "Myspawn has been set."); } /* * STATS COMMAND diff --git a/mcMMO/com/gmail/nossr50/mcSkills.java b/mcMMO/com/gmail/nossr50/mcSkills.java index e72cf7d92..e616810f5 100644 --- a/mcMMO/com/gmail/nossr50/mcSkills.java +++ b/mcMMO/com/gmail/nossr50/mcSkills.java @@ -49,10 +49,16 @@ public class mcSkills { } if(mcUsers.getProfile(player).getSerratedStrikesCooldown() >= 1){ mcUsers.getProfile(player).decreaseSerratedStrikesCooldown(); - if(mcUsers.getProfile(player).getSuperBreakerCooldown() == 0){ + if(mcUsers.getProfile(player).getSerratedStrikesCooldown() == 0){ player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Serrated Strikes "+ChatColor.GREEN+"ability is refreshed!"); } } + if(mcUsers.getProfile(player).getBerserkCooldown() >= 1){ + mcUsers.getProfile(player).decreaseBerserkCooldown(); + if(mcUsers.getProfile(player).getBerserkCooldown() == 0){ + player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Berserk "+ChatColor.GREEN+"ability is refreshed!"); + } + } if(mcUsers.getProfile(player).getSkullSplitterCooldown() >= 1){ mcUsers.getProfile(player).decreaseSkullSplitterCooldown(); if(mcUsers.getProfile(player).getSkullSplitterCooldown() == 0){ @@ -82,14 +88,92 @@ public class mcSkills { } } public void abilityActivationCheck(Player player, Block block){ - if(mcPermissions.getInstance().miningability(player)){ + if(mcPermissions.getInstance().miningAbility(player)){ mcMining.getInstance().superBreakerCheck(player, block); } if(mcPermissions.getInstance().excavationAbility(player)){ mcExcavation.getInstance().gigaDrillBreakerActivationCheck(player, block); } + if(mcPermissions.getInstance().unarmed(player)){ + berserkActivationCheck(player, block); + } + if(mcPermissions.getInstance().swords(player)){ + serratedStrikesActivationCheck(player, block); + } axeActivationCheck(player, block); } + public void serratedStrikesActivationCheck(Player player, Block block){ + if(mcm.getInstance().isSwords(player.getItemInHand())){ + if(block != null){ + if(!mcm.getInstance().abilityBlockCheck(block)) + return; + } + + int ticks = 2; + if(mcUsers.getProfile(player).getSwordsInt() >= 50) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 150) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 250) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 350) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 450) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 550) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 650) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 750) + ticks++; + + if(!mcUsers.getProfile(player).getSerratedStrikesMode() && mcUsers.getProfile(player).getSerratedStrikesCooldown() == 0){ + player.sendMessage(ChatColor.GREEN+"**SERRATED STRIKES ACTIVATED**"); + mcUsers.getProfile(player).setSerratedStrikesTicks(ticks); + mcUsers.getProfile(player).setSerratedStrikesMode(true); + } + + if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){ + player.sendMessage(ChatColor.RED+"You are too tired to use that ability again."); + } + } + } + public void berserkActivationCheck(Player player, Block block){ + if(player.getItemInHand().getTypeId() == 0){ + if(block != null){ + if(!mcm.getInstance().abilityBlockCheck(block)) + return; + } + + int ticks = 2; + if(mcUsers.getProfile(player).getUnarmedInt() >= 50) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 150) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 250) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 350) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 450) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 550) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 650) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 750) + ticks++; + + if(!mcUsers.getProfile(player).getBerserkMode() && mcUsers.getProfile(player).getBerserkCooldown() == 0){ + player.sendMessage(ChatColor.GREEN+"**BERSERK ACTIVATED**"); + mcUsers.getProfile(player).setBerserkTicks(ticks); + mcUsers.getProfile(player).setBerserkMode(true); + } + + if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){ + player.sendMessage(ChatColor.RED+"You are too tired to use that ability again."); + } + } + } public void skullSplitterCheck(Player player){ if(mcm.getInstance().isAxes(player.getItemInHand())){ /* @@ -131,7 +215,7 @@ public class mcSkills { /* * AXE PREPARATION MODE */ - if(mcPermissions.getInstance().woodcuttingability(player) && mcPermissions.getInstance().axes(player)){ + if(mcPermissions.getInstance().woodCuttingAbility(player) && mcPermissions.getInstance().axes(player)){ //Monitor the length of TreeFeller mode if(mcUsers.getProfile(player).getAxePreparationMode()){ mcUsers.getProfile(player).decreaseAxePreparationTicks(); @@ -158,7 +242,7 @@ public class mcSkills { /* * WOODCUTTING ABILITY */ - if(mcPermissions.getInstance().woodcuttingability(player)){ + if(mcPermissions.getInstance().woodCuttingAbility(player)){ //Monitor the length of TreeFeller mode if(mcUsers.getProfile(player).getTreeFellerMode()){ mcUsers.getProfile(player).decreaseTreeFellerTicks(); @@ -172,7 +256,7 @@ public class mcSkills { /* * MINING ABILITY */ - if(mcPermissions.getInstance().miningability(player)){ + if(mcPermissions.getInstance().miningAbility(player)){ //Monitor the length of SuperBreaker mode if(mcUsers.getProfile(player).getSuperBreakerMode()){ mcUsers.getProfile(player).decreaseSuperBreakerTicks(); diff --git a/mcMMO/com/gmail/nossr50/mcTimer.java b/mcMMO/com/gmail/nossr50/mcTimer.java index 1dc49c19c..23dbc257b 100644 --- a/mcMMO/com/gmail/nossr50/mcTimer.java +++ b/mcMMO/com/gmail/nossr50/mcTimer.java @@ -53,8 +53,7 @@ public class mcTimer extends TimerTask{ /* * COOLDOWN MONITORING */ - if(mcUsers.getProfile(player).hasCooldowns()) - mcSkills.getInstance().decreaseCooldowns(player); + mcSkills.getInstance().decreaseCooldowns(player); } if(thecount < 20){ thecount++; diff --git a/mcMMO/com/gmail/nossr50/mcUsers.java b/mcMMO/com/gmail/nossr50/mcUsers.java index b21088215..42bd4cf5d 100644 --- a/mcMMO/com/gmail/nossr50/mcUsers.java +++ b/mcMMO/com/gmail/nossr50/mcUsers.java @@ -156,8 +156,8 @@ class PlayerList protected final Logger log = Logger.getLogger("Minecraft"); private String playerName, gather, wgather, woodcutting, repair, mining, party, myspawn, myspawnworld, unarmed, herbalism, excavation, archery, swords, axes, invite, acrobatics, repairgather, unarmedgather, herbalismgather, excavationgather, archerygather, swordsgather, axesgather, acrobaticsgather; - private boolean dead, treeFellerMode, superBreakerMode, gigaDrillBreakerMode, serratedStrikesMode, axePreparationMode, skullSplitterMode; - private int recentlyhurt = 0, bleedticks = 0, gigaDrillBreaker = 0, gigaDrillBreakerCooldown = 0, gigaDrillBreakerTicks = 0, superBreakerTicks = 0, superBreakerCooldown = 0, + private boolean dead, treeFellerMode, superBreakerMode, gigaDrillBreakerMode, serratedStrikesMode, axePreparationMode, skullSplitterMode, berserkMode; + private int recentlyhurt = 0, bleedticks = 0, gigaDrillBreakerCooldown = 0, gigaDrillBreakerTicks = 0, berserkTicks = 0, berserkCooldown = 0, superBreakerTicks = 0, superBreakerCooldown = 0, serratedStrikesTicks = 0, skullSplitterTicks = 0, skullSplitterCooldown = 0, serratedStrikesCooldown = 0, treeFellerTicks = 0, treeFellerCooldown = 0, axePreparationTicks = 0; Player thisplayer; @@ -462,6 +462,37 @@ class PlayerList axePreparationTicks--; } } + /* + * BERSERK MODE + */ + public boolean getBerserkMode(){ + return berserkMode; + } + public void setBerserkMode(Boolean bool){ + berserkMode = bool; + } + public Integer getBerserkTicks(){ + return berserkTicks; + } + public void setBerserkTicks(Integer newvalue){ + berserkTicks = newvalue; + } + public void decreaseBerserkTicks(){ + if(berserkTicks >= 1){ + berserkTicks--; + } + } + public void setBerserkCooldown(Integer newvalue){ + berserkCooldown = newvalue; + } + public int getBerserkCooldown(){ + return berserkCooldown; + } + public void decreaseBerserkCooldown(){ + if(berserkCooldown >= 1){ + berserkCooldown--; + } + } /* * SKULL SPLITTER */ diff --git a/mcMMO/com/gmail/nossr50/mcm.java b/mcMMO/com/gmail/nossr50/mcm.java index ce3f0d322..bbff0be70 100644 --- a/mcMMO/com/gmail/nossr50/mcm.java +++ b/mcMMO/com/gmail/nossr50/mcm.java @@ -294,14 +294,34 @@ public class mcm { } else { parrypercentage = "0"; } + int ticks = 2; + if(mcUsers.getProfile(player).getSwordsInt() >= 50) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 150) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 250) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 350) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 450) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 550) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 650) + ticks++; + if(mcUsers.getProfile(player).getSwordsInt() >= 750) + ticks++; player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"SWORDS"+ChatColor.RED+"[]-----"); player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters"); player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---"); + player.sendMessage(ChatColor.DARK_AQUA+"Serrated Strikes (ABILITY): "+ChatColor.GREEN+"25% DMG AoE, Bleed+ AoE"); + player.sendMessage(ChatColor.DARK_GRAY+"Serrated Strikes Bleed+: "+ChatColor.GREEN+"Enemies Bleed Longer"); player.sendMessage(ChatColor.DARK_AQUA+"Parrying: "+ChatColor.GREEN+"Negates Damage"); player.sendMessage(ChatColor.DARK_AQUA+"Bleed: "+ChatColor.GREEN+"Apply a 2 second bleed DoT to enemies"); player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---"); player.sendMessage(ChatColor.RED+"Bleed Chance: "+ChatColor.YELLOW+percentage+"%"); player.sendMessage(ChatColor.RED+"Parry Chance:"+ChatColor.YELLOW+parrypercentage+"%"); + player.sendMessage(ChatColor.RED+"Serrated Strikes Length: "+ChatColor.YELLOW+(ticks * 2)+"s"); } if(split[0].equalsIgnoreCase("/acrobatics")){ event.setCancelled(true); @@ -391,9 +411,29 @@ public class mcm { rank++; if(mcUsers.getProfile(player).getUnarmedInt() >= 950) rank++; + + int ticks = 2; + if(mcUsers.getProfile(player).getUnarmedInt() >= 50) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 150) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 250) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 350) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 450) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 550) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 650) + ticks++; + if(mcUsers.getProfile(player).getUnarmedInt() >= 750) + ticks++; + player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"UNARMED"+ChatColor.RED+"[]-----"); player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters"); player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---"); + player.sendMessage(ChatColor.DARK_AQUA+"Berserk (ABILITY): "+ChatColor.GREEN+"+50% DMG, Breaks weak materials"); player.sendMessage(ChatColor.DARK_AQUA+"Disarm (Players): "+ChatColor.GREEN+"Drops the foes item held in hand"); player.sendMessage(ChatColor.DARK_AQUA+"Damage+: "+ChatColor.GREEN+"Modifies Damage"); player.sendMessage(ChatColor.DARK_AQUA+"Arrow Deflect: "+ChatColor.GREEN+"Deflect arrows"); @@ -401,6 +441,7 @@ public class mcm { player.sendMessage(ChatColor.RED+"Arrow Deflect Chance: "+ChatColor.YELLOW+arrowpercentage+"%"); player.sendMessage(ChatColor.RED+"Disarm Chance: "+ChatColor.YELLOW+percentage+"%"); player.sendMessage(ChatColor.RED+"Damage+ (Rank"+rank+"): Bonus "+rank+" damage"); + player.sendMessage(ChatColor.RED+"Berserk Length: "+ChatColor.YELLOW+(ticks * 2)+"s"); } if(split[0].equalsIgnoreCase("/herbalism")){ event.setCancelled(true); @@ -457,6 +498,7 @@ public class mcm { player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---"); player.sendMessage(ChatColor.DARK_AQUA+"Giga Drill Breaker (ABILITY): "+ChatColor.GREEN+"3x Drop Rate, 3x EXP, +Speed"); player.sendMessage(ChatColor.DARK_AQUA+"Treasure Hunter: "+ChatColor.GREEN+"Ability to dig for treasure"); + player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---"); player.sendMessage(ChatColor.RED+"Giga Drill Breaker Length: "+ChatColor.YELLOW+(ticks * 2)+"s"); } if(split[0].equalsIgnoreCase("/"+mcLoadProperties.mcmmo)){