瀏覽代碼

Merge pull request #190 from bm01/master

Taming prevent damage fix
nossr50 13 年之前
父節點
當前提交
abcd586daa
共有 2 個文件被更改,包括 41 次插入20 次删除
  1. 6 6
      src/main/java/com/gmail/nossr50/Combat.java
  2. 35 14
      src/main/java/com/gmail/nossr50/skills/Taming.java

+ 6 - 6
src/main/java/com/gmail/nossr50/Combat.java

@@ -171,12 +171,12 @@ public class Combat
 		/*			 
 		 * DEFENSIVE CHECKS FOR WOLVES
 		 */
-		else if(target instanceof Wolf)
-		{
-			Wolf wolf = (Wolf) target;
-			if(wolf.isTamed() && (wolf.getOwner() instanceof Player))
-				Taming.preventDamage(event, pluginx);
-		}
+		//else if(target instanceof Wolf)
+		//{
+		//	Wolf wolf = (Wolf) target;
+		//	if(wolf.isTamed() && (wolf.getOwner() instanceof Player))
+		//		Taming.preventDamage(event, pluginx);
+		//}
 	}
 	
 	public static void combatAbilityChecks(Player attacker, PlayerProfile PPa)

+ 35 - 14
src/main/java/com/gmail/nossr50/skills/Taming.java

@@ -113,26 +113,47 @@ public class Taming
 	public static void preventDamage(EntityDamageEvent event, mcMMO plugin)
 	{
 		DamageCause cause = event.getCause();
-		Entity entity = event.getEntity();
-		Wolf theWolf = (Wolf)entity;
-		Player master = (Player)theWolf.getOwner();
+		Wolf wolf = (Wolf) event.getEntity();
+		Player master = (Player) wolf.getOwner();
 		int skillLevel = Users.getProfile(master).getSkillLevel(SkillType.TAMING);
 		
-		//Environmentally Aware
-		if((cause == DamageCause.CONTACT || cause == DamageCause.LAVA || cause == DamageCause.FIRE) && skillLevel >= 100)
+		switch(cause)
 		{
-			if(event.getDamage() < theWolf.getHealth())
+		//Environmentally Aware
+		case CONTACT:
+		case LAVA:
+		case FIRE:
+			if(skillLevel >= 100)
 			{
-				entity.teleport(master.getLocation());
+				if(event.getDamage() >= wolf.getHealth())
+					return;
+				
+				wolf.teleport(master.getLocation());
 				master.sendMessage(mcLocale.getString("mcEntityListener.WolfComesBack")); //$NON-NLS-1$
-				entity.setFireTicks(0);
 			}
-		}
-		if(cause == DamageCause.FALL && skillLevel >= 100)
-			event.setCancelled(true);
-		
+			break;
+		case FALL:
+			if(skillLevel >= 100)
+				event.setCancelled(true);
+			break;
+			
 		//Thick Fur
-		if(cause == DamageCause.FIRE_TICK)
-			event.getEntity().setFireTicks(0);
+		case FIRE_TICK:
+			if(skillLevel >= 250)
+				wolf.setFireTicks(0);
+			break;
+		case ENTITY_ATTACK:
+		case PROJECTILE:
+			if(skillLevel >= 250)
+				event.setDamage(event.getDamage() / 2);
+			break;
+			
+		//Shock Proof
+		case ENTITY_EXPLOSION:
+		case BLOCK_EXPLOSION:
+			if(skillLevel >= 500)
+				event.setDamage(event.getDamage() / 6);
+			break;
+		}
 	}
 }