Pārlūkot izejas kodu

final damage values of 0 are only ignored in certain circumstances, fixes a few bugs

nossr50 4 gadi atpakaļ
vecāks
revīzija
a6586e07cc

+ 1 - 0
Changelog.txt

@@ -1,4 +1,5 @@
 Version 2.1.148
 Version 2.1.148
+    Fixed a bug where weakness potions could prevent unarmed skills from activating and thus making unarmed useless
     Alchemy progression is now more reasonable (delete skillranks.yml or edit it yourself to receive the change)
     Alchemy progression is now more reasonable (delete skillranks.yml or edit it yourself to receive the change)
 
 
     NOTES:
     NOTES:

+ 1 - 2
src/main/java/com/gmail/nossr50/listeners/EntityListener.java

@@ -411,7 +411,6 @@ public class EntityListener implements Listener {
             }
             }
         }
         }
 
 
-
         /*
         /*
          * This was put here to solve a plugin conflict with a mod called Project Korra
          * This was put here to solve a plugin conflict with a mod called Project Korra
          * Project Korra sends out a damage event with exactly 0 damage
          * Project Korra sends out a damage event with exactly 0 damage
@@ -421,7 +420,7 @@ public class EntityListener implements Listener {
          * Surprising this kind of thing
          * Surprising this kind of thing
          *
          *
          */
          */
-        if(damage <= 0) {
+        if(event.getDamage() <= 0 && !CombatUtils.isDamageLikelyFromNormalCombat(event.getCause())) {
             return;
             return;
         }
         }
 
 

+ 12 - 0
src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

@@ -42,6 +42,18 @@ import java.util.Map;
 public final class CombatUtils {
 public final class CombatUtils {
     private CombatUtils() {}
     private CombatUtils() {}
 
 
+    //Likely.. because who knows what plugins are throwing around
+    public static boolean isDamageLikelyFromNormalCombat(DamageCause damageCause) {
+        switch (damageCause) {
+            case ENTITY_ATTACK:
+            case ENTITY_SWEEP_ATTACK:
+            case PROJECTILE:
+                return true;
+            default:
+                return false;
+        }
+    }
+
     private static void processSwordCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event) {
     private static void processSwordCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event) {
         if (event.getCause() == DamageCause.THORNS) {
         if (event.getCause() == DamageCause.THORNS) {
             return;
             return;