aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--patches/api/0495-DataComponent-API.patch41
-rw-r--r--patches/server/0734-Fix-a-bunch-of-vanilla-bugs.patch4
-rw-r--r--patches/server/0768-Improve-logging-and-errors.patch2
-rw-r--r--patches/server/0771-Add-missing-SpigotConfig-logCommands-check.patch2
-rw-r--r--patches/server/0776-Use-single-player-info-update-packet-on-join.patch2
-rw-r--r--patches/server/0793-Treat-sequence-violations-like-they-should-be.patch2
-rw-r--r--patches/server/0794-Prevent-causing-expired-keys-from-impacting-new-join.patch2
-rw-r--r--patches/server/0829-Implement-PlayerFailMoveEvent.patch2
-rw-r--r--patches/server/0845-Don-t-tab-complete-namespaced-commands-if-send-names.patch2
-rw-r--r--patches/server/0855-Add-PlayerPickItemEvent.patch2
-rw-r--r--patches/server/0860-Fix-slot-desync.patch2
-rw-r--r--patches/server/0865-Add-slot-sanity-checks-in-container-clicks.patch2
-rw-r--r--patches/server/0922-Add-CartographyItemEvent.patch2
-rw-r--r--patches/server/0932-Improve-tag-parser-handling.patch2
-rw-r--r--patches/server/0951-Brigadier-based-command-API.patch2
-rw-r--r--patches/server/0955-Prevent-sending-oversized-item-data-in-equipment-and.patch2
-rw-r--r--patches/server/0959-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch2
-rw-r--r--patches/server/0987-Properly-resend-entities.patch2
-rw-r--r--patches/server/0993-optimize-dirt-and-snow-spreading.patch5
-rw-r--r--patches/server/0999-Make-interaction-leniency-distance-configurable.patch2
-rw-r--r--patches/server/1007-Fix-CraftBukkit-drag-system.patch (renamed from patches/unapplied/server/1009-Fix-CraftBukkit-drag-system.patch)4
-rw-r--r--patches/server/1008-Fix-SculkBloomEvent-firing-for-block-entity-loading.patch (renamed from patches/unapplied/server/1010-Fix-SculkBloomEvent-firing-for-block-entity-loading.patch)0
-rw-r--r--patches/server/1009-Remove-set-damage-lootable-item-function-from-compas.patch (renamed from patches/unapplied/server/1011-Remove-set-damage-lootable-item-function-from-compas.patch)2
-rw-r--r--patches/server/1010-Add-enchantment-seed-update-API.patch (renamed from patches/unapplied/server/1012-Add-enchantment-seed-update-API.patch)4
-rw-r--r--patches/server/1011-Fix-synchronise-sending-chat-to-client-with-updating.patch (renamed from patches/unapplied/server/1013-Fix-synchronise-sending-chat-to-client-with-updating.patch)4
-rw-r--r--patches/server/1012-Fix-InventoryOpenEvent-cancellation.patch (renamed from patches/unapplied/server/1014-Fix-InventoryOpenEvent-cancellation.patch)38
-rw-r--r--patches/server/1013-Fire-BlockExpEvent-on-grindstone-use.patch (renamed from patches/unapplied/server/1015-Fire-BlockExpEvent-on-grindstone-use.patch)0
-rw-r--r--patches/server/1014-Check-dead-flag-in-isAlive.patch (renamed from patches/unapplied/server/1016-Check-dead-flag-in-isAlive.patch)6
-rw-r--r--patches/server/1015-Add-FeatureFlag-API.patch (renamed from patches/unapplied/server/1017-Add-FeatureFlag-API.patch)4
-rw-r--r--patches/server/1016-Tag-Lifecycle-Events.patch (renamed from patches/unapplied/server/1018-Tag-Lifecycle-Events.patch)14
-rw-r--r--patches/server/1017-Item-serialization-as-json.patch (renamed from patches/unapplied/server/1019-Item-serialization-as-json.patch)8
-rw-r--r--patches/server/1018-Validate-slot-in-PlayerInventory-setSlot.patch (renamed from patches/unapplied/server/1020-Validate-slot-in-PlayerInventory-setSlot.patch)0
-rw-r--r--patches/server/1019-Remove-wall-time-unused-skip-tick-protection.patch (renamed from patches/unapplied/server/1021-Remove-wall-time-unused-skip-tick-protection.patch)0
-rw-r--r--patches/server/1020-Disable-pretty-printing-for-advancement-saving.patch (renamed from patches/unapplied/server/1022-Disable-pretty-printing-for-advancement-saving.patch)0
-rw-r--r--patches/server/1021-Fix-PlayerCommandPreprocessEvent-on-signed-commands.patch (renamed from patches/unapplied/server/1023-Fix-PlayerCommandPreprocessEvent-on-signed-commands.patch)4
-rw-r--r--patches/server/1022-Add-enchantWithLevels-with-enchantment-registry-set.patch (renamed from patches/unapplied/server/1024-Add-enchantWithLevels-with-enchantment-registry-set.patch)4
-rw-r--r--patches/server/1023-Improve-entity-effect-API.patch (renamed from patches/unapplied/server/1025-Improve-entity-effect-API.patch)4
-rw-r--r--patches/server/1024-Add-recipeBrewTime.patch (renamed from patches/unapplied/server/1026-Add-recipeBrewTime.patch)6
-rw-r--r--patches/server/1025-Call-bucket-events-for-cauldrons.patch (renamed from patches/unapplied/server/1027-Call-bucket-events-for-cauldrons.patch)0
-rw-r--r--patches/server/1026-Add-PlayerInsertLecternBookEvent.patch (renamed from patches/unapplied/server/1028-Add-PlayerInsertLecternBookEvent.patch)4
-rw-r--r--patches/server/1027-Void-damage-configuration-API.patch (renamed from patches/unapplied/server/1029-Void-damage-configuration-API.patch)10
-rw-r--r--patches/server/1028-Add-Offline-PDC-API.patch (renamed from patches/unapplied/server/1030-Add-Offline-PDC-API.patch)0
-rw-r--r--patches/server/1029-Add-AnvilView-bypassEnchantmentLevelRestriction.patch (renamed from patches/unapplied/server/1031-Add-AnvilView-bypassEnchantmentLevelRestriction.patch)0
-rw-r--r--patches/server/1030-Add-proper-async-player-disconnections.patch (renamed from patches/unapplied/server/1032-Add-proper-async-player-disconnections.patch)22
-rw-r--r--patches/server/1031-DataComponent-API.patch (renamed from patches/unapplied/server/1033-DataComponent-API.patch)24
45 files changed, 143 insertions, 103 deletions
diff --git a/patches/api/0495-DataComponent-API.patch b/patches/api/0495-DataComponent-API.patch
index 188e6f30ae..daf693effa 100644
--- a/patches/api/0495-DataComponent-API.patch
+++ b/patches/api/0495-DataComponent-API.patch
@@ -853,18 +853,20 @@ index 0000000000000000000000000000000000000000..8c88bbbeef179e6c6666d07c8b28157e
+}
diff --git a/src/main/java/io/papermc/paper/datacomponent/item/CustomModelData.java b/src/main/java/io/papermc/paper/datacomponent/item/CustomModelData.java
new file mode 100644
-index 0000000000000000000000000000000000000000..d416c9d25b3ab88bf1e208c6faf92a8e2378c376
+index 0000000000000000000000000000000000000000..31921e8d94ea117dce298fd97e95ad9608158a1d
--- /dev/null
+++ b/src/main/java/io/papermc/paper/datacomponent/item/CustomModelData.java
-@@ -0,0 +1,28 @@
+@@ -0,0 +1,51 @@
+package io.papermc.paper.datacomponent.item;
+
++import java.util.List;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.Contract;
+import org.jspecify.annotations.NullMarked;
+
+/**
+ * Holds the custom model data.
++ *
+ * @see io.papermc.paper.datacomponent.DataComponentTypes#CUSTOM_MODEL_DATA
+ */
+@NullMarked
@@ -872,18 +874,39 @@ index 0000000000000000000000000000000000000000..d416c9d25b3ab88bf1e208c6faf92a8e
+public interface CustomModelData {
+
-+ @Contract(value = "_ -> new", pure = true)
-+ static CustomModelData customModelData(final int id) {
-+ return ItemComponentTypesBridge.bridge().customModelData(id);
-+ }
++ // TODO
+
+ /**
-+ * Gets the custom model data id.
++ * Gets the custom model data float values.
+ *
-+ * @return the id
++ * @return the float values
+ */
+ @Contract(pure = true)
-+ int id();
++ List<Float> floats();
++
++ /**
++ * Gets the custom model data boolean values.
++ *
++ * @return the boolean values
++ */
++ @Contract(pure = true)
++ List<Boolean> flags();
++
++ /**
++ * Gets the custom model data string values.
++ *
++ * @return the string values
++ */
++ @Contract(pure = true)
++ List<String> strings();
++
++ /**
++ * Gets the custom model data color values.
++ *
++ * @return the color values
++ */
++ @Contract(pure = true)
++ List<Integer> colors();
+}
diff --git a/src/main/java/io/papermc/paper/datacomponent/item/DamageResistant.java b/src/main/java/io/papermc/paper/datacomponent/item/DamageResistant.java
new file mode 100644
diff --git a/patches/server/0734-Fix-a-bunch-of-vanilla-bugs.patch b/patches/server/0734-Fix-a-bunch-of-vanilla-bugs.patch
index f5187e051f..b3b7dbcdac 100644
--- a/patches/server/0734-Fix-a-bunch-of-vanilla-bugs.patch
+++ b/patches/server/0734-Fix-a-bunch-of-vanilla-bugs.patch
@@ -115,7 +115,7 @@ index 064a7a3e1c4d192010e072a5e985a54135748d87..a706f0855fdf88cc9aece3ba00ef574b
this.player.server.getPlayerList().broadcastAll(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_GAME_MODE, this.player), this.player); // CraftBukkit
this.level.updateSleepingPlayerList();
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 196026e7f0689270d9c7320109c9f4fbe697f3d0..cf8a1ace849eb2c6418861d3dccd393b9b237381 100644
+index 196026e7f0689270d9c7320109c9f4fbe697f3d0..2fd7f959d3ad7e7f034ac883aacd638aed701e2b 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1889,7 +1889,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -123,7 +123,7 @@ index 196026e7f0689270d9c7320109c9f4fbe697f3d0..cf8a1ace849eb2c6418861d3dccd393b
}
}
- }
-+ } else { this.player.containerMenu.sendAllDataToRemote(); } // Paper - Fix inventory desync; MC-99075
++ } else { this.player.containerMenu.sendAllDataToRemote(); } // Paper - Fix inventory desync; MC-99075
} else {
MutableComponent ichatmutablecomponent1 = Component.translatable("build.tooHigh", i).withStyle(ChatFormatting.RED);
diff --git a/patches/server/0768-Improve-logging-and-errors.patch b/patches/server/0768-Improve-logging-and-errors.patch
index c715d3b6d3..7f97159651 100644
--- a/patches/server/0768-Improve-logging-and-errors.patch
+++ b/patches/server/0768-Improve-logging-and-errors.patch
@@ -52,7 +52,7 @@ index 4e47611f85f3db6a638d0fc6a0dd712b245cf229..ebe6a002d883721d80cbfcc004064e8a
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index cf8a1ace849eb2c6418861d3dccd393b9b237381..739e2c724a1f6170de2298ce2238751f7a6fd05f 100644
+index 2fd7f959d3ad7e7f034ac883aacd638aed701e2b..658796ce6d6398148ffee12f115e69a6e949e0e2 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3502,7 +3502,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0771-Add-missing-SpigotConfig-logCommands-check.patch b/patches/server/0771-Add-missing-SpigotConfig-logCommands-check.patch
index b31ae7fc77..f1bb7f0c4c 100644
--- a/patches/server/0771-Add-missing-SpigotConfig-logCommands-check.patch
+++ b/patches/server/0771-Add-missing-SpigotConfig-logCommands-check.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Add missing SpigotConfig logCommands check
Co-authored-by: david <[email protected]>
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 739e2c724a1f6170de2298ce2238751f7a6fd05f..838a9c2067503e05ade83e1b7f361880becce994 100644
+index 658796ce6d6398148ffee12f115e69a6e949e0e2..3f4f3236522672552de106a5326b12e396355dc6 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2139,7 +2139,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0776-Use-single-player-info-update-packet-on-join.patch b/patches/server/0776-Use-single-player-info-update-packet-on-join.patch
index d4781593fd..4b7db8cb14 100644
--- a/patches/server/0776-Use-single-player-info-update-packet-on-join.patch
+++ b/patches/server/0776-Use-single-player-info-update-packet-on-join.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Use single player info update packet on join
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 838a9c2067503e05ade83e1b7f361880becce994..cd687e9f8a4a1c7785a98d3182639d9b03d7f168 100644
+index 3f4f3236522672552de106a5326b12e396355dc6..16cb1ed6b47972a6bf6e3324f50912792d76bdda 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3540,7 +3540,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0793-Treat-sequence-violations-like-they-should-be.patch b/patches/server/0793-Treat-sequence-violations-like-they-should-be.patch
index 9e183c7f49..4ecf74bd4c 100644
--- a/patches/server/0793-Treat-sequence-violations-like-they-should-be.patch
+++ b/patches/server/0793-Treat-sequence-violations-like-they-should-be.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Treat sequence violations like they should be
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index cd687e9f8a4a1c7785a98d3182639d9b03d7f168..faf085886f0ce2b49bff075b2af898699e97f4b6 100644
+index 16cb1ed6b47972a6bf6e3324f50912792d76bdda..b16e08834bc63260a56b33fbfb89a46c9971a042 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2058,6 +2058,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0794-Prevent-causing-expired-keys-from-impacting-new-join.patch b/patches/server/0794-Prevent-causing-expired-keys-from-impacting-new-join.patch
index 0cfcf02801..a0f4624f76 100644
--- a/patches/server/0794-Prevent-causing-expired-keys-from-impacting-new-join.patch
+++ b/patches/server/0794-Prevent-causing-expired-keys-from-impacting-new-join.patch
@@ -26,7 +26,7 @@ index ef33705588abf550e2b3d0bf795788516141b3df..6bfb83434a184e6fdba932f692281f03
UPDATE_GAME_MODE((serialized, buf) -> serialized.gameMode = GameType.byId(buf.readVarInt()), (buf, entry) -> buf.writeVarInt(entry.gameMode().getId())),
UPDATE_LISTED((serialized, buf) -> serialized.listed = buf.readBoolean(), (buf, entry) -> buf.writeBoolean(entry.listed())),
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index faf085886f0ce2b49bff075b2af898699e97f4b6..85f17edde8b643b5dd44710bfac077c896f9d5a4 100644
+index b16e08834bc63260a56b33fbfb89a46c9971a042..888d41499c3a2186e4bd17d97372399f31d62ceb 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -307,6 +307,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0829-Implement-PlayerFailMoveEvent.patch b/patches/server/0829-Implement-PlayerFailMoveEvent.patch
index 0250606ca3..46b0f7676b 100644
--- a/patches/server/0829-Implement-PlayerFailMoveEvent.patch
+++ b/patches/server/0829-Implement-PlayerFailMoveEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Implement PlayerFailMoveEvent
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 85f17edde8b643b5dd44710bfac077c896f9d5a4..1d6aafc8beef5e4fc25b036ec4d8e4687cd399dc 100644
+index 888d41499c3a2186e4bd17d97372399f31d62ceb..b0184fffd9703c6f9a89f6614d6c176a484a471a 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1325,8 +1325,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0845-Don-t-tab-complete-namespaced-commands-if-send-names.patch b/patches/server/0845-Don-t-tab-complete-namespaced-commands-if-send-names.patch
index 07ac7440ad..43397fa7f0 100644
--- a/patches/server/0845-Don-t-tab-complete-namespaced-commands-if-send-names.patch
+++ b/patches/server/0845-Don-t-tab-complete-namespaced-commands-if-send-names.patch
@@ -11,7 +11,7 @@ This patch prevents server from sending namespaced commands when player
requests tab-complete only commands.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 1d6aafc8beef5e4fc25b036ec4d8e4687cd399dc..e287f2ca9a4614e030015a13460fea00aa0cd4f5 100644
+index b0184fffd9703c6f9a89f6614d6c176a484a471a..5674852a8be42c4a411858ad3b55dbfa0e5254c6 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -830,6 +830,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0855-Add-PlayerPickItemEvent.patch b/patches/server/0855-Add-PlayerPickItemEvent.patch
index e5f17422d6..bdd51c4e24 100644
--- a/patches/server/0855-Add-PlayerPickItemEvent.patch
+++ b/patches/server/0855-Add-PlayerPickItemEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerPickItemEvent
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index e287f2ca9a4614e030015a13460fea00aa0cd4f5..b13a12d427b131336ed0cbbea011219c40096207 100644
+index 5674852a8be42c4a411858ad3b55dbfa0e5254c6..9230afb0c75133a51e99545b160333ace6036075 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -994,15 +994,24 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0860-Fix-slot-desync.patch b/patches/server/0860-Fix-slot-desync.patch
index 4f96d9ada7..d359fe77cf 100644
--- a/patches/server/0860-Fix-slot-desync.patch
+++ b/patches/server/0860-Fix-slot-desync.patch
@@ -22,7 +22,7 @@ index a5eaac3fb6d949098a9fca20d9dbff59c56773ed..bfaf2cc79afebb0b51f6eb7081de2230
this.containerMenu.findSlot(this.getInventory(), this.getInventory().selected).ifPresent(s -> {
this.containerSynchronizer.sendSlotChange(this.containerMenu, s, this.getMainHandItem());
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index b13a12d427b131336ed0cbbea011219c40096207..4a6ae7e2b4f54e193c8f6472a16c9223d514688a 100644
+index 9230afb0c75133a51e99545b160333ace6036075..4db3e4f87487428e598046b953d083f3323cf9f1 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2812,10 +2812,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0865-Add-slot-sanity-checks-in-container-clicks.patch b/patches/server/0865-Add-slot-sanity-checks-in-container-clicks.patch
index 93d3da2b67..4280513c2d 100644
--- a/patches/server/0865-Add-slot-sanity-checks-in-container-clicks.patch
+++ b/patches/server/0865-Add-slot-sanity-checks-in-container-clicks.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add slot sanity checks in container clicks
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 4a6ae7e2b4f54e193c8f6472a16c9223d514688a..ebbedcc76900088648e3b45041eb5f138727a835 100644
+index 4db3e4f87487428e598046b953d083f3323cf9f1..50c4ecabdea7dafbb7ecdf226cac7d55a50b9e64 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3075,6 +3075,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0922-Add-CartographyItemEvent.patch b/patches/server/0922-Add-CartographyItemEvent.patch
index 18f955df9c..babd3f5bdc 100644
--- a/patches/server/0922-Add-CartographyItemEvent.patch
+++ b/patches/server/0922-Add-CartographyItemEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add CartographyItemEvent
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index ebbedcc76900088648e3b45041eb5f138727a835..687701b5e11b5449325456849cbb4b5fee0e38d5 100644
+index 50c4ecabdea7dafbb7ecdf226cac7d55a50b9e64..478911bb39e276e7734b4a82f1c0fa38d43e30df 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3197,6 +3197,19 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0932-Improve-tag-parser-handling.patch b/patches/server/0932-Improve-tag-parser-handling.patch
index 79f41b6304..79e7dbe97a 100644
--- a/patches/server/0932-Improve-tag-parser-handling.patch
+++ b/patches/server/0932-Improve-tag-parser-handling.patch
@@ -252,7 +252,7 @@ index 898b19887ed34c87003fc63cb5905df2ba6234a5..b47eeb23055b135d5567552ba983bfbc
private void write(FriendlyByteBuf buf) {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 687701b5e11b5449325456849cbb4b5fee0e38d5..a19e4154d08903518fa9912b4fa6d96551a1e96f 100644
+index 478911bb39e276e7734b4a82f1c0fa38d43e30df..cb02272523f7e033184cd7517e5f4de76eef10fd 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -776,6 +776,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0951-Brigadier-based-command-API.patch b/patches/server/0951-Brigadier-based-command-API.patch
index 38dd07146a..5b5b502989 100644
--- a/patches/server/0951-Brigadier-based-command-API.patch
+++ b/patches/server/0951-Brigadier-based-command-API.patch
@@ -2328,7 +2328,7 @@ index ebe6a002d883721d80cbfcc004064e8a57934a56..cce0e570c8217c8e7cc81642d303e1b9
this.setPvpAllowed(dedicatedserverproperties.pvp);
this.setFlightAllowed(dedicatedserverproperties.allowFlight);
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index a19e4154d08903518fa9912b4fa6d96551a1e96f..f82e9cf04d9c77d00579c5e0a6ed84ab4b53ad3d 100644
+index cb02272523f7e033184cd7517e5f4de76eef10fd..941c091309a836661bb6e82f37d9fba82e3c5004 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2489,30 +2489,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0955-Prevent-sending-oversized-item-data-in-equipment-and.patch b/patches/server/0955-Prevent-sending-oversized-item-data-in-equipment-and.patch
index caea64c408..533e2f8709 100644
--- a/patches/server/0955-Prevent-sending-oversized-item-data-in-equipment-and.patch
+++ b/patches/server/0955-Prevent-sending-oversized-item-data-in-equipment-and.patch
@@ -209,7 +209,7 @@ index ce3e359ed2b29674aa89a714ee1fb0875d83595d..d5bc702f2676b1b7a32c8f3a4a349fc2
((LivingEntity) this.entity).detectEquipmentUpdatesPublic(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index f82e9cf04d9c77d00579c5e0a6ed84ab4b53ad3d..716791478713f4eb15c9f7fa95d6d95c91203268 100644
+index 941c091309a836661bb6e82f37d9fba82e3c5004..cacf577b072245d71dc783c8126fc8569c8003e5 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2817,7 +2817,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0959-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch b/patches/server/0959-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch
index ce637ea18e..68600be598 100644
--- a/patches/server/0959-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch
+++ b/patches/server/0959-Deprecate-InvAction-HOTBAR_MOVE_AND_READD.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Deprecate InvAction#HOTBAR_MOVE_AND_READD
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 716791478713f4eb15c9f7fa95d6d95c91203268..ce968a5f2596e88627baf810b294fc03ccbcca8f 100644
+index cacf577b072245d71dc783c8126fc8569c8003e5..d99ad1200bfd2621d21184b0f106a255ba009ba6 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3089,14 +3089,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0987-Properly-resend-entities.patch b/patches/server/0987-Properly-resend-entities.patch
index c72ea7ae40..5fae130fa5 100644
--- a/patches/server/0987-Properly-resend-entities.patch
+++ b/patches/server/0987-Properly-resend-entities.patch
@@ -83,7 +83,7 @@ index f2dd272a01b4e946a6746865d55ebc9861f8361b..5d189ba60d40f5c42b2dacc339594ed0
}
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index ce968a5f2596e88627baf810b294fc03ccbcca8f..b9036e21adae600c5ec4a3c6ebc51ef2510e0d5e 100644
+index d99ad1200bfd2621d21184b0f106a255ba009ba6..0319ec3689f2fdb23bdcfa6f93e9a471b42c04b0 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2025,6 +2025,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/server/0993-optimize-dirt-and-snow-spreading.patch b/patches/server/0993-optimize-dirt-and-snow-spreading.patch
index 19762aa523..c3cd16bd38 100644
--- a/patches/server/0993-optimize-dirt-and-snow-spreading.patch
+++ b/patches/server/0993-optimize-dirt-and-snow-spreading.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] optimize dirt and snow spreading
Feature patch
diff --git a/src/main/java/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java b/src/main/java/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java
-index 30047cbef0ef54ad326e71761cba64887624d493..0418ad0fb58686679407ba8b8c2096a2648f9f2e 100644
+index 30047cbef0ef54ad326e71761cba64887624d493..4e38d2e0ce156b4edbef67c82c845ceeebbbcd59 100644
--- a/src/main/java/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java
@@ -18,8 +18,13 @@ public abstract class SpreadingSnowyDirtBlock extends SnowyDirtBlock {
@@ -59,6 +59,7 @@ index 30047cbef0ef54ad326e71761cba64887624d493..0418ad0fb58686679407ba8b8c2096a2
BlockPos blockposition1 = pos.offset(random.nextInt(3) - 1, random.nextInt(5) - 3, random.nextInt(3) - 1);
- if (world.getBlockState(blockposition1).is(Blocks.DIRT) && SpreadingSnowyDirtBlock.canPropagate(iblockdata1, world, blockposition1)) {
+- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(world, pos, blockposition1, (BlockState) iblockdata1.setValue(SpreadingSnowyDirtBlock.SNOWY, isSnowySetting(world.getBlockState(blockposition1.above())))); // CraftBukkit
+ // Paper start - Perf: optimize dirt and snow spreading
+ if (pos.getX() == blockposition1.getX() && pos.getY() == blockposition1.getY() && pos.getZ() == blockposition1.getZ()) {
+ continue;
@@ -71,7 +72,7 @@ index 30047cbef0ef54ad326e71761cba64887624d493..0418ad0fb58686679407ba8b8c2096a2
+ access = world.getChunkAt(blockposition1);
+ }
+ if (access.getBlockState(blockposition1).is(Blocks.DIRT) && SpreadingSnowyDirtBlock.canPropagate(access, iblockdata1, world, blockposition1)) {
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(world, pos, blockposition1, (BlockState) iblockdata1.setValue(SpreadingSnowyDirtBlock.SNOWY, isSnowySetting(world.getBlockState(blockposition1.above())))); // CraftBukkit
++ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockSpreadEvent(world, pos, blockposition1, (BlockState) iblockdata1.setValue(SpreadingSnowyDirtBlock.SNOWY, isSnowySetting(access.getBlockState(blockposition1.above())))); // CraftBukkit
+ // Paper end - Perf: optimize dirt and snow spreading
}
}
diff --git a/patches/server/0999-Make-interaction-leniency-distance-configurable.patch b/patches/server/0999-Make-interaction-leniency-distance-configurable.patch
index 9a4c2a8288..180b354d30 100644
--- a/patches/server/0999-Make-interaction-leniency-distance-configurable.patch
+++ b/patches/server/0999-Make-interaction-leniency-distance-configurable.patch
@@ -12,7 +12,7 @@ This value however may be too low in high latency environments.
The patch exposes a new configuration option to configure said value.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index b9036e21adae600c5ec4a3c6ebc51ef2510e0d5e..3050ad1322f0946bfc34a23e4f3e77c11e77fe72 100644
+index 0319ec3689f2fdb23bdcfa6f93e9a471b42c04b0..88a8d867b6ddee037c0c0482f903961f681479c6 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2788,7 +2788,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
diff --git a/patches/unapplied/server/1009-Fix-CraftBukkit-drag-system.patch b/patches/server/1007-Fix-CraftBukkit-drag-system.patch
index 29c50814ac..ef7e04105b 100644
--- a/patches/unapplied/server/1009-Fix-CraftBukkit-drag-system.patch
+++ b/patches/server/1007-Fix-CraftBukkit-drag-system.patch
@@ -10,10 +10,10 @@ public net.minecraft.world.inventory.AbstractContainerMenu quickcraftType
public net.minecraft.world.inventory.AbstractContainerMenu resetQuickCraft()V
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index bb3d444f7bf2b20a557cd39997f9943c90763432..65ee382684fe2d8dec621ca709880f7349208eae 100644
+index 88a8d867b6ddee037c0c0482f903961f681479c6..a28878b0fae589d81a7aeb13c2ab291f5d3e02af 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -3081,6 +3081,25 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -3147,6 +3147,25 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
break;
case QUICK_CRAFT:
diff --git a/patches/unapplied/server/1010-Fix-SculkBloomEvent-firing-for-block-entity-loading.patch b/patches/server/1008-Fix-SculkBloomEvent-firing-for-block-entity-loading.patch
index c2857c2245..c2857c2245 100644
--- a/patches/unapplied/server/1010-Fix-SculkBloomEvent-firing-for-block-entity-loading.patch
+++ b/patches/server/1008-Fix-SculkBloomEvent-firing-for-block-entity-loading.patch
diff --git a/patches/unapplied/server/1011-Remove-set-damage-lootable-item-function-from-compas.patch b/patches/server/1009-Remove-set-damage-lootable-item-function-from-compas.patch
index ac0c0e3513..562103f268 100644
--- a/patches/unapplied/server/1011-Remove-set-damage-lootable-item-function-from-compas.patch
+++ b/patches/server/1009-Remove-set-damage-lootable-item-function-from-compas.patch
@@ -8,7 +8,7 @@ function on them, but compasses don't take durability, resulting in a warning.
This patch simply removes attempting to add damage to the compass item.
diff --git a/src/main/java/net/minecraft/data/loot/packs/VanillaChestLoot.java b/src/main/java/net/minecraft/data/loot/packs/VanillaChestLoot.java
-index 096899338640bb8a7052db06bf55e9fe33bf1cbe..cff6b265622701266349b6cf68eb874aa6fb6321 100644
+index bb13829bd9862dc9449cbf1eb35190a4a93b040b..7d6ba4e16b3f2e60fbe7ebe04a9527c4bcbdfb4f 100644
--- a/src/main/java/net/minecraft/data/loot/packs/VanillaChestLoot.java
+++ b/src/main/java/net/minecraft/data/loot/packs/VanillaChestLoot.java
@@ -946,7 +946,6 @@ public record VanillaChestLoot(HolderLookup.Provider registries) implements Loot
diff --git a/patches/unapplied/server/1012-Add-enchantment-seed-update-API.patch b/patches/server/1010-Add-enchantment-seed-update-API.patch
index 3725102979..b00d119b56 100644
--- a/patches/unapplied/server/1012-Add-enchantment-seed-update-API.patch
+++ b/patches/server/1010-Add-enchantment-seed-update-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add enchantment seed update API
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
-index b7300052f3c3d496ea41b681a2d5d5b554e67c63..50a735dd97daab4fb9579f922a4c63de60204f29 100644
+index d82c85ace445d139c1bb96d118060caaec6acffa..bb9b17a058273ee1519b2abbefba97cad7feb51b 100644
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
-@@ -399,4 +399,10 @@ public class EnchantmentMenu extends AbstractContainerMenu {
+@@ -398,4 +398,10 @@ public class EnchantmentMenu extends AbstractContainerMenu {
return this.bukkitEntity;
}
// CraftBukkit end
diff --git a/patches/unapplied/server/1013-Fix-synchronise-sending-chat-to-client-with-updating.patch b/patches/server/1011-Fix-synchronise-sending-chat-to-client-with-updating.patch
index 9f024a9662..fae7a30d19 100644
--- a/patches/unapplied/server/1013-Fix-synchronise-sending-chat-to-client-with-updating.patch
+++ b/patches/server/1011-Fix-synchronise-sending-chat-to-client-with-updating.patch
@@ -9,10 +9,10 @@ In the case where multiple messages from different players are being processed i
This also applies to the last seen state of the server, which becomes inconsistent in the same way as the message signature cache and would cause any messages sent to be rejected by the server too.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 65ee382684fe2d8dec621ca709880f7349208eae..6a5fc3f92b5d56bedc20054b36f4513fc8bab303 100644
+index a28878b0fae589d81a7aeb13c2ab291f5d3e02af..82d6b4f6cefd946b234a8007c745c76a373694b3 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2664,8 +2664,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2728,8 +2728,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
return;
}
// CraftBukkit end
diff --git a/patches/unapplied/server/1014-Fix-InventoryOpenEvent-cancellation.patch b/patches/server/1012-Fix-InventoryOpenEvent-cancellation.patch
index 5abbfba60b..2f3f918bd2 100644
--- a/patches/unapplied/server/1014-Fix-InventoryOpenEvent-cancellation.patch
+++ b/patches/server/1012-Fix-InventoryOpenEvent-cancellation.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix InventoryOpenEvent cancellation
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index e1102d8fb73c6b545c205cd5ad4b4a0ae1a32529..f6e130aba66935f808dcfd7ef987131092ddfe4e 100644
+index 3a5debc21b6f70e961dcca9048193e94df54b6cc..85394cd2c69cad0ce59160734037a03d6d1ab330 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -1942,6 +1942,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
+@@ -1925,6 +1925,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player {
} else if (factory instanceof ChestBlock.DoubleInventory) {
// SPIGOT-5355 - double chests too :(
((ChestBlock.DoubleInventory) factory).inventorylargechest.stopOpen(this);
@@ -83,7 +83,7 @@ index f50135ddd1e3699b0e3390b316d82f3884bab719..50c907c962f936d2035bb7550750cdbd
return InteractionResult.SUCCESS;
diff --git a/src/main/java/net/minecraft/world/level/block/BarrelBlock.java b/src/main/java/net/minecraft/world/level/block/BarrelBlock.java
-index 85fbba41ca0b6aded476043d280c746a8f5bacb9..2338b94158e3b685dc1ea8394ff271d85b5f7a7e 100644
+index 6def42b083f9fdef254164d98f66edbfe0c512f3..2e87cb196996cd8c569b7ff68943e3f1a172f351 100644
--- a/src/main/java/net/minecraft/world/level/block/BarrelBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BarrelBlock.java
@@ -41,8 +41,7 @@ public class BarrelBlock extends BaseEntityBlock {
@@ -97,7 +97,7 @@ index 85fbba41ca0b6aded476043d280c746a8f5bacb9..2338b94158e3b685dc1ea8394ff271d8
PiglinAi.angerNearbyPiglins(serverLevel, player, true);
}
diff --git a/src/main/java/net/minecraft/world/level/block/BeaconBlock.java b/src/main/java/net/minecraft/world/level/block/BeaconBlock.java
-index 5e61dfa142dd108dd4b35de47c6ff424b1b28c02..debe8dbf1d5f3e58774903c5fcdcea672274ea61 100644
+index 9c6c0309907a8f313f3e1abf1b743bb5cb12995a..ecd34884260a2ed0b3aff7e16183275dc8229505 100644
--- a/src/main/java/net/minecraft/world/level/block/BeaconBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BeaconBlock.java
@@ -46,8 +46,7 @@ public class BeaconBlock extends BaseEntityBlock implements BeaconBeamBlock {
@@ -125,10 +125,10 @@ index b491cc959d4ce65a7ba16b64a7e1a56e77d0052c..03fed46291ff2236da619c941f864b8c
}
}
diff --git a/src/main/java/net/minecraft/world/level/block/BrewingStandBlock.java b/src/main/java/net/minecraft/world/level/block/BrewingStandBlock.java
-index 4109e4965f65bdd81fa956f9e0882cb7877bd2aa..cbaa6fc04eb8d765e0dd8238f2b82eed196d13c7 100644
+index d73dc882775ff25da7987628e5957603149480d9..594d2dc0379528d2535731390deba057b3d743c5 100644
--- a/src/main/java/net/minecraft/world/level/block/BrewingStandBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BrewingStandBlock.java
-@@ -73,8 +73,7 @@ public class BrewingStandBlock extends BaseEntityBlock {
+@@ -68,8 +68,7 @@ public class BrewingStandBlock extends BaseEntityBlock {
@Override
protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
@@ -154,10 +154,10 @@ index 20feecb9c7f5537e00788a30969b002dceda605f..9e7066ec9fa5a0a852f6e38052887a47
return InteractionResult.SUCCESS;
diff --git a/src/main/java/net/minecraft/world/level/block/ChestBlock.java b/src/main/java/net/minecraft/world/level/block/ChestBlock.java
-index 590837cb242eda62dca3c937a26b8ba26c41850c..edef8fc62f8dba1b57214d8d7d805ff0d83f4114 100644
+index 252d2ab67c125ae075689fa779477eb698c20a15..ca69a9fbd4942f9079aeaab7cead2d7a2c3b8659 100644
--- a/src/main/java/net/minecraft/world/level/block/ChestBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ChestBlock.java
-@@ -252,8 +252,7 @@ public class ChestBlock extends AbstractChestBlock<ChestBlockEntity> implements
+@@ -247,8 +247,7 @@ public class ChestBlock extends AbstractChestBlock<ChestBlockEntity> implements
if (world instanceof ServerLevel worldserver) {
MenuProvider itileinventory = this.getMenuProvider(state, world, pos);
@@ -183,7 +183,7 @@ index 673a92d383db463b5c4e2ac3a4ecbd7e97c15c6d..6a2123cd808fa79f3cdb1cb56632d29b
return InteractionResult.SUCCESS;
diff --git a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
-index 500c56c4ef0878434582a50d6dba2ccca9773275..5a6c153fa2873aecba0d0d02be2cc2a514f445e3 100644
+index 84de82e83b885a5c567f45cd90df751f0ef8942a..01584d77a8877528c3ec65971a1a6377c09e763b 100644
--- a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
@@ -80,8 +80,9 @@ public class DispenserBlock extends BaseEntityBlock {
@@ -198,10 +198,10 @@ index 500c56c4ef0878434582a50d6dba2ccca9773275..5a6c153fa2873aecba0d0d02be2cc2a5
}
diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
-index ef0d469176ee74b6bb5f9e9cc508735145fda5b8..2a207fb2e1c26b562de42240e11c856bd2a23458 100644
+index d3b4965bb0a067dccdb2d83ec0947de24dfb5145..9b6ab617ab7f503cf0b2d4e29333c706ffe95f46 100644
--- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
-@@ -86,11 +86,13 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
+@@ -81,11 +81,13 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
if (world.getBlockState(blockPos).isRedstoneConductor(world, blockPos)) { // Paper - diff on change; make sure that EnderChest#isBlocked uses the same logic
return InteractionResult.SUCCESS;
} else {
@@ -235,10 +235,10 @@ index 72a3002c291181e7d874a149a22b8004ee2a0b18..618b566f067d53f32351e13b692095eb
}
}
diff --git a/src/main/java/net/minecraft/world/level/block/GrindstoneBlock.java b/src/main/java/net/minecraft/world/level/block/GrindstoneBlock.java
-index 15fb9e8f63d1db1125680aced7f9b477d4ebf43a..59c000612bbf7beb7208af48001d3b1e5111ebd4 100644
+index 6a45ccb7f3def6eda6d2a81ba5e713353edcc2e6..a1a98c9407f8d9ce37cac073f9704c009355309f 100644
--- a/src/main/java/net/minecraft/world/level/block/GrindstoneBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/GrindstoneBlock.java
-@@ -157,8 +157,9 @@ public class GrindstoneBlock extends FaceAttachedHorizontalDirectionalBlock {
+@@ -152,8 +152,9 @@ public class GrindstoneBlock extends FaceAttachedHorizontalDirectionalBlock {
@Override
protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
if (!world.isClientSide) {
@@ -250,7 +250,7 @@ index 15fb9e8f63d1db1125680aced7f9b477d4ebf43a..59c000612bbf7beb7208af48001d3b1e
return InteractionResult.SUCCESS;
diff --git a/src/main/java/net/minecraft/world/level/block/HopperBlock.java b/src/main/java/net/minecraft/world/level/block/HopperBlock.java
-index b61324fe162f32817b87e4adb80df57b9433259f..005a2a66a6e8a492acfa7ba91117884cda08562d 100644
+index 9da02e643948aaea91307e28eb83177aa5d0ecec..8ba23af2fa6c5174aa3ec34e78f9c21ce786c4fc 100644
--- a/src/main/java/net/minecraft/world/level/block/HopperBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/HopperBlock.java
@@ -125,8 +125,7 @@ public class HopperBlock extends BaseEntityBlock {
@@ -264,10 +264,10 @@ index b61324fe162f32817b87e4adb80df57b9433259f..005a2a66a6e8a492acfa7ba91117884c
}
diff --git a/src/main/java/net/minecraft/world/level/block/LecternBlock.java b/src/main/java/net/minecraft/world/level/block/LecternBlock.java
-index 2864d0dec66980736f7434bff3031c05cff64592..d7e14ee2c11f34703b63fcd2e2ad5257003e14c8 100644
+index 9797d756ecf532db013093469a3e40d9c6ac0544..23066357205f5a67b8ab5a2fe6c2912e698c7f8c 100644
--- a/src/main/java/net/minecraft/world/level/block/LecternBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/LecternBlock.java
-@@ -298,8 +298,7 @@ public class LecternBlock extends BaseEntityBlock {
+@@ -293,8 +293,7 @@ public class LecternBlock extends BaseEntityBlock {
private void openScreen(Level world, BlockPos pos, Player player) {
BlockEntity tileentity = world.getBlockEntity(pos);
@@ -293,10 +293,10 @@ index 2806ca5b0e3c73a3704a514dba2038072947d9ae..1b57f8cf3f4f27f6a76fec82a542ec1c
return InteractionResult.SUCCESS;
diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
-index a0607cb6c6f74285363dfbd49033a8bde5ca6ae3..155c7240b1112729333e6968122568c707d8f66b 100644
+index 0712818e2d9205078bfc8846452ba31388840034..c4e6c2714b215b99c884b2dca989c2d3d8f81fa0 100644
--- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
-@@ -104,8 +104,8 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
+@@ -98,8 +98,8 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
if (world instanceof ServerLevel serverLevel
&& world.getBlockEntity(pos) instanceof ShulkerBoxBlockEntity shulkerBoxBlockEntity
@@ -337,7 +337,7 @@ index b0929942ca06ee14d2ba4f2ec2ee93743ee6233e..83669dfbfec46d319aec82ea2beaa90c
}
}
diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
-index 3a879d1a469a8f597bfba861d41abd75a5743ab8..e61644241f24b42bb4f702d3eef5b590b4d107c8 100644
+index d791248c7f874264c7d72596f239d79bda3211b2..f1366aea49206afcd64bf058ee673d6a562315c5 100644
--- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
@@ -48,8 +48,9 @@ public class StonecutterBlock extends Block {
diff --git a/patches/unapplied/server/1015-Fire-BlockExpEvent-on-grindstone-use.patch b/patches/server/1013-Fire-BlockExpEvent-on-grindstone-use.patch
index e5944fabfe..e5944fabfe 100644
--- a/patches/unapplied/server/1015-Fire-BlockExpEvent-on-grindstone-use.patch
+++ b/patches/server/1013-Fire-BlockExpEvent-on-grindstone-use.patch
diff --git a/patches/unapplied/server/1016-Check-dead-flag-in-isAlive.patch b/patches/server/1014-Check-dead-flag-in-isAlive.patch
index 0641acbaa9..cb918a9c8a 100644
--- a/patches/unapplied/server/1016-Check-dead-flag-in-isAlive.patch
+++ b/patches/server/1014-Check-dead-flag-in-isAlive.patch
@@ -15,10 +15,10 @@ Also, even if the plugin is responsibly checking !isDead() before modifying heal
I am currently unable to replicate, these "revived" entities can still appear
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index cfef1bff0080ffc662e3a4428116f7d4dc71eab2..f2708479ccf994278ad1ab4665edc46672001e8a 100644
+index 5a5a79e237eb36b67e0b373840f0084b9dbf3954..64047566eb3049918bb2721679835cfa574c9f13 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -2145,7 +2145,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -2160,7 +2160,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@Override
public boolean isAlive() {
@@ -26,4 +26,4 @@ index cfef1bff0080ffc662e3a4428116f7d4dc71eab2..f2708479ccf994278ad1ab4665edc466
+ return !this.isRemoved() && this.getHealth() > 0.0F && !this.dead; // Paper - Check this.dead
}
- public boolean isLookingAtMe(LivingEntity entity, double d0, boolean flag, boolean visualShape, Predicate<LivingEntity> predicate, DoubleSupplier... entityYChecks) {
+ public boolean isLookingAtMe(LivingEntity entity, double d0, boolean flag, boolean visualShape, double... checkedYs) {
diff --git a/patches/unapplied/server/1017-Add-FeatureFlag-API.patch b/patches/server/1015-Add-FeatureFlag-API.patch
index 2d3757f237..b1616669c8 100644
--- a/patches/unapplied/server/1017-Add-FeatureFlag-API.patch
+++ b/patches/server/1015-Add-FeatureFlag-API.patch
@@ -162,7 +162,7 @@ index f0bd7d01f56bb792886354ca4f199e46c2cf7503..adc6741e0e017660fbd39a62b69be1e6
+ // Paper end - feature flag API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index bc78b58dec47d8ca1da7762b0b3f168a35e090b8..1a6f4621190c9f3859c1ef6588718a8a555e026d 100644
+index cbbbea3f31416e6c11125400d37fe21252830d67..afbe7fd926d20d6aef0807663c34838a7f63cd2b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2364,10 +2364,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -284,7 +284,7 @@ index 6cf790c9fa23ea313423fdaeb7c181bf530828c6..0bcb9df1103050441f8922a688b163dc
public static PotionEffectType minecraftHolderToBukkit(Holder<MobEffect> minecraft) {
return CraftPotionEffectType.minecraftToBukkit(minecraft.value());
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 2539802c0a02b6a564bdbd58e93ffe5685e775b9..44c9127c71402afd6f98215b9e66fe5b848db50b 100644
+index 52d3f5159b2d55c0f2adc2b882046909ecb52222..95ea59e73aa3295811d628e124306af63a0cd6b4 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -48,7 +48,7 @@ import org.bukkit.attribute.Attribute;
diff --git a/patches/unapplied/server/1018-Tag-Lifecycle-Events.patch b/patches/server/1016-Tag-Lifecycle-Events.patch
index 11e8f6e7cc..d000792dbc 100644
--- a/patches/unapplied/server/1018-Tag-Lifecycle-Events.patch
+++ b/patches/server/1016-Tag-Lifecycle-Events.patch
@@ -461,10 +461,10 @@ index 0000000000000000000000000000000000000000..d6d4bfc6f45d646afeace422a038c670
+) {
+}
diff --git a/src/main/java/net/minecraft/resources/RegistryDataLoader.java b/src/main/java/net/minecraft/resources/RegistryDataLoader.java
-index c5e279216f6cb880397ea2768ee6e99a8798e3e1..46bf2b95658ca3bbd3048df5f8adf1bdcc2d3571 100644
+index 1b167e8e0b42a49de1c5f0ea33dc9bef6ddd0f83..f102d3ea4e470fca2c3f74a0e3c1552bd3bd29f4 100644
--- a/src/main/java/net/minecraft/resources/RegistryDataLoader.java
+++ b/src/main/java/net/minecraft/resources/RegistryDataLoader.java
-@@ -278,7 +278,7 @@ public class RegistryDataLoader {
+@@ -277,7 +277,7 @@ public class RegistryDataLoader {
}
io.papermc.paper.registry.PaperRegistryListenerManager.INSTANCE.runFreezeListeners(registry.key(), conversions); // Paper - run pre-freeze listeners
@@ -474,7 +474,7 @@ index c5e279216f6cb880397ea2768ee6e99a8798e3e1..46bf2b95658ca3bbd3048df5f8adf1bd
static <E> void loadContentsFromNetwork(
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 6756f325dc755e5fcb8823c7395c925104dcdda0..57b242a4a1de49e8869e8ec83e74d60d877a4003 100644
+index 6bdc9dbbbe11b368892e77fe162199a40418cfde..8d9ddcb1652526c21c4004c6b0e1c83bc33d3934 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -2208,7 +2208,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -487,12 +487,12 @@ index 6756f325dc755e5fcb8823c7395c925104dcdda0..57b242a4a1de49e8869e8ec83e74d60d
return ReloadableServerResources.loadResources(resourcemanager, this.registries, list, this.worldData.enabledFeatures(), this.isDedicatedServer() ? Commands.CommandSelection.DEDICATED : Commands.CommandSelection.INTEGRATED, this.getFunctionCompilationLevel(), this.executor, this).whenComplete((datapackresources, throwable) -> {
if (throwable != null) {
diff --git a/src/main/java/net/minecraft/server/ReloadableServerRegistries.java b/src/main/java/net/minecraft/server/ReloadableServerRegistries.java
-index b5ca1a0acb16d0cd8dccc854f309d425a48b070d..ea1cbd7a3897ea4a86877a557da264387ef78a38 100644
+index f4d25d1aed5bcd3b8119ac7356a9cccc9d4ff54c..ceb5b58cca257e6f7e73f4236662e0f4ae7ae036 100644
--- a/src/main/java/net/minecraft/server/ReloadableServerRegistries.java
+++ b/src/main/java/net/minecraft/server/ReloadableServerRegistries.java
-@@ -70,7 +70,7 @@ public class ReloadableServerRegistries {
- String string = Registries.elementsDirPath(type.registryKey());
- SimpleJsonResourceReloadListener.scanDirectory(resourceManager, string, ops, type.codec(), map);
+@@ -69,7 +69,7 @@ public class ReloadableServerRegistries {
+ Map<ResourceLocation, T> map = new HashMap<>();
+ SimpleJsonResourceReloadListener.scanDirectory(resourceManager, type.registryKey(), ops, type.codec(), map);
map.forEach((id, value) -> io.papermc.paper.registry.PaperRegistryListenerManager.INSTANCE.registerWithListeners(writableRegistry, ResourceKey.create(type.registryKey(), id), value, DEFAULT_REGISTRATION_INFO, conversions)); // Paper - register with listeners
- TagLoader.loadTagsForRegistry(resourceManager, writableRegistry);
+ TagLoader.loadTagsForRegistry(resourceManager, writableRegistry, io.papermc.paper.plugin.lifecycle.event.registrar.ReloadableRegistrarEvent.Cause.RELOAD); // Paper - tag life cycle - reload
diff --git a/patches/unapplied/server/1019-Item-serialization-as-json.patch b/patches/server/1017-Item-serialization-as-json.patch
index 1e422d7da9..6f53e6364f 100644
--- a/patches/unapplied/server/1019-Item-serialization-as-json.patch
+++ b/patches/server/1017-Item-serialization-as-json.patch
@@ -5,13 +5,13 @@ Subject: [PATCH] Item serialization as json
diff --git a/src/main/java/net/minecraft/world/item/component/CustomData.java b/src/main/java/net/minecraft/world/item/component/CustomData.java
-index c80fd4960dfbb0fde37363e7df25b0a5411bdb11..ff7f6916f65466c25a7bde35d64682c15b211697 100644
+index 17b6bd630e9767c5e9fa5ceff228fb81f124be8c..0a905a59d97ed833cb4f1903006d6f340199fa14 100644
--- a/src/main/java/net/minecraft/world/item/component/CustomData.java
+++ b/src/main/java/net/minecraft/world/item/component/CustomData.java
-@@ -28,7 +28,17 @@ import org.slf4j.Logger;
- public final class CustomData {
+@@ -34,7 +34,17 @@ public final class CustomData {
private static final Logger LOGGER = LogUtils.getLogger();
public static final CustomData EMPTY = new CustomData(new CompoundTag());
+ private static final String TYPE_TAG = "id";
- public static final Codec<CustomData> CODEC = Codec.withAlternative(CompoundTag.CODEC, TagParser.AS_CODEC)
+ // Paper start - Item serialization as json
+ public static ThreadLocal<Boolean> SERIALIZE_CUSTOM_AS_SNBT = ThreadLocal.withInitial(() -> false);
@@ -28,7 +28,7 @@ index c80fd4960dfbb0fde37363e7df25b0a5411bdb11..ff7f6916f65466c25a7bde35d64682c1
public static final Codec<CustomData> CODEC_WITH_ID = CODEC.validate(
component -> component.getUnsafe().contains("id", 8) ? DataResult.success(component) : DataResult.error(() -> "Missing id for entity in: " + component)
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
-index 44c9127c71402afd6f98215b9e66fe5b848db50b..4c82dae4c2d764c8310832b1a209846d4352bae9 100644
+index 95ea59e73aa3295811d628e124306af63a0cd6b4..0d5d14a9a817c00704728f65cd87e446a0caa3c3 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -527,6 +527,39 @@ public final class CraftMagicNumbers implements UnsafeValues {
diff --git a/patches/unapplied/server/1020-Validate-slot-in-PlayerInventory-setSlot.patch b/patches/server/1018-Validate-slot-in-PlayerInventory-setSlot.patch
index 3c402b2284..3c402b2284 100644
--- a/patches/unapplied/server/1020-Validate-slot-in-PlayerInventory-setSlot.patch
+++ b/patches/server/1018-Validate-slot-in-PlayerInventory-setSlot.patch
diff --git a/patches/unapplied/server/1021-Remove-wall-time-unused-skip-tick-protection.patch b/patches/server/1019-Remove-wall-time-unused-skip-tick-protection.patch
index c25e6680dc..c25e6680dc 100644
--- a/patches/unapplied/server/1021-Remove-wall-time-unused-skip-tick-protection.patch
+++ b/patches/server/1019-Remove-wall-time-unused-skip-tick-protection.patch
diff --git a/patches/unapplied/server/1022-Disable-pretty-printing-for-advancement-saving.patch b/patches/server/1020-Disable-pretty-printing-for-advancement-saving.patch
index c6ad9249f5..c6ad9249f5 100644
--- a/patches/unapplied/server/1022-Disable-pretty-printing-for-advancement-saving.patch
+++ b/patches/server/1020-Disable-pretty-printing-for-advancement-saving.patch
diff --git a/patches/unapplied/server/1023-Fix-PlayerCommandPreprocessEvent-on-signed-commands.patch b/patches/server/1021-Fix-PlayerCommandPreprocessEvent-on-signed-commands.patch
index 67b0a1e97f..3b1773edc3 100644
--- a/patches/unapplied/server/1023-Fix-PlayerCommandPreprocessEvent-on-signed-commands.patch
+++ b/patches/server/1021-Fix-PlayerCommandPreprocessEvent-on-signed-commands.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix PlayerCommandPreprocessEvent on signed commands
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 6a5fc3f92b5d56bedc20054b36f4513fc8bab303..fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6 100644
+index 82d6b4f6cefd946b234a8007c745c76a373694b3..f6d3baf1da22a474ccc9be80781091405362d7db 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2196,24 +2196,32 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2255,24 +2255,32 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
PlayerCommandPreprocessEvent event = new PlayerCommandPreprocessEvent(this.getCraftPlayer(), command, new LazyPlayerSet(this.server));
this.cserver.getPluginManager().callEvent(event);
diff --git a/patches/unapplied/server/1024-Add-enchantWithLevels-with-enchantment-registry-set.patch b/patches/server/1022-Add-enchantWithLevels-with-enchantment-registry-set.patch
index 61f5aced36..e5bee685df 100644
--- a/patches/unapplied/server/1024-Add-enchantWithLevels-with-enchantment-registry-set.patch
+++ b/patches/server/1022-Add-enchantWithLevels-with-enchantment-registry-set.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add enchantWithLevels with enchantment registry set
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-index d9eec6cff3c7c6515f4d61bf1063e7d609d4bcb3..2f11d324ee5e8df66b65c1426e7d1a6d82990ea7 100644
+index 6d228d643342588877e8385acdc202de57d455f1..424a1495b3905407e7c94b165d5d74d3ecfd0a91 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
-@@ -322,6 +322,22 @@ public final class CraftItemFactory implements ItemFactory {
+@@ -324,6 +324,22 @@ public final class CraftItemFactory implements ItemFactory {
);
}
diff --git a/patches/unapplied/server/1025-Improve-entity-effect-API.patch b/patches/server/1023-Improve-entity-effect-API.patch
index 8214467d02..1367d57d33 100644
--- a/patches/unapplied/server/1025-Improve-entity-effect-API.patch
+++ b/patches/server/1023-Improve-entity-effect-API.patch
@@ -25,7 +25,7 @@ index d1d9916db7bd4886d30355e6a0ecb69cd21c2364..ddabaed899c755925ad8618b78c33dac
+ // Paper end - broadcast hurt animation
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index f694e79c21a8f84e48c8f46de8aebb0889b7c9f8..7e3552390c7dd11a79fd95d3543707cc5d652c66 100644
+index 3901d53737a04f821c8569fa6b79ee4e624f8729..a51115038962f322f45f0de2bbe52d7c1c6f7529 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1284,6 +1284,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -49,7 +49,7 @@ index f694e79c21a8f84e48c8f46de8aebb0889b7c9f8..7e3552390c7dd11a79fd95d3543707cc
}
@Override
-@@ -3530,4 +3535,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -3515,4 +3520,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setSendViewDistance(final int viewDistance) {
throw new UnsupportedOperationException("Not implemented yet");
}
diff --git a/patches/unapplied/server/1026-Add-recipeBrewTime.patch b/patches/server/1024-Add-recipeBrewTime.patch
index 39d7149206..201d9008bf 100644
--- a/patches/unapplied/server/1026-Add-recipeBrewTime.patch
+++ b/patches/server/1024-Add-recipeBrewTime.patch
@@ -24,10 +24,10 @@ index 0000000000000000000000000000000000000000..84dead75191634c3aa6031781a2ff308
+ }
+}
diff --git a/src/main/java/net/minecraft/world/inventory/BrewingStandMenu.java b/src/main/java/net/minecraft/world/inventory/BrewingStandMenu.java
-index 182c87a0b7081f6a777c4c7969961c30438b0d86..3be46ecfa382e15d09a88912c498abb6034c3a90 100644
+index d2688ca4430e2e45b35b97b0b3b7c79b5aac23a4..6d9072dadea6d9a7eaffefdf64a12b80637a1e3f 100644
--- a/src/main/java/net/minecraft/world/inventory/BrewingStandMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/BrewingStandMenu.java
-@@ -42,14 +42,14 @@ public class BrewingStandMenu extends AbstractContainerMenu {
+@@ -45,14 +45,14 @@ public class BrewingStandMenu extends AbstractContainerMenu {
// CraftBukkit end
public BrewingStandMenu(int syncId, Inventory playerInventory) {
@@ -44,7 +44,7 @@ index 182c87a0b7081f6a777c4c7969961c30438b0d86..3be46ecfa382e15d09a88912c498abb6
this.brewingStand = inventory;
this.brewingStandData = propertyDelegate;
PotionBrewing potionbrewer = playerInventory.player.level().potionBrewing();
-@@ -61,7 +61,20 @@ public class BrewingStandMenu extends AbstractContainerMenu {
+@@ -64,7 +64,20 @@ public class BrewingStandMenu extends AbstractContainerMenu {
// Paper end - custom potion mixes
this.ingredientSlot = this.addSlot(new BrewingStandMenu.IngredientsSlot(potionbrewer, inventory, 3, 79, 17));
this.addSlot(new BrewingStandMenu.FuelSlot(inventory, 4, 17, 17));
diff --git a/patches/unapplied/server/1027-Call-bucket-events-for-cauldrons.patch b/patches/server/1025-Call-bucket-events-for-cauldrons.patch
index ab192b82a4..ab192b82a4 100644
--- a/patches/unapplied/server/1027-Call-bucket-events-for-cauldrons.patch
+++ b/patches/server/1025-Call-bucket-events-for-cauldrons.patch
diff --git a/patches/unapplied/server/1028-Add-PlayerInsertLecternBookEvent.patch b/patches/server/1026-Add-PlayerInsertLecternBookEvent.patch
index f15585222f..44910a07b7 100644
--- a/patches/unapplied/server/1028-Add-PlayerInsertLecternBookEvent.patch
+++ b/patches/server/1026-Add-PlayerInsertLecternBookEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerInsertLecternBookEvent
diff --git a/src/main/java/net/minecraft/world/level/block/LecternBlock.java b/src/main/java/net/minecraft/world/level/block/LecternBlock.java
-index d7e14ee2c11f34703b63fcd2e2ad5257003e14c8..70f2e6278e2d970245ca5b46fbd9ffae4727b47b 100644
+index 23066357205f5a67b8ab5a2fe6c2912e698c7f8c..1ca52ab9379a4758ec4583bb201e4b1954297da7 100644
--- a/src/main/java/net/minecraft/world/level/block/LecternBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/LecternBlock.java
-@@ -158,7 +158,24 @@ public class LecternBlock extends BaseEntityBlock {
+@@ -153,7 +153,24 @@ public class LecternBlock extends BaseEntityBlock {
BlockEntity tileentity = world.getBlockEntity(pos);
if (tileentity instanceof LecternBlockEntity tileentitylectern) {
diff --git a/patches/unapplied/server/1029-Void-damage-configuration-API.patch b/patches/server/1027-Void-damage-configuration-API.patch
index 5b445033c3..397fec6d91 100644
--- a/patches/unapplied/server/1029-Void-damage-configuration-API.patch
+++ b/patches/server/1027-Void-damage-configuration-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Void damage configuration API
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 20fcfb7d7d2541731452454d78f6967215c4fcd7..5949cbccb569ab1d518508d200e69ad9d7d0ba9a 100644
+index 1167e3a378bf2f83848e3a732d407d6e5e689743..723904c751257ea84ee2d16576dfb0d9f2cd4816 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -854,8 +854,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -858,8 +858,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public void checkBelowWorld() {
@@ -20,10 +20,10 @@ index 20fcfb7d7d2541731452454d78f6967215c4fcd7..5949cbccb569ab1d518508d200e69ad9
&& (!(this instanceof Player player) || !player.getAbilities().invulnerable))) {
// Paper end - Configurable nether ceiling damage
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index f2708479ccf994278ad1ab4665edc46672001e8a..59c992173fda6153c58722caae061b0e6bee86a1 100644
+index 64047566eb3049918bb2721679835cfa574c9f13..02b412dcad5c8df6e14e92166b3bea629d640680 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -2701,7 +2701,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -2712,7 +2712,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@Override
protected void onBelowWorld() {
@@ -33,7 +33,7 @@ index f2708479ccf994278ad1ab4665edc46672001e8a..59c992173fda6153c58722caae061b0e
protected void updateSwingTime() {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 1a6f4621190c9f3859c1ef6588718a8a555e026d..ebee036527eaef5e940dd4fec8e3c5dab12fac76 100644
+index afbe7fd926d20d6aef0807663c34838a7f63cd2b..4ecd7a33adf950f192bd14028d8dafdf285a2eb6 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -168,6 +168,41 @@ public class CraftWorld extends CraftRegionAccessor implements World {
diff --git a/patches/unapplied/server/1030-Add-Offline-PDC-API.patch b/patches/server/1028-Add-Offline-PDC-API.patch
index f1513955cb..f1513955cb 100644
--- a/patches/unapplied/server/1030-Add-Offline-PDC-API.patch
+++ b/patches/server/1028-Add-Offline-PDC-API.patch
diff --git a/patches/unapplied/server/1031-Add-AnvilView-bypassEnchantmentLevelRestriction.patch b/patches/server/1029-Add-AnvilView-bypassEnchantmentLevelRestriction.patch
index 7084bf9f8d..7084bf9f8d 100644
--- a/patches/unapplied/server/1031-Add-AnvilView-bypassEnchantmentLevelRestriction.patch
+++ b/patches/server/1029-Add-AnvilView-bypassEnchantmentLevelRestriction.patch
diff --git a/patches/unapplied/server/1032-Add-proper-async-player-disconnections.patch b/patches/server/1030-Add-proper-async-player-disconnections.patch
index eff84b6f89..c4b7ef0d40 100644
--- a/patches/unapplied/server/1032-Add-proper-async-player-disconnections.patch
+++ b/patches/server/1030-Add-proper-async-player-disconnections.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Add proper async player disconnections
Blocking can cause performance problems
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
-index 36624d3dc7e3f2a64f88b01c5e906018fcee0015..d18af548fa6e979267347443b61efc58b271dfcf 100644
+index 9d6738b431867836c5e64bc13e887fd4af4627e1..e300293ba64a8ac54cc9c5348ecc9f3ed2d27e19 100644
--- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java
@@ -844,6 +844,14 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
@@ -74,10 +74,10 @@ index fc242acade3ff06c9213428cde103cf078216382..b0bc66dc7248aae691dcab68b925b52a
return this.server.isSingleplayerOwner(this.playerProfile());
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6..e3458038d56b7133f991a5198db26398a299bf30 100644
+index f6d3baf1da22a474ccc9be80781091405362d7db..f0200e2e68e3ec88b82d337a76e22a6e80419b6f 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -769,7 +769,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -767,7 +767,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - AsyncTabCompleteEvent; run this async
// CraftBukkit start
if (!this.tabSpamThrottler.isIncrementAndUnderThreshold() && !this.server.getPlayerList().isOp(this.player.getGameProfile()) && !this.server.isSingleplayerOwner(this.player.getGameProfile())) { // Paper - configurable tab spam limits
@@ -86,7 +86,7 @@ index fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6..e3458038d56b7133f991a5198db26398
return;
}
// CraftBukkit end
-@@ -781,7 +781,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -779,7 +779,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// Paper start
final int index;
if (packet.getCommand().length() > 64 && ((index = packet.getCommand().indexOf(' ')) == -1 || index >= 64)) {
@@ -95,7 +95,7 @@ index fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6..e3458038d56b7133f991a5198db26398
return;
}
// Paper end
-@@ -1171,14 +1171,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1224,14 +1224,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
if (byteTotal > byteAllowed) {
ServerGamePacketListenerImpl.LOGGER.warn("{} tried to send a book too large. Book size: {} - Allowed: {} - Pages: {}", this.player.getScoreboardName(), byteTotal, byteAllowed, pageList.size());
@@ -112,7 +112,7 @@ index fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6..e3458038d56b7133f991a5198db26398
return;
}
this.lastBookTick = MinecraftServer.currentTick;
-@@ -2305,7 +2305,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2364,7 +2364,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
private void tryHandleChat(String s, Runnable runnable, boolean sync) { // CraftBukkit
if (ServerGamePacketListenerImpl.isChatMessageIllegal(s)) {
@@ -121,7 +121,7 @@ index fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6..e3458038d56b7133f991a5198db26398
} else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales
this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false));
} else {
-@@ -2328,7 +2328,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2387,7 +2387,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
if (optional.isEmpty()) {
ServerGamePacketListenerImpl.LOGGER.warn("Failed to validate message acknowledgements from {}", this.player.getName().getString());
@@ -130,7 +130,7 @@ index fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6..e3458038d56b7133f991a5198db26398
}
return optional;
-@@ -2499,7 +2499,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2558,7 +2558,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// this.chatSpamThrottler.increment();
if (!this.chatSpamThrottler.isIncrementAndUnderThreshold() && !this.server.getPlayerList().isOp(this.player.getGameProfile()) && !this.server.isSingleplayerOwner(this.player.getGameProfile())) {
// CraftBukkit end
@@ -139,7 +139,7 @@ index fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6..e3458038d56b7133f991a5198db26398
}
}
-@@ -2511,7 +2511,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2570,7 +2570,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
synchronized (this.lastSeenMessages) {
if (!this.lastSeenMessages.applyOffset(packet.offset())) {
ServerGamePacketListenerImpl.LOGGER.warn("Failed to validate message acknowledgements from {}", this.player.getName().getString());
@@ -148,7 +148,7 @@ index fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6..e3458038d56b7133f991a5198db26398
}
}
-@@ -2659,7 +2659,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2723,7 +2723,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
if (i > 4096) {
@@ -157,7 +157,7 @@ index fc64c09f466e6a0fb3eb6aa47f28f90748e81ce6..e3458038d56b7133f991a5198db26398
}
}
-@@ -3268,7 +3268,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -3334,7 +3334,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// Paper start - auto recipe limit
if (!org.bukkit.Bukkit.isPrimaryThread()) {
if (!this.recipeSpamPackets.isIncrementAndUnderThreshold()) {
diff --git a/patches/unapplied/server/1033-DataComponent-API.patch b/patches/server/1031-DataComponent-API.patch
index baa3aaef48..abee23ad89 100644
--- a/patches/unapplied/server/1033-DataComponent-API.patch
+++ b/patches/server/1031-DataComponent-API.patch
@@ -963,12 +963,13 @@ index 0000000000000000000000000000000000000000..0bc2bad71d6945ca24f37008effc903a
+}
diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperCustomModelData.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperCustomModelData.java
new file mode 100644
-index 0000000000000000000000000000000000000000..8373d882e8b927e74961d5ed2d548b2db6dacdaf
+index 0000000000000000000000000000000000000000..f361f026acba97efb0482d4d792fefb33a4faf47
--- /dev/null
+++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperCustomModelData.java
-@@ -0,0 +1,18 @@
+@@ -0,0 +1,34 @@
+package io.papermc.paper.datacomponent.item;
+
++import java.util.List;
+import org.bukkit.craftbukkit.util.Handleable;
+
+public record PaperCustomModelData(
@@ -981,8 +982,23 @@ index 0000000000000000000000000000000000000000..8373d882e8b927e74961d5ed2d548b2d
+ }
+
+ @Override
-+ public int id() {
-+ return this.impl.value();
++ public List<Float> floats() {
++ return this.impl.floats();
++ }
++
++ @Override
++ public List<Boolean> flags() {
++ return this.impl.flags();
++ }
++
++ @Override
++ public List<String> strings() {
++ return this.impl.strings();
++ }
++
++ @Override
++ public List<Integer> colors() {
++ return this.impl.colors();
+ }
+}
diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperDamageResistant.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperDamageResistant.java