From d4e6ee3d12d9230429f21b7210048ffb937d3736 Mon Sep 17 00:00:00 2001
From: Nassim Jahnke <nassim@njahnke.dev>
Date: Wed, 7 Dec 2022 19:52:24 +0100
Subject: [PATCH] Moar, fix API

---
 ...dd-extended-PaperServerListPingEvent.patch |  8 ++++----
 ...-get-a-BlockState-without-a-snapshot.patch |  0
 .../Ability-to-apply-mending-to-XP-API.patch  |  0
 ...e-PlayerProfile-in-AsyncPreLoginEven.patch |  2 +-
 ...to-control-if-armour-stands-can-move.patch |  0
 .../server/Add-ArmorStand-Item-Meta.patch     |  0
 ...ftMagicNumbers.isSupportedApiVersion.patch |  0
 .../server/Add-EntityZapEvent.patch           | 20 +++++++++----------
 .../server/Add-PlayerArmorChangeEvent.patch   |  2 +-
 .../server/Add-PlayerJumpEvent.patch          |  0
 .../Add-PlayerUseUnknownEntityEvent.patch     |  0
 .../server/Add-ProjectileCollideEvent.patch   |  0
 .../server/Add-UnknownCommandEvent.patch      |  0
 .../server/Add-World-Util-Methods.patch       |  0
 ...-to-configure-frosted_ice-properties.patch |  0
 ...to-disable-ender-dragon-legacy-check.patch |  0
 ...n-option-to-prevent-player-names-fro.patch |  0
 ...ent-to-allow-plugins-to-handle-clien.patch |  0
 .../Add-openSign-method-to-HumanEntity.patch  |  4 ++--
 ...ke-parrots-stay-on-shoulders-despite.patch |  0
 .../server/Add-server-name-parameter.patch    |  0
 .../Add-setPlayerProfile-API-for-Skulls.patch |  0
 ...setting-for-proxy-online-mode-status.patch |  0
 .../Add-source-to-PlayerExpChangeEvent.patch  |  0
 .../Allow-Reloading-of-Command-Aliases.patch  |  0
 ...Allow-disabling-armour-stand-ticking.patch |  0
 ...Item-entities-with-World.spawnEntity.patch |  0
 ...-a-custom-authentication-servers-dow.patch |  2 +-
 .../Async-GameProfileCache-saving.patch       |  0
 .../server/AsyncTabCompleteEvent.patch        | 14 +++++++------
 ...blocking-on-Network-Manager-creation.patch |  0
 .../server/Basic-PlayerProfile-API.patch      |  0
 .../Block-Enderpearl-Travel-Exploit.patch     |  0
 ...player-logins-during-server-shutdown.patch |  2 +-
 .../Bound-Treasure-Maps-to-World-Border.patch |  0
 .../Cache-user-authenticator-threads.patch    | 12 +++++------
 ...ServerListPingEvent-for-legacy-pings.patch |  4 ++--
 .../server/Cap-Entity-Collisions.patch        | 10 +++++-----
 ...le-Alternative-LootPool-Luck-Formula.patch |  0
 ...figurable-Cartographer-Treasure-Maps.patch |  0
 .../Configurable-Chunk-Inhabited-Time.patch   |  2 +-
 .../Configurable-Grass-Spread-Tick-Rate.patch |  0
 ...urable-Non-Player-Arrow-Despawn-Rate.patch |  0
 .../Configurable-Player-Collision.patch       |  2 +-
 .../server/Configurable-RCON-IP-address.patch |  6 +++---
 .../Configurable-flying-kick-messages.patch   |  0
 ...onfigurable-packet-in-spam-threshold.patch |  0
 ...le-spawn-chances-for-skeleton-horses.patch |  0
 ...urable-sprint-interruption-on-attack.patch |  0
 .../Custom-replacement-for-eaten-items.patch  |  0
 ...le-Explicit-Network-Manager-Flushing.patch |  0
 .../server/Do-not-let-armorstands-drown.patch |  0
 .../Do-not-load-chunks-for-Pathfinding.patch  |  0
 ...-profile-lookups-to-worldgen-threads.patch |  0
 ...llow-entities-to-ride-themselves-572.patch |  0
 ...on-t-call-getItemMeta-on-hasItemMeta.patch |  0
 ...e-profiles-that-have-no-UUID-and-no-.patch |  0
 ...y-scoreboard-teams-to-scoreboard.dat.patch |  0
 .../server/EnderDragon-Events.patch           |  0
 .../server/Enderman.teleportRandomly.patch    |  0
 .../server/EndermanAttackPlayerEvent.patch    |  0
 .../server/EndermanEscapeEvent.patch          |  0
 .../server/Enforce-Sync-Player-Saves.patch    |  0
 ...Entity-AddTo-RemoveFrom-World-Events.patch |  0
 .../server/Entity-fromMobSpawner.patch        |  0
 .../server/EntityPathfindEvent.patch          |  0
 ...ityRegainHealthEvent-isFastRegen-API.patch |  0
 .../server/Expand-Explosions-API.patch        |  2 +-
 ...ld.spawnParticle-API-and-add-Builder.patch |  0
 ...PI-for-Reason-Source-Triggering-play.patch |  4 ++--
 ...nt-protocol-version-and-virtual-host.patch |  0
 .../Extend-Player-Interact-cancellation.patch |  0
 ...r-redstone-torch-rapid-clock-removal.patch |  0
 .../server/Fill-Profile-Property-Events.patch |  0
 ...a-from-ArmorStand-and-SpawnEgg-items.patch |  2 +-
 .../server/Firework-API-s.patch               |  2 +-
 ...g-BlockPlaceEvent-triggering-physics.patch |  0
 .../server/Fix-CraftEntity-hashCode.patch     |  0
 .../Fix-MC-117075-TE-Unload-Lag-Spike.patch   |  0
 .../server/Fix-Old-Sign-Conversion.patch      |  0
 ...-allowed-colored-signs-to-be-created.patch |  0
 .../server/Fix-this-stupid-bullshit.patch     |  4 ++--
 .../Flag-to-disable-the-channel-limit.patch   |  0
 ...n-prefixes-using-Log4J-configuration.patch |  2 +-
 ...plement-EntityKnockbackByEntityEvent.patch | 14 ++++++-------
 ...lement-EntityTeleportEndGatewayEvent.patch |  0
 .../Implement-Expanded-ArmorStand-API.patch   |  0
 .../Implement-World.getEntity-UUID-API.patch  |  0
 ...mplement-ensureServerConversions-API.patch |  0
 ...nt-extended-PaperServerListPingEvent.patch |  2 +-
 .../server/Implement-getI18NDisplayName.patch |  0
 .../Improve-BlockPosition-inlining.patch      |  0
 .../server/Improve-EntityShootBowEvent.patch  |  0
 ...e-Log4J-Configuration-Plugin-Loggers.patch |  0
 ...item-frames-performance-and-bug-fixe.patch |  0
 .../Improve-the-Saddle-API-for-Horses.patch   |  0
 .../Improved-Async-Task-Scheduler.patch       |  0
 .../InventoryCloseEvent-Reason-API.patch      |  0
 .../server/Item-canEntityPickup.patch         |  0
 .../ItemStack-getMaxItemUseDuration.patch     |  0
 ...ivingEntity-Hand-Raised-Item-Use-API.patch |  0
 .../server/LivingEntity-setKiller.patch       |  0
 ...-API-Replenishable-Lootables-Feature.patch |  0
 ...ke-legacy-ping-handler-more-reliable.patch |  0
 ...e-shield-blocking-delay-configurable.patch |  0
 ...awns-should-honor-nametags-and-leash.patch |  0
 ...ckPhysicsEvent-if-a-plugin-has-a-lis.patch |  0
 ...-sounds-to-same-world-if-limiting-ra.patch |  0
 ...ptimise-BlockState-s-hashCode-equals.patch |  0
 .../server/Optimize-DataBits.patch            |  0
 .../server/Optimize-ItemStack.isEmpty.patch   |  2 +-
 ...imize-World.isLoaded-BlockPosition-Z.patch |  0
 ...ldBounds-and-getBlockState-for-inlin.patch |  2 +-
 ...t-armor-stands-from-doing-entity-loo.patch |  0
 ...nilla-per-world-scoreboard-coloring-.patch |  0
 .../Optional-TNT-doesn-t-move-in-water.patch  |  8 ++++----
 .../server/Player.setPlayerProfile-API.patch  |  4 ++--
 ...PlayerAdvancementCriterionGrantEvent.patch |  0
 .../server/PlayerAttemptPickupItemEvent.patch |  0
 .../server/PlayerElytraBoostEvent.patch       |  0
 .../server/PlayerLaunchProjectileEvent.patch  | 10 +---------
 .../PlayerNaturallySpawnCreaturesEvent.patch  |  8 ++++----
 .../server/PlayerPickupExperienceEvent.patch  |  0
 ...PlayerPickupItemEvent-setFlyAtPlayer.patch |  0
 .../server/PlayerReadyArrowEvent.patch        |  0
 .../PlayerTeleportEndGatewayEvent.patch       |  0
 .../server/PreCreatureSpawnEvent.patch        | 10 +++++-----
 ...sted-Ice-from-loading-holding-chunks.patch |  0
 ...vent-Pathfinding-out-of-World-Border.patch |  0
 ...rom-being-processed-when-the-player-.patch |  2 +-
 ...ils-when-failing-to-save-player-data.patch |  0
 .../server/Profile-Lookup-Events.patch        |  0
 .../server/ProfileWhitelistVerifyEvent.patch  |  0
 .../Properly-fix-item-duplication-bug.patch   |  0
 ...le-async-calls-to-restart-the-server.patch |  8 ++++----
 ...rovide-E-TE-Chunk-count-stat-methods.patch |  0
 .../server/RangedEntity-API.patch             |  0
 ...nventory-when-cancelling-PlayerInter.patch | 10 +++++-----
 ...e-CraftScheduler-Async-Task-Debugger.patch |  0
 ...imer-when-spawner-event-is-cancelled.patch |  0
 ...egionFileCache-and-make-configurable.patch |  0
 ...dEffects-only-to-players-who-can-see.patch |  0
 .../Shoulder-Entities-Release-API.patch       |  0
 .../server/SkeletonHorse-Additions.patch      |  0
 .../server/String-based-Action-Bar-API.patch  |  0
 ...tem-property-for-disabling-watchdoge.patch |  0
 .../Tameable-getOwnerUniqueId-API.patch       |  0
 ...r-crits-helps-mitigate-hacked-client.patch |  0
 ...ed-flag-on-cancel-of-Explosion-Event.patch |  0
 ...r-to-keep-logging-IO-off-main-thread.patch |  0
 ...oleAppender-for-console-improvements.patch | 14 ++++++-------
 .../Use-a-Shared-Random-for-Entities.patch    |  0
 .../Vanished-players-don-t-have-rights.patch  | 17 +++-------------
 .../server/Vex-get-setSummoner-API.patch      |  0
 .../server/WitchConsumePotionEvent.patch      |  0
 .../server/WitchReadyPotionEvent.patch        |  0
 .../server/WitchThrowPotionEvent.patch        |  0
 ...-more-information-to-Entity.toString.patch |  0
 .../server/getPlayerUniqueId-API.patch        |  0
 ...th-absorb-values-and-repair-bad-data.patch |  0
 ...dle-ServerboundKeepAlivePacket-async.patch |  0
 ...urable-option-to-disable-creeper-lin.patch |  0
 ...-possibility-for-getServer-singleton.patch |  2 +-
 ...rt-serverside-behavior-of-keepalives.patch |  4 ++--
 ...e-implementations-for-captured-block.patch |  0
 165 files changed, 103 insertions(+), 120 deletions(-)
 rename patches/{unapplied => }/server/API-to-get-a-BlockState-without-a-snapshot.patch (100%)
 rename patches/{unapplied => }/server/Ability-to-apply-mending-to-XP-API.patch (100%)
 rename patches/{unapplied => }/server/Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch (98%)
 rename patches/{unapplied => }/server/Add-API-methods-to-control-if-armour-stands-can-move.patch (100%)
 rename patches/{unapplied => }/server/Add-ArmorStand-Item-Meta.patch (100%)
 rename patches/{unapplied => }/server/Add-CraftMagicNumbers.isSupportedApiVersion.patch (100%)
 rename patches/{unapplied => }/server/Add-EntityZapEvent.patch (74%)
 rename patches/{unapplied => }/server/Add-PlayerArmorChangeEvent.patch (96%)
 rename patches/{unapplied => }/server/Add-PlayerJumpEvent.patch (100%)
 rename patches/{unapplied => }/server/Add-PlayerUseUnknownEntityEvent.patch (100%)
 rename patches/{unapplied => }/server/Add-ProjectileCollideEvent.patch (100%)
 rename patches/{unapplied => }/server/Add-UnknownCommandEvent.patch (100%)
 rename patches/{unapplied => }/server/Add-World-Util-Methods.patch (100%)
 rename patches/{unapplied => }/server/Add-ability-to-configure-frosted_ice-properties.patch (100%)
 rename patches/{unapplied => }/server/Add-config-to-disable-ender-dragon-legacy-check.patch (100%)
 rename patches/{unapplied => }/server/Add-configuration-option-to-prevent-player-names-fro.patch (100%)
 rename patches/{unapplied => }/server/Add-handshake-event-to-allow-plugins-to-handle-clien.patch (100%)
 rename patches/{unapplied => }/server/Add-openSign-method-to-HumanEntity.patch (93%)
 rename patches/{unapplied => }/server/Add-option-to-make-parrots-stay-on-shoulders-despite.patch (100%)
 rename patches/{unapplied => }/server/Add-server-name-parameter.patch (100%)
 rename patches/{unapplied => }/server/Add-setPlayerProfile-API-for-Skulls.patch (100%)
 rename patches/{unapplied => }/server/Add-setting-for-proxy-online-mode-status.patch (100%)
 rename patches/{unapplied => }/server/Add-source-to-PlayerExpChangeEvent.patch (100%)
 rename patches/{unapplied => }/server/Allow-Reloading-of-Command-Aliases.patch (100%)
 rename patches/{unapplied => }/server/Allow-disabling-armour-stand-ticking.patch (100%)
 rename patches/{unapplied => }/server/Allow-spawning-Item-entities-with-World.spawnEntity.patch (100%)
 rename patches/{unapplied => }/server/Allow-specifying-a-custom-authentication-servers-dow.patch (97%)
 rename patches/{unapplied => }/server/Async-GameProfileCache-saving.patch (100%)
 rename patches/{unapplied => }/server/AsyncTabCompleteEvent.patch (99%)
 rename patches/{unapplied => }/server/Avoid-blocking-on-Network-Manager-creation.patch (100%)
 rename patches/{unapplied => }/server/Basic-PlayerProfile-API.patch (100%)
 rename patches/{unapplied => }/server/Block-Enderpearl-Travel-Exploit.patch (100%)
 rename patches/{unapplied => }/server/Block-player-logins-during-server-shutdown.patch (97%)
 rename patches/{unapplied => }/server/Bound-Treasure-Maps-to-World-Border.patch (100%)
 rename patches/{unapplied => }/server/Cache-user-authenticator-threads.patch (93%)
 rename patches/{unapplied => }/server/Call-PaperServerListPingEvent-for-legacy-pings.patch (96%)
 rename patches/{unapplied => }/server/Cap-Entity-Collisions.patch (91%)
 rename patches/{unapplied => }/server/Configurable-Alternative-LootPool-Luck-Formula.patch (100%)
 rename patches/{unapplied => }/server/Configurable-Cartographer-Treasure-Maps.patch (100%)
 rename patches/{unapplied => }/server/Configurable-Chunk-Inhabited-Time.patch (94%)
 rename patches/{unapplied => }/server/Configurable-Grass-Spread-Tick-Rate.patch (100%)
 rename patches/{unapplied => }/server/Configurable-Non-Player-Arrow-Despawn-Rate.patch (100%)
 rename patches/{unapplied => }/server/Configurable-Player-Collision.patch (97%)
 rename patches/{unapplied => }/server/Configurable-RCON-IP-address.patch (85%)
 rename patches/{unapplied => }/server/Configurable-flying-kick-messages.patch (100%)
 rename patches/{unapplied => }/server/Configurable-packet-in-spam-threshold.patch (100%)
 rename patches/{unapplied => }/server/Configurable-spawn-chances-for-skeleton-horses.patch (100%)
 rename patches/{unapplied => }/server/Configurable-sprint-interruption-on-attack.patch (100%)
 rename patches/{unapplied => }/server/Custom-replacement-for-eaten-items.patch (100%)
 rename patches/{unapplied => }/server/Disable-Explicit-Network-Manager-Flushing.patch (100%)
 rename patches/{unapplied => }/server/Do-not-let-armorstands-drown.patch (100%)
 rename patches/{unapplied => }/server/Do-not-load-chunks-for-Pathfinding.patch (100%)
 rename patches/{unapplied => }/server/Do-not-submit-profile-lookups-to-worldgen-threads.patch (100%)
 rename patches/{unapplied => }/server/Don-t-allow-entities-to-ride-themselves-572.patch (100%)
 rename patches/{unapplied => }/server/Don-t-call-getItemMeta-on-hasItemMeta.patch (100%)
 rename patches/{unapplied => }/server/Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch (100%)
 rename patches/{unapplied => }/server/Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch (100%)
 rename patches/{unapplied => }/server/EnderDragon-Events.patch (100%)
 rename patches/{unapplied => }/server/Enderman.teleportRandomly.patch (100%)
 rename patches/{unapplied => }/server/EndermanAttackPlayerEvent.patch (100%)
 rename patches/{unapplied => }/server/EndermanEscapeEvent.patch (100%)
 rename patches/{unapplied => }/server/Enforce-Sync-Player-Saves.patch (100%)
 rename patches/{unapplied => }/server/Entity-AddTo-RemoveFrom-World-Events.patch (100%)
 rename patches/{unapplied => }/server/Entity-fromMobSpawner.patch (100%)
 rename patches/{unapplied => }/server/EntityPathfindEvent.patch (100%)
 rename patches/{unapplied => }/server/EntityRegainHealthEvent-isFastRegen-API.patch (100%)
 rename patches/{unapplied => }/server/Expand-Explosions-API.patch (91%)
 rename patches/{unapplied => }/server/Expand-World.spawnParticle-API-and-add-Builder.patch (100%)
 rename patches/{unapplied => }/server/ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch (99%)
 rename patches/{unapplied => }/server/Expose-client-protocol-version-and-virtual-host.patch (100%)
 rename patches/{unapplied => }/server/Extend-Player-Interact-cancellation.patch (100%)
 rename patches/{unapplied => }/server/Faster-redstone-torch-rapid-clock-removal.patch (100%)
 rename patches/{unapplied => }/server/Fill-Profile-Property-Events.patch (100%)
 rename patches/{unapplied => }/server/Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch (92%)
 rename patches/{unapplied => }/server/Firework-API-s.patch (98%)
 rename patches/{unapplied => }/server/Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch (100%)
 rename patches/{unapplied => }/server/Fix-CraftEntity-hashCode.patch (100%)
 rename patches/{unapplied => }/server/Fix-MC-117075-TE-Unload-Lag-Spike.patch (100%)
 rename patches/{unapplied => }/server/Fix-Old-Sign-Conversion.patch (100%)
 rename patches/{unapplied => }/server/Fix-exploit-that-allowed-colored-signs-to-be-created.patch (100%)
 rename patches/{unapplied => }/server/Fix-this-stupid-bullshit.patch (95%)
 rename patches/{unapplied => }/server/Flag-to-disable-the-channel-limit.patch (100%)
 rename patches/{unapplied => }/server/Handle-plugin-prefixes-using-Log4J-configuration.patch (99%)
 rename patches/{unapplied => }/server/Implement-EntityKnockbackByEntityEvent.patch (93%)
 rename patches/{unapplied => }/server/Implement-EntityTeleportEndGatewayEvent.patch (100%)
 rename patches/{unapplied => }/server/Implement-Expanded-ArmorStand-API.patch (100%)
 rename patches/{unapplied => }/server/Implement-World.getEntity-UUID-API.patch (100%)
 rename patches/{unapplied => }/server/Implement-ensureServerConversions-API.patch (100%)
 rename patches/{unapplied => }/server/Implement-extended-PaperServerListPingEvent.patch (99%)
 rename patches/{unapplied => }/server/Implement-getI18NDisplayName.patch (100%)
 rename patches/{unapplied => }/server/Improve-BlockPosition-inlining.patch (100%)
 rename patches/{unapplied => }/server/Improve-EntityShootBowEvent.patch (100%)
 rename patches/{unapplied => }/server/Improve-Log4J-Configuration-Plugin-Loggers.patch (100%)
 rename patches/{unapplied => }/server/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch (100%)
 rename patches/{unapplied => }/server/Improve-the-Saddle-API-for-Horses.patch (100%)
 rename patches/{unapplied => }/server/Improved-Async-Task-Scheduler.patch (100%)
 rename patches/{unapplied => }/server/InventoryCloseEvent-Reason-API.patch (100%)
 rename patches/{unapplied => }/server/Item-canEntityPickup.patch (100%)
 rename patches/{unapplied => }/server/ItemStack-getMaxItemUseDuration.patch (100%)
 rename patches/{unapplied => }/server/LivingEntity-Hand-Raised-Item-Use-API.patch (100%)
 rename patches/{unapplied => }/server/LivingEntity-setKiller.patch (100%)
 rename patches/{unapplied => }/server/LootTable-API-Replenishable-Lootables-Feature.patch (100%)
 rename patches/{unapplied => }/server/Make-legacy-ping-handler-more-reliable.patch (100%)
 rename patches/{unapplied => }/server/Make-shield-blocking-delay-configurable.patch (100%)
 rename patches/{unapplied => }/server/Ocelot-despawns-should-honor-nametags-and-leash.patch (100%)
 rename patches/{unapplied => }/server/Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch (100%)
 rename patches/{unapplied => }/server/Only-send-global-sounds-to-same-world-if-limiting-ra.patch (100%)
 rename patches/{unapplied => }/server/Optimise-BlockState-s-hashCode-equals.patch (100%)
 rename patches/{unapplied => }/server/Optimize-DataBits.patch (100%)
 rename patches/{unapplied => }/server/Optimize-ItemStack.isEmpty.patch (93%)
 rename patches/{unapplied => }/server/Optimize-World.isLoaded-BlockPosition-Z.patch (100%)
 rename patches/{unapplied => }/server/Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch (99%)
 rename patches/{unapplied => }/server/Option-to-prevent-armor-stands-from-doing-entity-loo.patch (100%)
 rename patches/{unapplied => }/server/Option-to-use-vanilla-per-world-scoreboard-coloring-.patch (100%)
 rename patches/{unapplied => }/server/Optional-TNT-doesn-t-move-in-water.patch (94%)
 rename patches/{unapplied => }/server/Player.setPlayerProfile-API.patch (98%)
 rename patches/{unapplied => }/server/PlayerAdvancementCriterionGrantEvent.patch (100%)
 rename patches/{unapplied => }/server/PlayerAttemptPickupItemEvent.patch (100%)
 rename patches/{unapplied => }/server/PlayerElytraBoostEvent.patch (100%)
 rename patches/{unapplied => }/server/PlayerLaunchProjectileEvent.patch (97%)
 rename patches/{unapplied => }/server/PlayerNaturallySpawnCreaturesEvent.patch (96%)
 rename patches/{unapplied => }/server/PlayerPickupExperienceEvent.patch (100%)
 rename patches/{unapplied => }/server/PlayerPickupItemEvent-setFlyAtPlayer.patch (100%)
 rename patches/{unapplied => }/server/PlayerReadyArrowEvent.patch (100%)
 rename patches/{unapplied => }/server/PlayerTeleportEndGatewayEvent.patch (100%)
 rename patches/{unapplied => }/server/PreCreatureSpawnEvent.patch (95%)
 rename patches/{unapplied => }/server/Prevent-Frosted-Ice-from-loading-holding-chunks.patch (100%)
 rename patches/{unapplied => }/server/Prevent-Pathfinding-out-of-World-Border.patch (100%)
 rename patches/{unapplied => }/server/Prevent-logins-from-being-processed-when-the-player-.patch (97%)
 rename patches/{unapplied => }/server/Print-Error-details-when-failing-to-save-player-data.patch (100%)
 rename patches/{unapplied => }/server/Profile-Lookup-Events.patch (100%)
 rename patches/{unapplied => }/server/ProfileWhitelistVerifyEvent.patch (100%)
 rename patches/{unapplied => }/server/Properly-fix-item-duplication-bug.patch (100%)
 rename patches/{unapplied => }/server/Properly-handle-async-calls-to-restart-the-server.patch (98%)
 rename patches/{unapplied => }/server/Provide-E-TE-Chunk-count-stat-methods.patch (100%)
 rename patches/{unapplied => }/server/RangedEntity-API.patch (100%)
 rename patches/{unapplied => }/server/Refresh-player-inventory-when-cancelling-PlayerInter.patch (87%)
 rename patches/{unapplied => }/server/Remove-CraftScheduler-Async-Task-Debugger.patch (100%)
 rename patches/{unapplied => }/server/Reset-spawner-timer-when-spawner-event-is-cancelled.patch (100%)
 rename patches/{unapplied => }/server/Sanitise-RegionFileCache-and-make-configurable.patch (100%)
 rename patches/{unapplied => }/server/Send-attack-SoundEffects-only-to-players-who-can-see.patch (100%)
 rename patches/{unapplied => }/server/Shoulder-Entities-Release-API.patch (100%)
 rename patches/{unapplied => }/server/SkeletonHorse-Additions.patch (100%)
 rename patches/{unapplied => }/server/String-based-Action-Bar-API.patch (100%)
 rename patches/{unapplied => }/server/System-property-for-disabling-watchdoge.patch (100%)
 rename patches/{unapplied => }/server/Tameable-getOwnerUniqueId-API.patch (100%)
 rename patches/{unapplied => }/server/Toggleable-player-crits-helps-mitigate-hacked-client.patch (100%)
 rename patches/{unapplied => }/server/Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch (100%)
 rename patches/{unapplied => }/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch (100%)
 rename patches/{unapplied => }/server/Use-TerminalConsoleAppender-for-console-improvements.patch (98%)
 rename patches/{unapplied => }/server/Use-a-Shared-Random-for-Entities.patch (100%)
 rename patches/{unapplied => }/server/Vanished-players-don-t-have-rights.patch (88%)
 rename patches/{unapplied => }/server/Vex-get-setSummoner-API.patch (100%)
 rename patches/{unapplied => }/server/WitchConsumePotionEvent.patch (100%)
 rename patches/{unapplied => }/server/WitchReadyPotionEvent.patch (100%)
 rename patches/{unapplied => }/server/WitchThrowPotionEvent.patch (100%)
 rename patches/{unapplied => }/server/add-more-information-to-Entity.toString.patch (100%)
 rename patches/{unapplied => }/server/getPlayerUniqueId-API.patch (100%)
 rename patches/{unapplied => }/server/handle-NaN-health-absorb-values-and-repair-bad-data.patch (100%)
 rename patches/{unapplied => }/server/handle-ServerboundKeepAlivePacket-async.patch (100%)
 rename patches/{unapplied => }/server/provide-a-configurable-option-to-disable-creeper-lin.patch (100%)
 rename patches/{unapplied => }/server/remove-null-possibility-for-getServer-singleton.patch (82%)
 rename patches/{unapplied => }/server/revert-serverside-behavior-of-keepalives.patch (96%)
 rename patches/{unapplied => }/server/use-CB-BlockState-implementations-for-captured-block.patch (100%)

diff --git a/patches/api/Add-extended-PaperServerListPingEvent.patch b/patches/api/Add-extended-PaperServerListPingEvent.patch
index c94896b1b3..dbbf58919c 100644
--- a/patches/api/Add-extended-PaperServerListPingEvent.patch
+++ b/patches/api/Add-extended-PaperServerListPingEvent.patch
@@ -56,9 +56,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +    private Object[] players;
 +
 +    @Deprecated
-+    public PaperServerListPingEvent(@NotNull StatusClient client, @NotNull String motd, boolean shouldSendChatPreviews, int numPlayers, int maxPlayers,
++    public PaperServerListPingEvent(@NotNull StatusClient client, @NotNull String motd, int numPlayers, int maxPlayers,
 +            @NotNull String version, int protocolVersion, @Nullable CachedServerIcon favicon) {
-+        super(client.getAddress().getAddress(), motd, shouldSendChatPreviews, numPlayers, maxPlayers);
++        super("", client.getAddress().getAddress(), motd, numPlayers, maxPlayers);
 +        this.client = client;
 +        this.numPlayers = numPlayers;
 +        this.version = version;
@@ -66,9 +66,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +        setServerIcon(favicon);
 +    }
 +
-+    public PaperServerListPingEvent(@NotNull StatusClient client, @NotNull net.kyori.adventure.text.Component motd, boolean shouldSendChatPreviews, int numPlayers, int maxPlayers,
++    public PaperServerListPingEvent(@NotNull StatusClient client, @NotNull net.kyori.adventure.text.Component motd, int numPlayers, int maxPlayers,
 +                                    @NotNull String version, int protocolVersion, @Nullable CachedServerIcon favicon) {
-+        super(client.getAddress().getAddress(), motd, shouldSendChatPreviews, numPlayers, maxPlayers);
++        super("", client.getAddress().getAddress(), motd, numPlayers, maxPlayers);
 +        this.client = client;
 +        this.numPlayers = numPlayers;
 +        this.version = version;
diff --git a/patches/unapplied/server/API-to-get-a-BlockState-without-a-snapshot.patch b/patches/server/API-to-get-a-BlockState-without-a-snapshot.patch
similarity index 100%
rename from patches/unapplied/server/API-to-get-a-BlockState-without-a-snapshot.patch
rename to patches/server/API-to-get-a-BlockState-without-a-snapshot.patch
diff --git a/patches/unapplied/server/Ability-to-apply-mending-to-XP-API.patch b/patches/server/Ability-to-apply-mending-to-XP-API.patch
similarity index 100%
rename from patches/unapplied/server/Ability-to-apply-mending-to-XP-API.patch
rename to patches/server/Ability-to-apply-mending-to-XP-API.patch
diff --git a/patches/unapplied/server/Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch b/patches/server/Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch
similarity index 98%
rename from patches/unapplied/server/Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch
rename to patches/server/Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch
index 4abc8b55e6..3e1a3a154a 100644
--- a/patches/unapplied/server/Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch
+++ b/patches/server/Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch
@@ -9,7 +9,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListene
 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 TickablePacketListener, Se
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
                          java.util.UUID uniqueId = ServerLoginPacketListenerImpl.this.gameProfile.getId();
                          final org.bukkit.craftbukkit.CraftServer server = ServerLoginPacketListenerImpl.this.server.server;
  
diff --git a/patches/unapplied/server/Add-API-methods-to-control-if-armour-stands-can-move.patch b/patches/server/Add-API-methods-to-control-if-armour-stands-can-move.patch
similarity index 100%
rename from patches/unapplied/server/Add-API-methods-to-control-if-armour-stands-can-move.patch
rename to patches/server/Add-API-methods-to-control-if-armour-stands-can-move.patch
diff --git a/patches/unapplied/server/Add-ArmorStand-Item-Meta.patch b/patches/server/Add-ArmorStand-Item-Meta.patch
similarity index 100%
rename from patches/unapplied/server/Add-ArmorStand-Item-Meta.patch
rename to patches/server/Add-ArmorStand-Item-Meta.patch
diff --git a/patches/unapplied/server/Add-CraftMagicNumbers.isSupportedApiVersion.patch b/patches/server/Add-CraftMagicNumbers.isSupportedApiVersion.patch
similarity index 100%
rename from patches/unapplied/server/Add-CraftMagicNumbers.isSupportedApiVersion.patch
rename to patches/server/Add-CraftMagicNumbers.isSupportedApiVersion.patch
diff --git a/patches/unapplied/server/Add-EntityZapEvent.patch b/patches/server/Add-EntityZapEvent.patch
similarity index 74%
rename from patches/unapplied/server/Add-EntityZapEvent.patch
rename to patches/server/Add-EntityZapEvent.patch
index f79637be38..33ebee0b67 100644
--- a/patches/unapplied/server/Add-EntityZapEvent.patch
+++ b/patches/server/Add-EntityZapEvent.patch
@@ -16,17 +16,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +            // Paper - move log down, event can cancel
              Witch entitywitch = (Witch) EntityType.WITCH.create(world);
  
-+            // Paper start
-+            if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityZapEvent(this, lightning, entitywitch).isCancelled()) {
-+                return;
-+            }
-+            // Paper end
+             if (entitywitch != null) {
++                // Paper start
++                if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityZapEvent(this, lightning, entitywitch).isCancelled()) {
++                    return;
++                }
++                if (org.spigotmc.SpigotConfig.logVillagerDeaths) Villager.LOGGER.info("Villager {} was struck by lightning {}.", this, lightning); // Move down
++                // Paper end
 +
-+            if (org.spigotmc.SpigotConfig.logVillagerDeaths) Villager.LOGGER.info("Villager {} was struck by lightning {}.", this, lightning); // Paper - move log down, event can cancel
-+
-             entitywitch.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
-             entitywitch.finalizeSpawn(world, world.getCurrentDifficultyAt(entitywitch.blockPosition()), MobSpawnType.CONVERSION, (SpawnGroupData) null, (CompoundTag) null);
-             entitywitch.setNoAi(this.isNoAi());
+                 entitywitch.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
+                 entitywitch.finalizeSpawn(world, world.getCurrentDifficultyAt(entitywitch.blockPosition()), MobSpawnType.CONVERSION, (SpawnGroupData) null, (CompoundTag) null);
+                 entitywitch.setNoAi(this.isNoAi());
 diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
diff --git a/patches/unapplied/server/Add-PlayerArmorChangeEvent.patch b/patches/server/Add-PlayerArmorChangeEvent.patch
similarity index 96%
rename from patches/unapplied/server/Add-PlayerArmorChangeEvent.patch
rename to patches/server/Add-PlayerArmorChangeEvent.patch
index c8ce4adc8d..fe2f6328c9 100644
--- a/patches/unapplied/server/Add-PlayerArmorChangeEvent.patch
+++ b/patches/server/Add-PlayerArmorChangeEvent.patch
@@ -18,7 +18,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 @@ -0,0 +0,0 @@ public abstract class LivingEntity extends Entity {
              ItemStack itemstack1 = this.getItemBySlot(enumitemslot);
  
-             if (!ItemStack.matches(itemstack1, itemstack)) {
+             if (this.equipmentHasChanged(itemstack, itemstack1)) {
 +                // Paper start - PlayerArmorChangeEvent
 +                if (this instanceof ServerPlayer && enumitemslot.getType() == EquipmentSlot.Type.ARMOR) {
 +                    final org.bukkit.inventory.ItemStack oldItem = CraftItemStack.asBukkitCopy(itemstack);
diff --git a/patches/unapplied/server/Add-PlayerJumpEvent.patch b/patches/server/Add-PlayerJumpEvent.patch
similarity index 100%
rename from patches/unapplied/server/Add-PlayerJumpEvent.patch
rename to patches/server/Add-PlayerJumpEvent.patch
diff --git a/patches/unapplied/server/Add-PlayerUseUnknownEntityEvent.patch b/patches/server/Add-PlayerUseUnknownEntityEvent.patch
similarity index 100%
rename from patches/unapplied/server/Add-PlayerUseUnknownEntityEvent.patch
rename to patches/server/Add-PlayerUseUnknownEntityEvent.patch
diff --git a/patches/unapplied/server/Add-ProjectileCollideEvent.patch b/patches/server/Add-ProjectileCollideEvent.patch
similarity index 100%
rename from patches/unapplied/server/Add-ProjectileCollideEvent.patch
rename to patches/server/Add-ProjectileCollideEvent.patch
diff --git a/patches/unapplied/server/Add-UnknownCommandEvent.patch b/patches/server/Add-UnknownCommandEvent.patch
similarity index 100%
rename from patches/unapplied/server/Add-UnknownCommandEvent.patch
rename to patches/server/Add-UnknownCommandEvent.patch
diff --git a/patches/unapplied/server/Add-World-Util-Methods.patch b/patches/server/Add-World-Util-Methods.patch
similarity index 100%
rename from patches/unapplied/server/Add-World-Util-Methods.patch
rename to patches/server/Add-World-Util-Methods.patch
diff --git a/patches/unapplied/server/Add-ability-to-configure-frosted_ice-properties.patch b/patches/server/Add-ability-to-configure-frosted_ice-properties.patch
similarity index 100%
rename from patches/unapplied/server/Add-ability-to-configure-frosted_ice-properties.patch
rename to patches/server/Add-ability-to-configure-frosted_ice-properties.patch
diff --git a/patches/unapplied/server/Add-config-to-disable-ender-dragon-legacy-check.patch b/patches/server/Add-config-to-disable-ender-dragon-legacy-check.patch
similarity index 100%
rename from patches/unapplied/server/Add-config-to-disable-ender-dragon-legacy-check.patch
rename to patches/server/Add-config-to-disable-ender-dragon-legacy-check.patch
diff --git a/patches/unapplied/server/Add-configuration-option-to-prevent-player-names-fro.patch b/patches/server/Add-configuration-option-to-prevent-player-names-fro.patch
similarity index 100%
rename from patches/unapplied/server/Add-configuration-option-to-prevent-player-names-fro.patch
rename to patches/server/Add-configuration-option-to-prevent-player-names-fro.patch
diff --git a/patches/unapplied/server/Add-handshake-event-to-allow-plugins-to-handle-clien.patch b/patches/server/Add-handshake-event-to-allow-plugins-to-handle-clien.patch
similarity index 100%
rename from patches/unapplied/server/Add-handshake-event-to-allow-plugins-to-handle-clien.patch
rename to patches/server/Add-handshake-event-to-allow-plugins-to-handle-clien.patch
diff --git a/patches/unapplied/server/Add-openSign-method-to-HumanEntity.patch b/patches/server/Add-openSign-method-to-HumanEntity.patch
similarity index 93%
rename from patches/unapplied/server/Add-openSign-method-to-HumanEntity.patch
rename to patches/server/Add-openSign-method-to-HumanEntity.patch
index 843adeab95..8c5daa7b52 100644
--- a/patches/unapplied/server/Add-openSign-method-to-HumanEntity.patch
+++ b/patches/server/Add-openSign-method-to-HumanEntity.patch
@@ -8,7 +8,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java b/src/mai
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
 +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
-@@ -0,0 +0,0 @@ public class CraftSign extends CraftBlockEntityState<SignBlockEntity> implements
+@@ -0,0 +0,0 @@ public class CraftSign<T extends SignBlockEntity> extends CraftBlockEntityState<
          }
      }
  
@@ -19,7 +19,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +        // Preconditions.checkArgument(sign.isPlaced(), "Sign must be placed"); // Paper - don't require placed
          Preconditions.checkArgument(sign.getWorld() == player.getWorld(), "Sign must be in same world as Player");
  
-         SignBlockEntity handle = ((CraftSign) sign).getTileEntity();
+         SignBlockEntity handle = ((CraftSign<?>) sign).getTileEntity();
          handle.isEditable = true;
  
 -        ((CraftPlayer) player).getHandle().openTextEdit(handle);
diff --git a/patches/unapplied/server/Add-option-to-make-parrots-stay-on-shoulders-despite.patch b/patches/server/Add-option-to-make-parrots-stay-on-shoulders-despite.patch
similarity index 100%
rename from patches/unapplied/server/Add-option-to-make-parrots-stay-on-shoulders-despite.patch
rename to patches/server/Add-option-to-make-parrots-stay-on-shoulders-despite.patch
diff --git a/patches/unapplied/server/Add-server-name-parameter.patch b/patches/server/Add-server-name-parameter.patch
similarity index 100%
rename from patches/unapplied/server/Add-server-name-parameter.patch
rename to patches/server/Add-server-name-parameter.patch
diff --git a/patches/unapplied/server/Add-setPlayerProfile-API-for-Skulls.patch b/patches/server/Add-setPlayerProfile-API-for-Skulls.patch
similarity index 100%
rename from patches/unapplied/server/Add-setPlayerProfile-API-for-Skulls.patch
rename to patches/server/Add-setPlayerProfile-API-for-Skulls.patch
diff --git a/patches/unapplied/server/Add-setting-for-proxy-online-mode-status.patch b/patches/server/Add-setting-for-proxy-online-mode-status.patch
similarity index 100%
rename from patches/unapplied/server/Add-setting-for-proxy-online-mode-status.patch
rename to patches/server/Add-setting-for-proxy-online-mode-status.patch
diff --git a/patches/unapplied/server/Add-source-to-PlayerExpChangeEvent.patch b/patches/server/Add-source-to-PlayerExpChangeEvent.patch
similarity index 100%
rename from patches/unapplied/server/Add-source-to-PlayerExpChangeEvent.patch
rename to patches/server/Add-source-to-PlayerExpChangeEvent.patch
diff --git a/patches/unapplied/server/Allow-Reloading-of-Command-Aliases.patch b/patches/server/Allow-Reloading-of-Command-Aliases.patch
similarity index 100%
rename from patches/unapplied/server/Allow-Reloading-of-Command-Aliases.patch
rename to patches/server/Allow-Reloading-of-Command-Aliases.patch
diff --git a/patches/unapplied/server/Allow-disabling-armour-stand-ticking.patch b/patches/server/Allow-disabling-armour-stand-ticking.patch
similarity index 100%
rename from patches/unapplied/server/Allow-disabling-armour-stand-ticking.patch
rename to patches/server/Allow-disabling-armour-stand-ticking.patch
diff --git a/patches/unapplied/server/Allow-spawning-Item-entities-with-World.spawnEntity.patch b/patches/server/Allow-spawning-Item-entities-with-World.spawnEntity.patch
similarity index 100%
rename from patches/unapplied/server/Allow-spawning-Item-entities-with-World.spawnEntity.patch
rename to patches/server/Allow-spawning-Item-entities-with-World.spawnEntity.patch
diff --git a/patches/unapplied/server/Allow-specifying-a-custom-authentication-servers-dow.patch b/patches/server/Allow-specifying-a-custom-authentication-servers-dow.patch
similarity index 97%
rename from patches/unapplied/server/Allow-specifying-a-custom-authentication-servers-dow.patch
rename to patches/server/Allow-specifying-a-custom-authentication-servers-dow.patch
index 60b17bfafe..ec75f8033f 100644
--- a/patches/unapplied/server/Allow-specifying-a-custom-authentication-servers-dow.patch
+++ b/patches/server/Allow-specifying-a-custom-authentication-servers-dow.patch
@@ -9,7 +9,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListene
 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 TickablePacketListener, Se
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
                          ServerLoginPacketListenerImpl.this.gameProfile = gameprofile;
                          ServerLoginPacketListenerImpl.this.state = ServerLoginPacketListenerImpl.State.READY_TO_ACCEPT;
                      } else {
diff --git a/patches/unapplied/server/Async-GameProfileCache-saving.patch b/patches/server/Async-GameProfileCache-saving.patch
similarity index 100%
rename from patches/unapplied/server/Async-GameProfileCache-saving.patch
rename to patches/server/Async-GameProfileCache-saving.patch
diff --git a/patches/unapplied/server/AsyncTabCompleteEvent.patch b/patches/server/AsyncTabCompleteEvent.patch
similarity index 99%
rename from patches/unapplied/server/AsyncTabCompleteEvent.patch
rename to patches/server/AsyncTabCompleteEvent.patch
index e5196c460a..d0d3aa7044 100644
--- a/patches/unapplied/server/AsyncTabCompleteEvent.patch
+++ b/patches/server/AsyncTabCompleteEvent.patch
@@ -49,6 +49,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
          if (stringreader.canRead() && stringreader.peek() == '/') {
              stringreader.skip();
          }
+-
+-        ParseResults<CommandSourceStack> parseresults = this.server.getCommands().getDispatcher().parse(stringreader, this.player.createCommandSourceStack());
+-
+-        this.server.getCommands().getDispatcher().getCompletionSuggestions(parseresults).thenAccept((suggestions) -> {
+-            if (suggestions.isEmpty()) return; // CraftBukkit - don't send through empty suggestions - prevents [<args>] from showing for plugins with nothing more to offer
+-            this.connection.send(new ClientboundCommandSuggestionsPacket(packet.getId(), suggestions));
 +            final String command = packet.getCommand();
 +            final com.destroystokyo.paper.event.server.AsyncTabCompleteEvent event = new com.destroystokyo.paper.event.server.AsyncTabCompleteEvent(this.getCraftPlayer(), command, true, null);
 +            event.callEvent();
@@ -56,14 +62,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +            // If the event isn't handled, we can assume that we have no completions, and so we'll ask the server
 +            if (!event.isHandled()) {
 +                if (!event.isCancelled()) {
- 
--        ParseResults<CommandSourceStack> parseresults = this.server.getCommands().getDispatcher().parse(stringreader, this.player.createCommandSourceStack());
++
 +                    this.server.scheduleOnMain(() -> { // This needs to be on main
 +                        ParseResults<CommandSourceStack> parseresults = this.server.getCommands().getDispatcher().parse(stringreader, this.player.createCommandSourceStack());
- 
--        this.server.getCommands().getDispatcher().getCompletionSuggestions(parseresults).thenAccept((suggestions) -> {
--            if (suggestions.isEmpty()) return; // CraftBukkit - don't send through empty suggestions - prevents [<args>] from showing for plugins with nothing more to offer
--            this.connection.send(new ClientboundCommandSuggestionsPacket(packet.getId(), suggestions));
++
 +                        this.server.getCommands().getDispatcher().getCompletionSuggestions(parseresults).thenAccept((suggestions) -> {
 +                            if (suggestions.isEmpty()) return; // CraftBukkit - don't send through empty suggestions - prevents [<args>] from showing for plugins with nothing more to offer
 +                            this.connection.send(new ClientboundCommandSuggestionsPacket(packet.getId(), suggestions));
diff --git a/patches/unapplied/server/Avoid-blocking-on-Network-Manager-creation.patch b/patches/server/Avoid-blocking-on-Network-Manager-creation.patch
similarity index 100%
rename from patches/unapplied/server/Avoid-blocking-on-Network-Manager-creation.patch
rename to patches/server/Avoid-blocking-on-Network-Manager-creation.patch
diff --git a/patches/unapplied/server/Basic-PlayerProfile-API.patch b/patches/server/Basic-PlayerProfile-API.patch
similarity index 100%
rename from patches/unapplied/server/Basic-PlayerProfile-API.patch
rename to patches/server/Basic-PlayerProfile-API.patch
diff --git a/patches/unapplied/server/Block-Enderpearl-Travel-Exploit.patch b/patches/server/Block-Enderpearl-Travel-Exploit.patch
similarity index 100%
rename from patches/unapplied/server/Block-Enderpearl-Travel-Exploit.patch
rename to patches/server/Block-Enderpearl-Travel-Exploit.patch
diff --git a/patches/unapplied/server/Block-player-logins-during-server-shutdown.patch b/patches/server/Block-player-logins-during-server-shutdown.patch
similarity index 97%
rename from patches/unapplied/server/Block-player-logins-during-server-shutdown.patch
rename to patches/server/Block-player-logins-during-server-shutdown.patch
index 6230eed14e..d9e296a01c 100644
--- a/patches/unapplied/server/Block-player-logins-during-server-shutdown.patch
+++ b/patches/server/Block-player-logins-during-server-shutdown.patch
@@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListene
 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 TickablePacketListener, Se
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
  
      @Override
      public void tick() {
diff --git a/patches/unapplied/server/Bound-Treasure-Maps-to-World-Border.patch b/patches/server/Bound-Treasure-Maps-to-World-Border.patch
similarity index 100%
rename from patches/unapplied/server/Bound-Treasure-Maps-to-World-Border.patch
rename to patches/server/Bound-Treasure-Maps-to-World-Border.patch
diff --git a/patches/unapplied/server/Cache-user-authenticator-threads.patch b/patches/server/Cache-user-authenticator-threads.patch
similarity index 93%
rename from patches/unapplied/server/Cache-user-authenticator-threads.patch
rename to patches/server/Cache-user-authenticator-threads.patch
index 0df93ce132..7c5e67a7b6 100644
--- a/patches/unapplied/server/Cache-user-authenticator-threads.patch
+++ b/patches/server/Cache-user-authenticator-threads.patch
@@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListene
 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 TickablePacketListener, Se
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
  
      }
  
@@ -17,8 +17,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      // Spigot start
      public void initUUID()
      {
-@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
-                 this.connection.send(new ClientboundHelloPacket("", this.server.getKeyPair().getPublic().getEncoded(), this.nonce));
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
+                 this.connection.send(new ClientboundHelloPacket("", this.server.getKeyPair().getPublic().getEncoded(), this.challenge));
              } else {
                  // Spigot start
 -                new Thread("User Authenticator #" + ServerLoginPacketListenerImpl.UNIQUE_THREAD_ID.incrementAndGet()) {
@@ -28,7 +28,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
                      @Override
                      public void run() {
                          try {
-@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
                              server.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + ServerLoginPacketListenerImpl.this.gameProfile.getName(), ex);
                          }
                      }
@@ -38,7 +38,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
                  // Spigot end
              }
  
-@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
              throw new IllegalStateException("Protocol error", cryptographyexception);
          }
  
@@ -48,7 +48,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
              public void run() {
                  GameProfile gameprofile = ServerLoginPacketListenerImpl.this.gameProfile;
  
-@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements TickablePacketListener, Se
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
  
                  return ServerLoginPacketListenerImpl.this.server.getPreventProxyConnections() && socketaddress instanceof InetSocketAddress ? ((InetSocketAddress) socketaddress).getAddress() : null;
              }
diff --git a/patches/unapplied/server/Call-PaperServerListPingEvent-for-legacy-pings.patch b/patches/server/Call-PaperServerListPingEvent-for-legacy-pings.patch
similarity index 96%
rename from patches/unapplied/server/Call-PaperServerListPingEvent-for-legacy-pings.patch
rename to patches/server/Call-PaperServerListPingEvent-for-legacy-pings.patch
index a7ff63148d..f16aa394a6 100644
--- a/patches/unapplied/server/Call-PaperServerListPingEvent-for-legacy-pings.patch
+++ b/patches/server/Call-PaperServerListPingEvent-for-legacy-pings.patch
@@ -91,8 +91,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
              MinecraftServer minecraftserver = this.serverConnectionListener.getServer();
              int i = bytebuf.readableBytes();
              String s;
--            org.bukkit.event.server.ServerListPingEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(minecraftserver.server, inetsocketaddress.getAddress(), minecraftserver.getMotd(), minecraftserver.previewsChat(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()); // CraftBukkit
-+            //org.bukkit.event.server.ServerListPingEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(minecraftserver.server, inetsocketaddress.getAddress(), minecraftserver.getMotd(), minecraftserver.previewsChat(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()); // CraftBukkit // Paper
+-            org.bukkit.event.server.ServerListPingEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(minecraftserver.server, inetsocketaddress.getAddress(), minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()); // CraftBukkit
++            //org.bukkit.event.server.ServerListPingEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(minecraftserver.server, inetsocketaddress.getAddress(), minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()); // CraftBukkit // Paper
 +            com.destroystokyo.paper.event.server.PaperServerListPingEvent event; // Paper
  
              switch (i) {
diff --git a/patches/unapplied/server/Cap-Entity-Collisions.patch b/patches/server/Cap-Entity-Collisions.patch
similarity index 91%
rename from patches/unapplied/server/Cap-Entity-Collisions.patch
rename to patches/server/Cap-Entity-Collisions.patch
index 7f3b59fb6d..b829547b99 100644
--- a/patches/unapplied/server/Cap-Entity-Collisions.patch
+++ b/patches/server/Cap-Entity-Collisions.patch
@@ -28,15 +28,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
 +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
 @@ -0,0 +0,0 @@ public abstract class LivingEntity extends Entity {
+                     }
                  }
-             }
  
--            for (j = 0; j < list.size(); ++j) {
+-                for (j = 0; j < list.size(); ++j) {
 +            this.numCollisions = Math.max(0, this.numCollisions - this.level.paperConfig().collisions.maxEntityCollisions); // Paper
 +            for (j = 0; j < list.size() && this.numCollisions < this.level.paperConfig().collisions.maxEntityCollisions; ++j) { // Paper
-                 Entity entity = (Entity) list.get(j);
+                     Entity entity = (Entity) list.get(j);
 +                entity.numCollisions++; // Paper
 +                this.numCollisions++; // Paper
  
-                 this.doPush(entity);
-             }
+                     this.doPush(entity);
+                 }
diff --git a/patches/unapplied/server/Configurable-Alternative-LootPool-Luck-Formula.patch b/patches/server/Configurable-Alternative-LootPool-Luck-Formula.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-Alternative-LootPool-Luck-Formula.patch
rename to patches/server/Configurable-Alternative-LootPool-Luck-Formula.patch
diff --git a/patches/unapplied/server/Configurable-Cartographer-Treasure-Maps.patch b/patches/server/Configurable-Cartographer-Treasure-Maps.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-Cartographer-Treasure-Maps.patch
rename to patches/server/Configurable-Cartographer-Treasure-Maps.patch
diff --git a/patches/unapplied/server/Configurable-Chunk-Inhabited-Time.patch b/patches/server/Configurable-Chunk-Inhabited-Time.patch
similarity index 94%
rename from patches/unapplied/server/Configurable-Chunk-Inhabited-Time.patch
rename to patches/server/Configurable-Chunk-Inhabited-Time.patch
index f4117b3456..9703dc0a44 100644
--- a/patches/unapplied/server/Configurable-Chunk-Inhabited-Time.patch
+++ b/patches/server/Configurable-Chunk-Inhabited-Time.patch
@@ -26,5 +26,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +    // Paper end
 +
      @Override
-     public GameEventDispatcher getEventDispatcher(int ySectionCoord) {
+     public GameEventListenerRegistry getListenerRegistry(int ySectionCoord) {
          Level world = this.level;
diff --git a/patches/unapplied/server/Configurable-Grass-Spread-Tick-Rate.patch b/patches/server/Configurable-Grass-Spread-Tick-Rate.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-Grass-Spread-Tick-Rate.patch
rename to patches/server/Configurable-Grass-Spread-Tick-Rate.patch
diff --git a/patches/unapplied/server/Configurable-Non-Player-Arrow-Despawn-Rate.patch b/patches/server/Configurable-Non-Player-Arrow-Despawn-Rate.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-Non-Player-Arrow-Despawn-Rate.patch
rename to patches/server/Configurable-Non-Player-Arrow-Despawn-Rate.patch
diff --git a/patches/unapplied/server/Configurable-Player-Collision.patch b/patches/server/Configurable-Player-Collision.patch
similarity index 97%
rename from patches/unapplied/server/Configurable-Player-Collision.patch
rename to patches/server/Configurable-Player-Collision.patch
index 805a20fb18..e3587047c9 100644
--- a/patches/unapplied/server/Configurable-Player-Collision.patch
+++ b/patches/server/Configurable-Player-Collision.patch
@@ -60,7 +60,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      private final Map<String,ServerPlayer> playersByName = new java.util.HashMap<>();
 +    public @Nullable String collideRuleTeamName; // Paper - Team name used for collideRule
  
-     public PlayerList(MinecraftServer server, RegistryAccess.Frozen registryManager, PlayerDataStorage saveHandler, int maxPlayers) {
+     public PlayerList(MinecraftServer server, LayeredRegistryAccess<RegistryLayer> registryManager, PlayerDataStorage saveHandler, int maxPlayers) {
          this.cserver = server.server = new CraftServer((DedicatedServer) server, this);
 @@ -0,0 +0,0 @@ public abstract class PlayerList {
  
diff --git a/patches/unapplied/server/Configurable-RCON-IP-address.patch b/patches/server/Configurable-RCON-IP-address.patch
similarity index 85%
rename from patches/unapplied/server/Configurable-RCON-IP-address.patch
rename to patches/server/Configurable-RCON-IP-address.patch
index 041f7bb52e..24018d3016 100644
--- a/patches/unapplied/server/Configurable-RCON-IP-address.patch
+++ b/patches/server/Configurable-RCON-IP-address.patch
@@ -13,8 +13,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
 +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
 @@ -0,0 +0,0 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
-     @Nullable
-     private WorldGenSettings worldGenSettings;
+     private final DedicatedServerProperties.WorldDimensionData worldDimensionData;
+     public final WorldOptions worldOptions;
  
 +    public final String rconIp; // Paper - Add rcon ip
 +
@@ -22,9 +22,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      public DedicatedServerProperties(Properties properties, OptionSet optionset) {
          super(properties, optionset);
 @@ -0,0 +0,0 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
-             return s.toLowerCase(Locale.ROOT);
          }, WorldPresets.NORMAL.location().toString()));
          this.serverResourcePackInfo = DedicatedServerProperties.getServerPackInfo(this.get("resource-pack", ""), this.get("resource-pack-sha1", ""), this.getLegacyString("resource-pack-hash"), this.get("require-resource-pack", false), this.get("resource-pack-prompt", ""));
+         this.initialDataPackConfiguration = DedicatedServerProperties.getDatapackConfig(this.get("initial-enabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getEnabled())), this.get("initial-disabled-packs", String.join(",", WorldDataConfiguration.DEFAULT.dataPacks().getDisabled())));
 +        // Paper start - Configurable rcon ip
 +        final String rconIp = this.getStringRaw("rcon.ip");
 +        this.rconIp = rconIp == null ? this.serverIp : rconIp;
diff --git a/patches/unapplied/server/Configurable-flying-kick-messages.patch b/patches/server/Configurable-flying-kick-messages.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-flying-kick-messages.patch
rename to patches/server/Configurable-flying-kick-messages.patch
diff --git a/patches/unapplied/server/Configurable-packet-in-spam-threshold.patch b/patches/server/Configurable-packet-in-spam-threshold.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-packet-in-spam-threshold.patch
rename to patches/server/Configurable-packet-in-spam-threshold.patch
diff --git a/patches/unapplied/server/Configurable-spawn-chances-for-skeleton-horses.patch b/patches/server/Configurable-spawn-chances-for-skeleton-horses.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-spawn-chances-for-skeleton-horses.patch
rename to patches/server/Configurable-spawn-chances-for-skeleton-horses.patch
diff --git a/patches/unapplied/server/Configurable-sprint-interruption-on-attack.patch b/patches/server/Configurable-sprint-interruption-on-attack.patch
similarity index 100%
rename from patches/unapplied/server/Configurable-sprint-interruption-on-attack.patch
rename to patches/server/Configurable-sprint-interruption-on-attack.patch
diff --git a/patches/unapplied/server/Custom-replacement-for-eaten-items.patch b/patches/server/Custom-replacement-for-eaten-items.patch
similarity index 100%
rename from patches/unapplied/server/Custom-replacement-for-eaten-items.patch
rename to patches/server/Custom-replacement-for-eaten-items.patch
diff --git a/patches/unapplied/server/Disable-Explicit-Network-Manager-Flushing.patch b/patches/server/Disable-Explicit-Network-Manager-Flushing.patch
similarity index 100%
rename from patches/unapplied/server/Disable-Explicit-Network-Manager-Flushing.patch
rename to patches/server/Disable-Explicit-Network-Manager-Flushing.patch
diff --git a/patches/unapplied/server/Do-not-let-armorstands-drown.patch b/patches/server/Do-not-let-armorstands-drown.patch
similarity index 100%
rename from patches/unapplied/server/Do-not-let-armorstands-drown.patch
rename to patches/server/Do-not-let-armorstands-drown.patch
diff --git a/patches/unapplied/server/Do-not-load-chunks-for-Pathfinding.patch b/patches/server/Do-not-load-chunks-for-Pathfinding.patch
similarity index 100%
rename from patches/unapplied/server/Do-not-load-chunks-for-Pathfinding.patch
rename to patches/server/Do-not-load-chunks-for-Pathfinding.patch
diff --git a/patches/unapplied/server/Do-not-submit-profile-lookups-to-worldgen-threads.patch b/patches/server/Do-not-submit-profile-lookups-to-worldgen-threads.patch
similarity index 100%
rename from patches/unapplied/server/Do-not-submit-profile-lookups-to-worldgen-threads.patch
rename to patches/server/Do-not-submit-profile-lookups-to-worldgen-threads.patch
diff --git a/patches/unapplied/server/Don-t-allow-entities-to-ride-themselves-572.patch b/patches/server/Don-t-allow-entities-to-ride-themselves-572.patch
similarity index 100%
rename from patches/unapplied/server/Don-t-allow-entities-to-ride-themselves-572.patch
rename to patches/server/Don-t-allow-entities-to-ride-themselves-572.patch
diff --git a/patches/unapplied/server/Don-t-call-getItemMeta-on-hasItemMeta.patch b/patches/server/Don-t-call-getItemMeta-on-hasItemMeta.patch
similarity index 100%
rename from patches/unapplied/server/Don-t-call-getItemMeta-on-hasItemMeta.patch
rename to patches/server/Don-t-call-getItemMeta-on-hasItemMeta.patch
diff --git a/patches/unapplied/server/Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch b/patches/server/Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch
similarity index 100%
rename from patches/unapplied/server/Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch
rename to patches/server/Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch
diff --git a/patches/unapplied/server/Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch b/patches/server/Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch
similarity index 100%
rename from patches/unapplied/server/Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch
rename to patches/server/Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch
diff --git a/patches/unapplied/server/EnderDragon-Events.patch b/patches/server/EnderDragon-Events.patch
similarity index 100%
rename from patches/unapplied/server/EnderDragon-Events.patch
rename to patches/server/EnderDragon-Events.patch
diff --git a/patches/unapplied/server/Enderman.teleportRandomly.patch b/patches/server/Enderman.teleportRandomly.patch
similarity index 100%
rename from patches/unapplied/server/Enderman.teleportRandomly.patch
rename to patches/server/Enderman.teleportRandomly.patch
diff --git a/patches/unapplied/server/EndermanAttackPlayerEvent.patch b/patches/server/EndermanAttackPlayerEvent.patch
similarity index 100%
rename from patches/unapplied/server/EndermanAttackPlayerEvent.patch
rename to patches/server/EndermanAttackPlayerEvent.patch
diff --git a/patches/unapplied/server/EndermanEscapeEvent.patch b/patches/server/EndermanEscapeEvent.patch
similarity index 100%
rename from patches/unapplied/server/EndermanEscapeEvent.patch
rename to patches/server/EndermanEscapeEvent.patch
diff --git a/patches/unapplied/server/Enforce-Sync-Player-Saves.patch b/patches/server/Enforce-Sync-Player-Saves.patch
similarity index 100%
rename from patches/unapplied/server/Enforce-Sync-Player-Saves.patch
rename to patches/server/Enforce-Sync-Player-Saves.patch
diff --git a/patches/unapplied/server/Entity-AddTo-RemoveFrom-World-Events.patch b/patches/server/Entity-AddTo-RemoveFrom-World-Events.patch
similarity index 100%
rename from patches/unapplied/server/Entity-AddTo-RemoveFrom-World-Events.patch
rename to patches/server/Entity-AddTo-RemoveFrom-World-Events.patch
diff --git a/patches/unapplied/server/Entity-fromMobSpawner.patch b/patches/server/Entity-fromMobSpawner.patch
similarity index 100%
rename from patches/unapplied/server/Entity-fromMobSpawner.patch
rename to patches/server/Entity-fromMobSpawner.patch
diff --git a/patches/unapplied/server/EntityPathfindEvent.patch b/patches/server/EntityPathfindEvent.patch
similarity index 100%
rename from patches/unapplied/server/EntityPathfindEvent.patch
rename to patches/server/EntityPathfindEvent.patch
diff --git a/patches/unapplied/server/EntityRegainHealthEvent-isFastRegen-API.patch b/patches/server/EntityRegainHealthEvent-isFastRegen-API.patch
similarity index 100%
rename from patches/unapplied/server/EntityRegainHealthEvent-isFastRegen-API.patch
rename to patches/server/EntityRegainHealthEvent-isFastRegen-API.patch
diff --git a/patches/unapplied/server/Expand-Explosions-API.patch b/patches/server/Expand-Explosions-API.patch
similarity index 91%
rename from patches/unapplied/server/Expand-Explosions-API.patch
rename to patches/server/Expand-Explosions-API.patch
index 728ae0ca6e..755f70f314 100644
--- a/patches/unapplied/server/Expand-Explosions-API.patch
+++ b/patches/server/Expand-Explosions-API.patch
@@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
 @@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World {
      public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source) {
-         return !this.world.explode(source == null ? null : ((CraftEntity) source).getHandle(), x, y, z, power, setFire, breakBlocks ? Explosion.BlockInteraction.BREAK : Explosion.BlockInteraction.NONE).wasCanceled;
+         return !this.world.explode(source == null ? null : ((CraftEntity) source).getHandle(), x, y, z, power, setFire, breakBlocks ? net.minecraft.world.level.Level.ExplosionInteraction.MOB : net.minecraft.world.level.Level.ExplosionInteraction.NONE).wasCanceled;
      }
 +    // Paper start
 +    @Override
diff --git a/patches/unapplied/server/Expand-World.spawnParticle-API-and-add-Builder.patch b/patches/server/Expand-World.spawnParticle-API-and-add-Builder.patch
similarity index 100%
rename from patches/unapplied/server/Expand-World.spawnParticle-API-and-add-Builder.patch
rename to patches/server/Expand-World.spawnParticle-API-and-add-Builder.patch
diff --git a/patches/unapplied/server/ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch b/patches/server/ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
similarity index 99%
rename from patches/unapplied/server/ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
rename to patches/server/ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
index 4a5956cfe0..4a8ba35449 100644
--- a/patches/unapplied/server/ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
+++ b/patches/server/ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
@@ -161,7 +161,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
 +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
-@@ -0,0 +0,0 @@ public class Fox extends Animal {
+@@ -0,0 +0,0 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
                  if (this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
                      // CraftBukkit start - use event experience
                      if (experience > 0) {
@@ -187,7 +187,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/sr
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
 +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
-@@ -0,0 +0,0 @@ public class Frog extends Animal {
+@@ -0,0 +0,0 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
          this.getBrain().setMemory(MemoryModuleType.IS_PREGNANT, Unit.INSTANCE);
          world.broadcastEntityEvent(this, (byte)18);
          if (world.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
diff --git a/patches/unapplied/server/Expose-client-protocol-version-and-virtual-host.patch b/patches/server/Expose-client-protocol-version-and-virtual-host.patch
similarity index 100%
rename from patches/unapplied/server/Expose-client-protocol-version-and-virtual-host.patch
rename to patches/server/Expose-client-protocol-version-and-virtual-host.patch
diff --git a/patches/unapplied/server/Extend-Player-Interact-cancellation.patch b/patches/server/Extend-Player-Interact-cancellation.patch
similarity index 100%
rename from patches/unapplied/server/Extend-Player-Interact-cancellation.patch
rename to patches/server/Extend-Player-Interact-cancellation.patch
diff --git a/patches/unapplied/server/Faster-redstone-torch-rapid-clock-removal.patch b/patches/server/Faster-redstone-torch-rapid-clock-removal.patch
similarity index 100%
rename from patches/unapplied/server/Faster-redstone-torch-rapid-clock-removal.patch
rename to patches/server/Faster-redstone-torch-rapid-clock-removal.patch
diff --git a/patches/unapplied/server/Fill-Profile-Property-Events.patch b/patches/server/Fill-Profile-Property-Events.patch
similarity index 100%
rename from patches/unapplied/server/Fill-Profile-Property-Events.patch
rename to patches/server/Fill-Profile-Property-Events.patch
diff --git a/patches/unapplied/server/Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch b/patches/server/Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch
similarity index 92%
rename from patches/unapplied/server/Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch
rename to patches/server/Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch
index 93f07ffb51..57b4737094 100644
--- a/patches/unapplied/server/Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch
+++ b/patches/server/Filter-bad-data-from-ArmorStand-and-SpawnEgg-items.patch
@@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 @@ -0,0 +0,0 @@ public class FallingBlockEntity extends Entity {
      @Override
      protected void readAdditionalSaveData(CompoundTag nbt) {
-         this.blockState = NbtUtils.readBlockState(nbt.getCompound("BlockState"));
+         this.blockState = NbtUtils.readBlockState(this.level.holderLookup(Registries.BLOCK), nbt.getCompound("BlockState"));
 +        // Paper start - Block FallingBlocks with Command Blocks
 +        final Block b = this.blockState.getBlock();
 +        if (this.level.paperConfig().entities.spawning.filterNbtDataFromSpawnEggsAndRelated
diff --git a/patches/unapplied/server/Firework-API-s.patch b/patches/server/Firework-API-s.patch
similarity index 98%
rename from patches/unapplied/server/Firework-API-s.patch
rename to patches/server/Firework-API-s.patch
index 90fcff29e4..e993500f5a 100644
--- a/patches/unapplied/server/Firework-API-s.patch
+++ b/patches/server/Firework-API-s.patch
@@ -13,7 +13,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 @@ -0,0 +0,0 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier {
      public int lifetime;
      @Nullable
-     public LivingEntity attachedToEntity; // PAIL private -> public
+     public LivingEntity attachedToEntity;
 +    public java.util.UUID spawningEntity; // Paper
  
      public FireworkRocketEntity(EntityType<? extends FireworkRocketEntity> type, Level world) {
diff --git a/patches/unapplied/server/Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch b/patches/server/Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch
similarity index 100%
rename from patches/unapplied/server/Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch
rename to patches/server/Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch
diff --git a/patches/unapplied/server/Fix-CraftEntity-hashCode.patch b/patches/server/Fix-CraftEntity-hashCode.patch
similarity index 100%
rename from patches/unapplied/server/Fix-CraftEntity-hashCode.patch
rename to patches/server/Fix-CraftEntity-hashCode.patch
diff --git a/patches/unapplied/server/Fix-MC-117075-TE-Unload-Lag-Spike.patch b/patches/server/Fix-MC-117075-TE-Unload-Lag-Spike.patch
similarity index 100%
rename from patches/unapplied/server/Fix-MC-117075-TE-Unload-Lag-Spike.patch
rename to patches/server/Fix-MC-117075-TE-Unload-Lag-Spike.patch
diff --git a/patches/unapplied/server/Fix-Old-Sign-Conversion.patch b/patches/server/Fix-Old-Sign-Conversion.patch
similarity index 100%
rename from patches/unapplied/server/Fix-Old-Sign-Conversion.patch
rename to patches/server/Fix-Old-Sign-Conversion.patch
diff --git a/patches/unapplied/server/Fix-exploit-that-allowed-colored-signs-to-be-created.patch b/patches/server/Fix-exploit-that-allowed-colored-signs-to-be-created.patch
similarity index 100%
rename from patches/unapplied/server/Fix-exploit-that-allowed-colored-signs-to-be-created.patch
rename to patches/server/Fix-exploit-that-allowed-colored-signs-to-be-created.patch
diff --git a/patches/unapplied/server/Fix-this-stupid-bullshit.patch b/patches/server/Fix-this-stupid-bullshit.patch
similarity index 95%
rename from patches/unapplied/server/Fix-this-stupid-bullshit.patch
rename to patches/server/Fix-this-stupid-bullshit.patch
index 58b9fe0c51..97d468a1d9 100644
--- a/patches/unapplied/server/Fix-this-stupid-bullshit.patch
+++ b/patches/server/Fix-this-stupid-bullshit.patch
@@ -29,14 +29,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +            }*/ // Paper
              // CraftBukkit end
              Bootstrap.isBootstrapped = true;
-             if (Registry.REGISTRY.keySet().isEmpty()) {
+             if (BuiltInRegistries.REGISTRY.keySet().isEmpty()) {
 diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/craftbukkit/Main.java
 +++ b/src/main/java/org/bukkit/craftbukkit/Main.java
 @@ -0,0 +0,0 @@ public class Main {
                      Calendar deadline = Calendar.getInstance();
-                     deadline.add(Calendar.DAY_OF_YEAR, -28);
+                     deadline.add(Calendar.DAY_OF_YEAR, -3);
                      if (buildDate.before(deadline.getTime())) {
 -                        System.err.println("*** Error, this build is outdated ***");
 +                        // Paper start - This is some stupid bullshit
diff --git a/patches/unapplied/server/Flag-to-disable-the-channel-limit.patch b/patches/server/Flag-to-disable-the-channel-limit.patch
similarity index 100%
rename from patches/unapplied/server/Flag-to-disable-the-channel-limit.patch
rename to patches/server/Flag-to-disable-the-channel-limit.patch
diff --git a/patches/unapplied/server/Handle-plugin-prefixes-using-Log4J-configuration.patch b/patches/server/Handle-plugin-prefixes-using-Log4J-configuration.patch
similarity index 99%
rename from patches/unapplied/server/Handle-plugin-prefixes-using-Log4J-configuration.patch
rename to patches/server/Handle-plugin-prefixes-using-Log4J-configuration.patch
index f43950229e..24fdaba277 100644
--- a/patches/unapplied/server/Handle-plugin-prefixes-using-Log4J-configuration.patch
+++ b/patches/server/Handle-plugin-prefixes-using-Log4J-configuration.patch
@@ -25,7 +25,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 -    runtimeOnly("org.apache.logging.log4j:log4j-core:2.14.1")
 +    implementation("org.apache.logging.log4j:log4j-core:2.14.1") // Paper - implementation
      // Paper end
-     implementation("org.apache.logging.log4j:log4j-iostreams:2.17.1") // Paper
+     implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
      implementation("org.ow2.asm:asm:9.3")
 diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
diff --git a/patches/unapplied/server/Implement-EntityKnockbackByEntityEvent.patch b/patches/server/Implement-EntityKnockbackByEntityEvent.patch
similarity index 93%
rename from patches/unapplied/server/Implement-EntityKnockbackByEntityEvent.patch
rename to patches/server/Implement-EntityKnockbackByEntityEvent.patch
index 15a32bc588..a3b4efe711 100644
--- a/patches/unapplied/server/Implement-EntityKnockbackByEntityEvent.patch
+++ b/patches/server/Implement-EntityKnockbackByEntityEvent.patch
@@ -74,13 +74,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/RamTarget.java
 @@ -0,0 +0,0 @@ public class RamTarget extends Behavior<Goat> {
              float f = 0.25F * (float)(i - j);
-             float g = Mth.clamp(goat.getSpeed() * 1.65F, 0.2F, 3.0F) + f;
-             float h = livingEntity.isDamageSourceBlocked(DamageSource.mobAttack(goat)) ? 0.5F : 1.0F;
--            livingEntity.knockback((double)(h * g) * this.getKnockbackForce.applyAsDouble(goat), this.ramDirection.x(), this.ramDirection.z());
-+            livingEntity.knockback((double)(h * g) * this.getKnockbackForce.applyAsDouble(goat), this.ramDirection.x(), this.ramDirection.z(), goat); // Paper
-             this.finishRam(serverLevel, goat);
-             serverLevel.playSound((Player)null, goat, this.getImpactSound.apply(goat), SoundSource.HOSTILE, 1.0F, 1.0F);
-         } else if (this.hasRammedHornBreakingBlock(serverLevel, goat)) {
+             float g = Mth.clamp(entity.getSpeed() * 1.65F, 0.2F, 3.0F) + f;
+             float h = livingEntity.isDamageSourceBlocked(DamageSource.mobAttack(entity)) ? 0.5F : 1.0F;
+-            livingEntity.knockback((double)(h * g) * this.getKnockbackForce.applyAsDouble(entity), this.ramDirection.x(), this.ramDirection.z());
++            livingEntity.knockback((double)(h * g) * this.getKnockbackForce.applyAsDouble(entity), this.ramDirection.x(), this.ramDirection.z(), goat); // Paper
+             this.finishRam(world, entity);
+             world.playSound((Player)null, entity, this.getImpactSound.apply(entity), SoundSource.NEUTRAL, 1.0F, 1.0F);
+         } else if (this.hasRammedHornBreakingBlock(world, entity)) {
 diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/entity/player/Player.java
diff --git a/patches/unapplied/server/Implement-EntityTeleportEndGatewayEvent.patch b/patches/server/Implement-EntityTeleportEndGatewayEvent.patch
similarity index 100%
rename from patches/unapplied/server/Implement-EntityTeleportEndGatewayEvent.patch
rename to patches/server/Implement-EntityTeleportEndGatewayEvent.patch
diff --git a/patches/unapplied/server/Implement-Expanded-ArmorStand-API.patch b/patches/server/Implement-Expanded-ArmorStand-API.patch
similarity index 100%
rename from patches/unapplied/server/Implement-Expanded-ArmorStand-API.patch
rename to patches/server/Implement-Expanded-ArmorStand-API.patch
diff --git a/patches/unapplied/server/Implement-World.getEntity-UUID-API.patch b/patches/server/Implement-World.getEntity-UUID-API.patch
similarity index 100%
rename from patches/unapplied/server/Implement-World.getEntity-UUID-API.patch
rename to patches/server/Implement-World.getEntity-UUID-API.patch
diff --git a/patches/unapplied/server/Implement-ensureServerConversions-API.patch b/patches/server/Implement-ensureServerConversions-API.patch
similarity index 100%
rename from patches/unapplied/server/Implement-ensureServerConversions-API.patch
rename to patches/server/Implement-ensureServerConversions-API.patch
diff --git a/patches/unapplied/server/Implement-extended-PaperServerListPingEvent.patch b/patches/server/Implement-extended-PaperServerListPingEvent.patch
similarity index 99%
rename from patches/unapplied/server/Implement-extended-PaperServerListPingEvent.patch
rename to patches/server/Implement-extended-PaperServerListPingEvent.patch
index da404de600..5395001ac2 100644
--- a/patches/unapplied/server/Implement-extended-PaperServerListPingEvent.patch
+++ b/patches/server/Implement-extended-PaperServerListPingEvent.patch
@@ -25,7 +25,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +    private final MinecraftServer server;
 +
 +    PaperServerListPingEventImpl(MinecraftServer server, StatusClient client, int protocolVersion, @Nullable CachedServerIcon icon) {
-+        super(client, server.server.motd(), server.previewsChat(), server.getPlayerCount(), server.getMaxPlayers(),
++        super(client, server.server.motd(), server.getPlayerCount(), server.getMaxPlayers(),
 +                server.getServerModName() + ' ' + server.getServerVersion(), protocolVersion, icon);
 +        this.server = server;
 +    }
diff --git a/patches/unapplied/server/Implement-getI18NDisplayName.patch b/patches/server/Implement-getI18NDisplayName.patch
similarity index 100%
rename from patches/unapplied/server/Implement-getI18NDisplayName.patch
rename to patches/server/Implement-getI18NDisplayName.patch
diff --git a/patches/unapplied/server/Improve-BlockPosition-inlining.patch b/patches/server/Improve-BlockPosition-inlining.patch
similarity index 100%
rename from patches/unapplied/server/Improve-BlockPosition-inlining.patch
rename to patches/server/Improve-BlockPosition-inlining.patch
diff --git a/patches/unapplied/server/Improve-EntityShootBowEvent.patch b/patches/server/Improve-EntityShootBowEvent.patch
similarity index 100%
rename from patches/unapplied/server/Improve-EntityShootBowEvent.patch
rename to patches/server/Improve-EntityShootBowEvent.patch
diff --git a/patches/unapplied/server/Improve-Log4J-Configuration-Plugin-Loggers.patch b/patches/server/Improve-Log4J-Configuration-Plugin-Loggers.patch
similarity index 100%
rename from patches/unapplied/server/Improve-Log4J-Configuration-Plugin-Loggers.patch
rename to patches/server/Improve-Log4J-Configuration-Plugin-Loggers.patch
diff --git a/patches/unapplied/server/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch b/patches/server/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch
similarity index 100%
rename from patches/unapplied/server/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch
rename to patches/server/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch
diff --git a/patches/unapplied/server/Improve-the-Saddle-API-for-Horses.patch b/patches/server/Improve-the-Saddle-API-for-Horses.patch
similarity index 100%
rename from patches/unapplied/server/Improve-the-Saddle-API-for-Horses.patch
rename to patches/server/Improve-the-Saddle-API-for-Horses.patch
diff --git a/patches/unapplied/server/Improved-Async-Task-Scheduler.patch b/patches/server/Improved-Async-Task-Scheduler.patch
similarity index 100%
rename from patches/unapplied/server/Improved-Async-Task-Scheduler.patch
rename to patches/server/Improved-Async-Task-Scheduler.patch
diff --git a/patches/unapplied/server/InventoryCloseEvent-Reason-API.patch b/patches/server/InventoryCloseEvent-Reason-API.patch
similarity index 100%
rename from patches/unapplied/server/InventoryCloseEvent-Reason-API.patch
rename to patches/server/InventoryCloseEvent-Reason-API.patch
diff --git a/patches/unapplied/server/Item-canEntityPickup.patch b/patches/server/Item-canEntityPickup.patch
similarity index 100%
rename from patches/unapplied/server/Item-canEntityPickup.patch
rename to patches/server/Item-canEntityPickup.patch
diff --git a/patches/unapplied/server/ItemStack-getMaxItemUseDuration.patch b/patches/server/ItemStack-getMaxItemUseDuration.patch
similarity index 100%
rename from patches/unapplied/server/ItemStack-getMaxItemUseDuration.patch
rename to patches/server/ItemStack-getMaxItemUseDuration.patch
diff --git a/patches/unapplied/server/LivingEntity-Hand-Raised-Item-Use-API.patch b/patches/server/LivingEntity-Hand-Raised-Item-Use-API.patch
similarity index 100%
rename from patches/unapplied/server/LivingEntity-Hand-Raised-Item-Use-API.patch
rename to patches/server/LivingEntity-Hand-Raised-Item-Use-API.patch
diff --git a/patches/unapplied/server/LivingEntity-setKiller.patch b/patches/server/LivingEntity-setKiller.patch
similarity index 100%
rename from patches/unapplied/server/LivingEntity-setKiller.patch
rename to patches/server/LivingEntity-setKiller.patch
diff --git a/patches/unapplied/server/LootTable-API-Replenishable-Lootables-Feature.patch b/patches/server/LootTable-API-Replenishable-Lootables-Feature.patch
similarity index 100%
rename from patches/unapplied/server/LootTable-API-Replenishable-Lootables-Feature.patch
rename to patches/server/LootTable-API-Replenishable-Lootables-Feature.patch
diff --git a/patches/unapplied/server/Make-legacy-ping-handler-more-reliable.patch b/patches/server/Make-legacy-ping-handler-more-reliable.patch
similarity index 100%
rename from patches/unapplied/server/Make-legacy-ping-handler-more-reliable.patch
rename to patches/server/Make-legacy-ping-handler-more-reliable.patch
diff --git a/patches/unapplied/server/Make-shield-blocking-delay-configurable.patch b/patches/server/Make-shield-blocking-delay-configurable.patch
similarity index 100%
rename from patches/unapplied/server/Make-shield-blocking-delay-configurable.patch
rename to patches/server/Make-shield-blocking-delay-configurable.patch
diff --git a/patches/unapplied/server/Ocelot-despawns-should-honor-nametags-and-leash.patch b/patches/server/Ocelot-despawns-should-honor-nametags-and-leash.patch
similarity index 100%
rename from patches/unapplied/server/Ocelot-despawns-should-honor-nametags-and-leash.patch
rename to patches/server/Ocelot-despawns-should-honor-nametags-and-leash.patch
diff --git a/patches/unapplied/server/Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch b/patches/server/Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch
similarity index 100%
rename from patches/unapplied/server/Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch
rename to patches/server/Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch
diff --git a/patches/unapplied/server/Only-send-global-sounds-to-same-world-if-limiting-ra.patch b/patches/server/Only-send-global-sounds-to-same-world-if-limiting-ra.patch
similarity index 100%
rename from patches/unapplied/server/Only-send-global-sounds-to-same-world-if-limiting-ra.patch
rename to patches/server/Only-send-global-sounds-to-same-world-if-limiting-ra.patch
diff --git a/patches/unapplied/server/Optimise-BlockState-s-hashCode-equals.patch b/patches/server/Optimise-BlockState-s-hashCode-equals.patch
similarity index 100%
rename from patches/unapplied/server/Optimise-BlockState-s-hashCode-equals.patch
rename to patches/server/Optimise-BlockState-s-hashCode-equals.patch
diff --git a/patches/unapplied/server/Optimize-DataBits.patch b/patches/server/Optimize-DataBits.patch
similarity index 100%
rename from patches/unapplied/server/Optimize-DataBits.patch
rename to patches/server/Optimize-DataBits.patch
diff --git a/patches/unapplied/server/Optimize-ItemStack.isEmpty.patch b/patches/server/Optimize-ItemStack.isEmpty.patch
similarity index 93%
rename from patches/unapplied/server/Optimize-ItemStack.isEmpty.patch
rename to patches/server/Optimize-ItemStack.isEmpty.patch
index 27801c1510..0c2c0e2f49 100644
--- a/patches/unapplied/server/Optimize-ItemStack.isEmpty.patch
+++ b/patches/server/Optimize-ItemStack.isEmpty.patch
@@ -17,4 +17,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +        return this == ItemStack.EMPTY || this.item == null || this.item == Items.AIR || this.count <= 0; // Paper
      }
  
-     public ItemStack split(int amount) {
+     public boolean isItemEnabled(FeatureFlagSet enabledFeatures) {
diff --git a/patches/unapplied/server/Optimize-World.isLoaded-BlockPosition-Z.patch b/patches/server/Optimize-World.isLoaded-BlockPosition-Z.patch
similarity index 100%
rename from patches/unapplied/server/Optimize-World.isLoaded-BlockPosition-Z.patch
rename to patches/server/Optimize-World.isLoaded-BlockPosition-Z.patch
diff --git a/patches/unapplied/server/Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch b/patches/server/Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch
similarity index 99%
rename from patches/unapplied/server/Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch
rename to patches/server/Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch
index 632db232c7..2a1eaf15f1 100644
--- a/patches/unapplied/server/Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch
+++ b/patches/server/Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch
@@ -46,7 +46,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java
 +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java
 @@ -0,0 +0,0 @@ public abstract class ChunkAccess implements BlockGetter, BiomeManager.NoiseBiom
-         return GameEventDispatcher.NOOP;
+         return GameEventListenerRegistry.NOOP;
      }
  
 +    public abstract BlockState getBlockState(final int x, final int y, final int z); // Paper
diff --git a/patches/unapplied/server/Option-to-prevent-armor-stands-from-doing-entity-loo.patch b/patches/server/Option-to-prevent-armor-stands-from-doing-entity-loo.patch
similarity index 100%
rename from patches/unapplied/server/Option-to-prevent-armor-stands-from-doing-entity-loo.patch
rename to patches/server/Option-to-prevent-armor-stands-from-doing-entity-loo.patch
diff --git a/patches/unapplied/server/Option-to-use-vanilla-per-world-scoreboard-coloring-.patch b/patches/server/Option-to-use-vanilla-per-world-scoreboard-coloring-.patch
similarity index 100%
rename from patches/unapplied/server/Option-to-use-vanilla-per-world-scoreboard-coloring-.patch
rename to patches/server/Option-to-use-vanilla-per-world-scoreboard-coloring-.patch
diff --git a/patches/unapplied/server/Optional-TNT-doesn-t-move-in-water.patch b/patches/server/Optional-TNT-doesn-t-move-in-water.patch
similarity index 94%
rename from patches/unapplied/server/Optional-TNT-doesn-t-move-in-water.patch
rename to patches/server/Optional-TNT-doesn-t-move-in-water.patch
index 66ed47708b..0a5c118264 100644
--- a/patches/unapplied/server/Optional-TNT-doesn-t-move-in-water.patch
+++ b/patches/server/Optional-TNT-doesn-t-move-in-water.patch
@@ -9,8 +9,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java
 +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
 @@ -0,0 +0,0 @@ public class ServerEntity {
-     private boolean wasRiding;
-     private boolean wasOnGround;
+     @Nullable
+     private List<SynchedEntityData.DataValue<?>> trackedDataValues;
      // CraftBukkit start
 -    private final Set<ServerPlayerConnection> trackedPlayers;
 +    final Set<ServerPlayerConnection> trackedPlayers; // Paper - private -> package
@@ -50,8 +50,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
  
      private void explode() {
 @@ -0,0 +0,0 @@ public class PrimedTnt extends Entity {
-     public Packet<?> getAddEntityPacket() {
-         return new ClientboundAddEntityPacket(this);
+     public int getFuse() {
+         return (Integer) this.entityData.get(PrimedTnt.DATA_FUSE_ID);
      }
 +
 +    // Paper start - Optional prevent TNT from moving in water
diff --git a/patches/unapplied/server/Player.setPlayerProfile-API.patch b/patches/server/Player.setPlayerProfile-API.patch
similarity index 98%
rename from patches/unapplied/server/Player.setPlayerProfile-API.patch
rename to patches/server/Player.setPlayerProfile-API.patch
index e9accfca6c..e0c9af1cc5 100644
--- a/patches/unapplied/server/Player.setPlayerProfile-API.patch
+++ b/patches/server/Player.setPlayerProfile-API.patch
@@ -12,7 +12,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListene
 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 TickablePacketListener, Se
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
                          final org.bukkit.craftbukkit.CraftServer server = ServerLoginPacketListenerImpl.this.server.server;
  
                          // Paper start
@@ -68,7 +68,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
          if (entry != null) {
              entry.removePlayer(this.getHandle());
 @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
-                 this.getHandle().connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.REMOVE_PLAYER, otherPlayer));
+                 this.getHandle().connection.send(new ClientboundPlayerInfoRemovePacket(List.of(otherPlayer.getUUID())));
              }
          }
 -
diff --git a/patches/unapplied/server/PlayerAdvancementCriterionGrantEvent.patch b/patches/server/PlayerAdvancementCriterionGrantEvent.patch
similarity index 100%
rename from patches/unapplied/server/PlayerAdvancementCriterionGrantEvent.patch
rename to patches/server/PlayerAdvancementCriterionGrantEvent.patch
diff --git a/patches/unapplied/server/PlayerAttemptPickupItemEvent.patch b/patches/server/PlayerAttemptPickupItemEvent.patch
similarity index 100%
rename from patches/unapplied/server/PlayerAttemptPickupItemEvent.patch
rename to patches/server/PlayerAttemptPickupItemEvent.patch
diff --git a/patches/unapplied/server/PlayerElytraBoostEvent.patch b/patches/server/PlayerElytraBoostEvent.patch
similarity index 100%
rename from patches/unapplied/server/PlayerElytraBoostEvent.patch
rename to patches/server/PlayerElytraBoostEvent.patch
diff --git a/patches/unapplied/server/PlayerLaunchProjectileEvent.patch b/patches/server/PlayerLaunchProjectileEvent.patch
similarity index 97%
rename from patches/unapplied/server/PlayerLaunchProjectileEvent.patch
rename to patches/server/PlayerLaunchProjectileEvent.patch
index a8914014f5..ec9cc0cd3d 100644
--- a/patches/unapplied/server/PlayerLaunchProjectileEvent.patch
+++ b/patches/server/PlayerLaunchProjectileEvent.patch
@@ -135,14 +135,6 @@ diff --git a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java b/sr
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
 +++ b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
-@@ -0,0 +0,0 @@ import net.minecraft.nbt.CompoundTag;
- import net.minecraft.nbt.ListTag;
- import net.minecraft.network.chat.Component;
- import net.minecraft.stats.Stats;
-+import net.minecraft.server.level.ServerPlayer;
- import net.minecraft.world.InteractionHand;
- import net.minecraft.world.InteractionResult;
- import net.minecraft.world.InteractionResultHolder;
 @@ -0,0 +0,0 @@ public class FireworkRocketItem extends Item {
              Direction direction = context.getClickedFace();
              FireworkRocketEntity fireworkRocketEntity = new FireworkRocketEntity(level, context.getPlayer(), vec3.x + (double)direction.getStepX() * 0.15D, vec3.y + (double)direction.getStepY() * 0.15D, vec3.z + (double)direction.getStepZ() * 0.15D, itemStack);
@@ -153,7 +145,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +            com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Firework) fireworkRocketEntity.getBukkitEntity());
 +            if (!event.callEvent() || !level.addFreshEntity(fireworkRocketEntity)) return InteractionResult.PASS;
 +            if (event.shouldConsume() && !context.getPlayer().getAbilities().instabuild) itemStack.shrink(1);
-+            else if (context.getPlayer() instanceof ServerPlayer) ((ServerPlayer) context.getPlayer()).getBukkitEntity().updateInventory();
++            else if (context.getPlayer() instanceof net.minecraft.server.level.ServerPlayer) ((net.minecraft.server.level.ServerPlayer) context.getPlayer()).getBukkitEntity().updateInventory();
 +            // Paper end
          }
  
diff --git a/patches/unapplied/server/PlayerNaturallySpawnCreaturesEvent.patch b/patches/server/PlayerNaturallySpawnCreaturesEvent.patch
similarity index 96%
rename from patches/unapplied/server/PlayerNaturallySpawnCreaturesEvent.patch
rename to patches/server/PlayerNaturallySpawnCreaturesEvent.patch
index 37c8623bd2..64b136338e 100644
--- a/patches/unapplied/server/PlayerNaturallySpawnCreaturesEvent.patch
+++ b/patches/server/PlayerNaturallySpawnCreaturesEvent.patch
@@ -71,10 +71,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
  import com.mojang.authlib.GameProfile;
  import com.mojang.datafixers.util.Either;
 @@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
-     public Integer clientViewDistance;
-     public String kickLeaveMessage = null; // SPIGOT-3034: Forward leave message to PlayerQuitEvent
      // CraftBukkit end
-+    public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
- 
      public boolean isRealPlayer; // Paper
      public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<ServerPlayer> cachedSingleHashSet; // Paper
++    public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper
+ 
+     public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) {
+         super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
diff --git a/patches/unapplied/server/PlayerPickupExperienceEvent.patch b/patches/server/PlayerPickupExperienceEvent.patch
similarity index 100%
rename from patches/unapplied/server/PlayerPickupExperienceEvent.patch
rename to patches/server/PlayerPickupExperienceEvent.patch
diff --git a/patches/unapplied/server/PlayerPickupItemEvent-setFlyAtPlayer.patch b/patches/server/PlayerPickupItemEvent-setFlyAtPlayer.patch
similarity index 100%
rename from patches/unapplied/server/PlayerPickupItemEvent-setFlyAtPlayer.patch
rename to patches/server/PlayerPickupItemEvent-setFlyAtPlayer.patch
diff --git a/patches/unapplied/server/PlayerReadyArrowEvent.patch b/patches/server/PlayerReadyArrowEvent.patch
similarity index 100%
rename from patches/unapplied/server/PlayerReadyArrowEvent.patch
rename to patches/server/PlayerReadyArrowEvent.patch
diff --git a/patches/unapplied/server/PlayerTeleportEndGatewayEvent.patch b/patches/server/PlayerTeleportEndGatewayEvent.patch
similarity index 100%
rename from patches/unapplied/server/PlayerTeleportEndGatewayEvent.patch
rename to patches/server/PlayerTeleportEndGatewayEvent.patch
diff --git a/patches/unapplied/server/PreCreatureSpawnEvent.patch b/patches/server/PreCreatureSpawnEvent.patch
similarity index 95%
rename from patches/unapplied/server/PreCreatureSpawnEvent.patch
rename to patches/server/PreCreatureSpawnEvent.patch
index a660637e5f..fdaaac47d6 100644
--- a/patches/unapplied/server/PreCreatureSpawnEvent.patch
+++ b/patches/server/PreCreatureSpawnEvent.patch
@@ -55,17 +55,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +                    break;
 +                }
 +                // Paper end
-                 T t0 = entitytypes.create(worldserver, (CompoundTag) null, (Component) null, (Player) null, blockposition_mutableblockposition, enummobspawn, false, false); // CraftBukkit - decompile error
+                 T t0 = entitytypes.create(worldserver, (CompoundTag) null, null, blockposition_mutableblockposition, enummobspawn, false, false); // CraftBukkit - decompile error
  
                  if (t0 != null) {
 diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/entity/EntityType.java
 +++ b/src/main/java/net/minecraft/world/entity/EntityType.java
-@@ -0,0 +0,0 @@ public class EntityType<T extends Entity> implements EntityTypeTest<Entity, T> {
- 
+@@ -0,0 +0,0 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
      @Nullable
-     public T spawn(ServerLevel worldserver, @Nullable CompoundTag nbttagcompound, @Nullable Component ichatbasecomponent, @Nullable Player entityhuman, BlockPos blockposition, MobSpawnType enummobspawn, boolean flag, boolean flag1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason) {
+     public T spawn(ServerLevel worldserver, @Nullable CompoundTag nbttagcompound, @Nullable Consumer<T> consumer, BlockPos blockposition, MobSpawnType enummobspawn, boolean flag, boolean flag1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason) {
+         // CraftBukkit end
 +        // Paper start - Call PreCreatureSpawnEvent
 +        org.bukkit.entity.EntityType type = org.bukkit.entity.EntityType.fromName(EntityType.getKey(this).getPath());
 +        if (type != null) {
@@ -80,7 +80,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +            }
 +        }
 +        // Paper end
-         T t0 = this.create(worldserver, nbttagcompound, ichatbasecomponent, entityhuman, blockposition, enummobspawn, flag, flag1);
+         T t0 = this.create(worldserver, nbttagcompound, consumer, blockposition, enummobspawn, flag, flag1);
  
          if (t0 != null) {
 diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
diff --git a/patches/unapplied/server/Prevent-Frosted-Ice-from-loading-holding-chunks.patch b/patches/server/Prevent-Frosted-Ice-from-loading-holding-chunks.patch
similarity index 100%
rename from patches/unapplied/server/Prevent-Frosted-Ice-from-loading-holding-chunks.patch
rename to patches/server/Prevent-Frosted-Ice-from-loading-holding-chunks.patch
diff --git a/patches/unapplied/server/Prevent-Pathfinding-out-of-World-Border.patch b/patches/server/Prevent-Pathfinding-out-of-World-Border.patch
similarity index 100%
rename from patches/unapplied/server/Prevent-Pathfinding-out-of-World-Border.patch
rename to patches/server/Prevent-Pathfinding-out-of-World-Border.patch
diff --git a/patches/unapplied/server/Prevent-logins-from-being-processed-when-the-player-.patch b/patches/server/Prevent-logins-from-being-processed-when-the-player-.patch
similarity index 97%
rename from patches/unapplied/server/Prevent-logins-from-being-processed-when-the-player-.patch
rename to patches/server/Prevent-logins-from-being-processed-when-the-player-.patch
index 957f216834..da7c035fcb 100644
--- a/patches/unapplied/server/Prevent-logins-from-being-processed-when-the-player-.patch
+++ b/patches/server/Prevent-logins-from-being-processed-when-the-player-.patch
@@ -9,7 +9,7 @@ diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListene
 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 TickablePacketListener, Se
+@@ -0,0 +0,0 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
          }
          // Paper end
          if (this.state == ServerLoginPacketListenerImpl.State.READY_TO_ACCEPT) {
diff --git a/patches/unapplied/server/Print-Error-details-when-failing-to-save-player-data.patch b/patches/server/Print-Error-details-when-failing-to-save-player-data.patch
similarity index 100%
rename from patches/unapplied/server/Print-Error-details-when-failing-to-save-player-data.patch
rename to patches/server/Print-Error-details-when-failing-to-save-player-data.patch
diff --git a/patches/unapplied/server/Profile-Lookup-Events.patch b/patches/server/Profile-Lookup-Events.patch
similarity index 100%
rename from patches/unapplied/server/Profile-Lookup-Events.patch
rename to patches/server/Profile-Lookup-Events.patch
diff --git a/patches/unapplied/server/ProfileWhitelistVerifyEvent.patch b/patches/server/ProfileWhitelistVerifyEvent.patch
similarity index 100%
rename from patches/unapplied/server/ProfileWhitelistVerifyEvent.patch
rename to patches/server/ProfileWhitelistVerifyEvent.patch
diff --git a/patches/unapplied/server/Properly-fix-item-duplication-bug.patch b/patches/server/Properly-fix-item-duplication-bug.patch
similarity index 100%
rename from patches/unapplied/server/Properly-fix-item-duplication-bug.patch
rename to patches/server/Properly-fix-item-duplication-bug.patch
diff --git a/patches/unapplied/server/Properly-handle-async-calls-to-restart-the-server.patch b/patches/server/Properly-handle-async-calls-to-restart-the-server.patch
similarity index 98%
rename from patches/unapplied/server/Properly-handle-async-calls-to-restart-the-server.patch
rename to patches/server/Properly-handle-async-calls-to-restart-the-server.patch
index 0837ad3b7b..545abd0049 100644
--- a/patches/unapplied/server/Properly-handle-async-calls-to-restart-the-server.patch
+++ b/patches/server/Properly-handle-async-calls-to-restart-the-server.patch
@@ -53,15 +53,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
      }
  
-     public void halt(boolean flag) {
+     public void halt(boolean waitForShutdown) {
 +        // Paper start - allow passing of the intent to restart
-+        this.safeShutdown(flag, false);
++        this.safeShutdown(waitForShutdown, false);
 +    }
-+    public void safeShutdown(boolean flag, boolean isRestarting) {
++    public void safeShutdown(boolean waitForShutdown, boolean isRestarting) {
 +        this.isRestarting = isRestarting;
 +        // Paper end
          this.running = false;
-         if (flag) {
+         if (waitForShutdown) {
              try {
 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
diff --git a/patches/unapplied/server/Provide-E-TE-Chunk-count-stat-methods.patch b/patches/server/Provide-E-TE-Chunk-count-stat-methods.patch
similarity index 100%
rename from patches/unapplied/server/Provide-E-TE-Chunk-count-stat-methods.patch
rename to patches/server/Provide-E-TE-Chunk-count-stat-methods.patch
diff --git a/patches/unapplied/server/RangedEntity-API.patch b/patches/server/RangedEntity-API.patch
similarity index 100%
rename from patches/unapplied/server/RangedEntity-API.patch
rename to patches/server/RangedEntity-API.patch
diff --git a/patches/unapplied/server/Refresh-player-inventory-when-cancelling-PlayerInter.patch b/patches/server/Refresh-player-inventory-when-cancelling-PlayerInter.patch
similarity index 87%
rename from patches/unapplied/server/Refresh-player-inventory-when-cancelling-PlayerInter.patch
rename to patches/server/Refresh-player-inventory-when-cancelling-PlayerInter.patch
index 241269ed90..145137f320 100644
--- a/patches/unapplied/server/Refresh-player-inventory-when-cancelling-PlayerInter.patch
+++ b/patches/server/Refresh-player-inventory-when-cancelling-PlayerInter.patch
@@ -20,10 +20,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 --- 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
-                         }
+                             }
  
-                         if (event.isCancelled()) {
+                             if (event.isCancelled()) {
 +                            ServerGamePacketListenerImpl.this.player.containerMenu.sendAllDataToRemote(); // Paper - Refresh player inventory
-                             return;
-                         }
-                         // CraftBukkit end
+                                 return;
+                             }
+                             // CraftBukkit end
diff --git a/patches/unapplied/server/Remove-CraftScheduler-Async-Task-Debugger.patch b/patches/server/Remove-CraftScheduler-Async-Task-Debugger.patch
similarity index 100%
rename from patches/unapplied/server/Remove-CraftScheduler-Async-Task-Debugger.patch
rename to patches/server/Remove-CraftScheduler-Async-Task-Debugger.patch
diff --git a/patches/unapplied/server/Reset-spawner-timer-when-spawner-event-is-cancelled.patch b/patches/server/Reset-spawner-timer-when-spawner-event-is-cancelled.patch
similarity index 100%
rename from patches/unapplied/server/Reset-spawner-timer-when-spawner-event-is-cancelled.patch
rename to patches/server/Reset-spawner-timer-when-spawner-event-is-cancelled.patch
diff --git a/patches/unapplied/server/Sanitise-RegionFileCache-and-make-configurable.patch b/patches/server/Sanitise-RegionFileCache-and-make-configurable.patch
similarity index 100%
rename from patches/unapplied/server/Sanitise-RegionFileCache-and-make-configurable.patch
rename to patches/server/Sanitise-RegionFileCache-and-make-configurable.patch
diff --git a/patches/unapplied/server/Send-attack-SoundEffects-only-to-players-who-can-see.patch b/patches/server/Send-attack-SoundEffects-only-to-players-who-can-see.patch
similarity index 100%
rename from patches/unapplied/server/Send-attack-SoundEffects-only-to-players-who-can-see.patch
rename to patches/server/Send-attack-SoundEffects-only-to-players-who-can-see.patch
diff --git a/patches/unapplied/server/Shoulder-Entities-Release-API.patch b/patches/server/Shoulder-Entities-Release-API.patch
similarity index 100%
rename from patches/unapplied/server/Shoulder-Entities-Release-API.patch
rename to patches/server/Shoulder-Entities-Release-API.patch
diff --git a/patches/unapplied/server/SkeletonHorse-Additions.patch b/patches/server/SkeletonHorse-Additions.patch
similarity index 100%
rename from patches/unapplied/server/SkeletonHorse-Additions.patch
rename to patches/server/SkeletonHorse-Additions.patch
diff --git a/patches/unapplied/server/String-based-Action-Bar-API.patch b/patches/server/String-based-Action-Bar-API.patch
similarity index 100%
rename from patches/unapplied/server/String-based-Action-Bar-API.patch
rename to patches/server/String-based-Action-Bar-API.patch
diff --git a/patches/unapplied/server/System-property-for-disabling-watchdoge.patch b/patches/server/System-property-for-disabling-watchdoge.patch
similarity index 100%
rename from patches/unapplied/server/System-property-for-disabling-watchdoge.patch
rename to patches/server/System-property-for-disabling-watchdoge.patch
diff --git a/patches/unapplied/server/Tameable-getOwnerUniqueId-API.patch b/patches/server/Tameable-getOwnerUniqueId-API.patch
similarity index 100%
rename from patches/unapplied/server/Tameable-getOwnerUniqueId-API.patch
rename to patches/server/Tameable-getOwnerUniqueId-API.patch
diff --git a/patches/unapplied/server/Toggleable-player-crits-helps-mitigate-hacked-client.patch b/patches/server/Toggleable-player-crits-helps-mitigate-hacked-client.patch
similarity index 100%
rename from patches/unapplied/server/Toggleable-player-crits-helps-mitigate-hacked-client.patch
rename to patches/server/Toggleable-player-crits-helps-mitigate-hacked-client.patch
diff --git a/patches/unapplied/server/Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch b/patches/server/Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch
similarity index 100%
rename from patches/unapplied/server/Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch
rename to patches/server/Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch
diff --git a/patches/unapplied/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch b/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch
similarity index 100%
rename from patches/unapplied/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch
rename to patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch
diff --git a/patches/unapplied/server/Use-TerminalConsoleAppender-for-console-improvements.patch b/patches/server/Use-TerminalConsoleAppender-for-console-improvements.patch
similarity index 98%
rename from patches/unapplied/server/Use-TerminalConsoleAppender-for-console-improvements.patch
rename to patches/server/Use-TerminalConsoleAppender-for-console-improvements.patch
index f4148c923a..5e2c595120 100644
--- a/patches/unapplied/server/Use-TerminalConsoleAppender-for-console-improvements.patch
+++ b/patches/server/Use-TerminalConsoleAppender-for-console-improvements.patch
@@ -38,7 +38,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +     */
 +    runtimeOnly("org.apache.logging.log4j:log4j-core:2.14.1")
 +    // Paper end
-     implementation("org.apache.logging.log4j:log4j-iostreams:2.17.1") // Paper
+     implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
      implementation("org.ow2.asm:asm:9.3")
      implementation("org.ow2.asm:asm-commons:9.3") // Paper - ASM event executor generation
 diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
@@ -115,15 +115,15 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/server/MinecraftServer.java
 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -0,0 +0,0 @@ import org.slf4j.Logger;
+@@ -0,0 +0,0 @@ import com.mojang.datafixers.util.Pair;
  import com.mojang.serialization.DynamicOps;
  import com.mojang.serialization.Lifecycle;
  import java.util.Random;
 -import jline.console.ConsoleReader;
 +// import jline.console.ConsoleReader; // Paper
  import joptsimple.OptionSet;
- import net.minecraft.server.bossevents.CustomBossEvents;
- import net.minecraft.server.dedicated.DedicatedServer;
+ import net.minecraft.core.HolderLookup;
+ import net.minecraft.resources.RegistryOps;
 @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
      public OptionSet options;
      public org.bukkit.command.ConsoleCommandSender console;
@@ -134,8 +134,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      public java.util.Queue<Runnable> processQueue = new java.util.concurrent.ConcurrentLinkedQueue<Runnable>();
      public int autosavePeriod;
 @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
-         this.datapackconfiguration = datapackconfiguration;
-         this.registryreadops = registryreadops;
+         this.options = options;
+         this.worldLoader = worldLoader;
          this.vanillaCommandDispatcher = worldstem.dataPackResources().commands; // CraftBukkit
 +        // Paper start - Handled by TerminalConsoleAppender
          // Try to see if we're actually running in a terminal, disable jline if not
@@ -227,7 +227,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
 @@ -0,0 +0,0 @@ public abstract class PlayerList {
  
-     public PlayerList(MinecraftServer server, RegistryAccess.Frozen registryManager, PlayerDataStorage saveHandler, int maxPlayers) {
+     public PlayerList(MinecraftServer server, LayeredRegistryAccess<RegistryLayer> registryManager, PlayerDataStorage saveHandler, int maxPlayers) {
          this.cserver = server.server = new CraftServer((DedicatedServer) server, this);
 -        server.console = org.bukkit.craftbukkit.command.ColouredConsoleSender.getInstance();
 -        server.reader.addCompleter(new org.bukkit.craftbukkit.command.ConsoleCommandCompleter(server.server));
diff --git a/patches/unapplied/server/Use-a-Shared-Random-for-Entities.patch b/patches/server/Use-a-Shared-Random-for-Entities.patch
similarity index 100%
rename from patches/unapplied/server/Use-a-Shared-Random-for-Entities.patch
rename to patches/server/Use-a-Shared-Random-for-Entities.patch
diff --git a/patches/unapplied/server/Vanished-players-don-t-have-rights.patch b/patches/server/Vanished-players-don-t-have-rights.patch
similarity index 88%
rename from patches/unapplied/server/Vanished-players-don-t-have-rights.patch
rename to patches/server/Vanished-players-don-t-have-rights.patch
index e183611916..d34b95c8c0 100644
--- a/patches/unapplied/server/Vanished-players-don-t-have-rights.patch
+++ b/patches/server/Vanished-players-don-t-have-rights.patch
@@ -41,27 +41,16 @@ diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/
 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/net/minecraft/world/level/Level.java
 +++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -0,0 +0,0 @@ import net.minecraft.world.level.saveddata.maps.MapItemSavedData;
- import net.minecraft.world.level.storage.LevelData;
- import net.minecraft.world.level.storage.WritableLevelData;
- import net.minecraft.world.phys.AABB;
-+import net.minecraft.world.phys.shapes.BooleanOp;
-+import net.minecraft.world.phys.shapes.CollisionContext;
-+import net.minecraft.world.phys.shapes.Shapes;
-+import net.minecraft.world.phys.shapes.VoxelShape;
- import net.minecraft.world.scores.Scoreboard;
- 
- // CraftBukkit start
 @@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
          this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime);
      }
  
 +    // Paper start
 +    // ret true if no collision
-+    public final boolean checkEntityCollision(BlockState data, Entity source, CollisionContext voxelshapedcollision,
++    public final boolean checkEntityCollision(BlockState data, Entity source, net.minecraft.world.phys.shapes.CollisionContext voxelshapedcollision,
 +                                              BlockPos position, boolean checkCanSee) {
 +        // Copied from IWorldReader#a(IBlockData, BlockPosition, VoxelShapeCollision) & EntityAccess#a(Entity, VoxelShape)
-+        VoxelShape voxelshape = data.getCollisionShape(this, position, voxelshapedcollision);
++        net.minecraft.world.phys.shapes.VoxelShape voxelshape = data.getCollisionShape(this, position, voxelshapedcollision);
 +        if (voxelshape.isEmpty()) {
 +            return true;
 +        }
@@ -87,7 +76,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +                continue;
 +            }
 +
-+            if (Shapes.joinIsNotEmpty(voxelshape, Shapes.create(entity.getBoundingBox()), BooleanOp.AND)) {
++            if (net.minecraft.world.phys.shapes.Shapes.joinIsNotEmpty(voxelshape, net.minecraft.world.phys.shapes.Shapes.create(entity.getBoundingBox()), net.minecraft.world.phys.shapes.BooleanOp.AND)) {
 +                return false;
 +            }
 +        }
diff --git a/patches/unapplied/server/Vex-get-setSummoner-API.patch b/patches/server/Vex-get-setSummoner-API.patch
similarity index 100%
rename from patches/unapplied/server/Vex-get-setSummoner-API.patch
rename to patches/server/Vex-get-setSummoner-API.patch
diff --git a/patches/unapplied/server/WitchConsumePotionEvent.patch b/patches/server/WitchConsumePotionEvent.patch
similarity index 100%
rename from patches/unapplied/server/WitchConsumePotionEvent.patch
rename to patches/server/WitchConsumePotionEvent.patch
diff --git a/patches/unapplied/server/WitchReadyPotionEvent.patch b/patches/server/WitchReadyPotionEvent.patch
similarity index 100%
rename from patches/unapplied/server/WitchReadyPotionEvent.patch
rename to patches/server/WitchReadyPotionEvent.patch
diff --git a/patches/unapplied/server/WitchThrowPotionEvent.patch b/patches/server/WitchThrowPotionEvent.patch
similarity index 100%
rename from patches/unapplied/server/WitchThrowPotionEvent.patch
rename to patches/server/WitchThrowPotionEvent.patch
diff --git a/patches/unapplied/server/add-more-information-to-Entity.toString.patch b/patches/server/add-more-information-to-Entity.toString.patch
similarity index 100%
rename from patches/unapplied/server/add-more-information-to-Entity.toString.patch
rename to patches/server/add-more-information-to-Entity.toString.patch
diff --git a/patches/unapplied/server/getPlayerUniqueId-API.patch b/patches/server/getPlayerUniqueId-API.patch
similarity index 100%
rename from patches/unapplied/server/getPlayerUniqueId-API.patch
rename to patches/server/getPlayerUniqueId-API.patch
diff --git a/patches/unapplied/server/handle-NaN-health-absorb-values-and-repair-bad-data.patch b/patches/server/handle-NaN-health-absorb-values-and-repair-bad-data.patch
similarity index 100%
rename from patches/unapplied/server/handle-NaN-health-absorb-values-and-repair-bad-data.patch
rename to patches/server/handle-NaN-health-absorb-values-and-repair-bad-data.patch
diff --git a/patches/unapplied/server/handle-ServerboundKeepAlivePacket-async.patch b/patches/server/handle-ServerboundKeepAlivePacket-async.patch
similarity index 100%
rename from patches/unapplied/server/handle-ServerboundKeepAlivePacket-async.patch
rename to patches/server/handle-ServerboundKeepAlivePacket-async.patch
diff --git a/patches/unapplied/server/provide-a-configurable-option-to-disable-creeper-lin.patch b/patches/server/provide-a-configurable-option-to-disable-creeper-lin.patch
similarity index 100%
rename from patches/unapplied/server/provide-a-configurable-option-to-disable-creeper-lin.patch
rename to patches/server/provide-a-configurable-option-to-disable-creeper-lin.patch
diff --git a/patches/unapplied/server/remove-null-possibility-for-getServer-singleton.patch b/patches/server/remove-null-possibility-for-getServer-singleton.patch
similarity index 82%
rename from patches/unapplied/server/remove-null-possibility-for-getServer-singleton.patch
rename to patches/server/remove-null-possibility-for-getServer-singleton.patch
index 50119dd9be..52159675ba 100644
--- a/patches/unapplied/server/remove-null-possibility-for-getServer-singleton.patch
+++ b/patches/server/remove-null-possibility-for-getServer-singleton.patch
@@ -19,7 +19,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      private static final float AVERAGE_TICK_TIME_SMOOTHING = 0.8F;
 @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
  
-     public MinecraftServer(OptionSet options, DataPackConfig datapackconfiguration, DynamicOps<Tag> registryreadops, Thread thread, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PackRepository resourcepackrepository, WorldStem worldstem, Proxy proxy, DataFixer datafixer, Services services, ChunkProgressListenerFactory worldloadlistenerfactory) {
+     public MinecraftServer(OptionSet options, WorldLoader.DataLoadContext worldLoader, Thread thread, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PackRepository resourcepackrepository, WorldStem worldstem, Proxy proxy, DataFixer datafixer, Services services, ChunkProgressListenerFactory worldloadlistenerfactory) {
          super("Server");
 +        SERVER = this; // Paper - better singleton
          this.metricsRecorder = InactiveMetricsRecorder.INSTANCE;
diff --git a/patches/unapplied/server/revert-serverside-behavior-of-keepalives.patch b/patches/server/revert-serverside-behavior-of-keepalives.patch
similarity index 96%
rename from patches/unapplied/server/revert-serverside-behavior-of-keepalives.patch
rename to patches/server/revert-serverside-behavior-of-keepalives.patch
index 002b5fd80a..e881934b0b 100644
--- a/patches/unapplied/server/revert-serverside-behavior-of-keepalives.patch
+++ b/patches/server/revert-serverside-behavior-of-keepalives.patch
@@ -30,8 +30,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
      private long keepAliveChallenge;
      // CraftBukkit start - multithreaded fields
 @@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
-     private final SignedMessageChain.Decoder signedMessageDecoder;
-     private final LastSeenMessagesValidator lastSeenMessagesValidator;
+     private final LastSeenMessagesValidator lastSeenMessages;
+     private final MessageSignatureCache messageSignatureCache;
      private final FutureChain chatMessageChain;
 +    private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit
  
diff --git a/patches/unapplied/server/use-CB-BlockState-implementations-for-captured-block.patch b/patches/server/use-CB-BlockState-implementations-for-captured-block.patch
similarity index 100%
rename from patches/unapplied/server/use-CB-BlockState-implementations-for-captured-block.patch
rename to patches/server/use-CB-BlockState-implementations-for-captured-block.patch