浏览代码

Another WIP of 0.9

nossr50 14 年之前
父节点
当前提交
a8a35ae7a9

+ 7 - 2
mcMMO/Changelog.txt

@@ -4,18 +4,23 @@ Version 0.9
 --NEW CONTENT--
 Woodcutting now has the "Tree Feller" Ability
 Mining now has the "Super Breaker" Ability
+Axes now has the "Skull Splitter" Ability
+Excavation now has the "Giga Drill Breaker" Ability
+Added /mcrefresh tool for refreshing cooldowns
 Unarmed now has the "Deflect Arrows" passive skill
 Chimaera Wing Item Added
 
 --CHANGES--
+Woodcutting will drop the appropriate log on double drop procs
 Herbalism now applies double drops to herbs
 /<skillname> now shows much more information to the player regarding their stats
 Axes skill Critical Strikes are now based directly on your skill level
-Swords skill Bleed is now based directly on your skill level
-Unarmed disarm is now based directly on your skill level
+Swords skill Bleed chance is now based directly on your skill level
+Unarmed disarm chance is now based directly on your skill level
 Acrobatics now gives XP when you roll
 
 --BUGFIXES--
+Capped skills now have the correct proc chance
 /mmoedit is no longer case sensitive
 More NPE errors fixed
 

+ 20 - 5
mcMMO/com/gmail/nossr50/mcBlockListener.java

@@ -1,7 +1,5 @@
 package com.gmail.nossr50;
 
-import java.util.ArrayList;
-
 import org.bukkit.ChatColor;
 import org.bukkit.Location;
 import org.bukkit.Material;
@@ -55,6 +53,21 @@ public class mcBlockListener extends BlockListener {
     	Location loc = block.getLocation();
     	int dmg = event.getDamageLevel().getLevel();
     	
+    	/*
+    	 * GIGA DRILL BREAKER CHECKS
+    	 */
+    	if(mcUsers.getProfile(player).getGigaDrillBreakerMode() && dmg == 0 && mcExcavation.getInstance().canBeGigaDrillBroken(block) && mcm.getInstance().isShovel(inhand)){
+    		mcExcavation.getInstance().excavationProcCheck(block, player);
+    		mcExcavation.getInstance().excavationProcCheck(block, player);
+    		mcExcavation.getInstance().excavationProcCheck(block, player);
+    		Material mat = Material.getMaterial(block.getTypeId());
+    		if(block.getTypeId() == 2)
+    			mat = Material.DIRT;
+			byte type = block.getData();
+			ItemStack item = new ItemStack(mat, 1, (byte)0, type);
+			block.setType(Material.AIR);
+			block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+    	}
     	/*
     	 * SUPER BREAKER CHECKS
     	 */
@@ -112,8 +125,10 @@ public class mcBlockListener extends BlockListener {
 	    				for(Block blockx : mcConfig.getInstance().getTreeFeller()){
 	    					if(blockx != null){
 	    						Material mat = Material.getMaterial(block.getTypeId());
-	    						byte damage = 0;
-	    						ItemStack item = new ItemStack(mat, 1, (byte)0, damage);
+	    						byte type = 0;
+	    						if(block.getTypeId() == 17)
+	    							type = block.getData();
+	    						ItemStack item = new ItemStack(mat, 1, (byte)0, type);
 	    						if(blockx.getTypeId() == 17){
 	    							blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
 	    							mcWoodCutting.getInstance().woodCuttingProcCheck(player, blockx, blockx.getLocation());
@@ -121,7 +136,7 @@ public class mcBlockListener extends BlockListener {
 	    						}
 	    						if(blockx.getTypeId() == 18){
 	    							mat = Material.getMaterial(6);
-	    							item = new ItemStack(mat, 1, (byte)0, damage);
+	    							item = new ItemStack(mat, 1, (byte)0, type);
 	    							if(Math.random() * 10 > 8)
 	    								blockx.getLocation().getWorld().dropItemNaturally(blockx.getLocation(), item);
 	    						}

+ 3 - 3
mcMMO/com/gmail/nossr50/mcCombat.java

@@ -289,7 +289,7 @@ public class mcCombat {
     		Player defender = (Player)x;
     		if(mcPermissions.getInstance().unarmed(defender) && defender.getItemInHand().getTypeId() == 0){
 	    		if(mcUsers.getProfile(defender).getUnarmedInt() >= 1000){
-	    			if(Math.random() * 1000 >= 500){
+	    			if(Math.random() * 1000 <= 500){
 	    				event.setCancelled(true);
 	    				defender.sendMessage(ChatColor.WHITE+"**ARROW DEFLECT**");
 	    				return;
@@ -462,7 +462,7 @@ public class mcCombat {
     }
 	public boolean simulateUnarmedProc(Player player){
     	if(mcUsers.getProfile(player).getUnarmedInt() >= 750){
-    		if(Math.random() * 1000 >= 750){
+    		if(Math.random() * 1000 <= 750){
     			return true;
     		}
     	} else {
@@ -522,7 +522,7 @@ public class mcCombat {
     public void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Entity x){
     	if(mcm.getInstance().isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
     		if(mcUsers.getProfile(attacker).getAxesInt() >= 750){
-    			if(Math.random() * 1000 >= 750){
+    			if(Math.random() * 1000 <= 750){
     				event.setDamage(event.getDamage() * 2);
     				attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
     				if(x instanceof Player){

+ 1 - 0
mcMMO/com/gmail/nossr50/mcEntityListener.java

@@ -13,6 +13,7 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
 import org.bukkit.event.entity.EntityDeathEvent;
 import org.bukkit.event.entity.EntityListener;
 import org.bukkit.inventory.ItemStack;
+import org.bukkit.util.Vector;
 
 public class mcEntityListener extends EntityListener {
 	private final mcMMO plugin;

+ 44 - 1
mcMMO/com/gmail/nossr50/mcExcavation.java

@@ -19,7 +19,50 @@ public class mcExcavation {
     	}
     	return instance;
     	}
-	
+	public void gigaDrillBreakerActivationCheck(Player player, Block block){
+		if(mcm.getInstance().isShovel(player.getItemInHand())){
+	    	if(block != null){
+		    	if(!mcm.getInstance().abilityBlockCheck(block))
+		    		return;
+	    	}
+	    	
+	    	int ticks = 2;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 50)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 150)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 250)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 350)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 450)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 550)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 650)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 750)
+    			ticks++;
+    		
+	    	if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() == 0){
+	    		player.sendMessage(ChatColor.GREEN+"**GIGA DRILL BREAKER ACTIVATED**");
+	    		mcUsers.getProfile(player).setGigaDrillBreakerTicks(ticks);
+	    		mcUsers.getProfile(player).setGigaDrillBreakerMode(true);
+	    	}
+	    	
+	    	if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){
+	    		player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
+	    	}
+	    }
+	}
+	public boolean canBeGigaDrillBroken(Block block){
+		int i = block.getTypeId();
+		if(i == 2||i == 3||i == 12||i == 13){
+			return true;
+		} else {
+			return false;
+		}
+	}
 	public void excavationProcCheck(Block block, Player player){
     	int type = block.getTypeId();
     	Location loc = block.getLocation();

+ 3 - 1
mcMMO/com/gmail/nossr50/mcLoadProperties.java

@@ -2,7 +2,7 @@ package com.gmail.nossr50;
 
 public class mcLoadProperties {
 	public static Boolean pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, pvp, eggs, apples, myspawnclearsinventory, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages;
-	public static String mcmmo, mcc, mcitem, mcgod, stats, mmoedit, ptp, party, myspawn, setmyspawn, whois, invite, accept, clearmyspawn;
+	public static String mcmmo, mcc, mcrefresh, mcitem, mcgod, stats, mmoedit, ptp, party, myspawn, setmyspawn, whois, invite, accept, clearmyspawn;
 	public static int feathersConsumedByChimaeraWing, pvpxprewardmodifier, repairdiamondlevel, globalxpmodifier, miningxpmodifier, repairxpmodifier, woodcuttingxpmodifier, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier, archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier;
 	
 	public static void loadMain(){
@@ -53,9 +53,11 @@ public class mcLoadProperties {
     	sulphur = properties.getBoolean("canexcavatesulphur", true);
     	netherrack = properties.getBoolean("canexcavatenetherrack", true);
     	bones = properties.getBoolean("canexcavatebones", true);
+    	
     	/*
     	 * CUSTOM COMMANDS
     	 */
+    	mcrefresh = properties.getString("/mcrefresh", "mcrefresh");
     	mcitem = properties.getString("/mcitem", "mcitem");
     	mcmmo = properties.getString("/mcmmo", "mcmmo");
     	mcc = properties.getString("/mcc", "mcc");

+ 2 - 2
mcMMO/com/gmail/nossr50/mcMMO.java

@@ -67,7 +67,7 @@ public class mcMMO extends JavaPlugin {
         PluginManager pm = getServer().getPluginManager();
         pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
         pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Normal, this);
-        pm.registerEvent(Event.Type.BLOCK_DAMAGED, blockListener, Priority.Normal, this);
+        pm.registerEvent(Event.Type.BLOCK_DAMAGED, blockListener, Priority.Low, this);
         pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Monitor, this);
         pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.High, this);
         pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
@@ -76,7 +76,7 @@ public class mcMMO extends JavaPlugin {
         pm.registerEvent(Event.Type.PLAYER_ITEM, playerListener, Priority.Monitor, this);
         pm.registerEvent(Event.Type.PLAYER_RESPAWN, playerListener, Priority.Normal, this);
         pm.registerEvent(Event.Type.PLAYER_ITEM_HELD, playerListener, Priority.Normal, this);
-        pm.registerEvent(Event.Type.ENTITY_DAMAGED, entityListener, Priority.Normal, this);
+        pm.registerEvent(Event.Type.ENTITY_DAMAGED, entityListener, Priority.Low, this);
         pm.registerEvent(Event.Type.BLOCK_RIGHTCLICKED, blockListener, Priority.Normal, this);
         //pm.registerEvent(Event.Type.CREATURE_SPAWN, entityListener, Priority.Normal, this);
         //Displays a message when plugin is loaded

+ 1 - 1
mcMMO/com/gmail/nossr50/mcMining.java

@@ -26,7 +26,7 @@ public class mcMining {
 		    		return;
 	    	}
 	    	
-	    	int miningticks = 3;
+	    	int miningticks = 2;
     		if(mcUsers.getProfile(player).getMiningInt() >= 50)
     			miningticks++;
     		if(mcUsers.getProfile(player).getMiningInt() >= 150)

+ 14 - 0
mcMMO/com/gmail/nossr50/mcPermissions.java

@@ -30,6 +30,13 @@ public class mcPermissions {
     private boolean permission(Player player, String string) {
         return permissionsPlugin.Security.permission(player, string);  
     }
+    public boolean mcrefresh(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.tools.mcrefresh");
+        } else {
+            return true;
+        }
+    }
     public boolean mmoedit(Player player) {
         if (permissionsEnabled) {
             return permission(player, "mcmmo.tools.mmoedit");
@@ -37,6 +44,13 @@ public class mcPermissions {
             return true;
         }
     }
+    public boolean excavationAbility(Player player){
+    	if (permissionsEnabled) {
+            return permission(player, "mcmmo.ability.excavation");
+        } else {
+            return true;
+        }
+    }
     public boolean unarmedAbility(Player player){
     	if (permissionsEnabled) {
             return permission(player, "mcmmo.ability.unarmed");

+ 42 - 0
mcMMO/com/gmail/nossr50/mcPlayerListener.java

@@ -92,6 +92,48 @@ public class mcPlayerListener extends PlayerListener {
     	String playerName = player.getName();
     	//Check if the command is an mcMMO related help command
     	mcm.getInstance().mcmmoHelpCheck(split, player, event);
+		if(mcPermissions.permissionsEnabled && split[0].equalsIgnoreCase("/"+mcLoadProperties.mcrefresh)){
+			event.setCancelled(true);
+    		if(!mcPermissions.getInstance().mcrefresh(player)){
+    			player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions.");
+    			return;
+    		}
+    		if(split.length >= 2 && isPlayer(split[1])){
+    			player.sendMessage("You have refreshed "+split[1]+"'s cooldowns!");
+    			player = getPlayer(split[1]);
+    		}
+			/*
+			 * AXE PREPARATION MODE
+			 */
+    		mcUsers.getProfile(player).setAxePreparationMode(false);
+    		mcUsers.getProfile(player).setAxePreparationTicks(0);
+    		/*
+    		 * GIGA DRILL BREAKER
+    		 */
+    		mcUsers.getProfile(player).setGigaDrillBreakerCooldown(0);
+    		mcUsers.getProfile(player).setGigaDrillBreakerMode(false);
+    		mcUsers.getProfile(player).setGigaDrillBreakerTicks(0);
+    		/*
+    		 * SERRATED STRIKE
+    		 */
+    		mcUsers.getProfile(player).setSerratedStrikesCooldown(0);
+    		mcUsers.getProfile(player).setSerratedStrikesMode(false);
+    		mcUsers.getProfile(player).setSerratedStrikesTicks(0);
+    		/*
+    		 * SUPER BREAKER
+    		 */
+    		mcUsers.getProfile(player).setSuperBreakerCooldown(0);
+    		mcUsers.getProfile(player).setSuperBreakerMode(false);
+    		mcUsers.getProfile(player).setSuperBreakerTicks(0);
+    		/*
+    		 * TREE FELLER
+    		 */
+    		mcUsers.getProfile(player).setTreeFellerCooldown(0);
+    		mcUsers.getProfile(player).setTreeFellerMode(false);
+    		mcUsers.getProfile(player).setTreeFellerTicks(0);
+    		
+    		player.sendMessage(ChatColor.GREEN+"**ABILITIES REFRESHED!**");
+    	}
     	if(split[0].equalsIgnoreCase("/"+mcLoadProperties.mcitem)){
     		
     	}

+ 29 - 6
mcMMO/com/gmail/nossr50/mcSkills.java

@@ -38,25 +38,31 @@ public class mcSkills {
     	if(mcUsers.getProfile(player).getTreeFellerCooldown() >= 1){
     		mcUsers.getProfile(player).decreaseTreeFellerCooldown();
     		if(mcUsers.getProfile(player).getTreeFellerCooldown() == 0){
-    			player.sendMessage(ChatColor.GREEN+"Your Tree Felling ability is refreshed!");
+    			player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Tree Feller "+ChatColor.GREEN+"ability is refreshed!");
     		}
     	}
     	if(mcUsers.getProfile(player).getSuperBreakerCooldown() >= 1){
     		mcUsers.getProfile(player).decreaseSuperBreakerCooldown();
 			if(mcUsers.getProfile(player).getSuperBreakerCooldown() == 0){
-				player.sendMessage(ChatColor.GREEN+"Your Super Breaker ability is refreshed!");
+				player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Super Breaker "+ChatColor.GREEN+"ability is refreshed!");
 			}
     	}
     	if(mcUsers.getProfile(player).getSerratedStrikesCooldown() >= 1){
     		mcUsers.getProfile(player).decreaseSerratedStrikesCooldown();
 			if(mcUsers.getProfile(player).getSuperBreakerCooldown() == 0){
-				player.sendMessage(ChatColor.GREEN+"Your Serrated Strikes ability is refreshed!");
+				player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Serrated Strikes "+ChatColor.GREEN+"ability is refreshed!");
 			}
     	}
     	if(mcUsers.getProfile(player).getSkullSplitterCooldown() >= 1){
     		mcUsers.getProfile(player).decreaseSkullSplitterCooldown();
 			if(mcUsers.getProfile(player).getSkullSplitterCooldown() == 0){
-				player.sendMessage(ChatColor.GREEN+"Your Skull Splitter ability is refreshed!");
+				player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Skull Splitter "+ChatColor.GREEN+"ability is refreshed!");
+			}
+    	}
+    	if(mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){
+    		mcUsers.getProfile(player).decreaseGigaDrillBreakerCooldown();
+			if(mcUsers.getProfile(player).getGigaDrillBreakerCooldown() == 0){
+				player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Giga Drill Breaker "+ChatColor.GREEN+"ability is refreshed!");
 			}
     	}
     }
@@ -79,6 +85,9 @@ public class mcSkills {
     	if(mcPermissions.getInstance().miningability(player)){
     		mcMining.getInstance().superBreakerCheck(player, block);
     	}
+    	if(mcPermissions.getInstance().excavationAbility(player)){
+    		mcExcavation.getInstance().gigaDrillBreakerActivationCheck(player, block);
+    	}
     	axeActivationCheck(player, block);
     }
     public void skullSplitterCheck(Player player){
@@ -90,7 +99,7 @@ public class mcSkills {
     			mcUsers.getProfile(player).setAxePreparationMode(false);
     			mcUsers.getProfile(player).setAxePreparationTicks(0);
     		}
-    		int ticks = 3;
+    		int ticks = 2;
     		if(mcUsers.getProfile(player).getAxesInt() >= 50)
     			ticks++;
     		if(mcUsers.getProfile(player).getAxesInt() >= 150)
@@ -136,7 +145,7 @@ public class mcSkills {
     	 * AXES ABILITY
     	 */
     	if(mcPermissions.getInstance().axesAbility(player)){
-			//Monitor the length of TreeFeller mode
+			//Monitor the length of Skull Splitter mode
 			if(mcUsers.getProfile(player).getSkullSplitterMode()){
 				mcUsers.getProfile(player).decreaseSkullSplitterTicks();
 				if(mcUsers.getProfile(player).getSkullSplitterTicks() <= 0){
@@ -174,6 +183,20 @@ public class mcSkills {
 				}
 			}
 		}
+		/*
+		 * EXCAVATION ABILITY
+		 */
+		if(mcPermissions.getInstance().excavationAbility(player)){
+			//Monitor the length of Giga Drill Breaker mode
+			if(mcUsers.getProfile(player).getGigaDrillBreakerMode()){
+				mcUsers.getProfile(player).decreaseGigaDrillBreakerTicks();
+				if(mcUsers.getProfile(player).getGigaDrillBreakerTicks() <= 0){
+					mcUsers.getProfile(player).setGigaDrillBreakerMode(false);
+					mcUsers.getProfile(player).setGigaDrillBreakerCooldown(120);
+					player.sendMessage(ChatColor.GRAY+"**You feel spiral energy leaving you**");
+				}
+			}
+		}
     }
     public void XpCheck(Player player){
     	/*

+ 44 - 13
mcMMO/com/gmail/nossr50/mcUsers.java

@@ -156,8 +156,8 @@ class PlayerList
 	    protected final Logger log = Logger.getLogger("Minecraft");
 		private String playerName, gather, wgather, woodcutting, repair, mining, party, myspawn, myspawnworld, unarmed, herbalism, excavation,
 		archery, swords, axes, invite, acrobatics, repairgather, unarmedgather, herbalismgather, excavationgather, archerygather, swordsgather, axesgather, acrobaticsgather;
-		private boolean dead, treeFellerMode, superbreakermode, serratedStrikesMode, axePreparationMode, skullSplitterMode;
-		private int recentlyhurt = 0, bleedticks = 0, superbreakerticks = 0, superbreakercooldown = 0, 
+		private boolean dead, treeFellerMode, superBreakerMode, gigaDrillBreakerMode, serratedStrikesMode, axePreparationMode, skullSplitterMode;
+		private int recentlyhurt = 0, bleedticks = 0, gigaDrillBreaker = 0, gigaDrillBreakerCooldown = 0, gigaDrillBreakerTicks = 0, superBreakerTicks = 0, superBreakerCooldown = 0, 
 		serratedStrikesTicks = 0, skullSplitterTicks = 0, skullSplitterCooldown = 0, serratedStrikesCooldown = 0, treeFellerTicks = 0, treeFellerCooldown = 0,
 		axePreparationTicks = 0;
 		Player thisplayer;
@@ -436,7 +436,7 @@ class PlayerList
 			bleedticks = newvalue;
 		}
 		public Boolean hasCooldowns(){
-			if((treeFellerCooldown + superbreakercooldown) >= 1){
+			if((treeFellerCooldown + superBreakerCooldown) >= 1){
 				return true;
 			} else {
 				return false;
@@ -524,6 +524,37 @@ class PlayerList
 				serratedStrikesCooldown--;
 			}
 		}
+		/*
+		 * GIGA DRILL BREAKER
+		 */
+		public boolean getGigaDrillBreakerMode(){
+			return gigaDrillBreakerMode;
+		}
+		public void setGigaDrillBreakerMode(Boolean bool){
+			gigaDrillBreakerMode = bool;
+		}
+		public Integer getGigaDrillBreakerTicks(){
+			return gigaDrillBreakerTicks;
+		}
+		public void setGigaDrillBreakerTicks(Integer newvalue){
+			gigaDrillBreakerTicks = newvalue;
+		}
+		public void decreaseGigaDrillBreakerTicks(){
+			if(gigaDrillBreakerTicks >= 1){
+				gigaDrillBreakerTicks--;
+			}
+		}
+		public void setGigaDrillBreakerCooldown(Integer newvalue){
+			gigaDrillBreakerCooldown = newvalue;
+		}
+		public int getGigaDrillBreakerCooldown(){
+			return gigaDrillBreakerCooldown;
+		}
+		public void decreaseGigaDrillBreakerCooldown(){
+			if(gigaDrillBreakerCooldown >= 1){
+				gigaDrillBreakerCooldown--;
+			}
+		}
 		/*
 		 * TREE FELLER STUFF
 		 */
@@ -559,31 +590,31 @@ class PlayerList
 		 * MINING
 		 */
 		public boolean getSuperBreakerMode(){
-			return superbreakermode;
+			return superBreakerMode;
 		}
 		public void setSuperBreakerMode(Boolean bool){
-			superbreakermode = bool;
+			superBreakerMode = bool;
 		}
 		public Integer getSuperBreakerTicks(){
-			return superbreakerticks;
+			return superBreakerTicks;
 		}
 		public void setSuperBreakerTicks(Integer newvalue){
-			superbreakerticks = newvalue;
+			superBreakerTicks = newvalue;
 		}
 		public void decreaseSuperBreakerTicks(){
-			if(superbreakerticks >= 1){
-				superbreakerticks--;
+			if(superBreakerTicks >= 1){
+				superBreakerTicks--;
 			}
 		}
 		public void setSuperBreakerCooldown(Integer newvalue){
-			superbreakercooldown = newvalue;
+			superBreakerCooldown = newvalue;
 		}
 		public int getSuperBreakerCooldown(){
-			return superbreakercooldown;
+			return superBreakerCooldown;
 		}
 		public void decreaseSuperBreakerCooldown(){
-			if(superbreakercooldown >= 1){
-				superbreakercooldown--;
+			if(superBreakerCooldown >= 1){
+				superBreakerCooldown--;
 			}
 		}
 		

+ 2 - 3
mcMMO/com/gmail/nossr50/mcWoodCutting.java

@@ -26,10 +26,9 @@ public class mcWoodCutting {
     public void woodCuttingProcCheck(Player player, Block block, Location loc){
     	byte type = block.getData();
     	Material mat = Material.getMaterial(block.getTypeId());
-    	byte damage = 0;
     	if(player != null){
     		if(Math.random() * 1000 <= mcUsers.getProfile(player).getWoodCuttingInt()){
-			ItemStack item = new ItemStack(mat, 1, type, damage);
+			ItemStack item = new ItemStack(mat, 1, (short) 0, type);
 			loc.getWorld().dropItemNaturally(loc, item);
 			return;
     		}
@@ -48,7 +47,7 @@ public class mcWoodCutting {
     			mcUsers.getProfile(player).setAxePreparationMode(false);
     			mcUsers.getProfile(player).setAxePreparationTicks(0);
     		}
-    		int treefellticks = 3;
+    		int treefellticks = 2;
     		if(mcUsers.getProfile(player).getWoodCuttingInt() >= 50)
     			treefellticks++;
     		if(mcUsers.getProfile(player).getWoodCuttingInt() >= 150)

+ 29 - 3
mcMMO/com/gmail/nossr50/mcm.java

@@ -153,6 +153,13 @@ public class mcm {
     		return false;
     	}
     }
+    public boolean isShovel(ItemStack is){
+    	if(is.getTypeId() == 269 || is.getTypeId() == 273 || is.getTypeId() == 277 || is.getTypeId() == 284 || is.getTypeId() == 256){
+    		return true;
+    	} else {
+    		return false;
+    	}
+    }
     public boolean isAxes(ItemStack is){
     	if(is.getTypeId() == 271 || is.getTypeId() == 258 || is.getTypeId() == 286 || is.getTypeId() == 279 || is.getTypeId() == 275){
     		return true;
@@ -171,7 +178,7 @@ public class mcm {
     	if(split[0].equalsIgnoreCase("/woodcutting")){
 			event.setCancelled(true);
 			float skillvalue = (float)mcUsers.getProfile(player).getWoodCuttingInt();
-			int treefellticks = 3;
+			int treefellticks = 2;
     		if(mcUsers.getProfile(player).getWoodCuttingInt() >= 50)
     			treefellticks++;
     		if(mcUsers.getProfile(player).getWoodCuttingInt() >= 150)
@@ -235,7 +242,7 @@ public class mcm {
 			} else {
 				percentage = "75";
 			}
-			int ticks = 3;
+			int ticks = 2;
     		if(mcUsers.getProfile(player).getAxesInt() >= 50)
     			ticks++;
     		if(mcUsers.getProfile(player).getAxesInt() >= 150)
@@ -310,7 +317,7 @@ public class mcm {
     	if(split[0].equalsIgnoreCase("/mining")){
     		float skillvalue = (float)mcUsers.getProfile(player).getMiningInt();
     		String percentage = String.valueOf((skillvalue / 1000) * 100);
-    		int miningticks = 3;
+    		int miningticks = 2;
     		if(mcUsers.getProfile(player).getMiningInt() >= 50)
     			miningticks++;
     		if(mcUsers.getProfile(player).getMiningInt() >= 150)
@@ -428,10 +435,29 @@ public class mcm {
     	}
     	if(split[0].equalsIgnoreCase("/excavation")){
 			event.setCancelled(true);
+			int ticks = 2;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 50)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 150)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 250)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 350)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 450)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 550)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 650)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getExcavationInt() >= 750)
+    			ticks++;
 			player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"EXCAVATION"+ChatColor.RED+"[]-----");
 			player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Digging and finding treasures");
 			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
+			player.sendMessage(ChatColor.DARK_AQUA+"Giga Drill Breaker (ABILITY): "+ChatColor.GREEN+"3x Drop Rate, 3x EXP, +Speed");
 			player.sendMessage(ChatColor.DARK_AQUA+"Treasure Hunter: "+ChatColor.GREEN+"Ability to dig for treasure");
+			player.sendMessage(ChatColor.RED+"Giga Drill Breaker Length: "+ChatColor.YELLOW+(ticks * 2)+"s");
     	}
 		if(split[0].equalsIgnoreCase("/"+mcLoadProperties.mcmmo)){
 			event.setCancelled(true);