浏览代码

All changes up to 0.5.15

nossr50 14 年之前
父节点
当前提交
3a95c2eeb6

+ 16 - 0
mcMMO/Changelog.txt

@@ -1,5 +1,21 @@
 Changelog:
 Changelog:
 #Versions without changelogs probably had very small misc fixes, like tweaks to the source code#
 #Versions without changelogs probably had very small misc fixes, like tweaks to the source code#
+Version 0.5.15
+	Fixed stone swords not being recognized as swords
+	Fixed /a not working if you were an op but did not have permissions
+	
+Version 0.5.14
+	Added permissions for skills
+
+Version 0.5.13
+
+	Removed skillgain from succesful parries
+	Repair now refreshed the inventory
+	
+Version 0.5.12
+
+	Fixed being able to hurt party members with the bow and arrow
+	
 Version 0.5.11
 Version 0.5.11
 
 
 	Added /mmoedit command
 	Added /mmoedit command

+ 36 - 10
mcMMO/com/bukkit/nossr50/mcMMO/mcBlockListener.java

@@ -20,7 +20,12 @@ public class mcBlockListener extends BlockListener {
     }
     }
     public void onBlockPlace(BlockPlaceEvent event) {
     public void onBlockPlace(BlockPlaceEvent event) {
     	Block block = event.getBlock();
     	Block block = event.getBlock();
+    	int x = block.getX();
+    	int y = block.getY();
+    	int z = block.getZ();
+    	String xyz = x+","+y+","+z;
     	mcConfig.getInstance().addBlockWatch(block);
     	mcConfig.getInstance().addBlockWatch(block);
+    	mcConfig.getInstance().addCoordsWatch(xyz);
     	if(block.getTypeId() == 42)
     	if(block.getTypeId() == 42)
     		event.getPlayer().sendMessage(ChatColor.DARK_RED+"You have placed an anvil, anvils can repair tools and armor.");
     		event.getPlayer().sendMessage(ChatColor.DARK_RED+"You have placed an anvil, anvils can repair tools and armor.");
     }
     }
@@ -29,24 +34,45 @@ public class mcBlockListener extends BlockListener {
     		//STARTED(0), DIGGING(1), BROKEN(3), STOPPED(2);
     		//STARTED(0), DIGGING(1), BROKEN(3), STOPPED(2);
     		Player player = event.getPlayer();
     		Player player = event.getPlayer();
     		Block block = event.getBlock();
     		Block block = event.getBlock();
+    		int x = block.getX();
+        	int y = block.getY();
+        	int z = block.getZ();
+        	String xyz = x+","+y+","+z;
     		int type = block.getTypeId();
     		int type = block.getTypeId();
     		Location loc = block.getLocation();
     		Location loc = block.getLocation();
     		int dmg = event.getDamageLevel().getLevel();
     		int dmg = event.getDamageLevel().getLevel();
-    		//Smooth Stone
-    		if(dmg == 3 && !mcConfig.getInstance().isBlockWatched(block)){
+    		/*
+    		 * MINING
+    		 */
+    		if(dmg == 3 && !mcConfig.getInstance().isBlockWatched(block) && !mcConfig.getInstance().isCoordsWatched(xyz)){
+    		if(mcPermissions.getInstance().mining(player))
     		mcm.getInstance().miningBlockCheck(player, block);
     		mcm.getInstance().miningBlockCheck(player, block);
-    		//Give skill for woodcutting
-    		if(block.getTypeId() == 17)
-    		mcUsers.getProfile(player).addwgather(1);
-    		//Skill up players based on gather/wgather stuff
-    		mcm.getInstance().simulateSkillUp(player);
-    		if(block.getTypeId() == 17){
+    		/*
+    		 * WOOD CUTTING
+    		 */
+    		if(block.getTypeId() == 17 
+    				&& mcPermissions.getInstance().woodcutting(player)){
+    		mcUsers.getProfile(player).addwgather(1);    		
     			mcm.getInstance().woodCuttingProcCheck(player, block, loc);
     			mcm.getInstance().woodCuttingProcCheck(player, block, loc);
     		}
     		}
+    		mcm.getInstance().simulateSkillUp(player);
+    		/*
+    		 * EXCAVATION
+    		 */
+    		if(mcPermissions.getInstance().excavation(player))
     		mcm.getInstance().excavationProcCheck(block, player);
     		mcm.getInstance().excavationProcCheck(block, player);
-    	}
-    		if(mcConfig.getInstance().isBlockWatched(block) && !(type == 39 || type == 40 || type == 37 || type == 38));
+    		/*
+    		 * HERBALISM
+    		 */
+    		if(!(type == 39 || type == 40 || type == 37 || type == 38) 
+    				&& mcPermissions.getInstance().herbalism(player));
     		mcm.getInstance().herbalismProcCheck(block, player); //You place the blocks so we wont check if they are being watched
     		mcm.getInstance().herbalismProcCheck(block, player); //You place the blocks so we wont check if they are being watched
+    		/*
+    		 * EXPLOIT COUNTERMEASURES
+    		 */
+    		mcConfig.getInstance().addCoordsWatch(xyz);
+    		mcConfig.getInstance().addBlockWatch(block);
+    		}
     }
     }
     
     
     
     

+ 4 - 0
mcMMO/com/bukkit/nossr50/mcMMO/mcConfig.java

@@ -13,11 +13,15 @@ public class mcConfig {
     String location = "mcmmo.properties";
     String location = "mcmmo.properties";
     protected static final Logger log = Logger.getLogger("Minecraft");
     protected static final Logger log = Logger.getLogger("Minecraft");
     static ArrayList<String> adminChatList = new ArrayList<String>();
     static ArrayList<String> adminChatList = new ArrayList<String>();
+    static ArrayList<String> coordsWatchList = new ArrayList<String>();
     static ArrayList<Block> blockWatchList = new ArrayList<Block>();
     static ArrayList<Block> blockWatchList = new ArrayList<Block>();
     static ArrayList<String> partyChatList = new ArrayList<String>();
     static ArrayList<String> partyChatList = new ArrayList<String>();
     public boolean isBlockWatched(Block block) {return blockWatchList.contains(block);}
     public boolean isBlockWatched(Block block) {return blockWatchList.contains(block);}
+    public boolean isCoordsWatched(String xyz) {return coordsWatchList.contains(xyz);}
     public void removeBlockWatch(Block block) {blockWatchList.remove(blockWatchList.indexOf(block));}
     public void removeBlockWatch(Block block) {blockWatchList.remove(blockWatchList.indexOf(block));}
+    public void removeCoordsWatch(String xyz) {coordsWatchList.remove(coordsWatchList.indexOf(xyz));}
     public void addBlockWatch(Block block) {blockWatchList.add(block);}
     public void addBlockWatch(Block block) {blockWatchList.add(block);}
+    public void addCoordsWatch(String xyz) {coordsWatchList.add(xyz);}
 	public boolean isAdminToggled(String playerName) {return adminChatList.contains(playerName);}
 	public boolean isAdminToggled(String playerName) {return adminChatList.contains(playerName);}
     public boolean isPartyToggled(String playerName) {return partyChatList.contains(playerName);}
     public boolean isPartyToggled(String playerName) {return partyChatList.contains(playerName);}
     public void removePartyToggled(String playerName) {partyChatList.remove(partyChatList.indexOf(playerName));}
     public void removePartyToggled(String playerName) {partyChatList.remove(partyChatList.indexOf(playerName));}

+ 25 - 8
mcMMO/com/bukkit/nossr50/mcMMO/mcEntityListener.java

@@ -110,6 +110,7 @@ public class mcEntityListener extends EntityListener {
     	 */
     	 */
     	if(y instanceof Player){
     	if(y instanceof Player){
     		Player attacker = (Player)y;
     		Player attacker = (Player)y;
+    		if(mcPermissions.getInstance().archery(attacker)){
     		/*
     		/*
     		 * Defender is Monster
     		 * Defender is Monster
     		 */
     		 */
@@ -177,6 +178,12 @@ public class mcEntityListener extends EntityListener {
     			/*
     			/*
     			 * Stuff for the daze proc
     			 * Stuff for the daze proc
     			 */
     			 */
+    	    		if(mcUsers.getProfile(attacker).inParty() && mcUsers.getProfile(defender).inParty()){
+    					if(mcm.getInstance().inSameParty(defender, attacker)){
+    						event.setCancelled(true);
+    						return;
+    					}
+    	    		}
     				Location loc = defender.getLocation();
     				Location loc = defender.getLocation();
     				if(Math.random() * 10 > 5){
     				if(Math.random() * 10 > 5){
 					loc.setPitch(90);
 					loc.setPitch(90);
@@ -214,9 +221,9 @@ public class mcEntityListener extends EntityListener {
     					if(mcUsers.getProfile(defender).isDead())
     					if(mcUsers.getProfile(defender).isDead())
             				return;
             				return;
     					if(defender.getHealth() <= 0){
     					if(defender.getHealth() <= 0){
+    						mcUsers.getProfile(defender).setDead(true);
             				for(Player derp : plugin.getServer().getOnlinePlayers()){
             				for(Player derp : plugin.getServer().getOnlinePlayers()){
             					derp.sendMessage(ChatColor.GRAY+attacker.getName() + " has " +ChatColor.DARK_RED+"slain "+ChatColor.GRAY+defender.getName() + " with an arrow.");
             					derp.sendMessage(ChatColor.GRAY+attacker.getName() + " has " +ChatColor.DARK_RED+"slain "+ChatColor.GRAY+defender.getName() + " with an arrow.");
-            					mcUsers.getProfile(defender).setDead(true);
             				}
             				}
             			}
             			}
     				}
     				}
@@ -231,7 +238,7 @@ public class mcEntityListener extends EntityListener {
     				}
     				}
     			}
     			}
     		}
     		}
-    	
+    	}
     	}
     	}
     public void onEntityDamage(EntityDamageEvent event) {
     public void onEntityDamage(EntityDamageEvent event) {
     	Entity x = event.getEntity();
     	Entity x = event.getEntity();
@@ -243,42 +250,52 @@ public class mcEntityListener extends EntityListener {
     	int y = loc.getBlockY();
     	int y = loc.getBlockY();
     	int z = loc.getBlockZ();
     	int z = loc.getBlockZ();
     	if(type == DamageCause.FALL){
     	if(type == DamageCause.FALL){
-    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 50 && mcUsers.getProfile(player).getAcrobaticsInt() < 250 ){
+    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 50 
+    				&& mcUsers.getProfile(player).getAcrobaticsInt() < 250
+    				&& mcPermissions.getInstance().acrobatics(player)){
     			if(Math.random() * 10 > 8){
     			if(Math.random() * 10 > 8){
     				event.setCancelled(true);
     				event.setCancelled(true);
     				player.sendMessage("**ROLLED**");
     				player.sendMessage("**ROLLED**");
     				return;
     				return;
     			}
     			}
     		}
     		}
-    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 250 && mcUsers.getProfile(player).getAcrobaticsInt() < 450 ){
+    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 250 
+    				&& mcUsers.getProfile(player).getAcrobaticsInt() < 450 
+    				&& mcPermissions.getInstance().acrobatics(player)){
     			if(Math.random() * 10 > 6){
     			if(Math.random() * 10 > 6){
     				event.setCancelled(true);
     				event.setCancelled(true);
     				player.sendMessage("**ROLLED**");
     				player.sendMessage("**ROLLED**");
     				return;
     				return;
     			}
     			}
     		}
     		}
-    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 450 && mcUsers.getProfile(player).getAcrobaticsInt() < 750 ){
+    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 450 
+    				&& mcUsers.getProfile(player).getAcrobaticsInt() < 750 
+    				&& mcPermissions.getInstance().acrobatics(player)){
     			if(Math.random() * 10 > 4){
     			if(Math.random() * 10 > 4){
     				event.setCancelled(true);
     				event.setCancelled(true);
     				player.sendMessage("**ROLLED**");
     				player.sendMessage("**ROLLED**");
     				return;
     				return;
     			}
     			}
     		}
     		}
-    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 750 && mcUsers.getProfile(player).getAcrobaticsInt() < 950 ){
+    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 750 
+    				&& mcUsers.getProfile(player).getAcrobaticsInt() < 950 
+    				&& mcPermissions.getInstance().acrobatics(player)){
     			if(Math.random() * 10 > 2){
     			if(Math.random() * 10 > 2){
     				event.setCancelled(true);
     				event.setCancelled(true);
     				player.sendMessage("**BARREL ROLLED**");
     				player.sendMessage("**BARREL ROLLED**");
     				return;
     				return;
     			}
     			}
     		}
     		}
-    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 950){
+    		if(mcUsers.getProfile(player).getAcrobaticsInt() >= 950
+    				&& mcPermissions.getInstance().acrobatics(player)){
     				event.setCancelled(true);
     				event.setCancelled(true);
     				player.sendMessage("**ROLLED... LIKE A BOSS**");
     				player.sendMessage("**ROLLED... LIKE A BOSS**");
     				return;
     				return;
     			}
     			}
     		if(player.getHealth() - event.getDamage() <= 0)
     		if(player.getHealth() - event.getDamage() <= 0)
     			return;
     			return;
-    		if(!mcConfig.getInstance().isBlockWatched(loc.getWorld().getBlockAt(xx, y, z))){
+    		if(!mcConfig.getInstance().isBlockWatched(loc.getWorld().getBlockAt(xx, y, z)) 
+    				&& mcPermissions.getInstance().acrobatics(player)){
     		if(event.getDamage() >= 2 && event.getDamage() < 6){
     		if(event.getDamage() >= 2 && event.getDamage() < 6){
     		mcUsers.getProfile(player).skillUpAcrobatics(1);
     		mcUsers.getProfile(player).skillUpAcrobatics(1);
     		player.sendMessage(ChatColor.YELLOW+"Acrobatics skill increased by 1. Total ("+mcUsers.getProfile(player).getAcrobatics()+")");
     		player.sendMessage(ChatColor.YELLOW+"Acrobatics skill increased by 1. Total ("+mcUsers.getProfile(player).getAcrobatics()+")");

+ 63 - 0
mcMMO/com/bukkit/nossr50/mcMMO/mcPermissions.java

@@ -98,4 +98,67 @@ public class mcPermissions {
     	}
     	}
     	return instance;
     	return instance;
     	}
     	}
+    public boolean mining(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.skills.mining");
+        } else {
+            return true;
+        }
+    }
+    public boolean woodcutting(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.skills.woodcutting");
+        } else {
+            return true;
+        }
+    }
+    public boolean repair(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.skills.repair");
+        } else {
+            return true;
+        }
+    }
+    public boolean unarmed(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.skills.unarmed");
+        } else {
+            return true;
+        }
+    }
+    public boolean archery(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.skills.archery");
+        } else {
+            return true;
+        }
+    }
+    public boolean herbalism(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.skills.herbalism");
+        } else {
+            return true;
+        }
+    }
+    public boolean excavation(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.skills.excavation");
+        } else {
+            return true;
+        }
+    }
+    public boolean swords(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.skills.swords");
+        } else {
+            return true;
+        }
+    }
+    public boolean acrobatics(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.skills.acrobatics");
+        } else {
+            return true;
+        }
+    }
 }
 }

+ 7 - 2
mcMMO/com/bukkit/nossr50/mcMMO/mcPlayerListener.java

@@ -90,12 +90,16 @@ public class mcPlayerListener extends PlayerListener {
     	Block block = event.getBlockClicked();
     	Block block = event.getBlockClicked();
     	Player player = event.getPlayer();
     	Player player = event.getPlayer();
     	ItemStack is = player.getItemInHand();
     	ItemStack is = player.getItemInHand();
+    	if(mcPermissions.getInstance().herbalism(player)){
     	//BREADCHECK, CHECKS HERBALISM SKILL FOR BREAD HP MODIFIERS
     	//BREADCHECK, CHECKS HERBALISM SKILL FOR BREAD HP MODIFIERS
     	mcm.getInstance().breadCheck(player, is);
     	mcm.getInstance().breadCheck(player, is);
     	//STEW, CHECKS HERBALISM SKILL FOR BREAD HP MODIFIERS
     	//STEW, CHECKS HERBALISM SKILL FOR BREAD HP MODIFIERS
     	mcm.getInstance().stewCheck(player, is);
     	mcm.getInstance().stewCheck(player, is);
+    	}
+    	if(mcPermissions.getInstance().repair(player)){
     	//REPAIRCHECK, CHECKS TO MAKE SURE PLAYER IS RIGHT CLICKING AN ANVIL, PLAYER HAS ENOUGH RESOURCES, AND THE ITEM IS NOT AT FULL DURABILITY.
     	//REPAIRCHECK, CHECKS TO MAKE SURE PLAYER IS RIGHT CLICKING AN ANVIL, PLAYER HAS ENOUGH RESOURCES, AND THE ITEM IS NOT AT FULL DURABILITY.
     	mcm.getInstance().repairCheck(player, is, block);
     	mcm.getInstance().repairCheck(player, is, block);
+    	}
     }
     }
   
   
     public void onPlayerCommand(PlayerChatEvent event) {
     public void onPlayerCommand(PlayerChatEvent event) {
@@ -277,7 +281,7 @@ public class mcPlayerListener extends PlayerListener {
     		}
     		}
     	}
     	}
     	if(split[0].equalsIgnoreCase("/a") && (player.isOp() || mcPermissions.getInstance().adminChat(player))){
     	if(split[0].equalsIgnoreCase("/a") && (player.isOp() || mcPermissions.getInstance().adminChat(player))){
-    		if(!mcPermissions.getInstance().adminChat(player)){
+    		if(!mcPermissions.getInstance().adminChat(player) && !player.isOp()){
     			player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions.");
     			player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions.");
     			return;
     			return;
     		}
     		}
@@ -327,7 +331,8 @@ public class mcPlayerListener extends PlayerListener {
     		}
     		}
     		return;
     		return;
     	}
     	}
-    	if((player.isOp() || mcPermissions.getInstance().adminChat(player)) && mcConfig.getInstance().isAdminToggled(player.getName())){
+    	if((player.isOp() || mcPermissions.getInstance().adminChat(player)) 
+    			&& mcConfig.getInstance().isAdminToggled(player.getName())){
     		log.log(Level.INFO, "[A]"+"<"+player.getName()+"> "+event.getMessage());
     		log.log(Level.INFO, "[A]"+"<"+player.getName()+"> "+event.getMessage());
     		event.setCancelled(true);
     		event.setCancelled(true);
     		for(Player herp : plugin.getServer().getOnlinePlayers()){
     		for(Player herp : plugin.getServer().getOnlinePlayers()){

+ 19 - 18
mcMMO/com/bukkit/nossr50/mcMMO/mcm.java

@@ -421,7 +421,7 @@ public class mcm {
 			player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+ "Iron");
 			player.sendMessage(ChatColor.DARK_RED+"You need more "+ChatColor.GRAY+ "Iron");
 		}
 		}
     public boolean isSwords(ItemStack is){
     public boolean isSwords(ItemStack is){
-    	if(is.getTypeId() == 268 || is.getTypeId() == 267 || is.getTypeId() == 271 || is.getTypeId() == 283 || is.getTypeId() == 276){
+    	if(is.getTypeId() == 268 || is.getTypeId() == 267 || is.getTypeId() == 272 || is.getTypeId() == 283 || is.getTypeId() == 276){
     		return true;
     		return true;
     	} else {
     	} else {
     		return false;
     		return false;
@@ -525,7 +525,7 @@ public class mcm {
     public void playerVersusSquidChecks(EntityDamageByEntityEvent event, Player attacker, Entity x, int type){
     public void playerVersusSquidChecks(EntityDamageByEntityEvent event, Player attacker, Entity x, int type){
     	if(x instanceof Squid){
     	if(x instanceof Squid){
 			Squid defender = (Squid)event.getEntity();
 			Squid defender = (Squid)event.getEntity();
-			if(isSwords(attacker.getItemInHand()) && defender.getHealth() > 0){
+			if(isSwords(attacker.getItemInHand()) && defender.getHealth() > 0 && mcPermissions.getInstance().swords(attacker)){
 				if(Math.random() * 10 > 9){
 				if(Math.random() * 10 > 9){
 					mcUsers.getProfile(attacker).skillUpSwords(1);
 					mcUsers.getProfile(attacker).skillUpSwords(1);
 					attacker.sendMessage(ChatColor.YELLOW+"Swords skill increased by 1. Total ("+mcUsers.getProfile(attacker).getSwords()+")");
 					attacker.sendMessage(ChatColor.YELLOW+"Swords skill increased by 1. Total ("+mcUsers.getProfile(attacker).getSwords()+")");
@@ -534,7 +534,7 @@ public class mcm {
 			/*
 			/*
 			 * UNARMED VS SQUID
 			 * UNARMED VS SQUID
 			 */
 			 */
-			if(type == 0){
+			if(type == 0 && mcPermissions.getInstance().unarmed(attacker)){
     			if(defender.getHealth() <= 0)
     			if(defender.getHealth() <= 0)
     				return;
     				return;
     			if(mcUsers.getProfile(attacker).getUnarmedInt() >= 50 && mcUsers.getProfile(attacker).getUnarmedInt() < 100){
     			if(mcUsers.getProfile(attacker).getUnarmedInt() >= 50 && mcUsers.getProfile(attacker).getUnarmedInt() < 100){
@@ -568,7 +568,7 @@ public class mcm {
     }
     }
     public void playerVersusAnimalsChecks(Entity x, Player attacker, EntityDamageByEntityEvent event, int type){
     public void playerVersusAnimalsChecks(Entity x, Player attacker, EntityDamageByEntityEvent event, int type){
     	if(x instanceof Animals){
     	if(x instanceof Animals){
-			if(type == 0){
+			if(type == 0 && mcPermissions.getInstance().unarmed(attacker)){
 			Animals defender = (Animals)event.getEntity();
 			Animals defender = (Animals)event.getEntity();
 			if(defender.getHealth() <= 0)
 			if(defender.getHealth() <= 0)
 				return;
 				return;
@@ -631,13 +631,15 @@ public class mcm {
     public void playerVersusMonsterChecks(EntityDamageByEntityEvent event, Player attacker, Entity x, int type){
     public void playerVersusMonsterChecks(EntityDamageByEntityEvent event, Player attacker, Entity x, int type){
     	if(x instanceof Monster){
     	if(x instanceof Monster){
 			Monster defender = (Monster)event.getEntity();
 			Monster defender = (Monster)event.getEntity();
-			if(isSwords(attacker.getItemInHand()) && defender.getHealth() > 0){
+			if(isSwords(attacker.getItemInHand()) 
+					&& defender.getHealth() > 0 
+					&& mcPermissions.getInstance().swords(attacker)){
 				if(Math.random() * 10 > 9){
 				if(Math.random() * 10 > 9){
 					mcUsers.getProfile(attacker).skillUpSwords(1);
 					mcUsers.getProfile(attacker).skillUpSwords(1);
 					attacker.sendMessage(ChatColor.YELLOW+"Swords skill increased by 1. Total ("+mcUsers.getProfile(attacker).getSwords()+")");
 					attacker.sendMessage(ChatColor.YELLOW+"Swords skill increased by 1. Total ("+mcUsers.getProfile(attacker).getSwords()+")");
 				}
 				}
 			}
 			}
-			if(type == 0){
+			if(type == 0 && mcPermissions.getInstance().unarmed(attacker)){
 			if(defender.getHealth() <= 0)
 			if(defender.getHealth() <= 0)
 				return;
 				return;
 			if(mcUsers.getProfile(attacker).getUnarmedInt() >= 50 && mcUsers.getProfile(attacker).getUnarmedInt() < 100){
 			if(mcUsers.getProfile(attacker).getUnarmedInt() >= 50 && mcUsers.getProfile(attacker).getUnarmedInt() < 100){
@@ -724,14 +726,14 @@ public class mcm {
     	}
     	}
     }
     }
     public void parryCheck(Player defender, EntityDamageByEntityEvent event, Entity y){
     public void parryCheck(Player defender, EntityDamageByEntityEvent event, Entity y){
-    	if(isSwords(defender.getItemInHand())){
+    	if(isSwords(defender.getItemInHand()) 
+    			&& event.getDamage() > 0 
+    			&& mcPermissions.getInstance().swords(defender)){
 			if(mcUsers.getProfile(defender).getSwordsInt() >= 50 && mcUsers.getProfile(defender).getSwordsInt() < 250){
 			if(mcUsers.getProfile(defender).getSwordsInt() >= 50 && mcUsers.getProfile(defender).getSwordsInt() < 250){
-				if(Math.random() * 10 > 8){
+				if(Math.random() * 100 > 95){
 					event.setCancelled(true);
 					event.setCancelled(true);
 					defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
 					defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
 					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
 					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
-					mcUsers.getProfile(defender).skillUpSwords(1);
-					defender.sendMessage(ChatColor.YELLOW+"Swords skill increased by 1. Total ("+mcUsers.getProfile(defender).getSwords()+")");
 					if(y instanceof Player){
 					if(y instanceof Player){
 						Player attacker = (Player)y;
 						Player attacker = (Player)y;
 						attacker.sendMessage(ChatColor.DARK_RED+"**TARGET HAS PARRIED THAT ATTACK**");
 						attacker.sendMessage(ChatColor.DARK_RED+"**TARGET HAS PARRIED THAT ATTACK**");
@@ -740,12 +742,10 @@ public class mcm {
 				}
 				}
 			}
 			}
 			if(mcUsers.getProfile(defender).getSwordsInt() >= 250 && mcUsers.getProfile(defender).getSwordsInt() < 450){
 			if(mcUsers.getProfile(defender).getSwordsInt() >= 250 && mcUsers.getProfile(defender).getSwordsInt() < 450){
-				if(Math.random() * 10 > 6){
+				if(Math.random() * 100 > 90){
 					event.setCancelled(true);
 					event.setCancelled(true);
 					defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
 					defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
 					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
 					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
-					mcUsers.getProfile(defender).skillUpSwords(1);
-					defender.sendMessage(ChatColor.YELLOW+"Swords skill increased by 1. Total ("+mcUsers.getProfile(defender).getSwords()+")");
 					if(y instanceof Player){
 					if(y instanceof Player){
 						Player attacker = (Player)y;
 						Player attacker = (Player)y;
 						attacker.sendMessage(ChatColor.DARK_RED+"**TARGET HAS PARRIED THAT ATTACK**");
 						attacker.sendMessage(ChatColor.DARK_RED+"**TARGET HAS PARRIED THAT ATTACK**");
@@ -754,12 +754,10 @@ public class mcm {
 				}
 				}
 			}
 			}
 			if(mcUsers.getProfile(defender).getSwordsInt() >= 450 && mcUsers.getProfile(defender).getSwordsInt() < 775){
 			if(mcUsers.getProfile(defender).getSwordsInt() >= 450 && mcUsers.getProfile(defender).getSwordsInt() < 775){
-				if(Math.random() * 10 > 5){
+				if(Math.random() * 100 > 85){
 					event.setCancelled(true);
 					event.setCancelled(true);
 					defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
 					defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
 					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
 					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
-					mcUsers.getProfile(defender).skillUpSwords(1);
-					defender.sendMessage(ChatColor.YELLOW+"Swords skill increased by 1. Total ("+mcUsers.getProfile(defender).getSwords()+")");
 					if(y instanceof Player){
 					if(y instanceof Player){
 						Player attacker = (Player)y;
 						Player attacker = (Player)y;
 						attacker.sendMessage(ChatColor.DARK_RED+"**TARGET HAS PARRIED THAT ATTACK**");
 						attacker.sendMessage(ChatColor.DARK_RED+"**TARGET HAS PARRIED THAT ATTACK**");
@@ -768,7 +766,7 @@ public class mcm {
 				}
 				}
 			}
 			}
 			if(mcUsers.getProfile(defender).getSwordsInt() >= 775){
 			if(mcUsers.getProfile(defender).getSwordsInt() >= 775){
-				if(Math.random() * 10 > 4){
+				if(Math.random() * 100 > 80){
 					event.setCancelled(true);
 					event.setCancelled(true);
 					defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
 					defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
 					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
 					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
@@ -913,7 +911,9 @@ public class mcm {
     	}
     	}
     }
     }
     public void repairCheck(Player player, ItemStack is, Block block){
     public void repairCheck(Player player, ItemStack is, Block block){
-    	if(block != null && block.getTypeId() == 42){
+    	if(block != null 
+    			&& block.getTypeId() == 42 
+    			&& mcPermissions.getInstance().repair(player)){
         	short durability = is.getDurability();
         	short durability = is.getDurability();
         	if(player.getItemInHand().getDurability() > 0){
         	if(player.getItemInHand().getDurability() > 0){
         		/*
         		/*
@@ -956,6 +956,7 @@ public class mcm {
         	} else {
         	} else {
         		player.sendMessage("That is at full durability.");
         		player.sendMessage("That is at full durability.");
         	}
         	}
+        	player.updateInventory();
         	} //end if block is iron block bracket
         	} //end if block is iron block bracket
     }
     }
     public void herbalismProcCheck(Block block, Player player){
     public void herbalismProcCheck(Block block, Player player){

+ 1 - 1
mcMMO/plugin.yml

@@ -1,3 +1,3 @@
 name: mcMMO
 name: mcMMO
 main: com.bukkit.nossr50.mcMMO.mcMMO
 main: com.bukkit.nossr50.mcMMO.mcMMO
-version: 0.5.11
+version: 0.5.15