From d518a2739d06f47abfcaf5fd35ed30892c431955 Mon Sep 17 00:00:00 2001
From: Noah van der Aa <ndvdaa@gmail.com>
Date: Fri, 22 Sep 2023 16:58:35 +0200
Subject: [PATCH] more more more more more more more work

can't let lynx inflate his commit count too much
---
 .../Add-API-for-item-entity-health.patch      |  0
 .../Add-PlayerItemFrameChangeEvent.patch      |  0
 .../server/Add-more-Campfire-API.patch        |  0
 .../Add-root-admin-user-detection.patch       |  0
 ...llow-delegation-to-vanilla-chunk-gen.patch |  2 +-
 ...ways-allow-item-changing-in-Fireball.patch |  0
 .../server/Bucketable-API.patch               |  0
 .../server/Configurable-feature-seeds.patch   |  0
 ...max-block-light-for-monster-spawning.patch |  0
 .../server/Entity-powdered-snow-API.patch     |  0
 ...d-canSmelt-methods-to-FurnaceInvento.patch |  0
 ...t-isSectionEmpty-int-and-optimize-Pa.patch |  0
 .../server/Fix-Spigot-growth-modifiers.patch  |  0
 .../server/Fix-bees-aging-inside-hives.patch  |  0
 ...y-type-tags-suggestions-in-selectors.patch |  0
 ...removing-recipes-from-RecipeIterator.patch |  4 +-
 ...-pistons-and-BlockPistonRetractEvent.patch |  0
 .../Fix-tripwire-state-inconsistency.patch    |  0
 ...ward-CraftEntity-in-teleport-command.patch |  0
 ...de-unnecessary-itemmeta-from-clients.patch |  6 +-
 ...single-and-multi-AABB-VoxelShapes-an.patch |  8 +--
 .../server/Improve-scoreboard-entries.patch   |  0
 ...mplifiers-greater-than-127-correctly.patch |  8 +--
 ...-data-to-disk-if-it-serializes-witho.patch |  6 +-
 ...on-checking-in-player-move-packet-ha.patch | 20 +++---
 .../server/Optimize-HashMapPalette.patch      |  0
 ...rOpenersCounter-openCount-from-going.patch |  0
 ...sive-velocity-through-repeated-crits.patch |  0
 ...oversized-item-data-in-equipment-and.patch |  0
 ...de-code-using-deprecated-for-removal.patch |  0
 ...-t-attempt-to-teleport-dead-entities.patch |  0
 ...tion-for-logging-player-ip-addresses.patch | 61 -------------------
 32 files changed, 27 insertions(+), 88 deletions(-)
 rename patches/{unapplied => }/server/Add-API-for-item-entity-health.patch (100%)
 rename patches/{unapplied => }/server/Add-PlayerItemFrameChangeEvent.patch (100%)
 rename patches/{unapplied => }/server/Add-more-Campfire-API.patch (100%)
 rename patches/{unapplied => }/server/Add-root-admin-user-detection.patch (100%)
 rename patches/{unapplied => }/server/Allow-delegation-to-vanilla-chunk-gen.patch (99%)
 rename patches/{unapplied => }/server/Always-allow-item-changing-in-Fireball.patch (100%)
 rename patches/{unapplied => }/server/Bucketable-API.patch (100%)
 rename patches/{unapplied => }/server/Configurable-feature-seeds.patch (100%)
 rename patches/{unapplied => }/server/Configurable-max-block-light-for-monster-spawning.patch (100%)
 rename patches/{unapplied => }/server/Entity-powdered-snow-API.patch (100%)
 rename patches/{unapplied => }/server/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch (100%)
 rename patches/{unapplied => }/server/Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch (100%)
 rename patches/{unapplied => }/server/Fix-Spigot-growth-modifiers.patch (100%)
 rename patches/{unapplied => }/server/Fix-bees-aging-inside-hives.patch (100%)
 rename patches/{unapplied => }/server/Fix-entity-type-tags-suggestions-in-selectors.patch (100%)
 rename patches/{unapplied => }/server/Fix-removing-recipes-from-RecipeIterator.patch (92%)
 rename patches/{unapplied => }/server/Fix-sticky-pistons-and-BlockPistonRetractEvent.patch (100%)
 rename patches/{unapplied => }/server/Fix-tripwire-state-inconsistency.patch (100%)
 rename patches/{unapplied => }/server/Forward-CraftEntity-in-teleport-command.patch (100%)
 rename patches/{unapplied => }/server/Hide-unnecessary-itemmeta-from-clients.patch (89%)
 rename patches/{unapplied => }/server/Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch (99%)
 rename patches/{unapplied => }/server/Improve-scoreboard-entries.patch (100%)
 rename patches/{unapplied => }/server/Load-effect-amplifiers-greater-than-127-correctly.patch (81%)
 rename patches/{unapplied => }/server/Only-write-chunk-data-to-disk-if-it-serializes-witho.patch (94%)
 rename patches/{unapplied => }/server/Optimise-collision-checking-in-player-move-packet-ha.patch (91%)
 rename patches/{unapplied => }/server/Optimize-HashMapPalette.patch (100%)
 rename patches/{unapplied => }/server/Prevent-ContainerOpenersCounter-openCount-from-going.patch (100%)
 rename patches/{unapplied => }/server/Prevent-excessive-velocity-through-repeated-crits.patch (100%)
 rename patches/{unapplied => }/server/Prevent-sending-oversized-item-data-in-equipment-and.patch (100%)
 rename patches/{unapplied => }/server/Remove-client-side-code-using-deprecated-for-removal.patch (100%)
 rename patches/{unapplied => }/server/don-t-attempt-to-teleport-dead-entities.patch (100%)
 delete mode 100644 patches/unapplied/server/Add-config-option-for-logging-player-ip-addresses.patch

diff --git a/patches/unapplied/server/Add-API-for-item-entity-health.patch b/patches/server/Add-API-for-item-entity-health.patch
similarity index 100%
rename from patches/unapplied/server/Add-API-for-item-entity-health.patch
rename to patches/server/Add-API-for-item-entity-health.patch
diff --git a/patches/unapplied/server/Add-PlayerItemFrameChangeEvent.patch b/patches/server/Add-PlayerItemFrameChangeEvent.patch
similarity index 100%
rename from patches/unapplied/server/Add-PlayerItemFrameChangeEvent.patch
rename to patches/server/Add-PlayerItemFrameChangeEvent.patch
diff --git a/patches/unapplied/server/Add-more-Campfire-API.patch b/patches/server/Add-more-Campfire-API.patch
similarity index 100%
rename from patches/unapplied/server/Add-more-Campfire-API.patch
rename to patches/server/Add-more-Campfire-API.patch
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/Allow-delegation-to-vanilla-chunk-gen.patch b/patches/server/Allow-delegation-to-vanilla-chunk-gen.patch
similarity index 99%
rename from patches/unapplied/server/Allow-delegation-to-vanilla-chunk-gen.patch
rename to patches/server/Allow-delegation-to-vanilla-chunk-gen.patch
index ae88eca2fb..5ad66808e1 100644
--- a/patches/unapplied/server/Allow-delegation-to-vanilla-chunk-gen.patch
+++ b/patches/server/Allow-delegation-to-vanilla-chunk-gen.patch
@@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
 @@ -0,0 +0,0 @@ public final class CraftServer implements Server {
-         return new OldCraftChunkData(world.getMinHeight(), world.getMaxHeight(), handle.registryAccess().registryOrThrow(Registries.BIOME), world); // Paper - Anti-Xray - Add parameters
+         return new OldCraftChunkData(world.getMinHeight(), world.getMaxHeight(), handle.registryAccess().registryOrThrow(Registries.BIOME));
      }
  
 +    // Paper start
diff --git a/patches/unapplied/server/Always-allow-item-changing-in-Fireball.patch b/patches/server/Always-allow-item-changing-in-Fireball.patch
similarity index 100%
rename from patches/unapplied/server/Always-allow-item-changing-in-Fireball.patch
rename to patches/server/Always-allow-item-changing-in-Fireball.patch
diff --git a/patches/unapplied/server/Bucketable-API.patch b/patches/server/Bucketable-API.patch
similarity index 100%
rename from patches/unapplied/server/Bucketable-API.patch
rename to patches/server/Bucketable-API.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/Configurable-max-block-light-for-monster-spawning.patch b/patches/server/Configurable-max-block-light-for-monster-spawning.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-max-block-light-for-monster-spawning.patch
rename to patches/server/Configurable-max-block-light-for-monster-spawning.patch
diff --git a/patches/unapplied/server/Entity-powdered-snow-API.patch b/patches/server/Entity-powdered-snow-API.patch
similarity index 100%
rename from patches/unapplied/server/Entity-powdered-snow-API.patch
rename to patches/server/Entity-powdered-snow-API.patch
diff --git a/patches/unapplied/server/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/server/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
similarity index 100%
rename from patches/unapplied/server/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
rename to patches/server/Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
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 100%
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
diff --git a/patches/unapplied/server/Fix-Spigot-growth-modifiers.patch b/patches/server/Fix-Spigot-growth-modifiers.patch
similarity index 100%
rename from patches/unapplied/server/Fix-Spigot-growth-modifiers.patch
rename to patches/server/Fix-Spigot-growth-modifiers.patch
diff --git a/patches/unapplied/server/Fix-bees-aging-inside-hives.patch b/patches/server/Fix-bees-aging-inside-hives.patch
similarity index 100%
rename from patches/unapplied/server/Fix-bees-aging-inside-hives.patch
rename to patches/server/Fix-bees-aging-inside-hives.patch
diff --git a/patches/unapplied/server/Fix-entity-type-tags-suggestions-in-selectors.patch b/patches/server/Fix-entity-type-tags-suggestions-in-selectors.patch
similarity index 100%
rename from patches/unapplied/server/Fix-entity-type-tags-suggestions-in-selectors.patch
rename to patches/server/Fix-entity-type-tags-suggestions-in-selectors.patch
diff --git a/patches/unapplied/server/Fix-removing-recipes-from-RecipeIterator.patch b/patches/server/Fix-removing-recipes-from-RecipeIterator.patch
similarity index 92%
rename from patches/unapplied/server/Fix-removing-recipes-from-RecipeIterator.patch
rename to patches/server/Fix-removing-recipes-from-RecipeIterator.patch
index 6223be7c01..ccbe5adc6e 100644
--- a/patches/unapplied/server/Fix-removing-recipes-from-RecipeIterator.patch
+++ b/patches/server/Fix-removing-recipes-from-RecipeIterator.patch
@@ -12,8 +12,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +++ b/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java
 @@ -0,0 +0,0 @@ import org.bukkit.inventory.Recipe;
  public class RecipeIterator implements Iterator<Recipe> {
-     private final Iterator<Map.Entry<RecipeType<?>, Object2ObjectLinkedOpenHashMap<ResourceLocation, net.minecraft.world.item.crafting.Recipe<?>>>> recipes;
-     private Iterator<net.minecraft.world.item.crafting.Recipe<?>> current;
+     private final Iterator<Map.Entry<RecipeType<?>, Object2ObjectLinkedOpenHashMap<ResourceLocation, RecipeHolder<?>>>> recipes;
+     private Iterator<RecipeHolder<?>> current;
 +    private Recipe currentRecipe; // Paper - fix removing recipes
  
      public RecipeIterator() {
diff --git a/patches/unapplied/server/Fix-sticky-pistons-and-BlockPistonRetractEvent.patch b/patches/server/Fix-sticky-pistons-and-BlockPistonRetractEvent.patch
similarity index 100%
rename from patches/unapplied/server/Fix-sticky-pistons-and-BlockPistonRetractEvent.patch
rename to patches/server/Fix-sticky-pistons-and-BlockPistonRetractEvent.patch
diff --git a/patches/unapplied/server/Fix-tripwire-state-inconsistency.patch b/patches/server/Fix-tripwire-state-inconsistency.patch
similarity index 100%
rename from patches/unapplied/server/Fix-tripwire-state-inconsistency.patch
rename to patches/server/Fix-tripwire-state-inconsistency.patch
diff --git a/patches/unapplied/server/Forward-CraftEntity-in-teleport-command.patch b/patches/server/Forward-CraftEntity-in-teleport-command.patch
similarity index 100%
rename from patches/unapplied/server/Forward-CraftEntity-in-teleport-command.patch
rename to patches/server/Forward-CraftEntity-in-teleport-command.patch
diff --git a/patches/unapplied/server/Hide-unnecessary-itemmeta-from-clients.patch b/patches/server/Hide-unnecessary-itemmeta-from-clients.patch
similarity index 89%
rename from patches/unapplied/server/Hide-unnecessary-itemmeta-from-clients.patch
rename to patches/server/Hide-unnecessary-itemmeta-from-clients.patch
index 62dbd0516c..eaa27e5bf4 100644
--- a/patches/unapplied/server/Hide-unnecessary-itemmeta-from-clients.patch
+++ b/patches/server/Hide-unnecessary-itemmeta-from-clients.patch
@@ -21,14 +21,14 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListener
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
 +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
                                  // Refresh the current entity metadata
                                  entity.getEntityData().refresh(player);
                                  // SPIGOT-7136 - Allays
 -                                if (entity instanceof Allay) {
--                                    ServerGamePacketListenerImpl.this.send(new ClientboundSetEquipmentPacket(entity.getId(), Arrays.stream(net.minecraft.world.entity.EquipmentSlot.values()).map((slot) -> Pair.of(slot, ((LivingEntity) entity).getItemBySlot(slot).copy())).collect(Collectors.toList())));
+-                                    send(new ClientboundSetEquipmentPacket(entity.getId(), Arrays.stream(net.minecraft.world.entity.EquipmentSlot.values()).map((slot) -> Pair.of(slot, ((LivingEntity) entity).getItemBySlot(slot).copy())).collect(Collectors.toList())));
 +                                if (entity instanceof Allay allay) { // Paper
-+                                    ServerGamePacketListenerImpl.this.send(new ClientboundSetEquipmentPacket(entity.getId(), Arrays.stream(net.minecraft.world.entity.EquipmentSlot.values()).map((slot) -> Pair.of(slot, allay.stripMeta(allay.getItemBySlot(slot), true))).collect(Collectors.toList()))); // Paper - remove unnecessary item meta
++                                    send(new ClientboundSetEquipmentPacket(entity.getId(), Arrays.stream(net.minecraft.world.entity.EquipmentSlot.values()).map((slot) -> Pair.of(slot, allay.stripMeta(allay.getItemBySlot(slot), true))).collect(Collectors.toList()))); // Paper - remove unnecessary item meta
                                      player.containerMenu.sendAllDataToRemote();
                                  }
                              }
diff --git a/patches/unapplied/server/Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch b/patches/server/Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch
similarity index 99%
rename from patches/unapplied/server/Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch
rename to patches/server/Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch
index 3516863448..ff80e9781c 100644
--- a/patches/unapplied/server/Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch
+++ b/patches/server/Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch
@@ -1206,14 +1206,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/net/minecraft/server/players/PlayerList.java
 +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
 @@ -0,0 +0,0 @@ public abstract class PlayerList {
-         // CraftBukkit end
+         entityplayer1.forceSetPositionRotation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
  
          worldserver1.getChunkSource().addRegionTicket(net.minecraft.server.level.TicketType.POST_TELEPORT, new net.minecraft.world.level.ChunkPos(location.getBlockX() >> 4, location.getBlockZ() >> 4), 1, entityplayer.getId()); // Paper
 -        while (avoidSuffocation && !worldserver1.noCollision((Entity) entityplayer1) && entityplayer1.getY() < (double) worldserver1.getMaxBuildHeight()) {
 +        while (avoidSuffocation && !worldserver1.noCollision(entityplayer1, entityplayer1.getBoundingBox(), true) && entityplayer1.getY() < (double) worldserver1.getMaxBuildHeight()) { // Paper - make sure this loads chunks, we default to NOT loading now
+             // CraftBukkit end
              entityplayer1.setPos(entityplayer1.getX(), entityplayer1.getY() + 1.0D, entityplayer1.getZ());
          }
- 
 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1470,7 +1470,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +        // Paper end - optimise collisions
      }
  
-     List<VoxelShape> getEntityCollisions(@Nullable Entity entity, AABB box);
+     default boolean noBlockCollision(@Nullable Entity entity, AABB box) {
 diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/level/EntityGetter.java
@@ -1551,7 +1551,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
 +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java
 @@ -0,0 +0,0 @@ public class LevelChunkSection {
-         this.biomes = new PalettedContainer<>(biomeRegistry.asHolderIdMap(), biomeRegistry.getHolderOrThrow(Biomes.PLAINS), PalettedContainer.Strategy.SECTION_BIOMES, null); // Paper - Anti-Xray - Add preset biomes
+         this.biomes = new PalettedContainer<>(biomeRegistry.asHolderIdMap(), biomeRegistry.getHolderOrThrow(Biomes.PLAINS), PalettedContainer.Strategy.SECTION_BIOMES);
      }
  
 +    // Paper start
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/Load-effect-amplifiers-greater-than-127-correctly.patch b/patches/server/Load-effect-amplifiers-greater-than-127-correctly.patch
similarity index 81%
rename from patches/unapplied/server/Load-effect-amplifiers-greater-than-127-correctly.patch
rename to patches/server/Load-effect-amplifiers-greater-than-127-correctly.patch
index c0f01db4d8..50f42836e5 100644
--- a/patches/unapplied/server/Load-effect-amplifiers-greater-than-127-correctly.patch
+++ b/patches/server/Load-effect-amplifiers-greater-than-127-correctly.patch
@@ -13,8 +13,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      }
  
      private static MobEffectInstance loadSpecifiedEffect(MobEffect type, CompoundTag nbt) {
--        int i = nbt.getByte("Amplifier");
-+        int i = Byte.toUnsignedInt(nbt.getByte("Amplifier")); // Paper - correctly load amplifiers > 127
-         int j = nbt.getInt("Duration");
-         boolean bl = nbt.getBoolean("Ambient");
+-        int i = nbt.getByte("amplifier");
++        int i = Byte.toUnsignedInt(nbt.getByte("amplifier")); // Paper - correctly load amplifiers > 127
+         int j = nbt.getInt("duration");
+         boolean bl = nbt.getBoolean("ambient");
          boolean bl2 = true;
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 94%
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
index c1082a5a44..33d526b87c 100644
--- 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
@@ -50,7 +50,7 @@ diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileSto
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
 +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java
-@@ -0,0 +0,0 @@ public class RegionFileStorage implements AutoCloseable {
+@@ -0,0 +0,0 @@ public final class RegionFileStorage implements AutoCloseable {
                  NbtIo.write(nbt, (DataOutput) dataoutputstream);
                  regionfile.setStatus(pos.x, pos.z, ChunkSerializer.getStatus(nbt)); // Paper - cache status on disk
                  regionfile.setOversized(pos.x, pos.z, false); // Paper - We don't do this anymore, mojang stores differently, but clear old meta flag if it exists to get rid of our own meta file once last oversized is gone
@@ -69,7 +69,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
                      } catch (Throwable throwable1) {
                          throwable.addSuppressed(throwable1);
                      }
-@@ -0,0 +0,0 @@ public class RegionFileStorage implements AutoCloseable {
+@@ -0,0 +0,0 @@ public final class RegionFileStorage implements AutoCloseable {
  
                  throw throwable;
              }
@@ -81,7 +81,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
          }
          // Paper start
          return;
-@@ -0,0 +0,0 @@ public class RegionFileStorage implements AutoCloseable {
+@@ -0,0 +0,0 @@ public final class RegionFileStorage implements AutoCloseable {
          }
  
      }
diff --git a/patches/unapplied/server/Optimise-collision-checking-in-player-move-packet-ha.patch b/patches/server/Optimise-collision-checking-in-player-move-packet-ha.patch
similarity index 91%
rename from patches/unapplied/server/Optimise-collision-checking-in-player-move-packet-ha.patch
rename to patches/server/Optimise-collision-checking-in-player-move-packet-ha.patch
index 3488971c5f..44e4b3b0dc 100644
--- a/patches/unapplied/server/Optimise-collision-checking-in-player-move-packet-ha.patch
+++ b/patches/server/Optimise-collision-checking-in-player-move-packet-ha.patch
@@ -11,7 +11,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListener
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
 +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
                      return;
                  }
  
@@ -20,7 +20,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
  
                  d6 = d3 - this.vehicleLastGoodX; // Paper - diff on change, used for checking large move vectors above
                  d7 = d4 - this.vehicleLastGoodY - 1.0E-6D; // Paper - diff on change, used for checking large move vectors above
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
                  }
  
                  entity.move(MoverType.PLAYER, new Vec3(d6, d7, d8));
@@ -28,7 +28,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
                  double d11 = d7;
  
                  d6 = d3 - entity.getX();
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
                  boolean flag2 = false;
  
                  if (d10 > org.spigotmc.SpigotConfig.movedWronglyThreshold) { // Spigot
@@ -55,8 +55,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +                if (teleportBack) { // Paper end - optimise out extra getCubes
                      entity.absMoveTo(d0, d1, d2, f, f1);
                      this.player.absMoveTo(d0, d1, d2, this.player.getYRot(), this.player.getXRot()); // CraftBukkit
-                     this.connection.send(new ClientboundMoveVehiclePacket(entity));
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+                     this.send(new ClientboundMoveVehiclePacket(entity));
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
      }
  
      private boolean noBlocksAround(Entity entity) {
@@ -90,7 +90,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      }
  
      @Override
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
                  }
  
                  if (this.awaitingPositionFromClient != null) {
@@ -99,7 +99,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
                          this.awaitingTeleportTime = this.tickCount;
                          this.teleport(this.awaitingPositionFromClient.x, this.awaitingPositionFromClient.y, this.awaitingPositionFromClient.z, this.player.getYRot(), this.player.getXRot());
                      }
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
                                  }
                              }
  
@@ -108,7 +108,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
  
                              d6 = d0 - this.lastGoodX; // Paper - diff on change, used for checking large move vectors above
                              d7 = d1 - this.lastGoodY; // Paper - diff on change, used for checking large move vectors above
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
  
                              this.player.move(MoverType.PLAYER, new Vec3(d6, d7, d8));
                              this.player.onGround = packet.isOnGround(); // CraftBukkit - SPIGOT-5810, SPIGOT-5835, SPIGOT-6828: reset by this.player.move
@@ -116,7 +116,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
                              // Paper start - prevent position desync
                              if (this.awaitingPositionFromClient != null) {
                                  return; // ... thanks Mojang for letting move calls teleport across dimensions.
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
                              boolean flag2 = false;
  
                              if (!this.player.isChangingDimension() && d10 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.gameMode.isCreative() && this.player.gameMode.getGameModeForPlayer() != GameType.SPECTATOR) { // Spigot
@@ -142,7 +142,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
                                  this.internalTeleport(d3, d4, d5, f, f1, Collections.emptySet()); // CraftBukkit - SPIGOT-1807: Don't call teleport event, when the client thinks the player is falling, because the chunks are not loaded on the client yet.
                                  this.player.doCheckFallDamage(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5, packet.isOnGround());
                              } else {
-@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
+@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
          }
      }
  
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/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 100%
rename from patches/unapplied/server/Prevent-excessive-velocity-through-repeated-crits.patch
rename to patches/server/Prevent-excessive-velocity-through-repeated-crits.patch
diff --git a/patches/unapplied/server/Prevent-sending-oversized-item-data-in-equipment-and.patch b/patches/server/Prevent-sending-oversized-item-data-in-equipment-and.patch
similarity index 100%
rename from patches/unapplied/server/Prevent-sending-oversized-item-data-in-equipment-and.patch
rename to patches/server/Prevent-sending-oversized-item-data-in-equipment-and.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/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/Add-config-option-for-logging-player-ip-addresses.patch b/patches/unapplied/server/Add-config-option-for-logging-player-ip-addresses.patch
deleted file mode 100644
index 1045aa893c..0000000000
--- a/patches/unapplied/server/Add-config-option-for-logging-player-ip-addresses.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Noah van der Aa <ndvdaa@gmail.com>
-Date: Tue, 5 Oct 2021 20:04:21 +0200
-Subject: [PATCH] Add config option for logging player ip addresses
-
-
-diff --git a/src/main/java/net/minecraft/server/network/LegacyQueryHandler.java b/src/main/java/net/minecraft/server/network/LegacyQueryHandler.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/net/minecraft/server/network/LegacyQueryHandler.java
-+++ b/src/main/java/net/minecraft/server/network/LegacyQueryHandler.java
-@@ -0,0 +0,0 @@ public class LegacyQueryHandler extends ChannelInboundHandlerAdapter {
-         buf.release();
-         this.buf = null;
- 
--        LOGGER.debug("Ping: (1.6) from {}", ctx.channel().remoteAddress());
-+        LOGGER.debug("Ping: (1.6) from {}", io.papermc.paper.configuration.GlobalConfiguration.get().logging.logPlayerIpAddresses ? ctx.channel().remoteAddress() : "<ip address withheld>"); // Paper
- 
-         InetSocketAddress virtualHost = com.destroystokyo.paper.network.PaperNetworkClient.prepareVirtualHost(host, port);
-         com.destroystokyo.paper.event.server.PaperServerListPingEvent event = com.destroystokyo.paper.network.PaperLegacyStatusClient.processRequest(
-diff --git a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
-+++ b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
-@@ -0,0 +0,0 @@ public class ServerConnectionListener {
-                                 throw new ReportedException(CrashReport.forThrowable(exception, "Ticking memory connection"));
-                             }
- 
--                            ServerConnectionListener.LOGGER.warn("Failed to handle packet for {}", networkmanager.getRemoteAddress(), exception);
-+                            ServerConnectionListener.LOGGER.warn("Failed to handle packet for {}", io.papermc.paper.configuration.GlobalConfiguration.get().logging.logPlayerIpAddresses ? String.valueOf(networkmanager.getRemoteAddress()) : "<ip address withheld>", exception); // Paper
-                             MutableComponent ichatmutablecomponent = Component.literal("Internal server error");
- 
-                             networkmanager.send(new ClientboundDisconnectPacket(ichatmutablecomponent), PacketSendListener.thenRun(() -> {
-diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
-     }
- 
-     public String getUserName() {
--        return this.gameProfile != null ? this.gameProfile + " (" + this.connection.getRemoteAddress() + ")" : String.valueOf(this.connection.getRemoteAddress());
-+        // Paper start
-+        String ip = io.papermc.paper.configuration.GlobalConfiguration.get().logging.logPlayerIpAddresses ? String.valueOf(this.connection.getRemoteAddress()) : "<ip address withheld>";
-+        return this.gameProfile != null ? this.gameProfile + " (" + ip + ")" : String.valueOf(ip);
-+        // Paper end
-     }
- 
-     @Override
-diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
---- a/src/main/java/net/minecraft/server/players/PlayerList.java
-+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -0,0 +0,0 @@ public abstract class PlayerList {
-         String s1 = "local";
- 
-         if (connection.getRemoteAddress() != null) {
--            s1 = connection.getRemoteAddress().toString();
-+            s1 = io.papermc.paper.configuration.GlobalConfiguration.get().logging.logPlayerIpAddresses ? connection.getRemoteAddress().toString() : "<ip address withheld>"; // Paper
-         }
- 
-         // Spigot start - spawn location event