Browse Source

Fixed plugin incompatibility and exploits regarding buffed tools remaining buffed
Fixes #4616

nossr50 3 năm trước cách đây
mục cha
commit
f91a2217c8

+ 1 - 0
Changelog.txt

@@ -1,4 +1,5 @@
 Version 2.1.201
+    Fixed an exploit related to Ability Buffs remaining on tools
     Blast Mining no longer drops Budding Amethyst since its not legal to obtain this item through normal gameplay
     Added mcinspect and mmoinspect aliases to inspect command
     Portuguese translation of Woodcutting changed back to Lenhador

+ 1 - 0
src/main/java/com/gmail/nossr50/listeners/InventoryListener.java

@@ -402,6 +402,7 @@ public class InventoryListener implements Listener {
         }
 
         SkillUtils.removeAbilityBuff(event.getCurrentItem());
+
         if (event.getAction() == InventoryAction.HOTBAR_SWAP) {
             if(isOutsideWindowClick(event))
                 return;

+ 11 - 13
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -6,6 +6,7 @@ import com.gmail.nossr50.datatypes.chat.ChatChannel;
 import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.datatypes.skills.SubSkillType;
+import com.gmail.nossr50.datatypes.skills.interfaces.Skill;
 import com.gmail.nossr50.datatypes.skills.subskills.taming.CallOfTheWildType;
 import com.gmail.nossr50.events.McMMOReplaceVanillaTreasureEvent;
 import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
@@ -212,6 +213,11 @@ public class PlayerListener implements Listener {
         }
     }
 
+    @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
+    public void onPlayerDeathNormal(PlayerDeathEvent playerDeathEvent) {
+        SkillUtils.removeAbilityBoostsFromInventory(playerDeathEvent.getEntity());
+    }
+
     /**
      * Monitor PlayerChangedWorldEvents.
      * <p>
@@ -1031,17 +1037,9 @@ public class PlayerListener implements Listener {
         }
     }
 
-//
-//    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
-//    public void onPlayerStatisticIncrementEvent(PlayerStatisticIncrementEvent event) {
-//        /* WORLD BLACKLIST CHECK */
-//        if(WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld()))
-//            return;
-//
-//        if (!mcMMO.getHolidayManager().isAprilFirst()) {
-//            return;
-//        }
-//
-//        mcMMO.getHolidayManager().handleStatisticEvent(event);
-//    }
+    @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL)
+    public void onPlayerSwapHandItems(PlayerSwapHandItemsEvent event) {
+        SkillUtils.removeAbilityBuff(event.getMainHandItem());
+        SkillUtils.removeAbilityBuff(event.getOffHandItem());
+    }
 }