diff --git a/patches/api/0001-Convert-project-to-Gradle.patch b/patches/api/0001-Convert-project-to-Gradle.patch
index 15069c214..edcb5d835 100644
--- a/patches/api/0001-Convert-project-to-Gradle.patch
+++ b/patches/api/0001-Convert-project-to-Gradle.patch
@@ -8,7 +8,7 @@ apply if there are changes made to it from upstream - thus notifying us
that changes were made.
diff --git a/.gitignore b/.gitignore
-index e431e3435737e28394d81b56568a08b3c3148b9b..b23bde3b5e881f146539a307d0a59f2177b6a036 100644
+index 11038da2e071699d6561a331565db0c8d7850d0e..317acfec5894101294a55abff61819431e6a5e65 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
@@ -17,7 +17,7 @@ index e431e3435737e28394d81b56568a08b3c3148b9b..b23bde3b5e881f146539a307d0a59f21
# Eclipse stuff
/.classpath
/.project
-@@ -30,3 +32,7 @@
+@@ -31,3 +33,7 @@
*.ipr
*.iws
.idea/
diff --git a/patches/api/0003-Annotation-Test-changes.patch b/patches/api/0003-Annotation-Test-changes.patch
index cc18011b3..404635ede 100644
--- a/patches/api/0003-Annotation-Test-changes.patch
+++ b/patches/api/0003-Annotation-Test-changes.patch
@@ -8,7 +8,7 @@ Subject: [PATCH] Annotation Test changes
- Add excludes for classes which don't pass
diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java
-index 0c7377247ad9251c9e498039511e7220370aba2d..c6a8a37a933cfc5a5885602a8a70fdda8fb6aa10 100644
+index 4ac3dd977e75cd8464163351d306e037ee32cb48..1a71bb8861150c1add6446aa2fad0f7035dd6873 100644
--- a/src/test/java/org/bukkit/AnnotationTest.java
+++ b/src/test/java/org/bukkit/AnnotationTest.java
@@ -40,7 +40,17 @@ public class AnnotationTest {
@@ -57,7 +57,7 @@ index 0c7377247ad9251c9e498039511e7220370aba2d..c6a8a37a933cfc5a5885602a8a70fdda
+ dancing: // Paper
for (int i = 0; i < paramTypes.length; i++) {
- if (mustBeAnnotated(paramTypes[i]) && !isWellAnnotated(method.invisibleParameterAnnotations == null ? null : method.invisibleParameterAnnotations[i])) {
+ if (mustBeAnnotated(paramTypes[i]) ^ isWellAnnotated(method.invisibleParameterAnnotations == null ? null : method.invisibleParameterAnnotations[i])) {
+ // Paper start
+ if (method.invisibleTypeAnnotations != null) {
+ for (final org.objectweb.asm.tree.TypeAnnotationNode invisibleTypeAnnotation : method.invisibleTypeAnnotations) {
diff --git a/patches/api/0005-Adventure.patch b/patches/api/0005-Adventure.patch
index dd030976c..210a9cbf3 100644
--- a/patches/api/0005-Adventure.patch
+++ b/patches/api/0005-Adventure.patch
@@ -1334,7 +1334,7 @@ index efb97712cc9dc7c1e12a59f5b94e4f2ad7c6b7d8..3024468af4c073324e536c1cb26beffb
return warning == null || warning.value();
}
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 7e0c6c57976a00f989fe4e5dce83cd986b460e72..1d3bb553c944f5920e81e295f8cd5b7194d37aac 100644
+index 3a5251cb3b45f50d1ea4ab2c9b430e990cdfc8d5..425cad3b6c365560f6614767d763ad61a92e6722 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -43,7 +43,7 @@ import org.jetbrains.annotations.Nullable;
@@ -1839,10 +1839,10 @@ index 259d878ddd4e4e2b289c0de0325ca8fd6203c484..a829779ac56a271cad463806984991b4
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf8af6d694 100644
+index a060b8b022c600e43aaef79a2942a384d47b300d..5a2c072c95cad8485e281e080e5e606194b05b30 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -37,7 +37,28 @@ import org.jetbrains.annotations.Nullable;
+@@ -39,7 +39,28 @@ import org.jetbrains.annotations.Nullable;
/**
* Represents a player, connected or not
*/
@@ -1872,7 +1872,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
/**
* {@inheritDoc}
-@@ -54,7 +75,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -56,7 +77,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* places defined by plugins.
*
* @return the friendly name
@@ -1882,7 +1882,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
@NotNull
public String getDisplayName();
-@@ -66,15 +89,50 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -68,15 +91,50 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* places defined by plugins.
*
* @param name The new display name.
@@ -1933,7 +1933,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public String getPlayerListName();
/**
-@@ -83,14 +141,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -85,14 +143,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* If the value is null, the name will be identical to {@link #getName()}.
*
* @param name new player list name
@@ -1952,7 +1952,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
@Nullable
public String getPlayerListHeader();
-@@ -98,7 +160,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -100,7 +162,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Gets the currently displayed player list footer for this player.
*
* @return player list header or null
@@ -1962,7 +1962,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
@Nullable
public String getPlayerListFooter();
-@@ -106,14 +170,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -108,14 +172,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Sets the currently displayed player list header for this player.
*
* @param header player list header, null for empty
@@ -1981,7 +1981,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void setPlayerListFooter(@Nullable String footer);
/**
-@@ -122,7 +190,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -124,7 +192,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param header player list header, null for empty
* @param footer player list footer, null for empty
@@ -1991,7 +1991,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void setPlayerListHeaderFooter(@Nullable String header, @Nullable String footer);
/**
-@@ -160,9 +230,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -162,9 +232,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Kicks player with custom kick message.
*
* @param message kick message
@@ -2017,7 +2017,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
/**
* Says a message (or runs a command).
*
-@@ -514,6 +600,90 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -538,6 +624,90 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendEquipmentChange(@NotNull LivingEntity entity, @NotNull EquipmentSlot slot, @NotNull ItemStack item);
@@ -2108,7 +2108,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
/**
* Send a sign change. This fakes a sign change packet for a user at
* a certain location. This will not actually change the world in any way.
-@@ -528,7 +698,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -552,7 +722,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param lines the new text on the sign or null to clear it
* @throws IllegalArgumentException if location is null
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
@@ -2118,7 +2118,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void sendSignChange(@NotNull Location loc, @Nullable String[] lines) throws IllegalArgumentException;
/**
-@@ -547,7 +719,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -571,7 +743,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException if location is null
* @throws IllegalArgumentException if dyeColor is null
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
@@ -2128,7 +2128,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void sendSignChange(@NotNull Location loc, @Nullable String[] lines, @NotNull DyeColor dyeColor) throws IllegalArgumentException;
/**
-@@ -567,7 +741,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -591,7 +765,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException if location is null
* @throws IllegalArgumentException if dyeColor is null
* @throws IllegalArgumentException if lines is non-null and has a length less than 4
@@ -2138,7 +2138,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void sendSignChange(@NotNull Location loc, @Nullable String[] lines, @NotNull DyeColor dyeColor, boolean hasGlowingText) throws IllegalArgumentException;
/**
-@@ -1042,6 +1218,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1023,6 +1199,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* pack correctly.
*
*
@@ -2146,7 +2146,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
* @param url The URL from which the client will download the resource
* pack. The string must contain only US-ASCII characters and should
* be encoded as per RFC 1738.
-@@ -1055,8 +1232,57 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1079,8 +1256,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
* long.
*/
@@ -2154,6 +2154,25 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void setResourcePack(@NotNull String url, @Nullable byte[] hash, @Nullable String prompt);
+ // Paper start
+ /**
+ * Request that the player's client download and switch resource packs.
+ *
+@@ -1116,6 +1295,54 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+ * @param hash The sha1 hash sum of the resource pack file which is used
+ * to apply a cached version of the pack directly without downloading
+ * if it is available. Hast to be 20 bytes long!
++ * @param prompt The optional custom prompt message to be shown to client.
++ * @throws IllegalArgumentException Thrown if the URL is null.
++ * @throws IllegalArgumentException Thrown if the URL is too long. The
++ * length restriction is an implementation specific arbitrary value.
++ * @throws IllegalArgumentException Thrown if the hash is not 20 bytes
++ * long.
++ */
++ default void setResourcePack(@NotNull String url, byte @Nullable [] hash, net.kyori.adventure.text.@Nullable Component prompt) {
++ this.setResourcePack(url, hash, prompt, false);
++ }
++ // Paper end
++
+ /**
+ * Request that the player's client download and switch resource packs.
+ *
@@ -2183,36 +2202,17 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
+ * pack correctly.
+ *
+ *
++ * @deprecated in favour of {@link #setResourcePack(String, byte[], Component, boolean)}
+ * @param url The URL from which the client will download the resource
+ * pack. The string must contain only US-ASCII characters and should
+ * be encoded as per RFC 1738.
+ * @param hash The sha1 hash sum of the resource pack file which is used
+ * to apply a cached version of the pack directly without downloading
+ * if it is available. Hast to be 20 bytes long!
-+ * @param prompt The optional custom prompt message to be shown to client.
-+ * @throws IllegalArgumentException Thrown if the URL is null.
-+ * @throws IllegalArgumentException Thrown if the URL is too long. The
-+ * length restriction is an implementation specific arbitrary value.
-+ * @throws IllegalArgumentException Thrown if the hash is not 20 bytes
-+ * long.
-+ */
-+ default void setResourcePack(@NotNull String url, byte @Nullable [] hash, net.kyori.adventure.text.@Nullable Component prompt) {
-+ this.setResourcePack(url, hash, prompt, false);
-+ }
-+ // Paper end
-+
- /**
- * Request that the player's client download and switch resource packs.
- *
-@@ -1131,6 +1357,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
- * pack correctly.
- *
- *
-+ * @deprecated in favour of {@link #setResourcePack(String, byte[], Component, boolean)}
- * @param url The URL from which the client will download the resource
- * pack. The string must contain only US-ASCII characters and should
- * be encoded as per RFC 1738.
-@@ -1146,8 +1373,57 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+ * @param force If true, the client will be disconnected from the server
+ * when it declines to use the resource pack.
+ * @throws IllegalArgumentException Thrown if the URL is null.
+@@ -1170,8 +1397,57 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException Thrown if the hash is not 20 bytes
* long.
*/
@@ -2270,7 +2270,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
/**
* Gets the Scoreboard displayed to this player
*
-@@ -1263,7 +1539,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1287,7 +1563,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param title Title text
* @param subtitle Subtitle text
@@ -2279,7 +2279,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
*/
@Deprecated
public void sendTitle(@Nullable String title, @Nullable String subtitle);
-@@ -1282,7 +1558,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1306,7 +1582,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param fadeIn time in ticks for titles to fade in. Defaults to 10.
* @param stay time in ticks for titles to stay. Defaults to 70.
* @param fadeOut time in ticks for titles to fade out. Defaults to 20.
@@ -2289,7 +2289,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void sendTitle(@Nullable String title, @Nullable String subtitle, int fadeIn, int stay, int fadeOut);
/**
-@@ -1509,6 +1787,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1533,6 +1811,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public int getClientViewDistance();
@@ -2304,7 +2304,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
/**
* Gets the player's estimated ping in milliseconds.
*
-@@ -1534,8 +1820,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1558,8 +1844,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* they wish.
*
* @return the player's locale
@@ -2315,7 +2315,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public String getLocale();
/**
-@@ -1577,6 +1865,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1601,6 +1889,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public boolean isAllowingServerListings();
@@ -2330,7 +2330,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
// Spigot start
public class Spigot extends Entity.Spigot {
-@@ -1631,11 +1927,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1655,11 +1951,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
throw new UnsupportedOperationException("Not supported yet.");
}
@@ -2344,7 +2344,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
@Override
public void sendMessage(@NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
throw new UnsupportedOperationException("Not supported yet.");
-@@ -1646,7 +1944,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1670,7 +1968,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param position the screen position
* @param component the components to send
@@ -2354,7 +2354,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @NotNull net.md_5.bungee.api.chat.BaseComponent component) {
throw new UnsupportedOperationException("Not supported yet.");
}
-@@ -1656,7 +1956,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1680,7 +1980,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param position the screen position
* @param components the components to send
@@ -2364,7 +2364,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
throw new UnsupportedOperationException("Not supported yet.");
}
-@@ -1667,7 +1969,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1691,7 +1993,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param position the screen position
* @param sender the sender of the message
* @param component the components to send
@@ -2374,7 +2374,7 @@ index c652660f8e053b066d0d40a89ab6f1b86655f71b..2c5fc4f62b2c16de1f4f94f52aae5baf
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @Nullable UUID sender, @NotNull net.md_5.bungee.api.chat.BaseComponent component) {
throw new UnsupportedOperationException("Not supported yet.");
}
-@@ -1678,7 +1982,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1702,7 +2006,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param position the screen position
* @param sender the sender of the message
* @param components the components to send
@@ -4577,7 +4577,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..47b10df619ad2520b9bb673e2220f363
/**
diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java
-index c6a8a37a933cfc5a5885602a8a70fdda8fb6aa10..93498307004b68b934fbfa1aeb3aaf0e97cbdac7 100644
+index 1a71bb8861150c1add6446aa2fad0f7035dd6873..8275a5d7e1de39a5171e254f449a42c6defd3445 100644
--- a/src/test/java/org/bukkit/AnnotationTest.java
+++ b/src/test/java/org/bukkit/AnnotationTest.java
@@ -26,6 +26,12 @@ import org.objectweb.asm.tree.ParameterNode;
diff --git a/patches/api/0007-Timings-v2.patch b/patches/api/0007-Timings-v2.patch
index a41f390b5..0db18c6dd 100644
--- a/patches/api/0007-Timings-v2.patch
+++ b/patches/api/0007-Timings-v2.patch
@@ -3391,10 +3391,10 @@ index 516d7fc7812aac343782861d0d567f54aa578c2a..00000000000000000000000000000000
- // Spigot end
-}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 2c5fc4f62b2c16de1f4f94f52aae5baf8af6d694..fd1056d2ef74e380e586f0eace4d0760fb564334 100644
+index 5a2c072c95cad8485e281e080e5e606194b05b30..3f9236ce97adb4b724e18a5f05497681bed5d4d5 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1987,7 +1987,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2011,7 +2011,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Deprecated // Paper
public void sendMessage(@NotNull net.md_5.bungee.api.ChatMessageType position, @Nullable UUID sender, @NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
throw new UnsupportedOperationException("Not supported yet.");
diff --git a/patches/api/0009-Player-affects-spawning-API.patch b/patches/api/0009-Player-affects-spawning-API.patch
index 8ee11af33..59f6484c7 100644
--- a/patches/api/0009-Player-affects-spawning-API.patch
+++ b/patches/api/0009-Player-affects-spawning-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Player affects spawning API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index fd1056d2ef74e380e586f0eace4d0760fb564334..7a6f43bf88452d0cfa516637975cf4dc871e5e06 100644
+index 3f9236ce97adb4b724e18a5f05497681bed5d4d5..7c13de51561df662691a36ca1cc91ca7997d773a 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1826,6 +1826,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1850,6 +1850,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Deprecated // Paper
public String getLocale();
diff --git a/patches/api/0014-Add-view-distance-API.patch b/patches/api/0014-Add-view-distance-API.patch
index 933120ca5..f1d162267 100644
--- a/patches/api/0014-Add-view-distance-API.patch
+++ b/patches/api/0014-Add-view-distance-API.patch
@@ -8,7 +8,7 @@ Add per player no-tick, tick, and send view distances.
Also add send/no-tick view distance to World.
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 1d3bb553c944f5920e81e295f8cd5b7194d37aac..887b85849803cee22a41a701b43cdc9085ba0dc3 100644
+index 425cad3b6c365560f6614767d763ad61a92e6722..75a87b221cc0f6334c5283130a7b2bfdf4eedd03 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -2673,6 +2673,62 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
@@ -75,10 +75,10 @@ index 1d3bb553c944f5920e81e295f8cd5b7194d37aac..887b85849803cee22a41a701b43cdc90
public class Spigot {
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 7a6f43bf88452d0cfa516637975cf4dc871e5e06..0dc399e83610b73077e656887cc699b5527d201d 100644
+index 7c13de51561df662691a36ca1cc91ca7997d773a..292f7827df666c10d7b82aa9b1688bf3f0da5c7b 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1840,6 +1840,78 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1864,6 +1864,78 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param affects Whether the player can affect mob spawning
*/
public void setAffectsSpawning(boolean affects);
diff --git a/patches/api/0019-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch b/patches/api/0019-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
index 522978867..ddb12482a 100644
--- a/patches/api/0019-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
+++ b/patches/api/0019-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
@@ -76,10 +76,10 @@ index 2dac2c6e01b4f230750605ab1f49317927705c6b..1aed052ea337f2875b581064bd8e79d8
* Gets the name of the update folder. The update folder is used to safely
* update plugins at the right moment on a plugin load.
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 0dc399e83610b73077e656887cc699b5527d201d..ce011547908812764e4687f5e59fbc26dfd9b047 100644
+index 292f7827df666c10d7b82aa9b1688bf3f0da5c7b..b91c12089ba0723356ef2d3d1b8b0c66ca8850bf 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -754,6 +754,42 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -778,6 +778,42 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendMap(@NotNull MapView map);
diff --git a/patches/api/0023-Player-Tab-List-and-Title-APIs.patch b/patches/api/0023-Player-Tab-List-and-Title-APIs.patch
index 96d969d9c..c3924585b 100644
--- a/patches/api/0023-Player-Tab-List-and-Title-APIs.patch
+++ b/patches/api/0023-Player-Tab-List-and-Title-APIs.patch
@@ -432,18 +432,18 @@ index 0000000000000000000000000000000000000000..9e90c3df567a65b48a0b9341f784eb90
+ }
+}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index ce011547908812764e4687f5e59fbc26dfd9b047..d34b72dcc6e03a2337b8f06de9605586c40a0438 100644
+index b91c12089ba0723356ef2d3d1b8b0c66ca8850bf..74a3abef2ff1be11427558293e81f3b7fe9fff16 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2,6 +2,7 @@ package org.bukkit.entity;
-
+@@ -3,6 +3,7 @@ package org.bukkit.entity;
import java.net.InetSocketAddress;
+ import java.util.Collection;
import java.util.UUID;
+import com.destroystokyo.paper.Title; // Paper
import org.bukkit.DyeColor;
import org.bukkit.Effect;
import org.bukkit.GameMode;
-@@ -788,6 +789,131 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -812,6 +813,131 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
public default void sendMessage(net.md_5.bungee.api.ChatMessageType position, net.md_5.bungee.api.chat.BaseComponent... components) {
spigot().sendMessage(position, components);
}
diff --git a/patches/api/0025-Complete-resource-pack-API.patch b/patches/api/0025-Complete-resource-pack-API.patch
index d70976768..d7714d68d 100644
--- a/patches/api/0025-Complete-resource-pack-API.patch
+++ b/patches/api/0025-Complete-resource-pack-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Complete resource pack API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index d34b72dcc6e03a2337b8f06de9605586c40a0438..e334e7147098169c78f972acbf88757821baa790 100644
+index 74a3abef2ff1be11427558293e81f3b7fe9fff16..bc3fc130b38bb9e102ab6a95e6ca75d815ba4902 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1305,7 +1305,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1329,7 +1329,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException Thrown if the URL is null.
* @throws IllegalArgumentException Thrown if the URL is too long. The
* length restriction is an implementation specific arbitrary value.
@@ -18,7 +18,7 @@ index d34b72dcc6e03a2337b8f06de9605586c40a0438..e334e7147098169c78f972acbf887578
public void setResourcePack(@NotNull String url);
/**
-@@ -2121,6 +2123,124 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2145,6 +2147,124 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
default net.kyori.adventure.text.event.HoverEvent asHoverEvent(final @NotNull java.util.function.UnaryOperator op) {
return net.kyori.adventure.text.event.HoverEvent.showEntity(op.apply(net.kyori.adventure.text.event.HoverEvent.ShowEntity.of(this.getType().getKey(), this.getUniqueId(), this.displayName())));
}
diff --git a/patches/api/0045-Add-String-based-Action-Bar-API.patch b/patches/api/0045-Add-String-based-Action-Bar-API.patch
index 6311613fa..343e0ac46 100644
--- a/patches/api/0045-Add-String-based-Action-Bar-API.patch
+++ b/patches/api/0045-Add-String-based-Action-Bar-API.patch
@@ -5,18 +5,18 @@ Subject: [PATCH] Add String based Action Bar API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index e334e7147098169c78f972acbf88757821baa790..17c56b7d4dcac0738078101203fbef1716ed3157 100644
+index bc3fc130b38bb9e102ab6a95e6ca75d815ba4902..80910fcc46b62ee4974a659713a1a72b5b4c135b 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -3,6 +3,7 @@ package org.bukkit.entity;
- import java.net.InetSocketAddress;
+@@ -4,6 +4,7 @@ import java.net.InetSocketAddress;
+ import java.util.Collection;
import java.util.UUID;
import com.destroystokyo.paper.Title; // Paper
+import net.kyori.adventure.text.Component;
import org.bukkit.DyeColor;
import org.bukkit.Effect;
import org.bukkit.GameMode;
-@@ -756,6 +757,39 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -780,6 +781,39 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
public void sendMap(@NotNull MapView map);
// Paper start
@@ -56,7 +56,7 @@ index e334e7147098169c78f972acbf88757821baa790..17c56b7d4dcac0738078101203fbef17
/**
* Sends the component to the player
*
-@@ -783,9 +817,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -807,9 +841,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Sends an array of components as a single message to the specified screen position of this player
*
@@ -68,7 +68,7 @@ index e334e7147098169c78f972acbf88757821baa790..17c56b7d4dcac0738078101203fbef17
public default void sendMessage(net.md_5.bungee.api.ChatMessageType position, net.md_5.bungee.api.chat.BaseComponent... components) {
spigot().sendMessage(position, components);
}
-@@ -2312,6 +2348,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2336,6 +2372,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Sends the component to the specified screen position of this player
*
@@ -76,7 +76,7 @@ index e334e7147098169c78f972acbf88757821baa790..17c56b7d4dcac0738078101203fbef17
* @param position the screen position
* @param component the components to send
* @deprecated use {@code sendMessage} methods that accept {@link net.kyori.adventure.text.Component}
-@@ -2324,6 +2361,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2348,6 +2385,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Sends an array of components as a single message to the specified screen position of this player
*
diff --git a/patches/api/0054-Fix-upstream-javadocs.patch b/patches/api/0054-Fix-upstream-javadocs.patch
index 1ee6c866c..e5aab964c 100644
--- a/patches/api/0054-Fix-upstream-javadocs.patch
+++ b/patches/api/0054-Fix-upstream-javadocs.patch
@@ -106,7 +106,7 @@ index 652238659e0a6e0df11f2798773aea4fe7712360..9c57eda3b7af7026639afda9959bc5e5
* Returns the name of this player
*
diff --git a/src/main/java/org/bukkit/entity/Mob.java b/src/main/java/org/bukkit/entity/Mob.java
-index 6f117995c3ccf9182946c01a663cd8bef1804eb3..00266bf81b022a0f4b4f71061b82a8713b773320 100644
+index 2926fa6071bc7640cc10280b5c3962b0ce7686f1..4f63988848443aff55619bc12ef12c925642a3f9 100644
--- a/src/main/java/org/bukkit/entity/Mob.java
+++ b/src/main/java/org/bukkit/entity/Mob.java
@@ -9,6 +9,10 @@ import org.jetbrains.annotations.Nullable;
@@ -121,10 +121,10 @@ index 6f117995c3ccf9182946c01a663cd8bef1804eb3..00266bf81b022a0f4b4f71061b82a871
* Instructs this Mob to set the specified LivingEntity as its target.
*
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 17c56b7d4dcac0738078101203fbef1716ed3157..f9ecac9a2c45e1d428277e43f9cf1a93a53dd84f 100644
+index 80910fcc46b62ee4974a659713a1a72b5b4c135b..50faa513411cdb611ae228f0c07a7dfe15807b85 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -310,15 +310,15 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -312,15 +312,15 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Saves the players current location, health, inventory, motion, and
@@ -144,7 +144,7 @@ index 17c56b7d4dcac0738078101203fbef1716ed3157..f9ecac9a2c45e1d428277e43f9cf1a93
*
* Note: This will overwrite the players current inventory, health,
* motion, etc, with the state from the saved dat file.
-@@ -774,7 +774,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -798,7 +798,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* Use supplied alternative character to the section symbol to represent legacy color codes.
*
@@ -187,41 +187,6 @@ index d51d2ec1d04d9ea8a25a70d0d856f2355ebfcb4a..7ecff9fcee19fc94be784474fea620e5
*/
EATING,
/**
-diff --git a/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java b/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java
-index f72dd3ccf09c024213548e59ee1c13ca2cf48808..2f54cb77c991211e0e4b9fa37dc64888804a2a07 100644
---- a/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java
-+++ b/src/main/java/org/bukkit/event/player/PlayerArmorStandManipulateEvent.java
-@@ -26,11 +26,11 @@ public class PlayerArmorStandManipulateEvent extends PlayerInteractEntityEvent {
- }
-
- /**
-- * Returns the item held by the player. If this Item is null and the armor stand Item is also null,
-+ * Returns the item held by the player. If this Item is air and the armor stand Item is also air,
- * there will be no transaction between the player and the armor stand.
-- * If the Player's item is null, but the armor stand item is not then the player will obtain the armor stand item.
-- * In the case that the Player's item is not null, but the armor stand item is null, the players item will be placed on the armor stand.
-- * If both items are not null, the items will be swapped.
-+ * If the Player's item is air, but the armor stand item is not then the player will obtain the armor stand item.
-+ * In the case that the Player's item is not air, but the armor stand item is air, the players item will be placed on the armor stand.
-+ * If both items are not air, the items will be swapped.
- * In the case that the event is cancelled the original items will remain the same.
- * @return the item held by the player.
- */
-@@ -41,10 +41,10 @@ public class PlayerArmorStandManipulateEvent extends PlayerInteractEntityEvent {
-
- /**
- * Returns the item held by the armor stand.
-- * If this Item is null and the player's Item is also null, there will be no transaction between the player and the armor stand.
-- * If the Player's item is null, but the armor stand item is not then the player will obtain the armor stand item.
-- * In the case that the Player's item is not null, but the armor stand item is null, the players item will be placed on the armor stand.
-- * If both items are not null, the items will be swapped.
-+ * If this Item is air and the player's Item is also air, there will be no transaction between the player and the armor stand.
-+ * If the Player's item is air, but the armor stand item is not then the player will obtain the armor stand item.
-+ * In the case that the Player's item is not air, but the armor stand item is air, the players item will be placed on the armor stand.
-+ * If both items are not air, the items will be swapped.
- * In the case that the event is cancelled the original items will remain the same.
- * @return the item held by the armor stand.
- */
diff --git a/src/main/java/org/bukkit/inventory/EntityEquipment.java b/src/main/java/org/bukkit/inventory/EntityEquipment.java
index d5b50a4a954fed35d37f03f1a277cc173ca106df..a91fa5386afd7a1137adb921ad5adb798604772f 100644
--- a/src/main/java/org/bukkit/inventory/EntityEquipment.java
diff --git a/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch b/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch
index 34c3a7348..1acdee557 100644
--- a/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch
+++ b/patches/api/0076-Expose-client-protocol-version-and-virtual-host.patch
@@ -57,10 +57,10 @@ index 0000000000000000000000000000000000000000..7b2af1bd72dfbcf4e962a982940fc49b
+
+}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 9d23a4019814f4662f4ab9a47b3fceff656c5245..f9f708bda24751353dd61951418731a2eea5abb0 100644
+index 50faa513411cdb611ae228f0c07a7dfe15807b85..1f29ed50c981fa262790a070722bbe9fecac5b02 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -39,7 +39,7 @@ import org.jetbrains.annotations.Nullable;
+@@ -41,7 +41,7 @@ import org.jetbrains.annotations.Nullable;
/**
* Represents a player, connected or not
*/
diff --git a/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch b/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch
index 237cd00d8..2115648f1 100644
--- a/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch
+++ b/patches/api/0080-Ability-to-apply-mending-to-XP-API.patch
@@ -10,10 +10,10 @@ of giving the player experience points.
Both an API To standalone mend, and apply mending logic to .giveExp has been added.
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 13b5ab85a89347f8c33ab672bc352f6e425a64af..d3d3cfc0cf43f2b1f2d1937ef1a924b51f8cbde5 100644
+index 1f29ed50c981fa262790a070722bbe9fecac5b02..f42ef55662b8cecd7383ae10424364da97c54453 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1040,12 +1040,33 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1064,12 +1064,33 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void resetPlayerWeather();
diff --git a/patches/api/0091-Player.setPlayerProfile-API.patch b/patches/api/0091-Player.setPlayerProfile-API.patch
index 0bb7394d4..a8fad2d70 100644
--- a/patches/api/0091-Player.setPlayerProfile-API.patch
+++ b/patches/api/0091-Player.setPlayerProfile-API.patch
@@ -80,10 +80,10 @@ index fab39e4fc595c022da27e87e27bd168939e54381..e90056341407f58ff6ce2d9b80c8f3f6
/**
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index d3d3cfc0cf43f2b1f2d1937ef1a924b51f8cbde5..1d3387716f3e4e11155d79f62a759d8c59db84cd 100644
+index f42ef55662b8cecd7383ae10424364da97c54453..d55104146a7a4668aa73ee0bf6f084471e8b85c2 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2298,6 +2298,20 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2322,6 +2322,20 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* was {@link org.bukkit.event.player.PlayerResourcePackStatusEvent.Status#SUCCESSFULLY_LOADED}
*/
boolean hasResourcePack();
diff --git a/patches/api/0094-Add-openSign-method-to-HumanEntity.patch b/patches/api/0094-Add-openSign-method-to-HumanEntity.patch
index 0ea0d1279..2b6b38993 100644
--- a/patches/api/0094-Add-openSign-method-to-HumanEntity.patch
+++ b/patches/api/0094-Add-openSign-method-to-HumanEntity.patch
@@ -24,10 +24,10 @@ index be3eaadbc768a306da68a15abcaa7a5d3ec760c7..13b74e942012169611f2791f8b4493d0
/**
* Make the entity drop the item in their hand.
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 1d3387716f3e4e11155d79f62a759d8c59db84cd..4cc2be70758e2b5b9ea195a4a7f6cd5a7b735149 100644
+index d55104146a7a4668aa73ee0bf6f084471e8b85c2..104171d7a75abf5c3ba5903c1fba4ca7a85369ae 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2153,7 +2153,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2177,7 +2177,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Open a Sign for editing by the Player.
*
diff --git a/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch b/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch
index bc4077d50..d5fa90406 100644
--- a/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch
+++ b/patches/api/0095-Add-Ban-Methods-to-Player-Objects.patch
@@ -74,10 +74,10 @@ index c5eed3234a8c04bfa9d707685746fc2b40ec8bfc..93f86bb30725dff5dbfcccf15012ffd1
/**
* Checks if this player is whitelisted or not
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 4cc2be70758e2b5b9ea195a4a7f6cd5a7b735149..ece01269623d3114da78b01aa1e3b7e859533dac 100644
+index 104171d7a75abf5c3ba5903c1fba4ca7a85369ae..d3c3347fd08fd6e05d5b269aa50fa083c555a7e3 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -757,6 +757,162 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -781,6 +781,162 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
public void sendMap(@NotNull MapView map);
// Paper start
diff --git a/patches/api/0148-Expose-attack-cooldown-methods-for-Player.patch b/patches/api/0148-Expose-attack-cooldown-methods-for-Player.patch
index 6812b8027..c7c1cb413 100644
--- a/patches/api/0148-Expose-attack-cooldown-methods-for-Player.patch
+++ b/patches/api/0148-Expose-attack-cooldown-methods-for-Player.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose attack cooldown methods for Player
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index ece01269623d3114da78b01aa1e3b7e859533dac..6827d0b590c4bc7117eac6e4a64606864f793f3d 100644
+index d3c3347fd08fd6e05d5b269aa50fa083c555a7e3..90982225ad78d8005961895102800b6a20bb42a0 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2468,6 +2468,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2492,6 +2492,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param profile The new profile to use
*/
void setPlayerProfile(@NotNull com.destroystokyo.paper.profile.PlayerProfile profile);
diff --git a/patches/api/0156-Material-API-additions.patch b/patches/api/0156-Material-API-additions.patch
index 8279b57ea..9f13508f0 100644
--- a/patches/api/0156-Material-API-additions.patch
+++ b/patches/api/0156-Material-API-additions.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Material API additions
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index 8314acc3cacb9a0da91097f1615868e663baceb2..e995480855e113d1f5a6f6b4972795005b9d9ed0 100644
+index 47d14a334c0f8d0918a2f08d5bf54f82370aaf44..666ed1075dad7c233c450f033d2309c748a2be26 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
-@@ -108,6 +108,7 @@ import org.jetbrains.annotations.Nullable;
+@@ -109,6 +109,7 @@ import org.jetbrains.annotations.Nullable;
/**
* An enum of all material IDs accepted by the official server and client
*/
@@ -16,7 +16,7 @@ index 8314acc3cacb9a0da91097f1615868e663baceb2..e995480855e113d1f5a6f6b497279500
public enum Material implements Keyed {
//
AIR(9648, 0),
-@@ -4112,6 +4113,22 @@ public enum Material implements Keyed {
+@@ -4113,6 +4114,22 @@ public enum Material implements Keyed {
}
}
diff --git a/patches/api/0176-Fix-Spigot-annotation-mistakes.patch b/patches/api/0176-Fix-Spigot-annotation-mistakes.patch
index 6b915f657..cab4daf9d 100644
--- a/patches/api/0176-Fix-Spigot-annotation-mistakes.patch
+++ b/patches/api/0176-Fix-Spigot-annotation-mistakes.patch
@@ -79,10 +79,10 @@ index 57cb548683f7b2972c998afd34176952426f8b47..d4c87bfed81b2d73919705912f59fab0
if (this.world == null) {
return null;
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index e995480855e113d1f5a6f6b4972795005b9d9ed0..f3e50dee6cf453d6621dcdbef0047335147f4d0c 100644
+index 666ed1075dad7c233c450f033d2309c748a2be26..6eb0b9ba2b7ad5faba31220483c424203802e1d3 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
-@@ -4142,11 +4142,11 @@ public enum Material implements Keyed {
+@@ -4143,11 +4143,11 @@ public enum Material implements Keyed {
}
/**
@@ -96,7 +96,7 @@ index e995480855e113d1f5a6f6b4972795005b9d9ed0..f3e50dee6cf453d6621dcdbef0047335
public boolean isLegacy() {
return legacy;
}
-@@ -4217,8 +4217,10 @@ public enum Material implements Keyed {
+@@ -4218,8 +4218,10 @@ public enum Material implements Keyed {
* Gets the MaterialData class associated with this Material
*
* @return MaterialData associated with this Material
@@ -196,7 +196,7 @@ index f465ea001c190e10eb99db818559d302e5512e99..567f560d145dea6fc724069917549615
public @interface UndefinedNullability {
diff --git a/src/main/java/org/bukkit/Vibration.java b/src/main/java/org/bukkit/Vibration.java
-index 8d568d21fcbf706f55cda087bd7222ac60889c0a..209a302c3a2ed333780ed760314a6ed352fc0767 100644
+index e455eb21abf121dc6ff10ff8a13dd06f67096a8f..bbc01e7c192ae6689c301670047ff114306c57cb 100644
--- a/src/main/java/org/bukkit/Vibration.java
+++ b/src/main/java/org/bukkit/Vibration.java
@@ -13,6 +13,14 @@ public class Vibration {
@@ -211,7 +211,7 @@ index 8d568d21fcbf706f55cda087bd7222ac60889c0a..209a302c3a2ed333780ed760314a6ed3
+ }
+
+ @Deprecated(forRemoval = true) // Paper end
- public Vibration(@NotNull Location origin, @NotNull Destination destination, @NotNull int arrivalTime) {
+ public Vibration(@NotNull Location origin, @NotNull Destination destination, int arrivalTime) {
this.origin = origin;
this.destination = destination;
@@ -22,9 +30,11 @@ public class Vibration {
@@ -227,7 +227,7 @@ index 8d568d21fcbf706f55cda087bd7222ac60889c0a..209a302c3a2ed333780ed760314a6ed3
return origin;
}
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
-index 8f7536e5ef73328cb69f7214956aac582a7d6f24..7358c9148853d4b5b35998094838156231497747 100644
+index 24a14005cb9c2fe7e97ba0fbd948c0c1110c52ce..891b25c84f6cc86ac3ccf61eca1d4398f31ba6b5 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -430,9 +430,8 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
@@ -341,10 +341,10 @@ index 95c79c5fa0c4e30201f887da6467ce5f81c8a255..7f9c4d4b430a3f0276461346ff2621ba
/**
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 6827d0b590c4bc7117eac6e4a64606864f793f3d..0aa71faaa3f2afc29a518657bf1515cb70a86ed2 100644
+index 90982225ad78d8005961895102800b6a20bb42a0..fc8dd3af9fcb083b483da19a80234d668c2fcffc 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1375,9 +1375,8 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1399,9 +1399,8 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param plugin Plugin that wants to hide the entity
* @param entity Entity to hide
@@ -355,7 +355,7 @@ index 6827d0b590c4bc7117eac6e4a64606864f793f3d..0aa71faaa3f2afc29a518657bf1515cb
public void hideEntity(@NotNull Plugin plugin, @NotNull Entity entity);
/**
-@@ -1387,9 +1386,8 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1411,9 +1410,8 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*
* @param plugin Plugin that wants to show the entity
* @param entity Entity to show
@@ -366,7 +366,7 @@ index 6827d0b590c4bc7117eac6e4a64606864f793f3d..0aa71faaa3f2afc29a518657bf1515cb
public void showEntity(@NotNull Plugin plugin, @NotNull Entity entity);
/**
-@@ -1398,9 +1396,8 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1422,9 +1420,8 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param entity Entity to check
* @return True if the provided entity is not being hidden from this
* player
diff --git a/patches/api/0195-Add-Player-Client-Options-API.patch b/patches/api/0195-Add-Player-Client-Options-API.patch
index 0bd8071d1..86a6b786c 100644
--- a/patches/api/0195-Add-Player-Client-Options-API.patch
+++ b/patches/api/0195-Add-Player-Client-Options-API.patch
@@ -193,18 +193,18 @@ index 0000000000000000000000000000000000000000..f7f171c4ee0b8339b2f8fbe82442d65f
+ }
+}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 0aa71faaa3f2afc29a518657bf1515cb70a86ed2..f870a20de42f17dd020057365901fb62afccebbe 100644
+index fc8dd3af9fcb083b483da19a80234d668c2fcffc..5a84c4c5644f5d82896c693939ddc7d30a69cc97 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2,6 +2,7 @@ package org.bukkit.entity;
-
+@@ -3,6 +3,7 @@ package org.bukkit.entity;
import java.net.InetSocketAddress;
+ import java.util.Collection;
import java.util.UUID;
+import com.destroystokyo.paper.ClientOption; // Paper
import com.destroystokyo.paper.Title; // Paper
import net.kyori.adventure.text.Component;
import org.bukkit.DyeColor;
-@@ -2485,6 +2486,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2509,6 +2510,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* Reset the cooldown counter to 0, effectively starting the cooldown period.
*/
void resetCooldown();
diff --git a/patches/api/0214-Brand-support.patch b/patches/api/0214-Brand-support.patch
index cdbb7e142..ce8d4fade 100644
--- a/patches/api/0214-Brand-support.patch
+++ b/patches/api/0214-Brand-support.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Brand support
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index f870a20de42f17dd020057365901fb62afccebbe..f601bd04d6ee0d39d4554d32628912208072a017 100644
+index 5a84c4c5644f5d82896c693939ddc7d30a69cc97..8f7667562187a141ec037eaafa2e3e8d1abd6bff 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2620,6 +2620,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2644,6 +2644,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
// Paper end
}
diff --git a/patches/api/0221-Add-methods-to-get-translation-keys.patch b/patches/api/0221-Add-methods-to-get-translation-keys.patch
index 6e713111c..909c3426d 100644
--- a/patches/api/0221-Add-methods-to-get-translation-keys.patch
+++ b/patches/api/0221-Add-methods-to-get-translation-keys.patch
@@ -144,10 +144,10 @@ index dddc450e1372409c513bbedc0acfc80d9f749333..38a1b02c006af766b0c10ee65e9fc28f
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index f3e50dee6cf453d6621dcdbef0047335147f4d0c..f0042c25a19860645d0c869fad58625b6ecafb6e 100644
+index 6eb0b9ba2b7ad5faba31220483c424203802e1d3..a4c7ff53b7e12e9d3ca649782008a4ce26a33f89 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
-@@ -109,7 +109,7 @@ import org.jetbrains.annotations.Nullable;
+@@ -110,7 +110,7 @@ import org.jetbrains.annotations.Nullable;
* An enum of all material IDs accepted by the official server and client
*/
@SuppressWarnings({"DeprecatedIsStillUsed", "deprecation"}) // Paper
@@ -156,7 +156,7 @@ index f3e50dee6cf453d6621dcdbef0047335147f4d0c..f0042c25a19860645d0c869fad58625b
//
AIR(9648, 0),
STONE(22948),
-@@ -4127,6 +4127,23 @@ public enum Material implements Keyed {
+@@ -4128,6 +4128,23 @@ public enum Material implements Keyed {
}
return false;
}
diff --git a/patches/api/0228-Player-elytra-boost-API.patch b/patches/api/0228-Player-elytra-boost-API.patch
index d435285ae..40d4cad6f 100644
--- a/patches/api/0228-Player-elytra-boost-API.patch
+++ b/patches/api/0228-Player-elytra-boost-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Player elytra boost API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index f601bd04d6ee0d39d4554d32628912208072a017..0454748478428828ce8b824f90463f4b03a010bd 100644
+index 8f7667562187a141ec037eaafa2e3e8d1abd6bff..8d4a010d826fb84feb3d6b927275c49d8eec9f71 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2492,6 +2492,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2516,6 +2516,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
@NotNull
T getClientOption(@NotNull ClientOption option);
diff --git a/patches/api/0256-Add-sendOpLevel-API.patch b/patches/api/0256-Add-sendOpLevel-API.patch
index dca15f6d2..b3bdaac09 100644
--- a/patches/api/0256-Add-sendOpLevel-API.patch
+++ b/patches/api/0256-Add-sendOpLevel-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add sendOpLevel API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 0454748478428828ce8b824f90463f4b03a010bd..ae009440a7b1e073f3772b1c3d91b6ae6fca0495 100644
+index 8d4a010d826fb84feb3d6b927275c49d8eec9f71..9bae45ea3097e328594dcaefac87c55d2c27498d 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2505,6 +2505,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2529,6 +2529,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
@Nullable
Firework boostElytra(@NotNull ItemStack firework);
diff --git a/patches/api/0272-Cache-the-result-of-Material-isBlock.patch b/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
index b3ee0e329..b7c79e9f7 100644
--- a/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
+++ b/patches/api/0272-Cache-the-result-of-Material-isBlock.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Cache the result of Material#isBlock
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index f0042c25a19860645d0c869fad58625b6ecafb6e..1a718a69e97cabda6a1c78529110193c14899949 100644
+index a4c7ff53b7e12e9d3ca649782008a4ce26a33f89..90367a01199ad90f0f10b977e214585a6e1ecf8a 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
-@@ -4071,6 +4071,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -4072,6 +4072,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
public final Class> data;
private final boolean legacy;
private final NamespacedKey key;
@@ -16,7 +16,7 @@ index f0042c25a19860645d0c869fad58625b6ecafb6e..1a718a69e97cabda6a1c78529110193c
private Material(final int id) {
this(id, 64);
-@@ -4277,6 +4278,11 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -4278,6 +4279,11 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
* @return true if this material is a block
*/
public boolean isBlock() {
@@ -28,7 +28,7 @@ index f0042c25a19860645d0c869fad58625b6ecafb6e..1a718a69e97cabda6a1c78529110193c
switch (this) {
//
case ACACIA_BUTTON:
-@@ -5393,6 +5399,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -5394,6 +5400,7 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
static {
for (Material material : values()) {
BY_NAME.put(material.name(), material);
diff --git a/patches/api/0278-Item-Rarity-API.patch b/patches/api/0278-Item-Rarity-API.patch
index 27f16fd3c..ac6b1d001 100644
--- a/patches/api/0278-Item-Rarity-API.patch
+++ b/patches/api/0278-Item-Rarity-API.patch
@@ -39,10 +39,10 @@ index 0000000000000000000000000000000000000000..74ef8395cc040ce488c2acaa416db202
+ }
+}
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index 1a718a69e97cabda6a1c78529110193c14899949..4e6273c609630be7c196d4eed54fbca097eaf7d4 100644
+index 90367a01199ad90f0f10b977e214585a6e1ecf8a..f24f1d7a676f3b83ab05f655bd66b81b0069f88c 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
-@@ -4145,6 +4145,17 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -4146,6 +4146,17 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
public @NotNull String translationKey() {
return Bukkit.getUnsafe().getTranslationKey(this);
}
diff --git a/patches/api/0303-Attributes-API-for-item-defaults.patch b/patches/api/0303-Attributes-API-for-item-defaults.patch
index 6ad130b50..16d608ad5 100644
--- a/patches/api/0303-Attributes-API-for-item-defaults.patch
+++ b/patches/api/0303-Attributes-API-for-item-defaults.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Attributes API for item defaults
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index 4e6273c609630be7c196d4eed54fbca097eaf7d4..6eae173f589cb90eb6e41b5b75e13a3c02e7901d 100644
+index f24f1d7a676f3b83ab05f655bd66b81b0069f88c..163c3ed1974e50376b7c2b2805df283322d41777 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
-@@ -4156,6 +4156,21 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -4157,6 +4157,21 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
public io.papermc.paper.inventory.ItemRarity getItemRarity() {
return Bukkit.getUnsafe().getItemRarity(this);
}
diff --git a/patches/api/0306-Add-PlayerKickEvent-causes.patch b/patches/api/0306-Add-PlayerKickEvent-causes.patch
index 9f49a57d7..4b2bfc5a5 100644
--- a/patches/api/0306-Add-PlayerKickEvent-causes.patch
+++ b/patches/api/0306-Add-PlayerKickEvent-causes.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerKickEvent causes
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index ae009440a7b1e073f3772b1c3d91b6ae6fca0495..0a400ecdffa18eb836fed62961f151ff6842011b 100644
+index 9bae45ea3097e328594dcaefac87c55d2c27498d..19d23f2995322e1710741b58e5c7bc2f3880fc0d 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -250,6 +250,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -252,6 +252,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @param message kick message
*/
void kick(final @Nullable net.kyori.adventure.text.Component message);
diff --git a/patches/api/0336-Add-isCollidable-methods-to-various-places.patch b/patches/api/0336-Add-isCollidable-methods-to-various-places.patch
index 4cd674315..f3472664f 100644
--- a/patches/api/0336-Add-isCollidable-methods-to-various-places.patch
+++ b/patches/api/0336-Add-isCollidable-methods-to-various-places.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add isCollidable methods to various places
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
-index 6eae173f589cb90eb6e41b5b75e13a3c02e7901d..1d6baee05643607baa40a07022576906ea61a92f 100644
+index 163c3ed1974e50376b7c2b2805df283322d41777..cb00e050cd5fff3a037a32ac34e02eeea3827357 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
-@@ -4171,6 +4171,16 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
+@@ -4172,6 +4172,16 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
public Multimap getItemAttributes(@NotNull EquipmentSlot equipmentSlot) {
return Bukkit.getUnsafe().getItemAttributes(this, equipmentSlot);
}
diff --git a/patches/api/0341-Add-player-health-update-API.patch b/patches/api/0341-Add-player-health-update-API.patch
index 06b3a5418..83a3545f8 100644
--- a/patches/api/0341-Add-player-health-update-API.patch
+++ b/patches/api/0341-Add-player-health-update-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add player health update API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 0a400ecdffa18eb836fed62961f151ff6842011b..78034fcc89ceeba6934569189f24e5a41229d848 100644
+index 19d23f2995322e1710741b58e5c7bc2f3880fc0d..b5519cf329485a2ec72586e66a8a88617c09312e 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1893,6 +1893,31 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1917,6 +1917,31 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public double getHealthScale();
diff --git a/patches/api/0357-Multi-Block-Change-API.patch b/patches/api/0357-Multi-Block-Change-API.patch
index a8bdc6fff..1d9a1f89d 100644
--- a/patches/api/0357-Multi-Block-Change-API.patch
+++ b/patches/api/0357-Multi-Block-Change-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Multi Block Change API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 78034fcc89ceeba6934569189f24e5a41229d848..6ec49c213c87e9dbf7ebfbdb93f1d993a2639ac5 100644
+index b5519cf329485a2ec72586e66a8a88617c09312e..82d9cfadb00da9b7c2034938780354a573801728 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -600,6 +600,27 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -624,6 +624,27 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
*/
public void sendBlockDamage(@NotNull Location loc, float progress);
diff --git a/patches/api/0386-More-Teleport-API.patch b/patches/api/0386-More-Teleport-API.patch
index 0c960c2de..98b380b07 100644
--- a/patches/api/0386-More-Teleport-API.patch
+++ b/patches/api/0386-More-Teleport-API.patch
@@ -159,10 +159,10 @@ index 461e29a0abbb021c886bffec71c948e1edc3d222..321f3ec6c7020ada38143832aea1c545
* Teleports this entity to the given location. If this entity is riding a
* vehicle, it will be dismounted prior to teleportation.
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 6ec49c213c87e9dbf7ebfbdb93f1d993a2639ac5..3fcfe8651a9c422fa9c8ff77556477f1461424cf 100644
+index 82d9cfadb00da9b7c2034938780354a573801728..8bac7b0b762a75a6535b50351850192a9568b578 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2708,6 +2708,71 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2732,6 +2732,71 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
String getClientBrandName();
// Paper end
diff --git a/patches/api/0388-Custom-Chat-Completion-Suggestions-API.patch b/patches/api/0388-Custom-Chat-Completion-Suggestions-API.patch
index 62cde4be4..0afdd4aa9 100644
--- a/patches/api/0388-Custom-Chat-Completion-Suggestions-API.patch
+++ b/patches/api/0388-Custom-Chat-Completion-Suggestions-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Custom Chat Completion Suggestions API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 3fcfe8651a9c422fa9c8ff77556477f1461424cf..b607c229cfb1e95b17b6a0073380089ef5e1b675 100644
+index 8bac7b0b762a75a6535b50351850192a9568b578..cde9dfaba913e18d2efc6003d5209ba3cfb02945 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2570,6 +2570,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2594,6 +2594,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
* @throws IllegalArgumentException If the level is negative or greater than {@code 4} (i.e. not within {@code [0, 4]}).
*/
void sendOpLevel(byte level);
diff --git a/patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch b/patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
index 46ac25ad4..31fa2bff1 100644
--- a/patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
+++ b/patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add custom destroyerIdentity to sendBlockDamage
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index b607c229cfb1e95b17b6a0073380089ef5e1b675..5e51bc9176b481ec70fd7e5ac23d04d59f8d1a9a 100644
+index cde9dfaba913e18d2efc6003d5209ba3cfb02945..1d98abff1ad0116f7a2599f078aa730cb84843c1 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -592,7 +592,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -616,7 +616,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
/**
* Send block damage. This fakes block break progress for a user at a
* certain location. This will not actually change the block's break
@@ -17,7 +17,7 @@ index b607c229cfb1e95b17b6a0073380089ef5e1b675..5e51bc9176b481ec70fd7e5ac23d04d5
*
* @param loc the location of the damaged block
* @param progress the progress from 0.0 - 1.0 where 0 is no damage and
-@@ -601,6 +601,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -625,6 +625,18 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
public void sendBlockDamage(@NotNull Location loc, float progress);
// Paper start
diff --git a/patches/server/0001-Setup-Gradle-project.patch b/patches/server/0001-Setup-Gradle-project.patch
index 0f0e18709..830a5584e 100644
--- a/patches/server/0001-Setup-Gradle-project.patch
+++ b/patches/server/0001-Setup-Gradle-project.patch
@@ -8,7 +8,7 @@ apply if there are changes made to it from upstream - thus notifying us
that changes were made.
diff --git a/.gitignore b/.gitignore
-index 67fb370cad6924895a6b27052dbd5c1767e3f0c9..bb338269c9e3bef4c274157c490d8b8f8c589937 100644
+index 3df8c60ab5cd1454660980883f80668d535b742b..37c3a00659ce21623be07317f4f6a45bf990d799 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
@@ -18,7 +18,7 @@ index 67fb370cad6924895a6b27052dbd5c1767e3f0c9..bb338269c9e3bef4c274157c490d8b8f
# Eclipse stuff
/.classpath
/.project
-@@ -37,3 +40,7 @@ dependency-reduced-pom.xml
+@@ -38,3 +41,7 @@ dependency-reduced-pom.xml
/src/main/resources/achievement
/src/main/resources/lang
diff --git a/patches/server/0009-Adventure.patch b/patches/server/0009-Adventure.patch
index 7c02dae1d..5e5641e20 100644
--- a/patches/server/0009-Adventure.patch
+++ b/patches/server/0009-Adventure.patch
@@ -3204,10 +3204,10 @@ index 446fdca49a5a6999626a7ee3a1d5c168b15a09dd..f9863e138994f6c7a7975a852f106faa
public boolean isOp() {
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f1317d4e5bb0 100644
+index 75143ba3e1e8a001801455c9bf1235186833dbae..10a9a108448509ceb7d40a4bddb067384c4c9f26 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -269,14 +269,39 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -275,14 +275,39 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getDisplayName() {
@@ -3247,7 +3247,7 @@ index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f131
@Override
public String getPlayerListName() {
return this.getHandle().listName == null ? getName() : CraftChatMessage.fromComponent(this.getHandle().listName);
-@@ -295,42 +320,42 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -301,42 +326,42 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
@@ -3299,7 +3299,7 @@ index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f131
this.getHandle().connection.send(packet);
}
-@@ -362,6 +387,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -368,6 +393,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.disconnect(message == null ? "" : message);
}
@@ -3323,7 +3323,7 @@ index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f131
@Override
public void setCompassTarget(Location loc) {
if (this.getHandle().connection == null) return;
-@@ -624,6 +666,35 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -668,6 +710,35 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(packet);
}
@@ -3359,7 +3359,7 @@ index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f131
@Override
public void sendSignChange(Location loc, String[] lines) {
this.sendSignChange(loc, lines, DyeColor.BLACK);
-@@ -651,14 +722,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -695,14 +766,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
Component[] components = CraftSign.sanitizeLines(lines);
@@ -3377,7 +3377,7 @@ index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f131
}
@Override
-@@ -1429,7 +1501,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1473,7 +1545,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setResourcePack(String url) {
@@ -3386,7 +3386,7 @@ index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f131
}
@Override
-@@ -1444,7 +1516,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1488,7 +1560,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setResourcePack(String url, byte[] hash, boolean force) {
@@ -3395,7 +3395,7 @@ index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f131
}
@Override
-@@ -1460,6 +1532,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1504,6 +1576,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
@@ -3417,7 +3417,7 @@ index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f131
public void addChannel(String channel) {
Preconditions.checkState(this.channels.size() < 128, "Cannot register channel '%s'. Too many channels registered!", channel);
channel = StandardMessenger.validateAndCorrectChannel(channel);
-@@ -1864,6 +1951,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1908,6 +1995,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return (this.getHandle().clientViewDistance == null) ? Bukkit.getViewDistance() : this.getHandle().clientViewDistance;
}
@@ -3430,7 +3430,7 @@ index e9036bbb2ec2862252c3a39a4022e195784291ca..ef5e29e0a66f8d4cb819c4383cf3f131
@Override
public int getPing() {
return this.getHandle().latency;
-@@ -1909,6 +2002,193 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1953,6 +2046,193 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().allowsListing();
}
diff --git a/patches/server/0012-Timings-v2.patch b/patches/server/0012-Timings-v2.patch
index a9679a948..0d50ea970 100644
--- a/patches/server/0012-Timings-v2.patch
+++ b/patches/server/0012-Timings-v2.patch
@@ -1839,10 +1839,10 @@ index b0ffa23faf62629043dfd613315eaf9c5fcc2cfe..00000000000000000000000000000000
- }
-}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index ef5e29e0a66f8d4cb819c4383cf3f1317d4e5bb0..a2dd86fde8882c774ad44be3ca66f7c80bb77389 100644
+index 10a9a108448509ceb7d40a4bddb067384c4c9f26..d5e6123622f6bbc4c3b8b91be7f9ba8e5c1c22d8 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2275,6 +2275,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2319,6 +2319,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
CraftPlayer.this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundSystemChatPacket(components, position == net.md_5.bungee.api.ChatMessageType.ACTION_BAR));
}
diff --git a/patches/server/0032-Player-affects-spawning-API.patch b/patches/server/0032-Player-affects-spawning-API.patch
index 160b9c9ca..c3767ea52 100644
--- a/patches/server/0032-Player-affects-spawning-API.patch
+++ b/patches/server/0032-Player-affects-spawning-API.patch
@@ -117,10 +117,10 @@ index 7c5918f84d2b8f9c778258b7e7d745105effb082..cfb286020b8ee87bad7edbda4cd0b999
for(Player player : this.players()) {
if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player)) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index a2dd86fde8882c774ad44be3ca66f7c80bb77389..6132d91ba0f1390365f4661bcd7406000fa8a88d 100644
+index d5e6123622f6bbc4c3b8b91be7f9ba8e5c1c22d8..213024c868e7e33cd1ecef4173449b02f5b9b425 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1965,8 +1965,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2009,8 +2009,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getLocale() {
return this.getHandle().locale;
diff --git a/patches/server/0034-Only-refresh-abilities-if-needed.patch b/patches/server/0034-Only-refresh-abilities-if-needed.patch
index 173e6b636..899a5ac92 100644
--- a/patches/server/0034-Only-refresh-abilities-if-needed.patch
+++ b/patches/server/0034-Only-refresh-abilities-if-needed.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Only refresh abilities if needed
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 6132d91ba0f1390365f4661bcd7406000fa8a88d..68dddf4ded409f26a0c048d1b760f6ebb54da4ee 100644
+index 213024c868e7e33cd1ecef4173449b02f5b9b425..00df00676337435e6ec62a86dc03fecde30f9819 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1634,12 +1634,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1678,12 +1678,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setFlying(boolean value) {
diff --git a/patches/server/0047-Implement-PlayerLocaleChangeEvent.patch b/patches/server/0047-Implement-PlayerLocaleChangeEvent.patch
index af210058a..f8e270f8f 100644
--- a/patches/server/0047-Implement-PlayerLocaleChangeEvent.patch
+++ b/patches/server/0047-Implement-PlayerLocaleChangeEvent.patch
@@ -30,10 +30,10 @@ index 13bb12a2d1260b1c20ce3c8755906c2227f29f86..db7e2207612b56b0869a947edd03a6d3
this.locale = packet.language;
// Paper start
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 68dddf4ded409f26a0c048d1b760f6ebb54da4ee..7f0dd0b718a08c850f07f3e0b0a0cf680f1bb2eb 100644
+index 00df00676337435e6ec62a86dc03fecde30f9819..9d2506a042b49089094be79b5d0ed54f088b9625 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1965,8 +1965,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2009,8 +2009,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getLocale() {
diff --git a/patches/server/0048-Per-Player-View-Distance-API-placeholders.patch b/patches/server/0048-Per-Player-View-Distance-API-placeholders.patch
index 9f490acf6..05d14292f 100644
--- a/patches/server/0048-Per-Player-View-Distance-API-placeholders.patch
+++ b/patches/server/0048-Per-Player-View-Distance-API-placeholders.patch
@@ -60,10 +60,10 @@ index 9a6820b10e4164cc38d269853b5c2a49175cb890..0ed46cdd443ac42a7d57ee59f6f04fd9
// Spigot start
private final org.bukkit.World.Spigot spigot = new org.bukkit.World.Spigot()
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 7f0dd0b718a08c850f07f3e0b0a0cf680f1bb2eb..82a640887a75c360539c1787dbbb32750f6b1379 100644
+index 9d2506a042b49089094be79b5d0ed54f088b9625..f2ada37115392466edbed8a2d331084aaaf7b774 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -402,6 +402,46 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -408,6 +408,46 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
connection.disconnect(message == null ? net.kyori.adventure.text.Component.empty() : message);
}
}
diff --git a/patches/server/0055-Ensure-commands-are-not-ran-async.patch b/patches/server/0055-Ensure-commands-are-not-ran-async.patch
index 31bbe6739..a19a940f1 100644
--- a/patches/server/0055-Ensure-commands-are-not-ran-async.patch
+++ b/patches/server/0055-Ensure-commands-are-not-ran-async.patch
@@ -107,10 +107,10 @@ index 56efe95512c851b965f2295d5eac7bc0c67bdb1f..1c6577bbbc005131661cbb4667cff649
return true;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 82a640887a75c360539c1787dbbb32750f6b1379..2666e55d72fd7731a2bde42d690762a2747dac90 100644
+index f2ada37115392466edbed8a2d331084aaaf7b774..2811d631dfd0f4013579734486c3ebbca4cfaad2 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -461,7 +461,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -467,7 +467,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void chat(String msg) {
if (this.getHandle().connection == null) return;
diff --git a/patches/server/0060-Player-Tab-List-and-Title-APIs.patch b/patches/server/0060-Player-Tab-List-and-Title-APIs.patch
index 9d0c41ec6..51f179ec4 100644
--- a/patches/server/0060-Player-Tab-List-and-Title-APIs.patch
+++ b/patches/server/0060-Player-Tab-List-and-Title-APIs.patch
@@ -63,7 +63,7 @@ index bd808eb312ade7122973a47f4b96505829511da5..bf0f9cab7c66c089f35b851e799ba4a4
// Paper end
buf.writeComponent(this.text);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 2666e55d72fd7731a2bde42d690762a2747dac90..f4f704ec29cb9eb2f4de2b77261a54169bb40a93 100644
+index 2811d631dfd0f4013579734486c3ebbca4cfaad2..59a9168a1158d47eaa6bca223318db8c543023a0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1,5 +1,6 @@
@@ -73,7 +73,7 @@ index 2666e55d72fd7731a2bde42d690762a2747dac90..f4f704ec29cb9eb2f4de2b77261a5416
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import com.google.common.io.BaseEncoding;
-@@ -267,6 +268,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -273,6 +274,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
diff --git a/patches/server/0063-Configurable-inter-world-teleportation-safety.patch b/patches/server/0063-Configurable-inter-world-teleportation-safety.patch
index 4863fd9b1..5164172bc 100644
--- a/patches/server/0063-Configurable-inter-world-teleportation-safety.patch
+++ b/patches/server/0063-Configurable-inter-world-teleportation-safety.patch
@@ -16,10 +16,10 @@ The wanted destination was on top of the emerald block however the player ended
This only is the case if the player is teleporting between worlds.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index f4f704ec29cb9eb2f4de2b77261a54169bb40a93..d91f69639724aeeb4264f86cf8f76edc22567649 100644
+index 59a9168a1158d47eaa6bca223318db8c543023a0..5bc128440e2f12e2c635db70280c46dbb5f3f3c0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1050,7 +1050,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1094,7 +1094,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (fromWorld == toWorld) {
entity.connection.teleport(to);
} else {
diff --git a/patches/server/0069-Complete-resource-pack-API.patch b/patches/server/0069-Complete-resource-pack-API.patch
index ee380568c..e3a7984fc 100644
--- a/patches/server/0069-Complete-resource-pack-API.patch
+++ b/patches/server/0069-Complete-resource-pack-API.patch
@@ -23,10 +23,10 @@ index e21a6961bab606036440f2a6bd90998b4129ae10..9f0a5b950a022aa2a3d3d60837fdb902
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index d91f69639724aeeb4264f86cf8f76edc22567649..6ae934c6c7c50dd38ff2e762fddfe650e97aa4ae 100644
+index 5bc128440e2f12e2c635db70280c46dbb5f3f3c0..3846905bafd92918349793d346aca5b3a3529e9b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -144,6 +144,7 @@ import org.bukkit.plugin.Plugin;
+@@ -150,6 +150,7 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.messaging.StandardMessenger;
import org.bukkit.profile.PlayerProfile;
import org.bukkit.scoreboard.Scoreboard;
@@ -34,7 +34,7 @@ index d91f69639724aeeb4264f86cf8f76edc22567649..6ae934c6c7c50dd38ff2e762fddfe650
import net.md_5.bungee.api.chat.BaseComponent; // Spigot
-@@ -162,6 +163,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -168,6 +169,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private double healthScale = 20;
private CraftWorldBorder clientWorldBorder = null;
private BorderChangeListener clientWorldBorderListener = this.createWorldBorderListener();
@@ -45,7 +45,7 @@ index d91f69639724aeeb4264f86cf8f76edc22567649..6ae934c6c7c50dd38ff2e762fddfe650
public CraftPlayer(CraftServer server, ServerPlayer entity) {
super(server, entity);
-@@ -2127,6 +2132,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2171,6 +2176,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public boolean getAffectsSpawning() {
return this.getHandle().affectsSpawning;
}
diff --git a/patches/server/0077-handle-NaN-health-absorb-values-and-repair-bad-data.patch b/patches/server/0077-handle-NaN-health-absorb-values-and-repair-bad-data.patch
index 0abf12d2a..0085f9fe6 100644
--- a/patches/server/0077-handle-NaN-health-absorb-values-and-repair-bad-data.patch
+++ b/patches/server/0077-handle-NaN-health-absorb-values-and-repair-bad-data.patch
@@ -44,10 +44,10 @@ index 5678461976a07f9afecccb1d34ea3eec24fba80e..8dc6fbbdfaecf0eb38a876d87d77f111
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 6ae934c6c7c50dd38ff2e762fddfe650e97aa4ae..da91150f7462c2743d7394b148ddb52e9af8b797 100644
+index 3846905bafd92918349793d346aca5b3a3529e9b..72b1429c4976b8db13d2185486c240b2fadb4ea9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1932,6 +1932,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1976,6 +1976,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void setRealHealth(double health) {
diff --git a/patches/server/0126-String-based-Action-Bar-API.patch b/patches/server/0126-String-based-Action-Bar-API.patch
index 993e5b8cb..7d7838984 100644
--- a/patches/server/0126-String-based-Action-Bar-API.patch
+++ b/patches/server/0126-String-based-Action-Bar-API.patch
@@ -26,10 +26,10 @@ index 32ef3edebe94a2014168b7e438752a80b2687e5f..ab6c58eed6707ab7b0aa3e7549a871ad
// Paper end
buf.writeComponent(this.text);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index da91150f7462c2743d7394b148ddb52e9af8b797..a5418b1c78e1f1eb9f552450367717fee9487193 100644
+index 72b1429c4976b8db13d2185486c240b2fadb4ea9..538db39d365252a63d578728b362a8dde3e8838e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -274,6 +274,26 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -280,6 +280,26 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// Paper start
diff --git a/patches/server/0166-Expose-client-protocol-version-and-virtual-host.patch b/patches/server/0166-Expose-client-protocol-version-and-virtual-host.patch
index e5c31b05c..0702ce77c 100644
--- a/patches/server/0166-Expose-client-protocol-version-and-virtual-host.patch
+++ b/patches/server/0166-Expose-client-protocol-version-and-virtual-host.patch
@@ -90,10 +90,10 @@ index 9016aced079108aeae09f030a672467a953ef93f..4170bda451df3db43e7d57d87d1abb81
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index a5418b1c78e1f1eb9f552450367717fee9487193..460e237a3237d5965b2ef85d32113682ee04e52d 100644
+index 538db39d365252a63d578728b362a8dde3e8838e..9db54a62d46a02fc7d2adcb9cbfa275fdd541a28 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -218,6 +218,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -224,6 +224,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
diff --git a/patches/server/0176-Ability-to-apply-mending-to-XP-API.patch b/patches/server/0176-Ability-to-apply-mending-to-XP-API.patch
index d301f387f..79dc53269 100644
--- a/patches/server/0176-Ability-to-apply-mending-to-XP-API.patch
+++ b/patches/server/0176-Ability-to-apply-mending-to-XP-API.patch
@@ -10,10 +10,10 @@ of giving the player experience points.
Both an API To standalone mend, and apply mending logic to .giveExp has been added.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 460e237a3237d5965b2ef85d32113682ee04e52d..299f2a8c45462d8070312c98554dbcc05298c681 100644
+index 9db54a62d46a02fc7d2adcb9cbfa275fdd541a28..afb4f2e730fbc57dd4b5fac24071eb99231d4d19 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1365,7 +1365,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1409,7 +1409,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
@Override
diff --git a/patches/server/0189-Player.setPlayerProfile-API.patch b/patches/server/0189-Player.setPlayerProfile-API.patch
index eff52cffc..4f588923e 100644
--- a/patches/server/0189-Player.setPlayerProfile-API.patch
+++ b/patches/server/0189-Player.setPlayerProfile-API.patch
@@ -24,10 +24,10 @@ index 9a7fe61d7de80eaf044c202e1ed13d9e4b59622a..ef09f5f42a89f767060f015af27269ad
playerName = gameProfile.getName();
uniqueId = gameProfile.getId();
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 299f2a8c45462d8070312c98554dbcc05298c681..31bcabd4c6ac3aa261c439a154ba7eb0f8caa0b8 100644
+index afb4f2e730fbc57dd4b5fac24071eb99231d4d19..27f496417aecf5a62fdbabbc7de52533d5252ebf 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -75,6 +75,7 @@ import net.minecraft.world.entity.ai.attributes.Attributes;
+@@ -79,6 +79,7 @@ import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.level.GameType;
import net.minecraft.world.level.block.Blocks;
@@ -35,7 +35,7 @@ index 299f2a8c45462d8070312c98554dbcc05298c681..31bcabd4c6ac3aa261c439a154ba7eb0
import net.minecraft.world.level.block.entity.SignBlockEntity;
import net.minecraft.world.level.border.BorderChangeListener;
import net.minecraft.world.level.saveddata.maps.MapDecoration;
-@@ -201,11 +202,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -207,11 +208,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return server.getPlayer(getUniqueId()) != null;
}
@@ -47,7 +47,7 @@ index 299f2a8c45462d8070312c98554dbcc05298c681..31bcabd4c6ac3aa261c439a154ba7eb0
@Override
public InetSocketAddress getAddress() {
if (this.getHandle().connection == null) return null;
-@@ -1498,8 +1494,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1542,8 +1538,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.hiddenEntities.put(entity.getUniqueId(), hidingPlugins);
// Remove this entity from the hidden player's EntityTrackerEntry
@@ -64,7 +64,7 @@ index 299f2a8c45462d8070312c98554dbcc05298c681..31bcabd4c6ac3aa261c439a154ba7eb0
ChunkMap.TrackedEntity entry = tracker.entityMap.get(other.getId());
if (entry != null) {
entry.removePlayer(this.getHandle());
-@@ -1512,8 +1515,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1556,8 +1559,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.REMOVE_PLAYER, otherPlayer));
}
}
@@ -73,7 +73,7 @@ index 299f2a8c45462d8070312c98554dbcc05298c681..31bcabd4c6ac3aa261c439a154ba7eb0
}
@Override
-@@ -1550,8 +1551,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1594,8 +1595,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
this.hiddenEntities.remove(entity.getUniqueId());
@@ -90,7 +90,7 @@ index 299f2a8c45462d8070312c98554dbcc05298c681..31bcabd4c6ac3aa261c439a154ba7eb0
if (other instanceof ServerPlayer) {
ServerPlayer otherPlayer = (ServerPlayer) other;
-@@ -1562,9 +1570,51 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1606,9 +1614,51 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (entry != null && !entry.seenBy.contains(this.getHandle().connection)) {
entry.updatePlayer(this.getHandle());
}
diff --git a/patches/server/0194-Flag-to-disable-the-channel-limit.patch b/patches/server/0194-Flag-to-disable-the-channel-limit.patch
index 86fb71be6..68fc4ad85 100644
--- a/patches/server/0194-Flag-to-disable-the-channel-limit.patch
+++ b/patches/server/0194-Flag-to-disable-the-channel-limit.patch
@@ -9,10 +9,10 @@ e.g. servers which allow and support the usage of mod packs.
provide an optional flag to disable this check, at your own risk.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 31bcabd4c6ac3aa261c439a154ba7eb0f8caa0b8..7234e96d6d956d84fbcbcb321c1fb05906da6adb 100644
+index 27f496417aecf5a62fdbabbc7de52533d5252ebf..ba05bdd83abde37695bacc30d56108ed85f5adb9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -167,6 +167,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -173,6 +173,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper start
private org.bukkit.event.player.PlayerResourcePackStatusEvent.Status resourcePackStatus;
private String resourcePackHash;
@@ -20,7 +20,7 @@ index 31bcabd4c6ac3aa261c439a154ba7eb0f8caa0b8..7234e96d6d956d84fbcbcb321c1fb059
// Paper end
public CraftPlayer(CraftServer server, ServerPlayer entity) {
-@@ -1814,7 +1815,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1858,7 +1859,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
public void addChannel(String channel) {
diff --git a/patches/server/0223-InventoryCloseEvent-Reason-API.patch b/patches/server/0223-InventoryCloseEvent-Reason-API.patch
index 600805782..b55d8b9e1 100644
--- a/patches/server/0223-InventoryCloseEvent-Reason-API.patch
+++ b/patches/server/0223-InventoryCloseEvent-Reason-API.patch
@@ -173,10 +173,10 @@ index 7ea4a2d4e691e0a0a4d9ef3189a29a4a4ca4374b..883b6245f44f3fb82d7678e1092177ca
@Override
public boolean isBlocking() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 7234e96d6d956d84fbcbcb321c1fb05906da6adb..69c3602abfddc9c065736cf08c32f88029df0e5c 100644
+index ba05bdd83abde37695bacc30d56108ed85f5adb9..63575545d197c4172b1df04090d904b4358f6b5c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1079,7 +1079,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1123,7 +1123,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Close any foreign inventory
if (this.getHandle().containerMenu != this.getHandle().inventoryMenu) {
diff --git a/patches/server/0261-Expose-attack-cooldown-methods-for-Player.patch b/patches/server/0261-Expose-attack-cooldown-methods-for-Player.patch
index fd448ce85..bca960a13 100644
--- a/patches/server/0261-Expose-attack-cooldown-methods-for-Player.patch
+++ b/patches/server/0261-Expose-attack-cooldown-methods-for-Player.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose attack cooldown methods for Player
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 69c3602abfddc9c065736cf08c32f88029df0e5c..da6511b0842e25eca537dd9df92d63e49e4290ad 100644
+index 63575545d197c4172b1df04090d904b4358f6b5c..15967a7162ceca57a0549f0b3643a63fe03a91f3 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2510,6 +2510,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2554,6 +2554,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.adventure$pointers;
}
diff --git a/patches/server/0262-Improve-death-events.patch b/patches/server/0262-Improve-death-events.patch
index 9ae53b7aa..5c2e26160 100644
--- a/patches/server/0262-Improve-death-events.patch
+++ b/patches/server/0262-Improve-death-events.patch
@@ -310,10 +310,10 @@ index f94a74728bd7c02a7f8245c92e7916f0b669ee0d..cd54fa8f7bbcb6036e90f4ef7cdc01d7
this.gameEvent(GameEvent.ENTITY_DIE);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index da6511b0842e25eca537dd9df92d63e49e4290ad..1b0f744423c4a61f85ad901b5a71b1ebe52a7cdd 100644
+index 15967a7162ceca57a0549f0b3643a63fe03a91f3..e950db8a10668c5d7f4d462eaf91540df2159538 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2074,7 +2074,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2118,7 +2118,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void sendHealthUpdate() {
diff --git a/patches/server/0299-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch b/patches/server/0299-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
index f79d5c3d9..6dd4db4eb 100644
--- a/patches/server/0299-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
+++ b/patches/server/0299-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
@@ -106,10 +106,10 @@ index e7442952ef1f03969949014492a7ddc6d0796ba5..d7823d7dc88cfba6f6ac9dae220e03de
public Location getLastDeathLocation() {
if (this.getData().contains("LastDeathLocation", 10)) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 1b0f744423c4a61f85ad901b5a71b1ebe52a7cdd..e2bf6be0788158602d2e25bd7ba8a72caad6cbfd 100644
+index e950db8a10668c5d7f4d462eaf91540df2159538..31a34d04fbbd5a122c5f971e11649758bd6a4702 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -168,6 +168,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -174,6 +174,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private org.bukkit.event.player.PlayerResourcePackStatusEvent.Status resourcePackStatus;
private String resourcePackHash;
private static final boolean DISABLE_CHANNEL_LIMIT = System.getProperty("paper.disableChannelLimit") != null; // Paper - add a flag to disable the channel limit
@@ -117,7 +117,7 @@ index 1b0f744423c4a61f85ad901b5a71b1ebe52a7cdd..e2bf6be0788158602d2e25bd7ba8a72c
// Paper end
public CraftPlayer(CraftServer server, ServerPlayer entity) {
-@@ -1686,6 +1687,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1730,6 +1731,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.firstPlayed = firstPlayed;
}
@@ -136,7 +136,7 @@ index 1b0f744423c4a61f85ad901b5a71b1ebe52a7cdd..e2bf6be0788158602d2e25bd7ba8a72c
public void readExtraData(CompoundTag nbttagcompound) {
this.hasPlayedBefore = true;
if (nbttagcompound.contains("bukkit")) {
-@@ -1708,6 +1721,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1752,6 +1765,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void setExtraData(CompoundTag nbttagcompound) {
@@ -145,7 +145,7 @@ index 1b0f744423c4a61f85ad901b5a71b1ebe52a7cdd..e2bf6be0788158602d2e25bd7ba8a72c
if (!nbttagcompound.contains("bukkit")) {
nbttagcompound.put("bukkit", new CompoundTag());
}
-@@ -1722,6 +1737,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1766,6 +1781,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
data.putLong("firstPlayed", this.getFirstPlayed());
data.putLong("lastPlayed", System.currentTimeMillis());
data.putString("lastKnownName", handle.getScoreboardName());
diff --git a/patches/server/0301-Block-Entity-remove-from-being-called-on-Players.patch b/patches/server/0301-Block-Entity-remove-from-being-called-on-Players.patch
index d52db8842..71a5f102e 100644
--- a/patches/server/0301-Block-Entity-remove-from-being-called-on-Players.patch
+++ b/patches/server/0301-Block-Entity-remove-from-being-called-on-Players.patch
@@ -12,10 +12,10 @@ Player we will look at limiting the scope of this change. It appears to
be unintentional in the few cases we've seen so far.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index e2bf6be0788158602d2e25bd7ba8a72caad6cbfd..86447a824d9749f85a6378682d4a6f74ca19875d 100644
+index 31a34d04fbbd5a122c5f971e11649758bd6a4702..fa7b1dd573e61f1a99d58bdb723a40b606604b69 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2557,6 +2557,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2601,6 +2601,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void resetCooldown() {
getHandle().resetAttackStrengthTicker();
}
diff --git a/patches/server/0395-Implement-Player-Client-Options-API.patch b/patches/server/0395-Implement-Player-Client-Options-API.patch
index 5a4d2416f..16554bcf5 100644
--- a/patches/server/0395-Implement-Player-Client-Options-API.patch
+++ b/patches/server/0395-Implement-Player-Client-Options-API.patch
@@ -97,10 +97,10 @@ index 227bcd9c1cfcc6bf8dedacdca28731a8ffc7171a..49cb507ddd378b9a16b82e5c2a28531f
if (getMainArm() != packet.mainHand()) {
PlayerChangedMainHandEvent event = new PlayerChangedMainHandEvent(this.getBukkitEntity(), getMainArm() == HumanoidArm.LEFT ? MainHand.LEFT : MainHand.RIGHT);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 86447a824d9749f85a6378682d4a6f74ca19875d..0fda8c27c717bd030b826c5c7267b880f9d1f6b9 100644
+index fa7b1dd573e61f1a99d58bdb723a40b606604b69..b82d42210a84bc350b80bc061ea1f0ee36519522 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -574,6 +574,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -580,6 +580,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setSendViewDistance(int viewDistance) {
throw new UnsupportedOperationException("Per-Player View Distance APIs need further understanding to properly implement (There are per world view distances though!)"); // TODO
}
diff --git a/patches/server/0476-Brand-support.patch b/patches/server/0476-Brand-support.patch
index 96c458463..427556e71 100644
--- a/patches/server/0476-Brand-support.patch
+++ b/patches/server/0476-Brand-support.patch
@@ -56,10 +56,10 @@ index c59e90ba0de83eeda3719b6303bee9796b4a1af0..da6a0171bd63ac68635de1c23fc9eafa
return (!this.player.joining && !this.connection.isConnected()) || this.processedDisconnect; // Paper
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 0fda8c27c717bd030b826c5c7267b880f9d1f6b9..10e1be2349df779b911848f70e4b8f0e351b1de7 100644
+index b82d42210a84bc350b80bc061ea1f0ee36519522..e5792a497647e68230746f16a91347ec59711f1d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2681,6 +2681,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2725,6 +2725,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
};
diff --git a/patches/server/0513-Player-elytra-boost-API.patch b/patches/server/0513-Player-elytra-boost-API.patch
index 1e60420c0..7eb787b27 100644
--- a/patches/server/0513-Player-elytra-boost-API.patch
+++ b/patches/server/0513-Player-elytra-boost-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Player elytra boost API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 10e1be2349df779b911848f70e4b8f0e351b1de7..09f5a288cba1825fa0fff32f771f98675f473527 100644
+index e5792a497647e68230746f16a91347ec59711f1d..2cf07d61de7fa86ba1d824ee21f127de58185bb0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -592,6 +592,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -598,6 +598,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
throw new RuntimeException("Unknown settings type");
}
diff --git a/patches/server/0527-Fix-Player-spawnParticle-x-y-z-precision-loss.patch b/patches/server/0527-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
index c8c87f141..71162c5dc 100644
--- a/patches/server/0527-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
+++ b/patches/server/0527-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix Player spawnParticle x/y/z precision loss
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 09f5a288cba1825fa0fff32f771f98675f473527..21f413b1e75c15fae888a4e6dccefbe822ad1c40 100644
+index 2cf07d61de7fa86ba1d824ee21f127de58185bb0..6731b20689ad3781d2b800826d059044c2c75c66 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2263,7 +2263,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2307,7 +2307,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (data != null && !particle.getDataType().isInstance(data)) {
throw new IllegalArgumentException("data should be " + particle.getDataType() + " got " + data.getClass());
}
diff --git a/patches/server/0569-Add-sendOpLevel-API.patch b/patches/server/0569-Add-sendOpLevel-API.patch
index 67a367d47..4e5a7cff6 100644
--- a/patches/server/0569-Add-sendOpLevel-API.patch
+++ b/patches/server/0569-Add-sendOpLevel-API.patch
@@ -32,10 +32,10 @@ index 54fff5ebefa04f64ed1abfd12ebf48762015fae3..c4f5a3bf60302743329b17f9b2dffcee
public boolean isWhiteListed(GameProfile profile) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 21f413b1e75c15fae888a4e6dccefbe822ad1c40..0528489348dc12c22bdb306a4b6c5c6a138f5347 100644
+index 6731b20689ad3781d2b800826d059044c2c75c66..50a6aaa4216ba39f2b3b480be7b5953acac08847 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -606,6 +606,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -612,6 +612,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
? (org.bukkit.entity.Firework) entity.getBukkitEntity()
: null;
}
diff --git a/patches/server/0644-additions-to-PlayerGameModeChangeEvent.patch b/patches/server/0644-additions-to-PlayerGameModeChangeEvent.patch
index 5262ad725..df1c2a81f 100644
--- a/patches/server/0644-additions-to-PlayerGameModeChangeEvent.patch
+++ b/patches/server/0644-additions-to-PlayerGameModeChangeEvent.patch
@@ -139,10 +139,10 @@ index 161b5d6f0d420ac7b6ed112d1b03d42c3aaec421..de4c3849cc60151de8f3a873adad2bc3
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 0528489348dc12c22bdb306a4b6c5c6a138f5347..ca8267966307ed5e0cb2fc5e4cf61868a77f50ed 100644
+index 50a6aaa4216ba39f2b3b480be7b5953acac08847..05903c7da2ff1a5960c66ef23a685c3da8de04ae 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1386,7 +1386,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1430,7 +1430,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
throw new IllegalArgumentException("Mode cannot be null");
}
diff --git a/patches/server/0656-Add-PlayerKickEvent-causes.patch b/patches/server/0656-Add-PlayerKickEvent-causes.patch
index aadf1414f..2fc63bdf0 100644
--- a/patches/server/0656-Add-PlayerKickEvent-causes.patch
+++ b/patches/server/0656-Add-PlayerKickEvent-causes.patch
@@ -391,10 +391,10 @@ index 977a23684b061d7390f70f8754a1d879d7d7075a..cd7fdf629ac1dd17e83445afdf352c33
// CraftBukkit end
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index ca8267966307ed5e0cb2fc5e4cf61868a77f50ed..a7a0b892b50302ac7af4588bb65206834134dba2 100644
+index 05903c7da2ff1a5960c66ef23a685c3da8de04ae..e0d7a03b57d42f7eacb40e17c684b409cf165338 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -516,7 +516,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -522,7 +522,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
org.spigotmc.AsyncCatcher.catchOp("player kick"); // Spigot
if (this.getHandle().connection == null) return;
@@ -403,7 +403,7 @@ index ca8267966307ed5e0cb2fc5e4cf61868a77f50ed..a7a0b892b50302ac7af4588bb6520683
}
// Paper start
-@@ -528,10 +528,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -534,10 +534,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void kick(final net.kyori.adventure.text.Component message) {
diff --git a/patches/server/0692-Add-PlayerSetSpawnEvent.patch b/patches/server/0692-Add-PlayerSetSpawnEvent.patch
index e726d70f8..4de7c11b8 100644
--- a/patches/server/0692-Add-PlayerSetSpawnEvent.patch
+++ b/patches/server/0692-Add-PlayerSetSpawnEvent.patch
@@ -129,10 +129,10 @@ index c3e49a781f838e6a46cb89744f3f1846de182275..c2f3d3a09327e7cb7d3167609eb3ce68
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index a7a0b892b50302ac7af4588bb65206834134dba2..5cdb599c6e460672ed0fe15d5c2a9d60ad22c2e3 100644
+index e0d7a03b57d42f7eacb40e17c684b409cf165338..6bc211c98fc4c783545e5c71248f71b27e0853f8 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1206,9 +1206,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1250,9 +1250,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setBedSpawnLocation(Location location, boolean override) {
if (location == null) {
diff --git a/patches/server/0796-Add-player-health-update-API.patch b/patches/server/0796-Add-player-health-update-API.patch
index 96480e59c..d83f693e8 100644
--- a/patches/server/0796-Add-player-health-update-API.patch
+++ b/patches/server/0796-Add-player-health-update-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add player health update API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 5cdb599c6e460672ed0fe15d5c2a9d60ad22c2e3..8882651847fc9a8d2e4222f10eb389b553da48ca 100644
+index 6bc211c98fc4c783545e5c71248f71b27e0853f8..f6ec634a22bc446286c8ecb89064cfee7719ec40 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2142,9 +2142,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2186,9 +2186,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().maxHealthCache = getMaxHealth();
}
@@ -22,7 +22,7 @@ index 5cdb599c6e460672ed0fe15d5c2a9d60ad22c2e3..8882651847fc9a8d2e4222f10eb389b5
if (this.getHandle().queueHealthUpdatePacket) {
this.getHandle().queuedHealthUpdatePacket = packet;
} else {
-@@ -2152,7 +2154,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2196,7 +2198,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// Paper end
}
diff --git a/patches/server/0832-Multi-Block-Change-API-Implementation.patch b/patches/server/0832-Multi-Block-Change-API-Implementation.patch
index 6ae11e6a7..a5e8971f5 100644
--- a/patches/server/0832-Multi-Block-Change-API-Implementation.patch
+++ b/patches/server/0832-Multi-Block-Change-API-Implementation.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Multi Block Change API Implementation
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java
-index 82ea4fabd5732052a286d50bcff8bbcc2c4aa7d7..652bea6868a03a5315965f79c76172fb9dbb93fb 100644
+index 285da70a15f6e4c868747af9d40ac30bd4e42ef4..a0aeac9c29300a0cf6bad55133019e8c29f6cc1c 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSectionBlocksUpdatePacket.java
-@@ -54,6 +54,15 @@ public class ClientboundSectionBlocksUpdatePacket implements Packet blocks, boolean suppressLightUpdates) {
+ Preconditions.checkArgument(blocks != null, "blocks must not be null");
diff --git a/patches/server/0853-Replace-player-chunk-loader-system.patch b/patches/server/0853-Replace-player-chunk-loader-system.patch
index 807c90830..a6d7f180d 100644
--- a/patches/server/0853-Replace-player-chunk-loader-system.patch
+++ b/patches/server/0853-Replace-player-chunk-loader-system.patch
@@ -2176,10 +2176,10 @@ index 73e7181655b78f5bff90d07edfe6c5408cc08235..cf6fce4f3bddcbbae59fd128cf661e45
// Paper end - view distance api
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 86d9250ce0a49635362a2710bf3c064936d1c77f..16fa7bdb8cc4bcad01ed33455cf1e51b69e2f720 100644
+index b318842214ede551215fd68af033feb1c8ef6604..4f5760d782bdfeee25839c50b614301eeb8ba42f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -541,45 +541,80 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -546,45 +546,80 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
diff --git a/patches/server/0918-More-Teleport-API.patch b/patches/server/0918-More-Teleport-API.patch
index b645bde09..f03d3d279 100644
--- a/patches/server/0918-More-Teleport-API.patch
+++ b/patches/server/0918-More-Teleport-API.patch
@@ -69,10 +69,10 @@ index c4ffccddce33cf461d9b04ccbb90026544f16b7d..99b99fae67e53a688b3519d8a8d0cc5f
// Let the server handle cross world teleports
if (location.getWorld() != null && !location.getWorld().equals(this.getWorld())) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 16fa7bdb8cc4bcad01ed33455cf1e51b69e2f720..a8e63a417ab4971ce35569dbb0b792635e8366ae 100644
+index 4f5760d782bdfeee25839c50b614301eeb8ba42f..f6743f383408620a05afa64641a6d5e3519f8076 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -1135,13 +1135,92 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1178,13 +1178,92 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setRotation(float yaw, float pitch) {
@@ -166,7 +166,7 @@ index 16fa7bdb8cc4bcad01ed33455cf1e51b69e2f720..a8e63a417ab4971ce35569dbb0b79263
location.checkFinite();
ServerPlayer entity = this.getHandle();
-@@ -1154,7 +1233,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1197,7 +1276,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return false;
}
@@ -175,7 +175,7 @@ index 16fa7bdb8cc4bcad01ed33455cf1e51b69e2f720..a8e63a417ab4971ce35569dbb0b79263
return false;
}
-@@ -1172,7 +1251,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1215,7 +1294,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// If this player is riding another entity, we must dismount before teleporting.
@@ -184,7 +184,7 @@ index 16fa7bdb8cc4bcad01ed33455cf1e51b69e2f720..a8e63a417ab4971ce35569dbb0b79263
// SPIGOT-5509: Wakeup, similar to riding
if (this.isSleeping()) {
-@@ -1194,7 +1273,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1237,7 +1316,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Check if the fromWorld and toWorld are the same.
if (fromWorld == toWorld) {
diff --git a/patches/server/0923-Custom-Chat-Completion-Suggestions-API.patch b/patches/server/0923-Custom-Chat-Completion-Suggestions-API.patch
index 325982465..e553ad623 100644
--- a/patches/server/0923-Custom-Chat-Completion-Suggestions-API.patch
+++ b/patches/server/0923-Custom-Chat-Completion-Suggestions-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Custom Chat Completion Suggestions API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index a8e63a417ab4971ce35569dbb0b792635e8366ae..41258fcfa0505500665c2f185b9ef6d050213355 100644
+index f6743f383408620a05afa64641a6d5e3519f8076..feff87fba11ff46ce1ebd0f5fdf5132b85c8eddc 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -654,6 +654,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -659,6 +659,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().getServer().getPlayerList().sendPlayerPermissionLevel(this.getHandle(), level, false);
}
diff --git a/patches/server/0937-Add-custom-destroyerIdentity-to-sendBlockDamage.patch b/patches/server/0937-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
index d883e026d..679840a61 100644
--- a/patches/server/0937-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
+++ b/patches/server/0937-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add custom destroyerIdentity to sendBlockDamage
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 41258fcfa0505500665c2f185b9ef6d050213355..4ba927b4585ca56337fa763d60d21de3b58bb2f7 100644
+index feff87fba11ff46ce1ebd0f5fdf5132b85c8eddc..099987645142a5a065b5bd377a16d9d6c59dabd9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -965,13 +965,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -1008,13 +1008,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void sendBlockDamage(Location loc, float progress) {
diff --git a/work/Bukkit b/work/Bukkit
index acdb55f9a..c7c111886 160000
--- a/work/Bukkit
+++ b/work/Bukkit
@@ -1 +1 @@
-Subproject commit acdb55f9a97c6b361947405717eb710b0200e165
+Subproject commit c7c11188610b4b0a59d090b06cabdc239337dcb8
diff --git a/work/CraftBukkit b/work/CraftBukkit
index 08cdd26ca..c2c39089e 160000
--- a/work/CraftBukkit
+++ b/work/CraftBukkit
@@ -1 +1 @@
-Subproject commit 08cdd26ca9c8fbae22ffa03f79ecc564f015e260
+Subproject commit c2c39089eb639479327acb2c9f58bdfb69bc6b81
diff --git a/work/Spigot b/work/Spigot
index 4c157bb49..4aa5ead23 160000
--- a/work/Spigot
+++ b/work/Spigot
@@ -1 +1 @@
-Subproject commit 4c157bb49aa5705967b066e9c2dec5520f720b22
+Subproject commit 4aa5ead2377692b934a84b6853d188e2d9cbd53a