diff --git a/patches/unapplied/api/0268-Add-dropLeash-variable-to-EntityUnleashEvent.patch b/patches/api/0265-Add-dropLeash-variable-to-EntityUnleashEvent.patch
similarity index 100%
rename from patches/unapplied/api/0268-Add-dropLeash-variable-to-EntityUnleashEvent.patch
rename to patches/api/0265-Add-dropLeash-variable-to-EntityUnleashEvent.patch
diff --git a/patches/unapplied/api/0270-add-DragonEggFormEvent.patch b/patches/api/0266-add-DragonEggFormEvent.patch
similarity index 100%
rename from patches/unapplied/api/0270-add-DragonEggFormEvent.patch
rename to patches/api/0266-add-DragonEggFormEvent.patch
diff --git a/patches/unapplied/api/0269-EntityMoveEvent.patch b/patches/api/0267-EntityMoveEvent.patch
similarity index 100%
rename from patches/unapplied/api/0269-EntityMoveEvent.patch
rename to patches/api/0267-EntityMoveEvent.patch
diff --git a/patches/unapplied/api/0271-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/api/0268-Allow-adding-items-to-BlockDropItemEvent.patch
similarity index 100%
rename from patches/unapplied/api/0271-Allow-adding-items-to-BlockDropItemEvent.patch
rename to patches/api/0268-Allow-adding-items-to-BlockDropItemEvent.patch
diff --git a/patches/unapplied/api/0272-Add-getMainThreadExecutor-to-BukkitScheduler.patch b/patches/api/0269-Add-getMainThreadExecutor-to-BukkitScheduler.patch
similarity index 100%
rename from patches/unapplied/api/0272-Add-getMainThreadExecutor-to-BukkitScheduler.patch
rename to patches/api/0269-Add-getMainThreadExecutor-to-BukkitScheduler.patch
diff --git a/patches/unapplied/api/0273-living-entity-allow-attribute-registration.patch b/patches/api/0270-living-entity-allow-attribute-registration.patch
similarity index 100%
rename from patches/unapplied/api/0273-living-entity-allow-attribute-registration.patch
rename to patches/api/0270-living-entity-allow-attribute-registration.patch
diff --git a/patches/unapplied/api/0274-Add-missing-effects.patch b/patches/api/0271-Add-missing-effects.patch
similarity index 100%
rename from patches/unapplied/api/0274-Add-missing-effects.patch
rename to patches/api/0271-Add-missing-effects.patch
diff --git a/patches/unapplied/api/0275-Expose-Tracked-Players.patch b/patches/api/0272-Expose-Tracked-Players.patch
similarity index 89%
rename from patches/unapplied/api/0275-Expose-Tracked-Players.patch
rename to patches/api/0272-Expose-Tracked-Players.patch
index a1fbc0833a..031216b98e 100644
--- a/patches/unapplied/api/0275-Expose-Tracked-Players.patch
+++ b/patches/api/0272-Expose-Tracked-Players.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Expose Tracked Players
 
 
 diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
-index b02704b0535522c5535b560105eec2885fdd3e77..d515de1c316f14165ee327bc81f0be98b60db3bf 100644
+index 2c892de67ecca09e490246186c8d2eccf91f3536..18795003815d5bb6e04a15256430f69a31b2ace5 100644
 --- a/src/main/java/org/bukkit/entity/Entity.java
 +++ b/src/main/java/org/bukkit/entity/Entity.java
 @@ -760,5 +760,12 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
diff --git a/patches/unapplied/server/0611-Add-dropLeash-variable-to-EntityUnleashEvent.patch b/patches/server/0583-Add-dropLeash-variable-to-EntityUnleashEvent.patch
similarity index 91%
rename from patches/unapplied/server/0611-Add-dropLeash-variable-to-EntityUnleashEvent.patch
rename to patches/server/0583-Add-dropLeash-variable-to-EntityUnleashEvent.patch
index a44fd00d40..a698656fd0 100644
--- a/patches/unapplied/server/0611-Add-dropLeash-variable-to-EntityUnleashEvent.patch
+++ b/patches/server/0583-Add-dropLeash-variable-to-EntityUnleashEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Add dropLeash variable to EntityUnleashEvent
 
 
 diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
-index 976dbf40292b10364f9e80bebe96ec9c4dfb657e..c375081e02925da6085a2d433bfc2c3719770f78 100644
+index 63b0044a86e6830ccf9d6da8e29989de1402dff4..68da2530db8b0fcdba957ee90c185324a010919f 100644
 --- a/src/main/java/net/minecraft/world/entity/Mob.java
 +++ b/src/main/java/net/minecraft/world/entity/Mob.java
-@@ -1213,12 +1213,15 @@ public abstract class Mob extends LivingEntity {
+@@ -1228,12 +1228,15 @@ public abstract class Mob extends LivingEntity {
              return InteractionResult.PASS;
          } else if (this.getLeashHolder() == player) {
              // CraftBukkit start - fire PlayerUnleashEntityEvent
@@ -26,7 +26,7 @@ index 976dbf40292b10364f9e80bebe96ec9c4dfb657e..c375081e02925da6085a2d433bfc2c37
              return InteractionResult.sidedSuccess(this.level.isClientSide);
          } else {
              InteractionResult enuminteractionresult = this.checkAndHandleImportantInteractions(player, hand);
-@@ -1376,8 +1379,11 @@ public abstract class Mob extends LivingEntity {
+@@ -1391,8 +1394,11 @@ public abstract class Mob extends LivingEntity {
  
          if (this.leashHolder != null) {
              if (!this.isAlive() || !this.leashHolder.isAlive()) {
@@ -40,7 +40,7 @@ index 976dbf40292b10364f9e80bebe96ec9c4dfb657e..c375081e02925da6085a2d433bfc2c37
              }
  
          }
-@@ -1440,8 +1446,11 @@ public abstract class Mob extends LivingEntity {
+@@ -1455,8 +1461,11 @@ public abstract class Mob extends LivingEntity {
          boolean flag1 = super.startRiding(entity, force);
  
          if (flag1 && this.isLeashed()) {
@@ -54,7 +54,7 @@ index 976dbf40292b10364f9e80bebe96ec9c4dfb657e..c375081e02925da6085a2d433bfc2c37
          }
  
          return flag1;
-@@ -1611,8 +1620,11 @@ public abstract class Mob extends LivingEntity {
+@@ -1626,8 +1635,11 @@ public abstract class Mob extends LivingEntity {
      @Override
      protected void removeAfterChangingDimensions() {
          super.removeAfterChangingDimensions();
@@ -69,10 +69,10 @@ index 976dbf40292b10364f9e80bebe96ec9c4dfb657e..c375081e02925da6085a2d433bfc2c37
              if (!itemstack.isEmpty()) itemstack.setCount(0); // CraftBukkit
          });
 diff --git a/src/main/java/net/minecraft/world/entity/PathfinderMob.java b/src/main/java/net/minecraft/world/entity/PathfinderMob.java
-index a884940cc576704951d42c6b0d00f5a319297c29..d16a7bab5495d58ea9e6811d4b507667cfa3d264 100644
+index 999d18610666ec442bb038da5c452e3cd77e7428..5f256c1ac5d49e19cfccf174dd55506313c493e0 100644
 --- a/src/main/java/net/minecraft/world/entity/PathfinderMob.java
 +++ b/src/main/java/net/minecraft/world/entity/PathfinderMob.java
-@@ -47,8 +47,11 @@ public abstract class PathfinderMob extends Mob {
+@@ -49,8 +49,11 @@ public abstract class PathfinderMob extends Mob {
  
              if (this instanceof TamableAnimal && ((TamableAnimal) this).isInSittingPose()) {
                  if (f > entity.level.paperConfig.maxLeashDistance) { // Paper
@@ -86,7 +86,7 @@ index a884940cc576704951d42c6b0d00f5a319297c29..d16a7bab5495d58ea9e6811d4b507667
                  }
  
                  return;
-@@ -56,8 +59,11 @@ public abstract class PathfinderMob extends Mob {
+@@ -58,8 +61,11 @@ public abstract class PathfinderMob extends Mob {
  
              this.onLeashDistance(f);
              if (f > entity.level.paperConfig.maxLeashDistance) { // Paper
@@ -101,7 +101,7 @@ index a884940cc576704951d42c6b0d00f5a319297c29..d16a7bab5495d58ea9e6811d4b507667
              } else if (f > 6.0F) {
                  double d0 = (entity.getX() - this.getX()) / (double) f;
 diff --git a/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java b/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java
-index b9b67134f02fd7484ed19905c9ae1f9b8a26ce26..c05f173b7642380900fdd77ce5d2c020468b5fc0 100644
+index cf932116a0cafd315e44159fbf7c5d25d43782ff..03bda898a5a263053ecd79f74799d37095bbeb54 100644
 --- a/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java
 +++ b/src/main/java/net/minecraft/world/entity/decoration/LeashFenceKnotEntity.java
 @@ -123,11 +123,14 @@ public class LeashFenceKnotEntity extends HangingEntity {
@@ -122,7 +122,7 @@ index b9b67134f02fd7484ed19905c9ae1f9b8a26ce26..c05f173b7642380900fdd77ce5d2c020
                          }
                      }
 diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index db6b057eb6b0f08f7fcb998f8b646b757a98d3f6..33a8e174c4e3b3b5164157c90c8f5b5f9c6d8263 100644
+index eda17a60afd6cf03e58e66b2dbfe414b1cfac9d5..5931cf0c05ca22f72a465d096dfb60508d84b859 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 @@ -1489,8 +1489,10 @@ public class CraftEventFactory {
diff --git a/patches/unapplied/server/0612-Skip-distance-map-update-when-spawning-disabled.patch b/patches/server/0584-Skip-distance-map-update-when-spawning-disabled.patch
similarity index 87%
rename from patches/unapplied/server/0612-Skip-distance-map-update-when-spawning-disabled.patch
rename to patches/server/0584-Skip-distance-map-update-when-spawning-disabled.patch
index 114cc0dd04..4fed4a0c9a 100644
--- a/patches/unapplied/server/0612-Skip-distance-map-update-when-spawning-disabled.patch
+++ b/patches/server/0584-Skip-distance-map-update-when-spawning-disabled.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Skip distance map update when spawning disabled.
 
 
 diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
-index 77a6a5883d7e9fba12d0a2c8f3e7f2565d4785b4..6d0c56e4071a990a3b168143e8ac73f8b5ed0379 100644
+index d56eb5071ed3ae2b9d5636cafb3aca9b2cd71d15..46a43cd457ee39463e1bd79880e8391f60c06a52 100644
 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
 +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
-@@ -974,7 +974,7 @@ public class ServerChunkCache extends ChunkSource {
+@@ -891,7 +891,7 @@ public class ServerChunkCache extends ChunkSource {
              int l = this.distanceManager.getNaturalSpawnChunkCount();
              // Paper start - per player mob spawning
              NaturalSpawner.SpawnState spawnercreature_d; // moved down
diff --git a/patches/unapplied/server/0613-Reset-shield-blocking-on-dimension-change.patch b/patches/server/0585-Reset-shield-blocking-on-dimension-change.patch
similarity index 83%
rename from patches/unapplied/server/0613-Reset-shield-blocking-on-dimension-change.patch
rename to patches/server/0585-Reset-shield-blocking-on-dimension-change.patch
index 5883da964b..c390cc8d73 100644
--- a/patches/unapplied/server/0613-Reset-shield-blocking-on-dimension-change.patch
+++ b/patches/server/0585-Reset-shield-blocking-on-dimension-change.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Reset shield blocking on dimension change
 
 
 diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index 8608464c1d229625a10fd459427d8cc5e217789a..e1296bbc1f31f270053a47c21887efbad8718b72 100644
+index 6166d1ce68742fbcb365c59cd44a611addbe2f8c..f8805dad18a5b9fa37b4f2c214acb17d59167f9d 100644
 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
 +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -1142,6 +1142,11 @@ public class ServerPlayer extends Player {
+@@ -1151,6 +1151,11 @@ public class ServerPlayer extends Player {
                  this.level.getCraftServer().getPluginManager().callEvent(changeEvent);
                  // CraftBukkit end
              }
diff --git a/patches/unapplied/server/0614-add-DragonEggFormEvent.patch b/patches/server/0586-add-DragonEggFormEvent.patch
similarity index 85%
rename from patches/unapplied/server/0614-add-DragonEggFormEvent.patch
rename to patches/server/0586-add-DragonEggFormEvent.patch
index 101f4aaef4..7f32c9846d 100644
--- a/patches/unapplied/server/0614-add-DragonEggFormEvent.patch
+++ b/patches/server/0586-add-DragonEggFormEvent.patch
@@ -5,19 +5,18 @@ Subject: [PATCH] add DragonEggFormEvent
 
 
 diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-index f88719dede80c064f6210e078c435ffda32ecc1a..dec99c9d40705a89c395437d0d050f3ab36bc17b 100644
+index 619ce8161deab5b93e2a3c4e652b3249f499fd3b..467e2af08698ca40fbbe1fa7b0bafb9561f4fa65 100644
 --- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
 +++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
-@@ -363,9 +363,24 @@ public class EndDragonFight {
+@@ -367,9 +367,23 @@ public class EndDragonFight {
              this.dragonEvent.setVisible(false);
              this.spawnExitPortal(true);
              this.spawnNewGateway();
 +            // Paper start - DragonEggFormEvent
 +            BlockPos eggPosition = this.level.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, EndPodiumFeature.END_PODIUM_LOCATION);
-+            org.bukkit.craftbukkit.block.CraftBlock eggBlock = org.bukkit.craftbukkit.block.CraftBlock.at(this.level, eggPosition);
 +            org.bukkit.craftbukkit.block.CraftBlockState eggState = org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(this.level, eggPosition);
 +            eggState.setData(Blocks.DRAGON_EGG.defaultBlockState());
-+            io.papermc.paper.event.block.DragonEggFormEvent eggEvent = new io.papermc.paper.event.block.DragonEggFormEvent(eggBlock, eggState,
++            io.papermc.paper.event.block.DragonEggFormEvent eggEvent = new io.papermc.paper.event.block.DragonEggFormEvent(org.bukkit.craftbukkit.block.CraftBlock.at(this.level, eggPosition), eggState,
 +                    new org.bukkit.craftbukkit.boss.CraftDragonBattle(this));
 +            // Paper end - DragonEggFormEvent
              if (this.level.paperConfig.enderDragonsDeathAlwaysPlacesDragonEgg || !this.previouslyKilled) { // Paper - always place dragon egg
diff --git a/patches/unapplied/server/0615-EntityMoveEvent.patch b/patches/server/0587-EntityMoveEvent.patch
similarity index 87%
rename from patches/unapplied/server/0615-EntityMoveEvent.patch
rename to patches/server/0587-EntityMoveEvent.patch
index d08300cf38..9e4a847a3f 100644
--- a/patches/unapplied/server/0615-EntityMoveEvent.patch
+++ b/patches/server/0587-EntityMoveEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] EntityMoveEvent
 
 
 diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index d37b14523dd2a0e6412449001c7876bd27bf760e..f3976a53514249e64d91075ec2e620e4c7cef37f 100644
+index ad1e731900973deebdc363f34c4cf72058e4363d..6694e0d6d7d8d60f54ea1a2d2dcb5a8894b5b4b9 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -1527,6 +1527,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
+@@ -1489,6 +1489,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
          while (iterator.hasNext()) {
              ServerLevel worldserver = (ServerLevel) iterator.next();
              worldserver.hasPhysicsEvent =  org.bukkit.event.block.BlockPhysicsEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper
@@ -17,10 +17,10 @@ index d37b14523dd2a0e6412449001c7876bd27bf760e..f3976a53514249e64d91075ec2e620e4
  
              this.profiler.push(() -> {
 diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 073dbf69b5b58c4351110d28491e7feb2e47081c..c58b0de1cf1c51ceb0a0ecc145f4a98929521934 100644
+index 24ff621292d04d241f432e3a43e9dca92a35be55..bc9bb3f9ea041283a5fa1000f1043db5160f04ba 100644
 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
 +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -197,6 +197,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -205,6 +205,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
      public final LevelStorageSource.LevelStorageAccess convertable;
      public final UUID uuid;
      public boolean hasPhysicsEvent = true; // Paper
@@ -29,10 +29,10 @@ index 073dbf69b5b58c4351110d28491e7feb2e47081c..c58b0de1cf1c51ceb0a0ecc145f4a989
          return new Throwable(entity + " Added to world at " + new java.util.Date());
      }
 diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index e3d8557733e20a51bb71d9c968f4f12cc3192624..8ce983822ab44ade6306b52cad352ad95f6d6bad 100644
+index de90fc7af633576a33b0d35715c3cb68bb9f5b21..fbd33490d7e1394c0989ca20fb36f0033a9e1c26 100644
 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
 +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -3223,6 +3223,20 @@ public abstract class LivingEntity extends Entity {
+@@ -3222,6 +3222,20 @@ public abstract class LivingEntity extends Entity {
  
          this.pushEntities();
          this.level.getProfiler().pop();
diff --git a/patches/unapplied/server/0616-added-option-to-disable-pathfinding-updates-on-block.patch b/patches/server/0588-added-option-to-disable-pathfinding-updates-on-block.patch
similarity index 76%
rename from patches/unapplied/server/0616-added-option-to-disable-pathfinding-updates-on-block.patch
rename to patches/server/0588-added-option-to-disable-pathfinding-updates-on-block.patch
index 5050fb908a..d859f5f3c2 100644
--- a/patches/unapplied/server/0616-added-option-to-disable-pathfinding-updates-on-block.patch
+++ b/patches/server/0588-added-option-to-disable-pathfinding-updates-on-block.patch
@@ -5,25 +5,26 @@ Subject: [PATCH] added option to disable pathfinding updates on block changes
 
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-index 3e694d8a28524f9ea6ba8f1947061b92bc15b13d..843878bb83dfebca8d3574c159c5e338f15104ac 100644
+index 1eaea3659dbd99767a045e0f66143bebb604c047..3c5dd72a4c98703602c41f2a04f1c793a6faf2ea 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-@@ -807,5 +807,10 @@ public class PaperWorldConfig {
-     private void enderDragonsDeathAlwaysPlacesDragonEgg() {
+@@ -702,6 +702,11 @@ public class PaperWorldConfig {
          enderDragonsDeathAlwaysPlacesDragonEgg = getBoolean("ender-dragons-death-always-places-dragon-egg", enderDragonsDeathAlwaysPlacesDragonEgg);
      }
-+
+ 
 +    public boolean updatePathfindingOnBlockUpdate = true;
 +    private void setUpdatePathfindingOnBlockUpdate() {
 +        updatePathfindingOnBlockUpdate = getBoolean("update-pathfinding-on-block-update", this.updatePathfindingOnBlockUpdate);
 +    }
- }
- 
++
+     public boolean phantomIgnoreCreative = true;
+     public boolean phantomOnlyAttackInsomniacs = true;
+     private void phantomSettings() {
 diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 09474f7e973563585e102cc839ab6842a3a10c0c..e0efad2395dd889430554074bbd9769957a72687 100644
+index bc9bb3f9ea041283a5fa1000f1043db5160f04ba..d09a9886a6fa8a7e180ab0c1c4a5b437b621f236 100644
 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
 +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1386,6 +1386,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1360,6 +1360,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
      @Override
      public void sendBlockUpdated(BlockPos pos, BlockState oldState, BlockState newState, int flags) {
          this.getChunkSource().blockChanged(pos);
@@ -31,7 +32,7 @@ index 09474f7e973563585e102cc839ab6842a3a10c0c..e0efad2395dd889430554074bbd97699
          VoxelShape voxelshape = oldState.getCollisionShape(this, pos);
          VoxelShape voxelshape1 = newState.getCollisionShape(this, pos);
  
-@@ -1413,6 +1414,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1387,6 +1388,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
              }
  
          }
diff --git a/patches/unapplied/server/0617-Inline-shift-direction-fields.patch b/patches/server/0589-Inline-shift-direction-fields.patch
similarity index 85%
rename from patches/unapplied/server/0617-Inline-shift-direction-fields.patch
rename to patches/server/0589-Inline-shift-direction-fields.patch
index 5be0e06548..aea372f6f4 100644
--- a/patches/unapplied/server/0617-Inline-shift-direction-fields.patch
+++ b/patches/server/0589-Inline-shift-direction-fields.patch
@@ -7,10 +7,10 @@ Removes a layer of indirection for EnumDirection.getAdjacent(X|Y|Z)(), which is
 critical section for much of the server, including the lighting engine.
 
 diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java
-index e8e9494f7f337ee91a56fbd299da015dcda4a81b..593d6251c75ec337175d08b85000239ba7da1af2 100644
+index b92377f109c6bc0d497a20b1f92185cb29b57443..6d883db5c04cbcf454952c0f361029ecbfe4f037 100644
 --- a/src/main/java/net/minecraft/core/Direction.java
 +++ b/src/main/java/net/minecraft/core/Direction.java
-@@ -62,6 +62,11 @@ public enum Direction implements StringRepresentable {
+@@ -64,6 +64,11 @@ public enum Direction implements StringRepresentable {
      }, (direction1, direction2) -> {
          throw new IllegalArgumentException("Duplicate keys");
      }, Long2ObjectOpenHashMap::new));
@@ -22,7 +22,7 @@ index e8e9494f7f337ee91a56fbd299da015dcda4a81b..593d6251c75ec337175d08b85000239b
  
      private Direction(int id, int idOpposite, int idHorizontal, String name, Direction.AxisDirection direction, Direction.Axis axis, Vec3i vector) {
          this.data3d = id;
-@@ -71,6 +76,11 @@ public enum Direction implements StringRepresentable {
+@@ -73,6 +78,11 @@ public enum Direction implements StringRepresentable {
          this.axis = axis;
          this.axisDirection = direction;
          this.normal = vector;
@@ -34,7 +34,7 @@ index e8e9494f7f337ee91a56fbd299da015dcda4a81b..593d6251c75ec337175d08b85000239b
      }
  
      public static Direction[] orderedByNearest(Entity entity) {
-@@ -310,15 +320,15 @@ public enum Direction implements StringRepresentable {
+@@ -357,15 +367,15 @@ public enum Direction implements StringRepresentable {
      }
  
      public int getStepX() {
diff --git a/patches/unapplied/server/0618-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/server/0590-Allow-adding-items-to-BlockDropItemEvent.patch
similarity index 95%
rename from patches/unapplied/server/0618-Allow-adding-items-to-BlockDropItemEvent.patch
rename to patches/server/0590-Allow-adding-items-to-BlockDropItemEvent.patch
index 724f4fae17..5b2955f3c1 100644
--- a/patches/unapplied/server/0618-Allow-adding-items-to-BlockDropItemEvent.patch
+++ b/patches/server/0590-Allow-adding-items-to-BlockDropItemEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Allow adding items to BlockDropItemEvent
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 33a8e174c4e3b3b5164157c90c8f5b5f9c6d8263..2b2654ec04e8abca9db09d6257edf11099bb0d9b 100644
+index 5931cf0c05ca22f72a465d096dfb60508d84b859..5013a93f9bdc6d2c52239ca0434c7aa40f0572e1 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 @@ -395,13 +395,30 @@ public class CraftEventFactory {
diff --git a/patches/unapplied/server/0619-Add-getMainThreadExecutor-to-BukkitScheduler.patch b/patches/server/0591-Add-getMainThreadExecutor-to-BukkitScheduler.patch
similarity index 100%
rename from patches/unapplied/server/0619-Add-getMainThreadExecutor-to-BukkitScheduler.patch
rename to patches/server/0591-Add-getMainThreadExecutor-to-BukkitScheduler.patch
diff --git a/patches/unapplied/server/0620-living-entity-allow-attribute-registration.patch b/patches/server/0592-living-entity-allow-attribute-registration.patch
similarity index 96%
rename from patches/unapplied/server/0620-living-entity-allow-attribute-registration.patch
rename to patches/server/0592-living-entity-allow-attribute-registration.patch
index 6c6f1d7498..4bc58ce5e3 100644
--- a/patches/unapplied/server/0620-living-entity-allow-attribute-registration.patch
+++ b/patches/server/0592-living-entity-allow-attribute-registration.patch
@@ -41,7 +41,7 @@ index 46c313d581b9af6aa0a48f97ae3cc800a88535f2..07d700382fc356837045c46d320b7b69
          return net.minecraft.core.Registry.ATTRIBUTE.get(CraftNamespacedKey.toMinecraft(attribute.getKey()));
      }
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
-index 7c8dba1c7d65b4b91eb5a83c029bc5b31750775f..88c0e80be343614947bfa3a14e08c5400a2d4ccc 100644
+index 0293d6fd1bb29f75fa1fa1cdfa36b3f679c1bc45..6555db49ff57bba13a7eb3c0bf7ecb66d7828dce 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
 @@ -686,6 +686,13 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
diff --git a/patches/unapplied/server/0621-fix-dead-slime-setSize-invincibility.patch b/patches/server/0593-fix-dead-slime-setSize-invincibility.patch
similarity index 100%
rename from patches/unapplied/server/0621-fix-dead-slime-setSize-invincibility.patch
rename to patches/server/0593-fix-dead-slime-setSize-invincibility.patch
diff --git a/patches/unapplied/server/0622-Merchant-getRecipes-should-return-an-immutable-list.patch b/patches/server/0594-Merchant-getRecipes-should-return-an-immutable-list.patch
similarity index 70%
rename from patches/unapplied/server/0622-Merchant-getRecipes-should-return-an-immutable-list.patch
rename to patches/server/0594-Merchant-getRecipes-should-return-an-immutable-list.patch
index ff19ec2fa8..cbb0cdc052 100644
--- a/patches/unapplied/server/0622-Merchant-getRecipes-should-return-an-immutable-list.patch
+++ b/patches/server/0594-Merchant-getRecipes-should-return-an-immutable-list.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Merchant#getRecipes should return an immutable list
 
 
 diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchant.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchant.java
-index 425c8de426cecc9919d03dc64325494104d1b294..fcd6574857f77d547fd8101c5ac097bc6306034c 100644
+index 425c8de426cecc9919d03dc64325494104d1b294..71be1e4f17ded6ea42e36be0a9b534c6a65ec640 100644
 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchant.java
 +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchant.java
 @@ -24,7 +24,7 @@ public class CraftMerchant implements Merchant {
@@ -13,7 +13,7 @@ index 425c8de426cecc9919d03dc64325494104d1b294..fcd6574857f77d547fd8101c5ac097bc
      @Override
      public List<MerchantRecipe> getRecipes() {
 -        return Collections.unmodifiableList(Lists.transform(this.merchant.getOffers(), new Function<net.minecraft.world.item.trading.MerchantOffer, MerchantRecipe>() {
-+        return com.google.common.collect.ImmutableList.copyOf(Lists.transform(this.merchant.getOffers(), new Function<net.minecraft.world.item.trading.MerchantOffer, MerchantRecipe>() { // Paper - javadoc says 'an immutable list of trades' - not 'an unmodifiable view of a list of trades'. fixes issue with setRecipes(getRecipes())
++        return List.copyOf(Lists.transform(this.merchant.getOffers(), new Function<net.minecraft.world.item.trading.MerchantOffer, MerchantRecipe>() { // Paper - javadoc says 'an immutable list of trades' - not 'an unmodifiable view of a list of trades'. fixes issue with setRecipes(getRecipes())
              @Override
              public MerchantRecipe apply(net.minecraft.world.item.trading.MerchantOffer recipe) {
                  return recipe.asBukkit();
diff --git a/patches/unapplied/server/0623-Add-support-for-hex-color-codes-in-console.patch b/patches/server/0595-Add-support-for-hex-color-codes-in-console.patch
similarity index 98%
rename from patches/unapplied/server/0623-Add-support-for-hex-color-codes-in-console.patch
rename to patches/server/0595-Add-support-for-hex-color-codes-in-console.patch
index c56b164a8e..cc13dcf88a 100644
--- a/patches/unapplied/server/0623-Add-support-for-hex-color-codes-in-console.patch
+++ b/patches/server/0595-Add-support-for-hex-color-codes-in-console.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Add support for hex color codes in console
 Converts upstream's hex color code legacy format into actual hex color codes in the console.
 
 diff --git a/build.gradle.kts b/build.gradle.kts
-index 57edac376bcbd056fb8fc7f0a433e946bce4ff2e..f3db86346c5e7bf446707a746f3094f7f27e09c4 100644
+index eaeed610e3f1a622b2ece220d595fbca9c750d20..5e1b87f84ab78952291c16ef468b83c9c5f21112 100644
 --- a/build.gradle.kts
 +++ b/build.gradle.kts
 @@ -34,6 +34,7 @@ dependencies {
@@ -16,7 +16,7 @@ index 57edac376bcbd056fb8fc7f0a433e946bce4ff2e..f3db86346c5e7bf446707a746f3094f7
 +    annotationProcessor("org.apache.logging.log4j:log4j-core:2.14.1") // Paper - Needed to generate meta for out hex color converter plugin
      // Paper end
      implementation("org.apache.logging.log4j:log4j-iostreams:2.14.1") // Paper
-     implementation("org.apache.logging.log4j:log4j-api:2.14.1") // Paper
+     implementation("org.ow2.asm:asm:9.2")
 diff --git a/src/main/java/io/papermc/paper/console/HexFormattingConverter.java b/src/main/java/io/papermc/paper/console/HexFormattingConverter.java
 new file mode 100644
 index 0000000000000000000000000000000000000000..a4315961b7a465fb4872a4d67e7c26d4b4ed1fb9
diff --git a/patches/unapplied/server/0624-Expose-Tracked-Players.patch b/patches/server/0596-Expose-Tracked-Players.patch
similarity index 100%
rename from patches/unapplied/server/0624-Expose-Tracked-Players.patch
rename to patches/server/0596-Expose-Tracked-Players.patch
diff --git a/patches/unapplied/server/0625-Remove-streams-from-SensorNearest.patch b/patches/server/0597-Remove-streams-from-SensorNearest.patch
similarity index 71%
rename from patches/unapplied/server/0625-Remove-streams-from-SensorNearest.patch
rename to patches/server/0597-Remove-streams-from-SensorNearest.patch
index 3ef5964d12..123ca4b03b 100644
--- a/patches/unapplied/server/0625-Remove-streams-from-SensorNearest.patch
+++ b/patches/server/0597-Remove-streams-from-SensorNearest.patch
@@ -44,39 +44,20 @@ index 7680c269c2fe0cf2a51d0ebeb34624181826d578..49f3b25d28072b61f5cc97260df61df8
 +        // Paper end
      }
  }
-diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestLivingEntitySensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestLivingEntitySensor.java
-index 66c90013e52170a657b1a5dbdb99748a19fe55e8..ffd83db0a419ab589e89feeddd3fb038d6ed5839 100644
---- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestLivingEntitySensor.java
-+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestLivingEntitySensor.java
-@@ -21,9 +21,11 @@ public class NearestLivingEntitySensor extends Sensor<LivingEntity> {
-         list.sort(Comparator.comparingDouble(entity::distanceToSqr));
-         Brain<?> brain = entity.getBrain();
-         brain.setMemory(MemoryModuleType.NEAREST_LIVING_ENTITIES, list);
--        brain.setMemory(MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES, list.stream().filter((livingEntity2) -> {
--            return isEntityTargetable(entity, livingEntity2);
--        }).collect(Collectors.toList()));
-+        // Paper start - remove streams in favour of lists
-+        List<LivingEntity> visibleMobs = new java.util.ArrayList<>(list);
-+        visibleMobs.removeIf(otherEntityLiving -> !Sensor.isEntityTargetable(entity, otherEntityLiving));
-+        brain.setMemory(MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES, visibleMobs);
-+        // Paper end
-     }
- 
-     @Override
 diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/PlayerSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/PlayerSensor.java
-index b51574548b370f8a86d27835e9888ce1cd1d18be..457ea75137b8b02dc32bf1769ae8d57c470da470 100644
+index ed1b95ec694b0fe8b647964b18b8c33707fc0b47..0c40e0f8904880e1f01349953f44d1d330a5a696 100644
 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/PlayerSensor.java
 +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/PlayerSensor.java
 @@ -21,18 +21,25 @@ public class PlayerSensor extends Sensor<LivingEntity> {
  
      @Override
      protected void doTick(ServerLevel world, LivingEntity entity) {
--        List<Player> list = world.players().stream().filter(EntitySelector.NO_SPECTATORS).filter((serverPlayer) -> {
--            return entity.closerThan(serverPlayer, 16.0D);
+-        List<Player> list = world.players().stream().filter(EntitySelector.NO_SPECTATORS).filter((player) -> {
+-            return entity.closerThan(player, 16.0D);
 -        }).sorted(Comparator.comparingDouble(entity::distanceToSqr)).collect(Collectors.toList());
-+        // Paper start - remove streams in favour of lists
-+        List<Player> players = new java.util.ArrayList<>(world.players());
-+        players.removeIf(player -> !EntitySelector.NO_SPECTATORS.test(player) || !entity.closerThan(player, 16.0D)); // Paper - removeIf only re-allocates once compared to iterator
++        List<Player> players= new java.util.ArrayList<>(world.players());
++        players.removeIf(player -> !EntitySelector.NO_SPECTATORS.test(player) || !entity.closerThan(player, 16.0D));
++        players.sort(Comparator.comparingDouble(entity::distanceTo));
          Brain<?> brain = entity.getBrain();
 -        brain.setMemory(MemoryModuleType.NEAREST_PLAYERS, list);
 -        List<Player> list2 = list.stream().filter((player) -> {