浏览代码

Another WIP

nossr50 13 年之前
父节点
当前提交
7114d04464

+ 7 - 0
src/Changelog.txt

@@ -1,6 +1,12 @@
 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 1.1.14
 Version 1.1.14
+Improvements have been made with MySQL thanks to krinsdeath
+Added some experimental usage tracking, you can opt out of this in /plugins/stats/config.yml (Once its generated, may require 2 restarts)
+[1.8] Removed the bonus damage from Archery (I'll rework this skill soon)
+[1.8] Removed the food bonuses to healing Herbalism provided due to the change of eating in game mechanics
+[1.8] Swords no longer parry, no need to compete with in game mechanics
+[1.8] mcMMO no longer has an HP Regen system, no need to compete with in game mechanics
 mcMMO now transfers files between MC Server -> Client rather than Webserver -> Client (By default, you can change this..)
 mcMMO now transfers files between MC Server -> Client rather than Webserver -> Client (By default, you can change this..)
 Fixed a few problems with readying abilities for Woodcutting/Axes
 Fixed a few problems with readying abilities for Woodcutting/Axes
 Changed the listener priority for OnEntityDamage from High to Monitor (Should make mcMMO compatible with Worldguards pvp regions among other things)
 Changed the listener priority for OnEntityDamage from High to Monitor (Should make mcMMO compatible with Worldguards pvp regions among other things)
@@ -8,6 +14,7 @@ Added addXpOverride for modders, this will ignore skill modifiers
 Added an option for Excavation to require use of a shovel, on by default
 Added an option for Excavation to require use of a shovel, on by default
 The option to change the weburl of mcMMO Images/Sounds has been removed, if you want to customize mcMMO images/sounds you can open mcMMO.jar and replace them there
 The option to change the weburl of mcMMO Images/Sounds has been removed, if you want to customize mcMMO images/sounds you can open mcMMO.jar and replace them there
 Made party/admin chat modes more compatible with chat plugins (vChat)
 Made party/admin chat modes more compatible with chat plugins (vChat)
+Portuguese Brazil locale added (Code: pt_br)
 
 
 Version 1.1.13
 Version 1.1.13
 Pets are removed from party bars
 Pets are removed from party bars

+ 0 - 15
src/com/gmail/nossr50/Combat.java

@@ -227,8 +227,6 @@ public class Combat
 		 */
 		 */
 		if(event instanceof EntityDamageByEntityEvent && event.getEntity() instanceof Player)
 		if(event instanceof EntityDamageByEntityEvent && event.getEntity() instanceof Player)
 		{
 		{
-			Player defender = (Player)event.getEntity();
-			Swords.parryCheck((EntityDamageByEntityEvent) event, defender);
 			Swords.counterAttackChecks((EntityDamageByEntityEvent)event);
 			Swords.counterAttackChecks((EntityDamageByEntityEvent)event);
 			Acrobatics.dodgeChecks((EntityDamageByEntityEvent)event);
 			Acrobatics.dodgeChecks((EntityDamageByEntityEvent)event);
 		}
 		}
@@ -312,19 +310,6 @@ public class Combat
     		if(mcPermissions.getInstance().archery(attacker))
     		if(mcPermissions.getInstance().archery(attacker))
     		{
     		{
     			Archery.trackArrows(pluginx, x, event, attacker);
     			Archery.trackArrows(pluginx, x, event, attacker);
-    			/*
-    			 * DAMAGE MODIFIER
-    			 */
-    			if(PPa.getSkillLevel(SkillType.ARCHERY) >= 50 && PPa.getSkillLevel(SkillType.ARCHERY) < 250)
-    				event.setDamage(event.getDamage()+1);
-    			if(PPa.getSkillLevel(SkillType.ARCHERY) >= 250 && PPa.getSkillLevel(SkillType.ARCHERY) < 575)
-    				event.setDamage(event.getDamage()+2);
-    			if(PPa.getSkillLevel(SkillType.ARCHERY) >= 575 && PPa.getSkillLevel(SkillType.ARCHERY) < 725)
-    				event.setDamage(event.getDamage()+3);
-    			if(PPa.getSkillLevel(SkillType.ARCHERY) >= 725 && PPa.getSkillLevel(SkillType.ARCHERY) < 1000)
-    				event.setDamage(event.getDamage()+4);
-    			if(PPa.getSkillLevel(SkillType.ARCHERY) >= 1000)
-    				event.setDamage(event.getDamage()+5);
     			
     			
     			/*
     			/*
     			 * IGNITION
     			 * IGNITION

+ 3 - 43
src/com/gmail/nossr50/command/Commands.java

@@ -132,17 +132,6 @@ public class Commands
 			player.sendMessage(mcLocale.getString("m.WoodCuttingTreeFellerLength", new Object[] {ticks})); 
 			player.sendMessage(mcLocale.getString("m.WoodCuttingTreeFellerLength", new Object[] {ticks})); 
 		}
 		}
 		else if(label.equalsIgnoreCase("archery") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillArchery").toLowerCase())){ 
 		else if(label.equalsIgnoreCase("archery") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillArchery").toLowerCase())){ 
-			Integer rank = 0;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 50)
-				rank++;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 250)
-				rank++;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 575)
-				rank++;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 725)
-				rank++;
-			if(PP.getSkillLevel(SkillType.ARCHERY) >= 1000)
-				rank++;
 			float skillvalue = (float)PP.getSkillLevel(SkillType.ARCHERY);
 			float skillvalue = (float)PP.getSkillLevel(SkillType.ARCHERY);
 			String percentage = String.valueOf((skillvalue / 1000) * 100);
 			String percentage = String.valueOf((skillvalue / 1000) * 100);
 
 
@@ -171,13 +160,11 @@ public class Commands
 			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
 			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.Effects")})); 
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery1_0"), mcLocale.getString("m.EffectsArchery1_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery1_0"), mcLocale.getString("m.EffectsArchery1_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery2_0"), mcLocale.getString("m.EffectsArchery2_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery2_0"), mcLocale.getString("m.EffectsArchery2_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery3_0"), mcLocale.getString("m.EffectsArchery3_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery4_0"), mcLocale.getString("m.EffectsArchery4_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsArchery4_0"), mcLocale.getString("m.EffectsArchery4_1")}));  
 			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
 			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
 			player.sendMessage(mcLocale.getString("m.ArcheryDazeChance", new Object[] {percentagedaze})); 
 			player.sendMessage(mcLocale.getString("m.ArcheryDazeChance", new Object[] {percentagedaze})); 
 			player.sendMessage(mcLocale.getString("m.ArcheryRetrieveChance", new Object[] {percentage})); 
 			player.sendMessage(mcLocale.getString("m.ArcheryRetrieveChance", new Object[] {percentage})); 
-			player.sendMessage(mcLocale.getString("m.ArcheryIgnitionLength", new Object[] {(ignition / 20)})); 
-			player.sendMessage(mcLocale.getString("m.ArcheryDamagePlus", new Object[] {rank})); 
+			player.sendMessage(mcLocale.getString("m.ArcheryIgnitionLength", new Object[] {(ignition / 20)}));  
 		}
 		}
 		else if(label.equalsIgnoreCase("axes") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillAxes"))){ 
 		else if(label.equalsIgnoreCase("axes") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillAxes"))){ 
 			String percentage;
 			String percentage;
@@ -213,7 +200,7 @@ public class Commands
 		}
 		}
 		else if(label.equalsIgnoreCase("swords") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillSwords").toLowerCase())){ 
 		else if(label.equalsIgnoreCase("swords") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillSwords").toLowerCase())){ 
 			int bleedrank = 2;
 			int bleedrank = 2;
-			String percentage, parrypercentage = null, counterattackpercentage;
+			String percentage, counterattackpercentage;
 			float skillvalue = (float)PP.getSkillLevel(SkillType.SWORDS);
 			float skillvalue = (float)PP.getSkillLevel(SkillType.SWORDS);
 			if(PP.getSkillLevel(SkillType.SWORDS) < 750){
 			if(PP.getSkillLevel(SkillType.SWORDS) < 750){
 				percentage = String.valueOf((skillvalue / 1000) * 100);
 				percentage = String.valueOf((skillvalue / 1000) * 100);
@@ -223,12 +210,6 @@ public class Commands
 			if(skillvalue >= 750)
 			if(skillvalue >= 750)
 				bleedrank+=1;
 				bleedrank+=1;
 
 
-			if(PP.getSkillLevel(SkillType.SWORDS) <= 900){
-				parrypercentage = String.valueOf((skillvalue / 3000) * 100);
-			} else {
-				parrypercentage = "30"; 
-			}
-
 			if(PP.getSkillLevel(SkillType.SWORDS) <= 600){
 			if(PP.getSkillLevel(SkillType.SWORDS) <= 600){
 				counterattackpercentage = String.valueOf((skillvalue / 2000) * 100);
 				counterattackpercentage = String.valueOf((skillvalue / 2000) * 100);
 			} else {
 			} else {
@@ -250,14 +231,12 @@ public class Commands
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords1_0"), mcLocale.getString("m.EffectsSwords1_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords1_0"), mcLocale.getString("m.EffectsSwords1_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords2_0"), mcLocale.getString("m.EffectsSwords2_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords2_0"), mcLocale.getString("m.EffectsSwords2_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords3_0"), mcLocale.getString("m.EffectsSwords3_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords3_0"), mcLocale.getString("m.EffectsSwords3_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords4_0"), mcLocale.getString("m.EffectsSwords4_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords5_0"), mcLocale.getString("m.EffectsSwords5_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsSwords5_0"), mcLocale.getString("m.EffectsSwords5_1")}));  
 			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
 			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
 			player.sendMessage(mcLocale.getString("m.SwordsCounterAttChance", new Object[] {counterattackpercentage})); 
 			player.sendMessage(mcLocale.getString("m.SwordsCounterAttChance", new Object[] {counterattackpercentage})); 
 			player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] {bleedrank})); 
 			player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] {bleedrank})); 
 			player.sendMessage(mcLocale.getString("m.SwordsTickNote")); 
 			player.sendMessage(mcLocale.getString("m.SwordsTickNote")); 
 			player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] {percentage})); 
 			player.sendMessage(mcLocale.getString("m.SwordsBleedLength", new Object[] {percentage})); 
-			player.sendMessage(mcLocale.getString("m.SwordsParryChance", new Object[] {parrypercentage})); 
 			player.sendMessage(mcLocale.getString("m.SwordsSSLength", new Object[] {ticks})); 
 			player.sendMessage(mcLocale.getString("m.SwordsSSLength", new Object[] {ticks})); 
 
 
 		}
 		}
@@ -369,23 +348,6 @@ public class Commands
 			player.sendMessage(mcLocale.getString("m.UnarmedBerserkLength", new Object[] {ticks})); 
 			player.sendMessage(mcLocale.getString("m.UnarmedBerserkLength", new Object[] {ticks})); 
 		}
 		}
 		else if(label.equalsIgnoreCase("herbalism") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillHerbalism").toLowerCase())){ 
 		else if(label.equalsIgnoreCase("herbalism") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillHerbalism").toLowerCase())){ 
-			int rank = 0;
-			if(PP.getSkillLevel(SkillType.HERBALISM) >= 50)
-				rank++;
-			if (PP.getSkillLevel(SkillType.HERBALISM) >= 150)
-				rank++;
-			if (PP.getSkillLevel(SkillType.HERBALISM) >= 250)
-				rank++;
-			if (PP.getSkillLevel(SkillType.HERBALISM) >= 350)
-				rank++;
-			if (PP.getSkillLevel(SkillType.HERBALISM) >= 450)
-				rank++;
-			if (PP.getSkillLevel(SkillType.HERBALISM) >= 550)
-				rank++;
-			if (PP.getSkillLevel(SkillType.HERBALISM) >= 650)
-				rank++;
-			if (PP.getSkillLevel(SkillType.HERBALISM) >= 750)
-				rank++;
 			int bonus = 0;
 			int bonus = 0;
 			if(PP.getSkillLevel(SkillType.HERBALISM) >= 200)
 			if(PP.getSkillLevel(SkillType.HERBALISM) >= 200)
 				bonus++;
 				bonus++;
@@ -412,14 +374,12 @@ public class Commands
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism1_0"), mcLocale.getString("m.EffectsHerbalism1_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism1_0"), mcLocale.getString("m.EffectsHerbalism1_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism2_0"), mcLocale.getString("m.EffectsHerbalism2_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism2_0"), mcLocale.getString("m.EffectsHerbalism2_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism3_0"), mcLocale.getString("m.EffectsHerbalism3_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism3_0"), mcLocale.getString("m.EffectsHerbalism3_1")}));  
-			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism4_0"), mcLocale.getString("m.EffectsHerbalism4_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism5_0"), mcLocale.getString("m.EffectsHerbalism5_1")}));  
 			player.sendMessage(mcLocale.getString("m.EffectsTemplate", new Object[] {mcLocale.getString("m.EffectsHerbalism5_0"), mcLocale.getString("m.EffectsHerbalism5_1")}));  
 			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
 			player.sendMessage(mcLocale.getString("m.SkillHeader", new Object[] {mcLocale.getString("m.YourStats")})); 
 			player.sendMessage(mcLocale.getString("m.HerbalismGreenTerraLength", new Object[] {ticks})); 
 			player.sendMessage(mcLocale.getString("m.HerbalismGreenTerraLength", new Object[] {ticks})); 
 			player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbChance", new Object[] {gpercentage})); 
 			player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbChance", new Object[] {gpercentage})); 
 			player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbStage", new Object[] {bonus})); 
 			player.sendMessage(mcLocale.getString("m.HerbalismGreenThumbStage", new Object[] {bonus})); 
-			player.sendMessage(mcLocale.getString("m.HerbalismDoubleDropChance", new Object[] {percentage})); 
-			player.sendMessage(mcLocale.getString("m.HerbalismFoodPlus", new Object[] {rank})); 
+			player.sendMessage(mcLocale.getString("m.HerbalismDoubleDropChance", new Object[] {percentage}));  
 		}
 		}
 
 
 		else if(label.equalsIgnoreCase("excavation") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillExcavation").toLowerCase())) 
 		else if(label.equalsIgnoreCase("excavation") || split[0].toLowerCase().equalsIgnoreCase(mcLocale.getString("m.SkillExcavation").toLowerCase())) 

+ 0 - 76
src/com/gmail/nossr50/datatypes/Mob.java

@@ -1,76 +0,0 @@
-package com.gmail.nossr50.datatypes;
-
-import java.util.HashMap;
-
-import org.bukkit.entity.*;
-
-public class Mob
-{
-	public HashMap<Integer, Short> mobDiff = new HashMap<Integer, Short>();
-	public HashMap<Integer, Boolean> isAggressive = new HashMap<Integer, Boolean>();
-	
-	public void assignDifficulty(Entity entity)
-	{
-		short x = 0;
-		
-		if(entity.getLocation().getY() >= 45)
-		{
-			//LEVEL 2
-			if(Math.random() * 100 > 50)
-			{
-				x = 0;
-			}
-			//LEVEL 3
-			else
-			{
-				x = 1;
-			}
-		}
-		else
-		{
-			double y = Math.random() * 100;
-			//HIGH CHANCE FOR 5's
-			if(entity.getLocation().getY() < 20)
-			{
-				//ASSIGN INTO THE 5 RANKS
-				if(y >= 0 && y < 50)
-					x = 0;
-				if(y >= 50 && y < 80)
-					x = 1;
-				if(y >= 80 && y < 95)
-					x = 2;
-				if(y >= 95 && y < 98)
-					x = 3;
-				if(y >= 98 && y <= 100)
-					x = 4;
-			}
-			//HIGH CHANCE FOR 4's
-			else
-			{
-				//ASSIGN INTO THE 5 RANKS
-				if(y >= 0 && y < 50)
-					x = 0;
-				if(y >= 50 && y < 74)
-					x = 1;
-				if(y >= 74 && y < 89)
-					x = 2;
-				if(y >= 89 && y < 99)
-					x = 3;
-				if(y >= 99 && y <= 100)
-					x = 4;
-			}
-				if(x > 1)
-				{
-					isAggressive.put(entity.getEntityId(), false);
-				}
-				
-		}
-		
-		if(!mobDiff.containsKey(entity.getEntityId()))
-		{
-			mobDiff.put(entity.getEntityId(), x);
-			//System.out.println("Mob "+entity.getEntityId()+" (DIFFICULTY) "+
-					//(x +1)+"(DEPTH) "+entity.getLocation().getY());
-		}
-	}
-}

+ 0 - 28
src/com/gmail/nossr50/listeners/mcEntityListener.java

@@ -2,7 +2,6 @@ package com.gmail.nossr50.listeners;
 
 
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.Entity;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.LivingEntity;
-import org.bukkit.entity.Monster;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Wolf;
 import org.bukkit.entity.Wolf;
 import org.bukkit.event.entity.CreatureSpawnEvent;
 import org.bukkit.event.entity.CreatureSpawnEvent;
@@ -12,7 +11,6 @@ import org.bukkit.event.entity.EntityDamageEvent;
 import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
 import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
 import org.bukkit.event.entity.EntityDeathEvent;
 import org.bukkit.event.entity.EntityDeathEvent;
 import org.bukkit.event.entity.EntityListener;
 import org.bukkit.event.entity.EntityListener;
-import org.bukkit.event.entity.EntityTargetEvent;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.inventory.ItemStack;
 
 
 import com.gmail.nossr50.Combat;
 import com.gmail.nossr50.Combat;
@@ -149,15 +147,9 @@ public class mcEntityListener extends EntityListener
     
     
     public void onEntityDeath(EntityDeathEvent event) 
     public void onEntityDeath(EntityDeathEvent event) 
     {
     {
-    	
     	Entity x = event.getEntity();
     	Entity x = event.getEntity();
     	x.setFireTicks(0);
     	x.setFireTicks(0);
     	
     	
-    	//cleanup mob diff
-    	if(plugin.mob.mobDiff.containsKey(event.getEntity().getEntityId()))
-    			plugin.mob.mobDiff.remove(event.getEntity().getEntityId());
-    	
-    	
     	//Remove bleed track
     	//Remove bleed track
     	if(plugin.misc.bleedTracker.contains((LivingEntity)x))
     	if(plugin.misc.bleedTracker.contains((LivingEntity)x))
     		plugin.misc.addToBleedRemovalQue((LivingEntity)x);
     		plugin.misc.addToBleedRemovalQue((LivingEntity)x);
@@ -183,29 +175,9 @@ public class mcEntityListener extends EntityListener
     	if(reason == SpawnReason.SPAWNER && !LoadProperties.xpGainsMobSpawners)
     	if(reason == SpawnReason.SPAWNER && !LoadProperties.xpGainsMobSpawners)
     	{
     	{
     		plugin.misc.mobSpawnerList.add(event.getEntity());
     		plugin.misc.mobSpawnerList.add(event.getEntity());
-    	} else 
-    	{
-    		if(event.getEntity() instanceof Monster && !plugin.mob.mobDiff.containsKey(event.getEntity().getEntityId()))
-        		plugin.mob.assignDifficulty(event.getEntity());
     	}
     	}
     }
     }
     
     
-    public void onEntityTarget(EntityTargetEvent event) 
-	{
-    	
-		int type = event.getEntity().getEntityId();
-		//Make 3+ non-aggressive
-		if(event.getEntity() instanceof Monster 
-				&& plugin.mob.mobDiff.containsKey(type)
-				&& plugin.mob.isAggressive.containsKey(type))
-		{
-			if(plugin.mob.mobDiff.get(type) >= 2 && plugin.mob.isAggressive.get(type) == false)
-			{
-				event.setCancelled(true);
-				event.setTarget(null);
-			}
-		}
-	}
 	public boolean isBow(ItemStack is){
 	public boolean isBow(ItemStack is){
 		if (is.getTypeId() == 261){
 		if (is.getTypeId() == 261){
 			return true;
 			return true;

+ 0 - 16
src/com/gmail/nossr50/listeners/mcPlayerListener.java

@@ -201,22 +201,6 @@ public class mcPlayerListener extends PlayerListener
 			Skills.hoeReadinessCheck(player);
 			Skills.hoeReadinessCheck(player);
 			Skills.abilityActivationCheck(player);
 			Skills.abilityActivationCheck(player);
 		}
 		}
-		if(action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK)
-		{
-			/*
-			 * HERBALISM MODIFIERS
-			 */
-			if(action == Action.RIGHT_CLICK_BLOCK && !m.abilityBlockCheck(event.getClickedBlock()))
-			{
-				return;
-			}
-			
-			if(mcPermissions.getInstance().herbalism(player))
-			{
-				Herbalism.breadCheck(player, player.getItemInHand());
-				Herbalism.stewCheck(player, player.getItemInHand());
-			}
-		}
 		
 		
 		/*
 		/*
 		 * ITEM CHECKS
 		 * ITEM CHECKS

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

@@ -1,10 +1,10 @@
 package com.gmail.nossr50;
 package com.gmail.nossr50;
 
 
-import com.gmail.nossr50.datatypes.Mob;
 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.command.Commands;
 import com.gmail.nossr50.command.Commands;
 import com.gmail.nossr50.config.*;
 import com.gmail.nossr50.config.*;
+import com.gmail.nossr50.runnables.mcTimer;
 import com.gmail.nossr50.spout.SpoutStuff;
 import com.gmail.nossr50.spout.SpoutStuff;
 import com.gmail.nossr50.spout.mmoHelper;
 import com.gmail.nossr50.spout.mmoHelper;
 import com.gmail.nossr50.listeners.mcBlockListener;
 import com.gmail.nossr50.listeners.mcBlockListener;
@@ -14,6 +14,7 @@ import com.gmail.nossr50.party.Party;
 import com.gmail.nossr50.skills.*;
 import com.gmail.nossr50.skills.*;
 import com.nijikokun.bukkit.Permissions.Permissions;
 import com.nijikokun.bukkit.Permissions.Permissions;
 
 
+import org.blockface.bukkitstats.CallHome;
 import org.bukkit.Bukkit;
 import org.bukkit.Bukkit;
 import java.io.BufferedInputStream;
 import java.io.BufferedInputStream;
 import java.io.BufferedReader;
 import java.io.BufferedReader;
@@ -70,7 +71,6 @@ public class mcMMO extends JavaPlugin
 	//private Timer mcMMO_SpellTimer = new Timer(true);
 	//private Timer mcMMO_SpellTimer = new Timer(true);
 
 
 	public static Database database = null;
 	public static Database database = null;
-	public Mob mob = new Mob();
 	public Misc misc = new Misc(this);
 	public Misc misc = new Misc(this);
 
 
 	//Config file stuff
 	//Config file stuff
@@ -135,7 +135,6 @@ public class mcMMO extends JavaPlugin
 		pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this);
 		pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this);
 
 
 		//Entity Stuff
 		//Entity Stuff
-		pm.registerEvent(Event.Type.ENTITY_TARGET, entityListener, Priority.Normal, this);
 		pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
 		pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
 		pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Monitor, this);
 		pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Monitor, this);
 		pm.registerEvent(Event.Type.CREATURE_SPAWN, entityListener, Priority.Normal, this);
 		pm.registerEvent(Event.Type.CREATURE_SPAWN, entityListener, Priority.Normal, this);
@@ -174,6 +173,7 @@ public class mcMMO extends JavaPlugin
 		System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
 		System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
 		
 		
 		Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask(this, mcMMO_Timer, 0, 20);
 		Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask(this, mcMMO_Timer, 0, 20);
+		CallHome.load(this); //Swearword's blockface usage statistics, only dials home once
 	}
 	}
 
 
 	public PlayerProfile getPlayerProfile(Player player)
 	public PlayerProfile getPlayerProfile(Player player)

+ 0 - 91
src/com/gmail/nossr50/mcTimer.java

@@ -1,91 +0,0 @@
-package com.gmail.nossr50;
-import org.bukkit.entity.*;
-
-import com.gmail.nossr50.config.LoadProperties;
-import com.gmail.nossr50.datatypes.PlayerProfile;
-import com.gmail.nossr50.skills.Skills;
-import com.gmail.nossr50.skills.Swords;
-
-
-public class mcTimer implements Runnable
-{
-	private final mcMMO plugin;
-	int thecount = 1;
-
-    public mcTimer(final mcMMO plugin) 
-    {
-        this.plugin = plugin;
-    }
-    
-	public void run() 
-	{
-		for(Player player : plugin.getServer().getOnlinePlayers())
-		{
-			if(player == null)
-				continue;
-			PlayerProfile PP = Users.getProfile(player);
-			
-			if(PP == null)
-				continue;
-			
-			/*
-			 * MONITOR SKILLS
-			 */
-			Skills.monitorSkills(player);
-			
-			/*
-			 * COOLDOWN MONITORING
-			 */
-			Skills.watchCooldowns(player);
-			
-			/*
-			 * PLAYER BLEED MONITORING
-			 */
-			if(thecount % 2 == 0 && PP.getBleedTicks() >= 1)
-			{
-        		player.damage(2);
-        		PP.decreaseBleedTicks();
-        	}
-			
-			if(LoadProperties.enableRegen && mcPermissions.getInstance().regeneration(player) && System.currentTimeMillis() >= PP.getRecentlyHurt() + 60000)
-			{
-				if(thecount == 20 || thecount == 40 || thecount == 60 || thecount == 80){
-				    if(player != null &&
-				    	player.getHealth() > 0 && player.getHealth() < 20 
-				    	&& m.getPowerLevel(player) >= 1000){
-				    	player.setHealth(m.calculateHealth(player.getHealth(), 1));
-				    }
-				}
-				if(thecount == 40 || thecount == 80){
-			   		if(player != null &&
-			   			player.getHealth() > 0 && player.getHealth() < 20 
-			    		&& m.getPowerLevel(player) >= 500 
-			    		&& m.getPowerLevel(player) < 1000){
-			    		player.setHealth(m.calculateHealth(player.getHealth(), 1));
-			    	}
-				}
-				if(thecount == 80)
-				{
-			    	if(player != null &&
-			    		player.getHealth() > 0 && player.getHealth() < 20  
-			    		&& m.getPowerLevel(player) < 500){
-			    		player.setHealth(m.calculateHealth(player.getHealth(), 1));
-			    	}
-				}
-			}
-		}
-		
-		
-		/*
-		 * NON-PLAYER BLEED MONITORING
-		 */
-		
-		if(thecount % 2 == 0)
-			Swords.bleedSimulate(plugin);
-		
-		//SETUP FOR HP REGEN/BLEED
-		thecount++;
-		if(thecount >= 81)
-			thecount = 1;
-	}
-}

+ 1 - 1
src/com/gmail/nossr50/party/Party.java

@@ -19,7 +19,7 @@ import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.config.LoadProperties;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.datatypes.PlayerProfile;
 import com.gmail.nossr50.locale.mcLocale;
 import com.gmail.nossr50.locale.mcLocale;
-import com.gmail.nossr50.spout.ArrayListString;
+import com.gmail.nossr50.spout.util.ArrayListString;
 
 
 
 
 public class Party 
 public class Party 

+ 64 - 0
src/com/gmail/nossr50/runnables/mcTimer.java

@@ -0,0 +1,64 @@
+package com.gmail.nossr50.runnables;
+import org.bukkit.entity.*;
+
+import com.gmail.nossr50.Users;
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.datatypes.PlayerProfile;
+import com.gmail.nossr50.skills.Skills;
+import com.gmail.nossr50.skills.Swords;
+
+
+public class mcTimer implements Runnable
+{
+	private final mcMMO plugin;
+	int thecount = 1;
+
+    public mcTimer(final mcMMO plugin) 
+    {
+        this.plugin = plugin;
+    }
+    
+	public void run() 
+	{
+		for(Player player : plugin.getServer().getOnlinePlayers())
+		{
+			if(player == null)
+				continue;
+			PlayerProfile PP = Users.getProfile(player);
+			
+			if(PP == null)
+				continue;
+			
+			/*
+			 * MONITOR SKILLS
+			 */
+			Skills.monitorSkills(player);
+			
+			/*
+			 * COOLDOWN MONITORING
+			 */
+			Skills.watchCooldowns(player);
+			
+			/*
+			 * PLAYER BLEED MONITORING
+			 */
+			if(thecount % 2 == 0 && PP.getBleedTicks() >= 1)
+			{
+        		player.damage(2);
+        		PP.decreaseBleedTicks();
+        	}
+		
+			/*
+			 * NON-PLAYER BLEED MONITORING
+			 */
+			
+			if(thecount % 2 == 0)
+				Swords.bleedSimulate(plugin);
+			
+			//SETUP FOR HP REGEN/BLEED
+			thecount++;
+			if(thecount >= 81)
+				thecount = 1;
+		}
+	}
+}

+ 2 - 1
src/com/gmail/nossr50/skills/Axes.java

@@ -52,7 +52,8 @@ public class Axes {
     		}
     		}
     	}
     	}
     }
     }
-	public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx){
+	public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx)
+	{
     	Entity x = event.getEntity();
     	Entity x = event.getEntity();
     	if(x instanceof Wolf){
     	if(x instanceof Wolf){
     		Wolf wolf = (Wolf)x;
     		Wolf wolf = (Wolf)x;

+ 0 - 82
src/com/gmail/nossr50/skills/Herbalism.java

@@ -305,86 +305,4 @@ public class Herbalism
     	}
     	}
     	Skills.XpCheckSkill(SkillType.HERBALISM, player);
     	Skills.XpCheckSkill(SkillType.HERBALISM, player);
     }
     }
-	public static void breadCheck(Player player, ItemStack is)
-	{
-		PlayerProfile PP = Users.getProfile(player);
-		int herbalism = PP.getSkillLevel(SkillType.HERBALISM);
-	    int heal = 0;
-		if(is.getTypeId() == 297)
-	    {
-	    	if(herbalism >= 50 && herbalism < 150)
-    		{
-    			heal = 1;
-    		} else if (herbalism >= 150 && herbalism < 250)
-    		{
-    			heal = 2;
-    		} else if (herbalism >= 250 && herbalism < 350)
-    		{
-    			heal = 3;
-    		} else if (herbalism >= 350 && herbalism < 450)
-    		{
-    			heal = 4;
-    		} else if (herbalism >= 450 && herbalism < 550)
-    		{
-    			heal = 5;
-    		} else if (herbalism >= 550 && herbalism < 650)
-    		{
-    			heal = 6;
-    		} else if (herbalism >= 650 && herbalism < 750)
-    		{
-    			heal = 7;
-    		} else if (herbalism >= 750)
-    		{
-    			heal = 8;
-    		}
-	    	
-	    	if(player.getHealth()+heal > 20)
-	    	{
-	    		player.setHealth(20);
-	    	}
-	    	else
-	    		player.setHealth(player.getHealth()+heal);
-	   	}
-    }
-    public static void stewCheck(Player player, ItemStack is)
-    {
-    	PlayerProfile PP = Users.getProfile(player);
-    	int herbalism = PP.getSkillLevel(SkillType.HERBALISM);
-    	int heal = 0;
-    	if(is.getTypeId() == 282)
-    	{
-    		if(herbalism >= 50 && herbalism < 150)
-    		{
-    			heal = 1;
-    		} else if (herbalism >= 150 && herbalism < 250)
-    		{
-    			heal = 2;
-    		} else if (herbalism >= 250 && herbalism < 350)
-    		{
-    			heal = 3;
-    		} else if (herbalism >= 350 && herbalism < 450)
-    		{
-    			heal = 4;
-    		} else if (herbalism >= 450 && herbalism < 550)
-    		{
-    			heal = 5;
-    		} else if (herbalism >= 550 && herbalism < 650)
-    		{
-    			heal = 6;
-    		} else if (herbalism >= 650 && herbalism < 750)
-    		{
-    			heal = 7;
-    		} else if (herbalism >= 750)
-    		{
-    			heal = 8;
-    		}
-    		
-    		if(player.getHealth()+heal > 20)
-	    	{
-	    		player.setHealth(20);
-	    	}
-	    	else
-	    		player.setHealth(player.getHealth()+heal);
-    	}
-    }
 }
 }

+ 0 - 35
src/com/gmail/nossr50/skills/Swords.java

@@ -157,41 +157,6 @@ public class Swords
     	}
     	}
     }
     }
     
     
-    public static void parryCheck(EntityDamageByEntityEvent event, Player defender)
-    {
-    	Entity y = event.getDamager();
-    	PlayerProfile PPd = Users.getProfile(defender);
-    	if(defender != null && m.isSwords(defender.getItemInHand()) 
-    			&& mcPermissions.getInstance().swords(defender)){
-			if(PPd.getSkillLevel(SkillType.SWORDS) >= 900)
-			{
-				if(Math.random() * 3000 <= 900)
-				{
-					event.setCancelled(true);
-					defender.sendMessage(ChatColor.GREEN+"**PARRIED**");
-					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
-					if(y instanceof Player)
-					{
-						Player attacker = (Player)y;
-						attacker.sendMessage(ChatColor.GREEN+"**PARRIED**");
-					}
-				}
-			} else 
-			{
-				if(Math.random() * 3000 <= PPd.getSkillLevel(SkillType.SWORDS))
-				{
-					event.setCancelled(true);
-					defender.sendMessage(ChatColor.YELLOW+"*CLANG* SUCCESSFUL PARRY *CLANG*");
-					defender.getItemInHand().setDurability((short) (defender.getItemInHand().getDurability() + 1));
-					if(y instanceof Player)
-					{
-						Player attacker = (Player)y;
-						attacker.sendMessage(ChatColor.DARK_RED+"**TARGET HAS PARRIED THAT ATTACK**");
-					}
-				}
-			}
-		}
-    }
     public static void counterAttackChecks(EntityDamageByEntityEvent event)
     public static void counterAttackChecks(EntityDamageByEntityEvent event)
     {
     {
     	//Don't want to counter attack arrows
     	//Don't want to counter attack arrows

+ 1 - 0
src/com/gmail/nossr50/spout/mmoHelper.java

@@ -38,6 +38,7 @@ import org.getspout.spoutapi.player.SpoutPlayer;
 
 
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.party.Party;
 import com.gmail.nossr50.party.Party;
+import com.gmail.nossr50.spout.util.GenericLivingEntity;
 
 
 public class mmoHelper 
 public class mmoHelper 
 {
 {

+ 1 - 1
src/com/gmail/nossr50/spout/ArrayListString.java → src/com/gmail/nossr50/spout/util/ArrayListString.java

@@ -15,7 +15,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
  */
 
 
-package com.gmail.nossr50.spout;
+package com.gmail.nossr50.spout.util;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 

+ 1 - 1
src/com/gmail/nossr50/spout/GenericFace.java → src/com/gmail/nossr50/spout/util/GenericFace.java

@@ -15,7 +15,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
  */
 
 
-package com.gmail.nossr50.spout;
+package com.gmail.nossr50.spout.util;
 
 
 import org.getspout.spoutapi.gui.GenericTexture;
 import org.getspout.spoutapi.gui.GenericTexture;
 
 

+ 3 - 1
src/com/gmail/nossr50/spout/GenericLivingEntity.java → src/com/gmail/nossr50/spout/util/GenericLivingEntity.java

@@ -14,13 +14,15 @@
  * You should have received a copy of the GNU General Public License
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
  */
-package com.gmail.nossr50.spout;
+package com.gmail.nossr50.spout.util;
 
 
 import org.bukkit.Bukkit;
 import org.bukkit.Bukkit;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Player;
 import org.getspout.spoutapi.gui.*;
 import org.getspout.spoutapi.gui.*;
 
 
+import com.gmail.nossr50.spout.mmoHelper;
+
 public class GenericLivingEntity extends GenericContainer {
 public class GenericLivingEntity extends GenericContainer {
 
 
 	private Container _bars;
 	private Container _bars;

+ 113 - 0
src/org/blockface/bukkitstats/CallHome.java

@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2011. SwearWord
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this
+ * software and associated documentation files (the "Software"), to deal in the Software
+ * without restriction, including without limitation the rights to use the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * No modifications may be made to the Software. User must use the code as is.
+ *
+ * Users of any software implementing this Software must be made aware of this Software's
+ * implementation. This Software may not be executed on uninformed clients.
+ *
+ * The above copyright notice and this permission notice shall be included in all copies
+ * or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
+ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+package org.blockface.bukkitstats;
+
+import org.bukkit.plugin.Plugin;
+import org.bukkit.util.config.Configuration;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+/*
+@
+ */
+
+public class CallHome{
+
+    private static Configuration cfg=null;
+
+    public static void load(Plugin plugin) {
+        if(cfg==null) {
+            if(!verifyConfig()) return;
+        }
+        if(cfg.getBoolean("opt-out",false)) return;
+        plugin.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin,new CallTask(plugin,cfg.getBoolean("list-server",true)),0L,20L*60L*10);
+        System.out.println(plugin.getDescription().getName() + " is keeping usage stats an. To opt-out for whatever bizarre reason, check plugins/stats.");
+
+    }
+
+    private static Boolean verifyConfig() {
+        Boolean ret = true;
+        File config = new File("plugins/stats/config.yml");
+        if(!config.getParentFile().exists()) config.getParentFile().mkdir();
+        if(!config.exists()) try {
+            config.createNewFile();
+            ret = false;
+            System.out.println("BukkitStats has initialized for the first time. To opt-out check plugins/stats");
+        } catch (IOException e) {
+            return false;
+        }
+        cfg=new Configuration(config);
+        cfg.load();
+        cfg.getBoolean("opt-out",false);
+        cfg.getBoolean("list-server", true);
+        cfg.save();
+        return ret;
+    }
+
+
+}
+
+class CallTask implements Runnable {
+    private Plugin plugin;
+    private int pub=1;
+
+    public CallTask(Plugin plugin,Boolean pub) {
+        this.plugin = plugin;
+        if(!pub) this.pub = 0;
+    }
+
+
+
+    public void run() {
+        try {
+            if(postUrl().contains("Success")) return;
+        } catch (Exception ignored) {
+        }
+        System.out.println("Could not call home.");
+    }
+
+    private String postUrl() throws Exception {
+        String url = String.format("http://usage.blockface.org/update.php?name=%s&build=%s&plugin=%s&port=%s&public=%s",
+                plugin.getServer().getName(),
+                plugin.getDescription().getVersion(),
+                plugin.getDescription().getName(),
+                plugin.getServer().getPort(),
+                pub);
+        URL oracle = new URL(url);
+        URLConnection yc = oracle.openConnection();
+        BufferedReader in = new BufferedReader(
+                                new InputStreamReader(
+                                yc.getInputStream()));
+        String inputLine;
+        while ((inputLine = in.readLine()) != null)
+            inputLine += "";
+        return inputLine;
+    }
+}