diff --git a/patches/unapplied/api/0259-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch b/patches/api/0256-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch
similarity index 100%
rename from patches/unapplied/api/0259-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch
rename to patches/api/0256-Add-API-to-get-exact-interaction-point-in-PlayerInte.patch
diff --git a/patches/unapplied/api/0260-Add-sendOpLevel-API.patch b/patches/api/0257-Add-sendOpLevel-API.patch
similarity index 100%
rename from patches/unapplied/api/0260-Add-sendOpLevel-API.patch
rename to patches/api/0257-Add-sendOpLevel-API.patch
diff --git a/patches/unapplied/api/0261-Add-StructureLocateEvent.patch b/patches/api/0258-Add-StructureLocateEvent.patch
similarity index 100%
rename from patches/unapplied/api/0261-Add-StructureLocateEvent.patch
rename to patches/api/0258-Add-StructureLocateEvent.patch
diff --git a/patches/unapplied/api/0262-Return-chat-component-with-empty-text-instead-of-thr.patch b/patches/api/0259-Return-chat-component-with-empty-text-instead-of-thr.patch
similarity index 100%
rename from patches/unapplied/api/0262-Return-chat-component-with-empty-text-instead-of-thr.patch
rename to patches/api/0259-Return-chat-component-with-empty-text-instead-of-thr.patch
diff --git a/patches/unapplied/api/0263-Add-BlockPreDispenseEvent.patch b/patches/api/0260-Add-BlockPreDispenseEvent.patch
similarity index 100%
rename from patches/unapplied/api/0263-Add-BlockPreDispenseEvent.patch
rename to patches/api/0260-Add-BlockPreDispenseEvent.patch
diff --git a/patches/removed/1.18/0312-MC-145260-Fix-Whitelist-On-Off-inconsistency.patch b/patches/removed/1.18/No longer needed/0312-MC-145260-Fix-Whitelist-On-Off-inconsistency.patch
similarity index 100%
rename from patches/removed/1.18/0312-MC-145260-Fix-Whitelist-On-Off-inconsistency.patch
rename to patches/removed/1.18/No longer needed/0312-MC-145260-Fix-Whitelist-On-Off-inconsistency.patch
diff --git a/patches/removed/1.18/0345-Fix-MC-161754.patch b/patches/removed/1.18/No longer needed/0345-Fix-MC-161754.patch
similarity index 100%
rename from patches/removed/1.18/0345-Fix-MC-161754.patch
rename to patches/removed/1.18/No longer needed/0345-Fix-MC-161754.patch
diff --git a/patches/unapplied/server/0594-Empty-commands-shall-not-be-dispatched.patch b/patches/server/0566-Empty-commands-shall-not-be-dispatched.patch
similarity index 84%
rename from patches/unapplied/server/0594-Empty-commands-shall-not-be-dispatched.patch
rename to patches/server/0566-Empty-commands-shall-not-be-dispatched.patch
index 206f188b9..febba5dbe 100644
--- a/patches/unapplied/server/0594-Empty-commands-shall-not-be-dispatched.patch
+++ b/patches/server/0566-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 96a33f63024c1f72ab018e15904505832430002c..3270f96717d8096e5be669b6de1168d10921d19f 100644
+index 6624045921ef64046b375ec787cadda1e8c8435b..e4cb8f2b8602650e26c21a856ed0d8c2ea8f6c28 100644
 --- a/src/main/java/net/minecraft/commands/Commands.java
 +++ b/src/main/java/net/minecraft/commands/Commands.java
-@@ -230,6 +230,7 @@ public class Commands {
+@@ -239,6 +239,7 @@ public class Commands {
          command = event.getCommand();
  
          String[] args = command.split(" ");
diff --git a/patches/unapplied/server/0595-Implement-API-to-expose-exact-interaction-point.patch b/patches/server/0567-Implement-API-to-expose-exact-interaction-point.patch
similarity index 93%
rename from patches/unapplied/server/0595-Implement-API-to-expose-exact-interaction-point.patch
rename to patches/server/0567-Implement-API-to-expose-exact-interaction-point.patch
index 22825802a..0ad239321 100644
--- a/patches/unapplied/server/0595-Implement-API-to-expose-exact-interaction-point.patch
+++ b/patches/server/0567-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 0b274a5b9e0bf68769637f10e43dbff6d909512b..da2ae74b6f5875200e22c42ed07431016a90845e 100644
+index 2ac2100b6ae006ab490742424b682395e7513156..9fbd88027933242348d9f4fea8b45e96fd01c343 100644
 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
 +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-@@ -501,7 +501,7 @@ public class ServerPlayerGameMode {
+@@ -497,7 +497,7 @@ public class ServerPlayerGameMode {
              cancelledBlock = true;
          }
  
@@ -18,7 +18,7 @@ index 0b274a5b9e0bf68769637f10e43dbff6d909512b..da2ae74b6f5875200e22c42ed0743101
          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 31445c2e888d3020c1cba01f208fd60e424fb173..70452799bb3436fdb11462f77097ee52d1139f0d 100644
+index fa46a33e34c4ebcf94a54cb597ff6bbb02cfcef9..419c5bd638230c31dd68ba37174c8057c0229a6a 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 @@ -56,7 +56,9 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
diff --git a/patches/unapplied/server/0596-Remove-stale-POIs.patch b/patches/server/0568-Remove-stale-POIs.patch
similarity index 75%
rename from patches/unapplied/server/0596-Remove-stale-POIs.patch
rename to patches/server/0568-Remove-stale-POIs.patch
index 504745e97..219662402 100644
--- a/patches/unapplied/server/0596-Remove-stale-POIs.patch
+++ b/patches/server/0568-Remove-stale-POIs.patch
@@ -5,15 +5,15 @@ 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 e404203a6f330131cab38f7861bff9676fe5c52c..ec583ee3b9e0ffed230f219283e384035e73828d 100644
+index bc57099ffc447a713b92896a1348728702ef51b2..24ff621292d04d241f432e3a43e9dca92a35be55 100644
 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
 +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1787,6 +1787,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -1768,6 +1768,11 @@ public class ServerLevel extends Level implements WorldGenLevel {
              });
              optional1.ifPresent((villageplacetype) -> {
                  this.getServer().execute(() -> {
 +                    // Paper start
-+                    if (!optional.isPresent() && this.getPoiManager().exists(blockposition1, com.google.common.base.Predicates.alwaysTrue())) {
++                    if (optional.isEmpty() && this.getPoiManager().exists(blockposition1, poiType -> true)) {
 +                        this.getPoiManager().remove(blockposition1);
 +                    }
 +                    // Paper end
diff --git a/patches/unapplied/server/0597-Fix-villager-boat-exploit.patch b/patches/server/0569-Fix-villager-boat-exploit.patch
similarity index 78%
rename from patches/unapplied/server/0597-Fix-villager-boat-exploit.patch
rename to patches/server/0569-Fix-villager-boat-exploit.patch
index 9bad49e1e..6921029fe 100644
--- a/patches/unapplied/server/0597-Fix-villager-boat-exploit.patch
+++ b/patches/server/0569-Fix-villager-boat-exploit.patch
@@ -5,16 +5,15 @@ 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 3e7c9716b6d05859e7d63d9c7b9616f80ae8e51a..6f6b0460516da49fa0d0b5dd0dcd554bb03b9fe3 100644
+index 1d7e5d0f155dd92015dcf287b8a21d0337fc2af7..1c150913d4752d51d51640e0a5cf6d67182356b7 100644
 --- a/src/main/java/net/minecraft/server/players/PlayerList.java
 +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -622,6 +622,15 @@ public abstract class PlayerList {
+@@ -619,6 +619,14 @@ public abstract class PlayerList {
                  PlayerList.LOGGER.debug("Removing player mount");
                  entityplayer.stopRiding();
                  entity.getPassengersAndSelf().forEach((entity1) -> {
 +                    // Paper start
-+                    if (entity1 instanceof net.minecraft.world.entity.npc.AbstractVillager) {
-+                        final net.minecraft.world.entity.npc.AbstractVillager villager = (net.minecraft.world.entity.npc.AbstractVillager) entity1;
++                    if (entity1 instanceof net.minecraft.world.entity.npc.AbstractVillager villager) {
 +                        final net.minecraft.world.entity.player.Player human = villager.getTradingPlayer();
 +                        if (human != null) {
 +                            villager.setTradingPlayer(null);
diff --git a/patches/unapplied/server/0598-Add-sendOpLevel-API.patch b/patches/server/0570-Add-sendOpLevel-API.patch
similarity index 83%
rename from patches/unapplied/server/0598-Add-sendOpLevel-API.patch
rename to patches/server/0570-Add-sendOpLevel-API.patch
index df6f3e50d..cfb2eba9f 100644
--- a/patches/unapplied/server/0598-Add-sendOpLevel-API.patch
+++ b/patches/server/0570-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 51ffb66caa5193bf9a2c0c8f389d1cdbeb45321c..de818e518ec3622ea02bc8426ef2ca306c79d55e 100644
+index 1c150913d4752d51d51640e0a5cf6d67182356b7..d300fc577a363e7884d1a176b6c282fe87008a8b 100644
 --- a/src/main/java/net/minecraft/server/players/PlayerList.java
 +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -1124,6 +1124,11 @@ public abstract class PlayerList {
+@@ -1116,6 +1116,11 @@ public abstract class PlayerList {
      }
  
      private void sendPlayerPermissionLevel(ServerPlayer player, int permissionLevel) {
@@ -20,7 +20,7 @@ index 51ffb66caa5193bf9a2c0c8f389d1cdbeb45321c..de818e518ec3622ea02bc8426ef2ca30
          if (player.connection != null) {
              byte b0;
  
-@@ -1138,8 +1143,10 @@ public abstract class PlayerList {
+@@ -1130,8 +1135,10 @@ public abstract class PlayerList {
              player.connection.send(new ClientboundEntityEventPacket(player, b0));
          }
  
@@ -32,10 +32,10 @@ index 51ffb66caa5193bf9a2c0c8f389d1cdbeb45321c..de818e518ec3622ea02bc8426ef2ca30
  
      // Paper start
 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 348bff6213939b9b98364dd971a3f5ef29aa6189..d6aac3063cfd70188ab5fe0f09ad112d66265953 100644
+index f4a94bc00a8318af810c3c859decbf88decfa98d..87ed5271d623f239c94d18464458469c8e789bba 100644
 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-@@ -553,6 +553,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+@@ -576,6 +576,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
              ? (org.bukkit.entity.Firework) entity.getBukkitEntity()
              : null;
      }
diff --git a/patches/unapplied/server/0599-Add-StructureLocateEvent.patch b/patches/server/0571-Add-StructureLocateEvent.patch
similarity index 59%
rename from patches/unapplied/server/0599-Add-StructureLocateEvent.patch
rename to patches/server/0571-Add-StructureLocateEvent.patch
index ce604f303..ba28d1188 100644
--- a/patches/unapplied/server/0599-Add-StructureLocateEvent.patch
+++ b/patches/server/0571-Add-StructureLocateEvent.patch
@@ -5,25 +5,17 @@ Subject: [PATCH] Add StructureLocateEvent
 
 
 diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-index 6fbfe7a61df0efd4d85a00f02096410a1d29e62f..fde436065aeeb47cd177656a7c9fe8dc34178e87 100644
+index 583b87b20490fd7254f5e966af3b6a627f53a7cb..13e789b3b7ea3be73ec73bb5357cb603da8d5e0d 100644
 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
 +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-@@ -2,6 +2,7 @@ package net.minecraft.world.level.chunk;
- 
- import com.google.common.collect.Lists;
- import com.mojang.serialization.Codec;
-+import io.papermc.paper.event.world.StructureLocateEvent; // Paper - Add import due to naming conflict.
- import java.util.BitSet;
- import java.util.Iterator;
- import java.util.List;
-@@ -185,6 +186,20 @@ public abstract class ChunkGenerator {
+@@ -183,6 +183,20 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
  
      @Nullable
-     public BlockPos findNearestMapFeature(ServerLevel world, StructureFeature<?> feature, BlockPos center, int radius, boolean skipExistingChunks) {
+     public BlockPos findNearestMapFeature(ServerLevel world, StructureFeature<?> structureFeature, BlockPos center, int radius, boolean skipExistingChunks) {
 +        // Paper start
 +        org.bukkit.World world1 = world.getWorld();
 +        org.bukkit.Location originLocation = new org.bukkit.Location(world1, center.getX(), center.getY(), center.getZ());
-+        StructureLocateEvent event = new StructureLocateEvent(world1, originLocation, org.bukkit.StructureType.getStructureTypes().get(feature.getFeatureName()), radius, skipExistingChunks);
++        io.papermc.paper.event.world.StructureLocateEvent event = new io.papermc.paper.event.world.StructureLocateEvent(world1, originLocation, org.bukkit.StructureType.getStructureTypes().get(structureFeature.getFeatureName()), radius, skipExistingChunks);
 +        if(!event.callEvent()) return null;
 +        // If event call set a final location, skip structure finding and just return set result.
 +        if(event.getResult() != null) return new BlockPos(event.getResult().getBlockX(), event.getResult().getBlockY(), event.getResult().getBlockZ());
@@ -32,8 +24,8 @@ index 6fbfe7a61df0efd4d85a00f02096410a1d29e62f..fde436065aeeb47cd177656a7c9fe8dc
 +        // Get radius and whether to find unexplored structures (re)defined by event call.
 +        radius = event.getRadius();
 +        skipExistingChunks = event.shouldFindUnexplored();
-+        feature = StructureFeature.STRUCTURES_REGISTRY.get(event.getType().getName());
++        structureFeature = StructureFeature.STRUCTURES_REGISTRY.get(event.getType().getName());
 +        // Paper end
-         if (!this.biomeSource.canGenerateStructure(feature)) {
-             return null;
-         } else if (feature == StructureFeature.STRONGHOLD) {
+         if (structureFeature == StructureFeature.STRONGHOLD) {
+             this.generateStrongholds();
+             BlockPos blockposition1 = null;
diff --git a/patches/unapplied/server/0600-Collision-option-for-requiring-a-player-participant.patch b/patches/server/0572-Collision-option-for-requiring-a-player-participant.patch
similarity index 69%
rename from patches/unapplied/server/0600-Collision-option-for-requiring-a-player-participant.patch
rename to patches/server/0572-Collision-option-for-requiring-a-player-participant.patch
index 538bee5cd..a7d76f831 100644
--- a/patches/unapplied/server/0600-Collision-option-for-requiring-a-player-participant.patch
+++ b/patches/server/0572-Collision-option-for-requiring-a-player-participant.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Collision option for requiring a player participant
 
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-index 2c67111621937d9649ac79d133c955d25bc50485..94c6d7013547d3a2a86aaf72aa485761d601acee 100644
+index 4d723f5327a64cd8257bab502ae59a35b4a35cc1..e8f5ad4925b4d02bf79f9f56d0dac3f0cc410e71 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-@@ -84,6 +84,18 @@ public class PaperWorldConfig {
+@@ -82,6 +82,18 @@ public class PaperWorldConfig {
          }
      }
  
@@ -28,10 +28,10 @@ index 2c67111621937d9649ac79d133c955d25bc50485..94c6d7013547d3a2a86aaf72aa485761
      public int wanderingTraderSpawnDayTicks = 24000;
      public int wanderingTraderSpawnChanceFailureIncrement = 25;
 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 1db86fbfdc705c33948fb4c26be622616bcbdb12..392fa93b37cc79988c60b3215f69f5fff0ea97e5 100644
+index a6ef4b05daaa93ef333647cc00f8a708d466aaba..8725f949d643d21339caab19a914dc26eb515658 100644
 --- a/src/main/java/net/minecraft/world/entity/Entity.java
 +++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -1632,6 +1632,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
+@@ -1626,6 +1626,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i
      public void push(Entity entity) {
          if (!this.isPassengerOfSameVehicle(entity)) {
              if (!entity.noPhysics && !this.noPhysics) {
@@ -40,42 +40,26 @@ index 1db86fbfdc705c33948fb4c26be622616bcbdb12..392fa93b37cc79988c60b3215f69f5ff
                  double d1 = entity.getZ() - this.getZ();
                  double d2 = Mth.absMax(d0, d1);
 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 9653b142c199c068e4d6175bcd3cbecb6465853f..309bafd257d4932cfd69c2c212b32306938cd234 100644
+index 75cff07051d3b81d37926fb1da50af5ba27c34dc..ad49dcc3473fbad306d21cbac4600574e80220a7 100644
 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
 +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
-@@ -21,6 +21,7 @@ import net.minecraft.network.protocol.game.ClientboundAddEntityPacket;
- import net.minecraft.network.syncher.EntityDataAccessor;
- import net.minecraft.network.syncher.EntityDataSerializers;
- import net.minecraft.network.syncher.SynchedEntityData;
-+import net.minecraft.server.level.ServerPlayer;
- import net.minecraft.tags.BlockTags;
- import net.minecraft.tags.Tag;
- import net.minecraft.util.Mth;
-@@ -833,6 +834,7 @@ public abstract class AbstractMinecart extends Entity {
+@@ -832,6 +832,7 @@ public abstract class AbstractMinecart extends Entity {
      public void push(Entity entity) {
          if (!this.level.isClientSide) {
              if (!entity.noPhysics && !this.noPhysics) {
-+                if (!this.level.paperConfig.allowVehicleCollisions && this.level.paperConfig.onlyPlayersCollide && !(entity instanceof ServerPlayer)) return; // Paper
++                if (!this.level.paperConfig.allowVehicleCollisions && this.level.paperConfig.onlyPlayersCollide && !(entity instanceof Player)) return; // Paper
                  if (!this.hasPassenger(entity)) {
                      // CraftBukkit start
                      VehicleEntityCollisionEvent collisionEvent = new VehicleEntityCollisionEvent((Vehicle) this.getBukkitEntity(), entity.getBukkitEntity());
 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 a1b93f2878e22fa1d0cad639416d2dc5b8339c73..aa7c022c4faade23bd9061311d4152cf845d3331 100644
+index b4516094996c80886b8d7af599ba7c3d4229ba9d..c3d111204601270b57389e1f85456a9e2ada4629 100644
 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
 +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
-@@ -16,6 +16,7 @@ import net.minecraft.network.protocol.game.ServerboundPaddleBoatPacket;
- import net.minecraft.network.syncher.EntityDataAccessor;
- import net.minecraft.network.syncher.EntityDataSerializers;
- import net.minecraft.network.syncher.SynchedEntityData;
-+import net.minecraft.server.level.ServerPlayer;
- import net.minecraft.sounds.SoundEvent;
- import net.minecraft.sounds.SoundEvents;
- import net.minecraft.tags.FluidTags;
-@@ -240,6 +241,7 @@ public class Boat extends Entity {
+@@ -240,6 +240,7 @@ public class Boat extends Entity {
  
      @Override
      public void push(Entity entity) {
-+        if (!this.level.paperConfig.allowVehicleCollisions && this.level.paperConfig.onlyPlayersCollide && !(entity instanceof ServerPlayer)) return; // Paper
++        if (!this.level.paperConfig.allowVehicleCollisions && this.level.paperConfig.onlyPlayersCollide && !(entity instanceof Player)) return; // Paper
          if (entity instanceof Boat) {
              if (entity.getBoundingBox().minY < this.getBoundingBox().maxY) {
                  // CraftBukkit start
diff --git a/patches/unapplied/server/0601-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch b/patches/server/0573-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch
similarity index 92%
rename from patches/unapplied/server/0601-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch
rename to patches/server/0573-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch
index 8ce2f9276..f6d7cce33 100644
--- a/patches/unapplied/server/0601-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch
+++ b/patches/server/0573-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch
@@ -7,7 +7,7 @@ The duplicate ProjectileHitEvent in EntityFireball was removed. The
 event was always called before the duplicate call.
 
 diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java
-index dd5209ab2e5b59312349e709392689f25da162c0..3a088afd8269606543ebc9fb2074eb70431fcd39 100644
+index 3370f4d331637bf13c7912218041f23872971e25..0dc335b3003ae3cf11828cc849763e271a3b365b 100644
 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java
 +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java
 @@ -97,7 +97,7 @@ public abstract class AbstractHurtingProjectile extends Projectile {
diff --git a/patches/unapplied/server/0602-Return-chat-component-with-empty-text-instead-of-thr.patch b/patches/server/0574-Return-chat-component-with-empty-text-instead-of-thr.patch
similarity index 94%
rename from patches/unapplied/server/0602-Return-chat-component-with-empty-text-instead-of-thr.patch
rename to patches/server/0574-Return-chat-component-with-empty-text-instead-of-thr.patch
index 638baedf5..988a54be9 100644
--- a/patches/unapplied/server/0602-Return-chat-component-with-empty-text-instead-of-thr.patch
+++ b/patches/server/0574-Return-chat-component-with-empty-text-instead-of-thr.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Return chat component with empty text instead of throwing
 
 
 diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
-index 83d9fe7d92a8cb46478964d0742d0103a937648c..ca05d8e5ff1b8caa07c0e4f3e203abd46d7a7ede 100644
+index 49ac1e922c0c3b38ed48adda46870e1fc0fb09dc..1f4d3a48553a467bcbd4799735d1950c9c2dbe23 100644
 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
 +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
 @@ -21,6 +21,7 @@ import net.minecraft.ReportedException;
diff --git a/patches/unapplied/server/0603-Make-schedule-command-per-world.patch b/patches/server/0575-Make-schedule-command-per-world.patch
similarity index 89%
rename from patches/unapplied/server/0603-Make-schedule-command-per-world.patch
rename to patches/server/0575-Make-schedule-command-per-world.patch
index 29b047cfa..4859bb69f 100644
--- a/patches/unapplied/server/0603-Make-schedule-command-per-world.patch
+++ b/patches/server/0575-Make-schedule-command-per-world.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Make schedule command per-world
 
 
 diff --git a/src/main/java/net/minecraft/server/commands/ScheduleCommand.java b/src/main/java/net/minecraft/server/commands/ScheduleCommand.java
-index 3f2a4e2399759cdd5aebe0b87c9d72f50cf6a72d..fb1f94acb3e848fa2a21a258145f3b4cb42fe562 100644
+index 210df39e99bfe0f373cbdf7e0cd45ff1db9cd4aa..c0127908a954d3a40ca8829e3f1f63112212f261 100644
 --- a/src/main/java/net/minecraft/server/commands/ScheduleCommand.java
 +++ b/src/main/java/net/minecraft/server/commands/ScheduleCommand.java
-@@ -32,7 +32,7 @@ public class ScheduleCommand {
+@@ -31,7 +31,7 @@ public class ScheduleCommand {
          return new TranslatableComponent("commands.schedule.cleared.failure", new Object[]{object});
      });
      private static final SuggestionProvider<CommandSourceStack> SUGGEST_SCHEDULE = (commandcontext, suggestionsbuilder) -> {
@@ -17,7 +17,7 @@ index 3f2a4e2399759cdd5aebe0b87c9d72f50cf6a72d..fb1f94acb3e848fa2a21a258145f3b4c
      };
  
      public ScheduleCommand() {}
-@@ -83,7 +83,7 @@ public class ScheduleCommand {
+@@ -82,7 +82,7 @@ public class ScheduleCommand {
      }
  
      private static int remove(CommandSourceStack source, String eventName) throws CommandSyntaxException {
diff --git a/patches/unapplied/server/0604-Configurable-max-leash-distance.patch b/patches/server/0576-Configurable-max-leash-distance.patch
similarity index 85%
rename from patches/unapplied/server/0604-Configurable-max-leash-distance.patch
rename to patches/server/0576-Configurable-max-leash-distance.patch
index f557bcf8e..324570f5a 100644
--- a/patches/unapplied/server/0604-Configurable-max-leash-distance.patch
+++ b/patches/server/0576-Configurable-max-leash-distance.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable max leash distance
 
 
 diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-index 94c6d7013547d3a2a86aaf72aa485761d601acee..cdaf146c11239858391cd899758c3d8f91b8806c 100644
+index e8f5ad4925b4d02bf79f9f56d0dac3f0cc410e71..6322748d2eabdf29a46c50166fad265b6c8053d5 100644
 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
 +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
-@@ -305,6 +305,12 @@ public class PaperWorldConfig {
+@@ -287,6 +287,12 @@ public class PaperWorldConfig {
          }
      }
  
@@ -22,10 +22,10 @@ index 94c6d7013547d3a2a86aaf72aa485761d601acee..cdaf146c11239858391cd899758c3d8f
      private void disableEndCredits() {
          disableEndCredits = getBoolean("game-mechanics.disable-end-credits", false);
 diff --git a/src/main/java/net/minecraft/world/entity/PathfinderMob.java b/src/main/java/net/minecraft/world/entity/PathfinderMob.java
-index 7c82d453388a27b69207d051dec316fc14715e2b..a884940cc576704951d42c6b0d00f5a319297c29 100644
+index d1ab31d03ae421e628448fe2492ff138dc57c00f..999d18610666ec442bb038da5c452e3cd77e7428 100644
 --- a/src/main/java/net/minecraft/world/entity/PathfinderMob.java
 +++ b/src/main/java/net/minecraft/world/entity/PathfinderMob.java
-@@ -46,7 +46,7 @@ public abstract class PathfinderMob extends Mob {
+@@ -48,7 +48,7 @@ public abstract class PathfinderMob extends Mob {
              float f = this.distanceTo(entity);
  
              if (this instanceof TamableAnimal && ((TamableAnimal) this).isInSittingPose()) {
@@ -34,7 +34,7 @@ index 7c82d453388a27b69207d051dec316fc14715e2b..a884940cc576704951d42c6b0d00f5a3
                      this.level.getCraftServer().getPluginManager().callEvent(new EntityUnleashEvent(this.getBukkitEntity(), EntityUnleashEvent.UnleashReason.DISTANCE)); // CraftBukkit
                      this.dropLeash(true, true);
                  }
-@@ -55,7 +55,7 @@ public abstract class PathfinderMob extends Mob {
+@@ -57,7 +57,7 @@ public abstract class PathfinderMob extends Mob {
              }
  
              this.onLeashDistance(f);
diff --git a/patches/unapplied/server/0605-Implement-BlockPreDispenseEvent.patch b/patches/server/0577-Implement-BlockPreDispenseEvent.patch
similarity index 89%
rename from patches/unapplied/server/0605-Implement-BlockPreDispenseEvent.patch
rename to patches/server/0577-Implement-BlockPreDispenseEvent.patch
index d85e167ea..ba6693553 100644
--- a/patches/unapplied/server/0605-Implement-BlockPreDispenseEvent.patch
+++ b/patches/server/0577-Implement-BlockPreDispenseEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement BlockPreDispenseEvent
 
 
 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 501a5483160dba050261bb3448317a097cdb7ef2..2dcac4b638073aa1748f26f61219dbf95fd1ced6 100644
+index 07d357b5fcb30ed9ff074a196a19de1481fe3738..83ac86b3c1e7b9233f2db8e5488f97c5b44f8843 100644
 --- a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
 +++ b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
-@@ -91,6 +91,7 @@ public class DispenserBlock extends BaseEntityBlock {
+@@ -92,6 +92,7 @@ public class DispenserBlock extends BaseEntityBlock {
              DispenseItemBehavior idispensebehavior = this.getDispenseMethod(itemstack);
  
              if (idispensebehavior != DispenseItemBehavior.NOOP) {
@@ -17,7 +17,7 @@ index 501a5483160dba050261bb3448317a097cdb7ef2..2dcac4b638073aa1748f26f61219dbf9
                  tileentitydispenser.setItem(i, idispensebehavior.dispense(sourceblock, itemstack));
              }
 diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
-index 70452799bb3436fdb11462f77097ee52d1139f0d..db6b057eb6b0f08f7fcb998f8b646b757a98d3f6 100644
+index 419c5bd638230c31dd68ba37174c8057c0229a6a..eda17a60afd6cf03e58e66b2dbfe414b1cfac9d5 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 @@ -1848,5 +1848,11 @@ public class CraftEventFactory {