mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-25 09:41:29 +01:00
SPIGOT-2000: Picking up items to shield slot working inconsistently when inventory is full
By: PurkkaKoodari <purkka@purkka.codes>
This commit is contained in:
parent
223b5e4c95
commit
672c7bfa97
@ -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 New Issue
Block a user