浏览代码

Fixed bug where Berserk deletes items
when the players inventory is full.

Fixes #1947

TfT_02 11 年之前
父节点
当前提交
1c30146491

+ 1 - 0
Changelog.txt

@@ -29,6 +29,7 @@ Version 1.5.01-dev
  = Fixed bug which would cause a NullPointerException with getFlowerAndGrassXp()
  = Fixed bug which could cause and SQLException regarding the connection property 'maxReconnects'.
  = Fixed bug where falling blocks were incorrectly tracked
+ = Fixed bug where items would get deleted when in Berserk with a full inventory
  ! Changed SecondaryAbilityEvent to implement Cancellable and it now gets fired for damage related secondary abilities
  ! Changed the way mcMMO handles bonus damage, updated for the new damage event API
  ! Changed player data saving. Save tasks are now asynchronous

+ 3 - 2
src/main/java/com/gmail/nossr50/listeners/PlayerListener.java

@@ -332,9 +332,10 @@ public class PlayerListener implements Listener {
         }
 
         if ((mcMMOPlayer.isUsingUnarmed() && ItemUtils.isSharable(dropStack)) || mcMMOPlayer.getAbilityMode(AbilityType.BERSERK)) {
-            event.setCancelled(Unarmed.handleItemPickup(player.getInventory(), drop));
+            boolean pickupSuccess = Unarmed.handleItemPickup(player.getInventory(), drop);
+            event.setCancelled(pickupSuccess);
 
-            if (event.isCancelled()) {
+            if (pickupSuccess) {
                 player.playSound(player.getLocation(), Sound.ITEM_PICKUP, Misc.POP_VOLUME, Misc.getPopPitch());
                 player.updateInventory();
                 return;

+ 3 - 0
src/main/java/com/gmail/nossr50/skills/unarmed/Unarmed.java

@@ -69,6 +69,9 @@ public class Unarmed {
 
                 nextSlot++;
             }
+
+            // Inventory is full - cancel the item pickup
+            return false;
         }
         else if (firstEmpty != -1) {
             drop.remove();