From 630bdd8cdafdc2e8aeb4f81de2eeec854aabcf33 Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Wed, 23 Oct 2024 21:10:14 +0100
Subject: [PATCH] A bunch more 637

---
 .../Add-PlayerItemFrameChangeEvent.patch      | 31 ++++++++++---------
 .../server/Add-missing-InventoryType.patch    |  0
 .../server/Add-more-Campfire-API.patch        | 15 +++++----
 .../server/Add-packet-limiter-config.patch    |  0
 ...aper-mobcaps-and-paper-playermobcaps.patch |  2 +-
 .../Add-root-admin-user-detection.patch       |  0
 ...irement-before-suggesting-root-nodes.patch |  0
 .../server/Configurable-feature-seeds.patch   |  0
 ...n-t-log-debug-logging-being-disabled.patch |  0
 ...id-state-when-raytracing-skip-air-bl.patch |  0
 ...bour-chunk-data-off-disk-when-conver.patch |  0
 ...-ServerboundCommandSuggestionPacket-.patch |  0
 .../server/Ensure-valid-vehicle-status.patch  |  2 +-
 ...t-isSectionEmpty-int-and-optimize-Pa.patch | 10 +++---
 ...or-causing-a-crash-when-trying-to-ge.patch |  0
 .../Fix-CraftCriteria-defaults-map.patch      |  0
 .../server/Fix-Spigot-growth-modifiers.patch  |  2 +-
 .../Fix-issues-with-mob-conversion.patch      | 11 +------
 ...entory-not-closing-on-entity-removal.patch |  2 +-
 ...rnColor-on-tropical-fish-bucket-meta.patch |  0
 .../Fix-upstreams-block-state-factories.patch |  6 ++++
 ...ward-CraftEntity-in-teleport-command.patch | 20 ++++++------
 .../server/Improve-scoreboard-entries.patch   |  0
 ...d-getChunkAt-has-inlined-logic-for-l.patch |  0
 ...ally-inline-methods-in-BlockPosition.patch |  0
 ...uler-threads-according-to-the-plugin.patch |  0
 ...-data-to-disk-if-it-serializes-witho.patch |  0
 ...primise-map-impl-for-tracked-players.patch |  0
 ...timise-BlockSoil-nearby-water-lookup.patch |  0
 .../server/Optimize-HashMapPalette.patch      |  0
 ...t-data-components-copy-in-smithing-r.patch |  1 +
 .../server/Preserve-overstacked-loot.patch    |  0
 ...rOpenersCounter-openCount-from-going.patch |  0
 ...sive-velocity-through-repeated-crits.patch |  2 +-
 ...oftlocked-end-exit-portal-generation.patch |  0
 ...de-code-using-deprecated-for-removal.patch |  0
 ...itize-ResourceLocation-error-logging.patch |  0
 .../server/Time-scoreboard-search.patch       |  0
 ...date-head-rotation-in-missing-places.patch |  0
 ...-t-attempt-to-teleport-dead-entities.patch |  0
 ...ious-menus-with-empty-level-accesses.patch |  0
 ...-unintended-light-block-manipulation.patch |  0
 42 files changed, 52 insertions(+), 52 deletions(-)
 rename patches/{unapplied => }/server/Add-PlayerItemFrameChangeEvent.patch (69%)
 rename patches/{unapplied => }/server/Add-missing-InventoryType.patch (100%)
 rename patches/{unapplied => }/server/Add-more-Campfire-API.patch (88%)
 rename patches/{unapplied => }/server/Add-packet-limiter-config.patch (100%)
 rename patches/{unapplied => }/server/Add-paper-mobcaps-and-paper-playermobcaps.patch (99%)
 rename patches/{unapplied => }/server/Add-root-admin-user-detection.patch (100%)
 rename patches/{unapplied => }/server/Check-requirement-before-suggesting-root-nodes.patch (100%)
 rename patches/{unapplied => }/server/Configurable-feature-seeds.patch (100%)
 rename patches/{unapplied => }/server/Don-t-log-debug-logging-being-disabled.patch (100%)
 rename patches/{unapplied => }/server/Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch (100%)
 rename patches/{unapplied => }/server/Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch (100%)
 rename patches/{unapplied => }/server/Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch (100%)
 rename patches/{unapplied => }/server/Ensure-valid-vehicle-status.patch (94%)
 rename patches/{unapplied => }/server/Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch (82%)
 rename patches/{unapplied => }/server/Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch (100%)
 rename patches/{unapplied => }/server/Fix-CraftCriteria-defaults-map.patch (100%)
 rename patches/{unapplied => }/server/Fix-Spigot-growth-modifiers.patch (99%)
 rename patches/{unapplied => }/server/Fix-merchant-inventory-not-closing-on-entity-removal.patch (98%)
 rename patches/{unapplied => }/server/Fix-setPatternColor-on-tropical-fish-bucket-meta.patch (100%)
 rename patches/{unapplied => }/server/Fix-upstreams-block-state-factories.patch (98%)
 rename patches/{unapplied => }/server/Forward-CraftEntity-in-teleport-command.patch (62%)
 rename patches/{unapplied => }/server/Improve-scoreboard-entries.patch (100%)
 rename patches/{unapplied => }/server/Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch (100%)
 rename patches/{unapplied => }/server/Manually-inline-methods-in-BlockPosition.patch (100%)
 rename patches/{unapplied => }/server/Name-craft-scheduler-threads-according-to-the-plugin.patch (100%)
 rename patches/{unapplied => }/server/Only-write-chunk-data-to-disk-if-it-serializes-witho.patch (100%)
 rename patches/{unapplied => }/server/Oprimise-map-impl-for-tracked-players.patch (100%)
 rename patches/{unapplied => }/server/Optimise-BlockSoil-nearby-water-lookup.patch (100%)
 rename patches/{unapplied => }/server/Optimize-HashMapPalette.patch (100%)
 rename patches/{unapplied => }/server/Preserve-overstacked-loot.patch (100%)
 rename patches/{unapplied => }/server/Prevent-ContainerOpenersCounter-openCount-from-going.patch (100%)
 rename patches/{unapplied => }/server/Prevent-excessive-velocity-through-repeated-crits.patch (95%)
 rename patches/{unapplied => }/server/Prevent-softlocked-end-exit-portal-generation.patch (100%)
 rename patches/{unapplied => }/server/Remove-client-side-code-using-deprecated-for-removal.patch (100%)
 rename patches/{unapplied => }/server/Sanitize-ResourceLocation-error-logging.patch (100%)
 rename patches/{unapplied => }/server/Time-scoreboard-search.patch (100%)
 rename patches/{unapplied => }/server/Update-head-rotation-in-missing-places.patch (100%)
 rename patches/{unapplied => }/server/don-t-attempt-to-teleport-dead-entities.patch (100%)
 rename patches/{unapplied => }/server/fix-various-menus-with-empty-level-accesses.patch (100%)
 rename patches/{unapplied => }/server/prevent-unintended-light-block-manipulation.patch (100%)

diff --git a/patches/unapplied/server/Add-PlayerItemFrameChangeEvent.patch b/patches/server/Add-PlayerItemFrameChangeEvent.patch
similarity index 69%
rename from patches/unapplied/server/Add-PlayerItemFrameChangeEvent.patch
rename to patches/server/Add-PlayerItemFrameChangeEvent.patch
index 539e9cd835..f8f581890b 100644
--- a/patches/unapplied/server/Add-PlayerItemFrameChangeEvent.patch
+++ b/patches/server/Add-PlayerItemFrameChangeEvent.patch
@@ -27,23 +27,26 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +                    this.setItem(ItemStack.fromBukkitCopy(event.getItemStack()), false);
 +                }
 +                // Paper end - Add PlayerItemFrameChangeEvent
-                 this.dropItem(source.getEntity(), false);
+                 this.dropItem(world, source.getEntity(), false);
                  this.gameEvent(GameEvent.BLOCK_CHANGE, source.getEntity());
                  this.playSound(this.getRemoveItemSound(), 1.0F, 1.0F);
 @@ -0,0 +0,0 @@ public class ItemFrame extends HangingEntity {
-                         }
-                     }
- 
--                    this.setItem(itemstack);
-+                    // Paper start - Add PlayerItemFrameChangeEvent
-+                    PlayerItemFrameChangeEvent event = new PlayerItemFrameChangeEvent((org.bukkit.entity.Player) player.getBukkitEntity(), (org.bukkit.entity.ItemFrame) this.getBukkitEntity(), itemstack.asBukkitCopy(), PlayerItemFrameChangeEvent.ItemFrameChangeAction.PLACE);
-+                    if (!event.callEvent()) {
-+                        return InteractionResult.FAIL;
-+                    }
-+                    this.setItem(ItemStack.fromBukkitCopy(event.getItemStack()));
-+                    // Paper end - Add PlayerItemFrameChangeEvent
-                     this.gameEvent(GameEvent.BLOCK_CHANGE, player);
-                     itemstack.consume(1, player);
+                     if (worldmap != null && worldmap.isTrackedCountOverLimit(256)) {
+                         return InteractionResult.FAIL;
+                     } else {
+-                        this.setItem(itemstack);
++                        // Paper start - Add PlayerItemFrameChangeEvent
++                        PlayerItemFrameChangeEvent event = new PlayerItemFrameChangeEvent((org.bukkit.entity.Player) player.getBukkitEntity(), (org.bukkit.entity.ItemFrame) this.getBukkitEntity(), itemstack.asBukkitCopy(), PlayerItemFrameChangeEvent.ItemFrameChangeAction.PLACE);
++                        if (!event.callEvent()) {
++                            return InteractionResult.FAIL;
++                        }
++                        this.setItem(ItemStack.fromBukkitCopy(event.getItemStack()));
++                        // Paper end - Add PlayerItemFrameChangeEvent
+                         this.gameEvent(GameEvent.BLOCK_CHANGE, player);
+                         itemstack.consume(1, player);
+                         return InteractionResult.SUCCESS;
+@@ -0,0 +0,0 @@ public class ItemFrame extends HangingEntity {
+                     return InteractionResult.PASS;
                  }
              } else {
 +                // Paper start - Add PlayerItemFrameChangeEvent
diff --git a/patches/unapplied/server/Add-missing-InventoryType.patch b/patches/server/Add-missing-InventoryType.patch
similarity index 100%
rename from patches/unapplied/server/Add-missing-InventoryType.patch
rename to patches/server/Add-missing-InventoryType.patch
diff --git a/patches/unapplied/server/Add-more-Campfire-API.patch b/patches/server/Add-more-Campfire-API.patch
similarity index 88%
rename from patches/unapplied/server/Add-more-Campfire-API.patch
rename to patches/server/Add-more-Campfire-API.patch
index 51beed7a62..34903ff8fc 100644
--- a/patches/unapplied/server/Add-more-Campfire-API.patch
+++ b/patches/server/Add-more-Campfire-API.patch
@@ -9,30 +9,29 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
 +++ b/src/main/java/net/minecraft/world/level/block/entity/CampfireBlockEntity.java
 @@ -0,0 +0,0 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+     private final NonNullList<ItemStack> items;
      public final int[] cookingProgress;
      public final int[] cookingTime;
-     private final RecipeManager.CachedCheck<SingleRecipeInput, CampfireCookingRecipe> quickCheck;
 +    public final boolean[] stopCooking; // Paper - Add more Campfire API
  
      public CampfireBlockEntity(BlockPos pos, BlockState state) {
          super(BlockEntityType.CAMPFIRE, pos, state);
-@@ -0,0 +0,0 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
+         this.items = NonNullList.withSize(4, ItemStack.EMPTY);
          this.cookingProgress = new int[4];
          this.cookingTime = new int[4];
-         this.quickCheck = RecipeManager.createCheck(RecipeType.CAMPFIRE_COOKING);
 +        this.stopCooking = new boolean[4]; // Paper - Add more Campfire API
      }
  
-     public static void cookTick(Level world, BlockPos pos, BlockState state, CampfireBlockEntity campfire) {
+     public static void cookTick(ServerLevel world, BlockPos pos, BlockState state, CampfireBlockEntity blockEntity, RecipeManager.CachedCheck<SingleRecipeInput, CampfireCookingRecipe> recipeMatchGetter) {
 @@ -0,0 +0,0 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
  
              if (!itemstack.isEmpty()) {
                  flag = true;
-+                if (!campfire.stopCooking[i]) { // Paper - Add more Campfire API
-                 int j = campfire.cookingProgress[i]++;
++                if (!blockEntity.stopCooking[i]) { // Paper - Add more Campfire API
+                 int j = blockEntity.cookingProgress[i]++;
 +                } // Paper - Add more Campfire API
  
-                 if (campfire.cookingProgress[i] >= campfire.cookingTime[i]) {
+                 if (blockEntity.cookingProgress[i] >= blockEntity.cookingTime[i]) {
                      SingleRecipeInput singlerecipeinput = new SingleRecipeInput(itemstack);
 @@ -0,0 +0,0 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
              System.arraycopy(aint, 0, this.cookingTime, 0, Math.min(this.cookingTime.length, aint.length));
@@ -52,7 +51,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
  
      @Override
 @@ -0,0 +0,0 @@ public class CampfireBlockEntity extends BlockEntity implements Clearable {
-         ContainerHelper.saveAllItems(nbt, this.items, true, registryLookup);
+         ContainerHelper.saveAllItems(nbt, this.items, true, registries);
          nbt.putIntArray("CookingTimes", this.cookingProgress);
          nbt.putIntArray("CookingTotalTimes", this.cookingTime);
 +        // Paper start - Add more Campfire API
diff --git a/patches/unapplied/server/Add-packet-limiter-config.patch b/patches/server/Add-packet-limiter-config.patch
similarity index 100%
rename from patches/unapplied/server/Add-packet-limiter-config.patch
rename to patches/server/Add-packet-limiter-config.patch
diff --git a/patches/unapplied/server/Add-paper-mobcaps-and-paper-playermobcaps.patch b/patches/server/Add-paper-mobcaps-and-paper-playermobcaps.patch
similarity index 99%
rename from patches/unapplied/server/Add-paper-mobcaps-and-paper-playermobcaps.patch
rename to patches/server/Add-paper-mobcaps-and-paper-playermobcaps.patch
index 1c48bf66f2..1c8598479d 100644
--- a/patches/unapplied/server/Add-paper-mobcaps-and-paper-playermobcaps.patch
+++ b/patches/server/Add-paper-mobcaps-and-paper-playermobcaps.patch
@@ -261,7 +261,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
 +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
 @@ -0,0 +0,0 @@ public final class NaturalSpawner {
-         world.getProfiler().pop();
+         gameprofilerfiller.pop();
      }
  
 +    // Paper start - Add mobcaps commands
diff --git a/patches/unapplied/server/Add-root-admin-user-detection.patch b/patches/server/Add-root-admin-user-detection.patch
similarity index 100%
rename from patches/unapplied/server/Add-root-admin-user-detection.patch
rename to patches/server/Add-root-admin-user-detection.patch
diff --git a/patches/unapplied/server/Check-requirement-before-suggesting-root-nodes.patch b/patches/server/Check-requirement-before-suggesting-root-nodes.patch
similarity index 100%
rename from patches/unapplied/server/Check-requirement-before-suggesting-root-nodes.patch
rename to patches/server/Check-requirement-before-suggesting-root-nodes.patch
diff --git a/patches/unapplied/server/Configurable-feature-seeds.patch b/patches/server/Configurable-feature-seeds.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-feature-seeds.patch
rename to patches/server/Configurable-feature-seeds.patch
diff --git a/patches/unapplied/server/Don-t-log-debug-logging-being-disabled.patch b/patches/server/Don-t-log-debug-logging-being-disabled.patch
similarity index 100%
rename from patches/unapplied/server/Don-t-log-debug-logging-being-disabled.patch
rename to patches/server/Don-t-log-debug-logging-being-disabled.patch
diff --git a/patches/unapplied/server/Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch b/patches/server/Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch
similarity index 100%
rename from patches/unapplied/server/Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch
rename to patches/server/Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch
diff --git a/patches/unapplied/server/Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch b/patches/server/Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch
similarity index 100%
rename from patches/unapplied/server/Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch
rename to patches/server/Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch
diff --git a/patches/unapplied/server/Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch b/patches/server/Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch
similarity index 100%
rename from patches/unapplied/server/Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch
rename to patches/server/Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch
diff --git a/patches/unapplied/server/Ensure-valid-vehicle-status.patch b/patches/server/Ensure-valid-vehicle-status.patch
similarity index 94%
rename from patches/unapplied/server/Ensure-valid-vehicle-status.patch
rename to patches/server/Ensure-valid-vehicle-status.patch
index 62941443fe..098abb6d58 100644
--- a/patches/unapplied/server/Ensure-valid-vehicle-status.patch
+++ b/patches/server/Ensure-valid-vehicle-status.patch
@@ -15,5 +15,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 -        if (persistVehicle && entity1 != null && entity != this && entity.hasExactlyOnePlayerPassenger()) {
 +        if (persistVehicle && entity1 != null && entity != this && entity.hasExactlyOnePlayerPassenger() && !entity.isRemoved()) { // Paper - Ensure valid vehicle status
              // CraftBukkit end
+             CompoundTag nbttagcompound1 = new CompoundTag();
              CompoundTag nbttagcompound2 = new CompoundTag();
-             CompoundTag nbttagcompound3 = new CompoundTag();
diff --git a/patches/unapplied/server/Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch b/patches/server/Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch
similarity index 82%
rename from patches/unapplied/server/Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch
rename to patches/server/Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch
index 1709ec221c..354e1777f9 100644
--- a/patches/unapplied/server/Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch
+++ b/patches/server/Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch
@@ -12,14 +12,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 @@ -0,0 +0,0 @@ public class CraftChunk implements Chunk {
          PalettedContainerRO<Holder<net.minecraft.world.level.biome.Biome>>[] biome = (includeBiome || includeBiomeTempRain) ? new PalettedContainer[cs.length] : null;
  
-         Registry<net.minecraft.world.level.biome.Biome> iregistry = this.worldServer.registryAccess().registryOrThrow(Registries.BIOME);
--        Codec<PalettedContainerRO<Holder<net.minecraft.world.level.biome.Biome>>> biomeCodec = PalettedContainer.codecRO(iregistry.asHolderIdMap(), iregistry.holderByNameCodec(), PalettedContainer.Strategy.SECTION_BIOMES, iregistry.getHolderOrThrow(Biomes.PLAINS));
+         Registry<net.minecraft.world.level.biome.Biome> iregistry = this.worldServer.registryAccess().lookupOrThrow(Registries.BIOME);
+-        Codec<PalettedContainerRO<Holder<net.minecraft.world.level.biome.Biome>>> biomeCodec = PalettedContainer.codecRO(iregistry.asHolderIdMap(), iregistry.holderByNameCodec(), PalettedContainer.Strategy.SECTION_BIOMES, iregistry.getOrThrow(Biomes.PLAINS));
  
          for (int i = 0; i < cs.length; i++) {
 -            CompoundTag data = new CompoundTag();
  
--            data.put("block_states", ChunkSerializer.BLOCK_STATE_CODEC.encodeStart(NbtOps.INSTANCE, cs[i].getStates()).getOrThrow());
--            sectionBlockIDs[i] = ChunkSerializer.BLOCK_STATE_CODEC.parse(NbtOps.INSTANCE, data.getCompound("block_states")).getOrThrow(ChunkSerializer.ChunkReadException::new);
+-            data.put("block_states", SerializableChunkData.BLOCK_STATE_CODEC.encodeStart(NbtOps.INSTANCE, cs[i].getStates()).getOrThrow());
+-            sectionBlockIDs[i] = SerializableChunkData.BLOCK_STATE_CODEC.parse(NbtOps.INSTANCE, data.getCompound("block_states")).getOrThrow(SerializableChunkData.ChunkReadException::new);
 -            sectionEmpty[i] = cs[i].hasOnlyAir();
 +            // Paper start - Fix ChunkSnapshot#isSectionEmpty(int); and remove codec usage
 +            sectionEmpty[i] = cs[i].hasOnlyAir(); // fix sectionEmpty array not being filled
@@ -37,7 +37,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
  
              if (biome != null) {
 -                data.put("biomes", biomeCodec.encodeStart(NbtOps.INSTANCE, cs[i].getBiomes()).getOrThrow());
--                biome[i] = biomeCodec.parse(NbtOps.INSTANCE, data.getCompound("biomes")).getOrThrow(ChunkSerializer.ChunkReadException::new);
+-                biome[i] = biomeCodec.parse(NbtOps.INSTANCE, data.getCompound("biomes")).getOrThrow(SerializableChunkData.ChunkReadException::new);
 +                biome[i] = ((PalettedContainer<Holder<net.minecraft.world.level.biome.Biome>>) cs[i].getBiomes()).copy(); // Paper - Perf: use copy instead of round tripping with codecs
              }
          }
diff --git a/patches/unapplied/server/Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch b/patches/server/Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch
similarity index 100%
rename from patches/unapplied/server/Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch
rename to patches/server/Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch
diff --git a/patches/unapplied/server/Fix-CraftCriteria-defaults-map.patch b/patches/server/Fix-CraftCriteria-defaults-map.patch
similarity index 100%
rename from patches/unapplied/server/Fix-CraftCriteria-defaults-map.patch
rename to patches/server/Fix-CraftCriteria-defaults-map.patch
diff --git a/patches/unapplied/server/Fix-Spigot-growth-modifiers.patch b/patches/server/Fix-Spigot-growth-modifiers.patch
similarity index 99%
rename from patches/unapplied/server/Fix-Spigot-growth-modifiers.patch
rename to patches/server/Fix-Spigot-growth-modifiers.patch
index 93a80a1d74..84ebf48794 100644
--- a/patches/unapplied/server/Fix-Spigot-growth-modifiers.patch
+++ b/patches/server/Fix-Spigot-growth-modifiers.patch
@@ -16,7 +16,7 @@ diff --git a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java b
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
 +++ b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
-@@ -0,0 +0,0 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl
+@@ -0,0 +0,0 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements CaveVines {
          return to.setValue(BERRIES, from.getValue(BERRIES));
      }
  
diff --git a/patches/server/Fix-issues-with-mob-conversion.patch b/patches/server/Fix-issues-with-mob-conversion.patch
index 903e1ba52e..eec0a510b2 100644
--- a/patches/server/Fix-issues-with-mob-conversion.patch
+++ b/patches/server/Fix-issues-with-mob-conversion.patch
@@ -8,15 +8,6 @@ diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/sr
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java
 +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java
-@@ -0,0 +0,0 @@ import net.minecraft.world.entity.player.Player;
- import net.minecraft.world.item.Items;
- import net.minecraft.world.level.ItemLike;
- import net.minecraft.world.level.Level;
-+import org.bukkit.event.entity.CreatureSpawnEvent;
-+import org.bukkit.event.entity.EntityTransformEvent;
- 
- public class Skeleton extends AbstractSkeleton {
- 
 @@ -0,0 +0,0 @@ public class Skeleton extends AbstractSkeleton {
      }
  
@@ -28,7 +19,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
              }
  
 -        }, org.bukkit.event.entity.EntityTransformEvent.TransformReason.FROZEN, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.FROZEN); // CraftBukkit - add spawn and transform reasons
-+        }, EntityTransformEvent.TransformReason.FROZEN, CreatureSpawnEvent.SpawnReason.FROZEN);// CraftBukkit - add spawn and transform reasons
++        }, org.bukkit.event.entity.EntityTransformEvent.TransformReason.FROZEN, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.FROZEN);// CraftBukkit - add spawn and transform reasons
 +
 +        // Paper start - Fix issues with mob conversion; reset conversion time to prevent event spam
 +        if (stray == null) {
diff --git a/patches/unapplied/server/Fix-merchant-inventory-not-closing-on-entity-removal.patch b/patches/server/Fix-merchant-inventory-not-closing-on-entity-removal.patch
similarity index 98%
rename from patches/unapplied/server/Fix-merchant-inventory-not-closing-on-entity-removal.patch
rename to patches/server/Fix-merchant-inventory-not-closing-on-entity-removal.patch
index 5cb28f6a6f..4d4881738c 100644
--- a/patches/unapplied/server/Fix-merchant-inventory-not-closing-on-entity-removal.patch
+++ b/patches/server/Fix-merchant-inventory-not-closing-on-entity-removal.patch
@@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/mai
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
 +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements WorldGenLevel {
+@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
              // Spigot end
              // Spigot Start
              if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
diff --git a/patches/unapplied/server/Fix-setPatternColor-on-tropical-fish-bucket-meta.patch b/patches/server/Fix-setPatternColor-on-tropical-fish-bucket-meta.patch
similarity index 100%
rename from patches/unapplied/server/Fix-setPatternColor-on-tropical-fish-bucket-meta.patch
rename to patches/server/Fix-setPatternColor-on-tropical-fish-bucket-meta.patch
diff --git a/patches/unapplied/server/Fix-upstreams-block-state-factories.patch b/patches/server/Fix-upstreams-block-state-factories.patch
similarity index 98%
rename from patches/unapplied/server/Fix-upstreams-block-state-factories.patch
rename to patches/server/Fix-upstreams-block-state-factories.patch
index 686efd6eb9..30eb0232ac 100644
--- a/patches/unapplied/server/Fix-upstreams-block-state-factories.patch
+++ b/patches/server/Fix-upstreams-block-state-factories.patch
@@ -130,6 +130,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 -                        Material.MANGROVE_WALL_SIGN,
 -                        Material.OAK_SIGN,
 -                        Material.OAK_WALL_SIGN,
+-                        Material.PALE_OAK_SIGN,
+-                        Material.PALE_OAK_WALL_SIGN,
 -                        Material.SPRUCE_SIGN,
 -                        Material.SPRUCE_WALL_SIGN,
 -                        Material.WARPED_SIGN,
@@ -157,6 +159,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 -                        Material.MANGROVE_WALL_HANGING_SIGN,
 -                        Material.OAK_HANGING_SIGN,
 -                        Material.OAK_WALL_HANGING_SIGN,
+-                        Material.PALE_OAK_HANGING_SIGN,
+-                        Material.PALE_OAK_WALL_HANGING_SIGN,
 -                        Material.SPRUCE_HANGING_SIGN,
 -                        Material.SPRUCE_WALL_HANGING_SIGN,
 -                        Material.WARPED_HANGING_SIGN,
@@ -294,6 +298,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 -        register(Material.CHISELED_BOOKSHELF, CraftChiseledBookshelf.class, CraftChiseledBookshelf::new, ChiseledBookShelfBlockEntity::new);
 -        register(Material.COMPARATOR, CraftComparator.class, CraftComparator::new, ComparatorBlockEntity::new);
 -        register(Material.CONDUIT, CraftConduit.class, CraftConduit::new, ConduitBlockEntity::new);
+-        register(Material.CREAKING_HEART, CraftCreakingHeart.class, CraftCreakingHeart::new, CreakingHeartBlockEntity::new);
 -        register(Material.DAYLIGHT_DETECTOR, CraftDaylightDetector.class, CraftDaylightDetector::new, DaylightDetectorBlockEntity::new);
 -        register(Material.DECORATED_POT, CraftDecoratedPot.class, CraftDecoratedPot::new, DecoratedPotBlockEntity::new);
 -        register(Material.DISPENSER, CraftDispenser.class, CraftDispenser::new, DispenserBlockEntity::new);
@@ -340,6 +345,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +        register(BlockEntityType.CHISELED_BOOKSHELF, CraftChiseledBookshelf.class, CraftChiseledBookshelf::new);
 +        register(BlockEntityType.COMPARATOR, CraftComparator.class, CraftComparator::new);
 +        register(BlockEntityType.CONDUIT, CraftConduit.class, CraftConduit::new);
++        register(BlockEntityType.CREAKING_HEART, CraftCreakingHeart.class, CraftCreakingHeart::new);
 +        register(BlockEntityType.DAYLIGHT_DETECTOR, CraftDaylightDetector.class, CraftDaylightDetector::new);
 +        register(BlockEntityType.DECORATED_POT, CraftDecoratedPot.class, CraftDecoratedPot::new);
 +        register(BlockEntityType.DISPENSER, CraftDispenser.class, CraftDispenser::new);
diff --git a/patches/unapplied/server/Forward-CraftEntity-in-teleport-command.patch b/patches/server/Forward-CraftEntity-in-teleport-command.patch
similarity index 62%
rename from patches/unapplied/server/Forward-CraftEntity-in-teleport-command.patch
rename to patches/server/Forward-CraftEntity-in-teleport-command.patch
index dec40618bf..f42af1bdca 100644
--- a/patches/unapplied/server/Forward-CraftEntity-in-teleport-command.patch
+++ b/patches/server/Forward-CraftEntity-in-teleport-command.patch
@@ -23,13 +23,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
  
          nbttagcompound.remove("Dimension");
 @@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
-                         entity2.restoreFrom(this);
-                         this.removeAfterChangingDimensions();
-                         // CraftBukkit start - Forward the CraftEntity to the new entity
--                        this.getBukkitEntity().setHandle(entity2);
--                        entity2.bukkitEntity = this.getBukkitEntity();
-+                        // this.getBukkitEntity().setHandle(entity2); // Paper - forward CraftEntity in teleport command; moved to Entity#restoreFrom
-+                        // entity2.bukkitEntity = this.getBukkitEntity();
-                         // CraftBukkit end
-                     }
- 
+             entity.restoreFrom(this);
+             this.removeAfterChangingDimensions();
+             // CraftBukkit start - Forward the CraftEntity to the new entity
+-            this.getBukkitEntity().setHandle(entity);
+-            entity.bukkitEntity = this.getBukkitEntity();
++            //this.getBukkitEntity().setHandle(entity);
++            //entity.bukkitEntity = this.getBukkitEntity(); // Paper - forward CraftEntity in teleport command; moved to Entity#restoreFrom
+             // CraftBukkit end
+             entity.teleportSetPosition(PositionMoveRotation.of(teleportTarget), teleportTarget.relatives());
+             if (this.inWorld) world.addDuringTeleport(entity); // CraftBukkit - Don't spawn the new entity if the current entity isn't spawned
diff --git a/patches/unapplied/server/Improve-scoreboard-entries.patch b/patches/server/Improve-scoreboard-entries.patch
similarity index 100%
rename from patches/unapplied/server/Improve-scoreboard-entries.patch
rename to patches/server/Improve-scoreboard-entries.patch
diff --git a/patches/unapplied/server/Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch b/patches/server/Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch
similarity index 100%
rename from patches/unapplied/server/Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch
rename to patches/server/Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch
diff --git a/patches/unapplied/server/Manually-inline-methods-in-BlockPosition.patch b/patches/server/Manually-inline-methods-in-BlockPosition.patch
similarity index 100%
rename from patches/unapplied/server/Manually-inline-methods-in-BlockPosition.patch
rename to patches/server/Manually-inline-methods-in-BlockPosition.patch
diff --git a/patches/unapplied/server/Name-craft-scheduler-threads-according-to-the-plugin.patch b/patches/server/Name-craft-scheduler-threads-according-to-the-plugin.patch
similarity index 100%
rename from patches/unapplied/server/Name-craft-scheduler-threads-according-to-the-plugin.patch
rename to patches/server/Name-craft-scheduler-threads-according-to-the-plugin.patch
diff --git a/patches/unapplied/server/Only-write-chunk-data-to-disk-if-it-serializes-witho.patch b/patches/server/Only-write-chunk-data-to-disk-if-it-serializes-witho.patch
similarity index 100%
rename from patches/unapplied/server/Only-write-chunk-data-to-disk-if-it-serializes-witho.patch
rename to patches/server/Only-write-chunk-data-to-disk-if-it-serializes-witho.patch
diff --git a/patches/unapplied/server/Oprimise-map-impl-for-tracked-players.patch b/patches/server/Oprimise-map-impl-for-tracked-players.patch
similarity index 100%
rename from patches/unapplied/server/Oprimise-map-impl-for-tracked-players.patch
rename to patches/server/Oprimise-map-impl-for-tracked-players.patch
diff --git a/patches/unapplied/server/Optimise-BlockSoil-nearby-water-lookup.patch b/patches/server/Optimise-BlockSoil-nearby-water-lookup.patch
similarity index 100%
rename from patches/unapplied/server/Optimise-BlockSoil-nearby-water-lookup.patch
rename to patches/server/Optimise-BlockSoil-nearby-water-lookup.patch
diff --git a/patches/unapplied/server/Optimize-HashMapPalette.patch b/patches/server/Optimize-HashMapPalette.patch
similarity index 100%
rename from patches/unapplied/server/Optimize-HashMapPalette.patch
rename to patches/server/Optimize-HashMapPalette.patch
diff --git a/patches/server/Option-to-prevent-data-components-copy-in-smithing-r.patch b/patches/server/Option-to-prevent-data-components-copy-in-smithing-r.patch
index 79cc3ef0b4..0f7597ec3c 100644
--- a/patches/server/Option-to-prevent-data-components-copy-in-smithing-r.patch
+++ b/patches/server/Option-to-prevent-data-components-copy-in-smithing-r.patch
@@ -15,6 +15,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +    final boolean copyDataComponents; // Paper - Option to prevent data components copy
  
      public SmithingTransformRecipe(Optional<Ingredient> template, Optional<Ingredient> base, Optional<Ingredient> addition, ItemStack result) {
++        // Paper start - Option to prevent data components copy
 +        this(template, base, addition, result, true);
 +    }
 +    public SmithingTransformRecipe(Optional<Ingredient> template, Optional<Ingredient> base, Optional<Ingredient> addition, ItemStack result, boolean copyDataComponents) {
diff --git a/patches/unapplied/server/Preserve-overstacked-loot.patch b/patches/server/Preserve-overstacked-loot.patch
similarity index 100%
rename from patches/unapplied/server/Preserve-overstacked-loot.patch
rename to patches/server/Preserve-overstacked-loot.patch
diff --git a/patches/unapplied/server/Prevent-ContainerOpenersCounter-openCount-from-going.patch b/patches/server/Prevent-ContainerOpenersCounter-openCount-from-going.patch
similarity index 100%
rename from patches/unapplied/server/Prevent-ContainerOpenersCounter-openCount-from-going.patch
rename to patches/server/Prevent-ContainerOpenersCounter-openCount-from-going.patch
diff --git a/patches/unapplied/server/Prevent-excessive-velocity-through-repeated-crits.patch b/patches/server/Prevent-excessive-velocity-through-repeated-crits.patch
similarity index 95%
rename from patches/unapplied/server/Prevent-excessive-velocity-through-repeated-crits.patch
rename to patches/server/Prevent-excessive-velocity-through-repeated-crits.patch
index 3b63047cc1..cde7e7c608 100644
--- a/patches/unapplied/server/Prevent-excessive-velocity-through-repeated-crits.patch
+++ b/patches/server/Prevent-excessive-velocity-through-repeated-crits.patch
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +            }
 +            // Paper end - Prevent excessive velocity through repeated crits
  
-             this.setDeltaMovement(vec3d.x, (double) f, vec3d.z);
+             this.setDeltaMovement(vec3d.x, Math.max((double) f, vec3d.y), vec3d.z);
              if (this.isSprinting()) {
                  float f1 = this.getYRot() * 0.017453292F;
 -
diff --git a/patches/unapplied/server/Prevent-softlocked-end-exit-portal-generation.patch b/patches/server/Prevent-softlocked-end-exit-portal-generation.patch
similarity index 100%
rename from patches/unapplied/server/Prevent-softlocked-end-exit-portal-generation.patch
rename to patches/server/Prevent-softlocked-end-exit-portal-generation.patch
diff --git a/patches/unapplied/server/Remove-client-side-code-using-deprecated-for-removal.patch b/patches/server/Remove-client-side-code-using-deprecated-for-removal.patch
similarity index 100%
rename from patches/unapplied/server/Remove-client-side-code-using-deprecated-for-removal.patch
rename to patches/server/Remove-client-side-code-using-deprecated-for-removal.patch
diff --git a/patches/unapplied/server/Sanitize-ResourceLocation-error-logging.patch b/patches/server/Sanitize-ResourceLocation-error-logging.patch
similarity index 100%
rename from patches/unapplied/server/Sanitize-ResourceLocation-error-logging.patch
rename to patches/server/Sanitize-ResourceLocation-error-logging.patch
diff --git a/patches/unapplied/server/Time-scoreboard-search.patch b/patches/server/Time-scoreboard-search.patch
similarity index 100%
rename from patches/unapplied/server/Time-scoreboard-search.patch
rename to patches/server/Time-scoreboard-search.patch
diff --git a/patches/unapplied/server/Update-head-rotation-in-missing-places.patch b/patches/server/Update-head-rotation-in-missing-places.patch
similarity index 100%
rename from patches/unapplied/server/Update-head-rotation-in-missing-places.patch
rename to patches/server/Update-head-rotation-in-missing-places.patch
diff --git a/patches/unapplied/server/don-t-attempt-to-teleport-dead-entities.patch b/patches/server/don-t-attempt-to-teleport-dead-entities.patch
similarity index 100%
rename from patches/unapplied/server/don-t-attempt-to-teleport-dead-entities.patch
rename to patches/server/don-t-attempt-to-teleport-dead-entities.patch
diff --git a/patches/unapplied/server/fix-various-menus-with-empty-level-accesses.patch b/patches/server/fix-various-menus-with-empty-level-accesses.patch
similarity index 100%
rename from patches/unapplied/server/fix-various-menus-with-empty-level-accesses.patch
rename to patches/server/fix-various-menus-with-empty-level-accesses.patch
diff --git a/patches/unapplied/server/prevent-unintended-light-block-manipulation.patch b/patches/server/prevent-unintended-light-block-manipulation.patch
similarity index 100%
rename from patches/unapplied/server/prevent-unintended-light-block-manipulation.patch
rename to patches/server/prevent-unintended-light-block-manipulation.patch