mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-03 13:36:44 +01:00
SPIGOT-2000: Picking up items to shield slot working inconsistently when inventory is full
This commit is contained in:
parent
7cc7719ffd
commit
b7db6fba12
3 changed files with 26 additions and 0 deletions
|
@ -127,6 +127,9 @@
|
|||
+
|
||||
+ // Possibly < 0; fix here so we do not have to modify code below
|
||||
+ this.pickupDelay = 0;
|
||||
+ } else if (this.pickupDelay == 0) {
|
||||
+ // ensure that the code below isn't triggered if canHold says we can't pick the items up
|
||||
+ this.pickupDelay = -1;
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
|
|
|
@ -85,6 +85,12 @@
|
|||
+ }
|
||||
+ if (remains <= 0) return itemstack.getCount();
|
||||
+ }
|
||||
+ ItemStack offhandItemStack = this.getItem(this.items.size() + this.armor.size());
|
||||
+ if (this.a(offhandItemStack, itemstack)) {
|
||||
+ remains -= (offhandItemStack.getMaxStackSize() < this.getMaxStackSize() ? offhandItemStack.getMaxStackSize() : this.getMaxStackSize()) - offhandItemStack.getCount();
|
||||
+ }
|
||||
+ if (remains <= 0) return itemstack.getCount();
|
||||
+
|
||||
+ return itemstack.getCount() - remains;
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
|
|
|
@ -56,5 +56,22 @@ public class PlayerInventoryTest extends AbstractTestingBase {
|
|||
assertEquals(1, inventory.canHold(itemStack1Coal));
|
||||
assertEquals(2, inventory.canHold(itemStack32Coal));
|
||||
assertEquals(2, inventory.canHold(itemStack64Coal));
|
||||
|
||||
// free space for 32 items in non-empty off-hand slot
|
||||
inventory.setItem(inventory.items.size() - 1, itemStackApple);
|
||||
inventory.setItem(inventory.items.size() - 2, itemStackApple);
|
||||
inventory.setItem(inventory.items.size() + inventory.armor.size(), itemStack32Coal);
|
||||
|
||||
assertEquals(1, inventory.canHold(itemStack1Coal));
|
||||
assertEquals(32, inventory.canHold(itemStack32Coal));
|
||||
assertEquals(32, inventory.canHold(itemStack64Coal));
|
||||
|
||||
// free space for 1 item in non-empty off-hand slot and another slot
|
||||
inventory.setItem(inventory.items.size() - 1, itemStack63Coal);
|
||||
inventory.setItem(inventory.items.size() + inventory.armor.size(), itemStack63Coal);
|
||||
|
||||
assertEquals(1, inventory.canHold(itemStack1Coal));
|
||||
assertEquals(2, inventory.canHold(itemStack32Coal));
|
||||
assertEquals(2, inventory.canHold(itemStack64Coal));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue