mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 12:27:59 +01:00
Finish PlayerPickItemEvent
This commit is contained in:
parent
4758f1202f
commit
f4817c9013
@ -67,20 +67,24 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+
|
+
|
||||||
+ /**
|
+ /**
|
||||||
+ * Returns the slot in which the item that will be put into the players hotbar is located.
|
+ * Returns the slot in which the item that will be put into the players hotbar is located.
|
||||||
|
+ * <p>
|
||||||
|
+ * Returns {@code -1} if the item is not in the player's inventory and should be spawned in if in creative mode.
|
||||||
+ *
|
+ *
|
||||||
+ * @return player inventory slot (0-35 inclusive)
|
+ * @return player inventory slot (0-35 inclusive, or {@code -1} not taken from the inventory)
|
||||||
+ */
|
+ */
|
||||||
+ public @Range(from = 0, to = 35) int getSourceSlot() {
|
+ public @Range(from = -1, to = 35) int getSourceSlot() {
|
||||||
+ return this.sourceSlot;
|
+ return this.sourceSlot;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ /**
|
+ /**
|
||||||
+ * Change the source slot from which the item that will be put in the players hotbar will be taken.
|
+ * Change the source slot from which the item that will be put in the players hotbar will be taken.
|
||||||
|
+ * <p>
|
||||||
|
+ * If set to {@code -1} and the player is in creative mode, the item will be spawned in.
|
||||||
+ *
|
+ *
|
||||||
+ * @param sourceSlot player inventory slot (0-35 inclusive)
|
+ * @param sourceSlot player inventory slot (0-35 inclusive, or {@code -1} not taken from the inventory)
|
||||||
+ */
|
+ */
|
||||||
+ public void setSourceSlot(final @Range(from = 0, to = 35) int sourceSlot) {
|
+ public void setSourceSlot(final @Range(from = -1, to = 35) int sourceSlot) {
|
||||||
+ Preconditions.checkArgument(sourceSlot >= 0 && sourceSlot <= 35, "Source slot must be in range of the player's inventory slot");
|
+ Preconditions.checkArgument(sourceSlot >= -1 && sourceSlot <= 35, "Source slot must be in range of the player's inventory slot");
|
||||||
+ this.sourceSlot = sourceSlot;
|
+ this.sourceSlot = sourceSlot;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
@ -20,19 +20,21 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ if (!event.callEvent()) {
|
+ if (!event.callEvent()) {
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end - Add PlayerPickItemEvent
|
+ i = event.getSourceSlot();
|
||||||
|
|
||||||
if (i != -1) {
|
if (i != -1) {
|
||||||
if (Inventory.isHotbarSlot(i)) {
|
- if (Inventory.isHotbarSlot(i)) {
|
||||||
- playerinventory.selected = i;
|
- playerinventory.selected = i;
|
||||||
+ playerinventory.selected = event.getTargetSlot(); // Paper - Add target slot
|
+ if (Inventory.isHotbarSlot(i) && Inventory.isHotbarSlot(event.getTargetSlot())) {
|
||||||
|
+ playerinventory.selected = event.getTargetSlot();
|
||||||
} else {
|
} else {
|
||||||
- playerinventory.pickSlot(i);
|
- playerinventory.pickSlot(i);
|
||||||
+ playerinventory.pickSlot(i, event.getTargetSlot()); // Paper - Add target slot
|
+ playerinventory.pickSlot(i, event.getTargetSlot());
|
||||||
}
|
}
|
||||||
} else if (this.player.hasInfiniteMaterials()) {
|
} else if (this.player.hasInfiniteMaterials()) {
|
||||||
- playerinventory.addAndPickItem(stack);
|
- playerinventory.addAndPickItem(stack);
|
||||||
+ playerinventory.addAndPickItem(stack, event.getTargetSlot()); // Paper - Add target slot
|
+ playerinventory.addAndPickItem(stack, event.getTargetSlot());
|
||||||
|
+ // Paper end - Add PlayerPickItemEvent
|
||||||
}
|
}
|
||||||
|
|
||||||
this.player.connection.send(new ClientboundSetHeldSlotPacket(playerinventory.selected));
|
this.player.connection.send(new ClientboundSetHeldSlotPacket(playerinventory.selected));
|
||||||
|
Loading…
Reference in New Issue
Block a user