diff --git a/patches/api/0007-Adventure.patch b/patches/api/0007-Adventure.patch
index caafe03256..28d44b3265 100644
--- a/patches/api/0007-Adventure.patch
+++ b/patches/api/0007-Adventure.patch
@@ -7,7 +7,7 @@ Co-authored-by: zml <zml@stellardrift.ca>
 Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
 
 diff --git a/build.gradle.kts b/build.gradle.kts
-index be1e7b4a57cae34f5cda768a6760e1e1245c8774..8fa7ce10256069ada70319fadf3e76dcd7245ab2 100644
+index be1e7b4a57cae34f5cda768a6760e1e1245c8774..b73d9f834e8e50c4cee8592e1e3867bbde8132fe 100644
 --- a/build.gradle.kts
 +++ b/build.gradle.kts
 @@ -10,6 +10,19 @@ java {
@@ -42,6 +42,32 @@ index be1e7b4a57cae34f5cda768a6760e1e1245c8774..8fa7ce10256069ada70319fadf3e76dc
  
      compileOnly("org.apache.maven:maven-resolver-provider:3.8.1")
      compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.0")
+@@ -68,10 +86,25 @@ tasks.jar {
+ }
+ 
+ tasks.withType<Javadoc> {
++    inputs.files(apiAndDocs)
++        .ignoreEmptyDirectories()
++        .withPropertyName(apiAndDocs.name + "-configuration")
++    doFirst {
++        (options as CoreJavadocOptions).addStringOption(
++            "sourcepath",
++            apiAndDocs.resolvedConfiguration.files.joinToString(separator = File.pathSeparator, transform = File::getPath)
++        )
++    }
+     (options as StandardJavadocDocletOptions).links(
+         "https://guava.dev/releases/31.0.1-jre/api/docs/",
+         "https://javadoc.io/doc/org.yaml/snakeyaml/1.28/",
+         "https://javadoc.io/doc/org.jetbrains/annotations/21.0.1/", // Paper - we don't want Java 5 annotations
+         "https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/",
++        // Paper start
++        "https://jd.adventure.kyori.net/api/$adventureVersion/",
++        "https://jd.adventure.kyori.net/text-serializer-gson/$adventureVersion/",
++        "https://jd.adventure.kyori.net/text-serializer-legacy/$adventureVersion/",
++        "https://jd.adventure.kyori.net/text-serializer-plain/$adventureVersion/",
++        // Paper end
+     )
+ }
 diff --git a/src/main/java/co/aikar/timings/TimingsReportListener.java b/src/main/java/co/aikar/timings/TimingsReportListener.java
 index ef58a6c00f444bd498a2d8fc4e457236f393954f..ecd149157d4fb80444f34bf5633d74bcdb63dec5 100644
 --- a/src/main/java/co/aikar/timings/TimingsReportListener.java
@@ -1521,7 +1547,7 @@ index 25a6f9313a1953def7470e411b53016f2ca14bef..10cb6088c4618f228c757f4e592b44ed
 +    // Paper end
  }
 diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a234ec43b 100644
+index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..d88613f54f368a27130675c4ea7569646dbe74d7 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
 @@ -34,7 +34,28 @@ import org.jetbrains.annotations.Nullable;
@@ -1694,10 +1720,11 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
      /**
       * Says a message (or runs a command).
       *
-@@ -472,6 +553,70 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -472,6 +553,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       */
      public void sendEquipmentChange(@NotNull LivingEntity entity, @NotNull EquipmentSlot slot, @NotNull ItemStack item);
  
++    // Paper start
 +    /**
 +     * 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.
@@ -1710,11 +1737,25 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
 +     *
 +     * @param loc the location of the sign
 +     * @param lines the new text on the sign or null to clear it
-+     * @param dyeColor the color of the sign
 +     * @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
 +     */
++    default void sendSignChange(@NotNull Location loc, @Nullable java.util.List<net.kyori.adventure.text.Component> lines) throws IllegalArgumentException {
++        this.sendSignChange(loc, lines, DyeColor.BLACK);
++    }
++
+     /**
+      * 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.
+@@ -484,9 +585,75 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+      *
+      * @param loc the location of the sign
+      * @param lines the new text on the sign or null to clear it
++     * @param dyeColor the color of the sign
+      * @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
+      */
 +    default void sendSignChange(@NotNull Location loc, @Nullable java.util.List<net.kyori.adventure.text.Component> lines, @NotNull DyeColor dyeColor) throws IllegalArgumentException {
 +        this.sendSignChange(loc, lines, dyeColor, false);
 +    }
@@ -1762,20 +1803,27 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
 +        throws IllegalArgumentException;
 +    // Paper end
 +
-     /**
-      * 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.
-@@ -486,7 +631,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
++    /**
++     * 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.
++     * This method will use a sign at the location's block or a faked sign
++     * sent via
++     * {@link #sendBlockChange(org.bukkit.Location, org.bukkit.Material, byte)}.
++     * <p>
++     * If the client does not have a sign at the given location it will
++     * display an error message to the user.
++     *
++     * @param loc the location of the sign
++     * @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
 +     * @deprecated in favour of {@link #sendSignChange(org.bukkit.Location, java.util.List)}
-      */
++     */
 +    @Deprecated // Paper
      public void sendSignChange(@NotNull Location loc, @Nullable String[] lines) throws IllegalArgumentException;
  
      /**
-@@ -505,7 +652,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -505,7 +672,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
@@ -1785,7 +1833,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
      public void sendSignChange(@NotNull Location loc, @Nullable String[] lines, @NotNull DyeColor dyeColor) throws IllegalArgumentException;
  
      /**
-@@ -525,7 +674,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -525,7 +694,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
@@ -1795,7 +1843,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
      public void sendSignChange(@NotNull Location loc, @Nullable String[] lines, @NotNull DyeColor dyeColor, boolean hasGlowingText) throws IllegalArgumentException;
  
      /**
-@@ -1017,7 +1168,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1017,7 +1188,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       *
       * @param title Title text
       * @param subtitle Subtitle text
@@ -1804,7 +1852,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
       */
      @Deprecated
      public void sendTitle(@Nullable String title, @Nullable String subtitle);
-@@ -1036,7 +1187,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1036,7 +1207,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.
@@ -1814,7 +1862,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
      public void sendTitle(@Nullable String title, @Nullable String subtitle, int fadeIn, int stay, int fadeOut);
  
      /**
-@@ -1263,6 +1416,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1263,6 +1436,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       */
      public int getClientViewDistance();
  
@@ -1829,7 +1877,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
      /**
       * Gets the player's estimated ping in milliseconds.
       *
-@@ -1288,8 +1449,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1288,8 +1469,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       * they wish.
       *
       * @return the player's locale
@@ -1840,7 +1888,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
      public String getLocale();
  
      /**
-@@ -1307,6 +1470,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1307,6 +1490,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       */
      public void openBook(@NotNull ItemStack book);
  
@@ -1855,7 +1903,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
      // Spigot start
      public class Spigot extends Entity.Spigot {
  
-@@ -1361,11 +1532,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1361,11 +1552,13 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
              throw new UnsupportedOperationException("Not supported yet.");
          }
  
@@ -1869,7 +1917,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
          @Override
          public void sendMessage(@NotNull net.md_5.bungee.api.chat.BaseComponent... components) {
              throw new UnsupportedOperationException("Not supported yet.");
-@@ -1376,7 +1549,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1376,7 +1569,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
           *
           * @param position the screen position
           * @param component the components to send
@@ -1879,7 +1927,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
          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.");
          }
-@@ -1386,7 +1561,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1386,7 +1581,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
           *
           * @param position the screen position
           * @param components the components to send
@@ -1889,7 +1937,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
          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.");
          }
-@@ -1397,7 +1574,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1397,7 +1594,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
@@ -1899,7 +1947,7 @@ index 8b6cd8f61e1ca03797a26e7549b492a3279dbaa4..28d143e6aedd0c7e1fccf8b3069ab45a
          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.");
          }
-@@ -1408,7 +1587,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1408,7 +1607,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
diff --git a/patches/api/0008-Player-affects-spawning-API.patch b/patches/api/0008-Player-affects-spawning-API.patch
index 908402dce1..1b3ace796e 100644
--- a/patches/api/0008-Player-affects-spawning-API.patch
+++ b/patches/api/0008-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 28d143e6aedd0c7e1fccf8b3069ab45a234ec43b..15ffc7d80bcd7e19fe5477d553e16874d9133c87 100644
+index d88613f54f368a27130675c4ea7569646dbe74d7..3fa8a69376cf6d5cc5987fea5cbbce228b1408d1 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1455,6 +1455,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1475,6 +1475,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
      @Deprecated // Paper
      public String getLocale();
  
diff --git a/patches/api/0013-Add-view-distance-API.patch b/patches/api/0013-Add-view-distance-API.patch
index 39d56d9e1d..7e5aec02a8 100644
--- a/patches/api/0013-Add-view-distance-API.patch
+++ b/patches/api/0013-Add-view-distance-API.patch
@@ -65,10 +65,10 @@ index c58b1885662c6a234ffee75995051c9750c1a512..7b1fb280a86ab44756fc233b085f878d
      public class Spigot {
  
 diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 15ffc7d80bcd7e19fe5477d553e16874d9133c87..e1069d58142c863047b6ed13358e7cfee30a3685 100644
+index 3fa8a69376cf6d5cc5987fea5cbbce228b1408d1..e0254ef7412b4935edd0c4b9801d8eccca7d4a0c 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1469,6 +1469,62 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1489,6 +1489,62 @@ 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/0018-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch b/patches/api/0018-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
index 97e374b6ae..c692f183a3 100644
--- a/patches/api/0018-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
+++ b/patches/api/0018-Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
@@ -76,10 +76,10 @@ index 759237106df6cc2798330be22f7bdb8d18e8f427..e654e00c145fb6f0ce2238d88de9be5d
       * 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 e1069d58142c863047b6ed13358e7cfee30a3685..240931b0d2c4673ec33b2d7e93acf5ba99615ad9 100644
+index e0254ef7412b4935edd0c4b9801d8eccca7d4a0c..19b9a14b855a5e15c9a6fc9544873265bdbaf203 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -687,6 +687,42 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -707,6 +707,42 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       */
      public void sendMap(@NotNull MapView map);
  
diff --git a/patches/api/0020-Player-Tab-List-and-Title-APIs.patch b/patches/api/0020-Player-Tab-List-and-Title-APIs.patch
index 503d2efb3d..22fe4c35e0 100644
--- a/patches/api/0020-Player-Tab-List-and-Title-APIs.patch
+++ b/patches/api/0020-Player-Tab-List-and-Title-APIs.patch
@@ -432,7 +432,7 @@ index 0000000000000000000000000000000000000000..9e90c3df567a65b48a0b9341f784eb90
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 240931b0d2c4673ec33b2d7e93acf5ba99615ad9..3eeb6a1ea9557f9d1d4eb288beb11a44724b47c4 100644
+index 19b9a14b855a5e15c9a6fc9544873265bdbaf203..9468b955e035e3aa733b62f17417d8e99f37ac9f 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;
@@ -443,7 +443,7 @@ index 240931b0d2c4673ec33b2d7e93acf5ba99615ad9..3eeb6a1ea9557f9d1d4eb288beb11a44
  import org.bukkit.DyeColor;
  import org.bukkit.Effect;
  import org.bukkit.GameMode;
-@@ -721,6 +722,131 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -741,6 +742,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/0024-Complete-resource-pack-API.patch b/patches/api/0024-Complete-resource-pack-API.patch
index 87612f9a1d..c4c9e35d32 100644
--- a/patches/api/0024-Complete-resource-pack-API.patch
+++ b/patches/api/0024-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 3eeb6a1ea9557f9d1d4eb288beb11a44724b47c4..2b6dd6637a35d32be455f60717a8155f987bb46a 100644
+index 9468b955e035e3aa733b62f17417d8e99f37ac9f..e1793f09c84c631c3b281d642f0fbabfffa5fc44 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -1197,7 +1197,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1217,7 +1217,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 3eeb6a1ea9557f9d1d4eb288beb11a44724b47c4..2b6dd6637a35d32be455f60717a8155f
      public void setResourcePack(@NotNull String url);
  
      /**
-@@ -1710,6 +1712,124 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1730,6 +1732,124 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
      default net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowEntity> asHoverEvent(final @NotNull java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowEntity> 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/0044-Add-String-based-Action-Bar-API.patch b/patches/api/0044-Add-String-based-Action-Bar-API.patch
index 942236d9bf..915a7dc717 100644
--- a/patches/api/0044-Add-String-based-Action-Bar-API.patch
+++ b/patches/api/0044-Add-String-based-Action-Bar-API.patch
@@ -5,7 +5,7 @@ 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 2b6dd6637a35d32be455f60717a8155f987bb46a..27af55013caa15dce60ae94f8a916fbe046c3bf3 100644
+index e1793f09c84c631c3b281d642f0fbabfffa5fc44..aafceef3e547c4883a3015b5705215d44415629c 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;
@@ -16,7 +16,7 @@ index 2b6dd6637a35d32be455f60717a8155f987bb46a..27af55013caa15dce60ae94f8a916fbe
  import org.bukkit.DyeColor;
  import org.bukkit.Effect;
  import org.bukkit.GameMode;
-@@ -689,6 +690,39 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -709,6 +710,39 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
      public void sendMap(@NotNull MapView map);
  
      // Paper start
@@ -56,7 +56,7 @@ index 2b6dd6637a35d32be455f60717a8155f987bb46a..27af55013caa15dce60ae94f8a916fbe
      /**
       * Sends the component to the player
       *
-@@ -716,9 +750,11 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -736,9 +770,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 2b6dd6637a35d32be455f60717a8155f987bb46a..27af55013caa15dce60ae94f8a916fbe
      public default void sendMessage(net.md_5.bungee.api.ChatMessageType position, net.md_5.bungee.api.chat.BaseComponent... components) {
          spigot().sendMessage(position, components);
      }
-@@ -1901,6 +1937,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1921,6 +1957,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 2b6dd6637a35d32be455f60717a8155f987bb46a..27af55013caa15dce60ae94f8a916fbe
           * @param position the screen position
           * @param component the components to send
           * @deprecated use {@code sendMessage} methods that accept {@link net.kyori.adventure.text.Component}
-@@ -1913,6 +1950,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1933,6 +1970,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/0053-Fix-upstream-javadocs.patch b/patches/api/0053-Fix-upstream-javadocs.patch
index eb30243dde..1f8d9aac0a 100644
--- a/patches/api/0053-Fix-upstream-javadocs.patch
+++ b/patches/api/0053-Fix-upstream-javadocs.patch
@@ -76,10 +76,10 @@ index be9334a8b5fba9181ad63c211697e798be63da25..0514a141cb93a650be38c63d4336d46e
       * Instructs this Mob to set the specified LivingEntity as its target.
       * <p>
 diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 27af55013caa15dce60ae94f8a916fbe046c3bf3..0dae92b41684e9c2ada74d8987f922db04a419ca 100644
+index aafceef3e547c4883a3015b5705215d44415629c..a9a19307d668549ab16cb00298abac0cc38b8f06 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -707,7 +707,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -727,7 +727,7 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       *
       * Use supplied alternative character to the section symbol to represent legacy color codes.
       *
diff --git a/patches/api/0079-Ability-to-apply-mending-to-XP-API.patch b/patches/api/0079-Ability-to-apply-mending-to-XP-API.patch
index 45a94fc091..af34682202 100644
--- a/patches/api/0079-Ability-to-apply-mending-to-XP-API.patch
+++ b/patches/api/0079-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 34445011ccd22753a345dfc1ff87e01d2432654c..bc9a6bdbde5a34f736b227f283aa0cc5f13d7bea 100644
+index b4c7f2d6de64d32804c8630f0ea1563a876b3510..96f1f1544d03d2928e95daa0dd02579ef3fdc87c 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -965,12 +965,33 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -985,12 +985,33 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       */
      public void resetPlayerWeather();
  
diff --git a/patches/api/0090-Player.setPlayerProfile-API.patch b/patches/api/0090-Player.setPlayerProfile-API.patch
index c37537f84b..4d0c7890eb 100644
--- a/patches/api/0090-Player.setPlayerProfile-API.patch
+++ b/patches/api/0090-Player.setPlayerProfile-API.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Player.setPlayerProfile API
 This can be useful for changing name or skins after a player has logged in.
 
 diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index bc9a6bdbde5a34f736b227f283aa0cc5f13d7bea..e1947f79eee7bb7d7057b3a1f6a9479573ab9b0b 100644
+index 96f1f1544d03d2928e95daa0dd02579ef3fdc87c..b2fdf015b8a86ca96eb5c92aa85d7e36ee21aaad 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
 @@ -4,6 +4,7 @@ import java.net.InetSocketAddress;
@@ -17,7 +17,7 @@ index bc9a6bdbde5a34f736b227f283aa0cc5f13d7bea..e1947f79eee7bb7d7057b3a1f6a94795
  import org.bukkit.DyeColor;
  import org.bukkit.Effect;
  import org.bukkit.GameMode;
-@@ -1887,6 +1888,20 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -1907,6 +1908,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-Ban-Methods-to-Player-Objects.patch b/patches/api/0094-Add-Ban-Methods-to-Player-Objects.patch
index 950e4677c4..3e729be1ac 100644
--- a/patches/api/0094-Add-Ban-Methods-to-Player-Objects.patch
+++ b/patches/api/0094-Add-Ban-Methods-to-Player-Objects.patch
@@ -74,7 +74,7 @@ index 58313929f81509030216a0e5e3869da63e11108e..6cf05fed701c67a2c797a4e0839c7958
      /**
       * 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 e1947f79eee7bb7d7057b3a1f6a9479573ab9b0b..e00d7331e61be3dcac04e21d5ecabb0511e98c00 100644
+index b2fdf015b8a86ca96eb5c92aa85d7e36ee21aaad..83bd47744d3e056264e6bf024b45cc86fcd5ea42 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
 @@ -5,6 +5,10 @@ import java.util.UUID;
@@ -88,7 +88,7 @@ index e1947f79eee7bb7d7057b3a1f6a9479573ab9b0b..e00d7331e61be3dcac04e21d5ecabb05
  import org.bukkit.DyeColor;
  import org.bukkit.Effect;
  import org.bukkit.GameMode;
-@@ -691,6 +695,162 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -711,6 +715,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 634f29c9fb..7942a79179 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 e00d7331e61be3dcac04e21d5ecabb0511e98c00..48279dedc5458d262265dd93aba686e8ae1a5ef1 100644
+index 83bd47744d3e056264e6bf024b45cc86fcd5ea42..65222badf1e06847d59e05366bbfea4b2e039d96 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2062,6 +2062,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2082,6 +2082,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       * @param profile The new profile to use
       */
      void setPlayerProfile(@NotNull PlayerProfile profile);
diff --git a/patches/api/0197-Add-Player-Client-Options-API.patch b/patches/api/0197-Add-Player-Client-Options-API.patch
index 27ca3b4988..8cbd4be79a 100644
--- a/patches/api/0197-Add-Player-Client-Options-API.patch
+++ b/patches/api/0197-Add-Player-Client-Options-API.patch
@@ -193,7 +193,7 @@ index 0000000000000000000000000000000000000000..f7f171c4ee0b8339b2f8fbe82442d65f
 +    }
 +}
 diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index 48279dedc5458d262265dd93aba686e8ae1a5ef1..f08e2defd8fa2b1455ad695fe2cc12eb881b1dc1 100644
+index 65222badf1e06847d59e05366bbfea4b2e039d96..34c2775e3b0ee42dc51f15ad94a084a9357780b6 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;
@@ -204,7 +204,7 @@ index 48279dedc5458d262265dd93aba686e8ae1a5ef1..f08e2defd8fa2b1455ad695fe2cc12eb
  import com.destroystokyo.paper.Title; // Paper
  import net.kyori.adventure.text.Component;
  import com.destroystokyo.paper.profile.PlayerProfile; // Paper
-@@ -2082,6 +2083,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2102,6 +2103,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/0222-Brand-support.patch b/patches/api/0222-Brand-support.patch
index 0bc2480d5d..b4f834b856 100644
--- a/patches/api/0222-Brand-support.patch
+++ b/patches/api/0222-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 f08e2defd8fa2b1455ad695fe2cc12eb881b1dc1..c33a9c9eb33bf797506e40ed0f26b38d788987df 100644
+index 34c2775e3b0ee42dc51f15ad94a084a9357780b6..3eaf8597a14852a33e42244a7d60bb45a13f7c16 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2217,6 +2217,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2237,6 +2237,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
          // Paper end
      }
  
diff --git a/patches/api/0231-Player-elytra-boost-API.patch b/patches/api/0231-Player-elytra-boost-API.patch
index c89f42780c..89ebdab932 100644
--- a/patches/api/0231-Player-elytra-boost-API.patch
+++ b/patches/api/0231-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 c33a9c9eb33bf797506e40ed0f26b38d788987df..db6eb3f2925d69bdd23a572842f39f6effad59ca 100644
+index 3eaf8597a14852a33e42244a7d60bb45a13f7c16..183ff01dbf8301f0f3d85156bc341a10360c9e4b 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2089,6 +2089,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2109,6 +2109,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       */
      @NotNull
      <T> T getClientOption(@NotNull ClientOption<T> option);
diff --git a/patches/api/0260-Add-sendOpLevel-API.patch b/patches/api/0260-Add-sendOpLevel-API.patch
index 3b907a4038..b88e857555 100644
--- a/patches/api/0260-Add-sendOpLevel-API.patch
+++ b/patches/api/0260-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 db6eb3f2925d69bdd23a572842f39f6effad59ca..34e7991a0f07793c42abd41fd8c1787deb1b8f5d 100644
+index 183ff01dbf8301f0f3d85156bc341a10360c9e4b..9040050ae896fe9a43899b876f6ea16c236db347 100644
 --- a/src/main/java/org/bukkit/entity/Player.java
 +++ b/src/main/java/org/bukkit/entity/Player.java
-@@ -2102,6 +2102,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
+@@ -2122,6 +2122,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
       */
      @Nullable
      Firework boostElytra(@NotNull ItemStack firework);