Ver Fonte

Fixed bug with checking if an entity is wearing armor.

GJ há 12 anos atrás
pai
commit
cedfb1a538
2 ficheiros alterados com 5 adições e 5 exclusões
  1. 1 0
      Changelog.txt
  2. 4 5
      src/main/java/com/gmail/nossr50/util/Misc.java

+ 1 - 0
Changelog.txt

@@ -10,6 +10,7 @@ Key:
 Version 1.4.00-dev
  + Added new cancellable McMMOPlayerDisarmEvent for Citizens compatibility - fires whenever a player is disarmed.
  = Fixed bug where Impact was applied incorrectly due to an inverted method call
+ = Fixed bug where Impact improperly determined the defender's armor
  = Fixed ArrayIndexOutOfBoundsException resulting from being unranked in a skill when using FlatFile
 ! Changed how Tree Feller is handled, it should now put less stress on the CPU
 

+ 4 - 5
src/main/java/com/gmail/nossr50/util/Misc.java

@@ -11,7 +11,6 @@ import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Tameable;
 import org.bukkit.event.entity.EntityDamageEvent;
-import org.bukkit.inventory.EntityEquipment;
 import org.bukkit.inventory.ItemStack;
 import org.bukkit.plugin.PluginManager;
 
@@ -57,10 +56,10 @@ public class Misc {
      * @return true if the player has armor, false otherwise
      */
     public static boolean hasArmor(LivingEntity entity) {
-        EntityEquipment equipment = entity.getEquipment();
-
-        if (equipment.getBoots() != null || equipment.getChestplate() != null || equipment.getHelmet() != null || equipment.getLeggings() != null) {
-            return true;
+        for (ItemStack armor : entity.getEquipment().getArmorContents()) {
+            if (armor.getType() != Material.AIR) {
+                return true;
+            }
         }
 
         return false;