mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-11 17:31:06 +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
|
+ // Possibly < 0; fix here so we do not have to modify code below
|
||||||
+ this.pickupDelay = 0;
|
+ 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
|
+ // CraftBukkit end
|
||||||
+
|
+
|
||||||
|
|
|
@ -85,6 +85,12 @@
|
||||||
+ }
|
+ }
|
||||||
+ if (remains <= 0) return itemstack.getCount();
|
+ 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;
|
+ return itemstack.getCount() - remains;
|
||||||
+ }
|
+ }
|
||||||
+ // CraftBukkit end
|
+ // CraftBukkit end
|
||||||
|
|
|
@ -56,5 +56,22 @@ public class PlayerInventoryTest extends AbstractTestingBase {
|
||||||
assertEquals(1, inventory.canHold(itemStack1Coal));
|
assertEquals(1, inventory.canHold(itemStack1Coal));
|
||||||
assertEquals(2, inventory.canHold(itemStack32Coal));
|
assertEquals(2, inventory.canHold(itemStack32Coal));
|
||||||
assertEquals(2, inventory.canHold(itemStack64Coal));
|
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