13
0
geforkt von Mirrors/Paper

SPIGOT-6524: Inventory desync when InventoryClickEvent is cancelled

By: md_5 <git@md-5.net>
Dieser Commit ist enthalten in:
CraftBukkit/Spigot 2021-06-12 19:44:31 +10:00
Ursprung cd03a7966c
Commit d57a6b8cc2

Datei anzeigen

@ -1235,7 +1235,7 @@
} else {
PlayerConnection.this.disconnect(new ChatMessage("multiplayer.disconnect.invalid_entity_attacked"));
PlayerConnection.LOGGER.warn("Player {} tried to attack an invalid entity", PlayerConnection.this.player.getDisplayName().getString());
@@ -1409,19 +2147,303 @@
@@ -1409,19 +2147,302 @@
@Override
public void a(PacketPlayInCloseWindow packetplayinclosewindow) {
PlayerConnectionUtils.ensureMainThread(packetplayinclosewindow, this, this.player.getWorldServer());
@ -1529,7 +1529,6 @@
+ case NOTHING:
+ break;
+ }
+ return;
+ }
+
+ if (event instanceof CraftItemEvent || event instanceof SmithItemEvent) {
@ -1542,7 +1541,7 @@
ObjectIterator objectiterator = Int2ObjectMaps.fastIterable(packetplayinwindowclick.f()).iterator();
while (objectiterator.hasNext()) {
@@ -1452,6 +2474,7 @@
@@ -1452,6 +2473,7 @@
@Override
public void a(PacketPlayInEnchantItem packetplayinenchantitem) {
PlayerConnectionUtils.ensureMainThread(packetplayinenchantitem, this, this.player.getWorldServer());
@ -1550,7 +1549,7 @@
this.player.resetIdleTimer();
if (this.player.containerMenu.containerId == packetplayinenchantitem.b() && !this.player.isSpectator()) {
this.player.containerMenu.a((EntityHuman) this.player, packetplayinenchantitem.c());
@@ -1484,6 +2507,43 @@
@@ -1484,6 +2506,43 @@
boolean flag1 = packetplayinsetcreativeslot.b() >= 1 && packetplayinsetcreativeslot.b() <= 45;
boolean flag2 = itemstack.isEmpty() || itemstack.getDamage() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty();
@ -1594,7 +1593,7 @@
if (flag1 && flag2) {
if (itemstack.isEmpty()) {
@@ -1511,6 +2571,7 @@
@@ -1511,6 +2570,7 @@
}
private void a(PacketPlayInUpdateSign packetplayinupdatesign, List<ITextFilter.a> list) {
@ -1602,7 +1601,7 @@
this.player.resetIdleTimer();
WorldServer worldserver = this.player.getWorldServer();
BlockPosition blockposition = packetplayinupdatesign.b();
@@ -1527,18 +2588,37 @@
@@ -1527,18 +2587,37 @@
if (!tileentitysign.d() || !this.player.getUniqueID().equals(tileentitysign.f())) {
PlayerConnection.LOGGER.warn("Player {} just tried to change non-editable sign", this.player.getDisplayName().getString());
@ -1642,7 +1641,7 @@
tileentitysign.update();
worldserver.notify(blockposition, iblockdata, iblockdata, 3);
@@ -1548,6 +2628,7 @@
@@ -1548,6 +2627,7 @@
@Override
public void a(PacketPlayInKeepAlive packetplayinkeepalive) {
@ -1650,7 +1649,7 @@
if (this.keepAlivePending && packetplayinkeepalive.b() == this.keepAliveChallenge) {
int i = (int) (SystemUtils.getMonotonicMillis() - this.keepAliveTime);
@@ -1562,7 +2643,17 @@
@@ -1562,7 +2642,17 @@
@Override
public void a(PacketPlayInAbilities packetplayinabilities) {
PlayerConnectionUtils.ensureMainThread(packetplayinabilities, this, this.player.getWorldServer());
@ -1669,7 +1668,7 @@
}
@Override
@@ -1571,8 +2662,50 @@
@@ -1571,8 +2661,50 @@
this.player.a(packetplayinsettings);
}