mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-27 15:00:13 +01:00
Correct update cursor
Spigot uses a no longer valid ClientboundContainerSetSlotPacket with the slot -1, which would update the carried stack in versions <=1.21.1 but now leads to an IOOB. 1.21.2 instead introduced the ClientboundSetCursorItemPacket, which this patch uses instead.
This commit is contained in:
parent
b620df8e20
commit
66e1ce8504
1 changed files with 3 additions and 3 deletions
|
@ -2369,7 +2369,7 @@
|
|||
+ case PLACE_SOME:
|
||||
+ case PLACE_ONE:
|
||||
+ case SWAP_WITH_CURSOR:
|
||||
+ this.player.connection.send(new ClientboundContainerSetSlotPacket(-1, -1, this.player.inventoryMenu.incrementStateId(), this.player.containerMenu.getCarried()));
|
||||
+ this.player.connection.send(new net.minecraft.network.protocol.game.ClientboundSetCursorItemPacket(this.player.containerMenu.getCarried().copy())); // Paper - correctly set cursor
|
||||
+ this.player.connection.send(new ClientboundContainerSetSlotPacket(this.player.containerMenu.containerId, this.player.inventoryMenu.incrementStateId(), packet.getSlotNum(), this.player.containerMenu.getSlot(packet.getSlotNum()).getItem()));
|
||||
+ break;
|
||||
+ // Modified clicked only
|
||||
|
@ -2381,7 +2381,7 @@
|
|||
+ case DROP_ALL_CURSOR:
|
||||
+ case DROP_ONE_CURSOR:
|
||||
+ case CLONE_STACK:
|
||||
+ this.player.connection.send(new ClientboundContainerSetSlotPacket(-1, -1, this.player.inventoryMenu.incrementStateId(), this.player.containerMenu.getCarried()));
|
||||
+ this.player.connection.send(new net.minecraft.network.protocol.game.ClientboundSetCursorItemPacket(this.player.containerMenu.getCarried().copy())); // Paper - correctly set cursor
|
||||
+ break;
|
||||
+ // Nothing
|
||||
+ case NOTHING:
|
||||
|
@ -2502,7 +2502,7 @@
|
|||
+ // Reset the slot
|
||||
+ if (packet.slotNum() >= 0) {
|
||||
+ this.player.connection.send(new ClientboundContainerSetSlotPacket(this.player.inventoryMenu.containerId, this.player.inventoryMenu.incrementStateId(), packet.slotNum(), this.player.inventoryMenu.getSlot(packet.slotNum()).getItem()));
|
||||
+ this.player.connection.send(new ClientboundContainerSetSlotPacket(-1, this.player.inventoryMenu.incrementStateId(), -1, ItemStack.EMPTY));
|
||||
+ this.player.connection.send(new net.minecraft.network.protocol.game.ClientboundSetCursorItemPacket(ItemStack.EMPTY.copy())); // Paper - correctly set cursor
|
||||
+ }
|
||||
+ return;
|
||||
+ }
|
||||
|
|
Loading…
Reference in a new issue