mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-23 01:17:44 +01:00
2f782a6652
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes:17543ecf
SPIGOT-5035: Error Using Virtual Merchant GUI0fc6922b
SPIGOT-5028: Villager#setVillagerExperience() doesn't workbdbdbe44
SPIGOT-5024: Fox error - Unknown target reason
34 lines
1.8 KiB
Diff
34 lines
1.8 KiB
Diff
From 00c386d25dbdcb2bb94ab0116b1beaa2696708ab Mon Sep 17 00:00:00 2001
|
|
From: Michael Himing <mhiming@gmail.com>
|
|
Date: Sun, 16 Dec 2018 13:07:33 +1100
|
|
Subject: [PATCH] Fix PlayerEditBookEvent
|
|
|
|
- Updating book writing (not signing) mutated the original item, making
|
|
it impossible to properly cancel the event or modify the book meta
|
|
|
|
- When the event was cancelled, the client's book would keep the
|
|
cancelled writing
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
index 905db6448c..9b895269a5 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -862,9 +862,11 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
|
itemstack2.a("pages", (NBTBase) nbttaglist);
|
|
this.player.a(packetplayinbedit.d(), CraftEventFactory.handleEditBookEvent(player, enumitemslot, itemstack1, itemstack2)); // CraftBukkit
|
|
} else {
|
|
- ItemStack old = itemstack1.cloneItemStack(); // CraftBukkit
|
|
- itemstack1.a("pages", (NBTBase) itemstack.getTag().getList("pages", 8));
|
|
- CraftEventFactory.handleEditBookEvent(player, enumitemslot, old, itemstack1); // CraftBukkit
|
|
+ // Paper start - dont mutate players current item, set it from the event
|
|
+ ItemStack newBook = itemstack1.cloneItemStack();
|
|
+ newBook.getOrCreateTagAndSet("pages", (NBTBase)itemstack.getTag().getList("pages", 8));
|
|
+ this.player.setSlot(enumitemslot, CraftEventFactory.handleEditBookEvent(player, enumitemslot, itemstack1, newBook));
|
|
+ // Paper end
|
|
}
|
|
}
|
|
|
|
--
|
|
2.21.0
|
|
|