From e3f739bafd13dae63cc82bb667425ce3bcb1ca2e Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Tue, 2 Aug 2022 05:40:22 -0500 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@babffb5 Undeprecate and fix Boat#getBoatMaterial (#8217) PaperMC/Paper@d60497e Updated Upstream (Bukkit/CraftBukkit) PaperMC/Paper@dd3e4e7 Initial support for signed messages (#8198) PaperMC/Paper@ceef4b9 Don't call AsyncTabCompleteEvent from netty IO thread (#8218) PaperMC/Paper@e0486ae Fix suggest command message for brigadier syntax exceptions (#8221) --- gradle.properties | 2 +- patches/api/0001-Pufferfish-API-Changes.patch | 8 +- patches/api/0048-Chat-Preview-API.patch | 103 ------------------ ...imings.patch => 0048-Remove-Timings.patch} | 0 ...d-Bee-API.patch => 0049-Add-Bee-API.patch} | 0 ...-API.patch => 0050-Debug-Marker-API.patch} | 0 .../0001-Pufferfish-Server-Changes.patch | 8 +- .../server/0005-Purpur-client-support.patch | 8 +- patches/server/0008-Ridables.patch | 8 +- patches/server/0013-AFK-API.patch | 10 +- .../0020-Player-invulnerabilities.patch | 12 +- .../0023-Alternative-Keepalive-Handling.patch | 4 +- .../0078-Allow-color-codes-in-books.patch | 10 +- patches/server/0079-Entity-lifespan.patch | 4 +- ...leport-to-spawn-if-outside-world-bor.patch | 4 +- patches/server/0126-Implement-TPSBar.patch | 10 +- .../server/0128-PlayerBookTooLargeEvent.patch | 6 +- .../server/0141-Dont-run-with-scissors.patch | 6 +- patches/server/0211-Add-compass-command.patch | 6 +- ...t-right-click-to-use-exp-for-mending.patch | 4 +- .../server/0239-Signs-allow-color-codes.patch | 6 +- ...og-suppression-for-sent-expired-chat.patch | 4 +- ...o-disable-kick-for-out-of-order-chat.patch | 4 +- .../0287-Allow-custom-ChatDecorators.patch | 27 +++++ patches/server/0287-Chat-Preview-API.patch | 50 --------- patches/server/0289-Remove-Timings.patch | 16 +-- ...er-output-for-invalid-movement-kicks.patch | 4 +- 27 files changed, 99 insertions(+), 225 deletions(-) delete mode 100644 patches/api/0048-Chat-Preview-API.patch rename patches/api/{0049-Remove-Timings.patch => 0048-Remove-Timings.patch} (100%) rename patches/api/{0050-Add-Bee-API.patch => 0049-Add-Bee-API.patch} (100%) rename patches/api/{0051-Debug-Marker-API.patch => 0050-Debug-Marker-API.patch} (100%) create mode 100644 patches/server/0287-Allow-custom-ChatDecorators.patch delete mode 100644 patches/server/0287-Chat-Preview-API.patch diff --git a/gradle.properties b/gradle.properties index fbc61c693..1ca6a9ff6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.purpurmc.purpur version = 1.19.1-R0.1-SNAPSHOT -paperCommit = fd557b7d51bba4d5e830d6047005f7e4335f5ada +paperCommit = e0486ae2cde50eaa51de09c81c367f85d46f990e org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch index 35885af47..ad3571b06 100644 --- a/patches/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-Changes.patch @@ -389,7 +389,7 @@ index 0000000000000000000000000000000000000000..ae2464920c9412ac90b819a540ee58be + +} diff --git a/src/main/java/org/bukkit/map/MapPalette.java b/src/main/java/org/bukkit/map/MapPalette.java -index 8e6ad6ffb6918742d47b58d6cb1ad646d5e3df5f..331adbaf782c00d801a36c0c9551451a817daf6d 100644 +index 3a9aaca2e76411a9c27f9f5e0f22d060d5a66d06..9584e245144b561b4f6745b2f26a4f69a6f92891 100644 --- a/src/main/java/org/bukkit/map/MapPalette.java +++ b/src/main/java/org/bukkit/map/MapPalette.java @@ -1,6 +1,7 @@ @@ -400,16 +400,16 @@ index 8e6ad6ffb6918742d47b58d6cb1ad646d5e3df5f..331adbaf782c00d801a36c0c9551451a import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; -@@ -35,7 +36,7 @@ public final class MapPalette { +@@ -40,7 +41,7 @@ public final class MapPalette { } @NotNull - static final Color[] colors = { + public static final Color[] colors = { // Pufferfish - public access - c(0, 0, 0), c(0, 0, 0), c(0, 0, 0), c(0, 0, 0), + c(0, 0, 0, 0), c(0, 0, 0, 0), c(0, 0, 0, 0), c(0, 0, 0, 0), c(89, 125, 39), c(109, 153, 48), c(127, 178, 56), c(67, 94, 29), c(174, 164, 115), c(213, 201, 140), c(247, 233, 163), c(130, 123, 86), -@@ -206,9 +207,15 @@ public final class MapPalette { +@@ -211,9 +212,15 @@ public final class MapPalette { temp.getRGB(0, 0, temp.getWidth(), temp.getHeight(), pixels, 0, temp.getWidth()); byte[] result = new byte[temp.getWidth() * temp.getHeight()]; diff --git a/patches/api/0048-Chat-Preview-API.patch b/patches/api/0048-Chat-Preview-API.patch deleted file mode 100644 index 41e0877b6..000000000 --- a/patches/api/0048-Chat-Preview-API.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Mon, 11 Jul 2022 21:09:14 -0500 -Subject: [PATCH] Chat Preview API - - -diff --git a/src/main/java/org/purpurmc/purpur/event/player/PlayerPreviewChatEvent.java b/src/main/java/org/purpurmc/purpur/event/player/PlayerPreviewChatEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..94ccdf11201774f9bea3ba56c4dde148ff5199f8 ---- /dev/null -+++ b/src/main/java/org/purpurmc/purpur/event/player/PlayerPreviewChatEvent.java -@@ -0,0 +1,91 @@ -+package org.purpurmc.purpur.event.player; -+ -+import net.kyori.adventure.text.Component; -+import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; -+import org.bukkit.Bukkit; -+import org.bukkit.entity.Player; -+import org.bukkit.event.Cancellable; -+import org.bukkit.event.HandlerList; -+import org.bukkit.event.player.PlayerEvent; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ -+public class PlayerPreviewChatEvent extends PlayerEvent implements Cancellable { -+ private static final HandlerList handlers = new HandlerList(); -+ private final String originalQuery; -+ private Component query; -+ -+ public PlayerPreviewChatEvent(@NotNull Player who, @Nullable Component query) { -+ super(who, !Bukkit.isPrimaryThread()); -+ this.originalQuery = query == null ? "" : LegacyComponentSerializer.legacySection().serialize(query); -+ this.query = query; -+ } -+ -+ /** -+ * The original query string as sent from the client -+ * -+ * @return The original query string -+ */ -+ @NotNull -+ public String getOriginalQuery() { -+ return originalQuery; -+ } -+ -+ /** -+ * Get the current query. -+ *

-+ * Null queries represent "no changes". -+ * -+ * @return Current query -+ */ -+ @Nullable -+ public Component getQuery() { -+ return this.query; -+ } -+ -+ /** -+ * Get the current query. -+ *

-+ * Null queries represent "no changes". -+ * -+ * @param query The current query -+ */ -+ public void setQuery(@Nullable Component query) { -+ this.query = query; -+ } -+ -+ /** -+ * Gets the cancellation state of this event. -+ *

-+ * A cancelled event tells the client there are "no changes" -+ * to the chat, the same as setting the query to null. -+ * -+ * @return true if this event is cancelled -+ */ -+ @Override -+ public boolean isCancelled() { -+ return this.query == null; -+ } -+ -+ /** -+ * Sets the cancellation state of this event. -+ *

-+ * A cancelled event tells the client there are "no changes" -+ * to the chat, the same as setting the query to null. -+ */ -+ @Override -+ public void setCancelled(boolean cancel) { -+ this.query = null; -+ } -+ -+ @Override -+ @NotNull -+ public HandlerList getHandlers() { -+ return handlers; -+ } -+ -+ @NotNull -+ public static HandlerList getHandlerList() { -+ return handlers; -+ } -+} diff --git a/patches/api/0049-Remove-Timings.patch b/patches/api/0048-Remove-Timings.patch similarity index 100% rename from patches/api/0049-Remove-Timings.patch rename to patches/api/0048-Remove-Timings.patch diff --git a/patches/api/0050-Add-Bee-API.patch b/patches/api/0049-Add-Bee-API.patch similarity index 100% rename from patches/api/0050-Add-Bee-API.patch rename to patches/api/0049-Add-Bee-API.patch diff --git a/patches/api/0051-Debug-Marker-API.patch b/patches/api/0050-Debug-Marker-API.patch similarity index 100% rename from patches/api/0051-Debug-Marker-API.patch rename to patches/api/0050-Debug-Marker-API.patch diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 9b8e7caa3..180815024 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -2783,7 +2783,7 @@ index 7034af8ad42940c5af6b9032b9873ce36c55a2a7..c0fdc5a79107f8694a514a12d5526bd4 public static long getCoordinateKey(final ChunkPos pair) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 46fcecbfb3f866ba89036a11113c8ad0989b04bc..d66c60918313b0ede41ed96aa82e11fb2230f95b 100644 +index f23be38ef96a81ce3867a3b6fdccf632fe285f31..96ce3c0f5f17bb5c3b8be5dc137de3d457304a78 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -298,6 +298,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pageList = packet.getPages(); -@@ -2349,6 +2350,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2353,6 +2354,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } private boolean updateChatOrder(Instant timestamp) { diff --git a/patches/server/0005-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch index 0577e7a7e..42ef99ec5 100644 --- a/patches/server/0005-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 94944ba458178f9e5b772224da329bb5d85f4394..94d87f6bd2c27b0d6cc4547e8bc6e87b95f1ad32 100644 +index 6cbd839cc7529eb0095485c4ef4a0d81a3cd9b19..3f38159b6a6564ec6b7e01efbdc38d324afa3ba8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -262,6 +262,7 @@ public class ServerPlayer extends Player { @@ -17,10 +17,10 @@ index 94944ba458178f9e5b772224da329bb5d85f4394..94d87f6bd2c27b0d6cc4547e8bc6e87b public double lastEntitySpawnRadiusSquared; // Paper - optimise isOutsideRange, this field is in blocks public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8da76daecef969f452960df5577c7bc408ac7acb..116389472b3b25aaa5657c7dcbbc59bf8324b25e 100644 +index a526b7a8789693c5c24fcf1233183ea317a938d8..904ad8ae42dac7077d5648dac317424742c63652 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3615,6 +3615,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3625,6 +3625,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic private static final ResourceLocation CUSTOM_UNREGISTER = new ResourceLocation("unregister"); private static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support @@ -28,7 +28,7 @@ index 8da76daecef969f452960df5577c7bc408ac7acb..116389472b3b25aaa5657c7dcbbc59bf @Override public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { -@@ -3639,6 +3640,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3649,6 +3650,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t unregister custom payload", ex); this.disconnect("Invalid payload UNREGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 5e168b5c2..ac64798b9 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-Ridables.patch @@ -22,7 +22,7 @@ index 153451ecd5b3c8e8ecb2d5ec91ccd582d4300899..56536c39bccfe097f8227c74a0d16799 super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9f551e09f6aea3df16af577f7754ff774731377f..44c478beb3234a35588af21ee43f3be199992e40 100644 +index 575772f78764f5bcee35fcedfac9b265e5b998c5..3b24edf04cb2f2ebd9adb16839bd92be4d444390 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1534,6 +1534,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.gameMode.isCreative() && this.player.gameMode.getGameModeForPlayer() != GameType.SPECTATOR) { // Spigot flag2 = true; // Paper - diff on change, this should be moved wrongly @@ -123,7 +123,7 @@ index cd723d7e216ff6de0daee9d21309006b9874f321..739fdb3218fd02e5b81bbff28906824e } this.player.absMoveTo(d0, d1, d2, f, f1); -@@ -1597,6 +1619,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1601,6 +1623,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); diff --git a/patches/server/0020-Player-invulnerabilities.patch b/patches/server/0020-Player-invulnerabilities.patch index 5f9d8ceea..303d4f77a 100644 --- a/patches/server/0020-Player-invulnerabilities.patch +++ b/patches/server/0020-Player-invulnerabilities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player invulnerabilities diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f2e84f02ee8c9c4e4cb2fa5ca27c2df5bf4fcfdb..e7399e71db7ca5671a4570f4e605497b2b2fa0cb 100644 +index c72b20e3e7eda999c6da07e7e6fb46826c4369a9..481e474f48d9409f4d8a337b334a17627c9b8ccb 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -263,6 +263,7 @@ public class ServerPlayer extends Player { @@ -54,7 +54,7 @@ index f2e84f02ee8c9c4e4cb2fa5ca27c2df5bf4fcfdb..e7399e71db7ca5671a4570f4e605497b return this; } } -@@ -1982,6 +1991,7 @@ public class ServerPlayer extends Player { +@@ -1987,6 +1996,7 @@ public class ServerPlayer extends Player { } public void sendTexturePack(String url, String hash, boolean required, @Nullable Component resourcePackPrompt) { @@ -62,7 +62,7 @@ index f2e84f02ee8c9c4e4cb2fa5ca27c2df5bf4fcfdb..e7399e71db7ca5671a4570f4e605497b this.connection.send(new ClientboundResourcePackPacket(url, hash, required, resourcePackPrompt)); } -@@ -2507,9 +2517,17 @@ public class ServerPlayer extends Player { +@@ -2512,9 +2522,17 @@ public class ServerPlayer extends Player { @Override public boolean isImmobile() { @@ -82,10 +82,10 @@ index f2e84f02ee8c9c4e4cb2fa5ca27c2df5bf4fcfdb..e7399e71db7ca5671a4570f4e605497b public Scoreboard getScoreboard() { return this.getBukkitEntity().getScoreboard().getHandle(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 739fdb3218fd02e5b81bbff28906824e06933c17..a67301f606e7f2b05559aed2ac88288dd40dd539 100644 +index 8b2c0e87a8bc51fe5c8d2494330766ea478145bf..63b7130f287774696bb6d7849f4792772329c65a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2097,12 +2097,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2101,12 +2101,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @Override public void handleResourcePackResponse(ServerboundResourcePackPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); @@ -108,7 +108,7 @@ index 739fdb3218fd02e5b81bbff28906824e06933c17..a67301f606e7f2b05559aed2ac88288d this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packStatus)); // CraftBukkit // Paper end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 3c9d72dd1a1bade79e4c8b5e6c7b136f906ba77d..02707189e0cafcb8db31413566f2078495866434 100644 +index 989562f870c359cf4655af2b2013b2b1b5f1f229..fc27bdf91b946ac4c2a6e4adec3693fd0ea5324a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1008,6 +1008,8 @@ public abstract class PlayerList { diff --git a/patches/server/0023-Alternative-Keepalive-Handling.patch b/patches/server/0023-Alternative-Keepalive-Handling.patch index 791a297b7..a59d0c668 100644 --- a/patches/server/0023-Alternative-Keepalive-Handling.patch +++ b/patches/server/0023-Alternative-Keepalive-Handling.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7da5e02745decd39c9ef220b84eb2f633cf44494..fe3a1669bb224bea7559adbf453e744962dfd1d3 100644 +index 63b7130f287774696bb6d7849f4792772329c65a..34e07a31d70854b8ed8a955f296b9e4e5da6cedc 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -258,6 +258,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -38,7 +38,7 @@ index 7da5e02745decd39c9ef220b84eb2f633cf44494..fe3a1669bb224bea7559adbf453e7449 if (this.keepAlivePending) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info -@@ -3600,6 +3616,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3610,6 +3626,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { diff --git a/patches/server/0078-Allow-color-codes-in-books.patch b/patches/server/0078-Allow-color-codes-in-books.patch index e46300c36..1c7eafbed 100644 --- a/patches/server/0078-Allow-color-codes-in-books.patch +++ b/patches/server/0078-Allow-color-codes-in-books.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ae418d6e8c3591482469d03a0b3defed424bdad7..ba1bd35e18d44426efe2b94aefcc16111675ffa1 100644 +index 34e07a31d70854b8ed8a955f296b9e4e5da6cedc..28146fe7c892c42dd187fc6163eed4ae5ff204ec 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1341,13 +1341,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1345,13 +1345,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic itemstack1.setTag(nbttagcompound.copy()); } @@ -28,7 +28,7 @@ index ae418d6e8c3591482469d03a0b3defed424bdad7..ba1bd35e18d44426efe2b94aefcc1611 this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(Component.literal(s)); -@@ -1359,10 +1362,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1363,10 +1366,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic public void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index ae418d6e8c3591482469d03a0b3defed424bdad7..ba1bd35e18d44426efe2b94aefcc1611 Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1372,11 +1378,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1376,11 +1382,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic for (int j = list.size(); i < j; ++i) { FilteredText filteredtext = (FilteredText) list.get(i); @@ -58,7 +58,7 @@ index ae418d6e8c3591482469d03a0b3defed424bdad7..ba1bd35e18d44426efe2b94aefcc1611 } } -@@ -1389,6 +1395,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1393,6 +1399,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0079-Entity-lifespan.patch b/patches/server/0079-Entity-lifespan.patch index c5762c299..7fc5dea71 100644 --- a/patches/server/0079-Entity-lifespan.patch +++ b/patches/server/0079-Entity-lifespan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 6995bdfea267d64286b8549521df2e3ef8e8c562..999a6c65f9693d03ab7010f55e0b9eb42dd25206 100644 +index 28146fe7c892c42dd187fc6163eed4ae5ff204ec..0d110bed21eda6f8c28a495aa7b88fac786f47d8 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2943,6 +2943,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2953,6 +2953,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } if (entity.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.MAX_INTERACTION_DISTANCE) { diff --git a/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index d9ac416b1..def278d64 100644 --- a/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c8e81949a0f00e7feb0bd99bca5a0073b5f4add8..2f9a02d0eecd09a15bb71ed85de28ef2cd36127d 100644 +index de96a37827fd31f3189e18298e2f9e1370761a30..0d30b21ec070980b290f23d5becfc61183214146 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2578,4 +2578,26 @@ public class ServerPlayer extends Player { +@@ -2583,4 +2583,26 @@ public class ServerPlayer extends Player { // CraftBukkit end public final int getViewDistance() { throw new UnsupportedOperationException("Use PlayerChunkLoader"); } // Paper - placeholder diff --git a/patches/server/0126-Implement-TPSBar.patch b/patches/server/0126-Implement-TPSBar.patch index ef8d355f1..d409c34e8 100644 --- a/patches/server/0126-Implement-TPSBar.patch +++ b/patches/server/0126-Implement-TPSBar.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 2fa8babafb53cb33272c25f5e0dc31ff2f954c42..2b3c7f0bf0841a52a540f042156f55e978364d24 100644 +index 55b1ebd17af11ac29fb6b1d4572fb1fc260c16ac..e970c11307cd69685878902234271195752f9f51 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -211,6 +211,7 @@ public class Commands { @@ -17,7 +17,7 @@ index 2fa8babafb53cb33272c25f5e0dc31ff2f954c42..2b3c7f0bf0841a52a540f042156f55e9 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index cde48cbdce50e38e07eaaf81cc922bf39e1fa87f..9cfeb50509aac1a509b1d26c3a71ebfa5aa7ca01 100644 +index 2ee6df3e1a79047de97f4776c6f7e2e549d78c68..91495867871320d3a52d2de3ef1d91d57e369b16 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1048,6 +1048,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1288,6 +1290,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1292,6 +1294,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0141-Dont-run-with-scissors.patch b/patches/server/0141-Dont-run-with-scissors.patch index 17da410f5..f47c7c52a 100644 --- a/patches/server/0141-Dont-run-with-scissors.patch +++ b/patches/server/0141-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1fa67acb18ccbb16569e864c63bbcf877358e6bd..9958528403422eb9f2cb8ba030214f2f1cf3188e 100644 +index e47532b91f012562754a42de6b26cca54cbea374..ead6b7246b142304dc52cdd3157a0b113645c641 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1695,6 +1695,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1699,6 +1699,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index 1fa67acb18ccbb16569e864c63bbcf877358e6bd..9958528403422eb9f2cb8ba030214f2f this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1728,6 +1735,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1732,6 +1739,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } // Paper end - optimise out extra getCubes diff --git a/patches/server/0211-Add-compass-command.patch b/patches/server/0211-Add-compass-command.patch index ab1e781a4..553ac10e5 100644 --- a/patches/server/0211-Add-compass-command.patch +++ b/patches/server/0211-Add-compass-command.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add compass command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 076008b0109669671546e1e476b5c812628d81bd..a1b80de62f07e0b476775289ec46e3f685b41d7f 100644 +index ca7aa579f6a6c72dfaed04fde84f4dbcc9ca4f34..5b4a89c696f6457bef24bb8792303dfde7ae510c 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -213,6 +213,7 @@ public class Commands { @@ -17,7 +17,7 @@ index 076008b0109669671546e1e476b5c812628d81bd..a1b80de62f07e0b476775289ec46e3f6 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d7ea9e8053b96c32ca94f82a89f58223f9983ff1..d042f2866a513263cc1b82df1cabe7fee81a1603 100644 +index 9eb1c15d831cd5ccdbd1e28bbf2d994bfae4f039..3133b14e2fcef91cf3a72b5f65102aef43b92459 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -265,6 +265,7 @@ public class ServerPlayer extends Player { @@ -44,7 +44,7 @@ index d7ea9e8053b96c32ca94f82a89f58223f9983ff1..d042f2866a513263cc1b82df1cabe7fe } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2621,5 +2624,13 @@ public class ServerPlayer extends Player { +@@ -2626,5 +2629,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } diff --git a/patches/server/0228-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0228-Shift-right-click-to-use-exp-for-mending.patch index c19db706f..7eeeb91a3 100644 --- a/patches/server/0228-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0228-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index 28463bca77d62ad9175a55cffc92110ffa16fadc..bd77301ef6cde21e1ee1966d2ffa4186 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index dfe8747f5e06639faa9978b0b409560eed011047..2505557a4e0db77dd1d18bc78ecada154d59da0f 100644 +index ead6b7246b142304dc52cdd3157a0b113645c641..08531e031ecad8d38cff2701fd31e70b47ed3357 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2093,6 +2093,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2097,6 +2097,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0239-Signs-allow-color-codes.patch b/patches/server/0239-Signs-allow-color-codes.patch index dcf01355e..98498d4ca 100644 --- a/patches/server/0239-Signs-allow-color-codes.patch +++ b/patches/server/0239-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d042f2866a513263cc1b82df1cabe7fee81a1603..ab3744184ed4e761e58ea93099a3d6e9ca68bdde 100644 +index 3133b14e2fcef91cf3a72b5f65102aef43b92459..dd4c1c3cd907b943ab1740d0c9de8652807b27b7 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1515,6 +1515,7 @@ public class ServerPlayer extends Player { @@ -17,10 +17,10 @@ index d042f2866a513263cc1b82df1cabe7fee81a1603..ab3744184ed4e761e58ea93099a3d6e9 this.connection.send(new ClientboundBlockUpdatePacket(this.level, sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos())); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a727e98b5b5575e895579cb02b5e6c719ad24445..36e9129d4a63201e8dca9e94c9aaa09679144500 100644 +index 08531e031ecad8d38cff2701fd31e70b47ed3357..ac5be834a5b772bd82823a54b49fcb54af848806 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3624,11 +3624,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3634,11 +3634,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic for (int i = 0; i < signText.size(); ++i) { FilteredText filteredtext = (FilteredText) signText.get(i); diff --git a/patches/server/0276-Add-log-suppression-for-sent-expired-chat.patch b/patches/server/0276-Add-log-suppression-for-sent-expired-chat.patch index 4f2f18080..e2deb6eae 100644 --- a/patches/server/0276-Add-log-suppression-for-sent-expired-chat.patch +++ b/patches/server/0276-Add-log-suppression-for-sent-expired-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for sent expired chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 36e9129d4a63201e8dca9e94c9aaa09679144500..433c8c86202619a0af8b03bfd6182f6a57b7a8ed 100644 +index ac5be834a5b772bd82823a54b49fcb54af848806..e3b48fea4a8b03f2b74b910289640542bce2cb94 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2661,7 +2661,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2668,7 +2668,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.disconnect(Component.translatable("multiplayer.disconnect.unsigned_chat"), org.bukkit.event.player.PlayerKickEvent.Cause.UNSIGNED_CHAT); // Paper - kick event cause return false; } else { diff --git a/patches/server/0280-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0280-Option-to-disable-kick-for-out-of-order-chat.patch index 0d67ca786..0dc9a2113 100644 --- a/patches/server/0280-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0280-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 433c8c86202619a0af8b03bfd6182f6a57b7a8ed..fcc032154baba11894ab381943f496f225bed464 100644 +index e3b48fea4a8b03f2b74b910289640542bce2cb94..9fa0dab0bb255d5ccb5b810449ee6f67f7774b8e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2438,7 +2438,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2442,7 +2442,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic do { instant1 = (Instant) this.lastChatTimeStamp.get(); if (timestamp.isBefore(instant1)) { diff --git a/patches/server/0287-Allow-custom-ChatDecorators.patch b/patches/server/0287-Allow-custom-ChatDecorators.patch new file mode 100644 index 000000000..77328f3b7 --- /dev/null +++ b/patches/server/0287-Allow-custom-ChatDecorators.patch @@ -0,0 +1,27 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Mon, 11 Jul 2022 20:44:19 -0500 +Subject: [PATCH] Allow custom ChatDecorators + +Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. + +diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java +index 78b72d9f33bccac7b5c61ab2d417b142fc27bde8..06a17bcd8ecfba67866548a71b46e7cf66b29527 100644 +--- a/src/main/java/net/minecraft/server/MinecraftServer.java ++++ b/src/main/java/net/minecraft/server/MinecraftServer.java +@@ -2628,6 +2628,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { + final io.papermc.paper.adventure.ChatDecorationProcessor processor = new io.papermc.paper.adventure.ChatDecorationProcessor(this, sender, commandSourceStack, message, isPreview); diff --git a/patches/server/0287-Chat-Preview-API.patch b/patches/server/0287-Chat-Preview-API.patch deleted file mode 100644 index 608d60363..000000000 --- a/patches/server/0287-Chat-Preview-API.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Mon, 11 Jul 2022 20:44:19 -0500 -Subject: [PATCH] Chat Preview API - - -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a5b09ab0171dd100f9bcf81869346b1d11814092..bea0eca314eef1adc3c9625b596f29f8b6f9856f 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2628,12 +2628,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { -+ // Purpur start -+ return this.chatDecorator; -+ } -+ public void setChatDecorator(ChatDecorator chatDecorator) { -+ this.chatDecorator = chatDecorator; -+ } -+ private ChatDecorator chatDecorator = (entityplayer, ichatbasecomponent) -> { -+ // Purpur end - // Paper start - fix non-player sender - if (entityplayer == null) { - return CompletableFuture.completedFuture(ichatbasecomponent); - } - // Paper end -+ // Purpur start -+ net.kyori.adventure.text.Component adventureComponent = io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatbasecomponent); -+ org.purpurmc.purpur.event.player.PlayerPreviewChatEvent purpurPreviewEvent = new org.purpurmc.purpur.event.player.PlayerPreviewChatEvent(entityplayer.getBukkitEntity(), adventureComponent); -+ if (!purpurPreviewEvent.callEvent()) { -+ return CompletableFuture.completedFuture(null); -+ } -+ if (!adventureComponent.equals(purpurPreviewEvent.getQuery())) { -+ return CompletableFuture.completedFuture(io.papermc.paper.adventure.PaperAdventure.asVanilla(purpurPreviewEvent.getQuery())); -+ } -+ // Purpur end - return CompletableFuture.supplyAsync(() -> { - AsyncPlayerChatPreviewEvent event = new AsyncPlayerChatPreviewEvent(true, entityplayer.getBukkitEntity(), CraftChatMessage.fromComponent(ichatbasecomponent), new LazyPlayerSet(this)); - String originalFormat = event.getFormat(), originalMessage = event.getMessage(); -@@ -2647,7 +2664,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop