mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-08 03:22:19 +01:00
7a5a4fd400
This makes it easier for downstream projects (forks) to replace the version fetching system with their own. It is as simple as implementing an interface and overriding the default implementation of org.bukkit.UnsafeValues#getVersionFetcher() It also makes it easier for us to organize things like the version history feature. Lastly I have updated the paper implementation to check against the site API rather than against jenkins.
31 lines
No EOL
1.8 KiB
Diff
31 lines
No EOL
1.8 KiB
Diff
From 0000000000000000000000000000000000000000 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 baab1a88a..f007290ff 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -0,0 +0,0 @@ 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
|
|
}
|
|
}
|
|
|
|
--
|