Browse Source

*CLEANUP* - mcEntityListener.java

GJ 13 years ago
parent
commit
28c590f079
1 changed files with 252 additions and 233 deletions
  1. 252 233
      src/main/java/com/gmail/nossr50/listeners/mcEntityListener.java

+ 252 - 233
src/main/java/com/gmail/nossr50/listeners/mcEntityListener.java

@@ -38,260 +38,279 @@ import com.gmail.nossr50.skills.BlastMining;
 import com.gmail.nossr50.skills.Skills;
 import com.gmail.nossr50.skills.Taming;
 
-public class mcEntityListener implements Listener 
-{
-	private final mcMMO plugin;
+public class mcEntityListener implements Listener {
+    private final mcMMO plugin;
 
     public mcEntityListener(final mcMMO plugin) {
         this.plugin = plugin;
     }
-    
+
+    /**
+     * Monitor EntityDamageByEntity events.
+     *
+     * @param event The event to monitor
+     */
     @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
-    public void onEntityDamageByEntity(EntityDamageByEntityEvent event)
-    {
-        //Lets just put this here...
-        if(event instanceof FakeEntityDamageByEntityEvent)
+    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
+        if (event instanceof FakeEntityDamageByEntityEvent) {
             return;
-        
-    	Entity defender = event.getEntity();
-		Entity attacker = event.getDamager();
-		
-		if(attacker instanceof Player && defender instanceof Player)
-		{
-			if(!defender.getWorld().getPVP())
-				return;
-			if(Party.getInstance().inSameParty((Player)defender, (Player)attacker)) {
-				event.setCancelled(true);
-				return;
-			}
-		}
-		
-		//Make sure defender is not invincible
-		if(defender instanceof LivingEntity)
-		{
-		    LivingEntity livingDefender = (LivingEntity)defender;
-		    if(!m.isInvincible(livingDefender, event))
-		        Combat.combatChecks(event, plugin);
-		}
+        }
+
+        Entity defender = event.getEntity();
+        Entity attacker = event.getDamager();
+
+        if (attacker instanceof Player && defender instanceof Player) {
+            if (!defender.getWorld().getPVP()) {
+                return;
+            }
+
+            if (Party.getInstance().inSameParty((Player)defender, (Player)attacker)) {
+                event.setCancelled(true);
+                return;
+            }
+        }
+
+        /* Check for invincibility */
+        if (defender instanceof LivingEntity) {
+            LivingEntity livingDefender = (LivingEntity)defender;
+
+            if (!m.isInvincible(livingDefender, event)) {
+                Combat.combatChecks(event, plugin);
+            }
+        }
     }
-    
+
+    /**
+     * Monitor EntityDamage events.
+     *
+     * @param event The event to monitor
+     */
     @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
-    public void onEntityDamage(EntityDamageEvent event) 
-    {
-        if(event instanceof FakeEntityDamageEvent)
+    public void onEntityDamage(EntityDamageEvent event) {
+        if (event instanceof FakeEntityDamageEvent) {
             return;
+        }
+
+        Entity entity = event.getEntity();
+        EntityType type = entity.getType();
+        DamageCause cause = event.getCause();
         
-    	Entity entity = event.getEntity();
-    	EntityType type = entity.getType();
-    	DamageCause cause = event.getCause();
-    	
-    	switch(type)
-    	{
-    	case PLAYER:
-    		/*
-    		 * CHECK FOR INVULNERABILITY
-    		 */
-    		Player player = (Player) entity;
-    		PlayerProfile PP = Users.getProfile(player);
-            if(PP.getGodMode()) {
+        switch(type) {
+        case PLAYER:
+
+            /* Check for invincibility */
+            Player player = (Player) entity;
+            PlayerProfile PP = Users.getProfile(player);
+
+            if (PP.getGodMode()) {
                 event.setCancelled(true);
                 return;
             }
-    		
-    		if(!m.isInvincible(player, event))
-    		{
-    			if(cause == DamageCause.FALL && mcPermissions.getInstance().acrobatics(player))
-    				Acrobatics.acrobaticsCheck(player, event);
-    			if(cause == DamageCause.BLOCK_EXPLOSION && mcPermissions.getInstance().blastMining(player))
-    				BlastMining.demolitionsExpertise(player, event);
-    			if(event.getDamage() >= 1)
-    				PP.setRecentlyHurt(System.currentTimeMillis());
-    		}
-    		break;
-    	case WOLF:
-    		Wolf wolf = (Wolf) entity;
-    		if((!m.isInvincible(wolf, event)) && wolf.isTamed() && (wolf.getOwner() instanceof Player))
-    			Taming.preventDamage(event, plugin);
-    		break;
-    	}
+
+            if (!m.isInvincible(player, event)) {
+                if (cause == DamageCause.FALL && mcPermissions.getInstance().acrobatics(player)) {
+                    Acrobatics.acrobaticsCheck(player, event);
+                }
+                else if (cause == DamageCause.BLOCK_EXPLOSION && mcPermissions.getInstance().blastMining(player)) {
+                    BlastMining.demolitionsExpertise(player, event);
+                }
+
+                if (event.getDamage() >= 1) {
+                    PP.setRecentlyHurt(System.currentTimeMillis());
+                }
+            }
+            break;
+
+        case WOLF:
+            Wolf wolf = (Wolf) entity;
+
+            if ((!m.isInvincible(wolf, event)) && wolf.isTamed() && (wolf.getOwner() instanceof Player)) {
+                Taming.preventDamage(event, plugin);
+            }
+            break;
+
+        default:
+            break;
+        }
+    }
+
+    /**
+     * Monitor EntityDeath events.
+     *
+     * @param event The event to monitor
+     */
+    @EventHandler (priority = EventPriority.MONITOR)
+    public void onEntityDeath(EntityDeathEvent event) {
+        LivingEntity x = event.getEntity();
+        x.setFireTicks(0);
+
+        /* Remove mob from mob spawner list */
+        if (plugin.misc.mobSpawnerList.contains(x.getEntityId())) {
+            plugin.misc.mobSpawnerList.remove((Object)x.getEntityId());
+        }
+
+        /* Remove bleed track */
+        if(plugin.misc.bleedTracker.contains(x)) {
+            plugin.misc.addToBleedRemovalQue(x);
+        }
+
+        Archery.arrowRetrievalCheck(x, plugin);
+
+        if (x instanceof Player) {
+            Users.getProfile((Player)x).setBleedTicks(0);
+        }
     }
 
-    @EventHandler
-    public void onEntityDeath(EntityDeathEvent event) 
-    {
-    	LivingEntity x = event.getEntity();
-    	x.setFireTicks(0);
-    	
-    	//Remove mob from mob spawner list
-    	if(plugin.misc.mobSpawnerList.contains(x.getEntityId()))
-    	    plugin.misc.mobSpawnerList.remove((Object)x.getEntityId());
-    	
-    	//Remove bleed track
-    	if(plugin.misc.bleedTracker.contains(x))
-    		plugin.misc.addToBleedRemovalQue(x);
-    	
-		Archery.arrowRetrievalCheck(x, plugin);
-
-    	if(x instanceof Player)
-    		Users.getProfile((Player)x).setBleedTicks(0);
+    /**
+     * Monitor CreatureSpawn events.
+     *
+     * @param event The event to monitor
+     */
+    @EventHandler (priority = EventPriority.MONITOR)
+    public void onCreatureSpawn(CreatureSpawnEvent event) {
+        if (event.getSpawnReason().equals(SpawnReason.SPAWNER) && !LoadProperties.xpGainsMobSpawners) {
+            plugin.misc.mobSpawnerList.add(event.getEntity().getEntityId());
+        }
     }
 
-    @EventHandler
-    public void onCreatureSpawn(CreatureSpawnEvent event) 
-    {
-    	SpawnReason reason = event.getSpawnReason();
-    	
-    	if(reason == SpawnReason.SPAWNER && !LoadProperties.xpGainsMobSpawners)
-    		plugin.misc.mobSpawnerList.add(event.getEntity().getEntityId());
+    /**
+     * Monitor ExplosionPrime events.
+     *
+     * @param event The event to monitor
+     */
+    @EventHandler (priority = EventPriority.LOW)
+    public void onExplosionPrime(ExplosionPrimeEvent event) {
+        Entity entity = event.getEntity();
+
+        if (entity instanceof TNTPrimed) {
+            int id = entity.getEntityId();
+
+            if (plugin.misc.tntTracker.containsKey(id)) {
+                Player player = plugin.misc.tntTracker.get(id);
+                BlastMining.biggerBombs(player, event);
+            }
+        }
+    }
+
+    /**
+     * Monitor EntityExplode events.
+     *
+     * @param event The event to monitor
+     */
+    @EventHandler (priority = EventPriority.LOW)
+    public void onEnitityExplode(EntityExplodeEvent event) {
+        Entity entity = event.getEntity();
+
+        if (event.getEntity() instanceof TNTPrimed) {
+            int id = entity.getEntityId();
+
+            if (plugin.misc.tntTracker.containsKey(id)) {
+                Player player = plugin.misc.tntTracker.get(id);
+                BlastMining.dropProcessing(player, event, plugin);
+                plugin.misc.tntTracker.remove(id);
+            }
+        }
     }
-    
-	@EventHandler (priority = EventPriority.LOW)
-	public void onExplosionPrime(ExplosionPrimeEvent event)
-	{
-		Entity entity = event.getEntity();
-		if(entity instanceof TNTPrimed)
-		{
-			int id = entity.getEntityId();
-			if(plugin.misc.tntTracker.containsKey(id))
-			{
-				Player player = plugin.misc.tntTracker.get(id);
-				BlastMining.biggerBombs(player, event);
-			}
-		}		
-	}
-		
-	@EventHandler (priority = EventPriority.LOW)
-	public void onEnitityExplode(EntityExplodeEvent event)
-	{
-		Entity entity = event.getEntity();
-		if(event.getEntity() instanceof TNTPrimed)
-		{
-			int id = entity.getEntityId();
-			if(plugin.misc.tntTracker.containsKey(id))
-			{
-				Player player = plugin.misc.tntTracker.get(id);
-				BlastMining.dropProcessing(player, event, plugin);
-				plugin.misc.tntTracker.remove(id);
-			}
-		}
-	}
-    
-	@EventHandler (priority = EventPriority.LOW)
-	public void onFoodLevelChange(FoodLevelChangeEvent event)
-	{
-		if(LoadProperties.herbalismHungerBonus)
-		{
-			if(event.getEntity() instanceof Player)
-			{
-				Player player = (Player) event.getEntity();
-				PlayerProfile PP = Users.getProfile(player);
-				int currentFoodLevel = player.getFoodLevel();
-				int newFoodLevel = event.getFoodLevel();
-				
-				//Some foods have 3 ranks
-				//Some foods have 5 ranks
-				//The number of ranks is based on how 'common' the item is
-				//We can adjust this quite easily if we find something is giving too much of a bonus
-				
-				if(newFoodLevel > currentFoodLevel)
-				{
-					Material food = player.getItemInHand().getType();
-					int herbLevel = PP.getSkillLevel(SkillType.HERBALISM);
-					int foodChange = newFoodLevel - currentFoodLevel;
-					
-					switch(food)
-					{
-					case BREAD:
-					{
-					    //BREAD RESTORES 2 1/2 HUNGER
-					    //Restores 5 HUNGER @ 1000
-					    if(herbLevel >= 200 && herbLevel < 400)
-                            foodChange = foodChange + 1;
-					    else if(herbLevel >= 400 && herbLevel < 600)
-                            foodChange = foodChange + 2;
-					    else if(herbLevel >= 600 && herbLevel < 800)
-                            foodChange = foodChange + 3;
-					    else if(herbLevel >= 800 && herbLevel < 1000)
-                            foodChange = foodChange + 4;
-					    else if(herbLevel >= 1000)
-                            foodChange = foodChange + 5;
+
+    /**
+     * Monitor FoodLevelChange events.
+     *
+     * @param event The event to monitor
+     */
+    @EventHandler (priority = EventPriority.LOW)
+    public void onFoodLevelChange(FoodLevelChangeEvent event) {
+        if (LoadProperties.herbalismHungerBonus) {
+            if (event.getEntity() instanceof Player) {
+                Player player = (Player) event.getEntity();
+                PlayerProfile PP = Users.getProfile(player);
+                int currentFoodLevel = player.getFoodLevel();
+                int newFoodLevel = event.getFoodLevel();
+
+                /* Some foods have 3 ranks
+                 * Some foods have 5 ranks
+                 * The number of ranks is based on how 'common' the item is
+                 * We can adjust this quite easily if we find something is giving too much of a bonus
+                 */
+
+                if (newFoodLevel > currentFoodLevel) {
+                    Material food = player.getItemInHand().getType();
+                    int herbLevel = PP.getSkillLevel(SkillType.HERBALISM);
+                    int foodChange = newFoodLevel - currentFoodLevel;
+                    int rankChange = 0;
+
+                    switch (food) {
+                    case BREAD:
+                        /* BREAD RESTORES 2 1/2 HUNGER - RESTORES 5 HUNGER @ 1000 */
+                        rankChange = 200;
+                        break;
+
+                    case COOKIE:
+                        /* COOKIE RESTORES 1/2 HUNGER - RESTORES 2 HUNGER @ 1000 */
+                        rankChange = 400;
+                        break;
+
+                    case MELON:
+                        /* MELON RESTORES  1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */
+                        rankChange = 400;
                         break;
-					}
-					case COOKIE:
-					{
-					    //COOKIE RESTORES 1/2 HUNGER
-					    //RESTORES 2 HUNGER @ 1000
-					    if(herbLevel >= 200 && herbLevel < 600)
-                            foodChange = foodChange + 1;
-                        else if(herbLevel >= 600 && herbLevel < 1000)
-                            foodChange = foodChange + 2;
-                        else if(herbLevel >= 1000)
-                            foodChange = foodChange + 3;
+
+                    case MUSHROOM_SOUP:
+                        /* MUSHROOM SOUP RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ 1000 */
+                        rankChange = 200;
                         break;
-					}
-					case MELON:
-					{
-					    //MELON RESTORES  1 HUNGER
-					    //RESTORES 2 1/2 HUNGER @ 1000
-                        if(herbLevel >= 200 && herbLevel < 600)
-                            foodChange = foodChange + 1;
-                        else if(herbLevel >= 600 && herbLevel < 1000)
-                            foodChange = foodChange + 2;
-                        else if(herbLevel >= 1000)
-                            foodChange = foodChange + 3;
-                        break;  
-					}
-					case MUSHROOM_SOUP:
-					{
-					    //MUSHROOM SOUP RESTORES 4 HUNGER
-					    //RESTORES 6 1/2 HUNGER @ 1000
-					    if(herbLevel >= 200 && herbLevel < 400)
-                            foodChange = foodChange + 1;
-                        else if(herbLevel >= 400 && herbLevel < 600)
-                            foodChange = foodChange + 2;
-                        else if(herbLevel >= 600 && herbLevel < 800)
-                            foodChange = foodChange + 3;
-                        else if(herbLevel >= 800 && herbLevel < 1000)
-                            foodChange = foodChange + 4;
-                        else if(herbLevel >= 1000)
-                            foodChange = foodChange + 5;
+
+                    default:
                         break;
-					}
-					}
-					
-					//Make sure we don't go over the max value
-					newFoodLevel = currentFoodLevel + foodChange;
-                    if(newFoodLevel > 20)
+                    }
+
+                    for (int i = 200; i <= 1000; i += rankChange) {
+                        if (herbLevel >= i) {
+                            foodChange++;
+                        }
+                    }
+
+                    /* Make sure we don't go over the max value */
+                    newFoodLevel = currentFoodLevel + foodChange;
+                    if (newFoodLevel > 20) {
                         event.setFoodLevel(20);
-                    if(newFoodLevel <= 20)
+                    }
+                    else {
                         event.setFoodLevel(newFoodLevel);
-				}
-			}
-		}
-	}
-	
-	@EventHandler (priority = EventPriority.MONITOR)
-	public void onEntityTame(EntityTameEvent event)
-	{
-		Player player = (Player) event.getOwner();
-	    if(mcPermissions.getInstance().taming(player))
-	    {
-	        PlayerProfile PP = Users.getProfile(player);
-	        EntityType type = event.getEntityType();
-	        int xp = 0;
-	        
-	        switch(type)
-	        {
-	        case WOLF:
-	        	xp = LoadProperties.mtameWolf;
-	        	break;
-	        case OCELOT:
-	        	xp = LoadProperties.mtameOcelot;
-	        	break;
-	        }
-	        
-	        PP.addXP(SkillType.TAMING, xp, player);
-	        Skills.XpCheckSkill(SkillType.TAMING, player);
-	    }
-	}
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Monitor EntityTame events.
+     *
+     * @param event The event to watch
+     */
+    @EventHandler (priority = EventPriority.MONITOR)
+    public void onEntityTame(EntityTameEvent event) {
+        Player player = (Player) event.getOwner();
+
+        if (mcPermissions.getInstance().taming(player)) {
+            PlayerProfile PP = Users.getProfile(player);
+            EntityType type = event.getEntityType();
+            int xp = 0;
+
+            switch (type) {
+            case WOLF:
+                xp = LoadProperties.mtameWolf;
+                break;
+
+            case OCELOT:
+                xp = LoadProperties.mtameOcelot;
+                break;
+
+            default:
+                break;
+            }
+
+            PP.addXP(SkillType.TAMING, xp, player);
+            Skills.XpCheckSkill(SkillType.TAMING, player);
+        }
+    }
 }