mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-03 18:43:43 +01:00 
			
		
		
		
	OPTIMIZE ALL THE SKILLS!
Adds some cool enum features & cleans up Skills.java - may possibly break some message displays for Axes & Woodcutting.
This commit is contained in:
		@@ -22,7 +22,6 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
				
			|||||||
import org.bukkit.event.entity.EntityDamageEvent;
 | 
					import org.bukkit.event.entity.EntityDamageEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
 | 
					import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
 | 
				
			||||||
import org.bukkit.inventory.ItemStack;
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
import org.bukkit.plugin.Plugin;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.gmail.nossr50.config.LoadProperties;
 | 
					import com.gmail.nossr50.config.LoadProperties;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			||||||
@@ -60,7 +59,7 @@ public class Combat
 | 
				
			|||||||
			PlayerProfile PPa = Users.getProfile(attacker);
 | 
								PlayerProfile PPa = Users.getProfile(attacker);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			//If there are any abilities to activate
 | 
								//If there are any abilities to activate
 | 
				
			||||||
			combatAbilityChecks(attacker, PPa, pluginx);
 | 
								combatAbilityChecks(attacker, PPa);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			//Damage modifiers and proc checks
 | 
								//Damage modifiers and proc checks
 | 
				
			||||||
			if(m.isSwords(itemInHand) && mcPermissions.getInstance().swords(attacker))
 | 
								if(m.isSwords(itemInHand) && mcPermissions.getInstance().swords(attacker))
 | 
				
			||||||
@@ -179,15 +178,15 @@ public class Combat
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static void combatAbilityChecks(Player attacker, PlayerProfile PPa, Plugin pluginx)
 | 
						public static void combatAbilityChecks(Player attacker, PlayerProfile PPa)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		//Check to see if any abilities need to be activated
 | 
							//Check to see if any abilities need to be activated
 | 
				
			||||||
		if(PPa.getAxePreparationMode())
 | 
							if(PPa.getAxePreparationMode() && mcPermissions.getInstance().axesAbility(attacker))
 | 
				
			||||||
			Axes.skullSplitterCheck(attacker);
 | 
								Skills.abilityCheck(attacker, SkillType.AXES);
 | 
				
			||||||
		if(PPa.getSwordsPreparationMode())
 | 
							if(PPa.getSwordsPreparationMode())
 | 
				
			||||||
			Swords.serratedStrikesActivationCheck(attacker);
 | 
								Skills.abilityCheck(attacker, SkillType.SWORDS);
 | 
				
			||||||
		if(PPa.getFistsPreparationMode())
 | 
							if(PPa.getFistsPreparationMode())
 | 
				
			||||||
			Unarmed.berserkActivationCheck(attacker);
 | 
								Skills.abilityCheck(attacker, SkillType.UNARMED);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static void archeryCheck(EntityDamageByEntityEvent event, mcMMO pluginx)
 | 
						public static void archeryCheck(EntityDamageByEntityEvent event, mcMMO pluginx)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,166 @@
 | 
				
			|||||||
package com.gmail.nossr50.datatypes;
 | 
					package com.gmail.nossr50.datatypes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public enum AbilityType {
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
BERSERK,
 | 
					
 | 
				
			||||||
SUPER_BREAKER,
 | 
					import com.gmail.nossr50.mcPermissions;
 | 
				
			||||||
GIGA_DRILL_BREAKER,
 | 
					import com.gmail.nossr50.config.LoadProperties;
 | 
				
			||||||
GREEN_TERRA,
 | 
					import com.gmail.nossr50.locale.mcLocale;
 | 
				
			||||||
SKULL_SPLIITER,
 | 
					
 | 
				
			||||||
TREE_FELLER,
 | 
					public enum AbilityType
 | 
				
			||||||
SERRATED_STRIKES;
 | 
					{
 | 
				
			||||||
 | 
						BERSERK(LoadProperties.berserkCooldown, mcLocale.getString("Skills.BerserkOn"), mcLocale.getString("Skills.BerserkOff"), "Skills.BerserkPlayer", mcLocale.getString("Skills.YourBerserk")),
 | 
				
			||||||
 | 
						SUPER_BREAKER(LoadProperties.superBreakerCooldown, mcLocale.getString("Skills.SuperBreakerOn"), mcLocale.getString("Skills.SuperBreakerOff"), "Skills.SuperBreakerPlayer", mcLocale.getString("Skills.YourSuperBreaker")),
 | 
				
			||||||
 | 
						GIGA_DRILL_BREAKER(LoadProperties.gigaDrillBreakerCooldown, mcLocale.getString("Skills.GigaDrillBreakerOn"), mcLocale.getString("Skills.GigaDrillBreakerOff"), "Skills.GigaDrillBreakerPlayer", mcLocale.getString("Skills.YourGigaDrillBreaker")),
 | 
				
			||||||
 | 
						GREEN_TERRA(LoadProperties.greenTerraCooldown, mcLocale.getString("Skills.GreenTerraOn"), mcLocale.getString("Skills.GreenTerraOff"), "Skills.GreenTerraPlayer", mcLocale.getString("Skills.YourGreenTerra")),
 | 
				
			||||||
 | 
						SKULL_SPLIITER(LoadProperties.skullSplitterCooldown, mcLocale.getString("Skills.SkullSplitterOn"), mcLocale.getString("Skills.SkullSplitterOff"), "Skills.SkullSplitterPlayer", mcLocale.getString("Skills.YourSkullSplitter")),
 | 
				
			||||||
 | 
						TREE_FELLER(LoadProperties.treeFellerCooldown, mcLocale.getString("Skills.TreeFellerOn"), mcLocale.getString("Skills.TreeFellerOff"), "Skills.TreeFellerPlayer", mcLocale.getString("Skills.YourTreeFeller")),
 | 
				
			||||||
 | 
						SERRATED_STRIKES(LoadProperties.skullSplitterCooldown, mcLocale.getString("Skills.SerratedStrikesOn"), mcLocale.getString("Skills.SerratedStrikesOff"), "Skills.SerratedStrikesPlayer", mcLocale.getString("Skills.YourSerratedStrikes"));
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private int cooldown;
 | 
				
			||||||
 | 
						private String abilityOn;
 | 
				
			||||||
 | 
						private String abilityOff;
 | 
				
			||||||
 | 
						private String abilityPlayer;
 | 
				
			||||||
 | 
						private String abilityRefresh;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private AbilityType(int cooldown, String abilityOn, String abilityOff, String abilityPlayer, String abilityRefresh)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.cooldown = cooldown;
 | 
				
			||||||
 | 
							this.abilityOn = abilityOn;
 | 
				
			||||||
 | 
							this.abilityOff = abilityOff;
 | 
				
			||||||
 | 
							this.abilityPlayer = abilityPlayer;
 | 
				
			||||||
 | 
							this.abilityRefresh = abilityRefresh;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public int getCooldown()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return this.cooldown;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public String getAbilityOn()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return this.abilityOn;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public String getAbilityOff()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return this.abilityOff;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public String getAbilityPlayer(Player player)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return mcLocale.getString(this.abilityPlayer, new Object[] {player.getName()});
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public String getAbilityRefresh()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return this.abilityRefresh;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean getMode(PlayerProfile PP)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case BERSERK:
 | 
				
			||||||
 | 
								return PP.getBerserkMode();
 | 
				
			||||||
 | 
							case SUPER_BREAKER:
 | 
				
			||||||
 | 
								return PP.getSuperBreakerMode();
 | 
				
			||||||
 | 
							case GIGA_DRILL_BREAKER:
 | 
				
			||||||
 | 
								return PP.getGigaDrillBreakerMode();
 | 
				
			||||||
 | 
							case GREEN_TERRA:
 | 
				
			||||||
 | 
								return PP.getGreenTerraMode();
 | 
				
			||||||
 | 
							case SKULL_SPLIITER:
 | 
				
			||||||
 | 
								return PP.getSkullSplitterMode();
 | 
				
			||||||
 | 
							case TREE_FELLER:
 | 
				
			||||||
 | 
								return PP.getTreeFellerMode();
 | 
				
			||||||
 | 
							case SERRATED_STRIKES:
 | 
				
			||||||
 | 
								return PP.getSerratedStrikesMode();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void setMode(PlayerProfile PP, boolean bool)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case BERSERK:
 | 
				
			||||||
 | 
								PP.setBerserkMode(bool);
 | 
				
			||||||
 | 
							case SUPER_BREAKER:
 | 
				
			||||||
 | 
								PP.setSuperBreakerMode(bool);
 | 
				
			||||||
 | 
							case GIGA_DRILL_BREAKER:
 | 
				
			||||||
 | 
								PP.setGigaDrillBreakerMode(bool);
 | 
				
			||||||
 | 
							case GREEN_TERRA:
 | 
				
			||||||
 | 
								PP.setGreenTerraMode(bool);
 | 
				
			||||||
 | 
							case SKULL_SPLIITER:
 | 
				
			||||||
 | 
								PP.setSkullSplitterMode(bool);
 | 
				
			||||||
 | 
							case TREE_FELLER:
 | 
				
			||||||
 | 
								PP.setTreeFellerMode(bool);
 | 
				
			||||||
 | 
							case SERRATED_STRIKES:
 | 
				
			||||||
 | 
								PP.setSerratedStrikesMode(bool);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean getInformed(PlayerProfile PP)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case BERSERK:
 | 
				
			||||||
 | 
								return PP.getBerserkInformed();
 | 
				
			||||||
 | 
							case SUPER_BREAKER:
 | 
				
			||||||
 | 
								return PP.getSuperBreakerInformed();
 | 
				
			||||||
 | 
							case GIGA_DRILL_BREAKER:
 | 
				
			||||||
 | 
								return PP.getGigaDrillBreakerInformed();
 | 
				
			||||||
 | 
							case GREEN_TERRA:
 | 
				
			||||||
 | 
								return PP.getGreenTerraInformed();
 | 
				
			||||||
 | 
							case SKULL_SPLIITER:
 | 
				
			||||||
 | 
								return PP.getSkullSplitterInformed();
 | 
				
			||||||
 | 
							case TREE_FELLER:
 | 
				
			||||||
 | 
								return PP.getTreeFellerInformed();
 | 
				
			||||||
 | 
							case SERRATED_STRIKES:
 | 
				
			||||||
 | 
								return PP.getSerratedStrikesInformed();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public void setInformed(PlayerProfile PP, boolean bool)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case BERSERK:
 | 
				
			||||||
 | 
								PP.setBerserkInformed(bool);
 | 
				
			||||||
 | 
							case SUPER_BREAKER:
 | 
				
			||||||
 | 
								PP.setSuperBreakerInformed(bool);
 | 
				
			||||||
 | 
							case GIGA_DRILL_BREAKER:
 | 
				
			||||||
 | 
								PP.setGigaDrillBreakerInformed(bool);
 | 
				
			||||||
 | 
							case GREEN_TERRA:
 | 
				
			||||||
 | 
								PP.setGreenTerraInformed(bool);
 | 
				
			||||||
 | 
							case SKULL_SPLIITER:
 | 
				
			||||||
 | 
								PP.setSkullSplitterInformed(bool);
 | 
				
			||||||
 | 
							case TREE_FELLER:
 | 
				
			||||||
 | 
								PP.setTreeFellerInformed(bool);
 | 
				
			||||||
 | 
							case SERRATED_STRIKES:
 | 
				
			||||||
 | 
								PP.setSerratedStrikesInformed(bool);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean getPermissions(Player player)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case BERSERK:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().unarmedAbility(player);
 | 
				
			||||||
 | 
							case GIGA_DRILL_BREAKER:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().excavationAbility(player);
 | 
				
			||||||
 | 
							case GREEN_TERRA:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().herbalismAbility(player);
 | 
				
			||||||
 | 
							case SERRATED_STRIKES:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().swordsAbility(player);
 | 
				
			||||||
 | 
							case SKULL_SPLIITER:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().axesAbility(player);
 | 
				
			||||||
 | 
							case SUPER_BREAKER:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().miningAbility(player);
 | 
				
			||||||
 | 
							case TREE_FELLER:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().woodCuttingAbility(player);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -16,19 +16,97 @@
 | 
				
			|||||||
*/
 | 
					*/
 | 
				
			||||||
package com.gmail.nossr50.datatypes;
 | 
					package com.gmail.nossr50.datatypes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.gmail.nossr50.mcPermissions;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.config.LoadProperties;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public enum SkillType 
 | 
					public enum SkillType 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ACROBATICS,
 | 
						ACROBATICS(LoadProperties.levelCapAcrobatics),
 | 
				
			||||||
	ALL, //This one is just for convenience
 | 
						ALL, //This one is just for convenience
 | 
				
			||||||
	ARCHERY,
 | 
						ARCHERY(LoadProperties.levelCapArchery),
 | 
				
			||||||
	AXES,
 | 
						AXES(AbilityType.SKULL_SPLIITER, LoadProperties.levelCapAxes, ToolType.AXE),
 | 
				
			||||||
	EXCAVATION,
 | 
						EXCAVATION(AbilityType.GIGA_DRILL_BREAKER, LoadProperties.levelCapExcavation, ToolType.SHOVEL),
 | 
				
			||||||
	FISHING,
 | 
						FISHING(LoadProperties.levelCapFishing),
 | 
				
			||||||
	HERBALISM,
 | 
						HERBALISM(AbilityType.GREEN_TERRA, LoadProperties.levelCapHerbalism, ToolType.HOE),
 | 
				
			||||||
	MINING,
 | 
						MINING(AbilityType.SUPER_BREAKER, LoadProperties.levelCapMining, ToolType.PICKAXE),
 | 
				
			||||||
	REPAIR,
 | 
						REPAIR(LoadProperties.levelCapRepair),
 | 
				
			||||||
	SWORDS,
 | 
						SWORDS(AbilityType.SERRATED_STRIKES, LoadProperties.levelCapSwords, ToolType.SWORD),
 | 
				
			||||||
	TAMING,
 | 
						TAMING(LoadProperties.levelCapTaming),
 | 
				
			||||||
	UNARMED,
 | 
						UNARMED(AbilityType.BERSERK, LoadProperties.levelCapUnarmed, ToolType.FISTS),
 | 
				
			||||||
	WOODCUTTING;
 | 
						WOODCUTTING(AbilityType.TREE_FELLER, LoadProperties.levelCapWoodcutting, ToolType.AXE);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private AbilityType ability;
 | 
				
			||||||
 | 
						private int maxLevel;
 | 
				
			||||||
 | 
						private ToolType tool;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private SkillType()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.ability = null;
 | 
				
			||||||
 | 
							this.maxLevel = 0;
 | 
				
			||||||
 | 
							this.tool = null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private SkillType(AbilityType ability, int maxLevel, ToolType tool)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.ability = ability;
 | 
				
			||||||
 | 
							this.maxLevel = maxLevel;
 | 
				
			||||||
 | 
							this.tool = tool;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private SkillType(int maxLevel)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this(null, maxLevel, null);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public AbilityType getAbility()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return this.ability;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public int getMaxLevel()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if(maxLevel > 0)
 | 
				
			||||||
 | 
								return maxLevel;
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								return Integer.MAX_VALUE;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public ToolType getTool()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return this.tool;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean getPermissions(Player player)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case ACROBATICS:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().acrobatics(player);
 | 
				
			||||||
 | 
							case ARCHERY:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().archery(player);
 | 
				
			||||||
 | 
							case AXES:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().axes(player);
 | 
				
			||||||
 | 
							case EXCAVATION:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().excavation(player);
 | 
				
			||||||
 | 
							case FISHING:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().fishing(player);
 | 
				
			||||||
 | 
							case HERBALISM:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().herbalism(player);
 | 
				
			||||||
 | 
							case MINING:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().mining(player);
 | 
				
			||||||
 | 
							case REPAIR:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().repair(player);
 | 
				
			||||||
 | 
							case SWORDS:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().swords(player);
 | 
				
			||||||
 | 
							case TAMING:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().taming(player);
 | 
				
			||||||
 | 
							case UNARMED:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().unarmed(player);
 | 
				
			||||||
 | 
							case WOODCUTTING:
 | 
				
			||||||
 | 
								return mcPermissions.getInstance().woodcutting(player);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										134
									
								
								src/main/java/com/gmail/nossr50/datatypes/ToolType.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								src/main/java/com/gmail/nossr50/datatypes/ToolType.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,134 @@
 | 
				
			|||||||
 | 
					package com.gmail.nossr50.datatypes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.gmail.nossr50.m;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.locale.mcLocale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public enum ToolType
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						AXE(mcLocale.getString("Skills.LowerAxe"), mcLocale.getString("Skills.ReadyAxe")),
 | 
				
			||||||
 | 
						FISTS(mcLocale.getString("Skills.LowerFists"), mcLocale.getString("Skills.ReadyFists")),
 | 
				
			||||||
 | 
						HOE(mcLocale.getString("Skills.LowerHoe"), mcLocale.getString("Skills.ReadyHoe")),
 | 
				
			||||||
 | 
						PICKAXE(mcLocale.getString("Skills.LowerPickAxe"), mcLocale.getString("Skills.ReadyPickAxe")),
 | 
				
			||||||
 | 
						SHOVEL(mcLocale.getString("Skills.LowerShovel"), mcLocale.getString("Skills.ReadyShovel")),
 | 
				
			||||||
 | 
						SWORD(mcLocale.getString("Skills.LowerSword"), mcLocale.getString("Skills.ReadySword"));
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private String lowerTool;
 | 
				
			||||||
 | 
						private String raiseTool;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private ToolType(String lowerTool, String raiseTool)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.lowerTool = lowerTool;
 | 
				
			||||||
 | 
							this.raiseTool = raiseTool;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public String getLowerTool()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return this.lowerTool;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public String getRaiseTool()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return this.raiseTool;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean getToolMode(PlayerProfile PP)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case AXE:
 | 
				
			||||||
 | 
								 PP.getAxePreparationMode();
 | 
				
			||||||
 | 
							case FISTS:
 | 
				
			||||||
 | 
								 PP.getFistsPreparationMode();
 | 
				
			||||||
 | 
							case HOE:
 | 
				
			||||||
 | 
								 PP.getHoePreparationMode();
 | 
				
			||||||
 | 
							case PICKAXE:
 | 
				
			||||||
 | 
								 PP.getPickaxePreparationMode();
 | 
				
			||||||
 | 
							case SHOVEL:
 | 
				
			||||||
 | 
								 PP.getShovelPreparationMode();
 | 
				
			||||||
 | 
							case SWORD:
 | 
				
			||||||
 | 
								PP.getSwordsPreparationMode();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public void setToolMode(PlayerProfile PP, boolean bool)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case AXE:
 | 
				
			||||||
 | 
								 PP.setAxePreparationMode(bool);
 | 
				
			||||||
 | 
							case FISTS:
 | 
				
			||||||
 | 
								 PP.setFistsPreparationMode(bool);
 | 
				
			||||||
 | 
							case HOE:
 | 
				
			||||||
 | 
								 PP.setHoePreparationMode(bool);
 | 
				
			||||||
 | 
							case PICKAXE:
 | 
				
			||||||
 | 
								 PP.setPickaxePreparationMode(bool);
 | 
				
			||||||
 | 
							case SHOVEL:
 | 
				
			||||||
 | 
								 PP.setShovelPreparationMode(bool);
 | 
				
			||||||
 | 
							case SWORD:
 | 
				
			||||||
 | 
								PP.setSwordsPreparationMode(bool);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public long getToolATS(PlayerProfile PP)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case AXE:
 | 
				
			||||||
 | 
								return PP.getAxePreparationATS();
 | 
				
			||||||
 | 
							case FISTS:
 | 
				
			||||||
 | 
								return PP.getFistsPreparationATS();
 | 
				
			||||||
 | 
							case HOE:
 | 
				
			||||||
 | 
								return PP.getHoePreparationATS();
 | 
				
			||||||
 | 
							case PICKAXE:
 | 
				
			||||||
 | 
								return PP.getPickaxePreparationATS();
 | 
				
			||||||
 | 
							case SHOVEL:
 | 
				
			||||||
 | 
								return PP.getShovelPreparationATS();
 | 
				
			||||||
 | 
							case SWORD:
 | 
				
			||||||
 | 
								return PP.getSwordsPreparationATS();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public void setToolATS(PlayerProfile PP, long ats)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case AXE:
 | 
				
			||||||
 | 
								PP.setAxePreparationATS(ats);
 | 
				
			||||||
 | 
							case FISTS:
 | 
				
			||||||
 | 
								PP.setFistsPreparationATS(ats);
 | 
				
			||||||
 | 
							case HOE:
 | 
				
			||||||
 | 
								PP.setHoePreparationATS(ats);
 | 
				
			||||||
 | 
							case PICKAXE:
 | 
				
			||||||
 | 
								PP.setPickaxePreparationATS(ats);
 | 
				
			||||||
 | 
							case SHOVEL:
 | 
				
			||||||
 | 
								PP.setShovelPreparationATS(ats);
 | 
				
			||||||
 | 
							case SWORD:
 | 
				
			||||||
 | 
								PP.setSwordsPreparationATS(ats);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean inHand(ItemStack is)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch(this)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case AXE:
 | 
				
			||||||
 | 
								return m.isAxes(is);
 | 
				
			||||||
 | 
							case FISTS:
 | 
				
			||||||
 | 
								return is == null;
 | 
				
			||||||
 | 
							case HOE:
 | 
				
			||||||
 | 
								return m.isHoe(is);
 | 
				
			||||||
 | 
							case PICKAXE:
 | 
				
			||||||
 | 
								return m.isMiningPick(is);
 | 
				
			||||||
 | 
							case SHOVEL:
 | 
				
			||||||
 | 
								return m.isShovel(is);
 | 
				
			||||||
 | 
							case SWORD:
 | 
				
			||||||
 | 
								return m.isSwords(is);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -147,7 +147,7 @@ public class mcBlockListener implements Listener
 | 
				
			|||||||
    	
 | 
					    	
 | 
				
			||||||
    	//Green Terra
 | 
					    	//Green Terra
 | 
				
			||||||
   		if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalismAbility(player) && ((id == 59 && block.getData() == (byte) 0x07) || Herbalism.canBeGreenTerra(block)))
 | 
					   		if(PP.getHoePreparationMode() && mcPermissions.getInstance().herbalismAbility(player) && ((id == 59 && block.getData() == (byte) 0x07) || Herbalism.canBeGreenTerra(block)))
 | 
				
			||||||
   			Herbalism.greenTerraCheck(player);
 | 
					   			Skills.abilityCheck(player, SkillType.HERBALISM);
 | 
				
			||||||
   		
 | 
					   		
 | 
				
			||||||
   		//Wheat && Triple drops
 | 
					   		//Wheat && Triple drops
 | 
				
			||||||
   		if(PP.getGreenTerraMode() && Herbalism.canBeGreenTerra(block))
 | 
					   		if(PP.getGreenTerraMode() && Herbalism.canBeGreenTerra(block))
 | 
				
			||||||
@@ -224,16 +224,17 @@ public class mcBlockListener implements Listener
 | 
				
			|||||||
    	if(m.abilityBlockCheck(block))
 | 
					    	if(m.abilityBlockCheck(block))
 | 
				
			||||||
    	{
 | 
					    	{
 | 
				
			||||||
	   		if(PP.getHoePreparationMode() && Herbalism.canBeGreenTerra(block))
 | 
						   		if(PP.getHoePreparationMode() && Herbalism.canBeGreenTerra(block))
 | 
				
			||||||
	    		Herbalism.greenTerraCheck(player);
 | 
						   			Skills.abilityCheck(player, SkillType.HERBALISM);
 | 
				
			||||||
	    	if(PP.getAxePreparationMode() && id == 17 && mcPermissions.getInstance().woodCuttingAbility(player))
 | 
						    	if(PP.getAxePreparationMode() && id == 17 && mcPermissions.getInstance().woodCuttingAbility(player))
 | 
				
			||||||
	    		WoodCutting.treeFellerCheck(player);
 | 
						    		Skills.abilityCheck(player, SkillType.WOODCUTTING);
 | 
				
			||||||
	    	if(PP.getPickaxePreparationMode() && Mining.canBeSuperBroken(block))
 | 
						    	if(PP.getPickaxePreparationMode() && Mining.canBeSuperBroken(block))
 | 
				
			||||||
	    		Mining.superBreakerCheck(player);
 | 
						    		Skills.abilityCheck(player, SkillType.MINING);
 | 
				
			||||||
	    	if(PP.getShovelPreparationMode() && Excavation.canBeGigaDrillBroken(block))
 | 
						    	if(PP.getShovelPreparationMode() && Excavation.canBeGigaDrillBroken(block))
 | 
				
			||||||
	    		Excavation.gigaDrillBreakerActivationCheck(player);
 | 
						    		Skills.abilityCheck(player, SkillType.EXCAVATION);
 | 
				
			||||||
    	}
 | 
					    	}
 | 
				
			||||||
 | 
					    	
 | 
				
			||||||
    	if(PP.getFistsPreparationMode() && (Excavation.canBeGigaDrillBroken(block) || id == 78))
 | 
					    	if(PP.getFistsPreparationMode() && (Excavation.canBeGigaDrillBroken(block) || id == 78))
 | 
				
			||||||
    		Unarmed.berserkActivationCheck(player);
 | 
					    		Skills.abilityCheck(player, SkillType.UNARMED);
 | 
				
			||||||
    	
 | 
					    	
 | 
				
			||||||
    	/*
 | 
					    	/*
 | 
				
			||||||
    	 * TREE FELLER STUFF
 | 
					    	 * TREE FELLER STUFF
 | 
				
			||||||
@@ -323,7 +324,7 @@ public class mcBlockListener implements Listener
 | 
				
			|||||||
    	 * LEAF BLOWER CHECKS
 | 
					    	 * LEAF BLOWER CHECKS
 | 
				
			||||||
    	 */
 | 
					    	 */
 | 
				
			||||||
    	if(id == 18 
 | 
					    	if(id == 18 
 | 
				
			||||||
    		&& mcPermissions.getInstance().woodcutting(player) 
 | 
					    		&& mcPermissions.getInstance().woodCuttingAbility(player) 
 | 
				
			||||||
    		&& PP.getSkillLevel(SkillType.WOODCUTTING) >= 100 
 | 
					    		&& PP.getSkillLevel(SkillType.WOODCUTTING) >= 100 
 | 
				
			||||||
    		&& m.blockBreakSimulate(block, player, true))
 | 
					    		&& m.blockBreakSimulate(block, player, true))
 | 
				
			||||||
    	{	
 | 
					    	{	
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,6 +45,7 @@ import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			|||||||
import com.gmail.nossr50.datatypes.SkillType;
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
import com.gmail.nossr50.party.Party;
 | 
					import com.gmail.nossr50.party.Party;
 | 
				
			||||||
import com.gmail.nossr50.skills.Acrobatics;
 | 
					import com.gmail.nossr50.skills.Acrobatics;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.skills.Archery;
 | 
				
			||||||
import com.gmail.nossr50.skills.BlastMining;
 | 
					import com.gmail.nossr50.skills.BlastMining;
 | 
				
			||||||
import com.gmail.nossr50.skills.Skills;
 | 
					import com.gmail.nossr50.skills.Skills;
 | 
				
			||||||
import com.gmail.nossr50.skills.Taming;
 | 
					import com.gmail.nossr50.skills.Taming;
 | 
				
			||||||
@@ -159,7 +160,7 @@ public class mcEntityListener implements Listener
 | 
				
			|||||||
    	if(plugin.misc.bleedTracker.contains((LivingEntity)x))
 | 
					    	if(plugin.misc.bleedTracker.contains((LivingEntity)x))
 | 
				
			||||||
    		plugin.misc.addToBleedRemovalQue((LivingEntity)x);
 | 
					    		plugin.misc.addToBleedRemovalQue((LivingEntity)x);
 | 
				
			||||||
    	
 | 
					    	
 | 
				
			||||||
		Skills.arrowRetrievalCheck(x, plugin);
 | 
							Archery.arrowRetrievalCheck(x, plugin);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(x instanceof Player){
 | 
					    	if(x instanceof Player){
 | 
				
			||||||
    		Player player = (Player)x;
 | 
					    		Player player = (Player)x;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -227,8 +227,14 @@ public class mcPlayerListener implements Listener
 | 
				
			|||||||
			if(LoadProperties.enableAbilities && m.abilityBlockCheck(block))
 | 
								if(LoadProperties.enableAbilities && m.abilityBlockCheck(block))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if(block != null && m.isHoe(is) && !mat.equals(Material.DIRT) && !mat.equals(Material.GRASS) && !mat.equals(Material.SOIL))
 | 
									if(block != null && m.isHoe(is) && !mat.equals(Material.DIRT) && !mat.equals(Material.GRASS) && !mat.equals(Material.SOIL))
 | 
				
			||||||
					Skills.hoeReadinessCheck(player);
 | 
										Skills.activationCheck(player, SkillType.HERBALISM);
 | 
				
			||||||
				Skills.abilityActivationCheck(player);
 | 
									
 | 
				
			||||||
 | 
									Skills.activationCheck(player, SkillType.AXES);
 | 
				
			||||||
 | 
									Skills.activationCheck(player, SkillType.EXCAVATION);
 | 
				
			||||||
 | 
									Skills.activationCheck(player, SkillType.MINING);
 | 
				
			||||||
 | 
									Skills.activationCheck(player, SkillType.SWORDS);
 | 
				
			||||||
 | 
									Skills.activationCheck(player, SkillType.UNARMED);
 | 
				
			||||||
 | 
									Skills.activationCheck(player, SkillType.WOODCUTTING);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			//GREEN THUMB
 | 
								//GREEN THUMB
 | 
				
			||||||
@@ -274,8 +280,13 @@ public class mcPlayerListener implements Listener
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		if(LoadProperties.enableAbilities && action == Action.RIGHT_CLICK_AIR)
 | 
							if(LoadProperties.enableAbilities && action == Action.RIGHT_CLICK_AIR)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			Skills.hoeReadinessCheck(player);
 | 
								Skills.activationCheck(player, SkillType.AXES);
 | 
				
			||||||
			Skills.abilityActivationCheck(player);
 | 
								Skills.activationCheck(player, SkillType.EXCAVATION);
 | 
				
			||||||
 | 
								Skills.activationCheck(player, SkillType.HERBALISM);
 | 
				
			||||||
 | 
								Skills.activationCheck(player, SkillType.MINING);
 | 
				
			||||||
 | 
								Skills.activationCheck(player, SkillType.SWORDS);
 | 
				
			||||||
 | 
								Skills.activationCheck(player, SkillType.UNARMED);
 | 
				
			||||||
 | 
								Skills.activationCheck(player, SkillType.WOODCUTTING);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		/*
 | 
							/*
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@ import com.gmail.nossr50.Combat;
 | 
				
			|||||||
import com.gmail.nossr50.Users;
 | 
					import com.gmail.nossr50.Users;
 | 
				
			||||||
import com.gmail.nossr50.mcMMO;
 | 
					import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
import com.gmail.nossr50.locale.mcLocale;
 | 
					import com.gmail.nossr50.locale.mcLocale;
 | 
				
			||||||
import com.gmail.nossr50.skills.Skills;
 | 
					import com.gmail.nossr50.skills.Skills;
 | 
				
			||||||
import com.gmail.nossr50.skills.Swords;
 | 
					import com.gmail.nossr50.skills.Swords;
 | 
				
			||||||
@@ -51,12 +52,24 @@ public class mcTimer implements Runnable
 | 
				
			|||||||
			/*
 | 
								/*
 | 
				
			||||||
			 * MONITOR SKILLS
 | 
								 * MONITOR SKILLS
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			Skills.monitorSkills(player, PP, curTime);
 | 
								Skills.monitorSkill(player, PP, curTime, SkillType.AXES);
 | 
				
			||||||
 | 
								Skills.monitorSkill(player, PP, curTime, SkillType.EXCAVATION);
 | 
				
			||||||
 | 
								Skills.monitorSkill(player, PP, curTime, SkillType.HERBALISM);
 | 
				
			||||||
 | 
								Skills.monitorSkill(player, PP, curTime, SkillType.MINING);
 | 
				
			||||||
 | 
								Skills.monitorSkill(player, PP, curTime, SkillType.SWORDS);
 | 
				
			||||||
 | 
								Skills.monitorSkill(player, PP, curTime, SkillType.UNARMED);
 | 
				
			||||||
 | 
								Skills.monitorSkill(player, PP, curTime, SkillType.WOODCUTTING);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			/*
 | 
								/*
 | 
				
			||||||
			 * COOLDOWN MONITORING
 | 
								 * COOLDOWN MONITORING
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			Skills.watchCooldowns(player, PP, curTime);
 | 
								Skills.watchCooldown(player, PP, curTime, SkillType.AXES);
 | 
				
			||||||
 | 
								Skills.watchCooldown(player, PP, curTime, SkillType.EXCAVATION);
 | 
				
			||||||
 | 
								Skills.watchCooldown(player, PP, curTime, SkillType.HERBALISM);
 | 
				
			||||||
 | 
								Skills.watchCooldown(player, PP, curTime, SkillType.MINING);
 | 
				
			||||||
 | 
								Skills.watchCooldown(player, PP, curTime, SkillType.SWORDS);
 | 
				
			||||||
 | 
								Skills.watchCooldown(player, PP, curTime, SkillType.UNARMED);
 | 
				
			||||||
 | 
								Skills.watchCooldown(player, PP, curTime, SkillType.WOODCUTTING);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			/*
 | 
								/*
 | 
				
			||||||
			 * PLAYER BLEED MONITORING
 | 
								 * PLAYER BLEED MONITORING
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,10 @@ package com.gmail.nossr50.skills;
 | 
				
			|||||||
import org.bukkit.Location;
 | 
					import org.bukkit.Location;
 | 
				
			||||||
import org.bukkit.entity.Entity;
 | 
					import org.bukkit.entity.Entity;
 | 
				
			||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.gmail.nossr50.Users;
 | 
					import com.gmail.nossr50.Users;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.m;
 | 
				
			||||||
import com.gmail.nossr50.mcMMO;
 | 
					import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.SkillType;
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
@@ -96,4 +99,18 @@ public class Archery
 | 
				
			|||||||
			attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
 | 
								attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static void arrowRetrievalCheck(Entity entity, mcMMO plugin)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    	if(plugin.misc.arrowTracker.containsKey(entity))
 | 
				
			||||||
 | 
					    	{
 | 
				
			||||||
 | 
					    		Integer x = 0;
 | 
				
			||||||
 | 
					    		while(x < plugin.misc.arrowTracker.get(entity))
 | 
				
			||||||
 | 
					    		{
 | 
				
			||||||
 | 
						    		m.mcDropItem(entity.getLocation(), new ItemStack(262, 1));
 | 
				
			||||||
 | 
						    		x++;
 | 
				
			||||||
 | 
					    		}
 | 
				
			||||||
 | 
					    	}
 | 
				
			||||||
 | 
					    	plugin.misc.arrowTracker.remove(entity);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,51 +24,15 @@ import org.bukkit.entity.Wolf;
 | 
				
			|||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
					import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
				
			||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.gmail.nossr50.locale.mcLocale;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.Combat;
 | 
					import com.gmail.nossr50.Combat;
 | 
				
			||||||
import com.gmail.nossr50.Users;
 | 
					import com.gmail.nossr50.Users;
 | 
				
			||||||
import com.gmail.nossr50.m;
 | 
					import com.gmail.nossr50.m;
 | 
				
			||||||
import com.gmail.nossr50.mcPermissions;
 | 
					import com.gmail.nossr50.mcPermissions;
 | 
				
			||||||
import com.gmail.nossr50.config.LoadProperties;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.AbilityType;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.SkillType;
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
import com.gmail.nossr50.party.Party;
 | 
					import com.gmail.nossr50.party.Party;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Axes {
 | 
					public class Axes {
 | 
				
			||||||
	public static void skullSplitterCheck(Player player){
 | 
					 | 
				
			||||||
    	PlayerProfile PP = Users.getProfile(player);
 | 
					 | 
				
			||||||
    	if(m.isAxes(player.getItemInHand()) && mcPermissions.getInstance().axesAbility(player)){
 | 
					 | 
				
			||||||
    		/*
 | 
					 | 
				
			||||||
    		 * CHECK FOR AXE PREP MODE
 | 
					 | 
				
			||||||
    		 */
 | 
					 | 
				
			||||||
    		if(PP.getAxePreparationMode())
 | 
					 | 
				
			||||||
    		{
 | 
					 | 
				
			||||||
    			PP.setAxePreparationMode(false);
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
    		int ticks = 2;
 | 
					 | 
				
			||||||
    		int x = PP.getSkillLevel(SkillType.AXES);
 | 
					 | 
				
			||||||
    		while(x >= 50){
 | 
					 | 
				
			||||||
    			x-=50;
 | 
					 | 
				
			||||||
    			ticks++;
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    		if(!PP.getSkullSplitterMode() && Skills.cooldownOver(player, (PP.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000), LoadProperties.skullSplitterCooldown))
 | 
					 | 
				
			||||||
    		{
 | 
					 | 
				
			||||||
    			player.sendMessage(mcLocale.getString("Skills.SkullSplitterOn"));
 | 
					 | 
				
			||||||
    			for(Player y : player.getWorld().getPlayers()){
 | 
					 | 
				
			||||||
	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 | 
					 | 
				
			||||||
	    				y.sendMessage(mcLocale.getString("Skills.SkullSplitterPlayer", new Object[] {player.getName()}));
 | 
					 | 
				
			||||||
	    		}
 | 
					 | 
				
			||||||
    			PP.setSkillDATS(AbilityType.SKULL_SPLIITER, System.currentTimeMillis()+(ticks*1000));
 | 
					 | 
				
			||||||
    			PP.setSkullSplitterMode(true);
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
    		if(!PP.getSkullSplitterMode() && !Skills.cooldownOver(player, (PP.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000), LoadProperties.skullSplitterCooldown)){
 | 
					 | 
				
			||||||
    			player.sendMessage(mcLocale.getString("Skills.TooTired")
 | 
					 | 
				
			||||||
    					+ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, (PP.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000), LoadProperties.skullSplitterCooldown)+"s)");
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
    	}
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx)
 | 
						public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,12 +27,10 @@ import org.bukkit.inventory.ItemStack;
 | 
				
			|||||||
import org.bukkit.enchantments.Enchantment;
 | 
					import org.bukkit.enchantments.Enchantment;
 | 
				
			||||||
import org.bukkit.event.player.PlayerAnimationEvent;
 | 
					import org.bukkit.event.player.PlayerAnimationEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.gmail.nossr50.locale.mcLocale;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.spout.SpoutStuff;
 | 
					import com.gmail.nossr50.spout.SpoutStuff;
 | 
				
			||||||
import com.gmail.nossr50.Users;
 | 
					import com.gmail.nossr50.Users;
 | 
				
			||||||
import com.gmail.nossr50.m;
 | 
					import com.gmail.nossr50.m;
 | 
				
			||||||
import com.gmail.nossr50.config.LoadProperties;
 | 
					import com.gmail.nossr50.config.LoadProperties;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.AbilityType;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.SkillType;
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
 | 
					import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
 | 
				
			||||||
@@ -41,37 +39,6 @@ import org.getspout.spoutapi.sound.SoundEffect;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class Excavation
 | 
					public class Excavation
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public static void gigaDrillBreakerActivationCheck(Player player)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		PlayerProfile PP = Users.getProfile(player);
 | 
					 | 
				
			||||||
		if(m.isShovel(player.getItemInHand()))
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
	    	if(PP.getShovelPreparationMode())
 | 
					 | 
				
			||||||
    			PP.setShovelPreparationMode(false);
 | 
					 | 
				
			||||||
	    	
 | 
					 | 
				
			||||||
	    	int ticks = 2;
 | 
					 | 
				
			||||||
	    	int x = PP.getSkillLevel(SkillType.EXCAVATION);
 | 
					 | 
				
			||||||
    		while(x >= 50)
 | 
					 | 
				
			||||||
    		{
 | 
					 | 
				
			||||||
    			x-=50;
 | 
					 | 
				
			||||||
    			ticks++;
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
    		
 | 
					 | 
				
			||||||
	    	if(!PP.getGigaDrillBreakerMode() && PP.getSkillDATS(AbilityType.GIGA_DRILL_BREAKER) < System.currentTimeMillis())
 | 
					 | 
				
			||||||
	    	{
 | 
					 | 
				
			||||||
	    		player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOn"));
 | 
					 | 
				
			||||||
	    		for(Player y : player.getWorld().getPlayers())
 | 
					 | 
				
			||||||
	    		{
 | 
					 | 
				
			||||||
	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 | 
					 | 
				
			||||||
	    				y.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerPlayer", new Object[] {player.getName()}));
 | 
					 | 
				
			||||||
	    		}
 | 
					 | 
				
			||||||
	    		PP.setSkillDATS(AbilityType.GIGA_DRILL_BREAKER, System.currentTimeMillis()+(ticks*1000));
 | 
					 | 
				
			||||||
	    		PP.setGigaDrillBreakerMode(true);
 | 
					 | 
				
			||||||
	    	}
 | 
					 | 
				
			||||||
	    	
 | 
					 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	public static boolean canBeGigaDrillBroken(Block block)
 | 
						public static boolean canBeGigaDrillBroken(Block block)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		switch(block.getType()){
 | 
							switch(block.getType()){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,45 +30,12 @@ import com.gmail.nossr50.Users;
 | 
				
			|||||||
import com.gmail.nossr50.m;
 | 
					import com.gmail.nossr50.m;
 | 
				
			||||||
import com.gmail.nossr50.mcMMO;
 | 
					import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
import com.gmail.nossr50.config.LoadProperties;
 | 
					import com.gmail.nossr50.config.LoadProperties;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.AbilityType;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.SkillType;
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
import com.gmail.nossr50.locale.mcLocale;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Herbalism 
 | 
					public class Herbalism 
 | 
				
			||||||
{	
 | 
					{	
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	public static void greenTerraCheck(Player player)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		PlayerProfile PP = Users.getProfile(player);
 | 
					 | 
				
			||||||
	    if(m.isHoe(player.getItemInHand()))
 | 
					 | 
				
			||||||
	    {
 | 
					 | 
				
			||||||
	    	if(PP.getHoePreparationMode())
 | 
					 | 
				
			||||||
				PP.setHoePreparationMode(false);
 | 
					 | 
				
			||||||
	    	int ticks = 2;
 | 
					 | 
				
			||||||
	    	int x = PP.getSkillLevel(SkillType.HERBALISM);
 | 
					 | 
				
			||||||
			while(x >= 50)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				x-=50;
 | 
					 | 
				
			||||||
				ticks++;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			
 | 
					 | 
				
			||||||
	    	if(!PP.getGreenTerraMode() && Skills.cooldownOver(player, PP.getSkillDATS(AbilityType.GREEN_TERRA), LoadProperties.greenTerraCooldown))
 | 
					 | 
				
			||||||
	    	{
 | 
					 | 
				
			||||||
	    		player.sendMessage(mcLocale.getString("Skills.GreenTerraOn"));
 | 
					 | 
				
			||||||
	    		for(Player y : player.getWorld().getPlayers())
 | 
					 | 
				
			||||||
	    		{
 | 
					 | 
				
			||||||
	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 | 
					 | 
				
			||||||
	    				y.sendMessage(mcLocale.getString("Skills.GreenTerraPlayer", new Object[] {player.getName()}));
 | 
					 | 
				
			||||||
	    		}
 | 
					 | 
				
			||||||
	    		PP.setSkillDATS(AbilityType.GREEN_TERRA, System.currentTimeMillis()+(ticks*1000));
 | 
					 | 
				
			||||||
	    		PP.setGreenTerraMode(true);
 | 
					 | 
				
			||||||
	    	}
 | 
					 | 
				
			||||||
	    	
 | 
					 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	public static void greenTerra(Player player, Block block){
 | 
						public static void greenTerra(Player player, Block block){
 | 
				
			||||||
		PlayerInventory inventory = player.getInventory();
 | 
							PlayerInventory inventory = player.getInventory();
 | 
				
			||||||
		boolean hasSeeds = inventory.contains(Material.SEEDS);
 | 
							boolean hasSeeds = inventory.contains(Material.SEEDS);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,44 +30,13 @@ import com.gmail.nossr50.m;
 | 
				
			|||||||
import com.gmail.nossr50.mcMMO;
 | 
					import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
import com.gmail.nossr50.config.LoadProperties;
 | 
					import com.gmail.nossr50.config.LoadProperties;
 | 
				
			||||||
import com.gmail.nossr50.spout.SpoutStuff;
 | 
					import com.gmail.nossr50.spout.SpoutStuff;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.AbilityType;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.SkillType;
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
import com.gmail.nossr50.locale.mcLocale;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Mining 
 | 
					public class Mining 
 | 
				
			||||||
{	
 | 
					{	
 | 
				
			||||||
	public static void superBreakerCheck(Player player)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		PlayerProfile PP = Users.getProfile(player);
 | 
					 | 
				
			||||||
	    if(m.isMiningPick(player.getItemInHand()))
 | 
					 | 
				
			||||||
	    {
 | 
					 | 
				
			||||||
	    	if(PP.getPickaxePreparationMode())
 | 
					 | 
				
			||||||
    			PP.setPickaxePreparationMode(false);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    	int ticks = 2;
 | 
					 | 
				
			||||||
	    	int x = PP.getSkillLevel(SkillType.MINING);
 | 
					 | 
				
			||||||
	    	
 | 
					 | 
				
			||||||
    		while(x >= 50)
 | 
					 | 
				
			||||||
    		{
 | 
					 | 
				
			||||||
    			x-=50;
 | 
					 | 
				
			||||||
    			ticks++;
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
    		
 | 
					 | 
				
			||||||
	    	if(!PP.getSuperBreakerMode() && Skills.cooldownOver(player, PP.getSkillDATS(AbilityType.SUPER_BREAKER), LoadProperties.superBreakerCooldown)){
 | 
					 | 
				
			||||||
	    		player.sendMessage(mcLocale.getString("Skills.SuperBreakerOn"));
 | 
					 | 
				
			||||||
	    		for(Player y : player.getWorld().getPlayers())
 | 
					 | 
				
			||||||
	    		{
 | 
					 | 
				
			||||||
	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 | 
					 | 
				
			||||||
	    				y.sendMessage(mcLocale.getString("Skills.SuperBreakerPlayer", new Object[] {player.getName()}));
 | 
					 | 
				
			||||||
	    		}
 | 
					 | 
				
			||||||
	    		PP.setSkillDATS(AbilityType.SUPER_BREAKER, System.currentTimeMillis()+(ticks*1000));
 | 
					 | 
				
			||||||
	    		PP.setSuperBreakerMode(true);
 | 
					 | 
				
			||||||
	    	}
 | 
					 | 
				
			||||||
	    	
 | 
					 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public static void blockProcSimulate(Block block, Player player)
 | 
						public static void blockProcSimulate(Block block, Player player)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
    	Location loc = block.getLocation();
 | 
					    	Location loc = block.getLocation();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,16 +20,13 @@ import java.util.logging.Logger;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.bukkit.Bukkit;
 | 
					import org.bukkit.Bukkit;
 | 
				
			||||||
import org.bukkit.ChatColor;
 | 
					import org.bukkit.ChatColor;
 | 
				
			||||||
import org.bukkit.entity.Entity;
 | 
					 | 
				
			||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
import org.bukkit.inventory.ItemStack;
 | 
					 | 
				
			||||||
import org.getspout.spoutapi.SpoutManager;
 | 
					import org.getspout.spoutapi.SpoutManager;
 | 
				
			||||||
import org.getspout.spoutapi.player.SpoutPlayer;
 | 
					import org.getspout.spoutapi.player.SpoutPlayer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.gmail.nossr50.Leaderboard;
 | 
					import com.gmail.nossr50.Leaderboard;
 | 
				
			||||||
import com.gmail.nossr50.Users;
 | 
					import com.gmail.nossr50.Users;
 | 
				
			||||||
import com.gmail.nossr50.m;
 | 
					import com.gmail.nossr50.m;
 | 
				
			||||||
import com.gmail.nossr50.mcMMO;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.mcPermissions;
 | 
					import com.gmail.nossr50.mcPermissions;
 | 
				
			||||||
import com.gmail.nossr50.config.LoadProperties;
 | 
					import com.gmail.nossr50.config.LoadProperties;
 | 
				
			||||||
import com.gmail.nossr50.spout.SpoutStuff;
 | 
					import com.gmail.nossr50.spout.SpoutStuff;
 | 
				
			||||||
@@ -37,248 +34,79 @@ import com.gmail.nossr50.datatypes.AbilityType;
 | 
				
			|||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerStat;
 | 
					import com.gmail.nossr50.datatypes.PlayerStat;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.SkillType;
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.datatypes.ToolType;
 | 
				
			||||||
import com.gmail.nossr50.events.McMMOPlayerLevelUpEvent;
 | 
					import com.gmail.nossr50.events.McMMOPlayerLevelUpEvent;
 | 
				
			||||||
import com.gmail.nossr50.locale.mcLocale;
 | 
					import com.gmail.nossr50.locale.mcLocale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
public class Skills 
 | 
					public class Skills 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	protected static final Logger log = Logger.getLogger("Minecraft");
 | 
						protected static final Logger log = Logger.getLogger("Minecraft");
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public void updateSQLfromFile(Player player){
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public static boolean cooldownOver(Player player, long oldTime, int cooldown){
 | 
						public static boolean cooldownOver(Player player, long oldTime, int cooldown){
 | 
				
			||||||
		long currentTime = System.currentTimeMillis();
 | 
							long currentTime = System.currentTimeMillis();
 | 
				
			||||||
		if(currentTime - oldTime >= (cooldown * 1000)){
 | 
							if(currentTime - oldTime >= (cooldown * 1000))
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		} else {
 | 
							else
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public static int calculateTimeLeft(Player player, long deactivatedTimeStamp, int cooldown)
 | 
					    public static int calculateTimeLeft(Player player, long deactivatedTimeStamp, int cooldown)
 | 
				
			||||||
    {	
 | 
					    {	
 | 
				
			||||||
    	return (int) (((deactivatedTimeStamp + (cooldown * 1000)) - System.currentTimeMillis())/1000);
 | 
					    	return (int) (((deactivatedTimeStamp + (cooldown * 1000)) - System.currentTimeMillis())/1000);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public static void watchCooldowns(Player player, PlayerProfile PP, long curTime){
 | 
					    public static void watchCooldown(Player player, PlayerProfile PP, long curTime, SkillType skill)
 | 
				
			||||||
    	if(!PP.getGreenTerraInformed() && curTime - (PP.getSkillDATS(AbilityType.GREEN_TERRA)*1000) >= (LoadProperties.greenTerraCooldown * 1000)){
 | 
					    {
 | 
				
			||||||
			PP.setGreenTerraInformed(true);
 | 
					    	AbilityType ability = skill.getAbility();
 | 
				
			||||||
    		player.sendMessage(mcLocale.getString("Skills.YourGreenTerra"));
 | 
					    	
 | 
				
			||||||
    	}
 | 
					    	if(!ability.getInformed(PP) && curTime - (PP.getSkillDATS(ability) * 1000) >= (ability.getCooldown() * 1000))
 | 
				
			||||||
    	if(!PP.getTreeFellerInformed() && curTime - (PP.getSkillDATS(AbilityType.TREE_FELLER)*1000) >= (LoadProperties.treeFellerCooldown * 1000)){
 | 
					    	{
 | 
				
			||||||
			PP.setTreeFellerInformed(true);
 | 
					    		ability.setInformed(PP, true);
 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.YourTreeFeller"));
 | 
					    		player.sendMessage(ability.getAbilityRefresh());
 | 
				
			||||||
    	}
 | 
					 | 
				
			||||||
    	if(!PP.getSuperBreakerInformed() && curTime - (PP.getSkillDATS(AbilityType.SUPER_BREAKER)*1000) >= (LoadProperties.superBreakerCooldown * 1000)){
 | 
					 | 
				
			||||||
			PP.setSuperBreakerInformed(true);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.YourSuperBreaker"));
 | 
					 | 
				
			||||||
    	}
 | 
					 | 
				
			||||||
    	if(!PP.getSerratedStrikesInformed() && curTime - (PP.getSkillDATS(AbilityType.SERRATED_STRIKES)*1000) >= (LoadProperties.serratedStrikeCooldown * 1000)){
 | 
					 | 
				
			||||||
			PP.setSerratedStrikesInformed(true);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.YourSerratedStrikes"));
 | 
					 | 
				
			||||||
    	}
 | 
					 | 
				
			||||||
    	if(!PP.getBerserkInformed() && (curTime - (PP.getSkillDATS(AbilityType.BERSERK)*1000)) >= (LoadProperties.berserkCooldown * 1000)){
 | 
					 | 
				
			||||||
			PP.setBerserkInformed(true);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.YourBerserk"));
 | 
					 | 
				
			||||||
    	}
 | 
					 | 
				
			||||||
    	if(!PP.getSkullSplitterInformed() && curTime - (PP.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000) >= (LoadProperties.skullSplitterCooldown * 1000)){
 | 
					 | 
				
			||||||
			PP.setSkullSplitterInformed(true);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.YourSkullSplitter"));
 | 
					 | 
				
			||||||
    	}
 | 
					 | 
				
			||||||
    	if(!PP.getGigaDrillBreakerInformed() && curTime - (PP.getSkillDATS(AbilityType.GIGA_DRILL_BREAKER)*1000) >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){
 | 
					 | 
				
			||||||
			PP.setGigaDrillBreakerInformed(true);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.YourGigaDrillBreaker"));
 | 
					 | 
				
			||||||
    	}
 | 
					    	}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public static void hoeReadinessCheck(Player player)
 | 
					    
 | 
				
			||||||
 | 
					    public static void activationCheck(Player player, SkillType skill)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    	if(LoadProperties.enableOnlyActivateWhenSneaking && !player.isSneaking())
 | 
					    	if(LoadProperties.enableOnlyActivateWhenSneaking && !player.isSneaking())
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
    	
 | 
					    	
 | 
				
			||||||
    	PlayerProfile PP = Users.getProfile(player);
 | 
					    	PlayerProfile PP = Users.getProfile(player);
 | 
				
			||||||
    	if(mcPermissions.getInstance().herbalismAbility(player) && m.isHoe(player.getItemInHand()) && !PP.getHoePreparationMode()){
 | 
					    	AbilityType ability = skill.getAbility();
 | 
				
			||||||
    		if(!PP.getGreenTerraMode() && !cooldownOver(player, (PP.getSkillDATS(AbilityType.GREEN_TERRA)*1000), LoadProperties.greenTerraCooldown)){
 | 
					    	ToolType tool = skill.getTool();
 | 
				
			||||||
	    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 | 
					 | 
				
			||||||
	    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getSkillDATS(AbilityType.GREEN_TERRA)*1000), LoadProperties.greenTerraCooldown)+"s)");
 | 
					 | 
				
			||||||
	    		return;
 | 
					 | 
				
			||||||
	    	}
 | 
					 | 
				
			||||||
    		if(LoadProperties.enableAbilityMessages)
 | 
					 | 
				
			||||||
    			player.sendMessage(mcLocale.getString("Skills.ReadyHoe"));
 | 
					 | 
				
			||||||
			PP.setHoePreparationATS(System.currentTimeMillis());
 | 
					 | 
				
			||||||
			PP.setHoePreparationMode(true);
 | 
					 | 
				
			||||||
    	}
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    	
 | 
					    	
 | 
				
			||||||
    public static void monitorSkills(Player player, PlayerProfile PP, long curTime){
 | 
					 | 
				
			||||||
		if(PP.getHoePreparationMode() && curTime - (PP.getHoePreparationATS()*1000) >= 4000){
 | 
					 | 
				
			||||||
			PP.setHoePreparationMode(false);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.LowerHoe"));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if(PP.getAxePreparationMode() && curTime - (PP.getAxePreparationATS()*1000) >= 4000){
 | 
					 | 
				
			||||||
			PP.setAxePreparationMode(false);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.LowerAxe"));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if(PP.getPickaxePreparationMode() && curTime - (PP.getPickaxePreparationATS()*1000) >= 4000){
 | 
					 | 
				
			||||||
			PP.setPickaxePreparationMode(false);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.LowerPickAxe"));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if(PP.getSwordsPreparationMode() && curTime - (PP.getSwordsPreparationATS()*1000) >= 4000){
 | 
					 | 
				
			||||||
			PP.setSwordsPreparationMode(false);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.LowerSword"));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if(PP.getFistsPreparationMode() && curTime - (PP.getFistsPreparationATS()*1000) >= 4000){
 | 
					 | 
				
			||||||
			PP.setFistsPreparationMode(false);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.LowerFists"));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if(PP.getShovelPreparationMode() && curTime - (PP.getShovelPreparationATS()*1000) >= 4000){
 | 
					 | 
				
			||||||
			PP.setShovelPreparationMode(false);
 | 
					 | 
				
			||||||
			player.sendMessage(mcLocale.getString("Skills.LowerShovel"));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		/*
 | 
					 | 
				
			||||||
		 * HERBALISM ABILITY
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		if(mcPermissions.getInstance().herbalismAbility(player)){
 | 
					 | 
				
			||||||
			if(PP.getGreenTerraMode() && (PP.getSkillDATS(AbilityType.GREEN_TERRA)*1000) <= curTime){
 | 
					 | 
				
			||||||
				PP.setGreenTerraMode(false);
 | 
					 | 
				
			||||||
				PP.setGreenTerraInformed(false);
 | 
					 | 
				
			||||||
				player.sendMessage(mcLocale.getString("Skills.GreenTerraOff"));
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		/*
 | 
					 | 
				
			||||||
		 * AXES ABILITY
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		if(mcPermissions.getInstance().axesAbility(player)){
 | 
					 | 
				
			||||||
			if(PP.getSkullSplitterMode() && (PP.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000) <= curTime){
 | 
					 | 
				
			||||||
					PP.setSkullSplitterMode(false);
 | 
					 | 
				
			||||||
					PP.setSkullSplitterInformed(false);
 | 
					 | 
				
			||||||
					player.sendMessage(mcLocale.getString("Skills.SkullSplitterOff"));
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		/*
 | 
					 | 
				
			||||||
		 * WOODCUTTING ABILITY
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		if(mcPermissions.getInstance().woodCuttingAbility(player)){
 | 
					 | 
				
			||||||
			if(PP.getTreeFellerMode() && (PP.getSkillDATS(AbilityType.TREE_FELLER)*1000) <= curTime){
 | 
					 | 
				
			||||||
					PP.setTreeFellerMode(false);
 | 
					 | 
				
			||||||
					PP.setTreeFellerInformed(false);
 | 
					 | 
				
			||||||
					player.sendMessage(mcLocale.getString("Skills.TreeFellerOff"));
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		/*
 | 
					 | 
				
			||||||
		 * MINING ABILITY
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		if(mcPermissions.getInstance().miningAbility(player)){
 | 
					 | 
				
			||||||
			if(PP.getSuperBreakerMode() && (PP.getSkillDATS(AbilityType.SUPER_BREAKER)*1000) <= curTime){
 | 
					 | 
				
			||||||
					PP.setSuperBreakerMode(false);
 | 
					 | 
				
			||||||
					PP.setSuperBreakerInformed(false);
 | 
					 | 
				
			||||||
					player.sendMessage(mcLocale.getString("Skills.SuperBreakerOff"));
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		/*
 | 
					 | 
				
			||||||
		 * EXCAVATION ABILITY
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		if(mcPermissions.getInstance().excavationAbility(player)){
 | 
					 | 
				
			||||||
			if(PP.getGigaDrillBreakerMode() && (PP.getSkillDATS(AbilityType.GIGA_DRILL_BREAKER)*1000) <= curTime){
 | 
					 | 
				
			||||||
					PP.setGigaDrillBreakerMode(false);
 | 
					 | 
				
			||||||
					PP.setGigaDrillBreakerInformed(false);
 | 
					 | 
				
			||||||
					player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOff"));
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		/*
 | 
					 | 
				
			||||||
		 * SWORDS ABILITY
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		if(mcPermissions.getInstance().swordsAbility(player)){
 | 
					 | 
				
			||||||
			if(PP.getSerratedStrikesMode() && (PP.getSkillDATS(AbilityType.SERRATED_STRIKES)*1000) <= curTime){
 | 
					 | 
				
			||||||
					PP.setSerratedStrikesMode(false);
 | 
					 | 
				
			||||||
					PP.setSerratedStrikesInformed(false);
 | 
					 | 
				
			||||||
					player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOff"));
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		/*
 | 
					 | 
				
			||||||
		 * UNARMED ABILITY
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		if(mcPermissions.getInstance().unarmedAbility(player)){
 | 
					 | 
				
			||||||
			if(PP.getBerserkMode() && (PP.getSkillDATS(AbilityType.BERSERK)*1000) <= curTime){
 | 
					 | 
				
			||||||
					PP.setBerserkMode(false);
 | 
					 | 
				
			||||||
					PP.setBerserkInformed(false);
 | 
					 | 
				
			||||||
					player.sendMessage(mcLocale.getString("Skills.BerserkOff"));
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public static void abilityActivationCheck(Player player)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		if(LoadProperties.enableOnlyActivateWhenSneaking && !player.isSneaking())
 | 
					 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
    	PlayerProfile PP = Users.getProfile(player);
 | 
					 | 
				
			||||||
    	if(PP != null)
 | 
					 | 
				
			||||||
    	{
 | 
					 | 
				
			||||||
    	if(!PP.getAbilityUse() || PP.getSuperBreakerMode() || PP.getSerratedStrikesMode() || PP.getTreeFellerMode() || PP.getGreenTerraMode() || PP.getBerserkMode() || PP.getGigaDrillBreakerMode())
 | 
					    	if(!PP.getAbilityUse() || PP.getSuperBreakerMode() || PP.getSerratedStrikesMode() || PP.getTreeFellerMode() || PP.getGreenTerraMode() || PP.getBerserkMode() || PP.getGigaDrillBreakerMode())
 | 
				
			||||||
    		return;
 | 
					    		return;
 | 
				
			||||||
	    	if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode())
 | 
					    	
 | 
				
			||||||
 | 
					    	if(ability.getPermissions(player) && tool.inHand(player.getItemInHand()) && !tool.getToolMode(PP))
 | 
				
			||||||
    	{
 | 
					    	{
 | 
				
			||||||
	    		if(!PP.getSuperBreakerMode() && !cooldownOver(player, (PP.getSkillDATS(AbilityType.SUPER_BREAKER)*1000), LoadProperties.superBreakerCooldown))
 | 
					    		player.sendMessage(mcLocale.getString("Skills.TooTired") + ChatColor.YELLOW + " (" + calculateTimeLeft(player, (PP.getSkillDATS(ability) * 1000), ability.getCooldown()) + "s)");
 | 
				
			||||||
	    		{
 | 
					 | 
				
			||||||
		    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 | 
					 | 
				
			||||||
		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getSkillDATS(AbilityType.SUPER_BREAKER)*1000), LoadProperties.superBreakerCooldown)+"s)");
 | 
					 | 
				
			||||||
    		return;
 | 
					    		return;
 | 
				
			||||||
    	}
 | 
					    	}
 | 
				
			||||||
 | 
					    	
 | 
				
			||||||
    	if(LoadProperties.enableAbilityMessages)
 | 
					    	if(LoadProperties.enableAbilityMessages)
 | 
				
			||||||
	    			player.sendMessage(mcLocale.getString("Skills.ReadyPickAxe"));
 | 
					    		player.sendMessage(tool.getRaiseTool());
 | 
				
			||||||
				PP.setPickaxePreparationATS(System.currentTimeMillis());
 | 
					    	
 | 
				
			||||||
				PP.setPickaxePreparationMode(true);
 | 
					    	tool.setToolATS(PP, System.currentTimeMillis());
 | 
				
			||||||
 | 
					    	tool.setToolMode(PP, true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	    	if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode())
 | 
					    
 | 
				
			||||||
 | 
					    public static void monitorSkill(Player player, PlayerProfile PP, long curTime, SkillType skill){
 | 
				
			||||||
 | 
					    	ToolType tool = skill.getTool();
 | 
				
			||||||
 | 
					    	AbilityType ability = skill.getAbility();
 | 
				
			||||||
 | 
					    	if(tool.getToolMode(PP) && curTime - (tool.getToolATS(PP) * 1000) >= 4000)
 | 
				
			||||||
    	{
 | 
					    	{
 | 
				
			||||||
	    		if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, (PP.getSkillDATS(AbilityType.GIGA_DRILL_BREAKER)*1000), LoadProperties.gigaDrillBreakerCooldown))
 | 
					    		tool.setToolMode(PP, false);
 | 
				
			||||||
	    		{
 | 
					    		player.sendMessage(tool.getLowerTool());
 | 
				
			||||||
		    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 | 
					 | 
				
			||||||
		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getSkillDATS(AbilityType.GIGA_DRILL_BREAKER)*1000), LoadProperties.gigaDrillBreakerCooldown)+"s)");
 | 
					 | 
				
			||||||
		    		return;
 | 
					 | 
				
			||||||
    	}
 | 
					    	}
 | 
				
			||||||
	    		if(LoadProperties.enableAbilityMessages)
 | 
					    	
 | 
				
			||||||
	    			player.sendMessage(mcLocale.getString("Skills.ReadyShovel"));
 | 
					    	if(ability.getPermissions(player))
 | 
				
			||||||
				PP.setShovelPreparationATS(System.currentTimeMillis());
 | 
					 | 
				
			||||||
				PP.setShovelPreparationMode(true);
 | 
					 | 
				
			||||||
	    	}
 | 
					 | 
				
			||||||
	    	if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode())
 | 
					 | 
				
			||||||
    	{
 | 
					    	{
 | 
				
			||||||
	    		if(!PP.getSerratedStrikesMode() && !cooldownOver(player, (PP.getSkillDATS(AbilityType.SERRATED_STRIKES)*1000), LoadProperties.serratedStrikeCooldown))
 | 
					    		if(ability.getMode(PP) && (PP.getSkillDATS(ability) * 1000) <= curTime)
 | 
				
			||||||
    		{
 | 
					    		{
 | 
				
			||||||
		    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 | 
					    			ability.setMode(PP, false);
 | 
				
			||||||
		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getSkillDATS(AbilityType.SERRATED_STRIKES)*1000), LoadProperties.serratedStrikeCooldown)+"s)");
 | 
					    			ability.setInformed(PP, false);
 | 
				
			||||||
		    		return;
 | 
					    			player.sendMessage(ability.getAbilityOff());
 | 
				
			||||||
		    	}
 | 
					 | 
				
			||||||
	    		if(LoadProperties.enableAbilityMessages)
 | 
					 | 
				
			||||||
	    			player.sendMessage(mcLocale.getString("Skills.ReadySword"));
 | 
					 | 
				
			||||||
				PP.setSwordsPreparationATS(System.currentTimeMillis());
 | 
					 | 
				
			||||||
				PP.setSwordsPreparationMode(true);
 | 
					 | 
				
			||||||
	    	}
 | 
					 | 
				
			||||||
	    	if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode())
 | 
					 | 
				
			||||||
	    	{
 | 
					 | 
				
			||||||
		    	if(!PP.getBerserkMode() && !cooldownOver(player, (PP.getSkillDATS(AbilityType.BERSERK)*1000), LoadProperties.berserkCooldown))
 | 
					 | 
				
			||||||
		    	{
 | 
					 | 
				
			||||||
		    		player.sendMessage(mcLocale.getString("Skills.TooTired")
 | 
					 | 
				
			||||||
		    				+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getSkillDATS(AbilityType.BERSERK)*1000), LoadProperties.berserkCooldown)+"s)");
 | 
					 | 
				
			||||||
		    		return;
 | 
					 | 
				
			||||||
		    	}
 | 
					 | 
				
			||||||
		    	if(LoadProperties.enableAbilityMessages)
 | 
					 | 
				
			||||||
		    		player.sendMessage(mcLocale.getString("Skills.ReadyFists"));
 | 
					 | 
				
			||||||
				PP.setFistsPreparationATS(System.currentTimeMillis());
 | 
					 | 
				
			||||||
				PP.setFistsPreparationMode(true);
 | 
					 | 
				
			||||||
	    	}
 | 
					 | 
				
			||||||
	    	if((mcPermissions.getInstance().axesAbility(player) || mcPermissions.getInstance().woodCuttingAbility(player)) && !PP.getAxePreparationMode())
 | 
					 | 
				
			||||||
	    	{
 | 
					 | 
				
			||||||
	    		if(m.isAxes(player.getItemInHand()))
 | 
					 | 
				
			||||||
	    		{
 | 
					 | 
				
			||||||
	    			if(LoadProperties.enableAbilityMessages)
 | 
					 | 
				
			||||||
	    				player.sendMessage(mcLocale.getString("Skills.ReadyAxe"));
 | 
					 | 
				
			||||||
	    			PP.setAxePreparationATS(System.currentTimeMillis());
 | 
					 | 
				
			||||||
	    			PP.setAxePreparationMode(true);
 | 
					 | 
				
			||||||
	    		}
 | 
					 | 
				
			||||||
    		}
 | 
					    		}
 | 
				
			||||||
    	}
 | 
					    	}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -298,11 +126,6 @@ public class Skills
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	public static void XpCheckSkill(SkillType skillType, Player player)
 | 
						public static void XpCheckSkill(SkillType skillType, Player player)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if(skillType == SkillType.ALL) {
 | 
					 | 
				
			||||||
			XpCheckAll(player);
 | 
					 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		PlayerProfile PP = Users.getProfile(player);
 | 
							PlayerProfile PP = Users.getProfile(player);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if(PP.getSkillXpLevel(skillType) >= PP.getXpToLevel(skillType))
 | 
							if(PP.getSkillXpLevel(skillType) >= PP.getXpToLevel(skillType))
 | 
				
			||||||
@@ -311,7 +134,7 @@ public class Skills
 | 
				
			|||||||
			
 | 
								
 | 
				
			||||||
			while(PP.getSkillXpLevel(skillType) >= PP.getXpToLevel(skillType))
 | 
								while(PP.getSkillXpLevel(skillType) >= PP.getXpToLevel(skillType))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if(getSkillMaxLevel(skillType) >= PP.getSkillLevel(skillType) + 1) 
 | 
									if(skillType.getMaxLevel() >= PP.getSkillLevel(skillType) + 1) 
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					skillups++;
 | 
										skillups++;
 | 
				
			||||||
					PP.removeXP(skillType, PP.getXpToLevel(skillType));
 | 
										PP.removeXP(skillType, PP.getXpToLevel(skillType));
 | 
				
			||||||
@@ -370,36 +193,7 @@ public class Skills
 | 
				
			|||||||
			XpCheckSkill(x, player);
 | 
								XpCheckSkill(x, player);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	public static int getSkillMaxLevel(SkillType skillType) {
 | 
						
 | 
				
			||||||
		switch(skillType) {
 | 
					 | 
				
			||||||
			case ACROBATICS:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapAcrobatics > 0) ? LoadProperties.levelCapAcrobatics : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case ARCHERY:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapArchery > 0) ? LoadProperties.levelCapArchery : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case AXES:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapAxes > 0) ? LoadProperties.levelCapAxes : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case EXCAVATION:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapExcavation > 0) ? LoadProperties.levelCapExcavation : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case FISHING:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapFishing > 0) ? LoadProperties.levelCapFishing : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case HERBALISM:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapHerbalism > 0) ? LoadProperties.levelCapHerbalism : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case MINING:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapMining > 0) ? LoadProperties.levelCapMining : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case REPAIR:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapRepair > 0) ? LoadProperties.levelCapRepair : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case SWORDS:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapSwords > 0) ? LoadProperties.levelCapSwords : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case TAMING:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapTaming > 0) ? LoadProperties.levelCapTaming : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case UNARMED:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapUnarmed > 0) ? LoadProperties.levelCapUnarmed : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			case WOODCUTTING:
 | 
					 | 
				
			||||||
				return (LoadProperties.levelCapWoodcutting > 0) ? LoadProperties.levelCapWoodcutting : Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
			default:
 | 
					 | 
				
			||||||
				return Integer.MAX_VALUE;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
    public static SkillType getSkillType(String skillName)
 | 
					    public static SkillType getSkillType(String skillName)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    	for(SkillType x : SkillType.values())
 | 
					    	for(SkillType x : SkillType.values())
 | 
				
			||||||
@@ -409,6 +203,7 @@ public class Skills
 | 
				
			|||||||
    	}
 | 
					    	}
 | 
				
			||||||
    	return null;
 | 
					    	return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    public static boolean isSkill(String skillname){
 | 
					    public static boolean isSkill(String skillname){
 | 
				
			||||||
    	skillname = skillname.toUpperCase();
 | 
					    	skillname = skillname.toUpperCase();
 | 
				
			||||||
    	for(SkillType x : SkillType.values())
 | 
					    	for(SkillType x : SkillType.values())
 | 
				
			||||||
@@ -418,19 +213,8 @@ public class Skills
 | 
				
			|||||||
    	}
 | 
					    	}
 | 
				
			||||||
    	return false;
 | 
					    	return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public static void arrowRetrievalCheck(Entity entity, mcMMO plugin)
 | 
					    
 | 
				
			||||||
    {
 | 
					    //We should probably rework this - it's a fairly ugly way to do this, compared to our other command formatting.
 | 
				
			||||||
    	if(plugin.misc.arrowTracker.containsKey(entity))
 | 
					 | 
				
			||||||
    	{
 | 
					 | 
				
			||||||
    		Integer x = 0;
 | 
					 | 
				
			||||||
    		while(x < plugin.misc.arrowTracker.get(entity))
 | 
					 | 
				
			||||||
    		{
 | 
					 | 
				
			||||||
	    		m.mcDropItem(entity.getLocation(), new ItemStack(262, 1));
 | 
					 | 
				
			||||||
	    		x++;
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
    	}
 | 
					 | 
				
			||||||
    	plugin.misc.arrowTracker.remove(entity);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    public static String getSkillStats(String skillname, Integer level, Integer XP, Integer XPToLevel)
 | 
					    public static String getSkillStats(String skillname, Integer level, Integer XP, Integer XPToLevel)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    	ChatColor parColor = ChatColor.DARK_AQUA;
 | 
					    	ChatColor parColor = ChatColor.DARK_AQUA;
 | 
				
			||||||
@@ -440,6 +224,7 @@ public class Skills
 | 
				
			|||||||
    	
 | 
					    	
 | 
				
			||||||
		return skillColor+skillname+LvlColor+level+parColor+" XP"+"("+xpColor+XP+parColor+"/"+xpColor+XPToLevel+parColor+")";
 | 
							return skillColor+skillname+LvlColor+level+parColor+" XP"+"("+xpColor+XP+parColor+"/"+xpColor+XPToLevel+parColor+")";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    public static boolean hasCombatSkills(Player player)
 | 
					    public static boolean hasCombatSkills(Player player)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    	if(mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().archery(player) || mcPermissions.getInstance().swords(player) || mcPermissions.getInstance().taming(player) || mcPermissions.getInstance().unarmed(player))
 | 
					    	if(mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().archery(player) || mcPermissions.getInstance().swords(player) || mcPermissions.getInstance().taming(player) || mcPermissions.getInstance().unarmed(player))
 | 
				
			||||||
@@ -447,13 +232,15 @@ public class Skills
 | 
				
			|||||||
    	else
 | 
					    	else
 | 
				
			||||||
    		return false;
 | 
					    		return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    public static boolean hasGatheringSkills(Player player)
 | 
					    public static boolean hasGatheringSkills(Player player)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    	if(mcPermissions.getInstance().excavation(player) || mcPermissions.getInstance().herbalism(player) || mcPermissions.getInstance().mining(player) || mcPermissions.getInstance().woodcutting(player))
 | 
					    	if(mcPermissions.getInstance().excavation(player) || mcPermissions.getInstance().fishing(player) || mcPermissions.getInstance().herbalism(player) || mcPermissions.getInstance().mining(player) || mcPermissions.getInstance().woodcutting(player))
 | 
				
			||||||
    		return true;
 | 
					    		return true;
 | 
				
			||||||
    	else
 | 
					    	else
 | 
				
			||||||
    		return false;
 | 
					    		return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    public static boolean hasMiscSkills(Player player)
 | 
					    public static boolean hasMiscSkills(Player player)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    	if(mcPermissions.getInstance().acrobatics(player) || mcPermissions.getInstance().repair(player))
 | 
					    	if(mcPermissions.getInstance().acrobatics(player) || mcPermissions.getInstance().repair(player))
 | 
				
			||||||
@@ -461,4 +248,34 @@ public class Skills
 | 
				
			|||||||
    	else
 | 
					    	else
 | 
				
			||||||
    		return false;
 | 
					    		return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Check to see if an ability can be activated.
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param player The player activating the ability
 | 
				
			||||||
 | 
					     * @param type The skill the ability is based on
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static void abilityCheck(Player player, SkillType type)
 | 
				
			||||||
 | 
					    {    	
 | 
				
			||||||
 | 
					    	PlayerProfile PP = Users.getProfile(player);
 | 
				
			||||||
 | 
					    	AbilityType ability = type.getAbility();
 | 
				
			||||||
 | 
					    	if(type.getTool().inHand(player.getItemInHand()))
 | 
				
			||||||
 | 
					    	{
 | 
				
			||||||
 | 
					    		if(type.getTool().getToolMode(PP))
 | 
				
			||||||
 | 
					    			type.getTool().setToolMode(PP, false);
 | 
				
			||||||
 | 
					    		
 | 
				
			||||||
 | 
					    		int ticks = 2 + (PP.getSkillLevel(type) / 50);
 | 
				
			||||||
 | 
					    		if(!ability.getMode(PP) && cooldownOver(player, PP.getSkillDATS(ability), ability.getCooldown()))
 | 
				
			||||||
 | 
					    		{
 | 
				
			||||||
 | 
					    			player.sendMessage(ability.getAbilityOn());
 | 
				
			||||||
 | 
					    			for(Player y : player.getWorld().getPlayers())
 | 
				
			||||||
 | 
						    		{
 | 
				
			||||||
 | 
						    			if(y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 | 
				
			||||||
 | 
						    				y.sendMessage(ability.getAbilityPlayer(player));
 | 
				
			||||||
 | 
						    		}
 | 
				
			||||||
 | 
					    			PP.setSkillDATS(ability, System.currentTimeMillis()+(ticks*1000));
 | 
				
			||||||
 | 
					    			ability.setMode(PP, true);
 | 
				
			||||||
 | 
					    		}
 | 
				
			||||||
 | 
					    	}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,45 +27,12 @@ import com.gmail.nossr50.Users;
 | 
				
			|||||||
import com.gmail.nossr50.m;
 | 
					import com.gmail.nossr50.m;
 | 
				
			||||||
import com.gmail.nossr50.mcMMO;
 | 
					import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
import com.gmail.nossr50.mcPermissions;
 | 
					import com.gmail.nossr50.mcPermissions;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.AbilityType;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.SkillType;
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
import com.gmail.nossr50.locale.mcLocale;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.party.Party;
 | 
					import com.gmail.nossr50.party.Party;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Swords 
 | 
					public class Swords 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public static void serratedStrikesActivationCheck(Player player){
 | 
					 | 
				
			||||||
    	PlayerProfile PP = Users.getProfile(player);
 | 
					 | 
				
			||||||
		if(m.isSwords(player.getItemInHand()))
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			if(PP.getSwordsPreparationMode())
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
    			PP.setSwordsPreparationMode(false);
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
	    	int ticks = 2;
 | 
					 | 
				
			||||||
	    	int x = PP.getSkillLevel(SkillType.SWORDS);
 | 
					 | 
				
			||||||
    		while(x >= 50)
 | 
					 | 
				
			||||||
    		{
 | 
					 | 
				
			||||||
    			x-=50;
 | 
					 | 
				
			||||||
    			ticks++;
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
    		
 | 
					 | 
				
			||||||
	    	if(!PP.getSerratedStrikesMode() && PP.getSkillDATS(AbilityType.SERRATED_STRIKES) < System.currentTimeMillis())
 | 
					 | 
				
			||||||
	    	{
 | 
					 | 
				
			||||||
	    		player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOn"));
 | 
					 | 
				
			||||||
	    		for(Player y : player.getWorld().getPlayers())
 | 
					 | 
				
			||||||
	    		{
 | 
					 | 
				
			||||||
	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 | 
					 | 
				
			||||||
	    				y.sendMessage(mcLocale.getString("Skills.SerratedStrikesPlayer", new Object[] {player.getName()}));
 | 
					 | 
				
			||||||
	    		}
 | 
					 | 
				
			||||||
	    		PP.setSkillDATS(AbilityType.SERRATED_STRIKES, System.currentTimeMillis()+(ticks*1000));
 | 
					 | 
				
			||||||
	    		PP.setSerratedStrikesMode(true);
 | 
					 | 
				
			||||||
	    	}
 | 
					 | 
				
			||||||
	    	
 | 
					 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public static void bleedCheck(Player attacker, LivingEntity x, mcMMO pluginx)
 | 
						public static void bleedCheck(Player attacker, LivingEntity x, mcMMO pluginx)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
    	PlayerProfile PPa = Users.getProfile(attacker);
 | 
					    	PlayerProfile PPa = Users.getProfile(attacker);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,45 +21,10 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
				
			|||||||
import org.bukkit.inventory.ItemStack;
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
import com.gmail.nossr50.Users;
 | 
					import com.gmail.nossr50.Users;
 | 
				
			||||||
import com.gmail.nossr50.m;
 | 
					import com.gmail.nossr50.m;
 | 
				
			||||||
import com.gmail.nossr50.config.LoadProperties;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.AbilityType;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.PlayerProfile;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.SkillType;
 | 
					import com.gmail.nossr50.datatypes.SkillType;
 | 
				
			||||||
import com.gmail.nossr50.locale.mcLocale;
 | 
					import com.gmail.nossr50.locale.mcLocale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class Unarmed {
 | 
					public class Unarmed {
 | 
				
			||||||
	public static void berserkActivationCheck(Player player)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
    	PlayerProfile PP = Users.getProfile(player);
 | 
					 | 
				
			||||||
    	AbilityType ability = AbilityType.BERSERK;
 | 
					 | 
				
			||||||
		if(player.getItemInHand() == null)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			if(PP.getFistsPreparationMode())
 | 
					 | 
				
			||||||
    			PP.setFistsPreparationMode(false);
 | 
					 | 
				
			||||||
			
 | 
					 | 
				
			||||||
	    	int ticks = 2;
 | 
					 | 
				
			||||||
	    	int x = PP.getSkillLevel(SkillType.UNARMED);
 | 
					 | 
				
			||||||
	    	
 | 
					 | 
				
			||||||
    		while(x >= 50)
 | 
					 | 
				
			||||||
    		{
 | 
					 | 
				
			||||||
    			x-=50;
 | 
					 | 
				
			||||||
    			ticks++;
 | 
					 | 
				
			||||||
    		}
 | 
					 | 
				
			||||||
    		
 | 
					 | 
				
			||||||
	    	if(!PP.getBerserkMode() && Skills.cooldownOver(player, PP.getSkillDATS(ability), LoadProperties.berserkCooldown))
 | 
					 | 
				
			||||||
	    	{
 | 
					 | 
				
			||||||
	    		
 | 
					 | 
				
			||||||
	    		player.sendMessage(mcLocale.getString("Skills.BerserkOn"));
 | 
					 | 
				
			||||||
	    		for(Player y : player.getWorld().getPlayers())
 | 
					 | 
				
			||||||
	    		{
 | 
					 | 
				
			||||||
	    			if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
 | 
					 | 
				
			||||||
	    				y.sendMessage(mcLocale.getString("Skills.BerserkPlayer", new Object[] {player.getName()}));
 | 
					 | 
				
			||||||
	    		}
 | 
					 | 
				
			||||||
	    		PP.setSkillDATS(ability, System.currentTimeMillis()+(ticks*1000));
 | 
					 | 
				
			||||||
	    		PP.setBerserkMode(true);
 | 
					 | 
				
			||||||
	    	}
 | 
					 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static void unarmedBonus(Player attacker, EntityDamageByEntityEvent event)
 | 
						public static void unarmedBonus(Player attacker, EntityDamageByEntityEvent event)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user