diff --git a/patches/unapplied/server/0501-Add-Wandering-Trader-spawn-rate-config-options.patch b/patches/server/0484-Add-Wandering-Trader-spawn-rate-config-options.patch
similarity index 100%
rename from patches/unapplied/server/0501-Add-Wandering-Trader-spawn-rate-config-options.patch
rename to patches/server/0484-Add-Wandering-Trader-spawn-rate-config-options.patch
diff --git a/patches/unapplied/server/0502-Expose-world-spawn-angle.patch b/patches/server/0485-Expose-world-spawn-angle.patch
similarity index 87%
rename from patches/unapplied/server/0502-Expose-world-spawn-angle.patch
rename to patches/server/0485-Expose-world-spawn-angle.patch
index 80374db33..3000546e7 100644
--- a/patches/unapplied/server/0502-Expose-world-spawn-angle.patch
+++ b/patches/server/0485-Expose-world-spawn-angle.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose world spawn angle
 
 
 diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 1f739c0e9a6323967719a515bfce6c4885d8dae6..cd8e11b073f53c824965c91129d502f89ac2b465 100644
+index f365eb9705ca78dd586c4e6492015d8710514efc..265ecfa5bb7fe6b44ae04f64a08788fcd827f903 100644
 --- a/src/main/java/net/minecraft/server/players/PlayerList.java
 +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -830,7 +830,7 @@ public abstract class PlayerList {
+@@ -837,7 +837,7 @@ public abstract class PlayerList {
              if (location == null) {
                  worldserver1 = this.server.getLevel(Level.OVERWORLD);
                  blockposition = entityplayer1.getSpawnPoint(worldserver1);
diff --git a/patches/unapplied/server/0503-Add-Destroy-Speed-API.patch b/patches/server/0486-Add-Destroy-Speed-API.patch
similarity index 94%
rename from patches/unapplied/server/0503-Add-Destroy-Speed-API.patch
rename to patches/server/0486-Add-Destroy-Speed-API.patch
index d69d702d7..76e967d4a 100644
--- a/patches/unapplied/server/0503-Add-Destroy-Speed-API.patch
+++ b/patches/server/0486-Add-Destroy-Speed-API.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Add Destroy Speed API
 Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 1cfbe11ba3e82071bad8b723ac781818268414f2..5cca837474205eaa7bffadf31a60bf352ef7365b 100644
+index cd39ec0e87974be616f10321d953fd2f3af194f7..6c6867c007cec2b8364c875fbfc25c372b39351c 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 @@ -701,5 +701,26 @@ public class CraftBlock implements Block {
diff --git a/patches/unapplied/server/0504-Fix-Player-spawnParticle-x-y-z-precision-loss.patch b/patches/server/0487-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
similarity index 89%
rename from patches/unapplied/server/0504-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
rename to patches/server/0487-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
index d81d5e18f..a707561ba 100644
--- a/patches/unapplied/server/0504-Fix-Player-spawnParticle-x-y-z-precision-loss.patch
+++ b/patches/server/0487-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 28d0d184e990e30835d2848a32e53c39dd704319..01fd98028c3d7a3faa8fb3857116c38c752a2ea9 100644
+index cfca7a4e71c2f74846238b1bf2fbf2ff094b7a0f..bf9844dcff3ceca0f059baad5569a168597e7c4a 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -2514,7 +2514,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -2445,7 +2445,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/unapplied/server/0505-Add-LivingEntity-clearActiveItem.patch b/patches/server/0488-Add-LivingEntity-clearActiveItem.patch
similarity index 100%
rename from patches/unapplied/server/0505-Add-LivingEntity-clearActiveItem.patch
rename to patches/server/0488-Add-LivingEntity-clearActiveItem.patch
diff --git a/patches/unapplied/server/0506-Add-PlayerItemCooldownEvent.patch b/patches/server/0489-Add-PlayerItemCooldownEvent.patch
similarity index 100%
rename from patches/unapplied/server/0506-Add-PlayerItemCooldownEvent.patch
rename to patches/server/0489-Add-PlayerItemCooldownEvent.patch
diff --git a/patches/unapplied/server/0507-Significantly-improve-performance-of-the-end-generat.patch b/patches/server/0490-Significantly-improve-performance-of-the-end-generat.patch
similarity index 100%
rename from patches/unapplied/server/0507-Significantly-improve-performance-of-the-end-generat.patch
rename to patches/server/0490-Significantly-improve-performance-of-the-end-generat.patch
diff --git a/patches/unapplied/server/0508-More-lightning-API.patch b/patches/server/0491-More-lightning-API.patch
similarity index 100%
rename from patches/unapplied/server/0508-More-lightning-API.patch
rename to patches/server/0491-More-lightning-API.patch
diff --git a/patches/unapplied/server/0509-Climbing-should-not-bypass-cramming-gamerule.patch b/patches/server/0492-Climbing-should-not-bypass-cramming-gamerule.patch
similarity index 78%
rename from patches/unapplied/server/0509-Climbing-should-not-bypass-cramming-gamerule.patch
rename to patches/server/0492-Climbing-should-not-bypass-cramming-gamerule.patch
index 21cfdd6f7..c5cb7162b 100644
--- a/patches/unapplied/server/0509-Climbing-should-not-bypass-cramming-gamerule.patch
+++ b/patches/server/0492-Climbing-should-not-bypass-cramming-gamerule.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Climbing should not bypass cramming gamerule
 
 
 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 3d9447b976fbaedb55b526efba7e5d9e7110ade7..d5a5f499bbdc950b66de62370482f122e4a16511 100644
+index a4926cdfeac99b78ca2551a8d0e6f1fab9ca985b..f359cf2f9e3a866a569ca3a97f8373758e0140e2 100644
 --- a/src/main/java/net/minecraft/world/entity/Entity.java
 +++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -1930,6 +1930,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+@@ -1964,6 +1964,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
      }
  
      public boolean isPushable() {
@@ -22,7 +22,7 @@ index 3d9447b976fbaedb55b526efba7e5d9e7110ade7..d5a5f499bbdc950b66de62370482f122
      }
  
 diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java
-index 302676ef78ed5b3b7fc1b04851447ca72eed10c0..a00c3d96f2fc7131d1f4afa7af4e41ace3cfce89 100644
+index 9edea92834306b39abda36ba9be4e8796f113cc4..f6e5406f84410ab9c177213157106739a2074cf8 100644
 --- a/src/main/java/net/minecraft/world/entity/EntitySelector.java
 +++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java
 @@ -45,11 +45,17 @@ public final class EntitySelector {
@@ -42,22 +42,22 @@ index 302676ef78ed5b3b7fc1b04851447ca72eed10c0..a00c3d96f2fc7131d1f4afa7af4e41ac
 -            if (!entity1.canCollideWithBukkit(entity) || !entity.canCollideWithBukkit(entity1)) { // CraftBukkit - collidable API
 +            if (!entity1.isCollidable(ignoreClimbing) || !entity1.canCollideWithBukkit(entity) || !entity.canCollideWithBukkit(entity1)) { // CraftBukkit - collidable API // Paper - isCollidable
                  return false;
-             } else if (entity.level.isClientSide && (!(entity1 instanceof Player) || !((Player) entity1).isLocalPlayer())) {
+             } else if (entity.level().isClientSide && (!(entity1 instanceof Player) || !((Player) entity1).isLocalPlayer())) {
                  return false;
 diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 450d6c28dcf8969902ab75d4a7b06aa9c3013fb4..fcd670d1371dca3bb644dfea79f98670d75a68a4 100644
+index 84f56d1eb0075f1f3d3d52d1b893732c3804c276..922e953234998f1322cb9fb72b02321b7975a674 100644
 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
 +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -3356,7 +3356,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3405,7 +3405,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
                  return;
              }
              // Paper end - don't run getEntities if we're not going to use its result
--            List<Entity> list = this.level.getEntities((Entity) this, this.getBoundingBox(), EntitySelector.pushableBy(this));
-+            List<Entity> list = this.level.getEntities((Entity) this, this.getBoundingBox(), EntitySelector.pushable(this, level.paperConfig().collisions.fixClimbingBypassingCrammingRule)); // Paper - fix climbing bypassing cramming rule
+-            List<Entity> list = this.level().getEntities((Entity) this, this.getBoundingBox(), EntitySelector.pushableBy(this));
++            List<Entity> list = this.level().getEntities((Entity) this, this.getBoundingBox(), EntitySelector.pushable(this, this.level().paperConfig().collisions.fixClimbingBypassingCrammingRule)); // Paper - fix climbing bypassing cramming rule
  
              if (!list.isEmpty()) {
                  // Paper - moved up
-@@ -3516,9 +3516,16 @@ public abstract class LivingEntity extends Entity implements Attackable {
+@@ -3565,9 +3565,16 @@ public abstract class LivingEntity extends Entity implements Attackable {
          return !this.isRemoved() && this.collides; // CraftBukkit
      }
  
@@ -65,7 +65,7 @@ index 450d6c28dcf8969902ab75d4a7b06aa9c3013fb4..fcd670d1371dca3bb644dfea79f98670
      @Override
      public boolean isPushable() {
 -        return this.isAlive() && !this.isSpectator() && !this.onClimbable() && this.collides; // CraftBukkit
-+        return this.isCollidable(level.paperConfig().collisions.fixClimbingBypassingCrammingRule);
++        return this.isCollidable(this.level().paperConfig().collisions.fixClimbingBypassingCrammingRule);
 +    }
 +
 +    @Override
@@ -76,7 +76,7 @@ index 450d6c28dcf8969902ab75d4a7b06aa9c3013fb4..fcd670d1371dca3bb644dfea79f98670
  
      // CraftBukkit start - collidable API
 diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
-index eb53029868ceebe08281ae1012e5ae95d555fc93..f5efdf59617d43de18a2267351fa784c0be3ae83 100644
+index 8aae860fae71570d88453d0d56d40a519f889326..940cd932e74bc2e6754186731d7aa6f10d56eb68 100644
 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
 +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
 @@ -85,7 +85,7 @@ public class Bat extends AmbientCreature {
@@ -89,7 +89,7 @@ index eb53029868ceebe08281ae1012e5ae95d555fc93..f5efdf59617d43de18a2267351fa784c
      }
  
 diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
-index 047f8cc00eb361eecc2cb93980b56d61d09a014c..e6e40770acf71b9079e8f6ac07025319dd8e2e4e 100644
+index a32845854d9575ae950c47179ceff4ac149ebc01..3cc7af656433117991547476c118b58cff95e8e2 100644
 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
 +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
 @@ -381,8 +381,8 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -104,10 +104,10 @@ index 047f8cc00eb361eecc2cb93980b56d61d09a014c..e6e40770acf71b9079e8f6ac07025319
  
      @Override
 diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
-index 0a1d441837a74184cdb4fd234981fc0547375dda..68788aa7a1db1468aecf0a2acb1ac03d92c9f5b9 100644
+index d4c874f4ba924f9f2067e22846a41699ad190a60..bb2a75f25a2959c8d387836f806b544b73e2e7c7 100644
 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
 +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
-@@ -285,7 +285,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
+@@ -281,7 +281,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
      }
  
      @Override
@@ -117,7 +117,7 @@ index 0a1d441837a74184cdb4fd234981fc0547375dda..68788aa7a1db1468aecf0a2acb1ac03d
      }
  
 diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
-index 3be5ea477cb3dd3ce75f3feced8daf7cce7075cd..3677dd991ae73428984e62e4d6fb757317987887 100644
+index 101e3a1f0f52b67b55c99c2619cc43298d92a3f2..8a8b9e8983be1acad66ad875c901be5bbdeabb1f 100644
 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
 +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
 @@ -343,7 +343,7 @@ public class ArmorStand extends LivingEntity {
@@ -130,10 +130,10 @@ index 3be5ea477cb3dd3ce75f3feced8daf7cce7075cd..3677dd991ae73428984e62e4d6fb7573
      }
  
 diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
-index b66f06d0442ed65023f84ea15651ddfc72f056a5..a2e3b3a60ec31f2399f733ab1931c060ced7ae6d 100644
+index c2a18a8e52f897bc96227854646e53e4dc189362..1f909082eb123bfe37e1078962ee7d71c78a8194 100644
 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
 +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
-@@ -147,7 +147,7 @@ public abstract class AbstractMinecart extends Entity {
+@@ -148,7 +148,7 @@ public abstract class AbstractMinecart extends Entity {
      }
  
      @Override
@@ -143,7 +143,7 @@ index b66f06d0442ed65023f84ea15651ddfc72f056a5..a2e3b3a60ec31f2399f733ab1931c060
      }
  
 diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
-index 8921c74ebf922c5af0db72793cd046b959543663..b2ecd45588d930f6847d11d3fb3c5fb02abd7737 100644
+index d204de1793b4e37b18dd7ac705858cdf8bbc6aa0..b978d5fb28ef1472bd890df0229cf7535ead6b00 100644
 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
 +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
 @@ -160,7 +160,7 @@ public class Boat extends Entity implements VariantHolder<Boat.Type> {
diff --git a/patches/unapplied/server/0510-Added-missing-default-perms-for-commands.patch b/patches/server/0493-Added-missing-default-perms-for-commands.patch
similarity index 100%
rename from patches/unapplied/server/0510-Added-missing-default-perms-for-commands.patch
rename to patches/server/0493-Added-missing-default-perms-for-commands.patch
diff --git a/patches/unapplied/server/0511-Add-PlayerShearBlockEvent.patch b/patches/server/0494-Add-PlayerShearBlockEvent.patch
similarity index 98%
rename from patches/unapplied/server/0511-Add-PlayerShearBlockEvent.patch
rename to patches/server/0494-Add-PlayerShearBlockEvent.patch
index 019a28516..9a31074c9 100644
--- a/patches/unapplied/server/0511-Add-PlayerShearBlockEvent.patch
+++ b/patches/server/0494-Add-PlayerShearBlockEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerShearBlockEvent
 
 
 diff --git a/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java b/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java
-index f3cefffc5629b2fbd412ec3d554fbd5c237cb6bc..e3704080dc44ea429ecdc477e2ac57692d7833fc 100644
+index 97ae550e388a8fa139fa36b830351f233db5da86..26f928ad94aed7f1078a31d8a0af2dc377a48d0f 100644
 --- a/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java
 +++ b/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java
 @@ -113,7 +113,7 @@ public class BeehiveBlock extends BaseEntityBlock {
diff --git a/patches/unapplied/server/0512-Fix-curing-zombie-villager-discount-exploit.patch b/patches/server/0495-Fix-curing-zombie-villager-discount-exploit.patch
similarity index 88%
rename from patches/unapplied/server/0512-Fix-curing-zombie-villager-discount-exploit.patch
rename to patches/server/0495-Fix-curing-zombie-villager-discount-exploit.patch
index 03d56c455..aeec8d3b6 100644
--- a/patches/unapplied/server/0512-Fix-curing-zombie-villager-discount-exploit.patch
+++ b/patches/server/0495-Fix-curing-zombie-villager-discount-exploit.patch
@@ -8,10 +8,10 @@ and curing a villager on repeat by simply resetting the relevant part of
 the reputation when it is cured.
 
 diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-index 279b247f579a46183bdb90064ee169d3f9b0b1e3..235e41ddd77e126648df81d9d187a1bd178e19fe 100644
+index 24434b66d158b10d21579b2db6efb0bdcc788a5c..0c78c1ccb1443dca7efc5a429b6020373fc7331e 100644
 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
 +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
-@@ -992,6 +992,15 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+@@ -1000,6 +1000,15 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
      @Override
      public void onReputationEventFrom(ReputationEventType interaction, Entity entity) {
          if (interaction == ReputationEventType.ZOMBIE_VILLAGER_CURED) {
diff --git a/patches/unapplied/server/0513-Limit-recipe-packets.patch b/patches/server/0496-Limit-recipe-packets.patch
similarity index 77%
rename from patches/unapplied/server/0513-Limit-recipe-packets.patch
rename to patches/server/0496-Limit-recipe-packets.patch
index c20f647e2..ccb45cae0 100644
--- a/patches/unapplied/server/0513-Limit-recipe-packets.patch
+++ b/patches/server/0496-Limit-recipe-packets.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Limit recipe packets
 
 
 diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 5f6cbead15aca14ad983bb49ab52fe1e71bb24ec..97e842e2268fa1084d46d2423e2212d97a3c6c05 100644
+index 5a5b3d412d6982efbbe6fca3f794988ba7d5f704..6dd9132ef61af5cb07fade4624ac51d6a81d1535 100644
 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
 +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
 @@ -266,6 +266,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -24,18 +24,19 @@ index 5f6cbead15aca14ad983bb49ab52fe1e71bb24ec..97e842e2268fa1084d46d2423e2212d9
          /* Use thread-safe field access instead
          if (this.chatSpamTickCount > 0) {
              --this.chatSpamTickCount;
-@@ -3134,6 +3136,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -3126,6 +3128,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
  
      @Override
      public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) {
++        PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
 +        // Paper start
 +        if (!org.bukkit.Bukkit.isPrimaryThread()) {
-+            if (recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) {
-+                server.scheduleOnMain(() -> this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam", new Object[0]))); // Paper
++            if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) {
++                this.server.scheduleOnMain(() -> this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam", new Object[0]))); // Paper
 +                return;
 +            }
 +        }
 +        // Paper end
-         PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel());
+         PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
          this.player.resetLastActionTime();
          if (!this.player.isSpectator() && this.player.containerMenu.containerId == packet.getContainerId() && this.player.containerMenu instanceof RecipeBookMenu) {
diff --git a/patches/unapplied/server/0514-Fix-CraftSound-backwards-compatibility.patch b/patches/server/0497-Fix-CraftSound-backwards-compatibility.patch
similarity index 100%
rename from patches/unapplied/server/0514-Fix-CraftSound-backwards-compatibility.patch
rename to patches/server/0497-Fix-CraftSound-backwards-compatibility.patch
diff --git a/patches/unapplied/server/0515-Player-Chunk-Load-Unload-Events.patch b/patches/server/0498-Player-Chunk-Load-Unload-Events.patch
similarity index 90%
rename from patches/unapplied/server/0515-Player-Chunk-Load-Unload-Events.patch
rename to patches/server/0498-Player-Chunk-Load-Unload-Events.patch
index 43fc68646..6f7fe26cc 100644
--- a/patches/unapplied/server/0515-Player-Chunk-Load-Unload-Events.patch
+++ b/patches/server/0498-Player-Chunk-Load-Unload-Events.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Player Chunk Load/Unload Events
 
 
 diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 5c38036574951ef4080da5e3315ce516acb53484..cd2d5dc3a51a4600699bd20630d32a7d0897900e 100644
+index f05900394e0a00b8cad67cfbc7bb817513202553..38a24e4561dc9be4f95db5c0d0e4465ce3b4a2a4 100644
 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
 +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -2188,11 +2188,21 @@ public class ServerPlayer extends Player {
+@@ -2190,11 +2190,21 @@ public class ServerPlayer extends Player {
  
      public void trackChunk(ChunkPos chunkPos, Packet<?> chunkDataPacket) {
          this.connection.send(chunkDataPacket);
diff --git a/patches/unapplied/server/0516-Optimize-Dynamic-get-Missing-Keys.patch b/patches/server/0499-Optimize-Dynamic-get-Missing-Keys.patch
similarity index 100%
rename from patches/unapplied/server/0516-Optimize-Dynamic-get-Missing-Keys.patch
rename to patches/server/0499-Optimize-Dynamic-get-Missing-Keys.patch
diff --git a/patches/unapplied/server/0517-Expose-LivingEntity-hurt-direction.patch b/patches/server/0500-Expose-LivingEntity-hurt-direction.patch
similarity index 90%
rename from patches/unapplied/server/0517-Expose-LivingEntity-hurt-direction.patch
rename to patches/server/0500-Expose-LivingEntity-hurt-direction.patch
index 94cc2314e..8bda79717 100644
--- a/patches/unapplied/server/0517-Expose-LivingEntity-hurt-direction.patch
+++ b/patches/server/0500-Expose-LivingEntity-hurt-direction.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose LivingEntity hurt direction
 
 
 diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 1ada0736ce35c0299e40d4ce8fbe49f170ea0c6f..70ce47777793d416d5f0bbcbf087e2f0a28a7740 100644
+index a8731cf957da9aad7ed6f5d372500bc34afd32ca..b36492efc3d6338e0099988c1ff31e7211b7d010 100644
 --- a/src/main/java/net/minecraft/world/entity/player/Player.java
 +++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -181,7 +181,7 @@ public abstract class Player extends LivingEntity {
+@@ -182,7 +182,7 @@ public abstract class Player extends LivingEntity {
      private Optional<GlobalPos> lastDeathLocation;
      @Nullable
      public FishingHook fishing;
@@ -18,7 +18,7 @@ index 1ada0736ce35c0299e40d4ce8fbe49f170ea0c6f..70ce47777793d416d5f0bbcbf087e2f0
      public boolean affectsSpawning = true;
      // Paper end
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
-index 581d99e0dbf4b1a59389645f01f33aed7a340686..ffd07d9751deb87902213a3349bcb398ee281640 100644
+index 43a98bcd8e9fe8b204d6d750e3e301cc644024cb..dfee605acb2da327d53101295267c31119187bfa 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
 @@ -126,6 +126,13 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
diff --git a/patches/unapplied/server/0518-Add-OBSTRUCTED-reason-to-BedEnterResult.patch b/patches/server/0501-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
similarity index 91%
rename from patches/unapplied/server/0518-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
rename to patches/server/0501-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
index 4cdcac556..39424b498 100644
--- a/patches/unapplied/server/0518-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
+++ b/patches/server/0501-Add-OBSTRUCTED-reason-to-BedEnterResult.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add OBSTRUCTED reason to BedEnterResult
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 79c542421199a5d9984f104204b275e050581db5..080c6581ba120e223b5c765cbd9225ef57150176 100644
+index 6528757c99c55c1d9926da89efed468def758af3..e21d1404167ccd461359ccb0ceb90c4c809caabc 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 @@ -267,6 +267,10 @@ public class CraftEventFactory {
diff --git a/patches/unapplied/server/0519-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch b/patches/server/0502-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch
similarity index 93%
rename from patches/unapplied/server/0519-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch
rename to patches/server/0502-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch
index 87fc5a389..94e14e3d1 100644
--- a/patches/unapplied/server/0519-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch
+++ b/patches/server/0502-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Do not crash from invalid ingredient lists in
 
 
 diff --git a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
-index 49bc867f189b0d4c236a47670676cc67920c2cd7..e7dda8959eb92c069af001126aafc759e7e7d2de 100644
+index 0a62cf36a95d7bf1287acdd17464fc677c7a4b7d..fe003c42f002e229111c46a79ac6a961c60db912 100644
 --- a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
 +++ b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
 @@ -275,7 +275,11 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
diff --git a/patches/unapplied/server/0520-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch b/patches/server/0503-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch
similarity index 95%
rename from patches/unapplied/server/0520-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch
rename to patches/server/0503-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch
index d50b67277..83659338a 100644
--- a/patches/unapplied/server/0520-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch
+++ b/patches/server/0503-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Add PlayerTradeEvent and PlayerPurchaseEvent
 Co-authored-by: Alexander <protonull@protonmail.com>
 
 diff --git a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
-index e7dda8959eb92c069af001126aafc759e7e7d2de..ca96b893e22de3ae7c11d5cded51edf70bdcb6f2 100644
+index fe003c42f002e229111c46a79ac6a961c60db912..564908ce0a560c2190fb624e77d227d3b7031024 100644
 --- a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
 +++ b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
 @@ -138,11 +138,24 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa
@@ -37,10 +37,10 @@ index e7dda8959eb92c069af001126aafc759e7e7d2de..ca96b893e22de3ae7c11d5cded51edf7
              CriteriaTriggers.TRADE.trigger((ServerPlayer) this.tradingPlayer, this, offer.getResult());
          }
 diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
-index 5098147fc97c1f7bebc64bdd31ff03f779bb3935..75f809ee3d46971ce2ae9ec5bc89aeec1e85fdfb 100644
+index 85a6bc46817c7272855a7f3aa8c206d7b3f8512e..4ac91ba7dc754b120189fd32d24076d51b17d7c6 100644
 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
 +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
-@@ -758,6 +758,14 @@ public abstract class AbstractContainerMenu {
+@@ -756,6 +756,14 @@ public abstract class AbstractContainerMenu {
      public abstract boolean stillValid(Player player);
  
      protected boolean moveItemStackTo(ItemStack stack, int startIndex, int endIndex, boolean fromLast) {
@@ -55,7 +55,7 @@ index 5098147fc97c1f7bebc64bdd31ff03f779bb3935..75f809ee3d46971ce2ae9ec5bc89aeec
          boolean flag1 = false;
          int k = startIndex;
  
-@@ -780,18 +788,27 @@ public abstract class AbstractContainerMenu {
+@@ -778,18 +786,27 @@ public abstract class AbstractContainerMenu {
  
                  slot = (Slot) this.slots.get(k);
                  itemstack1 = slot.getItem();
@@ -83,7 +83,7 @@ index 5098147fc97c1f7bebc64bdd31ff03f779bb3935..75f809ee3d46971ce2ae9ec5bc89aeec
                          flag1 = true;
                      }
                  }
-@@ -822,14 +839,33 @@ public abstract class AbstractContainerMenu {
+@@ -820,14 +837,33 @@ public abstract class AbstractContainerMenu {
  
                  slot = (Slot) this.slots.get(k);
                  itemstack1 = slot.getItem();
@@ -118,7 +118,7 @@ index 5098147fc97c1f7bebc64bdd31ff03f779bb3935..75f809ee3d46971ce2ae9ec5bc89aeec
                      break;
                  }
 diff --git a/src/main/java/net/minecraft/world/inventory/MerchantMenu.java b/src/main/java/net/minecraft/world/inventory/MerchantMenu.java
-index 373a32e750aaa77cec0cb57ce4058810eeaff8f4..9370056dfec5d5df7ff832e1d742b0ed1be85d8e 100644
+index 743a2adc465be5477d204185967265389d7102de..8eab7596e1f7d1beb9ab0d70d1310d26822262e9 100644
 --- a/src/main/java/net/minecraft/world/inventory/MerchantMenu.java
 +++ b/src/main/java/net/minecraft/world/inventory/MerchantMenu.java
 @@ -134,12 +134,12 @@ public class MerchantMenu extends AbstractContainerMenu {
@@ -168,7 +168,7 @@ index 373a32e750aaa77cec0cb57ce4058810eeaff8f4..9370056dfec5d5df7ff832e1d742b0ed
  
          return itemstack;
 diff --git a/src/main/java/net/minecraft/world/inventory/MerchantResultSlot.java b/src/main/java/net/minecraft/world/inventory/MerchantResultSlot.java
-index 74b28315197b81f80334ae6023113904e4fac4c3..7acf5ab9339e0134819aab5f270e99e927cc7a62 100644
+index e49bbb803399ef696665c5844a18b55a551654f6..1f2b9a9a3fa167e2ba021c823dd142b0bb18a695 100644
 --- a/src/main/java/net/minecraft/world/inventory/MerchantResultSlot.java
 +++ b/src/main/java/net/minecraft/world/inventory/MerchantResultSlot.java
 @@ -47,13 +47,32 @@ public class MerchantResultSlot extends Slot {
diff --git a/patches/unapplied/server/0521-Implement-TargetHitEvent.patch b/patches/server/0504-Implement-TargetHitEvent.patch
similarity index 100%
rename from patches/unapplied/server/0521-Implement-TargetHitEvent.patch
rename to patches/server/0504-Implement-TargetHitEvent.patch
diff --git a/patches/unapplied/server/0522-MC-4-Fix-item-position-desync.patch b/patches/server/0505-MC-4-Fix-item-position-desync.patch
similarity index 88%
rename from patches/unapplied/server/0522-MC-4-Fix-item-position-desync.patch
rename to patches/server/0505-MC-4-Fix-item-position-desync.patch
index d53981f21..5ff8c4bde 100644
--- a/patches/unapplied/server/0522-MC-4-Fix-item-position-desync.patch
+++ b/patches/server/0505-MC-4-Fix-item-position-desync.patch
@@ -28,13 +28,13 @@ index 5ca3ad7b3d7606accd0a58b3c708fadb349608f7..4b6e0fe2fabcc55007fd8979e81f66df
  
      public Vec3 decode(long x, long y, long z) {
 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index d5a5f499bbdc950b66de62370482f122e4a16511..909d9da2e0b30d4bf187623a46695c86d67b2248 100644
+index f359cf2f9e3a866a569ca3a97f8373758e0140e2..ebafdcbea42abde85c63ad4bbb426a811d3811e9 100644
 --- a/src/main/java/net/minecraft/world/entity/Entity.java
 +++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -4100,6 +4100,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
-             return;
-         }
-         // Paper end - rewrite chunk system
+@@ -4131,6 +4131,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+     }
+     public final void setPosRaw(double x, double y, double z, boolean forceBoundingBoxUpdate) {
+         // Paper end
 +        // Paper start - fix MC-4
 +        if (this instanceof ItemEntity) {
 +            if (io.papermc.paper.configuration.GlobalConfiguration.get().misc.fixEntityPositionDesync) {
diff --git a/patches/unapplied/server/0523-Additional-Block-Material-API-s.patch b/patches/server/0506-Additional-Block-Material-API-s.patch
similarity index 90%
rename from patches/unapplied/server/0523-Additional-Block-Material-API-s.patch
rename to patches/server/0506-Additional-Block-Material-API-s.patch
index 69adf40a3..af30146b0 100644
--- a/patches/unapplied/server/0523-Additional-Block-Material-API-s.patch
+++ b/patches/server/0506-Additional-Block-Material-API-s.patch
@@ -9,11 +9,11 @@ process to do this in the Bukkit API
 Adds API for buildable, replaceable, burnable too.
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 5cca837474205eaa7bffadf31a60bf352ef7365b..86a932d397ca92ab7d6f3b64860ede8adb86c0b5 100644
+index 6c6867c007cec2b8364c875fbfc25c372b39351c..822ee0dbeec25646d2d2f335a1d1395726e6678e 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
 @@ -467,6 +467,25 @@ public class CraftBlock implements Block {
-         return this.getNMS().getMaterial().isLiquid();
+         return this.getNMS().liquid();
      }
  
 +    // Paper start
diff --git a/patches/unapplied/server/0524-Fix-harming-potion-dupe.patch b/patches/server/0507-Fix-harming-potion-dupe.patch
similarity index 100%
rename from patches/unapplied/server/0524-Fix-harming-potion-dupe.patch
rename to patches/server/0507-Fix-harming-potion-dupe.patch
diff --git a/patches/unapplied/server/0525-Implement-API-to-get-Material-from-Boats-and-Minecar.patch b/patches/server/0508-Implement-API-to-get-Material-from-Boats-and-Minecar.patch
similarity index 100%
rename from patches/unapplied/server/0525-Implement-API-to-get-Material-from-Boats-and-Minecar.patch
rename to patches/server/0508-Implement-API-to-get-Material-from-Boats-and-Minecar.patch
diff --git a/patches/unapplied/server/0526-Cache-burn-durations.patch b/patches/server/0509-Cache-burn-durations.patch
similarity index 94%
rename from patches/unapplied/server/0526-Cache-burn-durations.patch
rename to patches/server/0509-Cache-burn-durations.patch
index 085140489..0b0a8c2b0 100644
--- a/patches/unapplied/server/0526-Cache-burn-durations.patch
+++ b/patches/server/0509-Cache-burn-durations.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Cache burn durations
 
 
 diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
-index faa5beffb29e416f2a9af96ac66b5f88729e4705..5327d41fc5064e953856c348f40f2b396aa0c66b 100644
+index 40dc29288a13ae9c1f8b0434922fdb5c7d02daa9..5ea9a6e9fa197fd00952c5ade426d7de50497a5e 100644
 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
 +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
 @@ -133,7 +133,13 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
diff --git a/patches/unapplied/server/0527-Allow-disabling-mob-spawner-spawn-egg-transformation.patch b/patches/server/0510-Allow-disabling-mob-spawner-spawn-egg-transformation.patch
similarity index 91%
rename from patches/unapplied/server/0527-Allow-disabling-mob-spawner-spawn-egg-transformation.patch
rename to patches/server/0510-Allow-disabling-mob-spawner-spawn-egg-transformation.patch
index c4eb2f507..bd783eafb 100644
--- a/patches/unapplied/server/0527-Allow-disabling-mob-spawner-spawn-egg-transformation.patch
+++ b/patches/server/0510-Allow-disabling-mob-spawner-spawn-egg-transformation.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Allow disabling mob spawner spawn egg transformation
 
 
 diff --git a/src/main/java/net/minecraft/world/item/SpawnEggItem.java b/src/main/java/net/minecraft/world/item/SpawnEggItem.java
-index 5d50e9c837628638019166e224905a9de69b1ae4..31268e25056f980798ef7db72c4f955a074cc639 100644
+index aa54f33495dbda7afe035881893ae3e95c91447f..741719301e6fc91a598e74342810c4185e6fde26 100644
 --- a/src/main/java/net/minecraft/world/item/SpawnEggItem.java
 +++ b/src/main/java/net/minecraft/world/item/SpawnEggItem.java
 @@ -61,7 +61,7 @@ public class SpawnEggItem extends Item {
diff --git a/patches/unapplied/server/0528-Fix-Not-a-string-Map-Conversion-spam.patch b/patches/server/0511-Fix-Not-a-string-Map-Conversion-spam.patch
similarity index 96%
rename from patches/unapplied/server/0528-Fix-Not-a-string-Map-Conversion-spam.patch
rename to patches/server/0511-Fix-Not-a-string-Map-Conversion-spam.patch
index 7809bd079..087de8860 100644
--- a/patches/unapplied/server/0528-Fix-Not-a-string-Map-Conversion-spam.patch
+++ b/patches/server/0511-Fix-Not-a-string-Map-Conversion-spam.patch
@@ -12,7 +12,7 @@ requesting the world.
 Track spigot issue to see when fixed: https://hub.spigotmc.org/jira/browse/SPIGOT-6181
 
 diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
-index 2c5fb4eb5790f4dff0d03390ceae3afc32134006..fdf56fa2c26babf3496d326d2e7c7968f1844792 100644
+index d6ed799716f13cb3f72e66f9d57c6ec90c1eb272..7a6fbd4be33e93c7f09b1ed146ae25fe6c6b503c 100644
 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
 +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
 @@ -15,6 +15,8 @@ import net.minecraft.core.BlockPos;
diff --git a/patches/unapplied/server/0529-Implement-PlayerFlowerPotManipulateEvent.patch b/patches/server/0512-Implement-PlayerFlowerPotManipulateEvent.patch
similarity index 100%
rename from patches/unapplied/server/0529-Implement-PlayerFlowerPotManipulateEvent.patch
rename to patches/server/0512-Implement-PlayerFlowerPotManipulateEvent.patch
diff --git a/patches/unapplied/server/0530-Fix-interact-event-not-being-called-in-adventure.patch b/patches/server/0513-Fix-interact-event-not-being-called-in-adventure.patch
similarity index 81%
rename from patches/unapplied/server/0530-Fix-interact-event-not-being-called-in-adventure.patch
rename to patches/server/0513-Fix-interact-event-not-being-called-in-adventure.patch
index d6331655d..ccd5abb3e 100644
--- a/patches/unapplied/server/0530-Fix-interact-event-not-being-called-in-adventure.patch
+++ b/patches/server/0513-Fix-interact-event-not-being-called-in-adventure.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Fix interact event not being called in adventure
 Call PlayerInteractEvent when left-clicking on a block in adventure mode
 
 diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 97e842e2268fa1084d46d2423e2212d97a3c6c05..c7776ccb1f11296a0f3e7b8dcba8169677085de8 100644
+index 6dd9132ef61af5cb07fade4624ac51d6a81d1535..92f8a2f70b78be2fc75faab0675628c227aa1706 100644
 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
 +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1835,7 +1835,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -1827,7 +1827,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
                                  MutableComponent ichatmutablecomponent = Component.translatable("build.tooHigh", i - 1).withStyle(ChatFormatting.RED);
  
                                  this.player.sendSystemMessage(ichatmutablecomponent, true);
@@ -18,9 +18,9 @@ index 97e842e2268fa1084d46d2423e2212d97a3c6c05..c7776ccb1f11296a0f3e7b8dcba81696
                                  this.player.swing(enumhand, true);
                              }
                          }
-@@ -2471,7 +2471,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -2463,7 +2463,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
          // SPIGOT-5607: Only call interact event if no block or entity is being clicked. Use bukkit ray trace method, because it handles blocks and entities at the same time
-         org.bukkit.util.RayTraceResult result = this.player.level.getWorld().rayTrace(origin, origin.getDirection(), d3, org.bukkit.FluidCollisionMode.NEVER, false, 0.1, entity -> entity != this.player.getBukkitEntity() && this.player.getBukkitEntity().canSee(entity));
+         org.bukkit.util.RayTraceResult result = this.player.level().getWorld().rayTrace(origin, origin.getDirection(), d3, org.bukkit.FluidCollisionMode.NEVER, false, 0.1, entity -> entity != this.player.getBukkitEntity() && this.player.getBukkitEntity().canSee(entity));
  
 -        if (result == null) {
 +        if (result == null || this.player.gameMode.getGameModeForPlayer() == GameType.ADVENTURE) { // Paper - call PlayerInteractEvent when left-clicking on a block in adventure mode
diff --git a/patches/unapplied/server/0531-Zombie-API-breaking-doors.patch b/patches/server/0514-Zombie-API-breaking-doors.patch
similarity index 100%
rename from patches/unapplied/server/0531-Zombie-API-breaking-doors.patch
rename to patches/server/0514-Zombie-API-breaking-doors.patch
diff --git a/patches/unapplied/server/0532-Fix-nerfed-slime-when-splitting.patch b/patches/server/0515-Fix-nerfed-slime-when-splitting.patch
similarity index 90%
rename from patches/unapplied/server/0532-Fix-nerfed-slime-when-splitting.patch
rename to patches/server/0515-Fix-nerfed-slime-when-splitting.patch
index 7b62c899e..ca1a39e53 100644
--- a/patches/unapplied/server/0532-Fix-nerfed-slime-when-splitting.patch
+++ b/patches/server/0515-Fix-nerfed-slime-when-splitting.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix nerfed slime when splitting
 
 
 diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java
-index 9196c51474741eb1015f7daac640b83e6c7b66e4..eea1124870b0914376ea00a7395b998058061cf8 100644
+index 30779b817db6f8e392036b4ec66e1c5cf50cd0f5..b0c5324dadc0a66786ec5edb7b4796ceeaa8e0d2 100644
 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java
 +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java
 @@ -241,6 +241,7 @@ public class Slime extends Mob implements Enemy {
diff --git a/patches/unapplied/server/0533-Add-EntityLoadCrossbowEvent.patch b/patches/server/0516-Add-EntityLoadCrossbowEvent.patch
similarity index 82%
rename from patches/unapplied/server/0533-Add-EntityLoadCrossbowEvent.patch
rename to patches/server/0516-Add-EntityLoadCrossbowEvent.patch
index fa93adcd6..b535c7b3f 100644
--- a/patches/unapplied/server/0533-Add-EntityLoadCrossbowEvent.patch
+++ b/patches/server/0516-Add-EntityLoadCrossbowEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add EntityLoadCrossbowEvent
 
 
 diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
-index e6249409d01aee2bdc84821d40ce4551c102d307..bc4f04c2512191da3c9e1c49f0716bb9128fc754 100644
+index 9bea5e94c246d843f3d67680ffb57075bd9d3467..a433910fb4d0bd8d7b6b0d66c8fc88d62a0e4879 100644
 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
 +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
 @@ -89,7 +89,14 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
@@ -24,19 +24,21 @@ index e6249409d01aee2bdc84821d40ce4551c102d307..bc4f04c2512191da3c9e1c49f0716bb9
              CrossbowItem.setCharged(stack, true);
              SoundSource soundcategory = user instanceof Player ? SoundSource.PLAYERS : SoundSource.HOSTILE;
  
-@@ -99,9 +106,14 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
+@@ -98,10 +105,16 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
+ 
      }
  
-     private static boolean tryLoadProjectiles(LivingEntity shooter, ItemStack projectile) {
++    @io.papermc.paper.annotation.DoNotUse // Paper
+     private static boolean tryLoadProjectiles(LivingEntity shooter, ItemStack crossbow) {
 +        // Paper start
-+        return CrossbowItem.tryLoadProjectiles(shooter, projectile, true);
++        return CrossbowItem.tryLoadProjectiles(shooter, crossbow, true);
 +    }
-+    private static boolean tryLoadProjectiles(LivingEntity shooter, ItemStack projectile, boolean consume) {
++    private static boolean tryLoadProjectiles(LivingEntity shooter, ItemStack crossbow, boolean consume) {
 +        // Paper end
-         int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, projectile);
+         int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, crossbow);
          int j = i == 0 ? 1 : 3;
 -        boolean flag = shooter instanceof Player && ((Player) shooter).getAbilities().instabuild;
 +        boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild; // Paper - add consume
-         ItemStack itemstack1 = shooter.getProjectile(projectile);
+         ItemStack itemstack1 = shooter.getProjectile(crossbow);
          ItemStack itemstack2 = itemstack1.copy();
  
diff --git a/patches/unapplied/server/0534-Added-WorldGameRuleChangeEvent.patch b/patches/server/0517-Added-WorldGameRuleChangeEvent.patch
similarity index 91%
rename from patches/unapplied/server/0534-Added-WorldGameRuleChangeEvent.patch
rename to patches/server/0517-Added-WorldGameRuleChangeEvent.patch
index 73072a04b..fb28f3d81 100644
--- a/patches/unapplied/server/0534-Added-WorldGameRuleChangeEvent.patch
+++ b/patches/server/0517-Added-WorldGameRuleChangeEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Added WorldGameRuleChangeEvent
 
 
 diff --git a/src/main/java/net/minecraft/server/commands/GameRuleCommand.java b/src/main/java/net/minecraft/server/commands/GameRuleCommand.java
-index 1b66c33a55a9516269c80f5052fb103418b11367..745b8724b7536a5b2c2c94ae8fd703ea755e8072 100644
+index c8c358531dbc167e249bac2af246c5e34fbdd4df..307854468ac985560b4c63b6e9897c444a7b8a3a 100644
 --- a/src/main/java/net/minecraft/server/commands/GameRuleCommand.java
 +++ b/src/main/java/net/minecraft/server/commands/GameRuleCommand.java
 @@ -33,7 +33,7 @@ public class GameRuleCommand {
@@ -14,9 +14,9 @@ index 1b66c33a55a9516269c80f5052fb103418b11367..745b8724b7536a5b2c2c94ae8fd703ea
  
 -        t0.setFromArgument(context, "value");
 +        t0.setFromArgument(context, "value", key); // Paper
-         commandlistenerwrapper.sendSuccess(Component.translatable("commands.gamerule.set", key.getId(), t0.toString()), true);
-         return t0.getCommandResult();
-     }
+         commandlistenerwrapper.sendSuccess(() -> {
+             return Component.translatable("commands.gamerule.set", key.getId(), t0.toString());
+         }, true);
 diff --git a/src/main/java/net/minecraft/world/level/GameRules.java b/src/main/java/net/minecraft/world/level/GameRules.java
 index 4a0321f56ef80aa4991e61f586ddd3f6b45e499b..de713f1ca1d61a6b1fca2b66de9162556d102449 100644
 --- a/src/main/java/net/minecraft/world/level/GameRules.java
@@ -64,10 +64,10 @@ index 4a0321f56ef80aa4991e61f586ddd3f6b45e499b..de713f1ca1d61a6b1fca2b66de916255
  
          public int get() {
 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 69187c3809369cf2dbe15a0f99e510e762f682d2..5c8270adf72114263d4e7b212201a7ea24bc95ae 100644
+index 4e23d00f481697257adf9eae5bed4d02a2d5419b..1df230d4c583604486359ea141051a7b75ebb73b 100644
 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1839,8 +1839,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1844,8 +1844,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
  
          if (!this.isGameRule(rule)) return false;
  
@@ -82,7 +82,7 @@ index 69187c3809369cf2dbe15a0f99e510e762f682d2..5c8270adf72114263d4e7b212201a7ea
          handle.onChanged(this.getHandle().getServer());
          return true;
      }
-@@ -1875,8 +1880,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+@@ -1880,8 +1885,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
  
          if (!this.isGameRule(rule.getName())) return false;
  
diff --git a/patches/unapplied/server/0535-Added-ServerResourcesReloadedEvent.patch b/patches/server/0518-Added-ServerResourcesReloadedEvent.patch
similarity index 91%
rename from patches/unapplied/server/0535-Added-ServerResourcesReloadedEvent.patch
rename to patches/server/0518-Added-ServerResourcesReloadedEvent.patch
index 606ddc5f7..e840a5a4e 100644
--- a/patches/unapplied/server/0535-Added-ServerResourcesReloadedEvent.patch
+++ b/patches/server/0518-Added-ServerResourcesReloadedEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Added ServerResourcesReloadedEvent
 
 
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index e7ee655a87358cbe9a7a21475ef67bfb7956cd65..9e3dc2ba64b146d1715b81be7202ddbd0122382e 100644
+index 648056283bb1cbb99faf3e095886ace7d42e46d3..571352506c8c76cca674dcc0c6e17d8ab89d1572 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -2010,7 +2010,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+@@ -2017,7 +2017,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
          return this.functionManager;
      }
  
@@ -22,7 +22,7 @@ index e7ee655a87358cbe9a7a21475ef67bfb7956cd65..9e3dc2ba64b146d1715b81be7202ddbd
          RegistryAccess.Frozen iregistrycustom_dimension = this.registries.getAccessForLoading(RegistryLayer.RELOADABLE);
          CompletableFuture<Void> completablefuture = CompletableFuture.supplyAsync(() -> {
              Stream<String> stream = dataPacks.stream(); // CraftBukkit - decompile error
-@@ -2051,6 +2057,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+@@ -2058,6 +2064,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
              this.functionManager.replaceLibrary(this.resources.managers.getFunctionLibrary());
              this.structureTemplateManager.onResourceManagerReload(this.resources.resourceManager);
              org.bukkit.craftbukkit.block.data.CraftBlockData.reloadCache(); // Paper - cache block data strings, they can be defined by datapacks so refresh it here
@@ -31,7 +31,7 @@ index e7ee655a87358cbe9a7a21475ef67bfb7956cd65..9e3dc2ba64b146d1715b81be7202ddbd
  
          if (this.isSameThread()) {
 diff --git a/src/main/java/net/minecraft/server/commands/ReloadCommand.java b/src/main/java/net/minecraft/server/commands/ReloadCommand.java
-index 7108be7931e0a9e6240c18433d103659254b99af..2247d4452edbffb7c6c5dae4fe6e8e8f1fce4b5f 100644
+index fa18d018a8458b30c0048f7e59aea39f928d974a..87d32af973b84fbbea5dcdb34273f3b3fc82d054 100644
 --- a/src/main/java/net/minecraft/server/commands/ReloadCommand.java
 +++ b/src/main/java/net/minecraft/server/commands/ReloadCommand.java
 @@ -20,7 +20,7 @@ public class ReloadCommand {
diff --git a/patches/unapplied/server/0536-Added-world-settings-for-mobs-picking-up-loot.patch b/patches/server/0519-Added-world-settings-for-mobs-picking-up-loot.patch
similarity index 91%
rename from patches/unapplied/server/0536-Added-world-settings-for-mobs-picking-up-loot.patch
rename to patches/server/0519-Added-world-settings-for-mobs-picking-up-loot.patch
index 6c45d5d3e..3cd6ca341 100644
--- a/patches/unapplied/server/0536-Added-world-settings-for-mobs-picking-up-loot.patch
+++ b/patches/server/0519-Added-world-settings-for-mobs-picking-up-loot.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Added world settings for mobs picking up loot
 
 
 diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
-index 362bc2d78e024df5a1cdfad9da6e768e3a778095..98a3f6388712fab9012210241b84def3aca712e2 100644
+index 4ea7a6bd6fdc98bef30546e19e2676a78fb29007..14b172e0769d3503b755867fd46c272ea8c715a4 100644
 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
 +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
 @@ -153,7 +153,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -18,7 +18,7 @@ index 362bc2d78e024df5a1cdfad9da6e768e3a778095..98a3f6388712fab9012210241b84def3
              LocalDate localdate = LocalDate.now();
              int i = localdate.get(ChronoField.DAY_OF_MONTH);
 diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index 5d295e1d66b57bbecebc5415b3c64cb38c7249d2..b89a5ecc9138808532f0e3248f0349161391e5e1 100644
+index 5371ddc75a371a273b5697e620503da9d23e3fbf..065b615a1df475a3285d328a8c5113e8d72c33ed 100644
 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
 +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
 @@ -514,7 +514,7 @@ public class Zombie extends Monster {
diff --git a/patches/unapplied/server/0537-Implemented-BlockFailedDispenseEvent.patch b/patches/server/0520-Implemented-BlockFailedDispenseEvent.patch
similarity index 87%
rename from patches/unapplied/server/0537-Implemented-BlockFailedDispenseEvent.patch
rename to patches/server/0520-Implemented-BlockFailedDispenseEvent.patch
index 43c173c10..e75b49dcf 100644
--- a/patches/unapplied/server/0537-Implemented-BlockFailedDispenseEvent.patch
+++ b/patches/server/0520-Implemented-BlockFailedDispenseEvent.patch
@@ -5,16 +5,16 @@ Subject: [PATCH] Implemented BlockFailedDispenseEvent
 
 
 diff --git a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
-index c0e19826163b0eaa429d217b54bb67b8b582a669..85c5319837295bd2f85baebfe8d6660b267f1d5f 100644
+index 504ba1588ae0c35c81934d0a09f0ad70d542d968..9ec043ff2cd38e589066a3eb7f42834e4e7592cf 100644
 --- a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
 +++ b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
-@@ -84,8 +84,10 @@ public class DispenserBlock extends BaseEntityBlock {
+@@ -83,8 +83,10 @@ public class DispenserBlock extends BaseEntityBlock {
          int i = tileentitydispenser.getRandomSlot(world.random);
  
          if (i < 0) {
 +            if (org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFailedDispenseEvent(world, pos)) {// Paper - BlockFailedDispenseEvent is called here
              world.levelEvent(1001, pos, 0);
-             world.gameEvent((Entity) null, GameEvent.DISPENSE_FAIL, pos);
+             world.gameEvent(GameEvent.BLOCK_ACTIVATE, pos, GameEvent.Context.of(tileentitydispenser.getBlockState()));
 +            } // Paper
          } else {
              ItemStack itemstack = tileentitydispenser.getItem(i);
@@ -32,7 +32,7 @@ index 1415ad60163f6584619cc7caa61f1848d6ebaa93..801c4c120e98584bcf218a4ef9bd66d7
          } else {
              ItemStack itemstack = tileentitydispenser.getItem(i);
 diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 080c6581ba120e223b5c765cbd9225ef57150176..bfa999abcf00a76c85a02e69dcb60b37247d5415 100644
+index e21d1404167ccd461359ccb0ceb90c4c809caabc..f5d17617245c786d76277fdf7d526c0a93921053 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 @@ -1918,4 +1918,12 @@ public class CraftEventFactory {
diff --git a/patches/unapplied/server/0538-Added-PlayerLecternPageChangeEvent.patch b/patches/server/0521-Added-PlayerLecternPageChangeEvent.patch
similarity index 100%
rename from patches/unapplied/server/0538-Added-PlayerLecternPageChangeEvent.patch
rename to patches/server/0521-Added-PlayerLecternPageChangeEvent.patch
diff --git a/patches/unapplied/server/0539-Added-PlayerLoomPatternSelectEvent.patch b/patches/server/0522-Added-PlayerLoomPatternSelectEvent.patch
similarity index 96%
rename from patches/unapplied/server/0539-Added-PlayerLoomPatternSelectEvent.patch
rename to patches/server/0522-Added-PlayerLoomPatternSelectEvent.patch
index 2ccb7916d..23dca6d92 100644
--- a/patches/unapplied/server/0539-Added-PlayerLoomPatternSelectEvent.patch
+++ b/patches/server/0522-Added-PlayerLoomPatternSelectEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Added PlayerLoomPatternSelectEvent
 
 
 diff --git a/src/main/java/net/minecraft/world/inventory/LoomMenu.java b/src/main/java/net/minecraft/world/inventory/LoomMenu.java
-index 6e2784938e1e1a29ac133567ae6c2d29429478f0..0665a499060390ebbc70807e5256eb6355cac6cd 100644
+index c4766df6d64b484375e5e3474e97dee196c0fef4..0a87996a6ab5b4d67c2aa10daadf6174bc647a44 100644
 --- a/src/main/java/net/minecraft/world/inventory/LoomMenu.java
 +++ b/src/main/java/net/minecraft/world/inventory/LoomMenu.java
 @@ -173,8 +173,35 @@ public class LoomMenu extends AbstractContainerMenu {
diff --git a/patches/unapplied/server/0540-Configurable-door-breaking-difficulty.patch b/patches/server/0523-Configurable-door-breaking-difficulty.patch
similarity index 91%
rename from patches/unapplied/server/0540-Configurable-door-breaking-difficulty.patch
rename to patches/server/0523-Configurable-door-breaking-difficulty.patch
index dcccd2a0b..c3fcdc794 100644
--- a/patches/unapplied/server/0540-Configurable-door-breaking-difficulty.patch
+++ b/patches/server/0523-Configurable-door-breaking-difficulty.patch
@@ -10,7 +10,7 @@ public net.minecraft.world.entity.monster.Zombie DOOR_BREAKING_PREDICATE
 Co-authored-by: Doc <nachito94@msn.com>
 
 diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
-index ffc8e20d916940fb5e28bac610e3c6bd3d493f78..a9e75a16a7dc0ff5d4f0faa92ebc444559a39325 100644
+index e6139ff42470cfa9bcad02d746f15b99b1096b48..da961f6495f8c448f0d53a0ed2f783b804e9eb6e 100644
 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
 +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
 @@ -197,7 +197,7 @@ public class Vindicator extends AbstractIllager {
@@ -23,7 +23,7 @@ index ffc8e20d916940fb5e28bac610e3c6bd3d493f78..a9e75a16a7dc0ff5d4f0faa92ebc4445
          }
  
 diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
-index b89a5ecc9138808532f0e3248f0349161391e5e1..185f0c0d709f374cf6df2654dd9708fca90b1349 100644
+index 065b615a1df475a3285d328a8c5113e8d72c33ed..3c7a184d67d5d02817cb7c81d02d5a4156d40f9c 100644
 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
 +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
 @@ -99,7 +99,7 @@ public class Zombie extends Monster {
diff --git a/patches/unapplied/server/0541-Empty-commands-shall-not-be-dispatched.patch b/patches/server/0524-Empty-commands-shall-not-be-dispatched.patch
similarity index 84%
rename from patches/unapplied/server/0541-Empty-commands-shall-not-be-dispatched.patch
rename to patches/server/0524-Empty-commands-shall-not-be-dispatched.patch
index d8134ea2c..7f1932a7d 100644
--- a/patches/unapplied/server/0541-Empty-commands-shall-not-be-dispatched.patch
+++ b/patches/server/0524-Empty-commands-shall-not-be-dispatched.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Empty commands shall not be dispatched
 
 
 diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
-index 7d47e15468f59ce7bc25f692e9963a29d00117cb..8001a084a8086ce55de856579d69b45138eb5c59 100644
+index 87ce129e1d592bcf68169feb559f44d5cda7c486..c034a772b95485a91ab800962b7d9dbf3d074a82 100644
 --- a/src/main/java/net/minecraft/commands/Commands.java
 +++ b/src/main/java/net/minecraft/commands/Commands.java
-@@ -261,6 +261,7 @@ public class Commands {
+@@ -263,6 +263,7 @@ public class Commands {
          command = event.getCommand();
  
          String[] args = command.split(" ");
diff --git a/patches/unapplied/server/0542-Implement-API-to-expose-exact-interaction-point.patch b/patches/server/0525-Implement-API-to-expose-exact-interaction-point.patch
similarity index 93%
rename from patches/unapplied/server/0542-Implement-API-to-expose-exact-interaction-point.patch
rename to patches/server/0525-Implement-API-to-expose-exact-interaction-point.patch
index 510a4d0e7..8dd6e49ac 100644
--- a/patches/unapplied/server/0542-Implement-API-to-expose-exact-interaction-point.patch
+++ b/patches/server/0525-Implement-API-to-expose-exact-interaction-point.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement API to expose exact interaction point
 
 
 diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-index 77eec518940ae41880e395b3dd051d89bd67c319..e6154cf74df39d0c87fc820027adc9641156f888 100644
+index 7c713c98201c816a70ac999e86685b1c6bbd372d..95173754148848bf1772a0426173dcea89e6b9b8 100644
 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
 +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-@@ -517,7 +517,7 @@ public class ServerPlayerGameMode {
+@@ -515,7 +515,7 @@ public class ServerPlayerGameMode {
              cancelledBlock = true;
          }
  
@@ -18,7 +18,7 @@ index 77eec518940ae41880e395b3dd051d89bd67c319..e6154cf74df39d0c87fc820027adc964
          this.interactResult = event.useItemInHand() == Event.Result.DENY;
          this.interactPosition = blockposition.immutable();
 diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index bfa999abcf00a76c85a02e69dcb60b37247d5415..df9c057391d28fb47b722d006aa0c828863ea6b2 100644
+index f5d17617245c786d76277fdf7d526c0a93921053..12a8e9f41dfff700a8e5b8874cf1317e6d68e43a 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 @@ -57,7 +57,9 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
diff --git a/patches/unapplied/server/0543-Remove-stale-POIs.patch b/patches/server/0526-Remove-stale-POIs.patch
similarity index 86%
rename from patches/unapplied/server/0543-Remove-stale-POIs.patch
rename to patches/server/0526-Remove-stale-POIs.patch
index ffabe328d..701581021 100644
--- a/patches/unapplied/server/0543-Remove-stale-POIs.patch
+++ b/patches/server/0526-Remove-stale-POIs.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Remove stale POIs
 
 
 diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index c73bf7d8c6b009ed5e1f666600d3c470927f564d..2af673fe240fbb0ce7667e207a833d09afa7074b 100644
+index 6b47bff5e385bffefbdfa3b9f9f8366d75af6acc..7222bee995a3628629d40e94d70ada0730d05e28 100644
 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
 +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1931,6 +1931,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1840,6 +1840,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
              });
              optional1.ifPresent((holder) -> {
                  this.getServer().execute(() -> {
diff --git a/patches/unapplied/server/0544-Fix-villager-boat-exploit.patch b/patches/server/0527-Fix-villager-boat-exploit.patch
similarity index 88%
rename from patches/unapplied/server/0544-Fix-villager-boat-exploit.patch
rename to patches/server/0527-Fix-villager-boat-exploit.patch
index e8e565dcf..92335f0d8 100644
--- a/patches/unapplied/server/0544-Fix-villager-boat-exploit.patch
+++ b/patches/server/0527-Fix-villager-boat-exploit.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix villager boat exploit
 
 
 diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index cd8e11b073f53c824965c91129d502f89ac2b465..8b683ffd930155adf7b1cd1088322621d4e0a037 100644
+index 265ecfa5bb7fe6b44ae04f64a08788fcd827f903..a973d0032da0e2540dc4ed5b28850fb147e01ac6 100644
 --- a/src/main/java/net/minecraft/server/players/PlayerList.java
 +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -591,6 +591,14 @@ public abstract class PlayerList {
+@@ -598,6 +598,14 @@ public abstract class PlayerList {
                  PlayerList.LOGGER.debug("Removing player mount");
                  entityplayer.stopRiding();
                  entity.getPassengersAndSelf().forEach((entity1) -> {
diff --git a/patches/unapplied/server/0545-Add-sendOpLevel-API.patch b/patches/server/0528-Add-sendOpLevel-API.patch
similarity index 84%
rename from patches/unapplied/server/0545-Add-sendOpLevel-API.patch
rename to patches/server/0528-Add-sendOpLevel-API.patch
index 9355fae2d..0141fd46a 100644
--- a/patches/unapplied/server/0545-Add-sendOpLevel-API.patch
+++ b/patches/server/0528-Add-sendOpLevel-API.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add sendOpLevel API
 
 
 diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 74aacb322ac0ddc8b8f679e7e4d98336782c11c0..81faf7ca99132a87d68a0bc6c9b662a810d0b7b3 100644
+index a973d0032da0e2540dc4ed5b28850fb147e01ac6..a7ec827bac431e7022a07e9071dcec5b7e54da2f 100644
 --- a/src/main/java/net/minecraft/server/players/PlayerList.java
 +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -1079,6 +1079,11 @@ public abstract class PlayerList {
+@@ -1086,6 +1086,11 @@ public abstract class PlayerList {
      }
  
      private void sendPlayerPermissionLevel(ServerPlayer player, int permissionLevel) {
@@ -20,7 +20,7 @@ index 74aacb322ac0ddc8b8f679e7e4d98336782c11c0..81faf7ca99132a87d68a0bc6c9b662a8
          if (player.connection != null) {
              byte b0;
  
-@@ -1093,8 +1098,10 @@ public abstract class PlayerList {
+@@ -1100,8 +1105,10 @@ public abstract class PlayerList {
              player.connection.send(new ClientboundEntityEventPacket(player, b0));
          }
  
@@ -32,10 +32,10 @@ index 74aacb322ac0ddc8b8f679e7e4d98336782c11c0..81faf7ca99132a87d68a0bc6c9b662a8
  
      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 01fd98028c3d7a3faa8fb3857116c38c752a2ea9..207032804244857b849e38f87479f0fbe2902633 100644
+index bf9844dcff3ceca0f059baad5569a168597e7c4a..f46cd227faa3cfc9a8c660516afd8e0209f991d6 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -663,6 +663,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -588,6 +588,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
              ? (org.bukkit.entity.Firework) entity.getBukkitEntity()
              : null;
      }