From e88856dd75de742fa10099af4fe06a07500b34fd Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Fri, 22 Sep 2023 13:13:57 -0700 Subject: [PATCH] Chunk system patch --- .../0018-Rewrite-chunk-system.patch} | 836 +++++++++++------- ...option-to-load-extra-plugin-jars-no.patch} | 2 +- ...ctus-bamboo-and-reed-growth-heights.patch} | 0 ...igurable-baby-zombie-movement-speed.patch} | 0 ...22-Configurable-fishing-time-ranges.patch} | 0 ...-mobs-to-jump-and-take-water-damage.patch} | 0 ...despawn-distances-for-living-entiti.patch} | 0 ...-Allow-for-toggling-of-spawn-chunks.patch} | 2 +- ...k-and-tnt-entities-at-the-specified.patch} | 0 ...ent-crashes-server-lists-and-Mojang.patch} | 16 +- ...0028-Implement-Paper-VersionChecker.patch} | 0 ...-version-history-to-version-command.patch} | 2 +- ...=> 0030-Player-affects-spawning-API.patch} | 10 +- ...31-Further-improve-server-tick-loop.patch} | 20 +- ...32-Only-refresh-abilities-if-needed.patch} | 4 +- ...API.patch => 0033-Entity-Origin-API.patch} | 10 +- ...vent-tile-entity-and-entity-crashes.patch} | 8 +- ...figurable-top-of-nether-void-damage.patch} | 4 +- ...-before-converting-and-renaming-pla.patch} | 0 ... => 0037-Always-tick-falling-blocks.patch} | 2 +- ...ch => 0038-Configurable-end-credits.patch} | 4 +- ...explosions-processing-dead-entities.patch} | 0 ...s.patch => 0040-Optimize-explosions.patch} | 6 +- ...=> 0041-Disable-explosion-knockback.patch} | 0 ...under.patch => 0042-Disable-thunder.patch} | 4 +- ....patch => 0043-Disable-ice-and-snow.patch} | 4 +- ...-Configurable-mob-spawner-tick-rate.patch} | 0 ...5-Implement-PlayerLocaleChangeEvent.patch} | 10 +- ...patch => 0046-Add-BeaconEffectEvent.patch} | 0 ...igurable-container-update-tick-rate.patch} | 4 +- ...0048-Use-UserCache-for-player-heads.patch} | 0 ...> 0049-Disable-spigot-tick-limiters.patch} | 4 +- ...=> 0050-Add-PlayerInitialSpawnEvent.patch} | 2 +- ...rable-Disabling-Cat-Chest-Detection.patch} | 0 ...52-Improve-Player-chat-API-handling.patch} | 12 +- ...hunks-are-slime-spawn-chunks-toggle.patch} | 4 +- ...ch => 0054-Expose-server-CommandMap.patch} | 2 +- ...-informative-in-maxHealth-exception.patch} | 0 ...0056-Player-Tab-List-and-Title-APIs.patch} | 4 +- ...d-configurable-portal-search-radius.patch} | 4 +- ...patch => 0058-Add-velocity-warnings.patch} | 8 +- ...le-inter-world-teleportation-safety.patch} | 4 +- ... 0060-Add-exception-reporting-event.patch} | 14 +- ...don-t-need-to-when-cerealising-text.patch} | 0 ...reboards-for-non-players-by-default.patch} | 4 +- ...orking-with-arrows-stuck-in-living-.patch} | 0 ....patch => 0064-Chunk-Save-Reattempt.patch} | 22 +- ... => 0065-Complete-resource-pack-API.patch} | 4 +- ...ding-permissions.yml-before-plugins.patch} | 2 +- ...low-Reloading-of-Custom-Permissions.patch} | 2 +- ...h => 0068-Remove-Metadata-on-reload.patch} | 2 +- ...69-Handle-Item-Meta-Inconsistencies.patch} | 0 ...rable-Non-Player-Arrow-Despawn-Rate.patch} | 0 ...atch => 0071-Add-World-Util-Methods.patch} | 4 +- ...-Custom-replacement-for-eaten-items.patch} | 0 ...ing-for-EntityLiving-hasLineOfSight.patch} | 2 +- ...h-absorb-values-and-repair-bad-data.patch} | 4 +- ...75-Use-a-Shared-Random-for-Entities.patch} | 4 +- ...e-spawn-chances-for-skeleton-horses.patch} | 4 +- ...dBounds-and-getBlockState-for-inlin.patch} | 4 +- ...kPhysicsEvent-if-a-plugin-has-a-lis.patch} | 10 +- ...ntity-AddTo-RemoveFrom-World-Events.patch} | 6 +- ...0-Configurable-Chunk-Inhabited-Time.patch} | 2 +- ...t.patch => 0081-EntityPathfindEvent.patch} | 0 ...gionFileCache-and-make-configurable.patch} | 10 +- ...-Do-not-load-chunks-for-Pathfinding.patch} | 0 ...084-Add-PlayerUseUnknownEntityEvent.patch} | 4 +- ...Configurable-Grass-Spread-Tick-Rate.patch} | 0 ...-BlockPlaceEvent-triggering-physics.patch} | 4 +- ...its.patch => 0087-Optimize-DataBits.patch} | 0 ...illa-per-world-scoreboard-coloring-.patch} | 0 ... 0089-Configurable-Player-Collision.patch} | 4 +- ...nt-to-allow-plugins-to-handle-clien.patch} | 0 ...> 0091-Configurable-RCON-IP-address.patch} | 0 ...tyRegainHealthEvent-isFastRegen-API.patch} | 0 ...to-configure-frosted_ice-properties.patch} | 0 ...possibility-for-getServer-singleton.patch} | 4 +- ...tem-frames-performance-and-bug-fixe.patch} | 4 +- ...API-Replenishable-Lootables-Feature.patch} | 2 +- ...-scoreboard-teams-to-scoreboard.dat.patch} | 0 ...em-property-for-disabling-watchdoge.patch} | 4 +- ... 0099-Async-GameProfileCache-saving.patch} | 8 +- ...-Optional-TNT-doesn-t-move-in-water.patch} | 0 ...-redstone-torch-rapid-clock-removal.patch} | 2 +- ...h => 0102-Add-server-name-parameter.patch} | 0 ...sounds-to-same-world-if-limiting-ra.patch} | 0 ...locking-on-Network-Manager-creation.patch} | 0 ...-profiles-that-have-no-UUID-and-no-.patch} | 0 ...etting-for-proxy-online-mode-status.patch} | 2 +- ...timise-BlockState-s-hashCode-equals.patch} | 0 ...nfigurable-packet-in-spam-threshold.patch} | 4 +- ...9-Configurable-flying-kick-messages.patch} | 2 +- ...nt.patch => 0110-Add-EntityZapEvent.patch} | 0 ...entity-nbt-data-from-falling-blocks.patch} | 0 ...12-Cache-user-authenticator-threads.patch} | 0 ...-Allow-Reloading-of-Command-Aliases.patch} | 2 +- ...-Add-source-to-PlayerExpChangeEvent.patch} | 0 ... => 0115-Add-ProjectileCollideEvent.patch} | 0 ...ent-Pathfinding-out-of-World-Border.patch} | 0 ...mize-World.isLoaded-BlockPosition-Z.patch} | 2 +- ...Bound-Treasure-Maps-to-World-Border.patch} | 2 +- ...igurable-Cartographer-Treasure-Maps.patch} | 0 ...o-control-if-armour-stands-can-move.patch} | 0 ...=> 0121-String-based-Action-Bar-API.patch} | 4 +- ...2-Properly-fix-item-duplication-bug.patch} | 4 +- ...-API-s.patch => 0123-Firework-API-s.patch} | 0 ... 0124-PlayerTeleportEndGatewayEvent.patch} | 0 ...ovide-E-TE-Chunk-count-stat-methods.patch} | 4 +- ...h => 0126-Enforce-Sync-Player-Saves.patch} | 2 +- ...I-for-Reason-Source-Triggering-play.patch} | 0 ...patch => 0128-Cap-Entity-Collisions.patch} | 2 +- ...-CraftScheduler-Async-Task-Debugger.patch} | 0 ...> 0130-Do-not-let-armorstands-drown.patch} | 0 ...e-async-calls-to-restart-the-server.patch} | 8 +- ...e-parrots-stay-on-shoulders-despite.patch} | 4 +- ...-option-to-prevent-player-names-fro.patch} | 2 +- ...leAppender-for-console-improvements.patch} | 12 +- ...rable-option-to-disable-creeper-lin.patch} | 0 ....patch => 0136-Item-canEntityPickup.patch} | 0 ...layerPickupItemEvent-setFlyAtPlayer.patch} | 0 ...> 0138-PlayerAttemptPickupItemEvent.patch} | 0 ...profile-lookups-to-worldgen-threads.patch} | 0 ...tch => 0140-Add-UnknownCommandEvent.patch} | 2 +- ...tch => 0141-Basic-PlayerProfile-API.patch} | 12 +- ... 0142-Shoulder-Entities-Release-API.patch} | 0 ...patch => 0143-Profile-Lookup-Events.patch} | 0 ...layer-logins-during-server-shutdown.patch} | 0 ...patch => 0145-Entity-fromMobSpawner.patch} | 6 +- ...6-Improve-the-Saddle-API-for-Horses.patch} | 0 ...plement-ensureServerConversions-API.patch} | 0 ...> 0148-Implement-getI18NDisplayName.patch} | 0 ...=> 0149-ProfileWhitelistVerifyEvent.patch} | 2 +- ...ch => 0150-Fix-this-stupid-bullshit.patch} | 0 ...atch => 0151-LivingEntity-setKiller.patch} | 0 ...wns-should-honor-nametags-and-leash.patch} | 0 ...mer-when-spawner-event-is-cancelled.patch} | 0 ...a-custom-authentication-servers-dow.patch} | 0 ...-prefixes-using-Log4J-configuration.patch} | 0 ...-Log4J-Configuration-Plugin-Loggers.patch} | 0 ...t.patch => 0157-Add-PlayerJumpEvent.patch} | 4 +- ...le-ServerboundKeepAlivePacket-async.patch} | 0 ...t-protocol-version-and-virtual-host.patch} | 14 +- ...t-serverside-behavior-of-keepalives.patch} | 0 ...Effects-only-to-players-who-can-see.patch} | 0 ... => 0162-Add-PlayerArmorChangeEvent.patch} | 0 ...om-being-processed-when-the-player-.patch} | 0 ...4-Fix-MC-117075-TE-Unload-Lag-Spike.patch} | 8 +- ...-implementations-for-captured-block.patch} | 4 +- ...get-a-BlockState-without-a-snapshot.patch} | 0 ...patch => 0167-AsyncTabCompleteEvent.patch} | 10 +- ...=> 0168-PlayerPickupExperienceEvent.patch} | 0 ...-Ability-to-apply-mending-to-XP-API.patch} | 4 +- ...-PlayerNaturallySpawnCreaturesEvent.patch} | 16 +- ...Add-setPlayerProfile-API-for-Skulls.patch} | 0 ...patch => 0172-PreCreatureSpawnEvent.patch} | 0 ...> 0173-Fill-Profile-Property-Events.patch} | 0 ...layerAdvancementCriterionGrantEvent.patch} | 0 ...ch => 0175-Add-ArmorStand-Item-Meta.patch} | 0 ...Extend-Player-Interact-cancellation.patch} | 0 ... 0177-Tameable-getOwnerUniqueId-API.patch} | 0 ...-crits-helps-mitigate-hacked-client.patch} | 0 ...e-Explicit-Network-Manager-Flushing.patch} | 6 +- ...t-extended-PaperServerListPingEvent.patch} | 4 +- ...-PlayerProfile-in-AsyncPreLoginEven.patch} | 0 ...=> 0182-Player.setPlayerProfile-API.patch} | 18 +- ...patch => 0183-getPlayerUniqueId-API.patch} | 2 +- ... 0184-Improved-Async-Task-Scheduler.patch} | 0 ...e-legacy-ping-handler-more-reliable.patch} | 0 ...erverListPingEvent-for-legacy-pings.patch} | 0 ...7-Flag-to-disable-the-channel-limit.patch} | 4 +- ...-Add-openSign-method-to-HumanEntity.patch} | 0 ...rable-sprint-interruption-on-attack.patch} | 0 ...t.patch => 0190-EndermanEscapeEvent.patch} | 0 ...h => 0191-Enderman.teleportRandomly.patch} | 0 ...192-Block-Enderpearl-Travel-Exploit.patch} | 4 +- ...d.spawnParticle-API-and-add-Builder.patch} | 8 +- ...allowed-colored-signs-to-be-created.patch} | 0 ...ted-Ice-from-loading-holding-chunks.patch} | 0 ...h => 0196-EndermanAttackPlayerEvent.patch} | 0 ...tch => 0197-WitchConsumePotionEvent.patch} | 0 ...patch => 0198-WitchThrowPotionEvent.patch} | 0 ...tem-entities-with-World.spawnEntity.patch} | 0 ...patch => 0200-WitchReadyPotionEvent.patch} | 0 ...201-ItemStack-getMaxItemUseDuration.patch} | 0 ...ement-EntityTeleportEndGatewayEvent.patch} | 0 ...d-flag-on-cancel-of-Explosion-Event.patch} | 0 ...ch => 0204-Fix-CraftEntity-hashCode.patch} | 0 ...e-Alternative-LootPool-Luck-Formula.patch} | 0 ...ls-when-failing-to-save-player-data.patch} | 0 ...-shield-blocking-delay-configurable.patch} | 0 ...=> 0208-Improve-EntityShootBowEvent.patch} | 0 ...patch => 0209-PlayerReadyArrowEvent.patch} | 0 ...nockbackByEntityEvent-and-EntityPus.patch} | 4 +- ...patch => 0211-Expand-Explosions-API.patch} | 4 +- ...vingEntity-Hand-Raised-Item-Use-API.patch} | 0 ...-API.patch => 0213-RangedEntity-API.patch} | 0 ...o-disable-ender-dragon-legacy-check.patch} | 0 ...-Implement-World.getEntity-UUID-API.patch} | 4 +- ...0216-InventoryCloseEvent-Reason-API.patch} | 26 +- ...tch => 0217-Vex-get-setSummoner-API.patch} | 0 ...ventory-when-cancelling-PlayerInter.patch} | 4 +- ...-to-keep-logging-IO-off-main-thread.patch} | 0 ...more-information-to-Entity.toString.patch} | 4 +- ...ts.patch => 0221-EnderDragon-Events.patch} | 0 ...atch => 0222-PlayerElytraBoostEvent.patch} | 0 ...=> 0223-PlayerLaunchProjectileEvent.patch} | 0 ...0224-Improve-BlockPosition-inlining.patch} | 0 ...-armor-stands-from-doing-entity-loo.patch} | 4 +- ...-Vanished-players-don-t-have-rights.patch} | 2 +- ...llow-disabling-armour-stand-ticking.patch} | 0 ...tch => 0228-SkeletonHorse-Additions.patch} | 4 +- ...n-t-call-getItemMeta-on-hasItemMeta.patch} | 0 ...0-Implement-Expanded-ArmorStand-API.patch} | 0 ...vent.patch => 0231-AnvilDamageEvent.patch} | 0 ...ent.patch => 0232-Add-TNTPrimeEvent.patch} | 0 ...d-make-tab-spam-limits-configurable.patch} | 2 +- ...s.patch => 0234-Fix-NBT-type-issues.patch} | 0 ...emove-unnecessary-itemmeta-handling.patch} | 0 ...es-option-to-debug-dupe-uuid-issues.patch} | 14 +- ...d-Early-Warning-Feature-to-WatchDog.patch} | 19 +- ...8-Use-ConcurrentHashMap-in-JsonList.patch} | 2 +- ...9-Use-a-Queue-for-Queueing-Commands.patch} | 10 +- ...le-Entities-from-a-chunk-without-sn.patch} | 6 +- ...timize-BlockPosition-helper-methods.patch} | 0 ...efault-mob-spawn-range-and-water-an.patch} | 0 ...tch => 0243-Slime-Pathfinder-Events.patch} | 0 ...e-speed-for-water-flowing-over-lava.patch} | 0 ...45-Optimize-CraftBlockData-Creation.patch} | 0 ...tch => 0246-Optimize-MappedRegistry.patch} | 0 ...ch => 0247-Add-PhantomPreSpawnEvent.patch} | 0 ....patch => 0248-Add-More-Creeper-API.patch} | 0 ...=> 0249-Inventory-removeItemAnySlot.patch} | 0 ...oadChunk-int-int-false-load-unconve.patch} | 4 +- ...ray-tracing-methods-to-LivingEntity.patch} | 0 ...-attack-cooldown-methods-for-Player.patch} | 4 +- ....patch => 0253-Improve-death-events.patch} | 10 +- ...w-chests-to-be-placed-with-NBT-data.patch} | 0 ...I.patch => 0255-Mob-Pathfinding-API.patch} | 0 ...for-CanPlaceOn-and-CanDestroy-NBT-v.patch} | 0 ...nt-Mob-AI-Rules-from-Loading-Chunks.patch} | 0 ...ning-from-loading-generating-chunks.patch} | 0 ...t-furnace-cook-speed-multiplier-API.patch} | 0 ...=> 0260-Honor-EntityAgeable.ageLock.patch} | 0 ...le-connection-throttle-kick-message.patch} | 0 ...nt-chunk-loading-from-Fluid-Flowing.patch} | 0 ...> 0263-Hook-into-CB-plugin-rewrites.patch} | 0 ....patch => 0264-PreSpawnerSpawnEvent.patch} | 0 ...65-Add-LivingEntity-getTargetEntity.patch} | 0 ...I.patch => 0266-Add-sun-related-API.patch} | 4 +- ...rseException-in-Entity-and-TE-names.patch} | 4 +- ...Turtle-API.patch => 0268-Turtle-API.patch} | 0 ...ator-target-events-and-improve-impl.patch} | 6 +- ...her-worlds-for-shooter-of-projectil.patch} | 0 ...PI.patch => 0271-Add-more-Witch-API.patch} | 0 ...wned-for-Villager-Aggression-Config.patch} | 0 ...vent-players-from-moving-into-unloa.patch} | 6 +- ...4-Reset-players-airTicks-on-respawn.patch} | 4 +- ...after-profile-lookups-if-not-needed.patch} | 0 ...r-Thread-Pool-and-Thread-Priorities.patch} | 2 +- ...=> 0277-Optimize-World-Time-Updates.patch} | 4 +- ...tore-custom-InventoryHolder-support.patch} | 0 ...=> 0279-Use-Vanilla-Minecart-Speeds.patch} | 0 ...0280-Fix-SpongeAbsortEvent-handling.patch} | 0 ...-allow-digging-into-unloaded-chunks.patch} | 4 +- ...ult-permission-message-configurable.patch} | 6 +- ...revent-rayTrace-from-loading-chunks.patch} | 0 ...-Large-Packets-disconnecting-client.patch} | 4 +- ...ntity-dismount-during-teleportation.patch} | 10 +- ...I.patch => 0286-Add-more-Zombie-API.patch} | 0 ...mits.patch => 0287-Book-Size-Limits.patch} | 4 +- ...0288-Add-PlayerConnectionCloseEvent.patch} | 4 +- ...revent-Enderman-from-loading-chunks.patch} | 0 ...replace-OfflinePlayer-getLastPlayed.patch} | 12 +- ...ehicle-tracking-issue-on-disconnect.patch} | 4 +- ...remove-from-being-called-on-Players.patch} | 4 +- ...ent.patch => 0293-BlockDestroyEvent.patch} | 4 +- ... => 0294-Async-command-map-building.patch} | 4 +- ...0295-Implement-Brigadier-Mojang-API.patch} | 6 +- ...ove-exact-choice-recipe-ingredients.patch} | 0 ... 0297-Limit-Client-Sign-length-more.patch} | 4 +- ...e-Oversized-Tile-Entities-in-chunks.patch} | 0 ...ggleEvent-when-whitelist-is-toggled.patch} | 2 +- ...=> 0300-Entity-getEntitySpawnReason.patch} | 12 +- ...tch => 0301-Fire-event-on-GS4-query.patch} | 0 ...02-Implement-PlayerPostRespawnEvent.patch} | 2 +- ...for-pickupDelay-breaks-picking-up-i.patch} | 0 ...ts.patch => 0304-Server-Tick-Events.patch} | 6 +- ...305-PlayerDeathEvent-getItemsToKeep.patch} | 6 +- ...Optimize-Captured-TileEntity-Lookup.patch} | 6 +- ...API.patch => 0307-Add-Heightmap-API.patch} | 2 +- ...> 0308-Mob-Spawner-API-Enhancements.patch} | 0 ...-to-changed-postToMainThread-method.patch} | 0 ...-item-frames-are-modified-MC-123450.patch} | 0 ...0311-Implement-CraftBlockSoundGroup.patch} | 0 ...e-Keep-Spawn-Loaded-range-per-world.patch} | 10 +- ...13-Allow-Saving-of-Oversized-Chunks.patch} | 27 +- ...14-Expose-the-internal-current-tick.patch} | 2 +- ...15-Fix-World-isChunkGenerated-calls.patch} | 28 +- ...te-location-if-we-failed-to-read-it.patch} | 0 ...l-Spawned-mobs-towards-natural-spaw.patch} | 0 ...urable-projectile-relative-velocity.patch} | 0 ...h => 0319-offset-item-frame-ticking.patch} | 0 ...-158900.patch => 0320-Fix-MC-158900.patch} | 2 +- ...event-consuming-the-wrong-itemstack.patch} | 0 ...2-Dont-send-unnecessary-sign-update.patch} | 0 ...-option-to-disable-pillager-patrols.patch} | 0 ...324-Flat-bedrock-generator-settings.patch} | 2 +- ...k-loads-when-villagers-try-to-find-.patch} | 0 ...656-Fix-Follow-Range-Initial-Target.patch} | 0 ... 0327-Duplicate-UUID-Resolve-Option.patch} | 18 +- ...ayerDeathEvent-shouldDropExperience.patch} | 4 +- ...ading-chunks-checking-hive-position.patch} | 0 ...hunks-from-Hoppers-and-other-things.patch} | 0 ...timise-EntityGetter-getPlayerByUUID.patch} | 6 +- ...332-Fix-items-not-falling-correctly.patch} | 4 +- ...ize-call-to-getFluid-for-explosions.patch} | 0 ...-in-stack-not-having-effects-when-d.patch} | 0 ...=> 0335-Entity-Activation-Range-2.0.patch} | 42 +- ...ement-alternative-item-despawn-rate.patch} | 0 ...patch => 0337-Lag-compensate-eating.patch} | 0 ...=> 0338-Tracking-Range-Improvements.patch} | 4 +- ...-items-vanishing-through-end-portal.patch} | 4 +- ...ment-optional-per-player-mob-spawns.patch} | 26 +- ...et-gravity-in-void.-Fixes-MC-167279.patch} | 0 ...42-Improve-Block-breakNaturally-API.patch} | 0 ...-getChunkAt-calls-for-loaded-chunks.patch} | 8 +- ...0344-Add-debug-for-sync-chunk-loads.patch} | 32 +- ... => 0345-Improve-java-version-check.patch} | 0 ...tch => 0346-Add-ThrownEggHatchEvent.patch} | 0 ...p-API.patch => 0347-Entity-Jump-API.patch} | 0 ...-to-nerf-pigmen-from-nether-portals.patch} | 6 +- ... => 0349-Make-the-GUI-graph-fancier.patch} | 0 ...50-add-hand-to-BlockMultiPlaceEvent.patch} | 0 ...ipwire-hook-placement-before-update.patch} | 0 ...o-allow-iron-golems-to-spawn-in-air.patch} | 0 ...chance-of-villager-zombie-infection.patch} | 0 ...tch => 0354-Optimise-Chunk-getFluid.patch} | 2 +- ...rbose-world-setting-to-false-by-def.patch} | 0 ...Add-tick-times-API-and-mspt-command.patch} | 8 +- ...57-Expose-MinecraftServer-isRunning.patch} | 2 +- ...dd-Raw-Byte-ItemStack-Serialization.patch} | 0 ...pawn-settings-and-per-player-option.patch} | 2 +- ...nections-shouldn-t-hold-up-shutdown.patch} | 2 +- ...ow-bees-to-load-chunks-for-beehives.patch} | 0 ...PlayerChunkMap-adds-crashing-server.patch} | 10 +- ...tch => 0363-Don-t-tick-dead-players.patch} | 4 +- ...-Player-s-shouldn-t-be-able-to-move.patch} | 0 ...timize-Collision-to-not-load-chunks.patch} | 4 +- ...ove-existing-players-to-world-spawn.patch} | 8 +- ...alSelector-Goal.Flag-Set-operations.patch} | 0 ...h => 0368-Improved-Watchdog-Support.patch} | 56 +- ....patch => 0369-Optimize-Pathfinding.patch} | 0 ...0-Reduce-Either-Optional-allocation.patch} | 0 ...-memory-footprint-of-NBTTagCompound.patch} | 0 ...ent-opening-inventories-when-frozen.patch} | 6 +- ...entity-collision-code-if-not-needed.patch} | 0 ...Implement-Player-Client-Options-API.patch} | 8 +- ...ayer-is-attempted-to-be-removed-fro.patch} | 6 +- ...-Broken-behavior-of-PlayerJoinEvent.patch} | 8 +- ...awn-point-if-spawn-in-unloaded-worl.patch} | 4 +- ...layerAttackEntityCooldownResetEvent.patch} | 0 ...-fire-BlockFade-on-worldgen-threads.patch} | 0 ...tom-creative-and-insomniac-controls.patch} | 0 ...-duplication-issues-and-teleport-is.patch} | 12 +- ...patch => 0382-Villager-Restocks-API.patch} | 0 ...ickItem-Packet-and-kick-for-invalid.patch} | 4 +- ...n.patch => 0384-Expose-game-version.patch} | 2 +- ...> 0385-Optimize-Voxel-Shape-Merging.patch} | 0 ...per-thread-native-byte-buffer-cache.patch} | 0 ....patch => 0387-misc-debugging-dumps.patch} | 10 +- ...8-Prevent-teleporting-dead-entities.patch} | 4 +- ...traces-in-log-messages-crash-report.patch} | 18 +- ...atch => 0390-Implement-Mob-Goal-API.patch} | 2 +- ...=> 0391-Add-villager-reputation-API.patch} | 0 ...maximum-exp-value-when-merging-orbs.patch} | 0 ...tch => 0393-ExperienceOrbMergeEvent.patch} | 0 ...-Fix-PotionEffect-ignores-icon-flag.patch} | 0 ...brigadier-child-sorting-performance.patch} | 0 ...API.patch => 0396-Potential-bed-API.patch} | 0 ...ait-for-Async-Tasks-during-shutdown.patch} | 6 +- ...er-respects-game-and-entity-rules-f.patch} | 0 ...nd-End-Portal-Frames-from-being-des.patch} | 2 +- ...> 0400-Ensure-safe-gateway-teleport.patch} | 0 ...-for-console-having-all-permissions.patch} | 0 ...x-villager-trading-demand-MC-163962.patch} | 0 ... => 0403-Maps-shouldn-t-load-chunks.patch} | 0 ...okup-for-Treasure-Maps-Fixes-lag-fr.patch} | 0 ...r-runTaskTimerAsynchronously-Plugin.patch} | 0 ...ton-physics-inconsistency-MC-188840.patch} | 0 ...uping.patch => 0407-Fix-sand-duping.patch} | 0 ...sing-chunks-due-to-integer-overflow.patch} | 0 ...desync-in-playerconnection-causing-.patch} | 4 +- ...older-method-without-block-snapshot.patch} | 0 ...API.patch => 0411-Improve-Arrow-API.patch} | 0 ...mplement-PlayerRecipeBookClickEvent.patch} | 4 +- ...-Hide-sync-chunk-writes-behind-flag.patch} | 0 ...4-Add-permission-for-command-blocks.patch} | 6 +- ...ure-Entity-AABB-s-are-never-invalid.patch} | 14 +- ...d-Difficulty-Remembering-Difficulty.patch} | 22 +- ...atch => 0417-Paper-dumpitem-command.patch} | 6 +- ...Legacy-Component-serialization-size.patch} | 0 ...Optimize-Bit-Operations-by-inlining.patch} | 0 ...Plugin-Tickets-to-API-Chunk-Methods.patch} | 12 +- ...incremental-chunk-and-player-saving.patch} | 22 +- ...422-Support-old-UUID-format-for-NBT.patch} | 0 ...vert-legacy-attributes-in-Item-Meta.patch} | 0 ...Remove-some-streams-from-structures.patch} | 0 ...rom-classes-related-villager-gossip.patch} | 0 ...0426-Support-components-in-ItemMeta.patch} | 0 ...e-fix-EntityTargetLivingEntityEvent.patch} | 0 ...patch => 0428-Add-entity-liquid-API.patch} | 0 ...date-itemstack-legacy-name-and-lore.patch} | 0 ...wn-player-in-correct-world-on-login.patch} | 2 +- ...atch => 0431-Add-PrepareResultEvent.patch} | 0 ...-for-portal-on-world-gen-entity-add.patch} | 0 ...x-arrows-never-despawning-MC-125757.patch} | 0 ...Vanilla-Command-permission-checking.patch} | 0 ...-5989.patch => 0435-Fix-SPIGOT-5989.patch} | 2 +- ...-Bukkit-world-container-is-not-used.patch} | 2 +- ...5885-Unable-to-disable-advancements.patch} | 2 +- ...taPlayer-leak-due-from-quitting-ear.patch} | 0 ...ix-some-rails-connecting-improperly.patch} | 0 ...stake-in-CB-NBT-int-deserialization.patch} | 0 ...support.patch => 0441-Brand-support.patch} | 4 +- ...PickupItemAnimation-to-LivingEntity.patch} | 0 ...h => 0443-Don-t-require-FACING-data.patch} | 0 ...eEvent-not-firing-for-all-use-cases.patch} | 6 +- ...PI.patch => 0445-Add-moon-phase-API.patch} | 0 ...headless-pistons-from-being-created.patch} | 0 ...ent.patch => 0447-Add-BellRingEvent.patch} | 0 ...dd-zombie-targets-turtle-egg-config.patch} | 0 ...patch => 0449-Buffer-joins-to-world.patch} | 6 +- ...-Eigencraft-redstone-implementation.patch} | 0 ...s-not-working-in-some-kick-messages.patch} | 0 ...reateEvent-needs-to-know-its-entity.patch} | 0 ...I.patch => 0453-Add-more-Evoker-API.patch} | 0 ...Add-methods-to-get-translation-keys.patch} | 0 ...te-HoverEvent-from-ItemStack-Entity.patch} | 0 ...ch => 0456-Cache-block-data-strings.patch} | 4 +- ...rtation-and-cancel-velocity-if-tele.patch} | 8 +- ...l-open-container-api-to-HumanEntity.patch} | 0 ...aFixerUpper-Rewrite-Rules-on-demand.patch} | 0 ...-capture-to-capture-all-items-added.patch} | 4 +- ...-Counter-to-allow-plugins-to-use-va.patch} | 4 +- ...track-plugin-scoreboards-by-default.patch} | 0 ...king.patch => 0463-Entity-isTicking.patch} | 4 +- ...non-whitelisted-player-when-white-l.patch} | 4 +- ...-Concurrency-issue-in-ShufflingList.patch} | 0 ...eset-Ender-Crystals-on-Dragon-Spawn.patch} | 0 ...-large-move-vectors-crashing-server.patch} | 6 +- ...atch => 0468-Optimise-getType-calls.patch} | 0 ....patch => 0469-Villager-resetOffers.patch} | 0 ...ce-order-when-capturing-blockstates.patch} | 2 +- ...lockpos-allocation-from-pathfinding.patch} | 0 ...em-locations-dropped-from-campfires.patch} | 0 ...tch => 0473-Player-elytra-boost-API.patch} | 4 +- ...74-Fixed-TileEntityBell-memory-leak.patch} | 0 ...ing-up-when-item-stack-is-empty-in-.patch} | 0 ...Add-getOfflinePlayerIfCached-String.patch} | 2 +- ...ch => 0477-Add-ignore-discounts-API.patch} | 0 ...Toggle-for-removing-existing-dragon.patch} | 0 ...x-client-lag-on-advancement-loading.patch} | 0 ...> 0480-Item-no-age-no-player-pickup.patch} | 0 ...er-Remove-Streams-Optimized-collect.patch} | 0 ...482-Beacon-API-custom-effect-ranges.patch} | 0 ...tch => 0483-Add-API-for-quit-reason.patch} | 12 +- ...ng-Trader-spawn-rate-config-options.patch} | 0 ...ch => 0485-Expose-world-spawn-angle.patch} | 2 +- ...patch => 0486-Add-Destroy-Speed-API.patch} | 0 ...-spawnParticle-x-y-z-precision-loss.patch} | 4 +- ...88-Add-LivingEntity-clearActiveItem.patch} | 0 ...=> 0489-Add-PlayerItemCooldownEvent.patch} | 0 ...rove-performance-of-the-end-generat.patch} | 0 ...PI.patch => 0491-More-lightning-API.patch} | 0 ...should-not-bypass-cramming-gamerule.patch} | 4 +- ...-missing-default-perms-for-commands.patch} | 0 ...h => 0494-Add-PlayerShearBlockEvent.patch} | 0 ...ng-zombie-villager-discount-exploit.patch} | 0 ....patch => 0496-Limit-recipe-packets.patch} | 4 +- ...-CraftSound-backwards-compatibility.patch} | 0 ...0497-Player-Chunk-Load-Unload-Events.patch | 34 - ...0498-Player-Chunk-Load-Unload-Events.patch | 34 + ...9-Optimize-Dynamic-get-Missing-Keys.patch} | 0 ...-Expose-LivingEntity-hurt-direction.patch} | 0 ...OBSTRUCTED-reason-to-BedEnterResult.patch} | 0 ...-invalid-ingredient-lists-in-Villag.patch} | 0 ...rTradeEvent-and-PlayerPurchaseEvent.patch} | 0 ...ch => 0504-Implement-TargetHitEvent.patch} | 0 ... 0505-MC-4-Fix-item-position-desync.patch} | 10 +- ...506-Additional-Block-Material-API-s.patch} | 0 ...tch => 0507-Fix-harming-potion-dupe.patch} | 0 ...get-Material-from-Boats-and-Minecar.patch} | 0 ....patch => 0509-Cache-burn-durations.patch} | 0 ...ob-spawner-spawn-egg-transformation.patch} | 0 ...ix-Not-a-string-Map-Conversion-spam.patch} | 0 ...ment-PlayerFlowerPotManipulateEvent.patch} | 0 ...ct-event-not-being-called-sometimes.patch} | 6 +- ...h => 0514-Zombie-API-breaking-doors.patch} | 0 ...515-Fix-nerfed-slime-when-splitting.patch} | 0 ...=> 0516-Add-EntityLoadCrossbowEvent.patch} | 0 ...0517-Added-WorldGameRuleChangeEvent.patch} | 6 +- ...-Added-ServerResourcesReloadedEvent.patch} | 6 +- ...d-settings-for-mobs-picking-up-loot.patch} | 0 ...mplemented-BlockFailedDispenseEvent.patch} | 0 ...-Added-PlayerLecternPageChangeEvent.patch} | 0 ...-Added-PlayerLoomPatternSelectEvent.patch} | 0 ...nfigurable-door-breaking-difficulty.patch} | 0 ...ty-commands-shall-not-be-dispatched.patch} | 0 ...OIs.patch => 0525-Remove-stale-POIs.patch} | 4 +- ...h => 0526-Fix-villager-boat-exploit.patch} | 2 +- ...I.patch => 0527-Add-sendOpLevel-API.patch} | 6 +- ...0528-TODO-Registry-Modification-API.patch} | 0 ...h => 0529-Add-StructuresLocateEvent.patch} | 2 +- ...-for-requiring-a-player-participant.patch} | 4 +- ...leHitEvent-call-when-fireballs-dead.patch} | 0 ...nent-with-empty-text-instead-of-thr.patch} | 0 ...533-Make-schedule-command-per-world.patch} | 0 ...534-Configurable-max-leash-distance.patch} | 0 ...535-Implement-BlockPreDispenseEvent.patch} | 0 ...ng-of-PlayerChangeBeaconEffectEvent.patch} | 0 ...e-for-always-placing-the-dragon-egg.patch} | 0 ...-PlayerStonecutterRecipeSelectEvent.patch} | 0 ...eash-variable-to-EntityUnleashEvent.patch} | 0 ...shield-blocking-on-dimension-change.patch} | 4 +- ...atch => 0541-add-DragonEggFormEvent.patch} | 0 ...Event.patch => 0542-EntityMoveEvent.patch} | 6 +- ...isable-pathfinding-updates-on-block.patch} | 6 +- ... 0544-Inline-shift-direction-fields.patch} | 0 ...-adding-items-to-BlockDropItemEvent.patch} | 0 ...inThreadExecutor-to-BukkitScheduler.patch} | 0 ...entity-allow-attribute-registration.patch} | 0 ...ix-dead-slime-setSize-invincibility.patch} | 0 ...pes-should-return-an-immutable-list.patch} | 0 ...atch => 0550-Expose-Tracked-Players.patch} | 0 ...1-Remove-streams-from-SensorNearest.patch} | 0 ...GUI.patch => 0552-Improve-ServerGUI.patch} | 0 ...553-fix-converting-txt-to-json-file.patch} | 4 +- ...atch => 0554-Add-worldborder-events.patch} | 0 ...=> 0555-added-PlayerNameEntityEvent.patch} | 0 ...grindstones-from-overstacking-items.patch} | 0 ...h => 0557-Add-recipe-to-cook-events.patch} | 0 ...patch => 0558-Add-Block-isValidTool.patch} | 0 ...using-signs-inside-spawn-protection.patch} | 4 +- ....patch => 0560-Expand-world-key-API.patch} | 2 +- ...ternative-constructor-for-Rotations.patch} | 0 ...y-API.patch => 0562-Item-Rarity-API.patch} | 0 ...d-item-when-player-has-disconnected.patch} | 2 +- ...elist-use-configurable-kick-message.patch} | 4 +- ...gnore-result-of-PlayerEditBookEvent.patch} | 4 +- ...tch => 0566-Expose-protocol-version.patch} | 0 ...ab-completions-for-brigadier-comman.patch} | 2 +- ...temConsumeEvent-cancelling-properly.patch} | 0 ...patch => 0569-Add-bypass-host-check.patch} | 0 ...0570-Set-area-affect-cloud-rotation.patch} | 0 ...add-isDeeplySleeping-to-HumanEntity.patch} | 0 ...add-consumeFuel-to-FurnaceBurnEvent.patch} | 0 ...-set-drop-chance-to-EntityEquipment.patch} | 0 ...ix-PigZombieAngerEvent-cancellation.patch} | 0 ...ix-PlayerItemHeldEvent-firing-twice.patch} | 4 +- ... => 0576-Added-PlayerDeepSleepEvent.patch} | 0 ...ld-API.patch => 0577-More-World-API.patch} | 4 +- ... 0578-Added-PlayerBedFailEnterEvent.patch} | 0 ...-to-convert-between-Component-and-B.patch} | 2 +- ...n-acting-as-a-bed-respawn-from-the-.patch} | 2 +- ...acon-activation-deactivation-events.patch} | 0 ...-RespawnFlags-to-PlayerRespawnEvent.patch} | 6 +- ...dd-Channel-initialization-listeners.patch} | 6 +- ...mands-if-tab-completion-is-disabled.patch} | 0 ...> 0585-Add-more-WanderingTrader-API.patch} | 0 ...dd-EntityBlockStorage-clearEntities.patch} | 0 ...ssage-to-PlayerAdvancementDoneEvent.patch} | 0 ...address-to-AsyncPlayerPreLoginEvent.patch} | 0 ...close.patch => 0589-Inventory-close.patch} | 0 ...-in-sunlight-API-for-Phantoms-and-S.patch} | 0 ...=> 0591-Fix-CraftPotionBrewer-cache.patch} | 0 ...atch => 0592-Add-basic-Datapack-API.patch} | 2 +- ...ment-variable-to-disable-server-gui.patch} | 4 +- ...itions-to-PlayerGameModeChangeEvent.patch} | 16 +- ... => 0595-ItemStack-repair-check-API.patch} | 0 ....patch => 0596-More-Enchantment-API.patch} | 0 ...ve-range-check-for-block-placing-up.patch} | 4 +- ...-and-optimise-world-force-upgrading.patch} | 26 +- ...PI.patch => 0599-Add-Mob-lookAt-API.patch} | 0 ...0600-Add-Unix-domain-socket-support.patch} | 6 +- ... => 0601-Add-EntityInsideBlockEvent.patch} | 0 ...02-Attributes-API-for-item-defaults.patch} | 0 ...ause-to-Weather-ThunderChangeEvents.patch} | 14 +- ...patch => 0604-More-Lidded-Block-API.patch} | 0 ...05-Limit-item-frame-cursors-on-maps.patch} | 0 ... => 0606-Add-PlayerKickEvent-causes.patch} | 56 +- ...0607-Add-PufferFishStateChangeEvent.patch} | 0 ...erBucketEmptyEvent-result-itemstack.patch} | 0 ...tedContainer-instead-of-ThreadingDe.patch} | 0 ...-to-fix-items-merging-through-walls.patch} | 0 ...h => 0611-Add-BellRevealRaiderEvent.patch} | 0 ... 0612-Fix-invulnerable-end-crystals.patch} | 0 ...13-Add-ElderGuardianAppearanceEvent.patch} | 0 ...0614-Fix-dangerous-end-portal-logic.patch} | 13 +- ...-Biome-Mob-Lookups-for-Mob-Spawning.patch} | 0 ...-Make-item-validations-configurable.patch} | 0 ...patch => 0617-Line-Of-Sight-Changes.patch} | 0 ... => 0618-add-per-world-spawn-limits.patch} | 2 +- ...h => 0619-Fix-potions-splash-events.patch} | 0 ... => 0620-Add-more-LimitedRegion-API.patch} | 0 ...layerDropItemEvent-using-wrong-item.patch} | 4 +- ...PI.patch => 0622-Missing-Entity-API.patch} | 0 ...ect-for-book-edit-is-called-on-main.patch} | 4 +- ...of-Block-applyBoneMeal-always-being.patch} | 0 ...tChunkIfLoadedImmediately-in-places.patch} | 4 +- ...rom-signs-not-firing-command-events.patch} | 0 ...ch => 0627-Adds-PlayerArmSwingEvent.patch} | 4 +- ...-event-leave-message-not-being-sent.patch} | 12 +- ...-for-mobs-immune-to-default-effects.patch} | 0 ...correct-message-for-outdated-client.patch} | 0 ...-t-apply-cramming-damage-to-players.patch} | 4 +- ...d-timings-for-sensors-and-behaviors.patch} | 0 ...-bunch-of-missing-forceDrop-toggles.patch} | 0 ...inger-API.patch => 0634-Stinger-API.patch} | 0 ...cy-issue-with-empty-map-items-in-CB.patch} | 0 ... => 0636-Add-System.out-err-catcher.patch} | 2 +- ...-to-contain-the-source-jars-in-stac.patch} | 0 ...-Improve-boat-collision-performance.patch} | 0 ...AFK-kick-while-watching-end-credits.patch} | 2 +- ...iting-of-comments-to-server.propert.patch} | 0 ...tch => 0641-Add-PlayerSetSpawnEvent.patch} | 14 +- ...rs-respect-inventory-max-stack-size.patch} | 0 ...ize-entity-tracker-passenger-checks.patch} | 0 ...-option-for-Piglins-guarding-chests.patch} | 0 ...=> 0645-Added-EntityDamageItemEvent.patch} | 0 ...timize-indirect-passenger-iteration.patch} | 7 +- ...em-frame-map-cursor-update-interval.patch} | 0 ...Make-EntityUnleashEvent-cancellable.patch} | 0 ...649-Clear-bucket-NBT-after-dispense.patch} | 0 ...arget-without-changing-other-things.patch} | 0 ...ch => 0651-Add-BlockBreakBlockEvent.patch} | 0 ...revent-NBT-copy-in-smithing-recipes.patch} | 0 ...patch => 0653-More-CommandBlock-API.patch} | 0 ...-missing-team-sidebar-display-slots.patch} | 0 ...0655-Add-back-EntityPortalExitEvent.patch} | 6 +- ...-find-targets-for-lightning-strikes.patch} | 10 +- ... 0657-Get-entity-default-attributes.patch} | 0 ...d-API.patch => 0658-Left-handed-API.patch} | 0 ...ch => 0659-Add-more-advancement-API.patch} | 0 ...660-Add-ItemFactory-getSpawnEgg-API.patch} | 0 ...tch => 0661-Add-critical-damage-API.patch} | 0 ...0662-Fix-issues-with-mob-conversion.patch} | 0 ...ollidable-methods-to-various-places.patch} | 0 ...-ram-API.patch => 0664-Goat-ram-API.patch} | 0 ...dd-API-for-resetting-a-single-score.patch} | 0 ...6-Add-Raw-Byte-Entity-Serialization.patch} | 4 +- ...67-Vanilla-command-permission-fixes.patch} | 0 ...logic-for-inventories-on-chunk-unlo.patch} | 8 +- ...69-Fix-GameProfileCache-concurrency.patch} | 0 ...670-Improve-and-expand-AsyncCatcher.patch} | 8 +- ...per-mobcaps-and-paper-playermobcaps.patch} | 12 +- ...tize-ResourceLocation-error-logging.patch} | 0 ...=> 0673-Optimise-general-POI-access.patch} | 12 +- ...ementation-for-blockstate-state-loo.patch} | 0 ...lly-inline-methods-in-BlockPosition.patch} | 0 ...ler-threads-according-to-the-plugin.patch} | 0 ...-getChunkAt-has-inlined-logic-for-l.patch} | 2 +- ...our-chunk-data-off-disk-when-conver.patch} | 6 +- ...-lookup-fluid-state-when-raytracing.patch} | 0 ...atch => 0680-Time-scoreboard-search.patch} | 0 ...packets-for-hard-colliding-entities.patch} | 0 ...2-Do-not-run-raytrace-logic-for-AIR.patch} | 0 ...rimise-map-impl-for-tracked-players.patch} | 4 +- ...imise-BlockSoil-nearby-water-lookup.patch} | 0 ... 0685-Optimise-random-block-ticking.patch} | 14 +- ...0686-Remove-streams-for-villager-AI.patch} | 0 ...city-compression-and-cipher-natives.patch} | 6 +- ...hread-worker-count-for-low-core-cou.patch} | 0 ...ix-Bukkit-NamespacedKey-shenanigans.patch} | 0 ...ntory-not-closing-on-entity-removal.patch} | 4 +- ...rement-before-suggesting-root-nodes.patch} | 0 ...ServerboundCommandSuggestionPacket-.patch} | 6 +- ...nColor-on-tropical-fish-bucket-meta.patch} | 0 ...=> 0694-Ensure-valid-vehicle-status.patch} | 4 +- ...ftlocked-end-exit-portal-generation.patch} | 0 ...r-causing-a-crash-when-trying-to-ge.patch} | 0 ...-t-log-debug-logging-being-disabled.patch} | 0 ...ous-menus-with-empty-level-accesses.patch} | 0 ...h => 0699-Preserve-overstacked-loot.patch} | 0 ...ate-head-rotation-in-missing-places.patch} | 6 +- ...unintended-light-block-manipulation.patch} | 0 ...0702-Fix-CraftCriteria-defaults-map.patch} | 0 ...Fix-upstreams-block-state-factories.patch} | 0 ... => 0704-Configurable-feature-seeds.patch} | 6 +- ... 0705-Add-root-admin-user-detection.patch} | 2 +- ...ays-allow-item-changing-in-Fireball.patch} | 0 ...t-attempt-to-teleport-dead-entities.patch} | 4 +- ...ive-velocity-through-repeated-crits.patch} | 0 ...e-code-using-deprecated-for-removal.patch} | 0 ...emoving-recipes-from-RecipeIterator.patch} | 0 ...versized-item-data-in-equipment-and.patch} | 0 ...e-unnecessary-itemmeta-from-clients.patch} | 4 +- ...=> 0713-Fix-Spigot-growth-modifiers.patch} | 0 ...OpenersCounter-openCount-from-going.patch} | 0 ...0715-Add-PlayerItemFrameChangeEvent.patch} | 0 ...tch => 0716-Optimize-HashMapPalette.patch} | 0 ...low-delegation-to-vanilla-chunk-gen.patch} | 2 +- ...ingle-and-multi-AABB-VoxelShapes-an.patch} | 22 +- ...n-checking-in-player-move-packet-ha.patch} | 12 +- ...-isSectionEmpty-int-and-optimize-Pa.patch} | 6 +- ...patch => 0721-Add-more-Campfire-API.patch} | 0 ...data-to-disk-if-it-serializes-witho.patch} | 14 +- ...23-Fix-tripwire-state-inconsistency.patch} | 0 ...ard-CraftEntity-in-teleport-command.patch} | 6 +- ... => 0725-Improve-scoreboard-entries.patch} | 0 ...ch => 0726-Entity-powdered-snow-API.patch} | 0 ...0727-Add-API-for-item-entity-health.patch} | 0 ...-type-tags-suggestions-in-selectors.patch} | 0 ...ax-block-light-for-monster-spawning.patch} | 0 ...pistons-and-BlockPistonRetractEvent.patch} | 0 ...plifiers-greater-than-127-correctly.patch} | 0 ...-canSmelt-methods-to-FurnaceInvento.patch} | 0 ...=> 0733-Fix-bees-aging-inside-hives.patch} | 0 ...le-API.patch => 0734-Bucketable-API.patch} | 0 ...es.patch => 0735-Validate-usernames.patch} | 2 +- ...er-animal-spawn-height-configurable.patch} | 0 ...anilla-BiomeProvider-from-WorldInfo.patch} | 6 +- ...ion-for-worlds-affected-by-time-cmd.patch} | 0 ...load-to-PersistentDataContainer-has.patch} | 0 ...0-Multiple-Entries-with-Scoreboards.patch} | 0 ...741-Reset-placed-block-on-exception.patch} | 0 ...configurable-height-for-slime-spawn.patch} | 0 ...ostname-to-AsyncPlayerPreLoginEvent.patch} | 0 ...0744-Fix-xp-reward-for-baby-zombies.patch} | 0 ... 0745-Kick-on-main-for-illegal-chat.patch} | 8 +- ...lti-Block-Change-API-Implementation.patch} | 4 +- ...ent.patch => 0747-Fix-NotePlayEvent.patch} | 0 ....patch => 0748-Freeze-Tick-Lock-API.patch} | 8 +- ...lphin-API.patch => 0749-Dolphin-API.patch} | 0 ...h => 0750-More-PotionEffectType-API.patch} | 0 ...for-StructureTemplate.Pallete-cache.patch} | 0 ...command-sender-which-forwards-feedb.patch} | 2 +- ...-missing-structure-set-seed-configs.patch} | 2 +- ...h => 0754-Implement-regenerateChunk.patch} | 2 +- ...lled-powdered-snow-bucket-placement.patch} | 0 ...ate-calls-to-CraftServer-getSpawnLi.patch} | 2 +- ...gs.patch => 0757-Add-GameEvent-tags.patch} | 2 +- ...ks-fairly-for-worlds-while-waiting-.patch} | 6 +- ...tch => 0759-Furnace-RecipesUsed-API.patch} | 0 ...gurable-sculk-sensor-listener-range.patch} | 0 ...d-missing-block-data-mins-and-maxes.patch} | 0 ...fault-CustomSpawners-in-custom-worl.patch} | 2 +- ...-worldlist-before-initing-the-world.patch} | 6 +- ... => 0764-Fix-Entity-Position-Desync.patch} | 0 ...s.patch => 0765-Custom-Potion-Mixes.patch} | 6 +- ...66-Force-close-world-loading-screen.patch} | 2 +- ...767-Fix-falling-block-spawn-methods.patch} | 6 +- ...Expose-furnace-minecart-push-values.patch} | 0 ...ojectileHitEvent-for-piercing-arrow.patch} | 0 ...I.patch => 0770-More-Projectile-API.patch} | 0 ...x-swamp-hut-cat-generation-deadlock.patch} | 0 ...le-movement-from-players-while-tele.patch} | 2 +- ...0773-Implement-getComputedBiome-API.patch} | 0 ...> 0774-Make-some-itemstacks-nonnull.patch} | 0 ...775-Implement-enchantWithLevels-API.patch} | 0 ...h => 0776-Fix-saving-in-unloadWorld.patch} | 2 +- ...h => 0777-Buffer-OOB-setBlock-calls.patch} | 2 +- ... 0778-Add-TameableDeathMessageEvent.patch} | 0 ...ock-data-for-EntityChangeBlockEvent.patch} | 0 ...bles-running-when-mob-loot-gamerule.patch} | 4 +- ...ssenger-world-matches-ridden-entity.patch} | 4 +- ...rd-against-invalid-entity-positions.patch} | 8 +- ...s.patch => 0783-cache-resource-keys.patch} | 0 ...ange-the-podium-for-the-EnderDragon.patch} | 0 ...erriding-a-block-entity-during-worl.patch} | 0 ...eGrowEvent-species-for-RED_MUSHROOM.patch} | 0 ...t-tile-entity-copies-loading-chunks.patch} | 4 +- ...ead-of-display-name-in-PlayerList-g.patch} | 2 +- ...s-not-spawning-outside-slime-chunks.patch} | 0 ...-ServerLevel-for-gamerule-callbacks.patch} | 12 +- ...ing-amount-to-PlayerItemDamageEvent.patch} | 0 ...> 0792-WorldCreator-keepSpawnLoaded.patch} | 4 +- ...-in-CraftPersistentDataTypeRegistry.patch} | 0 ...destroyed-trigger-in-the-correct-pl.patch} | 0 ...Event-and-CollarColorable-interface.patch} | 0 ...CauldronLevelChange-on-initial-fill.patch} | 0 ...snow-cauldrons-not-turning-to-water.patch} | 0 ...> 0798-Add-PlayerStopUsingItemEvent.patch} | 0 ...99-FallingBlock-auto-expire-setting.patch} | 0 ...rs.patch => 0800-Don-t-tick-markers.patch} | 28 +- ...-not-accept-invalid-client-settings.patch} | 4 +- ...0802-Add-support-for-Proxy-Protocol.patch} | 0 ...x-OfflinePlayer-getBedSpawnLocation.patch} | 0 ...tory-for-smokers-and-blast-furnaces.patch} | 0 ... 0805-Sanitize-Sent-BlockEntity-NBT.patch} | 0 ...-selector-resolving-in-books-by-def.patch} | 0 ...ntity-loading-causing-async-lookups.patch} | 4 +- ...-on-world-create-while-being-ticked.patch} | 10 +- ...ate-Current-redstone-implementation.patch} | 15 +- ...10-Dont-resent-entity-on-art-update.patch} | 0 ... => 0811-Add-WardenAngerChangeEvent.patch} | 0 ...strict-advancement-dimension-checks.patch} | 4 +- ...tant-BlockStateListPopulator-method.patch} | 25 +- ...I.patch => 0814-Nameable-Banner-API.patch} | 0 ...roadcast-messages-to-command-blocks.patch} | 2 +- ...pty-items-from-being-added-to-world.patch} | 4 +- ...hPotion-and-LingeringPotion-spawnin.patch} | 0 ...atch => 0818-Add-Player-getFishHook.patch} | 0 ...chunk-for-dynamic-game-event-listen.patch} | 0 ...s-missing-EntityDropItemEvent-calls.patch} | 4 +- ...debug-information-to-chat-packet-er.patch} | 4 +- ...PE.patch => 0822-Fix-Bee-flower-NPE.patch} | 0 ...-not-using-commands.spam-exclusions.patch} | 4 +- ...API.patch => 0824-More-Teleport-API.patch} | 14 +- ... => 0825-Add-EntityPortalReadyEvent.patch} | 6 +- ...level-random-in-entity-constructors.patch} | 0 ...k-entities-after-destroy-prediction.patch} | 4 +- ...on-plugins-accessing-faraway-chunks.patch} | 14 +- ...tom-Chat-Completion-Suggestions-API.patch} | 4 +- ...Add-and-fix-missing-BlockFadeEvents.patch} | 0 ...ion-API.patch => 0831-Collision-API.patch} | 0 ...nd-message-for-brigadier-syntax-exc.patch} | 0 ...API.patch => 0833-Block-Ticking-API.patch} | 0 ...-Add-Velocity-IP-Forwarding-Support.patch} | 4 +- ...andom-in-ServerLoginPacketListenerI.patch} | 0 ...836-Add-NamespacedKey-biome-methods.patch} | 0 ...x-plugin-loggers-on-server-shutdown.patch} | 6 +- ...ok-changes-from-crashing-the-server.patch} | 0 ...tityChangeBlockEvent-in-more-places.patch} | 2 +- ...> 0840-Missing-eating-regain-reason.patch} | 0 ....patch => 0841-Missing-effect-cause.patch} | 0 ...serialization-deserialization-for-P.patch} | 0 ...rameter-to-ProjectileSource-launchP.patch} | 0 ...4-Call-BlockPhysicsEvent-more-often.patch} | 0 ...0845-Configurable-chat-thread-limit.patch} | 4 +- ...of-WorldCreator-keepSpawnLoaded-ret.patch} | 0 ... 0847-fix-Jigsaw-block-kicking-user.patch} | 0 ...mEvent-for-mud-converting-into-clay.patch} | 0 ... => 0849-Add-getDrops-to-BlockState.patch} | 0 ...=> 0850-Fix-a-bunch-of-vanilla-bugs.patch} | 8 +- ...y-onTrackingStart-during-navigation.patch} | 6 +- ... 0852-Fix-custom-piglin-loved-items.patch} | 0 ...=> 0853-EntityPickupItemEvent-fixes.patch} | 0 ...interactions-with-items-on-cooldown.patch} | 0 ...-Add-PlayerInventorySlotChangeEvent.patch} | 4 +- ... 0856-Elder-Guardian-appearance-API.patch} | 4 +- ...ow-changing-bed-s-occupied-property.patch} | 0 ...ch => 0858-Add-entity-knockback-API.patch} | 0 ....patch => 0859-Detect-headless-JREs.patch} | 2 +- ...-vehicle-collision-event-not-called.patch} | 0 ...1-optimized-dirt-and-snow-spreading.patch} | 0 ... => 0862-Added-EntityToggleSitEvent.patch} | 0 ... => 0863-Add-fire-tick-delay-option.patch} | 0 ...patch => 0864-Add-Moving-Piston-API.patch} | 0 ...> 0865-Ignore-impossible-spawn-tick.patch} | 0 ...source-for-fireworks-from-dispenser.patch} | 0 ...t-suggestion-permissions-to-align-w.patch} | 0 ...Event-cancellation-cant-fully-preve.patch} | 4 +- ...Prevent-compass-from-loading-chunks.patch} | 0 ...0870-Add-PrePlayerAttackEntityEvent.patch} | 0 ...e-reset-EnderDragon-boss-event-name.patch} | 0 ...-green-map-markers-do-not-disappear.patch} | 0 ... 0873-Add-Player-Warden-Warning-API.patch} | 4 +- ...a-friendly-methods-to-update-trades.patch} | 0 ...875-Add-paper-dumplisteners-command.patch} | 4 +- ...lobal-player-list-where-appropriate.patch} | 8 +- ...sync-entity-add-due-to-fungus-trees.patch} | 2 +- ....patch => 0878-ItemStack-damage-API.patch} | 0 ...tion-API.patch => 0879-Friction-API.patch} | 0 ...trol-player-s-insomnia-and-phantoms.patch} | 0 ...=> 0881-Fix-player-kick-on-shutdown.patch} | 0 ... => 0882-Sync-offhand-slot-in-menus.patch} | 4 +- ... 0883-Player-Entity-Tracking-Events.patch} | 4 +- ...tch => 0884-Limit-pet-look-distance.patch} | 0 ...ch => 0885-Properly-resend-entities.patch} | 6 +- ...nd-additions-to-the-SpawnReason-API.patch} | 0 ...ments.patch => 0887-fix-Instruments.patch} | 4 +- ...for-some-hot-BlockBehavior-and-Flui.patch} | 0 ...es-in-dispense-events-regarding-sta.patch} | 0 ...tch => 0890-Add-BlockLockCheckEvent.patch} | 0 ... 0891-Add-Sneaking-API-for-Entities.patch} | 0 ... => 0892-Improve-logging-and-errors.patch} | 4 +- ....patch => 0893-Improve-PortalEvents.patch} | 4 +- ...ion-for-spider-worldborder-climbing.patch} | 4 +- ...sing-SpigotConfig-logCommands-check.patch} | 4 +- ...Allay-stopDancing-while-not-dancing.patch} | 0 ...ge.patch => 0897-Flying-Fall-Damage.patch} | 4 +- ...k-state-to-BlockExplodeEvent-and-En.patch} | 0 ...ion-moving-velocity-to-VehicleBlock.patch} | 4 +- ...onfig-for-disabling-entity-tag-tags.patch} | 0 ...e-player-info-update-packet-on-join.patch} | 6 +- ...k-items-during-EntityResurrectEvent.patch} | 0 ...en-API.patch => 0903-Win-Screen-API.patch} | 4 +- ...ItemStack-setAmount-null-assignment.patch} | 0 ...ix-force-opening-enchantment-tables.patch} | 0 ...tch => 0906-Add-Entity-Body-Yaw-API.patch} | 0 ...vent-sleeping-villagers-moving-towa.patch} | 0 ...hen-a-captured-block-state-is-outda.patch} | 2 +- ...=> 0909-Add-EntityFertilizeEggEvent.patch} | 0 ...ty-drop-not-updating-the-client-inv.patch} | 0 ...temEvent-and-EntityCompostItemEvent.patch} | 0 ...ctly-handle-ArmorStand-invisibility.patch} | 0 ...ancement-triggers-for-entity-damage.patch} | 0 ...914-Fix-text-display-error-on-spawn.patch} | 0 ...nventories-returning-null-Locations.patch} | 0 ...API.patch => 0916-Add-Shearable-API.patch} | 0 ...Fix-SpawnEggMeta-get-setSpawnedType.patch} | 0 ...kshelf-and-jukebox-setItem-with-air.patch} | 0 ...pers.patch => 0919-Optimize-Hoppers.patch} | 4 +- ...ives-generating-from-using-bonemeal.patch} | 0 ...g-to-bad-recipes-in-furnace-like-ti.patch} | 0 ...ence-violations-like-they-should-be.patch} | 4 +- ...uplicate-animate-packet-for-records.patch} | 0 ...xpired-keys-from-impacting-new-join.patch} | 4 +- ...ts-being-fired-from-unloaded-chunks.patch} | 4 +- ...0926-Use-array-for-gamerule-storage.patch} | 0 ...Fix-a-couple-of-upstream-bed-issues.patch} | 0 ...ix-demo-flag-not-enabling-demo-mode.patch} | 4 +- ... 0929-Add-Mob-Experience-reward-API.patch} | 0 ...redstone-on-top-of-trap-doors-early.patch} | 0 ...-Fix-DamageCause-for-Falling-Blocks.patch} | 0 ...Lazy-Initialization-for-Enum-Fields.patch} | 0 ...33-More-accurate-isInOpenWater-impl.patch} | 0 ...ccess-to-lookups-field-in-RegistryO.patch} | 0 ...ecalcBlockCounts-for-empty-sections.patch} | 0 ... => 0936-Expand-PlayerItemMendEvent.patch} | 4 +- ...sh-ProjectileSource-for-projectiles.patch} | 2 +- ... => 0938-Add-transient-modifier-API.patch} | 0 ...patch => 0939-Fix-block-place-logic.patch} | 4 +- ...nd-playing-for-BlockItem-ItemStacks.patch} | 0 ...efinitions-of-trim-material-pattern.patch} | 0 ...l-BlockGrowEvent-for-missing-blocks.patch} | 0 ...nhasbukkit-default-if-alias-block-e.patch} | 2 +- ...pLike-spam-for-missing-key-selector.patch} | 0 ...-Fix-sniffer-removeExploredLocation.patch} | 0 ...to-remove-all-active-potion-effects.patch} | 0 ...yerChunkLoaderData-in-order-to-prep.patch} | 0 ...rafting-result-amount-for-fireworks.patch} | 0 ...> 0949-Properly-Cancel-Usable-Items.patch} | 4 +- ...0-Add-event-for-player-editing-sign.patch} | 0 ...k-item-frames-if-players-can-see-it.patch} | 0 ...-command-function-perm-level-checks.patch} | 0 ...Add-option-to-disable-block-updates.patch} | 0 ...954-Call-missing-BlockDispenseEvent.patch} | 0 ...-chunks-for-supporting-block-checks.patch} | 4 +- ...Optimize-player-lookups-for-beacons.patch} | 0 ...957-Add-Sign-getInteractableSideFor.patch} | 0 ...58-Array-backed-synched-entity-data.patch} | 0 ...9-fix-item-meta-for-tadpole-buckets.patch} | 0 ...uppress-Item-Meta-Validation-Checks.patch} | 0 ...t-API.patch => 0961-Fix-BanList-API.patch} | 6 +- ...d-water-fluid-explosion-resistance-.patch} | 0 ...x-possible-NPE-on-painting-creation.patch} | 0 ...imer-for-Wandering-Traders-spawned-.patch} | 0 ...nceOrb-should-call-EntitySpawnEvent.patch} | 0 ...igns.patch => 0966-Don-t-tick-signs.patch} | 0 ...t-throw-both-Spread-and-Grow-Events.patch} | 0 ....patch => 0968-Add-whitelist-events.patch} | 0 ... 0969-Implement-PlayerFailMoveEvent.patch} | 14 +- ...se-allay-memory-on-non-item-targets.patch} | 0 ...API-for-updating-recipes-on-clients.patch} | 4 +- ...tion-when-spawning-display-entities.patch} | 0 ...973-Only-capture-actual-tree-growth.patch} | 11 +- ...rce-for-mushroom-block-spread-event.patch} | 0 ...Data-on-more-entities-when-spawning.patch} | 0 ...-Use-correct-seed-on-api-world-load.patch} | 2 +- ...ta-neighbour-ticks-outside-of-range.patch} | 0 ...> 0978-Cache-map-ids-on-item-frames.patch} | 0 ...-custom-statistic-criteria-creation.patch} | 0 ...atch => 0980-Bandaid-fix-for-Effect.patch} | 8 +- ...tch => 0981-SculkCatalyst-bloom-API.patch} | 0 ...API-for-an-entity-s-scoreboard-name.patch} | 0 ...g-PreCreatureSpawnEvent-with-per-pl.patch} | 10 +- ...lace-methods-with-old-StructureType.patch} | 2 +- ...e-namespaced-commands-if-send-names.patch} | 4 +- ...-handle-BlockBreakEvent-isDropItems.patch} | 0 ...entity-death-event-for-ender-dragon.patch} | 0 ...tity-tracking-range-by-Y-coordinate.patch} | 4 +- ... => 0989-Add-Listing-API-for-Player.patch} | 8 +- ...d-BlockFace-during-BlockDamageEvent.patch} | 0 ...h => 0991-Fix-NPE-on-Boat-getStatus.patch} | 0 ...e-API.patch => 0992-Expand-Pose-API.patch} | 4 +- ...patch => 0993-More-DragonBattle-API.patch} | 0 ... 0994-Deep-clone-unhandled-nbt-tags.patch} | 0 ...tch => 0995-Add-PlayerPickItemEvent.patch} | 4 +- ...-Improve-performance-of-mass-crafts.patch} | 0 ...=> 0997-Allow-trident-custom-damage.patch} | 0 ...pose-hand-during-BlockCanBuildEvent.patch} | 0 ...-nearest-structure-border-iteration.patch} | 2 +- ...Implement-OfflinePlayer-isConnected.patch} | 4 +- ....patch => 1001-Fix-inventory-desync.patch} | 0 ...titleOverride-to-InventoryOpenEvent.patch} | 6 +- ...03-Configure-sniffer-egg-hatch-time.patch} | 0 ...-proximity-check-before-entity-look.patch} | 0 ...kip-POI-finding-if-stuck-in-vehicle.patch} | 0 ...t-sanity-checks-in-container-clicks.patch} | 0 ...ll-BlockRedstoneEvents-for-lecterns.patch} | 0 ...roper-checking-of-empty-item-stacks.patch} | 0 ...ix-silent-equipment-change-for-mobs.patch} | 8 +- ...h => 1010-Fix-spigot-s-Forced-Stats.patch} | 0 ...ing-InventoryHolders-to-inventories.patch} | 0 ...-entities-in-chunks-that-are-positio.patch | 50 ++ 996 files changed, 1780 insertions(+), 1525 deletions(-) rename patches/{unapplied/server/0019-Rewrite-chunk-system.patch => server/0018-Rewrite-chunk-system.patch} (97%) rename patches/server/{0018-Add-command-line-option-to-load-extra-plugin-jars-no.patch => 0019-Add-command-line-option-to-load-extra-plugin-jars-no.patch} (97%) rename patches/server/{0019-Configurable-cactus-bamboo-and-reed-growth-heights.patch => 0020-Configurable-cactus-bamboo-and-reed-growth-heights.patch} (100%) rename patches/server/{0020-Configurable-baby-zombie-movement-speed.patch => 0021-Configurable-baby-zombie-movement-speed.patch} (100%) rename patches/server/{0021-Configurable-fishing-time-ranges.patch => 0022-Configurable-fishing-time-ranges.patch} (100%) rename patches/server/{0022-Allow-nerfed-mobs-to-jump-and-take-water-damage.patch => 0023-Allow-nerfed-mobs-to-jump-and-take-water-damage.patch} (100%) rename patches/server/{0023-Add-configurable-despawn-distances-for-living-entiti.patch => 0024-Add-configurable-despawn-distances-for-living-entiti.patch} (100%) rename patches/server/{0024-Allow-for-toggling-of-spawn-chunks.patch => 0025-Allow-for-toggling-of-spawn-chunks.patch} (91%) rename patches/server/{0025-Drop-falling-block-and-tnt-entities-at-the-specified.patch => 0026-Drop-falling-block-and-tnt-entities-at-the-specified.patch} (100%) rename patches/server/{0026-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch => 0027-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch} (88%) rename patches/server/{0027-Implement-Paper-VersionChecker.patch => 0028-Implement-Paper-VersionChecker.patch} (100%) rename patches/server/{0028-Add-version-history-to-version-command.patch => 0029-Add-version-history-to-version-command.patch} (98%) rename patches/server/{0029-Player-affects-spawning-API.patch => 0030-Player-affects-spawning-API.patch} (96%) rename patches/server/{0030-Further-improve-server-tick-loop.patch => 0031-Further-improve-server-tick-loop.patch} (92%) rename patches/server/{0031-Only-refresh-abilities-if-needed.patch => 0032-Only-refresh-abilities-if-needed.patch} (87%) rename patches/server/{0032-Entity-Origin-API.patch => 0033-Entity-Origin-API.patch} (94%) rename patches/server/{0033-Prevent-tile-entity-and-entity-crashes.patch => 0034-Prevent-tile-entity-and-entity-crashes.patch} (92%) rename patches/server/{0034-Configurable-top-of-nether-void-damage.patch => 0035-Configurable-top-of-nether-void-damage.patch} (95%) rename patches/server/{0035-Check-online-mode-before-converting-and-renaming-pla.patch => 0036-Check-online-mode-before-converting-and-renaming-pla.patch} (100%) rename patches/server/{0036-Always-tick-falling-blocks.patch => 0037-Always-tick-falling-blocks.patch} (90%) rename patches/server/{0037-Configurable-end-credits.patch => 0038-Configurable-end-credits.patch} (86%) rename patches/server/{0038-Fix-lag-from-explosions-processing-dead-entities.patch => 0039-Fix-lag-from-explosions-processing-dead-entities.patch} (100%) rename patches/server/{0039-Optimize-explosions.patch => 0040-Optimize-explosions.patch} (95%) rename patches/server/{0040-Disable-explosion-knockback.patch => 0041-Disable-explosion-knockback.patch} (100%) rename patches/server/{0041-Disable-thunder.patch => 0042-Disable-thunder.patch} (87%) rename patches/server/{0042-Disable-ice-and-snow.patch => 0043-Disable-ice-and-snow.patch} (85%) rename patches/server/{0043-Configurable-mob-spawner-tick-rate.patch => 0044-Configurable-mob-spawner-tick-rate.patch} (100%) rename patches/server/{0044-Implement-PlayerLocaleChangeEvent.patch => 0045-Implement-PlayerLocaleChangeEvent.patch} (88%) rename patches/server/{0045-Add-BeaconEffectEvent.patch => 0046-Add-BeaconEffectEvent.patch} (100%) rename patches/server/{0046-Configurable-container-update-tick-rate.patch => 0047-Configurable-container-update-tick-rate.patch} (89%) rename patches/server/{0047-Use-UserCache-for-player-heads.patch => 0048-Use-UserCache-for-player-heads.patch} (100%) rename patches/server/{0048-Disable-spigot-tick-limiters.patch => 0049-Disable-spigot-tick-limiters.patch} (88%) rename patches/server/{0049-Add-PlayerInitialSpawnEvent.patch => 0050-Add-PlayerInitialSpawnEvent.patch} (95%) rename patches/server/{0050-Configurable-Disabling-Cat-Chest-Detection.patch => 0051-Configurable-Disabling-Cat-Chest-Detection.patch} (100%) rename patches/server/{0051-Improve-Player-chat-API-handling.patch => 0052-Improve-Player-chat-API-handling.patch} (89%) rename patches/server/{0052-All-chunks-are-slime-spawn-chunks-toggle.patch => 0053-All-chunks-are-slime-spawn-chunks-toggle.patch} (93%) rename patches/server/{0053-Expose-server-CommandMap.patch => 0054-Expose-server-CommandMap.patch} (87%) rename patches/server/{0054-Be-a-bit-more-informative-in-maxHealth-exception.patch => 0055-Be-a-bit-more-informative-in-maxHealth-exception.patch} (100%) rename patches/server/{0055-Player-Tab-List-and-Title-APIs.patch => 0056-Player-Tab-List-and-Title-APIs.patch} (98%) rename patches/server/{0056-Add-configurable-portal-search-radius.patch => 0057-Add-configurable-portal-search-radius.patch} (94%) rename patches/server/{0057-Add-velocity-warnings.patch => 0058-Add-velocity-warnings.patch} (91%) rename patches/server/{0058-Configurable-inter-world-teleportation-safety.patch => 0059-Configurable-inter-world-teleportation-safety.patch} (91%) rename patches/server/{0059-Add-exception-reporting-event.patch => 0060-Add-exception-reporting-event.patch} (95%) rename patches/server/{0060-Don-t-nest-if-we-don-t-need-to-when-cerealising-text.patch => 0061-Don-t-nest-if-we-don-t-need-to-when-cerealising-text.patch} (100%) rename patches/server/{0061-Disable-Scoreboards-for-non-players-by-default.patch => 0062-Disable-Scoreboards-for-non-players-by-default.patch} (92%) rename patches/server/{0062-Add-methods-for-working-with-arrows-stuck-in-living-.patch => 0063-Add-methods-for-working-with-arrows-stuck-in-living-.patch} (100%) rename patches/server/{0063-Chunk-Save-Reattempt.patch => 0064-Chunk-Save-Reattempt.patch} (77%) rename patches/server/{0064-Complete-resource-pack-API.patch => 0065-Complete-resource-pack-API.patch} (96%) rename patches/server/{0065-Default-loading-permissions.yml-before-plugins.patch => 0066-Default-loading-permissions.yml-before-plugins.patch} (95%) rename patches/server/{0066-Allow-Reloading-of-Custom-Permissions.patch => 0067-Allow-Reloading-of-Custom-Permissions.patch} (94%) rename patches/server/{0067-Remove-Metadata-on-reload.patch => 0068-Remove-Metadata-on-reload.patch} (93%) rename patches/server/{0068-Handle-Item-Meta-Inconsistencies.patch => 0069-Handle-Item-Meta-Inconsistencies.patch} (100%) rename patches/server/{0069-Configurable-Non-Player-Arrow-Despawn-Rate.patch => 0070-Configurable-Non-Player-Arrow-Despawn-Rate.patch} (100%) rename patches/server/{0070-Add-World-Util-Methods.patch => 0071-Add-World-Util-Methods.patch} (92%) rename patches/server/{0071-Custom-replacement-for-eaten-items.patch => 0072-Custom-replacement-for-eaten-items.patch} (100%) rename patches/server/{0072-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch => 0073-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch} (98%) rename patches/server/{0073-handle-NaN-health-absorb-values-and-repair-bad-data.patch => 0074-handle-NaN-health-absorb-values-and-repair-bad-data.patch} (94%) rename patches/server/{0074-Use-a-Shared-Random-for-Entities.patch => 0075-Use-a-Shared-Random-for-Entities.patch} (96%) rename patches/server/{0075-Configurable-spawn-chances-for-skeleton-horses.patch => 0076-Configurable-spawn-chances-for-skeleton-horses.patch} (89%) rename patches/server/{0076-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch => 0077-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch} (97%) rename patches/server/{0077-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch => 0078-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch} (91%) rename patches/server/{0078-Entity-AddTo-RemoveFrom-World-Events.patch => 0079-Entity-AddTo-RemoveFrom-World-Events.patch} (83%) rename patches/server/{0079-Configurable-Chunk-Inhabited-Time.patch => 0080-Configurable-Chunk-Inhabited-Time.patch} (92%) rename patches/server/{0080-EntityPathfindEvent.patch => 0081-EntityPathfindEvent.patch} (100%) rename patches/server/{0081-Sanitise-RegionFileCache-and-make-configurable.patch => 0082-Sanitise-RegionFileCache-and-make-configurable.patch} (81%) rename patches/server/{0082-Do-not-load-chunks-for-Pathfinding.patch => 0083-Do-not-load-chunks-for-Pathfinding.patch} (100%) rename patches/server/{0083-Add-PlayerUseUnknownEntityEvent.patch => 0084-Add-PlayerUseUnknownEntityEvent.patch} (95%) rename patches/server/{0084-Configurable-Grass-Spread-Tick-Rate.patch => 0085-Configurable-Grass-Spread-Tick-Rate.patch} (100%) rename patches/server/{0085-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch => 0086-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch} (82%) rename patches/server/{0086-Optimize-DataBits.patch => 0087-Optimize-DataBits.patch} (100%) rename patches/server/{0087-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch => 0088-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch} (100%) rename patches/server/{0088-Configurable-Player-Collision.patch => 0089-Configurable-Player-Collision.patch} (97%) rename patches/server/{0089-Add-handshake-event-to-allow-plugins-to-handle-clien.patch => 0090-Add-handshake-event-to-allow-plugins-to-handle-clien.patch} (100%) rename patches/server/{0090-Configurable-RCON-IP-address.patch => 0091-Configurable-RCON-IP-address.patch} (100%) rename patches/server/{0091-EntityRegainHealthEvent-isFastRegen-API.patch => 0092-EntityRegainHealthEvent-isFastRegen-API.patch} (100%) rename patches/server/{0092-Add-ability-to-configure-frosted_ice-properties.patch => 0093-Add-ability-to-configure-frosted_ice-properties.patch} (100%) rename patches/server/{0093-remove-null-possibility-for-getServer-singleton.patch => 0094-remove-null-possibility-for-getServer-singleton.patch} (92%) rename patches/server/{0094-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch => 0095-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch} (97%) rename patches/server/{0095-LootTable-API-Replenishable-Lootables-Feature.patch => 0096-LootTable-API-Replenishable-Lootables-Feature.patch} (99%) rename patches/server/{0096-Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch => 0097-Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch} (100%) rename patches/server/{0097-System-property-for-disabling-watchdoge.patch => 0098-System-property-for-disabling-watchdoge.patch} (83%) rename patches/server/{0098-Async-GameProfileCache-saving.patch => 0099-Async-GameProfileCache-saving.patch} (90%) rename patches/server/{0099-Optional-TNT-doesn-t-move-in-water.patch => 0100-Optional-TNT-doesn-t-move-in-water.patch} (100%) rename patches/server/{0100-Faster-redstone-torch-rapid-clock-removal.patch => 0101-Faster-redstone-torch-rapid-clock-removal.patch} (97%) rename patches/server/{0101-Add-server-name-parameter.patch => 0102-Add-server-name-parameter.patch} (100%) rename patches/server/{0102-Only-send-global-sounds-to-same-world-if-limiting-ra.patch => 0103-Only-send-global-sounds-to-same-world-if-limiting-ra.patch} (100%) rename patches/server/{0103-Avoid-blocking-on-Network-Manager-creation.patch => 0104-Avoid-blocking-on-Network-Manager-creation.patch} (100%) rename patches/server/{0104-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch => 0105-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch} (100%) rename patches/server/{0105-Add-setting-for-proxy-online-mode-status.patch => 0106-Add-setting-for-proxy-online-mode-status.patch} (97%) rename patches/server/{0106-Optimise-BlockState-s-hashCode-equals.patch => 0107-Optimise-BlockState-s-hashCode-equals.patch} (100%) rename patches/server/{0107-Configurable-packet-in-spam-threshold.patch => 0108-Configurable-packet-in-spam-threshold.patch} (90%) rename patches/server/{0108-Configurable-flying-kick-messages.patch => 0109-Configurable-flying-kick-messages.patch} (95%) rename patches/server/{0109-Add-EntityZapEvent.patch => 0110-Add-EntityZapEvent.patch} (100%) rename patches/server/{0110-Filter-bad-tile-entity-nbt-data-from-falling-blocks.patch => 0111-Filter-bad-tile-entity-nbt-data-from-falling-blocks.patch} (100%) rename patches/server/{0111-Cache-user-authenticator-threads.patch => 0112-Cache-user-authenticator-threads.patch} (100%) rename patches/server/{0112-Allow-Reloading-of-Command-Aliases.patch => 0113-Allow-Reloading-of-Command-Aliases.patch} (94%) rename patches/server/{0113-Add-source-to-PlayerExpChangeEvent.patch => 0114-Add-source-to-PlayerExpChangeEvent.patch} (100%) rename patches/server/{0114-Add-ProjectileCollideEvent.patch => 0115-Add-ProjectileCollideEvent.patch} (100%) rename patches/server/{0115-Prevent-Pathfinding-out-of-World-Border.patch => 0116-Prevent-Pathfinding-out-of-World-Border.patch} (100%) rename patches/server/{0116-Optimize-World.isLoaded-BlockPosition-Z.patch => 0117-Optimize-World.isLoaded-BlockPosition-Z.patch} (91%) rename patches/server/{0117-Bound-Treasure-Maps-to-World-Border.patch => 0118-Bound-Treasure-Maps-to-World-Border.patch} (96%) rename patches/server/{0118-Configurable-Cartographer-Treasure-Maps.patch => 0119-Configurable-Cartographer-Treasure-Maps.patch} (100%) rename patches/server/{0119-Add-API-methods-to-control-if-armour-stands-can-move.patch => 0120-Add-API-methods-to-control-if-armour-stands-can-move.patch} (100%) rename patches/server/{0120-String-based-Action-Bar-API.patch => 0121-String-based-Action-Bar-API.patch} (94%) rename patches/server/{0121-Properly-fix-item-duplication-bug.patch => 0122-Properly-fix-item-duplication-bug.patch} (90%) rename patches/server/{0122-Firework-API-s.patch => 0123-Firework-API-s.patch} (100%) rename patches/server/{0123-PlayerTeleportEndGatewayEvent.patch => 0124-PlayerTeleportEndGatewayEvent.patch} (100%) rename patches/server/{0124-Provide-E-TE-Chunk-count-stat-methods.patch => 0125-Provide-E-TE-Chunk-count-stat-methods.patch} (94%) rename patches/server/{0125-Enforce-Sync-Player-Saves.patch => 0126-Enforce-Sync-Player-Saves.patch} (92%) rename patches/server/{0126-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch => 0127-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch} (100%) rename patches/server/{0127-Cap-Entity-Collisions.patch => 0128-Cap-Entity-Collisions.patch} (95%) rename patches/server/{0128-Remove-CraftScheduler-Async-Task-Debugger.patch => 0129-Remove-CraftScheduler-Async-Task-Debugger.patch} (100%) rename patches/server/{0129-Do-not-let-armorstands-drown.patch => 0130-Do-not-let-armorstands-drown.patch} (100%) rename patches/server/{0130-Properly-handle-async-calls-to-restart-the-server.patch => 0131-Properly-handle-async-calls-to-restart-the-server.patch} (97%) rename patches/server/{0131-Add-option-to-make-parrots-stay-on-shoulders-despite.patch => 0132-Add-option-to-make-parrots-stay-on-shoulders-despite.patch} (93%) rename patches/server/{0132-Add-configuration-option-to-prevent-player-names-fro.patch => 0133-Add-configuration-option-to-prevent-player-names-fro.patch} (89%) rename patches/server/{0133-Use-TerminalConsoleAppender-for-console-improvements.patch => 0134-Use-TerminalConsoleAppender-for-console-improvements.patch} (98%) rename patches/server/{0134-provide-a-configurable-option-to-disable-creeper-lin.patch => 0135-provide-a-configurable-option-to-disable-creeper-lin.patch} (100%) rename patches/server/{0135-Item-canEntityPickup.patch => 0136-Item-canEntityPickup.patch} (100%) rename patches/server/{0136-PlayerPickupItemEvent-setFlyAtPlayer.patch => 0137-PlayerPickupItemEvent-setFlyAtPlayer.patch} (100%) rename patches/server/{0137-PlayerAttemptPickupItemEvent.patch => 0138-PlayerAttemptPickupItemEvent.patch} (100%) rename patches/server/{0138-Do-not-submit-profile-lookups-to-worldgen-threads.patch => 0139-Do-not-submit-profile-lookups-to-worldgen-threads.patch} (100%) rename patches/server/{0139-Add-UnknownCommandEvent.patch => 0140-Add-UnknownCommandEvent.patch} (98%) rename patches/server/{0140-Basic-PlayerProfile-API.patch => 0141-Basic-PlayerProfile-API.patch} (98%) rename patches/server/{0141-Shoulder-Entities-Release-API.patch => 0142-Shoulder-Entities-Release-API.patch} (100%) rename patches/server/{0142-Profile-Lookup-Events.patch => 0143-Profile-Lookup-Events.patch} (100%) rename patches/server/{0143-Block-player-logins-during-server-shutdown.patch => 0144-Block-player-logins-during-server-shutdown.patch} (100%) rename patches/server/{0144-Entity-fromMobSpawner.patch => 0145-Entity-fromMobSpawner.patch} (93%) rename patches/server/{0145-Improve-the-Saddle-API-for-Horses.patch => 0146-Improve-the-Saddle-API-for-Horses.patch} (100%) rename patches/server/{0146-Implement-ensureServerConversions-API.patch => 0147-Implement-ensureServerConversions-API.patch} (100%) rename patches/server/{0147-Implement-getI18NDisplayName.patch => 0148-Implement-getI18NDisplayName.patch} (100%) rename patches/server/{0148-ProfileWhitelistVerifyEvent.patch => 0149-ProfileWhitelistVerifyEvent.patch} (97%) rename patches/server/{0149-Fix-this-stupid-bullshit.patch => 0150-Fix-this-stupid-bullshit.patch} (100%) rename patches/server/{0150-LivingEntity-setKiller.patch => 0151-LivingEntity-setKiller.patch} (100%) rename patches/server/{0151-Ocelot-despawns-should-honor-nametags-and-leash.patch => 0152-Ocelot-despawns-should-honor-nametags-and-leash.patch} (100%) rename patches/server/{0152-Reset-spawner-timer-when-spawner-event-is-cancelled.patch => 0153-Reset-spawner-timer-when-spawner-event-is-cancelled.patch} (100%) rename patches/server/{0153-Allow-specifying-a-custom-authentication-servers-dow.patch => 0154-Allow-specifying-a-custom-authentication-servers-dow.patch} (100%) rename patches/server/{0154-Handle-plugin-prefixes-using-Log4J-configuration.patch => 0155-Handle-plugin-prefixes-using-Log4J-configuration.patch} (100%) rename patches/server/{0155-Improve-Log4J-Configuration-Plugin-Loggers.patch => 0156-Improve-Log4J-Configuration-Plugin-Loggers.patch} (100%) rename patches/server/{0156-Add-PlayerJumpEvent.patch => 0157-Add-PlayerJumpEvent.patch} (94%) rename patches/server/{0157-handle-ServerboundKeepAlivePacket-async.patch => 0158-handle-ServerboundKeepAlivePacket-async.patch} (100%) rename patches/server/{0158-Expose-client-protocol-version-and-virtual-host.patch => 0159-Expose-client-protocol-version-and-virtual-host.patch} (90%) rename patches/server/{0159-revert-serverside-behavior-of-keepalives.patch => 0160-revert-serverside-behavior-of-keepalives.patch} (100%) rename patches/server/{0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch => 0161-Send-attack-SoundEffects-only-to-players-who-can-see.patch} (100%) rename patches/server/{0161-Add-PlayerArmorChangeEvent.patch => 0162-Add-PlayerArmorChangeEvent.patch} (100%) rename patches/server/{0162-Prevent-logins-from-being-processed-when-the-player-.patch => 0163-Prevent-logins-from-being-processed-when-the-player-.patch} (100%) rename patches/server/{0163-Fix-MC-117075-TE-Unload-Lag-Spike.patch => 0164-Fix-MC-117075-TE-Unload-Lag-Spike.patch} (88%) rename patches/server/{0164-use-CB-BlockState-implementations-for-captured-block.patch => 0165-use-CB-BlockState-implementations-for-captured-block.patch} (95%) rename patches/server/{0165-API-to-get-a-BlockState-without-a-snapshot.patch => 0166-API-to-get-a-BlockState-without-a-snapshot.patch} (100%) rename patches/server/{0166-AsyncTabCompleteEvent.patch => 0167-AsyncTabCompleteEvent.patch} (96%) rename patches/server/{0167-PlayerPickupExperienceEvent.patch => 0168-PlayerPickupExperienceEvent.patch} (100%) rename patches/server/{0168-Ability-to-apply-mending-to-XP-API.patch => 0169-Ability-to-apply-mending-to-XP-API.patch} (94%) rename patches/server/{0169-PlayerNaturallySpawnCreaturesEvent.patch => 0170-PlayerNaturallySpawnCreaturesEvent.patch} (82%) rename patches/server/{0170-Add-setPlayerProfile-API-for-Skulls.patch => 0171-Add-setPlayerProfile-API-for-Skulls.patch} (100%) rename patches/server/{0171-PreCreatureSpawnEvent.patch => 0172-PreCreatureSpawnEvent.patch} (100%) rename patches/server/{0172-Fill-Profile-Property-Events.patch => 0173-Fill-Profile-Property-Events.patch} (100%) rename patches/server/{0173-PlayerAdvancementCriterionGrantEvent.patch => 0174-PlayerAdvancementCriterionGrantEvent.patch} (100%) rename patches/server/{0174-Add-ArmorStand-Item-Meta.patch => 0175-Add-ArmorStand-Item-Meta.patch} (100%) rename patches/server/{0175-Extend-Player-Interact-cancellation.patch => 0176-Extend-Player-Interact-cancellation.patch} (100%) rename patches/server/{0176-Tameable-getOwnerUniqueId-API.patch => 0177-Tameable-getOwnerUniqueId-API.patch} (100%) rename patches/server/{0177-Toggleable-player-crits-helps-mitigate-hacked-client.patch => 0178-Toggleable-player-crits-helps-mitigate-hacked-client.patch} (100%) rename patches/server/{0178-Disable-Explicit-Network-Manager-Flushing.patch => 0179-Disable-Explicit-Network-Manager-Flushing.patch} (86%) rename patches/server/{0179-Implement-extended-PaperServerListPingEvent.patch => 0180-Implement-extended-PaperServerListPingEvent.patch} (98%) rename patches/server/{0180-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch => 0181-Ability-to-change-PlayerProfile-in-AsyncPreLoginEven.patch} (100%) rename patches/server/{0181-Player.setPlayerProfile-API.patch => 0182-Player.setPlayerProfile-API.patch} (94%) rename patches/server/{0182-getPlayerUniqueId-API.patch => 0183-getPlayerUniqueId-API.patch} (94%) rename patches/server/{0183-Improved-Async-Task-Scheduler.patch => 0184-Improved-Async-Task-Scheduler.patch} (100%) rename patches/server/{0184-Make-legacy-ping-handler-more-reliable.patch => 0185-Make-legacy-ping-handler-more-reliable.patch} (100%) rename patches/server/{0185-Call-PaperServerListPingEvent-for-legacy-pings.patch => 0186-Call-PaperServerListPingEvent-for-legacy-pings.patch} (100%) rename patches/server/{0186-Flag-to-disable-the-channel-limit.patch => 0187-Flag-to-disable-the-channel-limit.patch} (91%) rename patches/server/{0187-Add-openSign-method-to-HumanEntity.patch => 0188-Add-openSign-method-to-HumanEntity.patch} (100%) rename patches/server/{0188-Configurable-sprint-interruption-on-attack.patch => 0189-Configurable-sprint-interruption-on-attack.patch} (100%) rename patches/server/{0189-EndermanEscapeEvent.patch => 0190-EndermanEscapeEvent.patch} (100%) rename patches/server/{0190-Enderman.teleportRandomly.patch => 0191-Enderman.teleportRandomly.patch} (100%) rename patches/server/{0191-Block-Enderpearl-Travel-Exploit.patch => 0192-Block-Enderpearl-Travel-Exploit.patch} (93%) rename patches/server/{0192-Expand-World.spawnParticle-API-and-add-Builder.patch => 0193-Expand-World.spawnParticle-API-and-add-Builder.patch} (92%) rename patches/server/{0193-Fix-exploit-that-allowed-colored-signs-to-be-created.patch => 0194-Fix-exploit-that-allowed-colored-signs-to-be-created.patch} (100%) rename patches/server/{0194-Prevent-Frosted-Ice-from-loading-holding-chunks.patch => 0195-Prevent-Frosted-Ice-from-loading-holding-chunks.patch} (100%) rename patches/server/{0195-EndermanAttackPlayerEvent.patch => 0196-EndermanAttackPlayerEvent.patch} (100%) rename patches/server/{0196-WitchConsumePotionEvent.patch => 0197-WitchConsumePotionEvent.patch} (100%) rename patches/server/{0197-WitchThrowPotionEvent.patch => 0198-WitchThrowPotionEvent.patch} (100%) rename patches/server/{0198-Allow-spawning-Item-entities-with-World.spawnEntity.patch => 0199-Allow-spawning-Item-entities-with-World.spawnEntity.patch} (100%) rename patches/server/{0199-WitchReadyPotionEvent.patch => 0200-WitchReadyPotionEvent.patch} (100%) rename patches/server/{0200-ItemStack-getMaxItemUseDuration.patch => 0201-ItemStack-getMaxItemUseDuration.patch} (100%) rename patches/server/{0201-Implement-EntityTeleportEndGatewayEvent.patch => 0202-Implement-EntityTeleportEndGatewayEvent.patch} (100%) rename patches/server/{0202-Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch => 0203-Unset-Ignited-flag-on-cancel-of-Explosion-Event.patch} (100%) rename patches/server/{0203-Fix-CraftEntity-hashCode.patch => 0204-Fix-CraftEntity-hashCode.patch} (100%) rename patches/server/{0204-Configurable-Alternative-LootPool-Luck-Formula.patch => 0205-Configurable-Alternative-LootPool-Luck-Formula.patch} (100%) rename patches/server/{0205-Print-Error-details-when-failing-to-save-player-data.patch => 0206-Print-Error-details-when-failing-to-save-player-data.patch} (100%) rename patches/server/{0206-Make-shield-blocking-delay-configurable.patch => 0207-Make-shield-blocking-delay-configurable.patch} (100%) rename patches/server/{0207-Improve-EntityShootBowEvent.patch => 0208-Improve-EntityShootBowEvent.patch} (100%) rename patches/server/{0208-PlayerReadyArrowEvent.patch => 0209-PlayerReadyArrowEvent.patch} (100%) rename patches/server/{0209-Implement-EntityKnockbackByEntityEvent-and-EntityPus.patch => 0210-Implement-EntityKnockbackByEntityEvent-and-EntityPus.patch} (98%) rename patches/server/{0210-Expand-Explosions-API.patch => 0211-Expand-Explosions-API.patch} (90%) rename patches/server/{0211-LivingEntity-Hand-Raised-Item-Use-API.patch => 0212-LivingEntity-Hand-Raised-Item-Use-API.patch} (100%) rename patches/server/{0212-RangedEntity-API.patch => 0213-RangedEntity-API.patch} (100%) rename patches/server/{0213-Add-config-to-disable-ender-dragon-legacy-check.patch => 0214-Add-config-to-disable-ender-dragon-legacy-check.patch} (100%) rename patches/server/{0214-Implement-World.getEntity-UUID-API.patch => 0215-Implement-World.getEntity-UUID-API.patch} (85%) rename patches/server/{0215-InventoryCloseEvent-Reason-API.patch => 0216-InventoryCloseEvent-Reason-API.patch} (92%) rename patches/server/{0216-Vex-get-setSummoner-API.patch => 0217-Vex-get-setSummoner-API.patch} (100%) rename patches/server/{0217-Refresh-player-inventory-when-cancelling-PlayerInter.patch => 0218-Refresh-player-inventory-when-cancelling-PlayerInter.patch} (90%) rename patches/server/{0218-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch => 0219-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch} (100%) rename patches/server/{0219-add-more-information-to-Entity.toString.patch => 0220-add-more-information-to-Entity.toString.patch} (91%) rename patches/server/{0220-EnderDragon-Events.patch => 0221-EnderDragon-Events.patch} (100%) rename patches/server/{0221-PlayerElytraBoostEvent.patch => 0222-PlayerElytraBoostEvent.patch} (100%) rename patches/server/{0222-PlayerLaunchProjectileEvent.patch => 0223-PlayerLaunchProjectileEvent.patch} (100%) rename patches/server/{0223-Improve-BlockPosition-inlining.patch => 0224-Improve-BlockPosition-inlining.patch} (100%) rename patches/server/{0224-Option-to-prevent-armor-stands-from-doing-entity-loo.patch => 0225-Option-to-prevent-armor-stands-from-doing-entity-loo.patch} (91%) rename patches/server/{0225-Vanished-players-don-t-have-rights.patch => 0226-Vanished-players-don-t-have-rights.patch} (98%) rename patches/server/{0226-Allow-disabling-armour-stand-ticking.patch => 0227-Allow-disabling-armour-stand-ticking.patch} (100%) rename patches/server/{0227-SkeletonHorse-Additions.patch => 0228-SkeletonHorse-Additions.patch} (96%) rename patches/server/{0228-Don-t-call-getItemMeta-on-hasItemMeta.patch => 0229-Don-t-call-getItemMeta-on-hasItemMeta.patch} (100%) rename patches/server/{0229-Implement-Expanded-ArmorStand-API.patch => 0230-Implement-Expanded-ArmorStand-API.patch} (100%) rename patches/server/{0230-AnvilDamageEvent.patch => 0231-AnvilDamageEvent.patch} (100%) rename patches/server/{0231-Add-TNTPrimeEvent.patch => 0232-Add-TNTPrimeEvent.patch} (100%) rename patches/server/{0232-Break-up-and-make-tab-spam-limits-configurable.patch => 0233-Break-up-and-make-tab-spam-limits-configurable.patch} (97%) rename patches/server/{0233-Fix-NBT-type-issues.patch => 0234-Fix-NBT-type-issues.patch} (100%) rename patches/server/{0234-Remove-unnecessary-itemmeta-handling.patch => 0235-Remove-unnecessary-itemmeta-handling.patch} (100%) rename patches/server/{0235-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch => 0236-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch} (91%) rename patches/server/{0236-Add-Early-Warning-Feature-to-WatchDog.patch => 0237-Add-Early-Warning-Feature-to-WatchDog.patch} (90%) rename patches/server/{0237-Use-ConcurrentHashMap-in-JsonList.patch => 0238-Use-ConcurrentHashMap-in-JsonList.patch} (98%) rename patches/server/{0238-Use-a-Queue-for-Queueing-Commands.patch => 0239-Use-a-Queue-for-Queueing-Commands.patch} (88%) rename patches/server/{0239-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch => 0240-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch} (90%) rename patches/server/{0240-Optimize-BlockPosition-helper-methods.patch => 0241-Optimize-BlockPosition-helper-methods.patch} (100%) rename patches/server/{0241-Restore-vanilla-default-mob-spawn-range-and-water-an.patch => 0242-Restore-vanilla-default-mob-spawn-range-and-water-an.patch} (100%) rename patches/server/{0242-Slime-Pathfinder-Events.patch => 0243-Slime-Pathfinder-Events.patch} (100%) rename patches/server/{0243-Configurable-speed-for-water-flowing-over-lava.patch => 0244-Configurable-speed-for-water-flowing-over-lava.patch} (100%) rename patches/server/{0244-Optimize-CraftBlockData-Creation.patch => 0245-Optimize-CraftBlockData-Creation.patch} (100%) rename patches/server/{0245-Optimize-MappedRegistry.patch => 0246-Optimize-MappedRegistry.patch} (100%) rename patches/server/{0246-Add-PhantomPreSpawnEvent.patch => 0247-Add-PhantomPreSpawnEvent.patch} (100%) rename patches/server/{0247-Add-More-Creeper-API.patch => 0248-Add-More-Creeper-API.patch} (100%) rename patches/server/{0248-Inventory-removeItemAnySlot.patch => 0249-Inventory-removeItemAnySlot.patch} (100%) rename patches/server/{0249-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch => 0250-Make-CraftWorld-loadChunk-int-int-false-load-unconve.patch} (87%) rename patches/server/{0250-Add-ray-tracing-methods-to-LivingEntity.patch => 0251-Add-ray-tracing-methods-to-LivingEntity.patch} (100%) rename patches/server/{0251-Expose-attack-cooldown-methods-for-Player.patch => 0252-Expose-attack-cooldown-methods-for-Player.patch} (86%) rename patches/server/{0252-Improve-death-events.patch => 0253-Improve-death-events.patch} (98%) rename patches/server/{0253-Allow-chests-to-be-placed-with-NBT-data.patch => 0254-Allow-chests-to-be-placed-with-NBT-data.patch} (100%) rename patches/server/{0254-Mob-Pathfinding-API.patch => 0255-Mob-Pathfinding-API.patch} (100%) rename patches/server/{0255-Implement-an-API-for-CanPlaceOn-and-CanDestroy-NBT-v.patch => 0256-Implement-an-API-for-CanPlaceOn-and-CanDestroy-NBT-v.patch} (100%) rename patches/server/{0256-Prevent-Mob-AI-Rules-from-Loading-Chunks.patch => 0257-Prevent-Mob-AI-Rules-from-Loading-Chunks.patch} (100%) rename patches/server/{0257-Prevent-mob-spawning-from-loading-generating-chunks.patch => 0258-Prevent-mob-spawning-from-loading-generating-chunks.patch} (100%) rename patches/server/{0258-Implement-furnace-cook-speed-multiplier-API.patch => 0259-Implement-furnace-cook-speed-multiplier-API.patch} (100%) rename patches/server/{0259-Honor-EntityAgeable.ageLock.patch => 0260-Honor-EntityAgeable.ageLock.patch} (100%) rename patches/server/{0260-Configurable-connection-throttle-kick-message.patch => 0261-Configurable-connection-throttle-kick-message.patch} (100%) rename patches/server/{0261-Prevent-chunk-loading-from-Fluid-Flowing.patch => 0262-Prevent-chunk-loading-from-Fluid-Flowing.patch} (100%) rename patches/server/{0262-Hook-into-CB-plugin-rewrites.patch => 0263-Hook-into-CB-plugin-rewrites.patch} (100%) rename patches/server/{0263-PreSpawnerSpawnEvent.patch => 0264-PreSpawnerSpawnEvent.patch} (100%) rename patches/server/{0264-Add-LivingEntity-getTargetEntity.patch => 0265-Add-LivingEntity-getTargetEntity.patch} (100%) rename patches/server/{0265-Add-sun-related-API.patch => 0266-Add-sun-related-API.patch} (90%) rename patches/server/{0266-Catch-JsonParseException-in-Entity-and-TE-names.patch => 0267-Catch-JsonParseException-in-Entity-and-TE-names.patch} (97%) rename patches/server/{0267-Turtle-API.patch => 0268-Turtle-API.patch} (100%) rename patches/server/{0268-Call-player-spectator-target-events-and-improve-impl.patch => 0269-Call-player-spectator-target-events-and-improve-impl.patch} (91%) rename patches/server/{0269-MC-50319-Check-other-worlds-for-shooter-of-projectil.patch => 0270-MC-50319-Check-other-worlds-for-shooter-of-projectil.patch} (100%) rename patches/server/{0270-Add-more-Witch-API.patch => 0271-Add-more-Witch-API.patch} (100%) rename patches/server/{0271-Check-Drowned-for-Villager-Aggression-Config.patch => 0272-Check-Drowned-for-Villager-Aggression-Config.patch} (100%) rename patches/server/{0272-Add-option-to-prevent-players-from-moving-into-unloa.patch => 0273-Add-option-to-prevent-players-from-moving-into-unloa.patch} (95%) rename patches/server/{0273-Reset-players-airTicks-on-respawn.patch => 0274-Reset-players-airTicks-on-respawn.patch} (83%) rename patches/server/{0274-Don-t-sleep-after-profile-lookups-if-not-needed.patch => 0275-Don-t-sleep-after-profile-lookups-if-not-needed.patch} (100%) rename patches/server/{0275-Improve-Server-Thread-Pool-and-Thread-Priorities.patch => 0276-Improve-Server-Thread-Pool-and-Thread-Priorities.patch} (98%) rename patches/server/{0276-Optimize-World-Time-Updates.patch => 0277-Optimize-World-Time-Updates.patch} (94%) rename patches/server/{0277-Restore-custom-InventoryHolder-support.patch => 0278-Restore-custom-InventoryHolder-support.patch} (100%) rename patches/server/{0278-Use-Vanilla-Minecart-Speeds.patch => 0279-Use-Vanilla-Minecart-Speeds.patch} (100%) rename patches/server/{0279-Fix-SpongeAbsortEvent-handling.patch => 0280-Fix-SpongeAbsortEvent-handling.patch} (100%) rename patches/server/{0280-Don-t-allow-digging-into-unloaded-chunks.patch => 0281-Don-t-allow-digging-into-unloaded-chunks.patch} (96%) rename patches/server/{0281-Make-the-default-permission-message-configurable.patch => 0282-Make-the-default-permission-message-configurable.patch} (88%) rename patches/server/{0282-Prevent-rayTrace-from-loading-chunks.patch => 0283-Prevent-rayTrace-from-loading-chunks.patch} (100%) rename patches/server/{0283-Handle-Large-Packets-disconnecting-client.patch => 0284-Handle-Large-Packets-disconnecting-client.patch} (97%) rename patches/server/{0284-force-entity-dismount-during-teleportation.patch => 0285-force-entity-dismount-during-teleportation.patch} (93%) rename patches/server/{0285-Add-more-Zombie-API.patch => 0286-Add-more-Zombie-API.patch} (100%) rename patches/server/{0286-Book-Size-Limits.patch => 0287-Book-Size-Limits.patch} (94%) rename patches/server/{0287-Add-PlayerConnectionCloseEvent.patch => 0288-Add-PlayerConnectionCloseEvent.patch} (96%) rename patches/server/{0288-Prevent-Enderman-from-loading-chunks.patch => 0289-Prevent-Enderman-from-loading-chunks.patch} (100%) rename patches/server/{0289-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch => 0290-Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch} (93%) rename patches/server/{0290-Workaround-for-vehicle-tracking-issue-on-disconnect.patch => 0291-Workaround-for-vehicle-tracking-issue-on-disconnect.patch} (85%) rename patches/server/{0291-Block-Entity-remove-from-being-called-on-Players.patch => 0292-Block-Entity-remove-from-being-called-on-Players.patch} (90%) rename patches/server/{0292-BlockDestroyEvent.patch => 0293-BlockDestroyEvent.patch} (93%) rename patches/server/{0293-Async-command-map-building.patch => 0294-Async-command-map-building.patch} (95%) rename patches/server/{0294-Implement-Brigadier-Mojang-API.patch => 0295-Implement-Brigadier-Mojang-API.patch} (98%) rename patches/server/{0295-Improve-exact-choice-recipe-ingredients.patch => 0296-Improve-exact-choice-recipe-ingredients.patch} (100%) rename patches/server/{0296-Limit-Client-Sign-length-more.patch => 0297-Limit-Client-Sign-length-more.patch} (94%) rename patches/server/{0297-Handle-Oversized-Tile-Entities-in-chunks.patch => 0298-Handle-Oversized-Tile-Entities-in-chunks.patch} (100%) rename patches/server/{0298-Call-WhitelistToggleEvent-when-whitelist-is-toggled.patch => 0299-Call-WhitelistToggleEvent-when-whitelist-is-toggled.patch} (88%) rename patches/server/{0299-Entity-getEntitySpawnReason.patch => 0300-Entity-getEntitySpawnReason.patch} (93%) rename patches/server/{0300-Fire-event-on-GS4-query.patch => 0301-Fire-event-on-GS4-query.patch} (100%) rename patches/server/{0301-Implement-PlayerPostRespawnEvent.patch => 0302-Implement-PlayerPostRespawnEvent.patch} (95%) rename patches/server/{0302-don-t-go-below-0-for-pickupDelay-breaks-picking-up-i.patch => 0303-don-t-go-below-0-for-pickupDelay-breaks-picking-up-i.patch} (100%) rename patches/server/{0303-Server-Tick-Events.patch => 0304-Server-Tick-Events.patch} (85%) rename patches/server/{0304-PlayerDeathEvent-getItemsToKeep.patch => 0305-PlayerDeathEvent-getItemsToKeep.patch} (92%) rename patches/server/{0305-Optimize-Captured-TileEntity-Lookup.patch => 0306-Optimize-Captured-TileEntity-Lookup.patch} (78%) rename patches/server/{0306-Add-Heightmap-API.patch => 0307-Add-Heightmap-API.patch} (95%) rename patches/server/{0307-Mob-Spawner-API-Enhancements.patch => 0308-Mob-Spawner-API-Enhancements.patch} (100%) rename patches/server/{0308-Fix-CB-call-to-changed-postToMainThread-method.patch => 0309-Fix-CB-call-to-changed-postToMainThread-method.patch} (100%) rename patches/server/{0309-Fix-sounds-when-item-frames-are-modified-MC-123450.patch => 0310-Fix-sounds-when-item-frames-are-modified-MC-123450.patch} (100%) rename patches/server/{0310-Implement-CraftBlockSoundGroup.patch => 0311-Implement-CraftBlockSoundGroup.patch} (100%) rename patches/server/{0311-Configurable-Keep-Spawn-Loaded-range-per-world.patch => 0312-Configurable-Keep-Spawn-Loaded-range-per-world.patch} (96%) rename patches/server/{0312-Allow-Saving-of-Oversized-Chunks.patch => 0313-Allow-Saving-of-Oversized-Chunks.patch} (91%) rename patches/server/{0313-Expose-the-internal-current-tick.patch => 0314-Expose-the-internal-current-tick.patch} (90%) rename patches/server/{0314-Fix-World-isChunkGenerated-calls.patch => 0315-Fix-World-isChunkGenerated-calls.patch} (91%) rename patches/server/{0315-Show-blockstate-location-if-we-failed-to-read-it.patch => 0316-Show-blockstate-location-if-we-failed-to-read-it.patch} (100%) rename patches/server/{0316-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch => 0317-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch} (100%) rename patches/server/{0317-Configurable-projectile-relative-velocity.patch => 0318-Configurable-projectile-relative-velocity.patch} (100%) rename patches/server/{0318-offset-item-frame-ticking.patch => 0319-offset-item-frame-ticking.patch} (100%) rename patches/server/{0319-Fix-MC-158900.patch => 0320-Fix-MC-158900.patch} (94%) rename patches/server/{0320-Prevent-consuming-the-wrong-itemstack.patch => 0321-Prevent-consuming-the-wrong-itemstack.patch} (100%) rename patches/server/{0321-Dont-send-unnecessary-sign-update.patch => 0322-Dont-send-unnecessary-sign-update.patch} (100%) rename patches/server/{0322-Add-option-to-disable-pillager-patrols.patch => 0323-Add-option-to-disable-pillager-patrols.patch} (100%) rename patches/server/{0323-Flat-bedrock-generator-settings.patch => 0324-Flat-bedrock-generator-settings.patch} (99%) rename patches/server/{0324-Prevent-sync-chunk-loads-when-villagers-try-to-find-.patch => 0325-Prevent-sync-chunk-loads-when-villagers-try-to-find-.patch} (100%) rename patches/server/{0325-MC-145656-Fix-Follow-Range-Initial-Target.patch => 0326-MC-145656-Fix-Follow-Range-Initial-Target.patch} (100%) rename patches/server/{0326-Duplicate-UUID-Resolve-Option.patch => 0327-Duplicate-UUID-Resolve-Option.patch} (91%) rename patches/server/{0327-PlayerDeathEvent-shouldDropExperience.patch => 0328-PlayerDeathEvent-shouldDropExperience.patch} (85%) rename patches/server/{0328-Prevent-bees-loading-chunks-checking-hive-position.patch => 0329-Prevent-bees-loading-chunks-checking-hive-position.patch} (100%) rename patches/server/{0329-Don-t-load-Chunks-from-Hoppers-and-other-things.patch => 0330-Don-t-load-Chunks-from-Hoppers-and-other-things.patch} (100%) rename patches/server/{0330-Optimise-EntityGetter-getPlayerByUUID.patch => 0331-Optimise-EntityGetter-getPlayerByUUID.patch} (90%) rename patches/server/{0331-Fix-items-not-falling-correctly.patch => 0332-Fix-items-not-falling-correctly.patch} (94%) rename patches/server/{0332-Optimize-call-to-getFluid-for-explosions.patch => 0333-Optimize-call-to-getFluid-for-explosions.patch} (100%) rename patches/server/{0333-Fix-last-firework-in-stack-not-having-effects-when-d.patch => 0334-Fix-last-firework-in-stack-not-having-effects-when-d.patch} (100%) rename patches/server/{0334-Entity-Activation-Range-2.0.patch => 0335-Entity-Activation-Range-2.0.patch} (97%) rename patches/server/{0335-Implement-alternative-item-despawn-rate.patch => 0336-Implement-alternative-item-despawn-rate.patch} (100%) rename patches/server/{0336-Lag-compensate-eating.patch => 0337-Lag-compensate-eating.patch} (100%) rename patches/server/{0337-Tracking-Range-Improvements.patch => 0338-Tracking-Range-Improvements.patch} (95%) rename patches/server/{0338-Fix-items-vanishing-through-end-portal.patch => 0339-Fix-items-vanishing-through-end-portal.patch} (89%) rename patches/server/{0339-implement-optional-per-player-mob-spawns.patch => 0340-implement-optional-per-player-mob-spawns.patch} (96%) rename patches/server/{0340-Bees-get-gravity-in-void.-Fixes-MC-167279.patch => 0341-Bees-get-gravity-in-void.-Fixes-MC-167279.patch} (100%) rename patches/server/{0341-Improve-Block-breakNaturally-API.patch => 0342-Improve-Block-breakNaturally-API.patch} (100%) rename patches/server/{0342-Optimise-getChunkAt-calls-for-loaded-chunks.patch => 0343-Optimise-getChunkAt-calls-for-loaded-chunks.patch} (89%) rename patches/server/{0343-Add-debug-for-sync-chunk-loads.patch => 0344-Add-debug-for-sync-chunk-loads.patch} (90%) rename patches/server/{0344-Improve-java-version-check.patch => 0345-Improve-java-version-check.patch} (100%) rename patches/server/{0345-Add-ThrownEggHatchEvent.patch => 0346-Add-ThrownEggHatchEvent.patch} (100%) rename patches/server/{0346-Entity-Jump-API.patch => 0347-Entity-Jump-API.patch} (100%) rename patches/server/{0347-Add-option-to-nerf-pigmen-from-nether-portals.patch => 0348-Add-option-to-nerf-pigmen-from-nether-portals.patch} (91%) rename patches/server/{0348-Make-the-GUI-graph-fancier.patch => 0349-Make-the-GUI-graph-fancier.patch} (100%) rename patches/server/{0349-add-hand-to-BlockMultiPlaceEvent.patch => 0350-add-hand-to-BlockMultiPlaceEvent.patch} (100%) rename patches/server/{0350-Validate-tripwire-hook-placement-before-update.patch => 0351-Validate-tripwire-hook-placement-before-update.patch} (100%) rename patches/server/{0351-Add-option-to-allow-iron-golems-to-spawn-in-air.patch => 0352-Add-option-to-allow-iron-golems-to-spawn-in-air.patch} (100%) rename patches/server/{0352-Configurable-chance-of-villager-zombie-infection.patch => 0353-Configurable-chance-of-villager-zombie-infection.patch} (100%) rename patches/server/{0353-Optimise-Chunk-getFluid.patch => 0354-Optimise-Chunk-getFluid.patch} (96%) rename patches/server/{0354-Set-spigots-verbose-world-setting-to-false-by-def.patch => 0355-Set-spigots-verbose-world-setting-to-false-by-def.patch} (100%) rename patches/server/{0355-Add-tick-times-API-and-mspt-command.patch => 0356-Add-tick-times-API-and-mspt-command.patch} (96%) rename patches/server/{0356-Expose-MinecraftServer-isRunning.patch => 0357-Expose-MinecraftServer-isRunning.patch} (90%) rename patches/server/{0357-Add-Raw-Byte-ItemStack-Serialization.patch => 0358-Add-Raw-Byte-ItemStack-Serialization.patch} (100%) rename patches/server/{0358-Pillager-patrol-spawn-settings-and-per-player-option.patch => 0359-Pillager-patrol-spawn-settings-and-per-player-option.patch} (98%) rename patches/server/{0359-Remote-Connections-shouldn-t-hold-up-shutdown.patch => 0360-Remote-Connections-shouldn-t-hold-up-shutdown.patch} (95%) rename patches/server/{0360-Do-not-allow-bees-to-load-chunks-for-beehives.patch => 0361-Do-not-allow-bees-to-load-chunks-for-beehives.patch} (100%) rename patches/server/{0361-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch => 0362-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch} (87%) rename patches/server/{0362-Don-t-tick-dead-players.patch => 0363-Don-t-tick-dead-players.patch} (85%) rename patches/server/{0363-Dead-Player-s-shouldn-t-be-able-to-move.patch => 0364-Dead-Player-s-shouldn-t-be-able-to-move.patch} (100%) rename patches/server/{0364-Optimize-Collision-to-not-load-chunks.patch => 0365-Optimize-Collision-to-not-load-chunks.patch} (97%) rename patches/server/{0365-Don-t-move-existing-players-to-world-spawn.patch => 0366-Don-t-move-existing-players-to-world-spawn.patch} (88%) rename patches/server/{0366-Optimize-GoalSelector-Goal.Flag-Set-operations.patch => 0367-Optimize-GoalSelector-Goal.Flag-Set-operations.patch} (100%) rename patches/server/{0367-Improved-Watchdog-Support.patch => 0368-Improved-Watchdog-Support.patch} (92%) rename patches/server/{0368-Optimize-Pathfinding.patch => 0369-Optimize-Pathfinding.patch} (100%) rename patches/server/{0369-Reduce-Either-Optional-allocation.patch => 0370-Reduce-Either-Optional-allocation.patch} (100%) rename patches/server/{0370-Reduce-memory-footprint-of-NBTTagCompound.patch => 0371-Reduce-memory-footprint-of-NBTTagCompound.patch} (100%) rename patches/server/{0371-Prevent-opening-inventories-when-frozen.patch => 0372-Prevent-opening-inventories-when-frozen.patch} (94%) rename patches/server/{0372-Don-t-run-entity-collision-code-if-not-needed.patch => 0373-Don-t-run-entity-collision-code-if-not-needed.patch} (100%) rename patches/server/{0373-Implement-Player-Client-Options-API.patch => 0374-Implement-Player-Client-Options-API.patch} (96%) rename patches/server/{0374-Don-t-crash-if-player-is-attempted-to-be-removed-fro.patch => 0375-Don-t-crash-if-player-is-attempted-to-be-removed-fro.patch} (81%) rename patches/server/{0375-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch => 0376-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch} (94%) rename patches/server/{0376-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch => 0377-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch} (89%) rename patches/server/{0377-Add-PlayerAttackEntityCooldownResetEvent.patch => 0378-Add-PlayerAttackEntityCooldownResetEvent.patch} (100%) rename patches/server/{0378-Don-t-fire-BlockFade-on-worldgen-threads.patch => 0379-Don-t-fire-BlockFade-on-worldgen-threads.patch} (100%) rename patches/server/{0379-Add-phantom-creative-and-insomniac-controls.patch => 0380-Add-phantom-creative-and-insomniac-controls.patch} (100%) rename patches/server/{0380-Fix-numerous-item-duplication-issues-and-teleport-is.patch => 0381-Fix-numerous-item-duplication-issues-and-teleport-is.patch} (96%) rename patches/server/{0381-Villager-Restocks-API.patch => 0382-Villager-Restocks-API.patch} (100%) rename patches/server/{0382-Validate-PickItem-Packet-and-kick-for-invalid.patch => 0383-Validate-PickItem-Packet-and-kick-for-invalid.patch} (91%) rename patches/server/{0383-Expose-game-version.patch => 0384-Expose-game-version.patch} (89%) rename patches/server/{0384-Optimize-Voxel-Shape-Merging.patch => 0385-Optimize-Voxel-Shape-Merging.patch} (100%) rename patches/server/{0385-Set-cap-on-JDK-per-thread-native-byte-buffer-cache.patch => 0386-Set-cap-on-JDK-per-thread-native-byte-buffer-cache.patch} (100%) rename patches/server/{0386-misc-debugging-dumps.patch => 0387-misc-debugging-dumps.patch} (91%) rename patches/server/{0387-Prevent-teleporting-dead-entities.patch => 0388-Prevent-teleporting-dead-entities.patch} (87%) rename patches/server/{0388-Deobfuscate-stacktraces-in-log-messages-crash-report.patch => 0389-Deobfuscate-stacktraces-in-log-messages-crash-report.patch} (97%) rename patches/server/{0389-Implement-Mob-Goal-API.patch => 0390-Implement-Mob-Goal-API.patch} (99%) rename patches/server/{0390-Add-villager-reputation-API.patch => 0391-Add-villager-reputation-API.patch} (100%) rename patches/server/{0391-Option-for-maximum-exp-value-when-merging-orbs.patch => 0392-Option-for-maximum-exp-value-when-merging-orbs.patch} (100%) rename patches/server/{0392-ExperienceOrbMergeEvent.patch => 0393-ExperienceOrbMergeEvent.patch} (100%) rename patches/server/{0393-Fix-PotionEffect-ignores-icon-flag.patch => 0394-Fix-PotionEffect-ignores-icon-flag.patch} (100%) rename patches/server/{0394-Optimize-brigadier-child-sorting-performance.patch => 0395-Optimize-brigadier-child-sorting-performance.patch} (100%) rename patches/server/{0395-Potential-bed-API.patch => 0396-Potential-bed-API.patch} (100%) rename patches/server/{0396-Wait-for-Async-Tasks-during-shutdown.patch => 0397-Wait-for-Async-Tasks-during-shutdown.patch} (90%) rename patches/server/{0397-Ensure-EntityRaider-respects-game-and-entity-rules-f.patch => 0398-Ensure-EntityRaider-respects-game-and-entity-rules-f.patch} (100%) rename patches/server/{0398-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch => 0399-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch} (99%) rename patches/server/{0399-Ensure-safe-gateway-teleport.patch => 0400-Ensure-safe-gateway-teleport.patch} (100%) rename patches/server/{0400-Add-option-for-console-having-all-permissions.patch => 0401-Add-option-for-console-having-all-permissions.patch} (100%) rename patches/server/{0401-Fix-villager-trading-demand-MC-163962.patch => 0402-Fix-villager-trading-demand-MC-163962.patch} (100%) rename patches/server/{0402-Maps-shouldn-t-load-chunks.patch => 0403-Maps-shouldn-t-load-chunks.patch} (100%) rename patches/server/{0403-Use-seed-based-lookup-for-Treasure-Maps-Fixes-lag-fr.patch => 0404-Use-seed-based-lookup-for-Treasure-Maps-Fixes-lag-fr.patch} (100%) rename patches/server/{0404-Fix-CraftScheduler-runTaskTimerAsynchronously-Plugin.patch => 0405-Fix-CraftScheduler-runTaskTimerAsynchronously-Plugin.patch} (100%) rename patches/server/{0405-Fix-piston-physics-inconsistency-MC-188840.patch => 0406-Fix-piston-physics-inconsistency-MC-188840.patch} (100%) rename patches/server/{0406-Fix-sand-duping.patch => 0407-Fix-sand-duping.patch} (100%) rename patches/server/{0407-Fix-missing-chunks-due-to-integer-overflow.patch => 0408-Fix-missing-chunks-due-to-integer-overflow.patch} (100%) rename patches/server/{0408-Prevent-position-desync-in-playerconnection-causing-.patch => 0409-Prevent-position-desync-in-playerconnection-causing-.patch} (91%) rename patches/server/{0409-Inventory-getHolder-method-without-block-snapshot.patch => 0410-Inventory-getHolder-method-without-block-snapshot.patch} (100%) rename patches/server/{0410-Improve-Arrow-API.patch => 0411-Improve-Arrow-API.patch} (100%) rename patches/server/{0411-Add-and-implement-PlayerRecipeBookClickEvent.patch => 0412-Add-and-implement-PlayerRecipeBookClickEvent.patch} (95%) rename patches/server/{0412-Hide-sync-chunk-writes-behind-flag.patch => 0413-Hide-sync-chunk-writes-behind-flag.patch} (100%) rename patches/server/{0413-Add-permission-for-command-blocks.patch => 0414-Add-permission-for-command-blocks.patch} (96%) rename patches/server/{0414-Ensure-Entity-AABB-s-are-never-invalid.patch => 0415-Ensure-Entity-AABB-s-are-never-invalid.patch} (74%) rename patches/server/{0415-Fix-Per-World-Difficulty-Remembering-Difficulty.patch => 0416-Fix-Per-World-Difficulty-Remembering-Difficulty.patch} (90%) rename patches/server/{0416-Paper-dumpitem-command.patch => 0417-Paper-dumpitem-command.patch} (94%) rename patches/server/{0417-Improve-Legacy-Component-serialization-size.patch => 0418-Improve-Legacy-Component-serialization-size.patch} (100%) rename patches/server/{0418-Optimize-Bit-Operations-by-inlining.patch => 0419-Optimize-Bit-Operations-by-inlining.patch} (100%) rename patches/server/{0419-Add-Plugin-Tickets-to-API-Chunk-Methods.patch => 0420-Add-Plugin-Tickets-to-API-Chunk-Methods.patch} (94%) rename patches/server/{0420-incremental-chunk-and-player-saving.patch => 0421-incremental-chunk-and-player-saving.patch} (89%) rename patches/server/{0421-Support-old-UUID-format-for-NBT.patch => 0422-Support-old-UUID-format-for-NBT.patch} (100%) rename patches/server/{0422-Convert-legacy-attributes-in-Item-Meta.patch => 0423-Convert-legacy-attributes-in-Item-Meta.patch} (100%) rename patches/server/{0423-Remove-some-streams-from-structures.patch => 0424-Remove-some-streams-from-structures.patch} (100%) rename patches/server/{0424-Remove-streams-from-classes-related-villager-gossip.patch => 0425-Remove-streams-from-classes-related-villager-gossip.patch} (100%) rename patches/server/{0425-Support-components-in-ItemMeta.patch => 0426-Support-components-in-ItemMeta.patch} (100%) rename patches/server/{0426-Improve-fix-EntityTargetLivingEntityEvent.patch => 0427-Improve-fix-EntityTargetLivingEntityEvent.patch} (100%) rename patches/server/{0427-Add-entity-liquid-API.patch => 0428-Add-entity-liquid-API.patch} (100%) rename patches/server/{0428-Update-itemstack-legacy-name-and-lore.patch => 0429-Update-itemstack-legacy-name-and-lore.patch} (100%) rename patches/server/{0429-Spawn-player-in-correct-world-on-login.patch => 0430-Spawn-player-in-correct-world-on-login.patch} (94%) rename patches/server/{0430-Add-PrepareResultEvent.patch => 0431-Add-PrepareResultEvent.patch} (100%) rename patches/server/{0431-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch => 0432-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch} (100%) rename patches/server/{0432-Fix-arrows-never-despawning-MC-125757.patch => 0433-Fix-arrows-never-despawning-MC-125757.patch} (100%) rename patches/server/{0433-Thread-Safe-Vanilla-Command-permission-checking.patch => 0434-Thread-Safe-Vanilla-Command-permission-checking.patch} (100%) rename patches/server/{0434-Fix-SPIGOT-5989.patch => 0435-Fix-SPIGOT-5989.patch} (97%) rename patches/server/{0435-Fix-SPIGOT-5824-Bukkit-world-container-is-not-used.patch => 0436-Fix-SPIGOT-5824-Bukkit-world-container-is-not-used.patch} (97%) rename patches/server/{0436-Fix-SPIGOT-5885-Unable-to-disable-advancements.patch => 0437-Fix-SPIGOT-5885-Unable-to-disable-advancements.patch} (89%) rename patches/server/{0437-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch => 0438-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch} (100%) rename patches/server/{0438-Fix-some-rails-connecting-improperly.patch => 0439-Fix-some-rails-connecting-improperly.patch} (100%) rename patches/server/{0439-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch => 0440-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch} (100%) rename patches/server/{0440-Brand-support.patch => 0441-Brand-support.patch} (95%) rename patches/server/{0441-Add-playPickupItemAnimation-to-LivingEntity.patch => 0442-Add-playPickupItemAnimation-to-LivingEntity.patch} (100%) rename patches/server/{0442-Don-t-require-FACING-data.patch => 0443-Don-t-require-FACING-data.patch} (100%) rename patches/server/{0443-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch => 0444-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch} (90%) rename patches/server/{0444-Add-moon-phase-API.patch => 0445-Add-moon-phase-API.patch} (100%) rename patches/server/{0445-Prevent-headless-pistons-from-being-created.patch => 0446-Prevent-headless-pistons-from-being-created.patch} (100%) rename patches/server/{0446-Add-BellRingEvent.patch => 0447-Add-BellRingEvent.patch} (100%) rename patches/server/{0447-Add-zombie-targets-turtle-egg-config.patch => 0448-Add-zombie-targets-turtle-egg-config.patch} (100%) rename patches/server/{0448-Buffer-joins-to-world.patch => 0449-Buffer-joins-to-world.patch} (90%) rename patches/server/{0449-Eigencraft-redstone-implementation.patch => 0450-Eigencraft-redstone-implementation.patch} (100%) rename patches/server/{0450-Fix-hex-colors-not-working-in-some-kick-messages.patch => 0451-Fix-hex-colors-not-working-in-some-kick-messages.patch} (100%) rename patches/server/{0451-PortalCreateEvent-needs-to-know-its-entity.patch => 0452-PortalCreateEvent-needs-to-know-its-entity.patch} (100%) rename patches/server/{0452-Add-more-Evoker-API.patch => 0453-Add-more-Evoker-API.patch} (100%) rename patches/server/{0453-Add-methods-to-get-translation-keys.patch => 0454-Add-methods-to-get-translation-keys.patch} (100%) rename patches/server/{0454-Create-HoverEvent-from-ItemStack-Entity.patch => 0455-Create-HoverEvent-from-ItemStack-Entity.patch} (100%) rename patches/server/{0455-Cache-block-data-strings.patch => 0456-Cache-block-data-strings.patch} (95%) rename patches/server/{0456-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch => 0457-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch} (93%) rename patches/server/{0457-Add-additional-open-container-api-to-HumanEntity.patch => 0458-Add-additional-open-container-api-to-HumanEntity.patch} (100%) rename patches/server/{0458-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch => 0459-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch} (100%) rename patches/server/{0459-Extend-block-drop-capture-to-capture-all-items-added.patch => 0460-Extend-block-drop-capture-to-capture-all-items-added.patch} (94%) rename patches/server/{0460-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch => 0461-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch} (90%) rename patches/server/{0461-Lazily-track-plugin-scoreboards-by-default.patch => 0462-Lazily-track-plugin-scoreboards-by-default.patch} (100%) rename patches/server/{0462-Entity-isTicking.patch => 0463-Entity-isTicking.patch} (89%) rename patches/server/{0463-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch => 0464-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch} (90%) rename patches/server/{0464-Fix-Concurrency-issue-in-ShufflingList.patch => 0465-Fix-Concurrency-issue-in-ShufflingList.patch} (100%) rename patches/server/{0465-Reset-Ender-Crystals-on-Dragon-Spawn.patch => 0466-Reset-Ender-Crystals-on-Dragon-Spawn.patch} (100%) rename patches/server/{0466-Fix-for-large-move-vectors-crashing-server.patch => 0467-Fix-for-large-move-vectors-crashing-server.patch} (96%) rename patches/server/{0467-Optimise-getType-calls.patch => 0468-Optimise-getType-calls.patch} (100%) rename patches/server/{0468-Villager-resetOffers.patch => 0469-Villager-resetOffers.patch} (100%) rename patches/server/{0469-Retain-block-place-order-when-capturing-blockstates.patch => 0470-Retain-block-place-order-when-capturing-blockstates.patch} (93%) rename patches/server/{0470-Reduce-blockpos-allocation-from-pathfinding.patch => 0471-Reduce-blockpos-allocation-from-pathfinding.patch} (100%) rename patches/server/{0471-Fix-item-locations-dropped-from-campfires.patch => 0472-Fix-item-locations-dropped-from-campfires.patch} (100%) rename patches/server/{0472-Player-elytra-boost-API.patch => 0473-Player-elytra-boost-API.patch} (90%) rename patches/server/{0473-Fixed-TileEntityBell-memory-leak.patch => 0474-Fixed-TileEntityBell-memory-leak.patch} (100%) rename patches/server/{0474-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch => 0475-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch} (100%) rename patches/server/{0475-Add-getOfflinePlayerIfCached-String.patch => 0476-Add-getOfflinePlayerIfCached-String.patch} (93%) rename patches/server/{0476-Add-ignore-discounts-API.patch => 0477-Add-ignore-discounts-API.patch} (100%) rename patches/server/{0477-Toggle-for-removing-existing-dragon.patch => 0478-Toggle-for-removing-existing-dragon.patch} (100%) rename patches/server/{0478-Fix-client-lag-on-advancement-loading.patch => 0479-Fix-client-lag-on-advancement-loading.patch} (100%) rename patches/server/{0479-Item-no-age-no-player-pickup.patch => 0480-Item-no-age-no-player-pickup.patch} (100%) rename patches/server/{0480-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch => 0481-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch} (100%) rename patches/server/{0481-Beacon-API-custom-effect-ranges.patch => 0482-Beacon-API-custom-effect-ranges.patch} (100%) rename patches/server/{0482-Add-API-for-quit-reason.patch => 0483-Add-API-for-quit-reason.patch} (87%) rename patches/server/{0483-Add-Wandering-Trader-spawn-rate-config-options.patch => 0484-Add-Wandering-Trader-spawn-rate-config-options.patch} (100%) rename patches/server/{0484-Expose-world-spawn-angle.patch => 0485-Expose-world-spawn-angle.patch} (91%) rename patches/server/{0485-Add-Destroy-Speed-API.patch => 0486-Add-Destroy-Speed-API.patch} (100%) rename patches/server/{0486-Fix-Player-spawnParticle-x-y-z-precision-loss.patch => 0487-Fix-Player-spawnParticle-x-y-z-precision-loss.patch} (89%) rename patches/server/{0487-Add-LivingEntity-clearActiveItem.patch => 0488-Add-LivingEntity-clearActiveItem.patch} (100%) rename patches/server/{0488-Add-PlayerItemCooldownEvent.patch => 0489-Add-PlayerItemCooldownEvent.patch} (100%) rename patches/server/{0489-Significantly-improve-performance-of-the-end-generat.patch => 0490-Significantly-improve-performance-of-the-end-generat.patch} (100%) rename patches/server/{0490-More-lightning-API.patch => 0491-More-lightning-API.patch} (100%) rename patches/server/{0491-Climbing-should-not-bypass-cramming-gamerule.patch => 0492-Climbing-should-not-bypass-cramming-gamerule.patch} (98%) rename patches/server/{0492-Added-missing-default-perms-for-commands.patch => 0493-Added-missing-default-perms-for-commands.patch} (100%) rename patches/server/{0493-Add-PlayerShearBlockEvent.patch => 0494-Add-PlayerShearBlockEvent.patch} (100%) rename patches/server/{0494-Fix-curing-zombie-villager-discount-exploit.patch => 0495-Fix-curing-zombie-villager-discount-exploit.patch} (100%) rename patches/server/{0495-Limit-recipe-packets.patch => 0496-Limit-recipe-packets.patch} (94%) rename patches/server/{0496-Fix-CraftSound-backwards-compatibility.patch => 0497-Fix-CraftSound-backwards-compatibility.patch} (100%) delete mode 100644 patches/server/0497-Player-Chunk-Load-Unload-Events.patch create mode 100644 patches/server/0498-Player-Chunk-Load-Unload-Events.patch rename patches/server/{0498-Optimize-Dynamic-get-Missing-Keys.patch => 0499-Optimize-Dynamic-get-Missing-Keys.patch} (100%) rename patches/server/{0499-Expose-LivingEntity-hurt-direction.patch => 0500-Expose-LivingEntity-hurt-direction.patch} (100%) rename patches/server/{0500-Add-OBSTRUCTED-reason-to-BedEnterResult.patch => 0501-Add-OBSTRUCTED-reason-to-BedEnterResult.patch} (100%) rename patches/server/{0501-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch => 0502-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch} (100%) rename patches/server/{0502-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch => 0503-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch} (100%) rename patches/server/{0503-Implement-TargetHitEvent.patch => 0504-Implement-TargetHitEvent.patch} (100%) rename patches/server/{0504-MC-4-Fix-item-position-desync.patch => 0505-MC-4-Fix-item-position-desync.patch} (88%) rename patches/server/{0505-Additional-Block-Material-API-s.patch => 0506-Additional-Block-Material-API-s.patch} (100%) rename patches/server/{0506-Fix-harming-potion-dupe.patch => 0507-Fix-harming-potion-dupe.patch} (100%) rename patches/server/{0507-Implement-API-to-get-Material-from-Boats-and-Minecar.patch => 0508-Implement-API-to-get-Material-from-Boats-and-Minecar.patch} (100%) rename patches/server/{0508-Cache-burn-durations.patch => 0509-Cache-burn-durations.patch} (100%) rename patches/server/{0509-Allow-disabling-mob-spawner-spawn-egg-transformation.patch => 0510-Allow-disabling-mob-spawner-spawn-egg-transformation.patch} (100%) rename patches/server/{0510-Fix-Not-a-string-Map-Conversion-spam.patch => 0511-Fix-Not-a-string-Map-Conversion-spam.patch} (100%) rename patches/server/{0511-Implement-PlayerFlowerPotManipulateEvent.patch => 0512-Implement-PlayerFlowerPotManipulateEvent.patch} (100%) rename patches/server/{0512-Fix-interact-event-not-being-called-sometimes.patch => 0513-Fix-interact-event-not-being-called-sometimes.patch} (94%) rename patches/server/{0513-Zombie-API-breaking-doors.patch => 0514-Zombie-API-breaking-doors.patch} (100%) rename patches/server/{0514-Fix-nerfed-slime-when-splitting.patch => 0515-Fix-nerfed-slime-when-splitting.patch} (100%) rename patches/server/{0515-Add-EntityLoadCrossbowEvent.patch => 0516-Add-EntityLoadCrossbowEvent.patch} (100%) rename patches/server/{0516-Added-WorldGameRuleChangeEvent.patch => 0517-Added-WorldGameRuleChangeEvent.patch} (96%) rename patches/server/{0517-Added-ServerResourcesReloadedEvent.patch => 0518-Added-ServerResourcesReloadedEvent.patch} (93%) rename patches/server/{0518-Added-world-settings-for-mobs-picking-up-loot.patch => 0519-Added-world-settings-for-mobs-picking-up-loot.patch} (100%) rename patches/server/{0519-Implemented-BlockFailedDispenseEvent.patch => 0520-Implemented-BlockFailedDispenseEvent.patch} (100%) rename patches/server/{0520-Added-PlayerLecternPageChangeEvent.patch => 0521-Added-PlayerLecternPageChangeEvent.patch} (100%) rename patches/server/{0521-Added-PlayerLoomPatternSelectEvent.patch => 0522-Added-PlayerLoomPatternSelectEvent.patch} (100%) rename patches/server/{0522-Configurable-door-breaking-difficulty.patch => 0523-Configurable-door-breaking-difficulty.patch} (100%) rename patches/server/{0523-Empty-commands-shall-not-be-dispatched.patch => 0524-Empty-commands-shall-not-be-dispatched.patch} (100%) rename patches/server/{0524-Remove-stale-POIs.patch => 0525-Remove-stale-POIs.patch} (86%) rename patches/server/{0525-Fix-villager-boat-exploit.patch => 0526-Fix-villager-boat-exploit.patch} (93%) rename patches/server/{0526-Add-sendOpLevel-API.patch => 0527-Add-sendOpLevel-API.patch} (89%) rename patches/server/{0527-TODO-Registry-Modification-API.patch => 0528-TODO-Registry-Modification-API.patch} (100%) rename patches/server/{0528-Add-StructuresLocateEvent.patch => 0529-Add-StructuresLocateEvent.patch} (99%) rename patches/server/{0529-Collision-option-for-requiring-a-player-participant.patch => 0530-Collision-option-for-requiring-a-player-participant.patch} (94%) rename patches/server/{0530-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch => 0531-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch} (100%) rename patches/server/{0531-Return-chat-component-with-empty-text-instead-of-thr.patch => 0532-Return-chat-component-with-empty-text-instead-of-thr.patch} (100%) rename patches/server/{0532-Make-schedule-command-per-world.patch => 0533-Make-schedule-command-per-world.patch} (100%) rename patches/server/{0533-Configurable-max-leash-distance.patch => 0534-Configurable-max-leash-distance.patch} (100%) rename patches/server/{0534-Implement-BlockPreDispenseEvent.patch => 0535-Implement-BlockPreDispenseEvent.patch} (100%) rename patches/server/{0535-Added-firing-of-PlayerChangeBeaconEffectEvent.patch => 0536-Added-firing-of-PlayerChangeBeaconEffectEvent.patch} (100%) rename patches/server/{0536-Add-toggle-for-always-placing-the-dragon-egg.patch => 0537-Add-toggle-for-always-placing-the-dragon-egg.patch} (100%) rename patches/server/{0537-Added-PlayerStonecutterRecipeSelectEvent.patch => 0538-Added-PlayerStonecutterRecipeSelectEvent.patch} (100%) rename patches/server/{0538-Add-dropLeash-variable-to-EntityUnleashEvent.patch => 0539-Add-dropLeash-variable-to-EntityUnleashEvent.patch} (100%) rename patches/server/{0539-Reset-shield-blocking-on-dimension-change.patch => 0540-Reset-shield-blocking-on-dimension-change.patch} (83%) rename patches/server/{0540-add-DragonEggFormEvent.patch => 0541-add-DragonEggFormEvent.patch} (100%) rename patches/server/{0541-EntityMoveEvent.patch => 0542-EntityMoveEvent.patch} (93%) rename patches/server/{0542-added-option-to-disable-pathfinding-updates-on-block.patch => 0543-added-option-to-disable-pathfinding-updates-on-block.patch} (80%) rename patches/server/{0543-Inline-shift-direction-fields.patch => 0544-Inline-shift-direction-fields.patch} (100%) rename patches/server/{0544-Allow-adding-items-to-BlockDropItemEvent.patch => 0545-Allow-adding-items-to-BlockDropItemEvent.patch} (100%) rename patches/server/{0545-Add-getMainThreadExecutor-to-BukkitScheduler.patch => 0546-Add-getMainThreadExecutor-to-BukkitScheduler.patch} (100%) rename patches/server/{0546-living-entity-allow-attribute-registration.patch => 0547-living-entity-allow-attribute-registration.patch} (100%) rename patches/server/{0547-fix-dead-slime-setSize-invincibility.patch => 0548-fix-dead-slime-setSize-invincibility.patch} (100%) rename patches/server/{0548-Merchant-getRecipes-should-return-an-immutable-list.patch => 0549-Merchant-getRecipes-should-return-an-immutable-list.patch} (100%) rename patches/server/{0549-Expose-Tracked-Players.patch => 0550-Expose-Tracked-Players.patch} (100%) rename patches/server/{0550-Remove-streams-from-SensorNearest.patch => 0551-Remove-streams-from-SensorNearest.patch} (100%) rename patches/server/{0551-Improve-ServerGUI.patch => 0552-Improve-ServerGUI.patch} (100%) rename patches/server/{0552-fix-converting-txt-to-json-file.patch => 0553-fix-converting-txt-to-json-file.patch} (94%) rename patches/server/{0553-Add-worldborder-events.patch => 0554-Add-worldborder-events.patch} (100%) rename patches/server/{0554-added-PlayerNameEntityEvent.patch => 0555-added-PlayerNameEntityEvent.patch} (100%) rename patches/server/{0555-Prevent-grindstones-from-overstacking-items.patch => 0556-Prevent-grindstones-from-overstacking-items.patch} (100%) rename patches/server/{0556-Add-recipe-to-cook-events.patch => 0557-Add-recipe-to-cook-events.patch} (100%) rename patches/server/{0557-Add-Block-isValidTool.patch => 0558-Add-Block-isValidTool.patch} (100%) rename patches/server/{0558-Allow-using-signs-inside-spawn-protection.patch => 0559-Allow-using-signs-inside-spawn-protection.patch} (91%) rename patches/server/{0559-Expand-world-key-API.patch => 0560-Expand-world-key-API.patch} (97%) rename patches/server/{0560-Add-fast-alternative-constructor-for-Rotations.patch => 0561-Add-fast-alternative-constructor-for-Rotations.patch} (100%) rename patches/server/{0561-Item-Rarity-API.patch => 0562-Item-Rarity-API.patch} (100%) rename patches/server/{0562-Drop-carried-item-when-player-has-disconnected.patch => 0563-Drop-carried-item-when-player-has-disconnected.patch} (92%) rename patches/server/{0563-forced-whitelist-use-configurable-kick-message.patch => 0564-forced-whitelist-use-configurable-kick-message.patch} (87%) rename patches/server/{0564-Don-t-ignore-result-of-PlayerEditBookEvent.patch => 0565-Don-t-ignore-result-of-PlayerEditBookEvent.patch} (86%) rename patches/server/{0565-Expose-protocol-version.patch => 0566-Expose-protocol-version.patch} (100%) rename patches/server/{0566-Enhance-console-tab-completions-for-brigadier-comman.patch => 0567-Enhance-console-tab-completions-for-brigadier-comman.patch} (99%) rename patches/server/{0567-Fix-PlayerItemConsumeEvent-cancelling-properly.patch => 0568-Fix-PlayerItemConsumeEvent-cancelling-properly.patch} (100%) rename patches/server/{0568-Add-bypass-host-check.patch => 0569-Add-bypass-host-check.patch} (100%) rename patches/server/{0569-Set-area-affect-cloud-rotation.patch => 0570-Set-area-affect-cloud-rotation.patch} (100%) rename patches/server/{0570-add-isDeeplySleeping-to-HumanEntity.patch => 0571-add-isDeeplySleeping-to-HumanEntity.patch} (100%) rename patches/server/{0571-add-consumeFuel-to-FurnaceBurnEvent.patch => 0572-add-consumeFuel-to-FurnaceBurnEvent.patch} (100%) rename patches/server/{0572-add-get-set-drop-chance-to-EntityEquipment.patch => 0573-add-get-set-drop-chance-to-EntityEquipment.patch} (100%) rename patches/server/{0573-fix-PigZombieAngerEvent-cancellation.patch => 0574-fix-PigZombieAngerEvent-cancellation.patch} (100%) rename patches/server/{0574-fix-PlayerItemHeldEvent-firing-twice.patch => 0575-fix-PlayerItemHeldEvent-firing-twice.patch} (88%) rename patches/server/{0575-Added-PlayerDeepSleepEvent.patch => 0576-Added-PlayerDeepSleepEvent.patch} (100%) rename patches/server/{0576-More-World-API.patch => 0577-More-World-API.patch} (96%) rename patches/server/{0577-Added-PlayerBedFailEnterEvent.patch => 0578-Added-PlayerBedFailEnterEvent.patch} (100%) rename patches/server/{0578-Implement-methods-to-convert-between-Component-and-B.patch => 0579-Implement-methods-to-convert-between-Component-and-B.patch} (96%) rename patches/server/{0579-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch => 0580-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch} (95%) rename patches/server/{0580-Introduce-beacon-activation-deactivation-events.patch => 0581-Introduce-beacon-activation-deactivation-events.patch} (100%) rename patches/server/{0581-add-RespawnFlags-to-PlayerRespawnEvent.patch => 0582-add-RespawnFlags-to-PlayerRespawnEvent.patch} (92%) rename patches/server/{0582-Add-Channel-initialization-listeners.patch => 0583-Add-Channel-initialization-listeners.patch} (96%) rename patches/server/{0583-Send-empty-commands-if-tab-completion-is-disabled.patch => 0584-Send-empty-commands-if-tab-completion-is-disabled.patch} (100%) rename patches/server/{0584-Add-more-WanderingTrader-API.patch => 0585-Add-more-WanderingTrader-API.patch} (100%) rename patches/server/{0585-Add-EntityBlockStorage-clearEntities.patch => 0586-Add-EntityBlockStorage-clearEntities.patch} (100%) rename patches/server/{0586-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch => 0587-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch} (100%) rename patches/server/{0587-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch => 0588-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch} (100%) rename patches/server/{0588-Inventory-close.patch => 0589-Inventory-close.patch} (100%) rename patches/server/{0589-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch => 0590-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch} (100%) rename patches/server/{0590-Fix-CraftPotionBrewer-cache.patch => 0591-Fix-CraftPotionBrewer-cache.patch} (100%) rename patches/server/{0591-Add-basic-Datapack-API.patch => 0592-Add-basic-Datapack-API.patch} (98%) rename patches/server/{0592-Add-environment-variable-to-disable-server-gui.patch => 0593-Add-environment-variable-to-disable-server-gui.patch} (85%) rename patches/server/{0593-additions-to-PlayerGameModeChangeEvent.patch => 0594-additions-to-PlayerGameModeChangeEvent.patch} (93%) rename patches/server/{0594-ItemStack-repair-check-API.patch => 0595-ItemStack-repair-check-API.patch} (100%) rename patches/server/{0595-More-Enchantment-API.patch => 0596-More-Enchantment-API.patch} (100%) rename patches/server/{0596-Move-range-check-for-block-placing-up.patch => 0597-Move-range-check-for-block-placing-up.patch} (87%) rename patches/server/{0597-Fix-and-optimise-world-force-upgrading.patch => 0598-Fix-and-optimise-world-force-upgrading.patch} (95%) rename patches/server/{0598-Add-Mob-lookAt-API.patch => 0599-Add-Mob-lookAt-API.patch} (100%) rename patches/server/{0599-Add-Unix-domain-socket-support.patch => 0600-Add-Unix-domain-socket-support.patch} (97%) rename patches/server/{0600-Add-EntityInsideBlockEvent.patch => 0601-Add-EntityInsideBlockEvent.patch} (100%) rename patches/server/{0601-Attributes-API-for-item-defaults.patch => 0602-Attributes-API-for-item-defaults.patch} (100%) rename patches/server/{0602-Add-cause-to-Weather-ThunderChangeEvents.patch => 0603-Add-cause-to-Weather-ThunderChangeEvents.patch} (92%) rename patches/server/{0603-More-Lidded-Block-API.patch => 0604-More-Lidded-Block-API.patch} (100%) rename patches/server/{0604-Limit-item-frame-cursors-on-maps.patch => 0605-Limit-item-frame-cursors-on-maps.patch} (100%) rename patches/server/{0605-Add-PlayerKickEvent-causes.patch => 0606-Add-PlayerKickEvent-causes.patch} (95%) rename patches/server/{0606-Add-PufferFishStateChangeEvent.patch => 0607-Add-PufferFishStateChangeEvent.patch} (100%) rename patches/server/{0607-Fix-PlayerBucketEmptyEvent-result-itemstack.patch => 0608-Fix-PlayerBucketEmptyEvent-result-itemstack.patch} (100%) rename patches/server/{0608-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch => 0609-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch} (100%) rename patches/server/{0609-Add-option-to-fix-items-merging-through-walls.patch => 0610-Add-option-to-fix-items-merging-through-walls.patch} (100%) rename patches/server/{0610-Add-BellRevealRaiderEvent.patch => 0611-Add-BellRevealRaiderEvent.patch} (100%) rename patches/server/{0611-Fix-invulnerable-end-crystals.patch => 0612-Fix-invulnerable-end-crystals.patch} (100%) rename patches/server/{0612-Add-ElderGuardianAppearanceEvent.patch => 0613-Add-ElderGuardianAppearanceEvent.patch} (100%) rename patches/server/{0613-Fix-dangerous-end-portal-logic.patch => 0614-Fix-dangerous-end-portal-logic.patch} (93%) rename patches/server/{0614-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch => 0615-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch} (100%) rename patches/server/{0615-Make-item-validations-configurable.patch => 0616-Make-item-validations-configurable.patch} (100%) rename patches/server/{0616-Line-Of-Sight-Changes.patch => 0617-Line-Of-Sight-Changes.patch} (100%) rename patches/server/{0617-add-per-world-spawn-limits.patch => 0618-add-per-world-spawn-limits.patch} (91%) rename patches/server/{0618-Fix-potions-splash-events.patch => 0619-Fix-potions-splash-events.patch} (100%) rename patches/server/{0619-Add-more-LimitedRegion-API.patch => 0620-Add-more-LimitedRegion-API.patch} (100%) rename patches/server/{0620-Fix-PlayerDropItemEvent-using-wrong-item.patch => 0621-Fix-PlayerDropItemEvent-using-wrong-item.patch} (91%) rename patches/server/{0621-Missing-Entity-API.patch => 0622-Missing-Entity-API.patch} (100%) rename patches/server/{0622-Ensure-disconnect-for-book-edit-is-called-on-main.patch => 0623-Ensure-disconnect-for-book-edit-is-called-on-main.patch} (88%) rename patches/server/{0623-Fix-return-value-of-Block-applyBoneMeal-always-being.patch => 0624-Fix-return-value-of-Block-applyBoneMeal-always-being.patch} (100%) rename patches/server/{0624-Use-getChunkIfLoadedImmediately-in-places.patch => 0625-Use-getChunkIfLoadedImmediately-in-places.patch} (94%) rename patches/server/{0625-Fix-commands-from-signs-not-firing-command-events.patch => 0626-Fix-commands-from-signs-not-firing-command-events.patch} (100%) rename patches/server/{0626-Adds-PlayerArmSwingEvent.patch => 0627-Adds-PlayerArmSwingEvent.patch} (88%) rename patches/server/{0627-Fixes-kick-event-leave-message-not-being-sent.patch => 0628-Fixes-kick-event-leave-message-not-being-sent.patch} (94%) rename patches/server/{0628-Add-config-for-mobs-immune-to-default-effects.patch => 0629-Add-config-for-mobs-immune-to-default-effects.patch} (100%) rename patches/server/{0629-Fix-incorrect-message-for-outdated-client.patch => 0630-Fix-incorrect-message-for-outdated-client.patch} (100%) rename patches/server/{0630-Don-t-apply-cramming-damage-to-players.patch => 0631-Don-t-apply-cramming-damage-to-players.patch} (90%) rename patches/server/{0631-Rate-options-and-timings-for-sensors-and-behaviors.patch => 0632-Rate-options-and-timings-for-sensors-and-behaviors.patch} (100%) rename patches/server/{0632-Add-a-bunch-of-missing-forceDrop-toggles.patch => 0633-Add-a-bunch-of-missing-forceDrop-toggles.patch} (100%) rename patches/server/{0633-Stinger-API.patch => 0634-Stinger-API.patch} (100%) rename patches/server/{0634-Fix-incosistency-issue-with-empty-map-items-in-CB.patch => 0635-Fix-incosistency-issue-with-empty-map-items-in-CB.patch} (100%) rename patches/server/{0635-Add-System.out-err-catcher.patch => 0636-Add-System.out-err-catcher.patch} (98%) rename patches/server/{0636-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch => 0637-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch} (100%) rename patches/server/{0637-Improve-boat-collision-performance.patch => 0638-Improve-boat-collision-performance.patch} (100%) rename patches/server/{0638-Prevent-AFK-kick-while-watching-end-credits.patch => 0639-Prevent-AFK-kick-while-watching-end-credits.patch} (93%) rename patches/server/{0639-Allow-skipping-writing-of-comments-to-server.propert.patch => 0640-Allow-skipping-writing-of-comments-to-server.propert.patch} (100%) rename patches/server/{0640-Add-PlayerSetSpawnEvent.patch => 0641-Add-PlayerSetSpawnEvent.patch} (95%) rename patches/server/{0641-Make-hoppers-respect-inventory-max-stack-size.patch => 0642-Make-hoppers-respect-inventory-max-stack-size.patch} (100%) rename patches/server/{0642-Optimize-entity-tracker-passenger-checks.patch => 0643-Optimize-entity-tracker-passenger-checks.patch} (100%) rename patches/server/{0643-Config-option-for-Piglins-guarding-chests.patch => 0644-Config-option-for-Piglins-guarding-chests.patch} (100%) rename patches/server/{0644-Added-EntityDamageItemEvent.patch => 0645-Added-EntityDamageItemEvent.patch} (100%) rename patches/server/{0645-Optimize-indirect-passenger-iteration.patch => 0646-Optimize-indirect-passenger-iteration.patch} (87%) rename patches/server/{0646-Configurable-item-frame-map-cursor-update-interval.patch => 0647-Configurable-item-frame-map-cursor-update-interval.patch} (100%) rename patches/server/{0647-Make-EntityUnleashEvent-cancellable.patch => 0648-Make-EntityUnleashEvent-cancellable.patch} (100%) rename patches/server/{0648-Clear-bucket-NBT-after-dispense.patch => 0649-Clear-bucket-NBT-after-dispense.patch} (100%) rename patches/server/{0649-Change-EnderEye-target-without-changing-other-things.patch => 0650-Change-EnderEye-target-without-changing-other-things.patch} (100%) rename patches/server/{0650-Add-BlockBreakBlockEvent.patch => 0651-Add-BlockBreakBlockEvent.patch} (100%) rename patches/server/{0651-Option-to-prevent-NBT-copy-in-smithing-recipes.patch => 0652-Option-to-prevent-NBT-copy-in-smithing-recipes.patch} (100%) rename patches/server/{0652-More-CommandBlock-API.patch => 0653-More-CommandBlock-API.patch} (100%) rename patches/server/{0653-Add-missing-team-sidebar-display-slots.patch => 0654-Add-missing-team-sidebar-display-slots.patch} (100%) rename patches/server/{0654-Add-back-EntityPortalExitEvent.patch => 0655-Add-back-EntityPortalExitEvent.patch} (93%) rename patches/server/{0655-Add-methods-to-find-targets-for-lightning-strikes.patch => 0656-Add-methods-to-find-targets-for-lightning-strikes.patch} (87%) rename patches/server/{0656-Get-entity-default-attributes.patch => 0657-Get-entity-default-attributes.patch} (100%) rename patches/server/{0657-Left-handed-API.patch => 0658-Left-handed-API.patch} (100%) rename patches/server/{0658-Add-more-advancement-API.patch => 0659-Add-more-advancement-API.patch} (100%) rename patches/server/{0659-Add-ItemFactory-getSpawnEgg-API.patch => 0660-Add-ItemFactory-getSpawnEgg-API.patch} (100%) rename patches/server/{0660-Add-critical-damage-API.patch => 0661-Add-critical-damage-API.patch} (100%) rename patches/server/{0661-Fix-issues-with-mob-conversion.patch => 0662-Fix-issues-with-mob-conversion.patch} (100%) rename patches/server/{0662-Add-isCollidable-methods-to-various-places.patch => 0663-Add-isCollidable-methods-to-various-places.patch} (100%) rename patches/server/{0663-Goat-ram-API.patch => 0664-Goat-ram-API.patch} (100%) rename patches/server/{0664-Add-API-for-resetting-a-single-score.patch => 0665-Add-API-for-resetting-a-single-score.patch} (100%) rename patches/server/{0665-Add-Raw-Byte-Entity-Serialization.patch => 0666-Add-Raw-Byte-Entity-Serialization.patch} (96%) rename patches/server/{0666-Vanilla-command-permission-fixes.patch => 0667-Vanilla-command-permission-fixes.patch} (100%) rename patches/server/{0667-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch => 0668-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch} (92%) rename patches/server/{0668-Fix-GameProfileCache-concurrency.patch => 0669-Fix-GameProfileCache-concurrency.patch} (100%) rename patches/server/{0669-Improve-and-expand-AsyncCatcher.patch => 0670-Improve-and-expand-AsyncCatcher.patch} (95%) rename patches/server/{0670-Add-paper-mobcaps-and-paper-playermobcaps.patch => 0671-Add-paper-mobcaps-and-paper-playermobcaps.patch} (96%) rename patches/server/{0671-Sanitize-ResourceLocation-error-logging.patch => 0672-Sanitize-ResourceLocation-error-logging.patch} (100%) rename patches/server/{0672-Optimise-general-POI-access.patch => 0673-Optimise-general-POI-access.patch} (99%) rename patches/server/{0673-Custom-table-implementation-for-blockstate-state-loo.patch => 0674-Custom-table-implementation-for-blockstate-state-loo.patch} (100%) rename patches/server/{0674-Manually-inline-methods-in-BlockPosition.patch => 0675-Manually-inline-methods-in-BlockPosition.patch} (100%) rename patches/server/{0675-Name-craft-scheduler-threads-according-to-the-plugin.patch => 0676-Name-craft-scheduler-threads-according-to-the-plugin.patch} (100%) rename patches/server/{0676-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch => 0677-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch} (94%) rename patches/server/{0677-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch => 0678-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch} (77%) rename patches/server/{0678-Don-t-lookup-fluid-state-when-raytracing.patch => 0679-Don-t-lookup-fluid-state-when-raytracing.patch} (100%) rename patches/server/{0679-Time-scoreboard-search.patch => 0680-Time-scoreboard-search.patch} (100%) rename patches/server/{0680-Send-full-pos-packets-for-hard-colliding-entities.patch => 0681-Send-full-pos-packets-for-hard-colliding-entities.patch} (100%) rename patches/server/{0681-Do-not-run-raytrace-logic-for-AIR.patch => 0682-Do-not-run-raytrace-logic-for-AIR.patch} (100%) rename patches/server/{0682-Oprimise-map-impl-for-tracked-players.patch => 0683-Oprimise-map-impl-for-tracked-players.patch} (87%) rename patches/server/{0683-Optimise-BlockSoil-nearby-water-lookup.patch => 0684-Optimise-BlockSoil-nearby-water-lookup.patch} (100%) rename patches/server/{0684-Optimise-random-block-ticking.patch => 0685-Optimise-random-block-ticking.patch} (97%) rename patches/server/{0685-Remove-streams-for-villager-AI.patch => 0686-Remove-streams-for-villager-AI.patch} (100%) rename patches/server/{0686-Use-Velocity-compression-and-cipher-natives.patch => 0687-Use-Velocity-compression-and-cipher-natives.patch} (98%) rename patches/server/{0687-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch => 0688-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch} (100%) rename patches/server/{0688-Fix-Bukkit-NamespacedKey-shenanigans.patch => 0689-Fix-Bukkit-NamespacedKey-shenanigans.patch} (100%) rename patches/server/{0689-Fix-merchant-inventory-not-closing-on-entity-removal.patch => 0690-Fix-merchant-inventory-not-closing-on-entity-removal.patch} (90%) rename patches/server/{0690-Check-requirement-before-suggesting-root-nodes.patch => 0691-Check-requirement-before-suggesting-root-nodes.patch} (100%) rename patches/server/{0691-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch => 0692-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch} (85%) rename patches/server/{0692-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch => 0693-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch} (100%) rename patches/server/{0693-Ensure-valid-vehicle-status.patch => 0694-Ensure-valid-vehicle-status.patch} (84%) rename patches/server/{0694-Prevent-softlocked-end-exit-portal-generation.patch => 0695-Prevent-softlocked-end-exit-portal-generation.patch} (100%) rename patches/server/{0695-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch => 0696-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch} (100%) rename patches/server/{0696-Don-t-log-debug-logging-being-disabled.patch => 0697-Don-t-log-debug-logging-being-disabled.patch} (100%) rename patches/server/{0697-fix-various-menus-with-empty-level-accesses.patch => 0698-fix-various-menus-with-empty-level-accesses.patch} (100%) rename patches/server/{0698-Preserve-overstacked-loot.patch => 0699-Preserve-overstacked-loot.patch} (100%) rename patches/server/{0699-Update-head-rotation-in-missing-places.patch => 0700-Update-head-rotation-in-missing-places.patch} (84%) rename patches/server/{0700-prevent-unintended-light-block-manipulation.patch => 0701-prevent-unintended-light-block-manipulation.patch} (100%) rename patches/server/{0701-Fix-CraftCriteria-defaults-map.patch => 0702-Fix-CraftCriteria-defaults-map.patch} (100%) rename patches/server/{0702-Fix-upstreams-block-state-factories.patch => 0703-Fix-upstreams-block-state-factories.patch} (100%) rename patches/server/{0703-Configurable-feature-seeds.patch => 0704-Configurable-feature-seeds.patch} (91%) rename patches/server/{0704-Add-root-admin-user-detection.patch => 0705-Add-root-admin-user-detection.patch} (97%) rename patches/server/{0705-Always-allow-item-changing-in-Fireball.patch => 0706-Always-allow-item-changing-in-Fireball.patch} (100%) rename patches/server/{0706-don-t-attempt-to-teleport-dead-entities.patch => 0707-don-t-attempt-to-teleport-dead-entities.patch} (85%) rename patches/server/{0707-Prevent-excessive-velocity-through-repeated-crits.patch => 0708-Prevent-excessive-velocity-through-repeated-crits.patch} (100%) rename patches/server/{0708-Remove-client-side-code-using-deprecated-for-removal.patch => 0709-Remove-client-side-code-using-deprecated-for-removal.patch} (100%) rename patches/server/{0709-Fix-removing-recipes-from-RecipeIterator.patch => 0710-Fix-removing-recipes-from-RecipeIterator.patch} (100%) rename patches/server/{0710-Prevent-sending-oversized-item-data-in-equipment-and.patch => 0711-Prevent-sending-oversized-item-data-in-equipment-and.patch} (100%) rename patches/server/{0711-Hide-unnecessary-itemmeta-from-clients.patch => 0712-Hide-unnecessary-itemmeta-from-clients.patch} (97%) rename patches/server/{0712-Fix-Spigot-growth-modifiers.patch => 0713-Fix-Spigot-growth-modifiers.patch} (100%) rename patches/server/{0713-Prevent-ContainerOpenersCounter-openCount-from-going.patch => 0714-Prevent-ContainerOpenersCounter-openCount-from-going.patch} (100%) rename patches/server/{0714-Add-PlayerItemFrameChangeEvent.patch => 0715-Add-PlayerItemFrameChangeEvent.patch} (100%) rename patches/server/{0715-Optimize-HashMapPalette.patch => 0716-Optimize-HashMapPalette.patch} (100%) rename patches/server/{0716-Allow-delegation-to-vanilla-chunk-gen.patch => 0717-Allow-delegation-to-vanilla-chunk-gen.patch} (98%) rename patches/server/{0717-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch => 0718-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch} (99%) rename patches/server/{0718-Optimise-collision-checking-in-player-move-packet-ha.patch => 0719-Optimise-collision-checking-in-player-move-packet-ha.patch} (96%) rename patches/server/{0719-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch => 0720-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch} (92%) rename patches/server/{0720-Add-more-Campfire-API.patch => 0721-Add-more-Campfire-API.patch} (100%) rename patches/server/{0721-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch => 0722-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch} (88%) rename patches/server/{0722-Fix-tripwire-state-inconsistency.patch => 0723-Fix-tripwire-state-inconsistency.patch} (100%) rename patches/server/{0723-Forward-CraftEntity-in-teleport-command.patch => 0724-Forward-CraftEntity-in-teleport-command.patch} (88%) rename patches/server/{0724-Improve-scoreboard-entries.patch => 0725-Improve-scoreboard-entries.patch} (100%) rename patches/server/{0725-Entity-powdered-snow-API.patch => 0726-Entity-powdered-snow-API.patch} (100%) rename patches/server/{0726-Add-API-for-item-entity-health.patch => 0727-Add-API-for-item-entity-health.patch} (100%) rename patches/server/{0727-Fix-entity-type-tags-suggestions-in-selectors.patch => 0728-Fix-entity-type-tags-suggestions-in-selectors.patch} (100%) rename patches/server/{0728-Configurable-max-block-light-for-monster-spawning.patch => 0729-Configurable-max-block-light-for-monster-spawning.patch} (100%) rename patches/server/{0729-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch => 0730-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch} (100%) rename patches/server/{0730-Load-effect-amplifiers-greater-than-127-correctly.patch => 0731-Load-effect-amplifiers-greater-than-127-correctly.patch} (100%) rename patches/server/{0731-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch => 0732-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch} (100%) rename patches/server/{0732-Fix-bees-aging-inside-hives.patch => 0733-Fix-bees-aging-inside-hives.patch} (100%) rename patches/server/{0733-Bucketable-API.patch => 0734-Bucketable-API.patch} (100%) rename patches/server/{0734-Validate-usernames.patch => 0735-Validate-usernames.patch} (97%) rename patches/server/{0735-Make-water-animal-spawn-height-configurable.patch => 0736-Make-water-animal-spawn-height-configurable.patch} (100%) rename patches/server/{0736-Expose-vanilla-BiomeProvider-from-WorldInfo.patch => 0737-Expose-vanilla-BiomeProvider-from-WorldInfo.patch} (96%) rename patches/server/{0737-Add-config-option-for-worlds-affected-by-time-cmd.patch => 0738-Add-config-option-for-worlds-affected-by-time-cmd.patch} (100%) rename patches/server/{0738-Add-new-overload-to-PersistentDataContainer-has.patch => 0739-Add-new-overload-to-PersistentDataContainer-has.patch} (100%) rename patches/server/{0739-Multiple-Entries-with-Scoreboards.patch => 0740-Multiple-Entries-with-Scoreboards.patch} (100%) rename patches/server/{0740-Reset-placed-block-on-exception.patch => 0741-Reset-placed-block-on-exception.patch} (100%) rename patches/server/{0741-Add-configurable-height-for-slime-spawn.patch => 0742-Add-configurable-height-for-slime-spawn.patch} (100%) rename patches/server/{0742-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch => 0743-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch} (100%) rename patches/server/{0743-Fix-xp-reward-for-baby-zombies.patch => 0744-Fix-xp-reward-for-baby-zombies.patch} (100%) rename patches/server/{0744-Kick-on-main-for-illegal-chat.patch => 0745-Kick-on-main-for-illegal-chat.patch} (90%) rename patches/server/{0745-Multi-Block-Change-API-Implementation.patch => 0746-Multi-Block-Change-API-Implementation.patch} (95%) rename patches/server/{0746-Fix-NotePlayEvent.patch => 0747-Fix-NotePlayEvent.patch} (100%) rename patches/server/{0747-Freeze-Tick-Lock-API.patch => 0748-Freeze-Tick-Lock-API.patch} (92%) rename patches/server/{0748-Dolphin-API.patch => 0749-Dolphin-API.patch} (100%) rename patches/server/{0749-More-PotionEffectType-API.patch => 0750-More-PotionEffectType-API.patch} (100%) rename patches/server/{0750-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch => 0751-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch} (100%) rename patches/server/{0751-API-for-creating-command-sender-which-forwards-feedb.patch => 0752-API-for-creating-command-sender-which-forwards-feedb.patch} (98%) rename patches/server/{0752-Add-missing-structure-set-seed-configs.patch => 0753-Add-missing-structure-set-seed-configs.patch} (99%) rename patches/server/{0753-Implement-regenerateChunk.patch => 0754-Implement-regenerateChunk.patch} (98%) rename patches/server/{0754-Fix-cancelled-powdered-snow-bucket-placement.patch => 0755-Fix-cancelled-powdered-snow-bucket-placement.patch} (100%) rename patches/server/{0755-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch => 0756-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch} (92%) rename patches/server/{0756-Add-GameEvent-tags.patch => 0757-Add-GameEvent-tags.patch} (97%) rename patches/server/{0757-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch => 0758-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch} (87%) rename patches/server/{0758-Furnace-RecipesUsed-API.patch => 0759-Furnace-RecipesUsed-API.patch} (100%) rename patches/server/{0759-Configurable-sculk-sensor-listener-range.patch => 0760-Configurable-sculk-sensor-listener-range.patch} (100%) rename patches/server/{0760-Add-missing-block-data-mins-and-maxes.patch => 0761-Add-missing-block-data-mins-and-maxes.patch} (100%) rename patches/server/{0761-Option-to-have-default-CustomSpawners-in-custom-worl.patch => 0762-Option-to-have-default-CustomSpawners-in-custom-worl.patch} (96%) rename patches/server/{0762-Put-world-into-worldlist-before-initing-the-world.patch => 0763-Put-world-into-worldlist-before-initing-the-world.patch} (84%) rename patches/server/{0763-Fix-Entity-Position-Desync.patch => 0764-Fix-Entity-Position-Desync.patch} (100%) rename patches/server/{0764-Custom-Potion-Mixes.patch => 0765-Custom-Potion-Mixes.patch} (97%) rename patches/server/{0765-Force-close-world-loading-screen.patch => 0766-Force-close-world-loading-screen.patch} (95%) rename patches/server/{0766-Fix-falling-block-spawn-methods.patch => 0767-Fix-falling-block-spawn-methods.patch} (93%) rename patches/server/{0767-Expose-furnace-minecart-push-values.patch => 0768-Expose-furnace-minecart-push-values.patch} (100%) rename patches/server/{0768-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch => 0769-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch} (100%) rename patches/server/{0769-More-Projectile-API.patch => 0770-More-Projectile-API.patch} (100%) rename patches/server/{0770-Fix-swamp-hut-cat-generation-deadlock.patch => 0771-Fix-swamp-hut-cat-generation-deadlock.patch} (100%) rename patches/server/{0771-Don-t-allow-vehicle-movement-from-players-while-tele.patch => 0772-Don-t-allow-vehicle-movement-from-players-while-tele.patch} (93%) rename patches/server/{0772-Implement-getComputedBiome-API.patch => 0773-Implement-getComputedBiome-API.patch} (100%) rename patches/server/{0773-Make-some-itemstacks-nonnull.patch => 0774-Make-some-itemstacks-nonnull.patch} (100%) rename patches/server/{0774-Implement-enchantWithLevels-API.patch => 0775-Implement-enchantWithLevels-API.patch} (100%) rename patches/server/{0775-Fix-saving-in-unloadWorld.patch => 0776-Fix-saving-in-unloadWorld.patch} (90%) rename patches/server/{0776-Buffer-OOB-setBlock-calls.patch => 0777-Buffer-OOB-setBlock-calls.patch} (95%) rename patches/server/{0777-Add-TameableDeathMessageEvent.patch => 0778-Add-TameableDeathMessageEvent.patch} (100%) rename patches/server/{0778-Fix-new-block-data-for-EntityChangeBlockEvent.patch => 0779-Fix-new-block-data-for-EntityChangeBlockEvent.patch} (100%) rename patches/server/{0779-fix-player-loottables-running-when-mob-loot-gamerule.patch => 0780-fix-player-loottables-running-when-mob-loot-gamerule.patch} (87%) rename patches/server/{0780-Ensure-entity-passenger-world-matches-ridden-entity.patch => 0781-Ensure-entity-passenger-world-matches-ridden-entity.patch} (84%) rename patches/server/{0781-Guard-against-invalid-entity-positions.patch => 0782-Guard-against-invalid-entity-positions.patch} (88%) rename patches/server/{0782-cache-resource-keys.patch => 0783-cache-resource-keys.patch} (100%) rename patches/server/{0783-Allow-to-change-the-podium-for-the-EnderDragon.patch => 0784-Allow-to-change-the-podium-for-the-EnderDragon.patch} (100%) rename patches/server/{0784-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch => 0785-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch} (100%) rename patches/server/{0785-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch => 0786-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch} (100%) rename patches/server/{0786-Prevent-tile-entity-copies-loading-chunks.patch => 0787-Prevent-tile-entity-copies-loading-chunks.patch} (89%) rename patches/server/{0787-Use-username-instead-of-display-name-in-PlayerList-g.patch => 0788-Use-username-instead-of-display-name-in-PlayerList-g.patch} (92%) rename patches/server/{0788-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch => 0789-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch} (100%) rename patches/server/{0789-Pass-ServerLevel-for-gamerule-callbacks.patch => 0790-Pass-ServerLevel-for-gamerule-callbacks.patch} (96%) rename patches/server/{0790-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch => 0791-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch} (100%) rename patches/server/{0791-WorldCreator-keepSpawnLoaded.patch => 0792-WorldCreator-keepSpawnLoaded.patch} (77%) rename patches/server/{0792-Fix-CME-in-CraftPersistentDataTypeRegistry.patch => 0793-Fix-CME-in-CraftPersistentDataTypeRegistry.patch} (100%) rename patches/server/{0793-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch => 0794-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch} (100%) rename patches/server/{0794-Add-EntityDyeEvent-and-CollarColorable-interface.patch => 0795-Add-EntityDyeEvent-and-CollarColorable-interface.patch} (100%) rename patches/server/{0795-Fire-CauldronLevelChange-on-initial-fill.patch => 0796-Fire-CauldronLevelChange-on-initial-fill.patch} (100%) rename patches/server/{0796-fix-powder-snow-cauldrons-not-turning-to-water.patch => 0797-fix-powder-snow-cauldrons-not-turning-to-water.patch} (100%) rename patches/server/{0797-Add-PlayerStopUsingItemEvent.patch => 0798-Add-PlayerStopUsingItemEvent.patch} (100%) rename patches/server/{0798-FallingBlock-auto-expire-setting.patch => 0799-FallingBlock-auto-expire-setting.patch} (100%) rename patches/server/{0799-Don-t-tick-markers.patch => 0800-Don-t-tick-markers.patch} (71%) rename patches/server/{0800-Do-not-accept-invalid-client-settings.patch => 0801-Do-not-accept-invalid-client-settings.patch} (89%) rename patches/server/{0801-Add-support-for-Proxy-Protocol.patch => 0802-Add-support-for-Proxy-Protocol.patch} (100%) rename patches/server/{0802-Fix-OfflinePlayer-getBedSpawnLocation.patch => 0803-Fix-OfflinePlayer-getBedSpawnLocation.patch} (100%) rename patches/server/{0803-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch => 0804-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch} (100%) rename patches/server/{0804-Sanitize-Sent-BlockEntity-NBT.patch => 0805-Sanitize-Sent-BlockEntity-NBT.patch} (100%) rename patches/server/{0805-Disable-component-selector-resolving-in-books-by-def.patch => 0806-Disable-component-selector-resolving-in-books-by-def.patch} (100%) rename patches/server/{0806-Prevent-entity-loading-causing-async-lookups.patch => 0807-Prevent-entity-loading-causing-async-lookups.patch} (95%) rename patches/server/{0807-Throw-exception-on-world-create-while-being-ticked.patch => 0808-Throw-exception-on-world-create-while-being-ticked.patch} (90%) rename patches/server/{0808-Add-Alternate-Current-redstone-implementation.patch => 0809-Add-Alternate-Current-redstone-implementation.patch} (99%) rename patches/server/{0809-Dont-resent-entity-on-art-update.patch => 0810-Dont-resent-entity-on-art-update.patch} (100%) rename patches/server/{0810-Add-WardenAngerChangeEvent.patch => 0811-Add-WardenAngerChangeEvent.patch} (100%) rename patches/server/{0811-Add-option-for-strict-advancement-dimension-checks.patch => 0812-Add-option-for-strict-advancement-dimension-checks.patch} (94%) rename patches/server/{0812-Add-missing-important-BlockStateListPopulator-method.patch => 0813-Add-missing-important-BlockStateListPopulator-method.patch} (84%) rename patches/server/{0813-Nameable-Banner-API.patch => 0814-Nameable-Banner-API.patch} (100%) rename patches/server/{0814-Don-t-broadcast-messages-to-command-blocks.patch => 0815-Don-t-broadcast-messages-to-command-blocks.patch} (95%) rename patches/server/{0815-Prevent-empty-items-from-being-added-to-world.patch => 0816-Prevent-empty-items-from-being-added-to-world.patch} (94%) rename patches/server/{0816-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch => 0817-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch} (100%) rename patches/server/{0817-Add-Player-getFishHook.patch => 0818-Add-Player-getFishHook.patch} (100%) rename patches/server/{0818-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch => 0819-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch} (100%) rename patches/server/{0819-Add-various-missing-EntityDropItemEvent-calls.patch => 0820-Add-various-missing-EntityDropItemEvent-calls.patch} (96%) rename patches/server/{0820-Add-some-minimal-debug-information-to-chat-packet-er.patch => 0821-Add-some-minimal-debug-information-to-chat-packet-er.patch} (90%) rename patches/server/{0821-Fix-Bee-flower-NPE.patch => 0822-Fix-Bee-flower-NPE.patch} (100%) rename patches/server/{0822-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch => 0823-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch} (87%) rename patches/server/{0823-More-Teleport-API.patch => 0824-More-Teleport-API.patch} (95%) rename patches/server/{0824-Add-EntityPortalReadyEvent.patch => 0825-Add-EntityPortalReadyEvent.patch} (88%) rename patches/server/{0825-Don-t-use-level-random-in-entity-constructors.patch => 0826-Don-t-use-level-random-in-entity-constructors.patch} (100%) rename patches/server/{0826-Send-block-entities-after-destroy-prediction.patch => 0827-Send-block-entities-after-destroy-prediction.patch} (97%) rename patches/server/{0827-Warn-on-plugins-accessing-faraway-chunks.patch => 0828-Warn-on-plugins-accessing-faraway-chunks.patch} (90%) rename patches/server/{0828-Custom-Chat-Completion-Suggestions-API.patch => 0829-Custom-Chat-Completion-Suggestions-API.patch} (90%) rename patches/server/{0829-Add-and-fix-missing-BlockFadeEvents.patch => 0830-Add-and-fix-missing-BlockFadeEvents.patch} (100%) rename patches/server/{0830-Collision-API.patch => 0831-Collision-API.patch} (100%) rename patches/server/{0831-Fix-suggest-command-message-for-brigadier-syntax-exc.patch => 0832-Fix-suggest-command-message-for-brigadier-syntax-exc.patch} (100%) rename patches/server/{0832-Block-Ticking-API.patch => 0833-Block-Ticking-API.patch} (100%) rename patches/server/{0833-Add-Velocity-IP-Forwarding-Support.patch => 0834-Add-Velocity-IP-Forwarding-Support.patch} (98%) rename patches/server/{0834-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch => 0835-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch} (100%) rename patches/server/{0835-Add-NamespacedKey-biome-methods.patch => 0836-Add-NamespacedKey-biome-methods.patch} (100%) rename patches/server/{0836-Fix-plugin-loggers-on-server-shutdown.patch => 0837-Fix-plugin-loggers-on-server-shutdown.patch} (92%) rename patches/server/{0837-Stop-large-look-changes-from-crashing-the-server.patch => 0838-Stop-large-look-changes-from-crashing-the-server.patch} (100%) rename patches/server/{0838-Fire-EntityChangeBlockEvent-in-more-places.patch => 0839-Fire-EntityChangeBlockEvent-in-more-places.patch} (99%) rename patches/server/{0839-Missing-eating-regain-reason.patch => 0840-Missing-eating-regain-reason.patch} (100%) rename patches/server/{0840-Missing-effect-cause.patch => 0841-Missing-effect-cause.patch} (100%) rename patches/server/{0841-Added-byte-array-serialization-deserialization-for-P.patch => 0842-Added-byte-array-serialization-deserialization-for-P.patch} (100%) rename patches/server/{0842-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch => 0843-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch} (100%) rename patches/server/{0843-Call-BlockPhysicsEvent-more-often.patch => 0844-Call-BlockPhysicsEvent-more-often.patch} (100%) rename patches/server/{0844-Configurable-chat-thread-limit.patch => 0845-Configurable-chat-thread-limit.patch} (95%) rename patches/server/{0845-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch => 0846-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch} (100%) rename patches/server/{0846-fix-Jigsaw-block-kicking-user.patch => 0847-fix-Jigsaw-block-kicking-user.patch} (100%) rename patches/server/{0847-use-BlockFormEvent-for-mud-converting-into-clay.patch => 0848-use-BlockFormEvent-for-mud-converting-into-clay.patch} (100%) rename patches/server/{0848-Add-getDrops-to-BlockState.patch => 0849-Add-getDrops-to-BlockState.patch} (100%) rename patches/server/{0849-Fix-a-bunch-of-vanilla-bugs.patch => 0850-Fix-a-bunch-of-vanilla-bugs.patch} (98%) rename patches/server/{0850-Remove-unnecessary-onTrackingStart-during-navigation.patch => 0851-Remove-unnecessary-onTrackingStart-during-navigation.patch} (87%) rename patches/server/{0851-Fix-custom-piglin-loved-items.patch => 0852-Fix-custom-piglin-loved-items.patch} (100%) rename patches/server/{0852-EntityPickupItemEvent-fixes.patch => 0853-EntityPickupItemEvent-fixes.patch} (100%) rename patches/server/{0853-Correctly-handle-interactions-with-items-on-cooldown.patch => 0854-Correctly-handle-interactions-with-items-on-cooldown.patch} (100%) rename patches/server/{0854-Add-PlayerInventorySlotChangeEvent.patch => 0855-Add-PlayerInventorySlotChangeEvent.patch} (95%) rename patches/server/{0855-Elder-Guardian-appearance-API.patch => 0856-Elder-Guardian-appearance-API.patch} (84%) rename patches/server/{0856-Allow-changing-bed-s-occupied-property.patch => 0857-Allow-changing-bed-s-occupied-property.patch} (100%) rename patches/server/{0857-Add-entity-knockback-API.patch => 0858-Add-entity-knockback-API.patch} (100%) rename patches/server/{0858-Detect-headless-JREs.patch => 0859-Detect-headless-JREs.patch} (96%) rename patches/server/{0859-fixed-entity-vehicle-collision-event-not-called.patch => 0860-fixed-entity-vehicle-collision-event-not-called.patch} (100%) rename patches/server/{0860-optimized-dirt-and-snow-spreading.patch => 0861-optimized-dirt-and-snow-spreading.patch} (100%) rename patches/server/{0861-Added-EntityToggleSitEvent.patch => 0862-Added-EntityToggleSitEvent.patch} (100%) rename patches/server/{0862-Add-fire-tick-delay-option.patch => 0863-Add-fire-tick-delay-option.patch} (100%) rename patches/server/{0863-Add-Moving-Piston-API.patch => 0864-Add-Moving-Piston-API.patch} (100%) rename patches/server/{0864-Ignore-impossible-spawn-tick.patch => 0865-Ignore-impossible-spawn-tick.patch} (100%) rename patches/server/{0865-Track-projectile-source-for-fireworks-from-dispenser.patch => 0866-Track-projectile-source-for-fireworks-from-dispenser.patch} (100%) rename patches/server/{0866-Fix-EntityArgument-suggestion-permissions-to-align-w.patch => 0867-Fix-EntityArgument-suggestion-permissions-to-align-w.patch} (100%) rename patches/server/{0867-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch => 0868-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch} (91%) rename patches/server/{0868-Prevent-compass-from-loading-chunks.patch => 0869-Prevent-compass-from-loading-chunks.patch} (100%) rename patches/server/{0869-Add-PrePlayerAttackEntityEvent.patch => 0870-Add-PrePlayerAttackEntityEvent.patch} (100%) rename patches/server/{0870-ensure-reset-EnderDragon-boss-event-name.patch => 0871-ensure-reset-EnderDragon-boss-event-name.patch} (100%) rename patches/server/{0871-fix-MC-252817-green-map-markers-do-not-disappear.patch => 0872-fix-MC-252817-green-map-markers-do-not-disappear.patch} (100%) rename patches/server/{0872-Add-Player-Warden-Warning-API.patch => 0873-Add-Player-Warden-Warning-API.patch} (93%) rename patches/server/{0873-More-vanilla-friendly-methods-to-update-trades.patch => 0874-More-vanilla-friendly-methods-to-update-trades.patch} (100%) rename patches/server/{0874-Add-paper-dumplisteners-command.patch => 0875-Add-paper-dumplisteners-command.patch} (98%) rename patches/server/{0875-check-global-player-list-where-appropriate.patch => 0876-check-global-player-list-where-appropriate.patch} (93%) rename patches/server/{0876-Fix-async-entity-add-due-to-fungus-trees.patch => 0877-Fix-async-entity-add-due-to-fungus-trees.patch} (95%) rename patches/server/{0877-ItemStack-damage-API.patch => 0878-ItemStack-damage-API.patch} (100%) rename patches/server/{0878-Friction-API.patch => 0879-Friction-API.patch} (100%) rename patches/server/{0879-Ability-to-control-player-s-insomnia-and-phantoms.patch => 0880-Ability-to-control-player-s-insomnia-and-phantoms.patch} (100%) rename patches/server/{0880-Fix-player-kick-on-shutdown.patch => 0881-Fix-player-kick-on-shutdown.patch} (100%) rename patches/server/{0881-Sync-offhand-slot-in-menus.patch => 0882-Sync-offhand-slot-in-menus.patch} (95%) rename patches/server/{0882-Player-Entity-Tracking-Events.patch => 0883-Player-Entity-Tracking-Events.patch} (91%) rename patches/server/{0883-Limit-pet-look-distance.patch => 0884-Limit-pet-look-distance.patch} (100%) rename patches/server/{0884-Properly-resend-entities.patch => 0885-Properly-resend-entities.patch} (96%) rename patches/server/{0885-Fixes-and-additions-to-the-SpawnReason-API.patch => 0886-Fixes-and-additions-to-the-SpawnReason-API.patch} (100%) rename patches/server/{0886-fix-Instruments.patch => 0887-fix-Instruments.patch} (93%) rename patches/server/{0887-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch => 0888-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch} (100%) rename patches/server/{0888-Fix-inconsistencies-in-dispense-events-regarding-sta.patch => 0889-Fix-inconsistencies-in-dispense-events-regarding-sta.patch} (100%) rename patches/server/{0889-Add-BlockLockCheckEvent.patch => 0890-Add-BlockLockCheckEvent.patch} (100%) rename patches/server/{0890-Add-Sneaking-API-for-Entities.patch => 0891-Add-Sneaking-API-for-Entities.patch} (100%) rename patches/server/{0891-Improve-logging-and-errors.patch => 0892-Improve-logging-and-errors.patch} (95%) rename patches/server/{0892-Improve-PortalEvents.patch => 0893-Improve-PortalEvents.patch} (89%) rename patches/server/{0893-Add-config-option-for-spider-worldborder-climbing.patch => 0894-Add-config-option-for-spider-worldborder-climbing.patch} (93%) rename patches/server/{0894-Add-missing-SpigotConfig-logCommands-check.patch => 0895-Add-missing-SpigotConfig-logCommands-check.patch} (88%) rename patches/server/{0895-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch => 0896-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch} (100%) rename patches/server/{0896-Flying-Fall-Damage.patch => 0897-Flying-Fall-Damage.patch} (93%) rename patches/server/{0897-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch => 0898-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch} (100%) rename patches/server/{0898-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch => 0899-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch} (86%) rename patches/server/{0899-config-for-disabling-entity-tag-tags.patch => 0900-config-for-disabling-entity-tag-tags.patch} (100%) rename patches/server/{0900-Use-single-player-info-update-packet-on-join.patch => 0901-Use-single-player-info-update-packet-on-join.patch} (92%) rename patches/server/{0901-Correctly-shrink-items-during-EntityResurrectEvent.patch => 0902-Correctly-shrink-items-during-EntityResurrectEvent.patch} (100%) rename patches/server/{0902-Win-Screen-API.patch => 0903-Win-Screen-API.patch} (88%) rename patches/server/{0903-Remove-CraftItemStack-setAmount-null-assignment.patch => 0904-Remove-CraftItemStack-setAmount-null-assignment.patch} (100%) rename patches/server/{0904-Fix-force-opening-enchantment-tables.patch => 0905-Fix-force-opening-enchantment-tables.patch} (100%) rename patches/server/{0905-Add-Entity-Body-Yaw-API.patch => 0906-Add-Entity-Body-Yaw-API.patch} (100%) rename patches/server/{0906-Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch => 0907-Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch} (100%) rename patches/server/{0907-Update-the-flag-when-a-captured-block-state-is-outda.patch => 0908-Update-the-flag-when-a-captured-block-state-is-outda.patch} (90%) rename patches/server/{0908-Add-EntityFertilizeEggEvent.patch => 0909-Add-EntityFertilizeEggEvent.patch} (100%) rename patches/server/{0909-Fix-HumanEntity-drop-not-updating-the-client-inv.patch => 0910-Fix-HumanEntity-drop-not-updating-the-client-inv.patch} (100%) rename patches/server/{0910-Add-CompostItemEvent-and-EntityCompostItemEvent.patch => 0911-Add-CompostItemEvent-and-EntityCompostItemEvent.patch} (100%) rename patches/server/{0911-Correctly-handle-ArmorStand-invisibility.patch => 0912-Correctly-handle-ArmorStand-invisibility.patch} (100%) rename patches/server/{0912-Fix-advancement-triggers-for-entity-damage.patch => 0913-Fix-advancement-triggers-for-entity-damage.patch} (100%) rename patches/server/{0913-Fix-text-display-error-on-spawn.patch => 0914-Fix-text-display-error-on-spawn.patch} (100%) rename patches/server/{0914-Fix-certain-inventories-returning-null-Locations.patch => 0915-Fix-certain-inventories-returning-null-Locations.patch} (100%) rename patches/server/{0915-Add-Shearable-API.patch => 0916-Add-Shearable-API.patch} (100%) rename patches/server/{0916-Fix-SpawnEggMeta-get-setSpawnedType.patch => 0917-Fix-SpawnEggMeta-get-setSpawnedType.patch} (100%) rename patches/server/{0917-Fix-chiseled-bookshelf-and-jukebox-setItem-with-air.patch => 0918-Fix-chiseled-bookshelf-and-jukebox-setItem-with-air.patch} (100%) rename patches/server/{0918-Optimize-Hoppers.patch => 0919-Optimize-Hoppers.patch} (99%) rename patches/server/{0919-Fix-beehives-generating-from-using-bonemeal.patch => 0920-Fix-beehives-generating-from-using-bonemeal.patch} (100%) rename patches/server/{0920-Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch => 0921-Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch} (100%) rename patches/server/{0921-Treat-sequence-violations-like-they-should-be.patch => 0922-Treat-sequence-violations-like-they-should-be.patch} (86%) rename patches/server/{0922-remove-duplicate-animate-packet-for-records.patch => 0923-remove-duplicate-animate-packet-for-records.patch} (100%) rename patches/server/{0923-Prevent-causing-expired-keys-from-impacting-new-join.patch => 0924-Prevent-causing-expired-keys-from-impacting-new-join.patch} (95%) rename patches/server/{0924-Prevent-GameEvents-being-fired-from-unloaded-chunks.patch => 0925-Prevent-GameEvents-being-fired-from-unloaded-chunks.patch} (84%) rename patches/server/{0925-Use-array-for-gamerule-storage.patch => 0926-Use-array-for-gamerule-storage.patch} (100%) rename patches/server/{0926-Fix-a-couple-of-upstream-bed-issues.patch => 0927-Fix-a-couple-of-upstream-bed-issues.patch} (100%) rename patches/server/{0927-Fix-demo-flag-not-enabling-demo-mode.patch => 0928-Fix-demo-flag-not-enabling-demo-mode.patch} (88%) rename patches/server/{0928-Add-Mob-Experience-reward-API.patch => 0929-Add-Mob-Experience-reward-API.patch} (100%) rename patches/server/{0929-Break-redstone-on-top-of-trap-doors-early.patch => 0930-Break-redstone-on-top-of-trap-doors-early.patch} (100%) rename patches/server/{0930-Fix-DamageCause-for-Falling-Blocks.patch => 0931-Fix-DamageCause-for-Falling-Blocks.patch} (100%) rename patches/server/{0931-Avoid-Lazy-Initialization-for-Enum-Fields.patch => 0932-Avoid-Lazy-Initialization-for-Enum-Fields.patch} (100%) rename patches/server/{0932-More-accurate-isInOpenWater-impl.patch => 0933-More-accurate-isInOpenWater-impl.patch} (100%) rename patches/server/{0933-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch => 0934-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch} (100%) rename patches/server/{0934-Optimise-recalcBlockCounts-for-empty-sections.patch => 0935-Optimise-recalcBlockCounts-for-empty-sections.patch} (100%) rename patches/server/{0935-Expand-PlayerItemMendEvent.patch => 0936-Expand-PlayerItemMendEvent.patch} (96%) rename patches/server/{0936-Refresh-ProjectileSource-for-projectiles.patch => 0937-Refresh-ProjectileSource-for-projectiles.patch} (97%) rename patches/server/{0937-Add-transient-modifier-API.patch => 0938-Add-transient-modifier-API.patch} (100%) rename patches/server/{0938-Fix-block-place-logic.patch => 0939-Fix-block-place-logic.patch} (96%) rename patches/server/{0939-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch => 0940-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch} (100%) rename patches/server/{0940-Ignore-inline-definitions-of-trim-material-pattern.patch => 0941-Ignore-inline-definitions-of-trim-material-pattern.patch} (100%) rename patches/server/{0941-Call-BlockGrowEvent-for-missing-blocks.patch => 0942-Call-BlockGrowEvent-for-missing-blocks.patch} (100%) rename patches/server/{0942-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch => 0943-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch} (94%) rename patches/server/{0943-fix-MapLike-spam-for-missing-key-selector.patch => 0944-fix-MapLike-spam-for-missing-key-selector.patch} (100%) rename patches/server/{0944-Fix-sniffer-removeExploredLocation.patch => 0945-Fix-sniffer-removeExploredLocation.patch} (100%) rename patches/server/{0945-Add-method-to-remove-all-active-potion-effects.patch => 0946-Add-method-to-remove-all-active-potion-effects.patch} (100%) rename patches/server/{0946-Temp-Pre-init-PlayerChunkLoaderData-in-order-to-prep.patch => 0947-Temp-Pre-init-PlayerChunkLoaderData-in-order-to-prep.patch} (100%) rename patches/server/{0947-Fix-incorrect-crafting-result-amount-for-fireworks.patch => 0948-Fix-incorrect-crafting-result-amount-for-fireworks.patch} (100%) rename patches/server/{0948-Properly-Cancel-Usable-Items.patch => 0949-Properly-Cancel-Usable-Items.patch} (95%) rename patches/server/{0949-Add-event-for-player-editing-sign.patch => 0950-Add-event-for-player-editing-sign.patch} (100%) rename patches/server/{0950-Only-tick-item-frames-if-players-can-see-it.patch => 0951-Only-tick-item-frames-if-players-can-see-it.patch} (100%) rename patches/server/{0951-Improve-command-function-perm-level-checks.patch => 0952-Improve-command-function-perm-level-checks.patch} (100%) rename patches/server/{0952-Add-option-to-disable-block-updates.patch => 0953-Add-option-to-disable-block-updates.patch} (100%) rename patches/server/{0953-Call-missing-BlockDispenseEvent.patch => 0954-Call-missing-BlockDispenseEvent.patch} (100%) rename patches/server/{0954-Don-t-load-chunks-for-supporting-block-checks.patch => 0955-Don-t-load-chunks-for-supporting-block-checks.patch} (84%) rename patches/server/{0955-Optimize-player-lookups-for-beacons.patch => 0956-Optimize-player-lookups-for-beacons.patch} (100%) rename patches/server/{0956-Add-Sign-getInteractableSideFor.patch => 0957-Add-Sign-getInteractableSideFor.patch} (100%) rename patches/server/{0957-Array-backed-synched-entity-data.patch => 0958-Array-backed-synched-entity-data.patch} (100%) rename patches/server/{0958-fix-item-meta-for-tadpole-buckets.patch => 0959-fix-item-meta-for-tadpole-buckets.patch} (100%) rename patches/server/{0959-Suppress-Item-Meta-Validation-Checks.patch => 0960-Suppress-Item-Meta-Validation-Checks.patch} (100%) rename patches/server/{0960-Fix-BanList-API.patch => 0961-Fix-BanList-API.patch} (98%) rename patches/server/{0961-Determine-lava-and-water-fluid-explosion-resistance-.patch => 0962-Determine-lava-and-water-fluid-explosion-resistance-.patch} (100%) rename patches/server/{0962-Fix-possible-NPE-on-painting-creation.patch => 0963-Fix-possible-NPE-on-painting-creation.patch} (100%) rename patches/server/{0963-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch => 0964-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch} (100%) rename patches/server/{0964-ExperienceOrb-should-call-EntitySpawnEvent.patch => 0965-ExperienceOrb-should-call-EntitySpawnEvent.patch} (100%) rename patches/server/{0965-Don-t-tick-signs.patch => 0966-Don-t-tick-signs.patch} (100%) rename patches/server/{0966-Make-Amethyst-throw-both-Spread-and-Grow-Events.patch => 0967-Make-Amethyst-throw-both-Spread-and-Grow-Events.patch} (100%) rename patches/server/{0967-Add-whitelist-events.patch => 0968-Add-whitelist-events.patch} (100%) rename patches/server/{0968-Implement-PlayerFailMoveEvent.patch => 0969-Implement-PlayerFailMoveEvent.patch} (94%) rename patches/server/{0969-Only-erase-allay-memory-on-non-item-targets.patch => 0970-Only-erase-allay-memory-on-non-item-targets.patch} (100%) rename patches/server/{0970-API-for-updating-recipes-on-clients.patch => 0971-API-for-updating-recipes-on-clients.patch} (95%) rename patches/server/{0971-Fix-rotation-when-spawning-display-entities.patch => 0972-Fix-rotation-when-spawning-display-entities.patch} (100%) rename patches/server/{0972-Only-capture-actual-tree-growth.patch => 0973-Only-capture-actual-tree-growth.patch} (93%) rename patches/server/{0973-Use-correct-source-for-mushroom-block-spread-event.patch => 0974-Use-correct-source-for-mushroom-block-spread-event.patch} (100%) rename patches/server/{0974-Respect-randomizeData-on-more-entities-when-spawning.patch => 0975-Respect-randomizeData-on-more-entities-when-spawning.patch} (100%) rename patches/server/{0975-Use-correct-seed-on-api-world-load.patch => 0976-Use-correct-seed-on-api-world-load.patch} (90%) rename patches/server/{0976-Remove-UpgradeData-neighbour-ticks-outside-of-range.patch => 0977-Remove-UpgradeData-neighbour-ticks-outside-of-range.patch} (100%) rename patches/server/{0977-Cache-map-ids-on-item-frames.patch => 0978-Cache-map-ids-on-item-frames.patch} (100%) rename patches/server/{0978-Fix-custom-statistic-criteria-creation.patch => 0979-Fix-custom-statistic-criteria-creation.patch} (100%) rename patches/server/{0979-Bandaid-fix-for-Effect.patch => 0980-Bandaid-fix-for-Effect.patch} (95%) rename patches/server/{0980-SculkCatalyst-bloom-API.patch => 0981-SculkCatalyst-bloom-API.patch} (100%) rename patches/server/{0981-API-for-an-entity-s-scoreboard-name.patch => 0982-API-for-an-entity-s-scoreboard-name.patch} (100%) rename patches/server/{0982-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch => 0983-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch} (92%) rename patches/server/{0983-Deprecate-and-replace-methods-with-old-StructureType.patch => 0984-Deprecate-and-replace-methods-with-old-StructureType.patch} (96%) rename patches/server/{0984-Don-t-tab-complete-namespaced-commands-if-send-names.patch => 0985-Don-t-tab-complete-namespaced-commands-if-send-names.patch} (92%) rename patches/server/{0985-Properly-handle-BlockBreakEvent-isDropItems.patch => 0986-Properly-handle-BlockBreakEvent-isDropItems.patch} (100%) rename patches/server/{0986-Fire-entity-death-event-for-ender-dragon.patch => 0987-Fire-entity-death-event-for-ender-dragon.patch} (100%) rename patches/server/{0987-Configurable-entity-tracking-range-by-Y-coordinate.patch => 0988-Configurable-entity-tracking-range-by-Y-coordinate.patch} (90%) rename patches/server/{0988-Add-Listing-API-for-Player.patch => 0989-Add-Listing-API-for-Player.patch} (97%) rename patches/server/{0989-Expose-clicked-BlockFace-during-BlockDamageEvent.patch => 0990-Expose-clicked-BlockFace-during-BlockDamageEvent.patch} (100%) rename patches/server/{0990-Fix-NPE-on-Boat-getStatus.patch => 0991-Fix-NPE-on-Boat-getStatus.patch} (100%) rename patches/server/{0991-Expand-Pose-API.patch => 0992-Expand-Pose-API.patch} (93%) rename patches/server/{0992-More-DragonBattle-API.patch => 0993-More-DragonBattle-API.patch} (100%) rename patches/server/{0993-Deep-clone-unhandled-nbt-tags.patch => 0994-Deep-clone-unhandled-nbt-tags.patch} (100%) rename patches/server/{0994-Add-PlayerPickItemEvent.patch => 0995-Add-PlayerPickItemEvent.patch} (94%) rename patches/server/{0995-Improve-performance-of-mass-crafts.patch => 0996-Improve-performance-of-mass-crafts.patch} (100%) rename patches/server/{0996-Allow-trident-custom-damage.patch => 0997-Allow-trident-custom-damage.patch} (100%) rename patches/server/{0997-Expose-hand-during-BlockCanBuildEvent.patch => 0998-Expose-hand-during-BlockCanBuildEvent.patch} (100%) rename patches/server/{0998-Optimize-nearest-structure-border-iteration.patch => 0999-Optimize-nearest-structure-border-iteration.patch} (95%) rename patches/server/{0999-Implement-OfflinePlayer-isConnected.patch => 1000-Implement-OfflinePlayer-isConnected.patch} (90%) rename patches/server/{1000-Fix-inventory-desync.patch => 1001-Fix-inventory-desync.patch} (100%) rename patches/server/{1001-Add-titleOverride-to-InventoryOpenEvent.patch => 1002-Add-titleOverride-to-InventoryOpenEvent.patch} (97%) rename patches/server/{1002-Configure-sniffer-egg-hatch-time.patch => 1003-Configure-sniffer-egg-hatch-time.patch} (100%) rename patches/server/{1003-Do-crystal-portal-proximity-check-before-entity-look.patch => 1004-Do-crystal-portal-proximity-check-before-entity-look.patch} (100%) rename patches/server/{1004-Skip-POI-finding-if-stuck-in-vehicle.patch => 1005-Skip-POI-finding-if-stuck-in-vehicle.patch} (100%) rename patches/server/{1005-Add-slot-sanity-checks-in-container-clicks.patch => 1006-Add-slot-sanity-checks-in-container-clicks.patch} (100%) rename patches/server/{1006-Call-BlockRedstoneEvents-for-lecterns.patch => 1007-Call-BlockRedstoneEvents-for-lecterns.patch} (100%) rename patches/server/{1007-Allow-proper-checking-of-empty-item-stacks.patch => 1008-Allow-proper-checking-of-empty-item-stacks.patch} (100%) rename patches/server/{1008-Fix-silent-equipment-change-for-mobs.patch => 1009-Fix-silent-equipment-change-for-mobs.patch} (95%) rename patches/server/{1009-Fix-spigot-s-Forced-Stats.patch => 1010-Fix-spigot-s-Forced-Stats.patch} (100%) rename patches/server/{1010-Add-missing-InventoryHolders-to-inventories.patch => 1011-Add-missing-InventoryHolders-to-inventories.patch} (100%) create mode 100644 patches/server/1012-Do-not-read-tile-entities-in-chunks-that-are-positio.patch diff --git a/patches/unapplied/server/0019-Rewrite-chunk-system.patch b/patches/server/0018-Rewrite-chunk-system.patch similarity index 97% rename from patches/unapplied/server/0019-Rewrite-chunk-system.patch rename to patches/server/0018-Rewrite-chunk-system.patch index 4d601f411c..b6178cd634 100644 --- a/patches/unapplied/server/0019-Rewrite-chunk-system.patch +++ b/patches/server/0018-Rewrite-chunk-system.patch @@ -2095,7 +2095,7 @@ index 0000000000000000000000000000000000000000..99f49b5625cf51d6c97640553cf5c420 + } +} diff --git a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java -index 95eac2e12a16938d81ab512b00e90c5234b42834..8f7bf1f0400aeab8b7801d113d244d0716c5eb84 100644 +index 87ae7d64e67ebae5ab53cc239cdf6580dca31652..56c35149fd142af6ffe31434fec0064cf6ea3be5 100644 --- a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java +++ b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java @@ -32,191 +32,41 @@ public final class ChunkSystem { @@ -2328,10 +2328,10 @@ index 95eac2e12a16938d81ab512b00e90c5234b42834..8f7bf1f0400aeab8b7801d113d244d07 private ChunkSystem() { diff --git a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java new file mode 100644 -index 0000000000000000000000000000000000000000..924539d4ac50c70178ba220424ffacd6ff277c8b +index 0000000000000000000000000000000000000000..842848872b86e5335863d309af956fee74110d52 --- /dev/null +++ b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java -@@ -0,0 +1,1426 @@ +@@ -0,0 +1,1440 @@ +package io.papermc.paper.chunk.system; + +import ca.spottedleaf.concurrentutil.collection.SRSWLinkedQueue; @@ -2354,9 +2354,11 @@ index 0000000000000000000000000000000000000000..924539d4ac50c70178ba220424ffacd6 +import net.minecraft.network.protocol.game.ClientboundSetChunkCacheRadiusPacket; +import net.minecraft.network.protocol.game.ClientboundSetSimulationDistancePacket; +import net.minecraft.server.level.ChunkMap; ++import net.minecraft.server.level.ChunkTrackingView; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.TicketType; ++import net.minecraft.server.network.PlayerChunkSender; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.chunk.ChunkAccess; @@ -2815,8 +2817,7 @@ index 0000000000000000000000000000000000000000..924539d4ac50c70178ba220424ffacd6 + + private void sendChunk(final int chunkX, final int chunkZ) { + if (this.sentChunks.add(CoordinateUtils.getChunkKey(chunkX, chunkZ))) { -+ this.world.getChunkSource().chunkMap.updateChunkTracking(this.player, -+ new ChunkPos(chunkX, chunkZ), new MutableObject<>(), false, true); // unloaded, loaded ++ PlayerChunkSender.sendChunk(this.player.connection, this.world, this.world.getChunkIfLoaded(chunkX, chunkZ)); + return; + } + throw new IllegalStateException(); @@ -2830,8 +2831,7 @@ index 0000000000000000000000000000000000000000..924539d4ac50c70178ba220424ffacd6 + } + + private void sendUnloadChunkRaw(final int chunkX, final int chunkZ) { -+ this.player.serverLevel().getChunkSource().chunkMap.updateChunkTracking(this.player, -+ new ChunkPos(chunkX, chunkZ), null, true, false); // unloaded, loaded ++ PlayerChunkSender.dropChunkStatic(this.player, new ChunkPos(chunkX, chunkZ)); + } + + private final SingleUserAreaMap broadcastMap = new SingleUserAreaMap<>(this) { @@ -2900,11 +2900,11 @@ index 0000000000000000000000000000000000000000..924539d4ac50c70178ba220424ffacd6 + private static boolean wantChunkLoaded(final int centerX, final int centerZ, final int chunkX, final int chunkZ, + final int sendRadius) { + // expect sendRadius to be = 1 + target viewable radius -+ return ChunkMap.isChunkInRange(chunkX, chunkZ, centerX, centerZ, sendRadius); ++ return ChunkTrackingView.isWithinDistance(centerX, centerZ, sendRadius, chunkX, chunkZ, true); + } + + private static int getClientViewDistance(final ServerPlayer player) { -+ final Integer vd = player.clientViewDistance; ++ final Integer vd = player.requestedViewDistance(); + return vd == null ? -1 : Math.max(0, vd.intValue()); + } + @@ -3122,20 +3122,34 @@ index 0000000000000000000000000000000000000000..924539d4ac50c70178ba220424ffacd6 + // try to push more chunk generations + final long maxGens = Math.max(0L, Math.min(MAX_RATE, Math.min(this.genQueue.size(), this.getMaxChunkGenerates()))); + final int maxGensThisTick = (int)this.chunkGenerateTicketLimiter.takeAllocation(time, genRate, maxGens); -+ for (int i = 0; i < maxGensThisTick; ++i) { -+ final long chunk = this.genQueue.dequeueLong(); -+ final byte prev = this.chunkTicketStage.put(chunk, CHUNK_TICKET_STAGE_GENERATING); ++ int ratedGensThisTick = 0; ++ while (!this.genQueue.isEmpty()) { ++ final long chunkKey = this.genQueue.firstLong(); ++ final int chunkX = CoordinateUtils.getChunkX(chunkKey); ++ final int chunkZ = CoordinateUtils.getChunkZ(chunkKey); ++ final ChunkAccess chunk = this.world.chunkSource.getChunkAtImmediately(chunkX, chunkZ); ++ if (chunk.getStatus() != ChunkStatus.FULL) { ++ // only rate limit actual generations ++ if ((ratedGensThisTick + 1) > maxGensThisTick) { ++ break; ++ } ++ ++ratedGensThisTick; ++ } ++ ++ this.genQueue.dequeueLong(); ++ ++ final byte prev = this.chunkTicketStage.put(chunkKey, CHUNK_TICKET_STAGE_GENERATING); + if (prev != CHUNK_TICKET_STAGE_LOADED) { + throw new IllegalStateException("Previous state should be " + CHUNK_TICKET_STAGE_LOADED + ", not " + prev); + } + this.pushDelayedTicketOp( + ChunkHolderManager.TicketOperation.addAndRemove( -+ chunk, ++ chunkKey, + REGION_PLAYER_TICKET, GENERATED_TICKET_LEVEL, this.idBoxed, + REGION_PLAYER_TICKET, LOADED_TICKET_LEVEL, this.idBoxed + ) + ); -+ this.generatingQueue.enqueue(chunk); ++ this.generatingQueue.enqueue(chunkKey); + } + + // try to pull ticking chunks @@ -3760,10 +3774,10 @@ index 0000000000000000000000000000000000000000..924539d4ac50c70178ba220424ffacd6 +} diff --git a/src/main/java/io/papermc/paper/chunk/system/entity/EntityLookup.java b/src/main/java/io/papermc/paper/chunk/system/entity/EntityLookup.java new file mode 100644 -index 0000000000000000000000000000000000000000..ff7198a03ab0da79c98513f4a1507e854484f4c2 +index 0000000000000000000000000000000000000000..c4d1dbbd39ba0cdc9176ffa6d350d2aa50380211 --- /dev/null +++ b/src/main/java/io/papermc/paper/chunk/system/entity/EntityLookup.java -@@ -0,0 +1,859 @@ +@@ -0,0 +1,894 @@ +package io.papermc.paper.chunk.system.entity; + +import com.destroystokyo.paper.util.maplist.EntityList; @@ -3783,6 +3797,7 @@ index 0000000000000000000000000000000000000000..ff7198a03ab0da79c98513f4a1507e85 +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; ++import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.entity.EntityInLevelCallback; +import net.minecraft.world.level.entity.EntityTypeTest; +import net.minecraft.world.level.entity.LevelCallback; @@ -3790,6 +3805,7 @@ index 0000000000000000000000000000000000000000..ff7198a03ab0da79c98513f4a1507e85 +import net.minecraft.world.level.entity.LevelEntityGetter; +import net.minecraft.world.level.entity.Visibility; +import net.minecraft.world.phys.AABB; ++import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; @@ -4076,22 +4092,55 @@ index 0000000000000000000000000000000000000000..ff7198a03ab0da79c98513f4a1507e85 + this.getChunk(x, z).updateStatus(newStatus, this); + } + -+ public void addLegacyChunkEntities(final List entities) { -+ for (int i = 0, len = entities.size(); i < len; ++i) { -+ this.addEntity(entities.get(i), true); ++ public void addLegacyChunkEntities(final List entities, final ChunkPos forChunk) { ++ this.addEntityChunk(entities, forChunk, true); ++ } ++ ++ public void addEntityChunkEntities(final List entities, final ChunkPos forChunk) { ++ this.addEntityChunk(entities, forChunk, true); ++ } ++ ++ public void addWorldGenChunkEntities(final List entities, final ChunkPos forChunk) { ++ this.addEntityChunk(entities, forChunk, false); ++ } ++ ++ private void addRecursivelySafe(final Entity root, final boolean fromDisk) { ++ if (!this.addEntity(root, fromDisk)) { ++ // possible we are a passenger, and so should dismount from any valid entity in the world ++ root.stopRiding(true); ++ return; ++ } ++ for (final Entity passenger : root.getPassengers()) { ++ this.addRecursivelySafe(passenger, fromDisk); + } + } + -+ public void addEntityChunkEntities(final List entities) { ++ private void addEntityChunk(final List entities, final ChunkPos forChunk, final boolean fromDisk) { + for (int i = 0, len = entities.size(); i < len; ++i) { -+ this.addEntity(entities.get(i), true); -+ } -+ } ++ final Entity entity = entities.get(i); ++ if (entity.isPassenger()) { ++ continue; ++ } + -+ public void addWorldGenChunkEntities(final List entities) { -+ for (int i = 0, len = entities.size(); i < len; ++i) { -+ this.addEntity(entities.get(i), false); -+ } ++ if (!entity.chunkPosition().equals(forChunk)) { ++ LOGGER.warn("Root entity " + entity + " is outside of serialized chunk " + forChunk); ++ // can't set removed here, as we may not own the chunk position ++ // skip the entity ++ continue; ++ } ++ ++ final Vec3 rootPosition = entity.position(); ++ ++ // always adjust positions before adding passengers in case plugins access the entity, and so that ++ // they are added to the right entity chunk ++ for (final Entity passenger : entity.getIndirectPassengers()) { ++ if (!passenger.chunkPosition().equals(forChunk)) { ++ passenger.setPosRaw(rootPosition.x, rootPosition.y, rootPosition.z, true); ++ } ++ } ++ ++ this.addRecursivelySafe(entity, fromDisk); ++ } + } + + public boolean addNewEntity(final Entity entity) { @@ -6477,7 +6526,7 @@ index 0000000000000000000000000000000000000000..d72041aa814ff179e6e29a45dcd359a9 +} diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkFullTask.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkFullTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..300700477ee34bc22b31315825c0e40f61070cd5 +index 0000000000000000000000000000000000000000..679ed4d53269e1113035b462cf74ab16a231e22e --- /dev/null +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkFullTask.java @@ -0,0 +1,135 @@ @@ -6538,7 +6587,7 @@ index 0000000000000000000000000000000000000000..300700477ee34bc22b31315825c0e40f + final ServerLevel world = this.world; + final ProtoChunk protoChunk = (ProtoChunk)this.fromChunk; + chunk = new LevelChunk(this.world, protoChunk, (final LevelChunk unused) -> { -+ ChunkMap.postLoadProtoChunk(world, protoChunk.getEntities()); ++ ChunkMap.postLoadProtoChunk(world, protoChunk.getEntities(), protoChunk.getPos()); // Paper - rewrite chunk system + }); + } + @@ -10933,7 +10982,7 @@ index 0000000000000000000000000000000000000000..396d72c00e47cf1669ae20dc839c1c96 +} diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java new file mode 100644 -index 0000000000000000000000000000000000000000..51304c5cf4b0ac7646693ef97ef4a3847d3342b5 +index 0000000000000000000000000000000000000000..b66a7d4aab887309579154815a0d4abf9de506b0 --- /dev/null +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java @@ -0,0 +1,2106 @@ @@ -11054,7 +11103,7 @@ index 0000000000000000000000000000000000000000..51304c5cf4b0ac7646693ef97ef4a384 + if (entityChunk != null) { + final List entities = EntityStorage.readEntities(this.world, entityChunk); + -+ this.world.getEntityLookup().addEntityChunkEntities(entities); ++ this.world.getEntityLookup().addEntityChunkEntities(entities, new ChunkPos(this.chunkX, this.chunkZ)); + } + } + @@ -16770,12 +16819,12 @@ index 0000000000000000000000000000000000000000..7e8dc9e8f381abfdcce2746edc93122d + } +} diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 047b07c7443c0d6a403506b869d63806ec2a85f7..18092ddfd000ef36f0e182ac064c2f667b1e611b 100644 +index e7a124403f2b07c96caaaf97d1c9023f9ec2f9d9..b097bb4855ab724b2c435a9a9db450ff3ce840fe 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -94,6 +94,28 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -111,6 +111,28 @@ public class Connection extends SimpleChannelInboundHandler> { @Nullable - private volatile Component delayedDisconnect; + BandwidthDebugMonitor bandwidthDebugMonitor; public String hostname = ""; // CraftBukkit - add field + // Paper start - add pending task queue + private final Queue pendingTasks = new java.util.concurrent.ConcurrentLinkedQueue<>(); @@ -16802,15 +16851,15 @@ index 047b07c7443c0d6a403506b869d63806ec2a85f7..18092ddfd000ef36f0e182ac064c2f66 public Connection(PacketFlow side) { this.receiving = side; -@@ -261,6 +283,7 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -368,6 +390,7 @@ public class Connection extends SimpleChannelInboundHandler> { } private void flushQueue() { + try { // Paper - add pending task queue if (this.channel != null && this.channel.isOpen()) { - Queue queue = this.queue; + Queue queue = this.pendingActions; -@@ -273,6 +296,12 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -380,6 +403,12 @@ public class Connection extends SimpleChannelInboundHandler> { } } @@ -16837,10 +16886,10 @@ index a5e438a834826161c52ca9db57d234d9ff80a591..b8bc1b9b8e8a33df90a963f9f9769292 @Override diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index af8afd53b5d3b34be4a5207316ce35abbcdf202d..017395b49d4cc0d12246332cc7d4d0113dcd5c5e 100644 +index ae0b713870976d4b1e469a90cef9b2e282dbcaab..646cd39c46d86899f23c8179c0790e32d03f954f 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java -@@ -282,6 +282,7 @@ public class Main { +@@ -279,6 +279,7 @@ public class Main { convertable_conversionsession.saveDataTag(iregistrycustom_dimension, savedata); */ @@ -16849,10 +16898,10 @@ index af8afd53b5d3b34be4a5207316ce35abbcdf202d..017395b49d4cc0d12246332cc7d4d011 DedicatedServer dedicatedserver1 = new DedicatedServer(optionset, worldLoader.get(), thread, convertable_conversionsession, resourcepackrepository, worldstem, dedicatedserversettings, DataFixers.getDataFixer(), services, LoggerChunkProgressListener::new); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 73c3070b2e300e0ab29ac1db1631023cef7970f8..f46ae930c6d1609dbefb56e67853f6e8504b749f 100644 +index 0eb3a55cbf2ed2c3f5e809ee60aba3767f7aa01b..151259cc254d4e796e6af810e37eaa30b832daa3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -299,7 +299,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); @@ -16861,7 +16910,7 @@ index 73c3070b2e300e0ab29ac1db1631023cef7970f8..f46ae930c6d1609dbefb56e67853f6e8 ((MinecraftServer) atomicreference.get()).runServer(); }, "Server thread"); -@@ -582,7 +582,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 5000L && this.nextTickTime - this.lastOverloadWarning >= 30000L) { // CraftBukkit -@@ -1098,6 +1087,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pendingFullStateConfirmation; +- private CompletableFuture sendSync; + // Paper - rewrite chunk system private final ChunkMap chunkMap; // Paper @@ -17084,7 +17134,7 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 // Paper start public void onChunkAdd() { -@@ -82,148 +87,130 @@ public class ChunkHolder { +@@ -83,158 +87,143 @@ public class ChunkHolder { } // Paper end @@ -17114,6 +17164,10 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 + public boolean hasChunkBeenSent() { + return this.playersSentChunkTo.size() != 0; + } ++ ++ public boolean hasBeenSent(ServerPlayer to) { ++ return this.playersSentChunkTo.contains(to); ++ } + // Paper end - replace player chunk loader + public ChunkHolder(ChunkPos pos, LevelHeightAccessor world, LevelLightEngine lightingProvider, ChunkHolder.PlayerProvider playersWatchingChunkProvider, io.papermc.paper.chunk.system.scheduling.NewChunkHolder newChunkHolder) { // Paper - rewrite chunk system + this.newChunkHolder = newChunkHolder; // Paper - rewrite chunk system @@ -17121,6 +17175,7 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 this.blockChangedLightSectionFilter = new BitSet(); this.skyChangedLightSectionFilter = new BitSet(); - this.pendingFullStateConfirmation = CompletableFuture.completedFuture(null); // CraftBukkit - decompile error +- this.sendSync = CompletableFuture.completedFuture(null); // CraftBukkit - decompile error + // Paper - rewrite chunk system this.pos = pos; this.levelHeightAccessor = world; @@ -17216,6 +17271,17 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 + // Paper end - rewrite chunk system } + public CompletableFuture getChunkSendSyncFuture() { +- return this.sendSync; ++ throw new UnsupportedOperationException(); // Paper - rewrite chunk system + } + + @Nullable + public LevelChunk getChunkToSend() { +- return !this.sendSync.isDone() ? null : this.getTickingChunk(); ++ return this.getSendingChunk(); // Paper - rewrite chunk system + } + @Nullable public final LevelChunk getFullChunk() { // Paper - final for inline - CompletableFuture> completablefuture = this.getFullChunkFuture(); @@ -17296,7 +17362,7 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 if (chunk != null) { int i = this.levelHeightAccessor.getSectionIndex(pos.getY()); -@@ -239,16 +226,17 @@ public class ChunkHolder { +@@ -250,16 +239,17 @@ public class ChunkHolder { } public void sectionLightChanged(LightLayer lightType, int y) { @@ -17319,7 +17385,7 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 int j = this.lightEngine.getMinLightSection(); int k = this.lightEngine.getMaxLightSection(); -@@ -273,7 +261,7 @@ public class ChunkHolder { +@@ -284,7 +274,7 @@ public class ChunkHolder { List list; if (!this.skyChangedLightSectionFilter.isEmpty() || !this.blockChangedLightSectionFilter.isEmpty()) { @@ -17328,7 +17394,7 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 if (!list.isEmpty()) { ClientboundLightUpdatePacket packetplayoutlightupdate = new ClientboundLightUpdatePacket(chunk.getPos(), this.lightEngine, this.skyChangedLightSectionFilter, this.blockChangedLightSectionFilter); -@@ -285,7 +273,7 @@ public class ChunkHolder { +@@ -296,7 +286,7 @@ public class ChunkHolder { } if (this.hasChangedSections) { @@ -17337,7 +17403,7 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 for (int i = 0; i < this.changedBlocksPerSection.length; ++i) { ShortSet shortset = this.changedBlocksPerSection[i]; -@@ -343,67 +331,35 @@ public class ChunkHolder { +@@ -354,78 +344,35 @@ public class ChunkHolder { } @@ -17415,15 +17481,25 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 }); } +- public void addSendDependency(CompletableFuture postProcessingFuture) { +- if (this.sendSync.isDone()) { +- this.sendSync = postProcessingFuture; +- } else { +- this.sendSync = this.sendSync.thenCombine(postProcessingFuture, (object, object1) -> { +- return null; +- }); +- } +- +- } + // Paper - rewrite chunk system -+ + public FullChunkStatus getFullStatus() { - return ChunkLevel.fullStatus(this.ticketLevel); + return this.newChunkHolder.getChunkStatus(); // Paper - rewrite chunk system) { } public final ChunkPos getPos() { // Paper - final for inline -@@ -411,240 +367,17 @@ public class ChunkHolder { +@@ -433,240 +380,17 @@ public class ChunkHolder { } public final int getTicketLevel() { // Paper - final for inline @@ -17668,7 +17744,7 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 } @FunctionalInterface -@@ -682,15 +415,15 @@ public class ChunkHolder { +@@ -704,15 +428,15 @@ public class ChunkHolder { // Paper start public final boolean isEntityTickingReady() { @@ -17688,11 +17764,11 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..c5389e7f3665c06e487dfde3200b7e22 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0ee9c1113 100644 +index 8c84461a5711cb408b0ead397417c31cb2f4d336..ea0b82165e452b7b82d1d9a58eef6059cba30552 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -127,10 +127,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - private static final int MIN_VIEW_DISTANCE = 2; +@@ -118,10 +118,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + public static final int MIN_VIEW_DISTANCE = 2; public static final int MAX_VIEW_DISTANCE = 32; public static final int FORCED_TICKET_LEVEL = ChunkLevel.byStatus(FullChunkStatus.ENTITY_TICKING); - public final Long2ObjectLinkedOpenHashMap updatingChunkMap = new Long2ObjectLinkedOpenHashMap(); @@ -17703,7 +17779,7 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 public final ServerLevel level; private final ThreadedLevelLightEngine lightEngine; public final BlockableEventLoop mainThreadExecutor; // Paper - public -@@ -139,16 +136,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -130,16 +127,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider private final ChunkGeneratorStructureState chunkGeneratorState; public final Supplier overworldDataStorage; private final PoiManager poiManager; @@ -17723,9 +17799,9 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 private final String storageName; private final PlayerMap playerMap; public final Int2ObjectMap entityMap; -@@ -157,37 +152,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -148,37 +143,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider private final Queue unloadQueue; - int viewDistance; + private int serverViewDistance; - // CraftBukkit start - recursion-safe executor for Chunk loadCallback() and unloadCallback() - public final CallbackExecutor callbackExecutor = new CallbackExecutor(); @@ -17754,8 +17830,8 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 void addPlayerToDistanceMaps(ServerPlayer player) { + this.level.playerChunkLoader.addPlayer(player); // Paper - replace chunk loader - int chunkX = MCUtil.getChunkCoordinate(player.getX()); - int chunkZ = MCUtil.getChunkCoordinate(player.getZ()); + int chunkX = io.papermc.paper.util.MCUtil.getChunkCoordinate(player.getX()); + int chunkZ = io.papermc.paper.util.MCUtil.getChunkCoordinate(player.getZ()); // Note: players need to be explicitly added to distance maps before they can be updated } @@ -17764,15 +17840,15 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 } -@@ -195,6 +173,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - int chunkX = MCUtil.getChunkCoordinate(player.getX()); - int chunkZ = MCUtil.getChunkCoordinate(player.getZ()); +@@ -186,6 +164,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + int chunkX = io.papermc.paper.util.MCUtil.getChunkCoordinate(player.getX()); + int chunkZ = io.papermc.paper.util.MCUtil.getChunkCoordinate(player.getZ()); // Note: players need to be explicitly added to distance maps before they can be updated + this.level.playerChunkLoader.updatePlayer(player); // Paper - replace chunk loader } // Paper end // Paper start -@@ -224,16 +203,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -215,16 +194,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public final ChunkHolder getUnloadingChunkHolder(int chunkX, int chunkZ) { @@ -17791,7 +17867,7 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 this.tickingGenerated = new AtomicInteger(); this.playerMap = new PlayerMap(); this.entityMap = new Int2ObjectOpenHashMap(); -@@ -264,19 +240,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -255,19 +231,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.chunkGeneratorState = chunkGenerator.createState(iregistrycustom.lookupOrThrow(Registries.STRUCTURE_SET), this.randomState, j, world.spigotConfig); // Spigot this.mainThreadExecutor = mainThreadExecutor; @@ -17816,7 +17892,37 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 this.distanceManager = new ChunkMap.ChunkDistanceManager(executor, mainThreadExecutor); this.overworldDataStorage = persistentStateManagerFactory; this.poiManager = new PoiManager(path.resolve("poi"), dataFixer, dsync, iregistrycustom, world); -@@ -340,20 +314,22 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -311,23 +285,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + } + + boolean isChunkTracked(ServerPlayer player, int chunkX, int chunkZ) { +- return player.getChunkTrackingView().contains(chunkX, chunkZ) && !player.connection.chunkSender.isPending(ChunkPos.asLong(chunkX, chunkZ)); ++ // Paper start - rewrite player chunk loader ++ return this.level.playerChunkLoader.isChunkSent(player, chunkX, chunkZ); ++ // Paper end - rewrite player chunk loader + } + + private boolean isChunkOnTrackedBorder(ServerPlayer player, int chunkX, int chunkZ) { +- if (!this.isChunkTracked(player, chunkX, chunkZ)) { +- return false; +- } else { +- for (int k = -1; k <= 1; ++k) { +- for (int l = -1; l <= 1; ++l) { +- if ((k != 0 || l != 0) && !this.isChunkTracked(player, chunkX + k, chunkZ + l)) { +- return true; +- } +- } +- } +- +- return false; +- } ++ // Paper start - rewrite player chunk loader ++ return this.level.playerChunkLoader.isChunkSent(player, chunkX, chunkZ, true); ++ // Paper end - rewrite player chunk loader + } + + protected ThreadedLevelLightEngine getLightEngine() { +@@ -336,20 +302,22 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @Nullable protected ChunkHolder getUpdatingChunkIfPresent(long pos) { @@ -17846,7 +17952,16 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 } public String getChunkDebugData(ChunkPos chunkPos) { -@@ -391,84 +367,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -379,92 +347,12 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + + // Paper start + public final int getEffectiveViewDistance() { +- // TODO this needs to be checked on update +- // Mojang currently sets it to +1 of the configured view distance. So subtract one to get the one we really want. +- //TODO check if +0 is correct now +- return this.viewDistance; ++ return this.serverViewDistance; + } // Paper end private CompletableFuture, ChunkHolder.ChunkLoadingFailure>> getChunkRangeFuture(ChunkHolder centerChunk, int margin, IntFunction distanceToStatus) { @@ -17903,7 +18018,7 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 - - Optional optional = either.left(); - -- if (!optional.isPresent()) { +- if (optional.isEmpty()) { - return Either.right(new ChunkHolder.ChunkLoadingFailure() { - public String toString() { - ChunkPos chunkcoordintpair2 = new ChunkPos(j + l1 % (margin * 2 + 1), k + l1 / (margin * 2 + 1)); @@ -17932,7 +18047,7 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 } public ReportedException debugFuturesAndCreateReportedException(IllegalStateException exception, String details) { -@@ -498,263 +397,72 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -494,263 +382,72 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public CompletableFuture> prepareEntityTickingChunk(ChunkHolder chunk) { @@ -18005,7 +18120,7 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 protected void saveAllChunks(boolean flush) { - if (flush) { -- List list = (List) io.papermc.paper.chunk.system.ChunkSystem.getVisibleChunkHolders(this.level).stream().filter(ChunkHolder::wasAccessibleSinceLastSave).peek(ChunkHolder::refreshAccessibility).collect(Collectors.toList()); // Paper +- List list = io.papermc.paper.chunk.system.ChunkSystem.getVisibleChunkHolders(this.level).stream().filter(ChunkHolder::wasAccessibleSinceLastSave).peek(ChunkHolder::refreshAccessibility).toList(); // Paper - MutableBoolean mutableboolean = new MutableBoolean(); - - do { @@ -18216,7 +18331,7 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 return nbt.contains("Status", 8); } -@@ -790,54 +498,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -786,54 +483,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } private CompletableFuture> scheduleChunkGeneration(ChunkHolder holder, ChunkStatus requiredStatus) { @@ -18272,7 +18387,7 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 } protected void releaseLightTicket(ChunkPos pos) { -@@ -848,7 +509,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -844,7 +494,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider })); } @@ -18281,16 +18396,24 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 ChunkStatus chunkstatus1; if (distance == 0) { -@@ -860,7 +521,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -856,7 +506,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return chunkstatus1; } - private static void postLoadProtoChunk(ServerLevel world, List nbt) { -+ public static void postLoadProtoChunk(ServerLevel world, List nbt) { // Paper - public ++ public static void postLoadProtoChunk(ServerLevel world, List nbt, ChunkPos position) { // Paper - public and add chunk position parameter if (!nbt.isEmpty()) { // CraftBukkit start - these are spawned serialized (DefinedStructure) and we don't call an add event below at the moment due to ordering complexities world.addWorldGenChunkEntities(EntityType.loadEntitiesRecursive(nbt, world).filter((entity) -> { -@@ -882,93 +543,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -871,111 +521,27 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + needsRemoval = true; + } + return !needsRemoval; +- })); ++ }), position); // Paper - rewrite chunk system + // CraftBukkit end + } + } private CompletableFuture> protoChunkToFullChunk(ChunkHolder chunkHolder) { @@ -18351,6 +18474,16 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 - return either.ifLeft((chunk) -> { - chunk.postProcessGeneration(); - this.level.startTickingChunk(chunk); +- CompletableFuture completablefuture2 = holder.getChunkSendSyncFuture(); +- +- if (completablefuture2.isDone()) { +- this.onChunkReadyToSend(chunk); +- } else { +- completablefuture2.thenAcceptAsync((object) -> { +- this.onChunkReadyToSend(chunk); +- }, this.mainThreadExecutor); +- } +- - }); - }, this.mainThreadExecutor); - @@ -18358,27 +18491,29 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 - this.tickingGenerated.getAndIncrement(); - return null; - }); -- completablefuture1.thenAcceptAsync((either) -> { -- either.ifLeft((chunk) -> { -- MutableObject mutableobject = new MutableObject(); -- -- this.getPlayers(holder.getPos(), false).forEach((entityplayer) -> { -- this.playerLoadedChunk(entityplayer, mutableobject, chunk); -- }); -- }); -- }, (runnable) -> { -- this.mainThreadMailbox.tell(ChunkTaskPriorityQueueSorter.message(holder, runnable)); -- }); - return completablefuture1; + throw new UnsupportedOperationException(); // Paper - rewrite chunk system } + private void onChunkReadyToSend(LevelChunk chunk) { +- ChunkPos chunkcoordintpair = chunk.getPos(); +- Iterator iterator = this.playerMap.getAllPlayers().iterator(); +- +- while (iterator.hasNext()) { +- ServerPlayer entityplayer = (ServerPlayer) iterator.next(); +- +- if (entityplayer.getChunkTrackingView().contains(chunkcoordintpair)) { +- ChunkMap.markChunkPendingToSend(entityplayer, chunk); +- } +- } ++ throw new UnsupportedOperationException(); // Paper - rewrite player chunk loader + + } + public CompletableFuture> prepareAccessibleChunk(ChunkHolder holder) { - return this.getChunkRangeFuture(holder, 1, ChunkStatus::getStatusAroundFullChunk).thenApplyAsync((either) -> { - return either.mapLeft((list) -> { -- LevelChunk chunk = (LevelChunk) list.get(list.size() / 2); -- -- return chunk; +- return (LevelChunk) list.get(list.size() / 2); - }); - }, (runnable) -> { - this.mainThreadMailbox.tell(ChunkTaskPriorityQueueSorter.message(holder, runnable)); @@ -18387,7 +18522,7 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 } public int getTickingGenerated() { -@@ -976,94 +559,26 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -983,130 +549,52 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } private boolean saveChunkIfNeeded(ChunkHolder chunkHolder) { @@ -18474,89 +18609,68 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 - this.markPositionReplaceable(pos); - return false; - } -- -- ChunkStatus.ChunkType chunkstatus_type = ChunkSerializer.getChunkTypeFromTag(nbttagcompound); + throw new UnsupportedOperationException(); // Paper - rewrite chunk system + } +- ChunkStatus.ChunkType chunkstatus_type = ChunkSerializer.getChunkTypeFromTag(nbttagcompound); ++ // Paper start - replace player loader system ++ public void setTickViewDistance(int distance) { ++ this.level.playerChunkLoader.setTickDistance(distance); ++ } + - return this.markPosition(pos, chunkstatus_type) == 1; - } -+ // Paper start - replace player loader system -+ public void setTickViewDistance(int distance) { -+ this.level.playerChunkLoader.setTickDistance(distance); - } - + public void setSendViewDistance(int distance) { + this.level.playerChunkLoader.setSendDistance(distance); -+ } + } + // Paper end - replace player loader system - public void setViewDistance(int watchDistance) { + +- protected void setServerViewDistance(int watchDistance) { ++ public void setServerViewDistance(int watchDistance) { // Paper - replace player loader system int j = Mth.clamp(watchDistance, 2, 32); -@@ -1071,35 +586,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - int k = this.viewDistance; - - this.viewDistance = j; -- this.distanceManager.updatePlayerTickets(this.viewDistance); -- Iterator objectiterator = io.papermc.paper.chunk.system.ChunkSystem.getUpdatingChunkHolders(this.level).iterator(); // Paper + if (j != this.serverViewDistance) { + this.serverViewDistance = j; +- this.distanceManager.updatePlayerTickets(this.serverViewDistance); +- Iterator iterator = this.playerMap.getAllPlayers().iterator(); - -- while (objectiterator.hasNext()) { -- ChunkHolder playerchunk = (ChunkHolder) objectiterator.next(); -- ChunkPos chunkcoordintpair = playerchunk.getPos(); -- MutableObject mutableobject = new MutableObject(); +- while (iterator.hasNext()) { +- ServerPlayer entityplayer = (ServerPlayer) iterator.next(); - -- this.getPlayers(chunkcoordintpair, false).forEach((entityplayer) -> { -- SectionPos sectionposition = entityplayer.getLastSectionPos(); -- boolean flag = ChunkMap.isChunkInRange(chunkcoordintpair.x, chunkcoordintpair.z, sectionposition.x(), sectionposition.z(), k); -- boolean flag1 = ChunkMap.isChunkInRange(chunkcoordintpair.x, chunkcoordintpair.z, sectionposition.x(), sectionposition.z(), this.viewDistance); -- -- this.updateChunkTracking(entityplayer, chunkcoordintpair, mutableobject, flag, flag1); -- }); +- this.updateChunkTracking(entityplayer); - } -+ this.level.playerChunkLoader.setLoadDistance(this.viewDistance + 1); // Paper - replace player loader system ++ this.level.playerChunkLoader.setLoadDistance(this.serverViewDistance + 1); // Paper - replace player loader system } } -- protected void updateChunkTracking(ServerPlayer player, ChunkPos pos, MutableObject packet, boolean oldWithinViewDistance, boolean newWithinViewDistance) { -+ public void updateChunkTracking(ServerPlayer player, ChunkPos pos, MutableObject packet, boolean oldWithinViewDistance, boolean newWithinViewDistance) { // Paper - public -+ io.papermc.paper.util.TickThread.ensureTickThread(this.level, pos, "May not update chunk tracking for chunk async"); // Paper - replace chunk loader system -+ io.papermc.paper.util.TickThread.ensureTickThread(player, "May not update chunk tracking for player async"); // Paper - replace chunk loader system - if (player.level() == this.level) { -+ ChunkHolder playerchunk = this.getVisibleChunkIfPresent(pos.toLong()); // Paper - replace chunk loader system - move up - if (newWithinViewDistance && !oldWithinViewDistance) { -- ChunkHolder playerchunk = this.getVisibleChunkIfPresent(pos.toLong()); -+ // Paper - replace chunk loader system - move up - - if (playerchunk != null) { -- LevelChunk chunk = playerchunk.getTickingChunk(); -+ LevelChunk chunk = playerchunk.getSendingChunk(); // Paper - replace chunk loader system - - if (chunk != null) { -+ playerchunk.addPlayer(player); // Paper - replace chunk loader system - this.playerLoadedChunk(player, packet, chunk); - } - -@@ -1108,10 +612,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - } - - if (!newWithinViewDistance && oldWithinViewDistance) { -+ // Paper start - replace chunk loader system -+ if (playerchunk != null) { -+ playerchunk.removePlayer(player); -+ } else { -+ LOGGER.warn("ChunkHolder at " + pos + " in world '" + this.level.getWorld().getName() + "' does not exist to untrack chunk for " + player, new Throwable()); -+ } -+ // Paper end - replace chunk loader system - player.untrackChunk(pos); - } - -- } -+ } else { LOGGER.warn("Mismatch in world for chunk " + pos + " in world '" + this.level.getWorld().getName() + "' for player " + player, new Throwable()); } // Paper - replace chunk loader system + int getPlayerViewDistance(ServerPlayer player) { +- return Mth.clamp(player.requestedViewDistance(), 2, this.serverViewDistance); ++ return io.papermc.paper.chunk.system.ChunkSystem.getSendViewDistance(player); // Paper - per player view distance } - public int size() { -@@ -1127,30 +638,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + private void markChunkPendingToSend(ServerPlayer player, ChunkPos pos) { +- LevelChunk chunk = this.getChunkToSend(pos.toLong()); +- +- if (chunk != null) { +- ChunkMap.markChunkPendingToSend(player, chunk); +- } ++ throw new UnsupportedOperationException(); // Paper - per player view distance + + } + + private static void markChunkPendingToSend(ServerPlayer player, LevelChunk chunk) { +- player.connection.chunkSender.markChunkPendingToSend(chunk); ++ throw new UnsupportedOperationException(); // Paper - rewrite player chunk loader + } + + private static void dropChunk(ServerPlayer player, ChunkPos pos) { +- player.connection.chunkSender.dropChunk(player, pos); ++ // Paper - rewrite player chunk loader + } + + @Nullable +@@ -1129,30 +617,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } void dumpChunks(Writer writer) throws IOException { @@ -18588,7 +18702,7 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 } private static String printFuture(CompletableFuture> future) { -@@ -1169,6 +657,35 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1171,6 +636,35 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } } @@ -18624,91 +18738,94 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 private CompletableFuture> readChunk(ChunkPos chunkPos) { return this.read(chunkPos).thenApplyAsync((optional) -> { return optional.map((nbttagcompound) -> this.upgradeChunkTag(nbttagcompound, chunkPos)); // CraftBukkit -@@ -1272,15 +789,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1260,8 +754,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + this.distanceManager.addPlayer(SectionPos.of((EntityAccess) player), player); + } + +- player.setChunkTrackingView(ChunkTrackingView.EMPTY); +- this.updateChunkTracking(player); ++ // Paper - handled by player chunk loader + this.addPlayerToDistanceMaps(player); // Paper - distance maps + } else { + SectionPos sectionposition = player.getLastSectionPos(); +@@ -1272,7 +765,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + } + this.removePlayerFromDistanceMaps(player); // Paper - distance maps +- this.applyChunkTrackingView(player, ChunkTrackingView.EMPTY); ++ // Paper - handled by player chunk loader } -- for (int k = i - this.viewDistance - 1; k <= i + this.viewDistance + 1; ++k) { -- for (int l = j - this.viewDistance - 1; l <= j + this.viewDistance + 1; ++l) { -- if (ChunkMap.isChunkInRange(k, l, i, j, this.viewDistance)) { -- ChunkPos chunkcoordintpair = new ChunkPos(k, l); -- -- this.updateChunkTracking(player, chunkcoordintpair, new MutableObject(), !added, added); -- } -- } -- } -+ // Paper - handled by player chunk loader - } +@@ -1320,73 +813,30 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + this.playerMap.unIgnorePlayer(player); + } -@@ -1288,7 +797,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - SectionPos sectionposition = SectionPos.of((EntityAccess) player); - - player.setLastSectionPos(sectionposition); -- player.connection.send(new ClientboundSetChunkCacheCenterPacket(sectionposition.x(), sectionposition.z())); -+ //player.connection.send(new ClientboundSetChunkCacheCenterPacket(sectionposition.x(), sectionposition.z())); // Paper - handled by player chunk loader - return sectionposition; - } - -@@ -1344,44 +853,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - int l1; - int i2; - -- if (Math.abs(i1 - i) <= k1 * 2 && Math.abs(j1 - j) <= k1 * 2) { -- l1 = Math.min(i, i1) - k1; -- i2 = Math.min(j, j1) - k1; -- int j2 = Math.max(i, i1) + k1; -- int k2 = Math.max(j, j1) + k1; -- -- for (int l2 = l1; l2 <= j2; ++l2) { -- for (int i3 = i2; i3 <= k2; ++i3) { -- boolean flag3 = ChunkMap.isChunkInRange(l2, i3, i1, j1, this.viewDistance); -- boolean flag4 = ChunkMap.isChunkInRange(l2, i3, i, j, this.viewDistance); -- -- this.updateChunkTracking(player, new ChunkPos(l2, i3), new MutableObject(), flag3, flag4); -- } -- } -- } else { -- boolean flag5; -- boolean flag6; -- -- for (l1 = i1 - k1; l1 <= i1 + k1; ++l1) { -- for (i2 = j1 - k1; i2 <= j1 + k1; ++i2) { -- if (ChunkMap.isChunkInRange(l1, i2, i1, j1, this.viewDistance)) { -- flag5 = true; -- flag6 = false; -- this.updateChunkTracking(player, new ChunkPos(l1, i2), new MutableObject(), true, false); -- } -- } -- } -- -- for (l1 = i - k1; l1 <= i + k1; ++l1) { -- for (i2 = j - k1; i2 <= j + k1; ++i2) { -- if (ChunkMap.isChunkInRange(l1, i2, i, j, this.viewDistance)) { -- flag5 = false; -- flag6 = true; -- this.updateChunkTracking(player, new ChunkPos(l1, i2), new MutableObject(), false, true); -- } -- } -- } -- } -+ // Paper - replaced by PlayerChunkLoader +- this.updateChunkTracking(player); ++ // Paper - replaced by PlayerChunkLoader + } this.updateMaps(player); // Paper - distance maps + } -@@ -1389,20 +861,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + private void updateChunkTracking(ServerPlayer player) { +- ChunkPos chunkcoordintpair = player.chunkPosition(); +- int i = this.getPlayerViewDistance(player); +- ChunkTrackingView chunktrackingview = player.getChunkTrackingView(); +- +- if (chunktrackingview instanceof ChunkTrackingView.Positioned) { +- ChunkTrackingView.Positioned chunktrackingview_a = (ChunkTrackingView.Positioned) chunktrackingview; +- +- if (chunktrackingview_a.center().equals(chunkcoordintpair) && chunktrackingview_a.viewDistance() == i) { +- return; +- } +- } +- +- this.applyChunkTrackingView(player, ChunkTrackingView.of(chunkcoordintpair, i)); ++ throw new UnsupportedOperationException(); // Paper - replaced by PlayerChunkLoader + } + + private void applyChunkTrackingView(ServerPlayer player, ChunkTrackingView chunkFilter) { +- if (player.level() == this.level) { +- ChunkTrackingView chunktrackingview1 = player.getChunkTrackingView(); +- +- if (chunkFilter instanceof ChunkTrackingView.Positioned) { +- label15: +- { +- ChunkTrackingView.Positioned chunktrackingview_a = (ChunkTrackingView.Positioned) chunkFilter; +- +- if (chunktrackingview1 instanceof ChunkTrackingView.Positioned) { +- ChunkTrackingView.Positioned chunktrackingview_a1 = (ChunkTrackingView.Positioned) chunktrackingview1; +- +- if (chunktrackingview_a1.center().equals(chunktrackingview_a.center())) { +- break label15; +- } +- } +- +- player.connection.send(new ClientboundSetChunkCacheCenterPacket(chunktrackingview_a.center().x, chunktrackingview_a.center().z)); +- } +- } +- +- ChunkTrackingView.difference(chunktrackingview1, chunkFilter, (chunkcoordintpair) -> { +- this.markChunkPendingToSend(player, chunkcoordintpair); +- }, (chunkcoordintpair) -> { +- ChunkMap.dropChunk(player, chunkcoordintpair); +- }); +- player.setChunkTrackingView(chunkFilter); +- } ++ throw new UnsupportedOperationException(); // Paper - replaced by PlayerChunkLoader + } @Override public List getPlayers(ChunkPos chunkPos, boolean onlyOnWatchDistanceEdge) { -- Set set = this.playerMap.getPlayers(chunkPos.toLong()); +- Set set = this.playerMap.getAllPlayers(); - Builder builder = ImmutableList.builder(); - Iterator iterator = set.iterator(); - - while (iterator.hasNext()) { - ServerPlayer entityplayer = (ServerPlayer) iterator.next(); -- SectionPos sectionposition = entityplayer.getLastSectionPos(); - -- if (onlyOnWatchDistanceEdge && ChunkMap.isChunkOnRangeBorder(chunkPos.x, chunkPos.z, sectionposition.x(), sectionposition.z(), this.viewDistance) || !onlyOnWatchDistanceEdge && ChunkMap.isChunkInRange(chunkPos.x, chunkPos.z, sectionposition.x(), sectionposition.z(), this.viewDistance)) { +- if (onlyOnWatchDistanceEdge && this.isChunkOnTrackedBorder(entityplayer, chunkPos.x, chunkPos.z) || !onlyOnWatchDistanceEdge && this.isChunkTracked(entityplayer, chunkPos.x, chunkPos.z)) { - builder.add(entityplayer); - } + // Paper start - per player view distance @@ -18724,7 +18841,40 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 } public void addEntity(Entity entity) { -@@ -1630,7 +1096,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1450,13 +900,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + } + + protected void tick() { +- Iterator iterator = this.playerMap.getAllPlayers().iterator(); +- +- while (iterator.hasNext()) { +- ServerPlayer entityplayer = (ServerPlayer) iterator.next(); +- +- this.updateChunkTracking(entityplayer); +- } ++ // Paper - replaced by PlayerChunkLoader + + List list = Lists.newArrayList(); + List list1 = this.level.players(); +@@ -1565,16 +1009,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + } + + public void waitForLightBeforeSending(ChunkPos centerPos, int radius) { +- int j = radius + 1; +- +- ChunkPos.rangeClosed(centerPos, j).forEach((chunkcoordintpair1) -> { +- ChunkHolder playerchunk = this.getVisibleChunkIfPresent(chunkcoordintpair1.toLong()); +- +- if (playerchunk != null) { +- playerchunk.addSendDependency(this.lightEngine.waitForPendingTasks(chunkcoordintpair1.x, chunkcoordintpair1.z)); +- } +- +- }); ++ // Paper - rewrite player chunk loader + } + + private class ChunkDistanceManager extends DistanceManager { +@@ -1585,7 +1020,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @Override protected boolean isChunkToRemove(long pos) { @@ -18733,17 +18883,8 @@ index 19bd6f9aee3ccb1af1b010ee51a54aa2d0bf9c84..6f30a16595e352e32375530a0482d8c0 } @Nullable -@@ -1711,7 +1177,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - org.spigotmc.AsyncCatcher.catchOp("player tracker update"); // Spigot - if (player != this.entity) { - Vec3 vec3d = player.position().subtract(this.entity.position()); -- double d0 = (double) Math.min(this.getEffectiveRange(), ChunkMap.this.viewDistance * 16); -+ double d0 = (double) Math.min(this.getEffectiveRange(), io.papermc.paper.chunk.system.ChunkSystem.getSendViewDistance(player) * 16); // Paper - per player view distance - double d1 = vec3d.x * vec3d.x + vec3d.z * vec3d.z; - double d2 = d0 * d0; - boolean flag = d1 <= d2 && this.entity.broadcastToPlayer(player); diff --git a/src/main/java/net/minecraft/server/level/DistanceManager.java b/src/main/java/net/minecraft/server/level/DistanceManager.java -index f3c9a3dbb6f0e6f825b7477c89ed72ed52845419..c716047fefb51a77ce18df243c517d80c78b6853 100644 +index f3c9a3dbb6f0e6f825b7477c89ed72ed52845419..942042863f0105769c15b865d4d98a09a7053a68 100644 --- a/src/main/java/net/minecraft/server/level/DistanceManager.java +++ b/src/main/java/net/minecraft/server/level/DistanceManager.java @@ -39,65 +39,28 @@ import org.slf4j.Logger; @@ -19048,7 +19189,7 @@ index f3c9a3dbb6f0e6f825b7477c89ed72ed52845419..c716047fefb51a77ce18df243c517d80 protected void updatePlayerTickets(int viewDistance) { - this.playerTicketManager.updateViewDistance(viewDistance); -+ this.chunkMap.setViewDistance(viewDistance);// Paper - route to player chunk manager ++ this.chunkMap.setServerViewDistance(viewDistance);// Paper - route to player chunk manager } // Paper start @@ -19202,7 +19343,7 @@ index f3c9a3dbb6f0e6f825b7477c89ed72ed52845419..c716047fefb51a77ce18df243c517d80 + */ // Paper - rewrite chunk system } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 6d5a160a9fdaa04bb930afae8a0765910f631d23..b0687dcf8af84af627b67e7fbb68170a2fd28da0 100644 +index b1fd6118132ba38f60d2a2b15c09231fa29be8fa..65d447df49d8c4a27de9ae7f9e298bf705c688bc 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -141,108 +141,7 @@ public class ServerChunkCache extends ChunkSource { @@ -19633,7 +19774,7 @@ index 6d5a160a9fdaa04bb930afae8a0765910f631d23..b0687dcf8af84af627b67e7fbb68170a } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e653da43d 100644 +index 988a17cd0b960a07795d999dd125eae3a63d4227..0261baddef54c47f7b32f4e2a31ba0172e676d38 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -194,7 +194,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -19645,7 +19786,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e private final GameEventDispatcher gameEventDispatcher; public boolean noSave; private final SleepStatus sleepStatus; -@@ -260,50 +260,63 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -260,50 +260,65 @@ public class ServerLevel extends Level implements WorldGenLevel { return true; } @@ -19721,8 +19862,10 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e java.util.function.Consumer consumer = (net.minecraft.world.level.chunk.ChunkAccess chunk) -> { if (chunk != null) { - int ticketLevel = Math.max(33, chunkProvider.chunkMap.getUpdatingChunkIfPresent(chunk.getPos().toLong()).getTicketLevel()); ++ synchronized (ret) { // Folia - region threading - make callback thread-safe TODO rebase ret.add(chunk); - ticketLevels.add(ticketLevel); ++ } // Folia - region threading - make callback thread-safe TODO rebase chunkProvider.addTicketAtLevel(TicketType.FUTURE_AWAIT, chunk.getPos(), ticketLevel, holderIdentifier); } - if (++loadedChunks[0] == requiredChunks) { @@ -19736,7 +19879,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e chunkProvider.addTicketAtLevel(TicketType.UNKNOWN, chunkPos, ticketLevel, chunkPos); chunkProvider.removeTicketAtLevel(TicketType.FUTURE_AWAIT, chunkPos, ticketLevel, holderIdentifier); -@@ -315,12 +328,223 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -315,12 +330,223 @@ public class ServerLevel extends Level implements WorldGenLevel { for (int cx = minChunkX; cx <= maxChunkX; ++cx) { for (int cz = minChunkZ; cz <= maxChunkZ; ++cz) { io.papermc.paper.chunk.system.ChunkSystem.scheduleChunkLoad( @@ -19962,7 +20105,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e // Add env and gen to constructor, IWorldDataServer -> WorldDataServer public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List list, boolean flag1, @Nullable RandomSequences randomsequences, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) { -@@ -364,16 +588,16 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -364,16 +590,16 @@ public class ServerLevel extends Level implements WorldGenLevel { // CraftBukkit end boolean flag2 = minecraftserver.forceSynchronousWrites(); DataFixer datafixer = minecraftserver.getFixerUpper(); @@ -19984,8 +20127,8 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e return minecraftserver.overworld().getDataStorage(); }); this.chunkSource.getGeneratorState().ensureStructuresGenerated(); -@@ -410,6 +634,9 @@ public class ServerLevel extends Level implements WorldGenLevel { - }, "random_sequences"); +@@ -402,6 +628,9 @@ public class ServerLevel extends Level implements WorldGenLevel { + return (RandomSequences) this.getDataStorage().computeIfAbsent(RandomSequences.factory(l), "random_sequences"); }); this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit + @@ -19994,7 +20137,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e } /** @deprecated */ -@@ -520,7 +747,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -512,7 +741,7 @@ public class ServerLevel extends Level implements WorldGenLevel { gameprofilerfiller.push("checkDespawn"); entity.checkDespawn(); gameprofilerfiller.pop(); @@ -20003,7 +20146,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e Entity entity1 = entity.getVehicle(); if (entity1 != null) { -@@ -545,13 +772,16 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -537,13 +766,16 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.push("entityManagement"); @@ -20022,7 +20165,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e } protected void tickTime() { -@@ -1012,6 +1242,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1010,6 +1242,11 @@ public class ServerLevel extends Level implements WorldGenLevel { } public void save(@Nullable ProgressListener progressListener, boolean flush, boolean savingDisabled) { @@ -20034,7 +20177,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e ServerChunkCache chunkproviderserver = this.getChunkSource(); if (!savingDisabled) { -@@ -1027,16 +1262,13 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1025,16 +1262,13 @@ public class ServerLevel extends Level implements WorldGenLevel { } timings.worldSaveChunks.startTiming(); // Paper @@ -20055,7 +20198,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e // CraftBukkit start - moved from MinecraftServer.saveChunks ServerLevel worldserver1 = this; -@@ -1172,7 +1404,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1170,7 +1404,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.removePlayerImmediately((ServerPlayer) entity, Entity.RemovalReason.DISCARDED); } @@ -20064,7 +20207,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e } // CraftBukkit start -@@ -1188,7 +1420,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1186,7 +1420,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // CraftBukkit end @@ -20073,7 +20216,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e } } -@@ -1200,10 +1432,10 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1198,10 +1432,10 @@ public class ServerLevel extends Level implements WorldGenLevel { public boolean tryAddFreshEntityWithPassengers(Entity entity, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) { // CraftBukkit end Stream stream = entity.getSelfAndPassengers().map(Entity::getUUID); // CraftBukkit - decompile error @@ -20087,7 +20230,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e return false; } else { this.addFreshEntityWithPassengers(entity, reason); // CraftBukkit -@@ -1723,7 +1955,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1712,7 +1946,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } @@ -20096,7 +20239,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e bufferedwriter.write(String.format(Locale.ROOT, "block_entity_tickers: %d\n", this.blockEntityTickers.size())); bufferedwriter.write(String.format(Locale.ROOT, "block_ticks: %d\n", this.getBlockTicks().count())); bufferedwriter.write(String.format(Locale.ROOT, "fluid_ticks: %d\n", this.getFluidTicks().count())); -@@ -1772,7 +2004,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1761,7 +1995,7 @@ public class ServerLevel extends Level implements WorldGenLevel { BufferedWriter bufferedwriter2 = Files.newBufferedWriter(path1); try { @@ -20105,7 +20248,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e } catch (Throwable throwable4) { if (bufferedwriter2 != null) { try { -@@ -1793,7 +2025,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1782,7 +2016,7 @@ public class ServerLevel extends Level implements WorldGenLevel { BufferedWriter bufferedwriter3 = Files.newBufferedWriter(path2); try { @@ -20114,7 +20257,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e } catch (Throwable throwable6) { if (bufferedwriter3 != null) { try { -@@ -1935,7 +2167,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1924,7 +2158,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @VisibleForTesting public String getWatchdogStats() { @@ -20123,7 +20266,7 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e return BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType()).toString(); }), this.blockEntityTickers.size(), ServerLevel.getTypeCount(this.blockEntityTickers, TickingBlockEntity::getType), this.getBlockTicks().count(), this.getFluidTicks().count(), this.gatherChunkSourceStats()); } -@@ -1995,15 +2227,15 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1984,15 +2218,15 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override public LevelEntityGetter getEntities() { org.spigotmc.AsyncCatcher.catchOp("Chunk getEntities call"); // Spigot @@ -20131,18 +20274,20 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e + return this.entityLookup; // Paper - rewrite chunk system } - public void addLegacyChunkEntities(Stream entities) { +- public void addLegacyChunkEntities(Stream entities) { - this.entityManager.addLegacyChunkEntities(entities); -+ this.entityLookup.addLegacyChunkEntities(entities.toList()); // Paper - rewrite chunk system ++ public void addLegacyChunkEntities(Stream entities, ChunkPos forChunk) { // Paper - rewrite chunk system ++ this.entityLookup.addLegacyChunkEntities(entities.toList(), forChunk); // Paper - rewrite chunk system } - public void addWorldGenChunkEntities(Stream entities) { +- public void addWorldGenChunkEntities(Stream entities) { - this.entityManager.addWorldGenChunkEntities(entities); -+ this.entityLookup.addWorldGenChunkEntities(entities.toList()); // Paper - rewrite chunk system ++ public void addWorldGenChunkEntities(Stream entities, ChunkPos forChunk) { // Paper - rewrite chunk system ++ this.entityLookup.addWorldGenChunkEntities(entities.toList(), forChunk); // Paper - rewrite chunk system } public void startTickingChunk(LevelChunk chunk) { -@@ -2019,34 +2251,49 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2008,34 +2242,49 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override public void close() throws IOException { super.close(); @@ -20200,13 +20345,14 @@ index 7cb5abfa89f842194325d26c6e95b49460c5968f..995be2fd84ce343d7430d9658f91868e @Override diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a0856fc649c50309258f015e623502dd46aeeab4..5a18f4649b64d47f429eb6c1dbb6238aab3eacd2 100644 +index b944cda955c5660d3a9b84e9c92c2b19337a027a..32d79663a30dbbf54b0edf0460193182008f003b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -260,6 +260,48 @@ public class ServerPlayer extends Player { +@@ -257,6 +257,50 @@ public class ServerPlayer extends Player { public boolean isRealPlayer; // Paper public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper ++ // Paper start - replace player chunk loader + private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); + public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; + @@ -20248,12 +20394,13 @@ index a0856fc649c50309258f015e623502dd46aeeab4..5a18f4649b64d47f429eb6c1dbb6238a + return input.setSendViewDistance(distance); + }); + } ++ // Paper end - replace player chunk loader + - public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) { + public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) { super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); this.chatVisibility = ChatVisiblity.FULL; diff --git a/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java b/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java -index 6716d9acc8b31f3fc3642b47fa52ce32c5195a3e..76bd323f25d7c2f4e12dd13baa53995fa4f8b27a 100644 +index 97662f8c8c125cb964d46b9095509a0da9796dba..f382d138959b34bfc3a114bc9d96e056cccbfc89 100644 --- a/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java +++ b/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java @@ -37,15 +37,12 @@ import net.minecraft.world.level.chunk.ChunkStatus; @@ -20425,7 +20572,7 @@ index 6716d9acc8b31f3fc3642b47fa52ce32c5195a3e..76bd323f25d7c2f4e12dd13baa53995f + throw new UnsupportedOperationException(); // Paper - rewrite chunk system } - static enum TaskType { + public CompletableFuture waitForPendingTasks(int x, int z) { diff --git a/src/main/java/net/minecraft/server/level/Ticket.java b/src/main/java/net/minecraft/server/level/Ticket.java index b346fa94b23d81da7da073f71dd12e672e0f079c..0edb97617f0c0da8dda901a26891b33c324715c7 100644 --- a/src/main/java/net/minecraft/server/level/Ticket.java @@ -20522,11 +20669,55 @@ index e96a0ca47e4701ba187555bd92c968345bc85677..73b96f804079288e9c5fcc11da54e61e + public void getEntitiesByClass(Class clazz, Entity except, AABB box, List into, Predicate predicate) {} + // Paper end } +diff --git a/src/main/java/net/minecraft/server/network/PlayerChunkSender.java b/src/main/java/net/minecraft/server/network/PlayerChunkSender.java +index c509a1318bcef38fd4927e38b6ee9846853e2d15..0f7ee2eea68a5c910bdf4d6263ed09cbed592516 100644 +--- a/src/main/java/net/minecraft/server/network/PlayerChunkSender.java ++++ b/src/main/java/net/minecraft/server/network/PlayerChunkSender.java +@@ -42,14 +42,21 @@ public class PlayerChunkSender { + this.pendingChunks.add(chunk.getPos().toLong()); + } + ++ // Paper start - rewrite player chunk loader ++ public static void dropChunkStatic(ServerPlayer player, ChunkPos pos) { ++ player.connection.send(new ClientboundForgetLevelChunkPacket(pos)); ++ } ++ // Paper end - rewrite player chunk loader ++ + public void dropChunk(ServerPlayer player, ChunkPos pos) { + if (!this.pendingChunks.remove(pos.toLong()) && player.isAlive()) { +- player.connection.send(new ClientboundForgetLevelChunkPacket(pos)); ++ dropChunkStatic(player, pos); // Paper - rewrite player chunk loader - move into own method + } + + } + + public void sendNextChunks(ServerPlayer player) { ++ if (true) return; // Paper - rewrite player chunk loader + if (this.unacknowledgedBatches < this.maxUnacknowledgedBatches) { + float f = Math.max(1.0F, this.desiredChunksPerTick); + this.batchQuota = Math.min(this.batchQuota + this.desiredChunksPerTick, f); +@@ -75,7 +82,7 @@ public class PlayerChunkSender { + } + } + +- private static void sendChunk(ServerGamePacketListenerImpl handler, ServerLevel world, LevelChunk chunk) { ++ public static void sendChunk(ServerGamePacketListenerImpl handler, ServerLevel world, LevelChunk chunk) { // Paper - rewrite chunk loader - public + handler.send(new ClientboundLevelChunkWithLightPacket(chunk, world.getLightEngine(), (BitSet)null, (BitSet)null)); + ChunkPos chunkPos = chunk.getPos(); + DebugPackets.sendPoiPacketsForChunk(world, chunkPos); +@@ -100,6 +107,7 @@ public class PlayerChunkSender { + } + + public void onChunkBatchReceivedByClient(float desiredBatchSize) { ++ if (true) return; // Paper - rewrite player chunk loader + --this.unacknowledgedBatches; + this.desiredChunksPerTick = Double.isNaN((double)desiredBatchSize) ? 0.01F : Mth.clamp(desiredBatchSize, 0.01F, 64.0F); + if (this.unacknowledgedBatches == 0) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1fa9b13831638ea2bfd5d3073dc31018083c8b6a..2c922afde237ca0e56ee6dc067f2989434d4d08c 100644 +index e85268e4c20371d4264effb70ae9fa8e435f8766..3b11d395bd2c8ca8ec9a2ddb62b57c167a45ba2d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -790,6 +790,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -695,6 +695,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.disconnect(Component.translatable("disconnect.spam")); return; } @@ -20541,30 +20732,30 @@ index 1fa9b13831638ea2bfd5d3073dc31018083c8b6a..2c922afde237ca0e56ee6dc067f29894 StringReader stringreader = new StringReader(packet.getCommand()); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index b922654c0b0b1b0d03beb20bb1944b817907f929..b40ddd8fb3e2d2bafaa2ece46714815d0d6d5f75 100644 +index b30128b77d2fe8a8c1db9b5746aab537a9a25430..5ae47b3449df7a83a5c22a266f7b9e4ea681a492 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -262,7 +262,7 @@ public abstract class PlayerList { - boolean flag1 = gamerules.getBoolean(GameRules.RULE_REDUCEDDEBUGINFO); +@@ -251,7 +251,7 @@ public abstract class PlayerList { + boolean flag2 = gamerules.getBoolean(GameRules.RULE_LIMITED_CRAFTING); // Spigot - view distance -- playerconnection.send(new ClientboundLoginPacket(player.getId(), worlddata.isHardcore(), player.gameMode.getGameModeForPlayer(), player.gameMode.getPreviousGameModeForPlayer(), this.server.levelKeys(), this.synchronizedRegistries, worldserver1.dimensionTypeId(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), this.getMaxPlayers(), worldserver1.spigotConfig.viewDistance, worldserver1.spigotConfig.simulationDistance, flag1, !flag, worldserver1.isDebug(), worldserver1.isFlat(), player.getLastDeathLocation(), player.getPortalCooldown())); -+ playerconnection.send(new ClientboundLoginPacket(player.getId(), worlddata.isHardcore(), player.gameMode.getGameModeForPlayer(), player.gameMode.getPreviousGameModeForPlayer(), this.server.levelKeys(), this.synchronizedRegistries, worldserver1.dimensionTypeId(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), this.getMaxPlayers(), worldserver1.getWorld().getSendViewDistance(), worldserver1.getWorld().getSimulationDistance(), flag1, !flag, worldserver1.isDebug(), worldserver1.isFlat(), player.getLastDeathLocation(), player.getPortalCooldown())); // Paper - replace old player chunk management +- playerconnection.send(new ClientboundLoginPacket(player.getId(), worlddata.isHardcore(), this.server.levelKeys(), this.getMaxPlayers(), worldserver1.spigotConfig.viewDistance, worldserver1.spigotConfig.simulationDistance, flag1, !flag, flag2, player.createCommonSpawnInfo(worldserver1))); ++ playerconnection.send(new ClientboundLoginPacket(player.getId(), worlddata.isHardcore(), this.server.levelKeys(), this.getMaxPlayers(), worldserver1.getWorld().getSendViewDistance(), worldserver1.getWorld().getSimulationDistance(), flag1, !flag, flag2, player.createCommonSpawnInfo(worldserver1))); // Paper - replace old player chunk management player.getBukkitEntity().sendSupportedChannels(); // CraftBukkit - playerconnection.send(new ClientboundUpdateEnabledFeaturesPacket(FeatureFlags.REGISTRY.toNames(worldserver1.enabledFeatures()))); - playerconnection.send(new ClientboundCustomPayloadPacket(ClientboundCustomPayloadPacket.BRAND, (new FriendlyByteBuf(Unpooled.buffer())).writeUtf(this.getServer().getServerModName()))); -@@ -800,8 +800,8 @@ public abstract class PlayerList { - // CraftBukkit start - LevelData worlddata = worldserver1.getLevelData(); - entityplayer1.connection.send(new ClientboundRespawnPacket(worldserver1.dimensionTypeId(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), entityplayer1.gameMode.getGameModeForPlayer(), entityplayer1.gameMode.getPreviousGameModeForPlayer(), worldserver1.isDebug(), worldserver1.isFlat(), (byte) i, entityplayer1.getLastDeathLocation(), entityplayer1.getPortalCooldown())); + playerconnection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked())); + playerconnection.send(new ClientboundPlayerAbilitiesPacket(player.getAbilities())); +@@ -799,8 +799,8 @@ public abstract class PlayerList { + LevelData worlddata = worldserver2.getLevelData(); + + entityplayer1.connection.send(new ClientboundRespawnPacket(entityplayer1.createCommonSpawnInfo(worldserver2), (byte) i)); - entityplayer1.connection.send(new ClientboundSetChunkCacheRadiusPacket(worldserver1.spigotConfig.viewDistance)); // Spigot - entityplayer1.connection.send(new ClientboundSetSimulationDistancePacket(worldserver1.spigotConfig.simulationDistance)); // Spigot + entityplayer1.connection.send(new ClientboundSetChunkCacheRadiusPacket(worldserver1.getWorld().getSendViewDistance())); // Spigot // Paper - replace old player chunk management + entityplayer1.connection.send(new ClientboundSetSimulationDistancePacket(worldserver1.getWorld().getSimulationDistance())); // Spigot // Paper - replace old player chunk management - entityplayer1.spawnIn(worldserver1); - entityplayer1.unsetRemoved(); - entityplayer1.connection.teleport(CraftLocation.toBukkit(entityplayer1.position(), worldserver1.getWorld(), entityplayer1.getYRot(), entityplayer1.getXRot())); -@@ -1297,7 +1297,7 @@ public abstract class PlayerList { + entityplayer1.connection.teleport(CraftLocation.toBukkit(entityplayer1.position(), worldserver2.getWorld(), entityplayer1.getYRot(), entityplayer1.getXRot())); // CraftBukkit + entityplayer1.connection.send(new ClientboundSetDefaultSpawnPositionPacket(worldserver1.getSharedSpawnPos(), worldserver1.getSharedSpawnAngle())); + entityplayer1.connection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked())); +@@ -1291,7 +1291,7 @@ public abstract class PlayerList { public void setViewDistance(int viewDistance) { this.viewDistance = viewDistance; @@ -20573,7 +20764,7 @@ index b922654c0b0b1b0d03beb20bb1944b817907f929..b40ddd8fb3e2d2bafaa2ece46714815d Iterator iterator = this.server.getAllLevels().iterator(); while (iterator.hasNext()) { -@@ -1312,7 +1312,7 @@ public abstract class PlayerList { +@@ -1306,7 +1306,7 @@ public abstract class PlayerList { public void setSimulationDistance(int simulationDistance) { this.simulationDistance = simulationDistance; @@ -20692,7 +20883,7 @@ index 495b52bfab14478f8285cc5471335a41244c199e..e16ef1b7c0bfe6d6194c09f6787a50fd if (flag1) { ++this.converted; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8fdac0e7bb0b9374ebdb82673d0579fff22af5e3..48ac0559e32a1b6b26a00978cf9ef6a1c13e674b 100644 +index 8b3763ba7f5648c41c5bf8a72e5c801d5483e6e0..0e79e92014dd56fc2ba98ce6050463627a0cde9f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -327,6 +327,58 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -20754,7 +20945,7 @@ index 8fdac0e7bb0b9374ebdb82673d0579fff22af5e3..48ac0559e32a1b6b26a00978cf9ef6a1 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); this.passengers = ImmutableList.of(); -@@ -2256,11 +2308,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2264,11 +2316,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return InteractionResult.PASS; } @@ -20768,7 +20959,7 @@ index 8fdac0e7bb0b9374ebdb82673d0579fff22af5e3..48ac0559e32a1b6b26a00978cf9ef6a1 return false; } -@@ -3561,6 +3613,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3588,6 +3640,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { }; } @@ -20785,7 +20976,7 @@ index 8fdac0e7bb0b9374ebdb82673d0579fff22af5e3..48ac0559e32a1b6b26a00978cf9ef6a1 public boolean hasExactlyOnePlayerPassenger() { return this.getIndirectPassengersStream().filter((entity) -> { return entity instanceof Player; -@@ -3892,6 +3954,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3919,6 +3981,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public final void setPosRaw(double x, double y, double z) { @@ -20798,7 +20989,7 @@ index 8fdac0e7bb0b9374ebdb82673d0579fff22af5e3..48ac0559e32a1b6b26a00978cf9ef6a1 if (this.position.x != x || this.position.y != y || this.position.z != z) { this.position = new Vec3(x, y, z); int i = Mth.floor(x); -@@ -3999,6 +4067,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4026,6 +4094,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @Override public final void setRemoved(Entity.RemovalReason reason) { @@ -20812,7 +21003,7 @@ index 8fdac0e7bb0b9374ebdb82673d0579fff22af5e3..48ac0559e32a1b6b26a00978cf9ef6a1 if (this.removalReason == null) { this.removalReason = reason; } -@@ -4007,7 +4082,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4034,7 +4109,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.stopRiding(); } @@ -20821,7 +21012,7 @@ index 8fdac0e7bb0b9374ebdb82673d0579fff22af5e3..48ac0559e32a1b6b26a00978cf9ef6a1 this.levelCallback.onRemove(reason); } -@@ -4022,7 +4097,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4049,7 +4124,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @Override public boolean shouldBeSaved() { @@ -21082,7 +21273,7 @@ index 795a02941d7cecb58ec45b5e79c8d510ff21163a..3fc17817906876e83f040f908b8b1ba6 this.setDirty = updateListener; this.isValid = valid; diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java -index 127c4ebedb94631ceac92dbdcd465e904217d715..be6e3e21ad62da01e5e2dd78e300cbc8efdbeb42 100644 +index b6a3c75b84d9f768afee33aa0f226207b307c1c0..2ec2b1d9d987c7f31c685aec3d3c87f42758c94b 100644 --- a/src/main/java/net/minecraft/world/level/EntityGetter.java +++ b/src/main/java/net/minecraft/world/level/EntityGetter.java @@ -18,6 +18,18 @@ import net.minecraft.world.phys.shapes.Shapes; @@ -21362,7 +21553,7 @@ index 846ae3fd184a1d63b743aa25e045604576697c96..a907b79fd8291a0e92db138f37239d17 public int getIndex() { diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 09999a3f523ce6d652799215d3418284a69042c1..a0c88a15be577d552e61bfa923a6e566b1cfcc49 100644 +index bcdaa86cfd31c2ce4aadad900c348aee0a9e3fc8..a8b2ce0debe54afeb937a4f1215d6b8955037d3d 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -661,9 +661,26 @@ public class LevelChunk extends ChunkAccess { @@ -21541,7 +21732,7 @@ index 09999a3f523ce6d652799215d3418284a69042c1..a0c88a15be577d552e61bfa923a6e566 public void setFullStatus(Supplier levelTypeProvider) { diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java -index 24892ae367e19038625e243bcdf1bb694632ede5..a7ee469bb2880a78540b79ae691ea449dfe22ce4 100644 +index 24892ae367e19038625e243bcdf1bb694632ede5..97cdd8cd7749185230471f34f7d1ce3abcd0fd11 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java @@ -94,7 +94,27 @@ public class ChunkSerializer { @@ -21689,6 +21880,15 @@ index 24892ae367e19038625e243bcdf1bb694632ede5..a7ee469bb2880a78540b79ae691ea449 nbttagcompound.put("PostProcessing", ChunkSerializer.packOffsets(chunk.getPostProcessing())); CompoundTag nbttagcompound3 = new CompoundTag(); Iterator iterator1 = chunk.getHeightmaps().iterator(); +@@ -558,7 +631,7 @@ public class ChunkSerializer { + + return nbttaglist == null && nbttaglist1 == null ? null : (chunk) -> { + if (nbttaglist != null) { +- world.addLegacyChunkEntities(EntityType.loadEntitiesRecursive(nbttaglist, world)); ++ world.addLegacyChunkEntities(EntityType.loadEntitiesRecursive(nbttaglist, world), chunk.getPos()); // Paper - rewrite chunk system + } + + if (nbttaglist1 != null) { diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java index 6c0f87535ffa95cf82ab4b03bb7bf8f2132d275f..b4e7c9b317d532d4915932f8f79dfebf2b63ff16 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java @@ -22019,10 +22219,10 @@ index d9daf07132c46548964a75588b69d7a74680e917..e68205fe7169c7c5b7c6fdada2ee97d8 } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -index b9b50c56e79297bb824a92355f437a5d4d7e6760..fe8bb0037bb7f317fc32ac34461f4eb3a1f397f2 100644 +index 1988063a0cac0350ae3b3388b8f2a0c95b8b259f..2b6ba2e30c9a4682d6deb2ab750d6923ad8469e4 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -24,30 +24,98 @@ public class RegionFileStorage implements AutoCloseable { +@@ -25,30 +25,98 @@ public class RegionFileStorage implements AutoCloseable { private final Path folder; private final boolean sync; @@ -22126,7 +22326,7 @@ index b9b50c56e79297bb824a92355f437a5d4d7e6760..fe8bb0037bb7f317fc32ac34461f4eb3 return regionfile1; } } -@@ -55,11 +123,12 @@ public class RegionFileStorage implements AutoCloseable { +@@ -56,11 +124,12 @@ public class RegionFileStorage implements AutoCloseable { @Nullable public CompoundTag read(ChunkPos pos) throws IOException { // CraftBukkit start - SPIGOT-5680: There's no good reason to preemptively create files on read, save that for writing @@ -22140,7 +22340,7 @@ index b9b50c56e79297bb824a92355f437a5d4d7e6760..fe8bb0037bb7f317fc32ac34461f4eb3 DataInputStream datainputstream = regionfile.getChunkDataInputStream(pos); CompoundTag nbttagcompound; -@@ -96,6 +165,9 @@ public class RegionFileStorage implements AutoCloseable { +@@ -97,6 +166,9 @@ public class RegionFileStorage implements AutoCloseable { } return nbttagcompound; @@ -22150,7 +22350,7 @@ index b9b50c56e79297bb824a92355f437a5d4d7e6760..fe8bb0037bb7f317fc32ac34461f4eb3 } public void scanChunk(ChunkPos chunkPos, StreamTagVisitor scanner) throws IOException { -@@ -130,7 +202,12 @@ public class RegionFileStorage implements AutoCloseable { +@@ -131,7 +203,12 @@ public class RegionFileStorage implements AutoCloseable { } protected void write(ChunkPos pos, @Nullable CompoundTag nbt) throws IOException { @@ -22164,7 +22364,7 @@ index b9b50c56e79297bb824a92355f437a5d4d7e6760..fe8bb0037bb7f317fc32ac34461f4eb3 if (nbt == null) { regionfile.clear(pos); -@@ -156,9 +233,12 @@ public class RegionFileStorage implements AutoCloseable { +@@ -157,9 +234,12 @@ public class RegionFileStorage implements AutoCloseable { } } @@ -22178,7 +22378,7 @@ index b9b50c56e79297bb824a92355f437a5d4d7e6760..fe8bb0037bb7f317fc32ac34461f4eb3 ExceptionCollector exceptionsuppressor = new ExceptionCollector<>(); ObjectIterator objectiterator = this.regionCache.values().iterator(); -@@ -175,7 +255,7 @@ public class RegionFileStorage implements AutoCloseable { +@@ -176,7 +256,7 @@ public class RegionFileStorage implements AutoCloseable { exceptionsuppressor.throwIfPresent(); } @@ -22188,7 +22388,7 @@ index b9b50c56e79297bb824a92355f437a5d4d7e6760..fe8bb0037bb7f317fc32ac34461f4eb3 while (objectiterator.hasNext()) { diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java -index b0c8a0e64c7a5d41c1b4cc1e39c4399c142b56af..0887cba39bfc4279abec21c6c316abab28beb0a3 100644 +index 56f0e217276b01aed2f20a71f6849826285fc15b..54db563d80bbabd87a2be6f5ead92b482ac07b10 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java @@ -34,27 +34,28 @@ import net.minecraft.world.level.ChunkPos; @@ -22684,10 +22884,10 @@ index bf4b2f89d3a7133155c6272379c742318b2c1514..33677ec811ceab939c419bf7d31b9958 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 42e74be803ad80b78e0db1c8cdd2dd9e45a40985..3704952279358e0a047ce1dccf2d3ef259b33ff1 100644 +index 71a0bad7402ec1ba48dcecb875fcad294af0f70e..e0b8aa7f17d98d7b686faf5422db4b4def12ee90 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1187,7 +1187,7 @@ public final class CraftServer implements Server { +@@ -1161,7 +1161,7 @@ public final class CraftServer implements Server { this.console.addLevel(internal); this.getServer().prepareLevels(internal.getChunkSource().chunkMap.progressListener, internal); @@ -22696,7 +22896,7 @@ index 42e74be803ad80b78e0db1c8cdd2dd9e45a40985..3704952279358e0a047ce1dccf2d3ef2 this.pluginManager.callEvent(new WorldLoadEvent(internal.getWorld())); return internal.getWorld(); -@@ -1231,7 +1231,7 @@ public final class CraftServer implements Server { +@@ -1205,7 +1205,7 @@ public final class CraftServer implements Server { } handle.getChunkSource().close(save); @@ -22705,7 +22905,7 @@ index 42e74be803ad80b78e0db1c8cdd2dd9e45a40985..3704952279358e0a047ce1dccf2d3ef2 handle.convertable.close(); } catch (Exception ex) { this.getLogger().log(Level.SEVERE, null, ex); -@@ -2062,7 +2062,7 @@ public final class CraftServer implements Server { +@@ -2036,7 +2036,7 @@ public final class CraftServer implements Server { @Override public boolean isPrimaryThread() { @@ -22715,7 +22915,7 @@ index 42e74be803ad80b78e0db1c8cdd2dd9e45a40985..3704952279358e0a047ce1dccf2d3ef2 // Paper start - Adventure diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index d01388bbadf3069357cf52463f4104a1be4d2b56..b3dfa35bc41191883814c78693a0d958ff3bf19b 100644 +index d01388bbadf3069357cf52463f4104a1be4d2b56..f4f94185cf699582737aecee1d3623c7857fbbb5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -322,10 +322,14 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -22798,7 +22998,7 @@ index d01388bbadf3069357cf52463f4104a1be4d2b56..b3dfa35bc41191883814c78693a0d958 + throw new IllegalArgumentException("View distance " + viewDistance + " is out of range of [2, 32]"); + } + net.minecraft.server.level.ChunkMap chunkMap = getHandle().getChunkSource().chunkMap; -+ chunkMap.setViewDistance(viewDistance); ++ chunkMap.setServerViewDistance(viewDistance); + } + + @Override @@ -22834,10 +23034,10 @@ index d01388bbadf3069357cf52463f4104a1be4d2b56..b3dfa35bc41191883814c78693a0d958 // Spigot start private final org.bukkit.World.Spigot spigot = new org.bukkit.World.Spigot() diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index f76db40188007b6ab475d259b4cbe0c7ef804677..49ca3592012cca981b96434c9807440672a8c165 100644 +index aa8ec0a92c8bca78088a2b30f571587823dd79bb..0c716967f19783e8e02c777835b63ed8126a80d9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -195,6 +195,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -197,6 +197,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.firstPlayed = System.currentTimeMillis(); } diff --git a/patches/server/0018-Add-command-line-option-to-load-extra-plugin-jars-no.patch b/patches/server/0019-Add-command-line-option-to-load-extra-plugin-jars-no.patch similarity index 97% rename from patches/server/0018-Add-command-line-option-to-load-extra-plugin-jars-no.patch rename to patches/server/0019-Add-command-line-option-to-load-extra-plugin-jars-no.patch index b2c45575c1..e546480117 100644 --- a/patches/server/0018-Add-command-line-option-to-load-extra-plugin-jars-no.patch +++ b/patches/server/0019-Add-command-line-option-to-load-extra-plugin-jars-no.patch @@ -7,7 +7,7 @@ Subject: [PATCH] Add command line option to load extra plugin jars not in the ex: java -jar paperclip.jar nogui -add-plugin=/path/to/plugin.jar -add-plugin=/path/to/another/plugin_jar.jar diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 71a0bad7402ec1ba48dcecb875fcad294af0f70e..b841302b22d5be19e2ed84a0e9ae34cc4f4ce3ae 100644 +index e0b8aa7f17d98d7b686faf5422db4b4def12ee90..c3d5a05d847ee7d32cfb227b3445a92762df31d0 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -431,6 +431,35 @@ public final class CraftServer implements Server { diff --git a/patches/server/0019-Configurable-cactus-bamboo-and-reed-growth-heights.patch b/patches/server/0020-Configurable-cactus-bamboo-and-reed-growth-heights.patch similarity index 100% rename from patches/server/0019-Configurable-cactus-bamboo-and-reed-growth-heights.patch rename to patches/server/0020-Configurable-cactus-bamboo-and-reed-growth-heights.patch diff --git a/patches/server/0020-Configurable-baby-zombie-movement-speed.patch b/patches/server/0021-Configurable-baby-zombie-movement-speed.patch similarity index 100% rename from patches/server/0020-Configurable-baby-zombie-movement-speed.patch rename to patches/server/0021-Configurable-baby-zombie-movement-speed.patch diff --git a/patches/server/0021-Configurable-fishing-time-ranges.patch b/patches/server/0022-Configurable-fishing-time-ranges.patch similarity index 100% rename from patches/server/0021-Configurable-fishing-time-ranges.patch rename to patches/server/0022-Configurable-fishing-time-ranges.patch diff --git a/patches/server/0022-Allow-nerfed-mobs-to-jump-and-take-water-damage.patch b/patches/server/0023-Allow-nerfed-mobs-to-jump-and-take-water-damage.patch similarity index 100% rename from patches/server/0022-Allow-nerfed-mobs-to-jump-and-take-water-damage.patch rename to patches/server/0023-Allow-nerfed-mobs-to-jump-and-take-water-damage.patch diff --git a/patches/server/0023-Add-configurable-despawn-distances-for-living-entiti.patch b/patches/server/0024-Add-configurable-despawn-distances-for-living-entiti.patch similarity index 100% rename from patches/server/0023-Add-configurable-despawn-distances-for-living-entiti.patch rename to patches/server/0024-Add-configurable-despawn-distances-for-living-entiti.patch diff --git a/patches/server/0024-Allow-for-toggling-of-spawn-chunks.patch b/patches/server/0025-Allow-for-toggling-of-spawn-chunks.patch similarity index 91% rename from patches/server/0024-Allow-for-toggling-of-spawn-chunks.patch rename to patches/server/0025-Allow-for-toggling-of-spawn-chunks.patch index 905a52fbd1..042396c575 100644 --- a/patches/server/0024-Allow-for-toggling-of-spawn-chunks.patch +++ b/patches/server/0025-Allow-for-toggling-of-spawn-chunks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow for toggling of spawn chunks diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d87f02c748fe2e5b4ea251f6691e8907a152cb6d..f21ba175538436e59c45d5350ef7b2605ed96775 100644 +index 5988c0847af4e8f0094328e91f736f25d567db60..fb78a91d1ab77f909823422c6d4e2ef7ed10c9c3 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -261,6 +261,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0025-Drop-falling-block-and-tnt-entities-at-the-specified.patch b/patches/server/0026-Drop-falling-block-and-tnt-entities-at-the-specified.patch similarity index 100% rename from patches/server/0025-Drop-falling-block-and-tnt-entities-at-the-specified.patch rename to patches/server/0026-Drop-falling-block-and-tnt-entities-at-the-specified.patch diff --git a/patches/server/0026-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch b/patches/server/0027-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch similarity index 88% rename from patches/server/0026-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch rename to patches/server/0027-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch index 136eba3acb..bf3d04ec74 100644 --- a/patches/server/0026-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch +++ b/patches/server/0027-Show-Paper-in-client-crashes-server-lists-and-Mojang.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Show 'Paper' in client crashes, server lists, and Mojang diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0eb3a55cbf2ed2c3f5e809ee60aba3767f7aa01b..38896d1beb8adce59d62c6aeefb86ef8fb69ce40 100644 +index 151259cc254d4e796e6af810e37eaa30b832daa3..ce626187e7ffda51a54225fa6e43b817c6c19db8 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1463,7 +1463,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop targetPredicate) { double d = -1.0D; -@@ -99,6 +104,20 @@ public interface EntityGetter { +@@ -111,6 +116,20 @@ public interface EntityGetter { return this.getNearestPlayer(x, y, z, maxDistance, predicate); } @@ -137,10 +137,10 @@ index b6a3c75b84d9f768afee33aa0f226207b307c1c0..a583599e3b49d5ded871252646904a80 for(Player player : this.players()) { if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player)) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index aa8ec0a92c8bca78088a2b30f571587823dd79bb..19688fa3049603f63a306e5c48c45c80b0030f69 100644 +index 0c716967f19783e8e02c777835b63ed8126a80d9..ce81d9c7e5acea4c045321e82d190aa7be87848b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2205,6 +2205,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2247,6 +2247,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().language; } diff --git a/patches/server/0030-Further-improve-server-tick-loop.patch b/patches/server/0031-Further-improve-server-tick-loop.patch similarity index 92% rename from patches/server/0030-Further-improve-server-tick-loop.patch rename to patches/server/0031-Further-improve-server-tick-loop.patch index 7d21f2f470..eb08edc741 100644 --- a/patches/server/0030-Further-improve-server-tick-loop.patch +++ b/patches/server/0031-Further-improve-server-tick-loop.patch @@ -12,7 +12,7 @@ Previous implementation did not calculate TPS correctly. Switch to a realistic rolling average and factor in std deviation as an extra reporting variable diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 38896d1beb8adce59d62c6aeefb86ef8fb69ce40..c8f952998cfa35e043796a88acf555a34ba979c3 100644 +index ce626187e7ffda51a54225fa6e43b817c6c19db8..086be61bfc8a43076b502bbf00e9f2d2785495d3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -277,7 +277,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 5000L && this.nextTickTime - this.lastOverloadWarning >= 30000L) { // CraftBukkit long j = i / 50L; -@@ -980,12 +1032,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 706af1c9ec5c115e727753bf75d1fda01accaeca..06e8a82d2001e2a8dd381f3be20ee7442e1d1178 100644 +index f496c3d95d1cc47cada8f86a99b055f44eb6cd5e..a9584072854fe3f8e946a271504fda70ebab9d2c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -663,7 +663,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -715,7 +715,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public void checkBelowWorld() { diff --git a/patches/server/0035-Check-online-mode-before-converting-and-renaming-pla.patch b/patches/server/0036-Check-online-mode-before-converting-and-renaming-pla.patch similarity index 100% rename from patches/server/0035-Check-online-mode-before-converting-and-renaming-pla.patch rename to patches/server/0036-Check-online-mode-before-converting-and-renaming-pla.patch diff --git a/patches/server/0036-Always-tick-falling-blocks.patch b/patches/server/0037-Always-tick-falling-blocks.patch similarity index 90% rename from patches/server/0036-Always-tick-falling-blocks.patch rename to patches/server/0037-Always-tick-falling-blocks.patch index 694e377a2c..2e80c8ca6a 100644 --- a/patches/server/0036-Always-tick-falling-blocks.patch +++ b/patches/server/0037-Always-tick-falling-blocks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Always tick falling blocks diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index ebd48f9977553174b14bdc7429c07d8352f5a297..d9149580408094784794bc0575a00bebe2e7b4d4 100644 +index 6606a118e7bff01aa51440aea7540ec9feec6cc5..1d9ce6dae17ff572d4528971c69c63d0f85b313c 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -89,6 +89,7 @@ public class ActivationRange diff --git a/patches/server/0037-Configurable-end-credits.patch b/patches/server/0038-Configurable-end-credits.patch similarity index 86% rename from patches/server/0037-Configurable-end-credits.patch rename to patches/server/0038-Configurable-end-credits.patch index 84af64e3f6..4b685e3509 100644 --- a/patches/server/0037-Configurable-end-credits.patch +++ b/patches/server/0038-Configurable-end-credits.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable end credits diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b944cda955c5660d3a9b84e9c92c2b19337a027a..e978a91636192cd00ef8bab9b8411fda39aebbb7 100644 +index 32d79663a30dbbf54b0edf0460193182008f003b..d0cab48a8743a97c8be6bb84dd1c1a490cf5221c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1025,6 +1025,7 @@ public class ServerPlayer extends Player { +@@ -1069,6 +1069,7 @@ public class ServerPlayer extends Player { this.unRide(); this.serverLevel().removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); if (!this.wonGame) { diff --git a/patches/server/0038-Fix-lag-from-explosions-processing-dead-entities.patch b/patches/server/0039-Fix-lag-from-explosions-processing-dead-entities.patch similarity index 100% rename from patches/server/0038-Fix-lag-from-explosions-processing-dead-entities.patch rename to patches/server/0039-Fix-lag-from-explosions-processing-dead-entities.patch diff --git a/patches/server/0039-Optimize-explosions.patch b/patches/server/0040-Optimize-explosions.patch similarity index 95% rename from patches/server/0039-Optimize-explosions.patch rename to patches/server/0040-Optimize-explosions.patch index 3c7e3649b7..0bb6b1001b 100644 --- a/patches/server/0039-Optimize-explosions.patch +++ b/patches/server/0040-Optimize-explosions.patch @@ -10,10 +10,10 @@ This patch adds a per-tick cache that is used for storing and retrieving an entity's exposure during an explosion. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c8f952998cfa35e043796a88acf555a34ba979c3..4eb9d3a3de91a7af2930f7e014256eeeafcb4ac7 100644 +index 086be61bfc8a43076b502bbf00e9f2d2785495d3..0e5661716d72ecf57d76443d8c7627e90966ee4d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1396,6 +1396,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop Co-authored-by: SoSeDiK diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e85268e4c20371d4264effb70ae9fa8e435f8766..98266c0349d21fc1ebf0d34a3d898825d477d6e5 100644 +index 3b11d395bd2c8ca8ec9a2ddb62b57c167a45ba2d..a3fb406ca9fda0ca6909e2e4f4f486c7de0e5ae3 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1918,7 +1918,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1925,7 +1925,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } OutgoingChatMessage outgoing = OutgoingChatMessage.create(original); @@ -29,7 +29,7 @@ index e85268e4c20371d4264effb70ae9fa8e435f8766..98266c0349d21fc1ebf0d34a3d898825 this.handleCommand(s); } else if (this.player.getChatVisibility() == ChatVisiblity.SYSTEM) { // Do nothing, this is coming from a plugin -@@ -2002,7 +2002,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2009,7 +2009,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } @@ -40,7 +40,7 @@ index e85268e4c20371d4264effb70ae9fa8e435f8766..98266c0349d21fc1ebf0d34a3d898825 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c2289c8ef49c73d662a67eab7a2b8c0cf9bb31a9..3e3c3db4a9a4474af79d2470da2ab133eef7cf4c 100644 +index 9d70513d05515f6ff3f03b5580bd48f127d73ca1..81d2d940fef25a9fb5caccbf4e2c0c9d4ece71c9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -889,7 +889,7 @@ public final class CraftServer implements Server { @@ -53,10 +53,10 @@ index c2289c8ef49c73d662a67eab7a2b8c0cf9bb31a9..3e3c3db4a9a4474af79d2470da2ab133 if (this.commandMap.dispatch(sender, commandLine)) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5ded753f030cad268f8aaeaf242985c67da2ca8d..965f40d5acb8cfe401e22c4c15efa84b36ac3ace 100644 +index b8fc211d72e860c85ca39b03574db3a7b18e369f..530fba6fa83c3e87ec2501e6aa6997c108dae6d1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -452,7 +452,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -494,7 +494,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; diff --git a/patches/server/0052-All-chunks-are-slime-spawn-chunks-toggle.patch b/patches/server/0053-All-chunks-are-slime-spawn-chunks-toggle.patch similarity index 93% rename from patches/server/0052-All-chunks-are-slime-spawn-chunks-toggle.patch rename to patches/server/0053-All-chunks-are-slime-spawn-chunks-toggle.patch index c9b81f3b84..673744942c 100644 --- a/patches/server/0052-All-chunks-are-slime-spawn-chunks-toggle.patch +++ b/patches/server/0053-All-chunks-are-slime-spawn-chunks-toggle.patch @@ -18,10 +18,10 @@ index 2e343d108714bd136ab8e7b20acbf241166177de..382cdfd7d7dceeeffed1cdc34b9e475a if (random.nextInt(10) == 0 && flag && pos.getY() < 40) { return checkMobSpawnRules(type, world, spawnReason, pos, random); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java -index bf4b2f89d3a7133155c6272379c742318b2c1514..f07a6b1d782426581c84ffa19447c1375c4cbc07 100644 +index 33677ec811ceab939c419bf7d31b99585e9a1ef1..8ae78690748b2cb5d5186d8859871c1630e10130 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java -@@ -213,7 +213,7 @@ public class CraftChunk implements Chunk { +@@ -169,7 +169,7 @@ public class CraftChunk implements Chunk { @Override public boolean isSlimeChunk() { // 987234911L is deterimined in EntitySlime when seeing if a slime can spawn in a chunk diff --git a/patches/server/0053-Expose-server-CommandMap.patch b/patches/server/0054-Expose-server-CommandMap.patch similarity index 87% rename from patches/server/0053-Expose-server-CommandMap.patch rename to patches/server/0054-Expose-server-CommandMap.patch index 09165b75bc..ffe646ca1b 100644 --- a/patches/server/0053-Expose-server-CommandMap.patch +++ b/patches/server/0054-Expose-server-CommandMap.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Expose server CommandMap diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 3e3c3db4a9a4474af79d2470da2ab133eef7cf4c..5f87d8882cec191c6fe1cc194531ff4a24c85987 100644 +index 81d2d940fef25a9fb5caccbf4e2c0c9d4ece71c9..bfcb1e2959e33e4e0cce78e0756cd13253662790 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -2018,6 +2018,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0054-Be-a-bit-more-informative-in-maxHealth-exception.patch b/patches/server/0055-Be-a-bit-more-informative-in-maxHealth-exception.patch similarity index 100% rename from patches/server/0054-Be-a-bit-more-informative-in-maxHealth-exception.patch rename to patches/server/0055-Be-a-bit-more-informative-in-maxHealth-exception.patch diff --git a/patches/server/0055-Player-Tab-List-and-Title-APIs.patch b/patches/server/0056-Player-Tab-List-and-Title-APIs.patch similarity index 98% rename from patches/server/0055-Player-Tab-List-and-Title-APIs.patch rename to patches/server/0056-Player-Tab-List-and-Title-APIs.patch index 3a003cd429..6db44193b4 100644 --- a/patches/server/0055-Player-Tab-List-and-Title-APIs.patch +++ b/patches/server/0056-Player-Tab-List-and-Title-APIs.patch @@ -63,7 +63,7 @@ index bd808eb312ade7122973a47f4b96505829511da5..bf0f9cab7c66c089f35b851e799ba4a4 // Paper end buf.writeComponent(this.text); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 965f40d5acb8cfe401e22c4c15efa84b36ac3ace..93b38758645a52f2da7d8e2baba576dc0284a132 100644 +index 530fba6fa83c3e87ec2501e6aa6997c108dae6d1..9c66e4b6f36f634a7fe25b630b9f2e65a7b50153 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1,5 +1,6 @@ @@ -73,7 +73,7 @@ index 965f40d5acb8cfe401e22c4c15efa84b36ac3ace..93b38758645a52f2da7d8e2baba576dc import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.google.common.io.BaseEncoding; -@@ -294,6 +295,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -336,6 +337,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } } diff --git a/patches/server/0056-Add-configurable-portal-search-radius.patch b/patches/server/0057-Add-configurable-portal-search-radius.patch similarity index 94% rename from patches/server/0056-Add-configurable-portal-search-radius.patch rename to patches/server/0057-Add-configurable-portal-search-radius.patch index 0c14267615..d93ecc093d 100644 --- a/patches/server/0056-Add-configurable-portal-search-radius.patch +++ b/patches/server/0057-Add-configurable-portal-search-radius.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add configurable portal search radius diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 06e8a82d2001e2a8dd381f3be20ee7442e1d1178..3f627611fe372ab87701fb01e16486b434f77585 100644 +index a9584072854fe3f8e946a271504fda70ebab9d2c..1b301b9b577b632470a1e6d23f34288875c5ffb8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3148,7 +3148,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3200,7 +3200,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { double d0 = DimensionType.getTeleportationScale(this.level().dimensionType(), destination.dimensionType()); BlockPos blockposition = worldborder.clampToBounds(this.getX() * d0, this.getY(), this.getZ() * d0); // CraftBukkit start diff --git a/patches/server/0057-Add-velocity-warnings.patch b/patches/server/0058-Add-velocity-warnings.patch similarity index 91% rename from patches/server/0057-Add-velocity-warnings.patch rename to patches/server/0058-Add-velocity-warnings.patch index b2e63affe1..1eb5e79e8d 100644 --- a/patches/server/0057-Add-velocity-warnings.patch +++ b/patches/server/0058-Add-velocity-warnings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add velocity warnings diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 5f87d8882cec191c6fe1cc194531ff4a24c85987..4390e4ded8a88a0dcd57d161f74a276852de4800 100644 +index bfcb1e2959e33e4e0cce78e0756cd13253662790..7ae7ad27e8e6731a81a4bcb3e4dd0ed20d0373de 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -302,6 +302,7 @@ public final class CraftServer implements Server { @@ -62,10 +62,10 @@ index 9b4e28353892240debc2d2d48876c5640d479ae9..5767eefb09d9e0e3a3d5a006242220b8 public double getHeight() { return this.getHandle().getBbHeight(); diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index d5863b0b06384b25eaa33572fa02649795463ed8..2693cc933d746e40d8a47d96c6cb6799f0a2472f 100644 +index 11d7ede26b46d0bf9cced65e8c3bcc41c8b66dbf..3ad14bf0697e682a2e777baa8faeb323d127fb13 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java -@@ -80,7 +80,19 @@ public class WatchdogThread extends Thread +@@ -80,7 +80,19 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa log.log( Level.SEVERE, "During the run of the server, a physics stackoverflow was supressed" ); log.log( Level.SEVERE, "near " + net.minecraft.world.level.Level.lastPhysicsProblem ); } @@ -85,4 +85,4 @@ index d5863b0b06384b25eaa33572fa02649795463ed8..2693cc933d746e40d8a47d96c6cb6799 + // Paper end log.log( Level.SEVERE, "------------------------------" ); log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):" ); // Paper - WatchdogThread.dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE ), log ); + io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.dumpAllChunkLoadInfo(isLongTimeout); // Paper // Paper - rewrite chunk system diff --git a/patches/server/0058-Configurable-inter-world-teleportation-safety.patch b/patches/server/0059-Configurable-inter-world-teleportation-safety.patch similarity index 91% rename from patches/server/0058-Configurable-inter-world-teleportation-safety.patch rename to patches/server/0059-Configurable-inter-world-teleportation-safety.patch index a141e85e9f..d6403829a6 100644 --- a/patches/server/0058-Configurable-inter-world-teleportation-safety.patch +++ b/patches/server/0059-Configurable-inter-world-teleportation-safety.patch @@ -16,10 +16,10 @@ The wanted destination was on top of the emerald block however the player ended This only is the case if the player is teleporting between worlds. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 93b38758645a52f2da7d8e2baba576dc0284a132..c30d2987f4afce8737c5c67b193d9ee3b6e230be 100644 +index 9c66e4b6f36f634a7fe25b630b9f2e65a7b50153..26ca5b2c4216f95c1f7a74245c271bdddd111c4d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1120,7 +1120,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1162,7 +1162,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { entity.connection.teleport(to); } else { // The respawn reason should never be used if the passed location is non null. diff --git a/patches/server/0059-Add-exception-reporting-event.patch b/patches/server/0060-Add-exception-reporting-event.patch similarity index 95% rename from patches/server/0059-Add-exception-reporting-event.patch rename to patches/server/0060-Add-exception-reporting-event.patch index 68114b68e1..0e8fa03642 100644 --- a/patches/server/0059-Add-exception-reporting-event.patch +++ b/patches/server/0060-Add-exception-reporting-event.patch @@ -88,7 +88,7 @@ index c6fb4c33d7ea52b88d8fc0d90748cbab7387c565..fed09b886f4fa0006d160e5f2abb00df } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 42e81640354c2679570823347b28ee1155e7a00e..a7fb12648c2e655e191d8c805753ae0c05421d17 100644 +index 78041052d7ab2e6b60405ce7e02468458650db22..8149286827d9b609be47a4ded0413ca11f7858de 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1,5 +1,10 @@ @@ -102,7 +102,7 @@ index 42e81640354c2679570823347b28ee1155e7a00e..a7fb12648c2e655e191d8c805753ae0c import com.google.common.collect.Lists; import com.mojang.serialization.Codec; import java.io.IOException; -@@ -725,6 +730,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -730,6 +735,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { // Paper start - Prevent tile entity and entity crashes final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level().getWorld().getName(), entity.getX(), entity.getY(), entity.getZ()); MinecraftServer.LOGGER.error(msg, throwable); @@ -131,7 +131,7 @@ index 5d65baba605dd83e5f74d526aeda36d8ede8c014..92e76dd39dc3575e9466031dd799080a } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 28ae0792c6b83580369937673f475f79b1c19576..0b246935d0ad3f8a78e86f0e60f53a05efda8355 100644 +index 515aedcf9969b818dfdc02a16a7f7178b5bb5593..56900156d79781f15357a3d25906d32b615366ce 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -1,6 +1,7 @@ @@ -163,7 +163,7 @@ index 28ae0792c6b83580369937673f475f79b1c19576..0b246935d0ad3f8a78e86f0e60f53a05 // CraftBukkit end } } -@@ -1060,6 +1067,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1149,6 +1156,7 @@ public class LevelChunk extends ChunkAccess { // Paper start - Prevent tile entity and entity crashes final String msg = String.format("BlockEntity threw exception at %s:%s,%s,%s", LevelChunk.this.getLevel().getWorld().getName(), this.getPos().getX(), this.getPos().getY(), this.getPos().getZ()); net.minecraft.server.MinecraftServer.LOGGER.error(msg, throwable); @@ -172,10 +172,10 @@ index 28ae0792c6b83580369937673f475f79b1c19576..0b246935d0ad3f8a78e86f0e60f53a05 // Paper end // Spigot start diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java -index d9daf07132c46548964a75588b69d7a74680e917..67a2f3c02aa4983b3ec2df073821190ddb36543c 100644 +index e68205fe7169c7c5b7c6fdada2ee97d86107ca97..aa8972fd1a1fade05d60ab69efb8ff24f344508a 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java -@@ -274,6 +274,7 @@ public class RegionFile implements AutoCloseable { +@@ -275,6 +275,7 @@ public class RegionFile implements AutoCloseable { return true; } } catch (IOException ioexception) { @@ -183,7 +183,7 @@ index d9daf07132c46548964a75588b69d7a74680e917..67a2f3c02aa4983b3ec2df073821190d return false; } } -@@ -355,6 +356,7 @@ public class RegionFile implements AutoCloseable { +@@ -356,6 +357,7 @@ public class RegionFile implements AutoCloseable { ((java.nio.Buffer) buf).position(5); // CraftBukkit - decompile error filechannel.write(buf); } catch (Throwable throwable) { diff --git a/patches/server/0060-Don-t-nest-if-we-don-t-need-to-when-cerealising-text.patch b/patches/server/0061-Don-t-nest-if-we-don-t-need-to-when-cerealising-text.patch similarity index 100% rename from patches/server/0060-Don-t-nest-if-we-don-t-need-to-when-cerealising-text.patch rename to patches/server/0061-Don-t-nest-if-we-don-t-need-to-when-cerealising-text.patch diff --git a/patches/server/0061-Disable-Scoreboards-for-non-players-by-default.patch b/patches/server/0062-Disable-Scoreboards-for-non-players-by-default.patch similarity index 92% rename from patches/server/0061-Disable-Scoreboards-for-non-players-by-default.patch rename to patches/server/0062-Disable-Scoreboards-for-non-players-by-default.patch index 5834906cde..1df1030bc9 100644 --- a/patches/server/0061-Disable-Scoreboards-for-non-players-by-default.patch +++ b/patches/server/0062-Disable-Scoreboards-for-non-players-by-default.patch @@ -11,10 +11,10 @@ So avoid looking up scoreboards and short circuit to the "not on a team" logic which is most likely to be true. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3f627611fe372ab87701fb01e16486b434f77585..9c17aef67d011f485129aee781aae3bd18eb6c1c 100644 +index 1b301b9b577b632470a1e6d23f34288875c5ffb8..a8608e7b3dae15a54185d720c01a49d3a7e59994 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2779,6 +2779,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2831,6 +2831,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @Nullable public Team getTeam() { diff --git a/patches/server/0062-Add-methods-for-working-with-arrows-stuck-in-living-.patch b/patches/server/0063-Add-methods-for-working-with-arrows-stuck-in-living-.patch similarity index 100% rename from patches/server/0062-Add-methods-for-working-with-arrows-stuck-in-living-.patch rename to patches/server/0063-Add-methods-for-working-with-arrows-stuck-in-living-.patch diff --git a/patches/server/0063-Chunk-Save-Reattempt.patch b/patches/server/0064-Chunk-Save-Reattempt.patch similarity index 77% rename from patches/server/0063-Chunk-Save-Reattempt.patch rename to patches/server/0064-Chunk-Save-Reattempt.patch index cae796dce7..d82deaae7c 100644 --- a/patches/server/0063-Chunk-Save-Reattempt.patch +++ b/patches/server/0064-Chunk-Save-Reattempt.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Chunk Save Reattempt We commonly have "Stream Closed" errors on chunk saving, so this code should re-try to save the chunk in the event of failure and hopefully prevent rollbacks. diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java -index 67a2f3c02aa4983b3ec2df073821190ddb36543c..9e65b56fd2d5af6be305efa08e7c569e6598343a 100644 +index aa8972fd1a1fade05d60ab69efb8ff24f344508a..ddcc212ba83d9365adb842b3d3ced64e3d7dd155 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java -@@ -274,7 +274,7 @@ public class RegionFile implements AutoCloseable { +@@ -275,7 +275,7 @@ public class RegionFile implements AutoCloseable { return true; } } catch (IOException ioexception) { @@ -19,18 +19,18 @@ index 67a2f3c02aa4983b3ec2df073821190ddb36543c..9e65b56fd2d5af6be305efa08e7c569e } } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -index 1988063a0cac0350ae3b3388b8f2a0c95b8b259f..ab3145064f0ea3d71e85f3f02cf73d13f548a425 100644 +index 2b6ba2e30c9a4682d6deb2ab750d6923ad8469e4..2d00333f25828ef5912c925d1213a56c564d85c9 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -132,6 +132,7 @@ public class RegionFileStorage implements AutoCloseable { - - protected void write(ChunkPos pos, @Nullable CompoundTag nbt) throws IOException { - RegionFile regionfile = this.getRegionFile(pos, false); // CraftBukkit +@@ -209,6 +209,7 @@ public class RegionFileStorage implements AutoCloseable { + } + // Paper end - rewrite chunk system + try { // Paper + int attempts = 0; Exception laste = null; while (attempts++ < 5) { try { // Paper if (nbt == null) { regionfile.clear(pos); -@@ -156,7 +157,18 @@ public class RegionFileStorage implements AutoCloseable { +@@ -233,7 +234,18 @@ public class RegionFileStorage implements AutoCloseable { dataoutputstream.close(); } } @@ -46,6 +46,6 @@ index 1988063a0cac0350ae3b3388b8f2a0c95b8b259f..ab3145064f0ea3d71e85f3f02cf73d13 + net.minecraft.server.MinecraftServer.LOGGER.error("Failed to save chunk " + pos, laste); + } + // Paper end - } - - public void close() throws IOException { + } finally { // Paper start + regionfile.fileLock.unlock(); + } // Paper end diff --git a/patches/server/0064-Complete-resource-pack-API.patch b/patches/server/0065-Complete-resource-pack-API.patch similarity index 96% rename from patches/server/0064-Complete-resource-pack-API.patch rename to patches/server/0065-Complete-resource-pack-API.patch index 696eb450f8..31ea6c68d9 100644 --- a/patches/server/0064-Complete-resource-pack-API.patch +++ b/patches/server/0065-Complete-resource-pack-API.patch @@ -22,7 +22,7 @@ index b9062fe651de34d5b3f9d5f146ae0b4fe29cbfee..e8b12a8ae009023afa2818ecbf398a14 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c30d2987f4afce8737c5c67b193d9ee3b6e230be..de5d17be3d7dcd9ae1f10918c3d6a3caffe7ef23 100644 +index 26ca5b2c4216f95c1f7a74245c271bdddd111c4d..4a784d3c8454549ddeaba18d36a7182059401c91 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -191,6 +191,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -36,7 +36,7 @@ index c30d2987f4afce8737c5c67b193d9ee3b6e230be..de5d17be3d7dcd9ae1f10918c3d6a3ca public CraftPlayer(CraftServer server, ServerPlayer entity) { super(server, entity); -@@ -2326,6 +2330,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2368,6 +2372,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean getAffectsSpawning() { return this.getHandle().affectsSpawning; } diff --git a/patches/server/0065-Default-loading-permissions.yml-before-plugins.patch b/patches/server/0066-Default-loading-permissions.yml-before-plugins.patch similarity index 95% rename from patches/server/0065-Default-loading-permissions.yml-before-plugins.patch rename to patches/server/0066-Default-loading-permissions.yml-before-plugins.patch index 66ad35180b..9cd9a40b36 100644 --- a/patches/server/0065-Default-loading-permissions.yml-before-plugins.patch +++ b/patches/server/0066-Default-loading-permissions.yml-before-plugins.patch @@ -16,7 +16,7 @@ modify that. Under the previous logic, plugins were unable (cleanly) override pe A config option has been added for those who depend on the previous behavior, but I don't expect that. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 4390e4ded8a88a0dcd57d161f74a276852de4800..068cde0c7061b4969e095a4a93cd8a1662079211 100644 +index 7ae7ad27e8e6731a81a4bcb3e4dd0ed20d0373de..311226bce4d6103ae9e8c6e4b49ccb90afcfb64d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -465,6 +465,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0066-Allow-Reloading-of-Custom-Permissions.patch b/patches/server/0067-Allow-Reloading-of-Custom-Permissions.patch similarity index 94% rename from patches/server/0066-Allow-Reloading-of-Custom-Permissions.patch rename to patches/server/0067-Allow-Reloading-of-Custom-Permissions.patch index d282533aa3..f3a5dc7766 100644 --- a/patches/server/0066-Allow-Reloading-of-Custom-Permissions.patch +++ b/patches/server/0067-Allow-Reloading-of-Custom-Permissions.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow Reloading of Custom Permissions https://github.com/PaperMC/Paper/issues/49 diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 068cde0c7061b4969e095a4a93cd8a1662079211..d0dea86da026827163e36b9fc970bd9ab630b0b8 100644 +index 311226bce4d6103ae9e8c6e4b49ccb90afcfb64d..f101155cf3ae72c0c810714cc4ad319d1116b4e0 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -2622,5 +2622,23 @@ public final class CraftServer implements Server { diff --git a/patches/server/0067-Remove-Metadata-on-reload.patch b/patches/server/0068-Remove-Metadata-on-reload.patch similarity index 93% rename from patches/server/0067-Remove-Metadata-on-reload.patch rename to patches/server/0068-Remove-Metadata-on-reload.patch index 4bae83c9fb..ddc5f1b1d3 100644 --- a/patches/server/0067-Remove-Metadata-on-reload.patch +++ b/patches/server/0068-Remove-Metadata-on-reload.patch @@ -7,7 +7,7 @@ Metadata is not meant to persist reload as things break badly with non primitive This will remove metadata on reload so it does not crash everything if a plugin uses it. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d0dea86da026827163e36b9fc970bd9ab630b0b8..6797239634ba90768e55fcfb37cb2c14141b7d28 100644 +index f101155cf3ae72c0c810714cc4ad319d1116b4e0..0476ae7a485c2ac74b39965f0727fbfd372c3be2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -956,8 +956,16 @@ public final class CraftServer implements Server { diff --git a/patches/server/0068-Handle-Item-Meta-Inconsistencies.patch b/patches/server/0069-Handle-Item-Meta-Inconsistencies.patch similarity index 100% rename from patches/server/0068-Handle-Item-Meta-Inconsistencies.patch rename to patches/server/0069-Handle-Item-Meta-Inconsistencies.patch diff --git a/patches/server/0069-Configurable-Non-Player-Arrow-Despawn-Rate.patch b/patches/server/0070-Configurable-Non-Player-Arrow-Despawn-Rate.patch similarity index 100% rename from patches/server/0069-Configurable-Non-Player-Arrow-Despawn-Rate.patch rename to patches/server/0070-Configurable-Non-Player-Arrow-Despawn-Rate.patch diff --git a/patches/server/0070-Add-World-Util-Methods.patch b/patches/server/0071-Add-World-Util-Methods.patch similarity index 92% rename from patches/server/0070-Add-World-Util-Methods.patch rename to patches/server/0071-Add-World-Util-Methods.patch index 8d92d3ac71..624da03d47 100644 --- a/patches/server/0070-Add-World-Util-Methods.patch +++ b/patches/server/0071-Add-World-Util-Methods.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add World Util Methods Methods that can be used for other patches to help improve logic. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 511f27358cad1fa067497914c61855ee6ea3846a..c5974d23eb2c0f0a71a5c438f387762516f7a1d9 100644 +index 35c401b41750748738c8f8aa2b8988377f4e679f..b9d93d802e981139b79ecba91968f56f842acc48 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -221,7 +221,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -19,7 +19,7 @@ index 511f27358cad1fa067497914c61855ee6ea3846a..c5974d23eb2c0f0a71a5c438f3877625 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index a7fb12648c2e655e191d8c805753ae0c05421d17..5e4b102e747a053280871879c3c18fc3d3d2d18a 100644 +index 8149286827d9b609be47a4ded0413ca11f7858de..809f7db469583ea90fbb165cf180dc87055c6105 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -342,6 +342,22 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0071-Custom-replacement-for-eaten-items.patch b/patches/server/0072-Custom-replacement-for-eaten-items.patch similarity index 100% rename from patches/server/0071-Custom-replacement-for-eaten-items.patch rename to patches/server/0072-Custom-replacement-for-eaten-items.patch diff --git a/patches/server/0072-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch b/patches/server/0073-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch similarity index 98% rename from patches/server/0072-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch rename to patches/server/0073-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch index 7a6e79726e..6d81cc3915 100644 --- a/patches/server/0072-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch +++ b/patches/server/0073-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch @@ -63,7 +63,7 @@ index d6d8bbc98fc71997cb52521d59ebb59d727d3c22..3b31a1927aaed7fffc1b4f4bcefc1212 default BlockHitResult clip(ClipContext raytrace1, BlockPos blockposition) { BlockState iblockdata = this.getBlockState(blockposition); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 5e4b102e747a053280871879c3c18fc3d3d2d18a..a64b4eb9bc6437cc143ed6816060b223ce6542e6 100644 +index 809f7db469583ea90fbb165cf180dc87055c6105..37d5abf5a18b90695d1cea9e365c764e93b918bf 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -283,6 +283,90 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0073-handle-NaN-health-absorb-values-and-repair-bad-data.patch b/patches/server/0074-handle-NaN-health-absorb-values-and-repair-bad-data.patch similarity index 94% rename from patches/server/0073-handle-NaN-health-absorb-values-and-repair-bad-data.patch rename to patches/server/0074-handle-NaN-health-absorb-values-and-repair-bad-data.patch index 33db07fbca..dd675859bd 100644 --- a/patches/server/0073-handle-NaN-health-absorb-values-and-repair-bad-data.patch +++ b/patches/server/0074-handle-NaN-health-absorb-values-and-repair-bad-data.patch @@ -44,10 +44,10 @@ index c5d4f36dda7c977b3a7563f4d2d74ebcf7dc61ef..fa03c3a9debe419dd4e60764de4d9544 protected void internalSetAbsorptionAmount(float absorptionAmount) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index de5d17be3d7dcd9ae1f10918c3d6a3caffe7ef23..dc436397256cecfb51ed82b0cc654307a8d2e0f6 100644 +index 4a784d3c8454549ddeaba18d36a7182059401c91..bedeae40c7a88b7c13babb9ef8c94983a2ac4fef 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2123,6 +2123,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2165,6 +2165,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void setRealHealth(double health) { diff --git a/patches/server/0074-Use-a-Shared-Random-for-Entities.patch b/patches/server/0075-Use-a-Shared-Random-for-Entities.patch similarity index 96% rename from patches/server/0074-Use-a-Shared-Random-for-Entities.patch rename to patches/server/0075-Use-a-Shared-Random-for-Entities.patch index d53f5a439c..2658f7646d 100644 --- a/patches/server/0074-Use-a-Shared-Random-for-Entities.patch +++ b/patches/server/0075-Use-a-Shared-Random-for-Entities.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use a Shared Random for Entities Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9c17aef67d011f485129aee781aae3bd18eb6c1c..6dc250da442ae15a69c40e10af7ea71d9aaf0055 100644 +index a8608e7b3dae15a54185d720c01a49d3a7e59994..fc39c3742e852bc9f4131b1ade62c32b318bdb02 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -162,6 +162,79 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -89,7 +89,7 @@ index 9c17aef67d011f485129aee781aae3bd18eb6c1c..6dc250da442ae15a69c40e10af7ea71d private CraftEntity bukkitEntity; public CraftEntity getBukkitEntity() { -@@ -354,7 +427,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -406,7 +479,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; diff --git a/patches/server/0075-Configurable-spawn-chances-for-skeleton-horses.patch b/patches/server/0076-Configurable-spawn-chances-for-skeleton-horses.patch similarity index 89% rename from patches/server/0075-Configurable-spawn-chances-for-skeleton-horses.patch rename to patches/server/0076-Configurable-spawn-chances-for-skeleton-horses.patch index 5210f274c0..af6fe09b5c 100644 --- a/patches/server/0075-Configurable-spawn-chances-for-skeleton-horses.patch +++ b/patches/server/0076-Configurable-spawn-chances-for-skeleton-horses.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable spawn chances for skeleton horses diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c5974d23eb2c0f0a71a5c438f387762516f7a1d9..3310ad37178c6397e00291186a518bffce876570 100644 +index b9d93d802e981139b79ecba91968f56f842acc48..d419ff842d1df822e14994e4f1d5b91352579cf1 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -598,7 +598,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -830,7 +830,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.isRainingAt(blockposition)) { DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition); diff --git a/patches/server/0076-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch b/patches/server/0077-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch similarity index 97% rename from patches/server/0076-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch rename to patches/server/0077-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch index 0a545c8f02..a4c9a41195 100644 --- a/patches/server/0076-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch +++ b/patches/server/0077-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch @@ -29,7 +29,7 @@ index 1b29c6872ebe54351f28c1f1f38b22561ba785ee..40950db0c242c65dfd4de247c8624935 this.x = x; this.y = y; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index a64b4eb9bc6437cc143ed6816060b223ce6542e6..f96154f86a260ecd8dbd485a1c72703bc5949de2 100644 +index 37d5abf5a18b90695d1cea9e365c764e93b918bf..5502d037279ba876f5e4c6728cc678f128bce9d4 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -368,7 +368,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -88,7 +88,7 @@ index 60e760b42dd6471a229dfd45490dcf8c51979d35..4a3ac7dedf5cb1e76f16ec4f18e82afc @Override public FluidState getFluidState(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 0b246935d0ad3f8a78e86f0e60f53a05efda8355..d84b4051ee5177e9916199ec11445fc6c9a18936 100644 +index 56900156d79781f15357a3d25906d32b615366ce..0eedaf7df86b7bdd22623231f9a49da8e798f204 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -295,12 +295,29 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0077-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch b/patches/server/0078-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch similarity index 91% rename from patches/server/0077-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch rename to patches/server/0078-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch index 1ae76f59e7..9b81d2ddcd 100644 --- a/patches/server/0077-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch +++ b/patches/server/0078-Only-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Only process BlockPhysicsEvent if a plugin has a listener Saves on some object allocation and processing when no plugin listens to this diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 4eb9d3a3de91a7af2930f7e014256eeeafcb4ac7..19cb043e5c501b664d101b11717b759be9dd4cfd 100644 +index 0e5661716d72ecf57d76443d8c7627e90966ee4d..281884fedf6607581a24fef4b3326dfb81012124 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1357,6 +1357,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3310ad37178c6397e00291186a518bffce876570..db86df427b604e4a0959181eb2ee161bdda6bfad 100644 +index d419ff842d1df822e14994e4f1d5b91352579cf1..9ee06d9b6eceb5df90275177ea855272fc61b016 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -220,6 +220,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -30,10 +30,10 @@ index 3310ad37178c6397e00291186a518bffce876570..db86df427b604e4a0959181eb2ee161b @Override public LevelChunk getChunkIfLoaded(int x, int z) { // Paper - this was added in world too but keeping here for NMS ABI return this.chunkSource.getChunk(x, z, false); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index f96154f86a260ecd8dbd485a1c72703bc5949de2..c771ec0e5ebd4a45130b3481fa9d3ba00b95f2ae 100644 +index 5502d037279ba876f5e4c6728cc678f128bce9d4..ba7760b0b478c6f24dcbaa64919a4766e107a720 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -575,7 +575,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -580,7 +580,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { // CraftBukkit start iblockdata1.updateIndirectNeighbourShapes(this, blockposition, k, j - 1); // Don't call an event for the old block to limit event spam CraftWorld world = ((ServerLevel) this).getWorld(); diff --git a/patches/server/0078-Entity-AddTo-RemoveFrom-World-Events.patch b/patches/server/0079-Entity-AddTo-RemoveFrom-World-Events.patch similarity index 83% rename from patches/server/0078-Entity-AddTo-RemoveFrom-World-Events.patch rename to patches/server/0079-Entity-AddTo-RemoveFrom-World-Events.patch index 96eebd1121..cc876dd9b6 100644 --- a/patches/server/0078-Entity-AddTo-RemoveFrom-World-Events.patch +++ b/patches/server/0079-Entity-AddTo-RemoveFrom-World-Events.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity AddTo/RemoveFrom World Events diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index db86df427b604e4a0959181eb2ee161bdda6bfad..71e448a44b1d85bba4481fd02612d687aa9df4a1 100644 +index 9ee06d9b6eceb5df90275177ea855272fc61b016..949404f3ac0e853cfc45e28453136dd166ac9563 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2117,6 +2117,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2366,6 +2366,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.setOrigin(entity.getOriginVector().toLocation(getWorld())); } // Paper end @@ -16,7 +16,7 @@ index db86df427b604e4a0959181eb2ee161bdda6bfad..71e448a44b1d85bba4481fd02612d687 } public void onTrackingEnd(Entity entity) { -@@ -2192,6 +2193,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2441,6 +2442,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // CraftBukkit end diff --git a/patches/server/0079-Configurable-Chunk-Inhabited-Time.patch b/patches/server/0080-Configurable-Chunk-Inhabited-Time.patch similarity index 92% rename from patches/server/0079-Configurable-Chunk-Inhabited-Time.patch rename to patches/server/0080-Configurable-Chunk-Inhabited-Time.patch index 15d5627a38..c046cafc1f 100644 --- a/patches/server/0079-Configurable-Chunk-Inhabited-Time.patch +++ b/patches/server/0080-Configurable-Chunk-Inhabited-Time.patch @@ -11,7 +11,7 @@ For people who want all chunks to be treated equally, you can chose a fixed valu This allows to fine-tune vanilla gameplay. diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index d84b4051ee5177e9916199ec11445fc6c9a18936..fdb8c2346cb2e444b75f863a8a8199da84f25193 100644 +index 0eedaf7df86b7bdd22623231f9a49da8e798f204..cf910b466a4b75c0b9219abef5c9bff30793d7bf 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -280,6 +280,13 @@ public class LevelChunk extends ChunkAccess { diff --git a/patches/server/0080-EntityPathfindEvent.patch b/patches/server/0081-EntityPathfindEvent.patch similarity index 100% rename from patches/server/0080-EntityPathfindEvent.patch rename to patches/server/0081-EntityPathfindEvent.patch diff --git a/patches/server/0081-Sanitise-RegionFileCache-and-make-configurable.patch b/patches/server/0082-Sanitise-RegionFileCache-and-make-configurable.patch similarity index 81% rename from patches/server/0081-Sanitise-RegionFileCache-and-make-configurable.patch rename to patches/server/0082-Sanitise-RegionFileCache-and-make-configurable.patch index 5c3c1d34d2..87c1dfbbb9 100644 --- a/patches/server/0081-Sanitise-RegionFileCache-and-make-configurable.patch +++ b/patches/server/0082-Sanitise-RegionFileCache-and-make-configurable.patch @@ -11,13 +11,13 @@ The implementation uses a LinkedHashMap as an LRU cache (modified from HashMap). The maximum size of the RegionFileCache is also made configurable. diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -index ab3145064f0ea3d71e85f3f02cf73d13f548a425..32880df5c96e77c8db8198c91a0a3efe8968199e 100644 +index 2d00333f25828ef5912c925d1213a56c564d85c9..465ad0bae446a20e941e8f2dbf2d85f2627482b9 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -37,7 +37,7 @@ public class RegionFileStorage implements AutoCloseable { - if (regionfile != null) { - return regionfile; - } else { +@@ -92,7 +92,7 @@ public class RegionFileStorage implements AutoCloseable { + return null; + } + // Paper end - cache regionfile does not exist state - if (this.regionCache.size() >= 256) { + if (this.regionCache.size() >= io.papermc.paper.configuration.GlobalConfiguration.get().misc.regionFileCacheSize) { // Paper - configurable ((RegionFile) this.regionCache.removeLast()).close(); diff --git a/patches/server/0082-Do-not-load-chunks-for-Pathfinding.patch b/patches/server/0083-Do-not-load-chunks-for-Pathfinding.patch similarity index 100% rename from patches/server/0082-Do-not-load-chunks-for-Pathfinding.patch rename to patches/server/0083-Do-not-load-chunks-for-Pathfinding.patch diff --git a/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch b/patches/server/0084-Add-PlayerUseUnknownEntityEvent.patch similarity index 95% rename from patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch rename to patches/server/0084-Add-PlayerUseUnknownEntityEvent.patch index 532519ab03..f2da1fdee9 100644 --- a/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch +++ b/patches/server/0084-Add-PlayerUseUnknownEntityEvent.patch @@ -28,10 +28,10 @@ index 644a0fdea6576647539b96528717dbaeab498d93..221e64a66ff12a8de5c75992fc26a54a + // Paper end - PlayerUseUnknownEntityEvent } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 98266c0349d21fc1ebf0d34a3d898825d477d6e5..a4e010b9195d0afeb4724dc64c85964a843eb59a 100644 +index a3fb406ca9fda0ca6909e2e4f4f486c7de0e5ae3..d8a78412d2cfa6aff023ecc8e5cc2121767a9097 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2385,8 +2385,38 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2392,8 +2392,38 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl }); } } diff --git a/patches/server/0084-Configurable-Grass-Spread-Tick-Rate.patch b/patches/server/0085-Configurable-Grass-Spread-Tick-Rate.patch similarity index 100% rename from patches/server/0084-Configurable-Grass-Spread-Tick-Rate.patch rename to patches/server/0085-Configurable-Grass-Spread-Tick-Rate.patch diff --git a/patches/server/0085-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch b/patches/server/0086-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch similarity index 82% rename from patches/server/0085-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch rename to patches/server/0086-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch index ad60a4eac0..46e1468576 100644 --- a/patches/server/0085-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch +++ b/patches/server/0086-Fix-Cancelling-BlockPlaceEvent-triggering-physics.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix Cancelling BlockPlaceEvent triggering physics diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 71e448a44b1d85bba4481fd02612d687aa9df4a1..f0820ab21ff17601c896099d664d18283c759384 100644 +index 949404f3ac0e853cfc45e28453136dd166ac9563..f13e39082638310532a0fd1dab41e809c45287c0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1366,6 +1366,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1600,6 +1600,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override public void updateNeighborsAt(BlockPos pos, Block sourceBlock) { diff --git a/patches/server/0086-Optimize-DataBits.patch b/patches/server/0087-Optimize-DataBits.patch similarity index 100% rename from patches/server/0086-Optimize-DataBits.patch rename to patches/server/0087-Optimize-DataBits.patch diff --git a/patches/server/0087-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch b/patches/server/0088-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch similarity index 100% rename from patches/server/0087-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch rename to patches/server/0088-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch diff --git a/patches/server/0088-Configurable-Player-Collision.patch b/patches/server/0089-Configurable-Player-Collision.patch similarity index 97% rename from patches/server/0088-Configurable-Player-Collision.patch rename to patches/server/0089-Configurable-Player-Collision.patch index d295cfdc50..8de27b08b0 100644 --- a/patches/server/0088-Configurable-Player-Collision.patch +++ b/patches/server/0089-Configurable-Player-Collision.patch @@ -18,7 +18,7 @@ index 1294b38262505b0d54089e428df9b363219de1f0..ee37ec0de1ca969144824427ae42b0c8 buf.writeComponent(this.playerPrefix); buf.writeComponent(this.playerSuffix); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 19cb043e5c501b664d101b11717b759be9dd4cfd..c667cf1564011a922f208e671ff293485324b5cd 100644 +index 281884fedf6607581a24fef4b3326dfb81012124..1356d61428a50b4fc09c6c4d4c02e02056b6b38b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -575,6 +575,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { -@@ -2325,9 +2327,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop this.getMinX() && (double) pos.getMinBlockX() < this.getMaxX() && (double) pos.getMaxBlockZ() > this.getMinZ() && (double) pos.getMinBlockZ() < this.getMaxZ(); } diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java -index f739a175e26f250c652c73b8985158fe37c2823a..d70317d0306a7b55ba88b0d2360c9b190454e049 100644 +index 5f4fa76fe3a1a0a4fc11064fcf57bfab20bd9729..4da303d7e15496f04f0e27bfb613176bc2a72b76 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java @@ -217,6 +217,7 @@ public abstract class ChunkGenerator { diff --git a/patches/server/0118-Configurable-Cartographer-Treasure-Maps.patch b/patches/server/0119-Configurable-Cartographer-Treasure-Maps.patch similarity index 100% rename from patches/server/0118-Configurable-Cartographer-Treasure-Maps.patch rename to patches/server/0119-Configurable-Cartographer-Treasure-Maps.patch diff --git a/patches/server/0119-Add-API-methods-to-control-if-armour-stands-can-move.patch b/patches/server/0120-Add-API-methods-to-control-if-armour-stands-can-move.patch similarity index 100% rename from patches/server/0119-Add-API-methods-to-control-if-armour-stands-can-move.patch rename to patches/server/0120-Add-API-methods-to-control-if-armour-stands-can-move.patch diff --git a/patches/server/0120-String-based-Action-Bar-API.patch b/patches/server/0121-String-based-Action-Bar-API.patch similarity index 94% rename from patches/server/0120-String-based-Action-Bar-API.patch rename to patches/server/0121-String-based-Action-Bar-API.patch index 4809ccb8de..f597ed3118 100644 --- a/patches/server/0120-String-based-Action-Bar-API.patch +++ b/patches/server/0121-String-based-Action-Bar-API.patch @@ -26,10 +26,10 @@ index 32ef3edebe94a2014168b7e438752a80b2687e5f..ab6c58eed6707ab7b0aa3e7549a871ad // Paper end buf.writeComponent(this.text); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index dc436397256cecfb51ed82b0cc654307a8d2e0f6..75e82bec61c9e20d6ae589664f87cb1f26b0deb5 100644 +index bedeae40c7a88b7c13babb9ef8c94983a2ac4fef..18db64ff86517c7ceb98590c0c91e0c21855db72 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -300,6 +300,29 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -342,6 +342,29 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } // Paper start diff --git a/patches/server/0121-Properly-fix-item-duplication-bug.patch b/patches/server/0122-Properly-fix-item-duplication-bug.patch similarity index 90% rename from patches/server/0121-Properly-fix-item-duplication-bug.patch rename to patches/server/0122-Properly-fix-item-duplication-bug.patch index 5c9d66dc2b..6b92612404 100644 --- a/patches/server/0121-Properly-fix-item-duplication-bug.patch +++ b/patches/server/0122-Properly-fix-item-duplication-bug.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Properly fix item duplication bug Credit to prplz for figuring out the real issue diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d90748aab21adf9c7f463e31e7d7eb5f9bc0bbbd..40efa19ffe9275748a62e0546c3fd42bbcb0883d 100644 +index 56566c9f74d1ba2539f9d35f61038489650b0792..aee79a46d8fce5e5e80010e0e34f04fc8495d602 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2352,7 +2352,7 @@ public class ServerPlayer extends Player { +@@ -2396,7 +2396,7 @@ public class ServerPlayer extends Player { @Override public boolean isImmobile() { diff --git a/patches/server/0122-Firework-API-s.patch b/patches/server/0123-Firework-API-s.patch similarity index 100% rename from patches/server/0122-Firework-API-s.patch rename to patches/server/0123-Firework-API-s.patch diff --git a/patches/server/0123-PlayerTeleportEndGatewayEvent.patch b/patches/server/0124-PlayerTeleportEndGatewayEvent.patch similarity index 100% rename from patches/server/0123-PlayerTeleportEndGatewayEvent.patch rename to patches/server/0124-PlayerTeleportEndGatewayEvent.patch diff --git a/patches/server/0124-Provide-E-TE-Chunk-count-stat-methods.patch b/patches/server/0125-Provide-E-TE-Chunk-count-stat-methods.patch similarity index 94% rename from patches/server/0124-Provide-E-TE-Chunk-count-stat-methods.patch rename to patches/server/0125-Provide-E-TE-Chunk-count-stat-methods.patch index 4fa211b968..6324b36515 100644 --- a/patches/server/0124-Provide-E-TE-Chunk-count-stat-methods.patch +++ b/patches/server/0125-Provide-E-TE-Chunk-count-stat-methods.patch @@ -7,7 +7,7 @@ Provides counts without the ineffeciency of using .getEntities().size() which creates copy of the collections. diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 936f21b61589a6bcd9bf19c7466b9b1b9a14f280..776a5a9947c56eb63df7ac9797166be456282af1 100644 +index 7b681914b7f9e7fb6d2ea607e0d63ca7024a7ec3..7cfcbc1e38f5e9145c827dfe26299277a3f14cee 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -116,7 +116,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -20,7 +20,7 @@ index 936f21b61589a6bcd9bf19c7466b9b1b9a14f280..776a5a9947c56eb63df7ac9797166be4 private final List pendingBlockEntityTickers = Lists.newArrayList(); private boolean tickingBlockEntities; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index d01388bbadf3069357cf52463f4104a1be4d2b56..9d79b31baea99d25218e9d3f27ab895d4f73ef8a 100644 +index f4f94185cf699582737aecee1d3623c7857fbbb5..6b0dba6f7211500ba5950a76d2b2252a09f65103 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -154,6 +154,56 @@ public class CraftWorld extends CraftRegionAccessor implements World { diff --git a/patches/server/0125-Enforce-Sync-Player-Saves.patch b/patches/server/0126-Enforce-Sync-Player-Saves.patch similarity index 92% rename from patches/server/0125-Enforce-Sync-Player-Saves.patch rename to patches/server/0126-Enforce-Sync-Player-Saves.patch index bfd5092167..4bdce0e792 100644 --- a/patches/server/0125-Enforce-Sync-Player-Saves.patch +++ b/patches/server/0126-Enforce-Sync-Player-Saves.patch @@ -7,7 +7,7 @@ Saving players async is extremely dangerous. This will force it to main the same way we handle async chunk loads. diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 5406ac93eaf9b9f9e810bfbbcf4a35e2f38f680c..a2b4e5fc6b3174705f2232abb2df7bf869dc3926 100644 +index 441c187b45bfa20d929fe3c5e8dc25db22c4aad1..bba11f3ad244bf9f3b7e6006128ce5e4228ab531 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1063,11 +1063,13 @@ public abstract class PlayerList { diff --git a/patches/server/0126-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch b/patches/server/0127-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch similarity index 100% rename from patches/server/0126-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch rename to patches/server/0127-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch diff --git a/patches/server/0127-Cap-Entity-Collisions.patch b/patches/server/0128-Cap-Entity-Collisions.patch similarity index 95% rename from patches/server/0127-Cap-Entity-Collisions.patch rename to patches/server/0128-Cap-Entity-Collisions.patch index 60f4af0a25..0b9b7754b2 100644 --- a/patches/server/0127-Cap-Entity-Collisions.patch +++ b/patches/server/0128-Cap-Entity-Collisions.patch @@ -12,7 +12,7 @@ just as it does in Vanilla, but entity pushing logic will be capped. You can set this to 0 to disable collisions. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 468111bb80e7756371d22eb831596c187538f0c1..b4c91cb985d3772c5b105b8d2267b51d7483e005 100644 +index f3db63ddb175f82b6eafee48686065050437fc92..4e71fb3fcbd89c21e5132cfb76dcbf8cec7785dd 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -387,6 +387,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0128-Remove-CraftScheduler-Async-Task-Debugger.patch b/patches/server/0129-Remove-CraftScheduler-Async-Task-Debugger.patch similarity index 100% rename from patches/server/0128-Remove-CraftScheduler-Async-Task-Debugger.patch rename to patches/server/0129-Remove-CraftScheduler-Async-Task-Debugger.patch diff --git a/patches/server/0129-Do-not-let-armorstands-drown.patch b/patches/server/0130-Do-not-let-armorstands-drown.patch similarity index 100% rename from patches/server/0129-Do-not-let-armorstands-drown.patch rename to patches/server/0130-Do-not-let-armorstands-drown.patch diff --git a/patches/server/0130-Properly-handle-async-calls-to-restart-the-server.patch b/patches/server/0131-Properly-handle-async-calls-to-restart-the-server.patch similarity index 97% rename from patches/server/0130-Properly-handle-async-calls-to-restart-the-server.patch rename to patches/server/0131-Properly-handle-async-calls-to-restart-the-server.patch index 5e4cfcbaa0..a12364d7ee 100644 --- a/patches/server/0130-Properly-handle-async-calls-to-restart-the-server.patch +++ b/patches/server/0131-Properly-handle-async-calls-to-restart-the-server.patch @@ -30,7 +30,7 @@ will have plugins and worlds saving to the disk has a high potential to result in corruption/dataloss. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8ef6e39e4711d2147e5ad97e9f8028e005588ac5..8a3a8b8ccbf3b5e3b41f33c8b5c6a0834e547131 100644 +index b46cffe141921e499a47dac08318f167f21a5509..092f76d1d248e04c3fa5fa346373ec1f2600ee5c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -233,6 +233,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 9d700d27d05c6f276b3ca159735fece0a75ca9b1..0fb1fda1aba730e54d9e922e18de3bd048a78a62 100644 +index 845a90426545b554aaf5c278723c107ba9791270..a3c150e9552fbc9b9244c70508c27f03a3834fa2 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -162,8 +162,7 @@ public abstract class PlayerList { @@ -389,7 +389,7 @@ index 9d700d27d05c6f276b3ca159735fece0a75ca9b1..0fb1fda1aba730e54d9e922e18de3bd0 this.bans = new UserBanList(PlayerList.USERBANLIST_FILE); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a51ab0eddb94263642b0015967cd2e6987ed2619..15d881193f40dda74996932854283e4551742185 100644 +index d3a9b47ab78844e5cb6a04a790e079fe22bf153c..7b019dcb70b430c36112e68c837b2b4aeb1aacc7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -44,7 +44,6 @@ import java.util.logging.Level; diff --git a/patches/server/0134-provide-a-configurable-option-to-disable-creeper-lin.patch b/patches/server/0135-provide-a-configurable-option-to-disable-creeper-lin.patch similarity index 100% rename from patches/server/0134-provide-a-configurable-option-to-disable-creeper-lin.patch rename to patches/server/0135-provide-a-configurable-option-to-disable-creeper-lin.patch diff --git a/patches/server/0135-Item-canEntityPickup.patch b/patches/server/0136-Item-canEntityPickup.patch similarity index 100% rename from patches/server/0135-Item-canEntityPickup.patch rename to patches/server/0136-Item-canEntityPickup.patch diff --git a/patches/server/0136-PlayerPickupItemEvent-setFlyAtPlayer.patch b/patches/server/0137-PlayerPickupItemEvent-setFlyAtPlayer.patch similarity index 100% rename from patches/server/0136-PlayerPickupItemEvent-setFlyAtPlayer.patch rename to patches/server/0137-PlayerPickupItemEvent-setFlyAtPlayer.patch diff --git a/patches/server/0137-PlayerAttemptPickupItemEvent.patch b/patches/server/0138-PlayerAttemptPickupItemEvent.patch similarity index 100% rename from patches/server/0137-PlayerAttemptPickupItemEvent.patch rename to patches/server/0138-PlayerAttemptPickupItemEvent.patch diff --git a/patches/server/0138-Do-not-submit-profile-lookups-to-worldgen-threads.patch b/patches/server/0139-Do-not-submit-profile-lookups-to-worldgen-threads.patch similarity index 100% rename from patches/server/0138-Do-not-submit-profile-lookups-to-worldgen-threads.patch rename to patches/server/0139-Do-not-submit-profile-lookups-to-worldgen-threads.patch diff --git a/patches/server/0139-Add-UnknownCommandEvent.patch b/patches/server/0140-Add-UnknownCommandEvent.patch similarity index 98% rename from patches/server/0139-Add-UnknownCommandEvent.patch rename to patches/server/0140-Add-UnknownCommandEvent.patch index c347eb344a..98800873f2 100644 --- a/patches/server/0139-Add-UnknownCommandEvent.patch +++ b/patches/server/0140-Add-UnknownCommandEvent.patch @@ -83,7 +83,7 @@ index d1ecf61ffecb8669214ad85334374a4569811de8..e63632f09d608371aaeaf09a6dac57c1 b1 = 0; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 15d881193f40dda74996932854283e4551742185..c37793f660c0b2a28e4478dfee0582a61a8faf3c 100644 +index 7b019dcb70b430c36112e68c837b2b4aeb1aacc7..66f241411af172e2f44edfc4e8f1b9bda86844e2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -531,6 +531,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0140-Basic-PlayerProfile-API.patch b/patches/server/0141-Basic-PlayerProfile-API.patch similarity index 98% rename from patches/server/0140-Basic-PlayerProfile-API.patch rename to patches/server/0141-Basic-PlayerProfile-API.patch index b482ebaaf4..24f2b83526 100644 --- a/patches/server/0140-Basic-PlayerProfile-API.patch +++ b/patches/server/0141-Basic-PlayerProfile-API.patch @@ -548,7 +548,7 @@ index 0000000000000000000000000000000000000000..7ac27392a8647ef7d0dc78efe78703e9 + @NotNull GameProfile buildGameProfile(); +} diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index 9572294a50110f2452090da1f32e0a73edc3db05..ff8876b7e7cc2172a2cb5e12d6836b9875cc9aa1 100644 +index dc2ab968ed010289125ac08f0a9ea85af6f6e8bb..82a1a87822e3fc323b92e1aa30ddb0cdb351d89c 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java @@ -1,5 +1,7 @@ @@ -559,15 +559,15 @@ index 9572294a50110f2452090da1f32e0a73edc3db05..ff8876b7e7cc2172a2cb5e12d6836b98 import com.google.common.util.concurrent.ThreadFactoryBuilder; import io.papermc.paper.math.BlockPosition; import io.papermc.paper.math.FinePosition; -@@ -17,6 +19,7 @@ import net.minecraft.world.level.ClipContext; - import net.minecraft.world.level.Level; +@@ -30,6 +32,7 @@ import net.minecraft.world.level.chunk.ChunkAccess; + import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.phys.Vec3; import org.apache.commons.lang.exception.ExceptionUtils; +import com.mojang.authlib.GameProfile; import org.bukkit.Location; import org.bukkit.block.BlockFace; import org.bukkit.craftbukkit.CraftWorld; -@@ -362,6 +365,10 @@ public final class MCUtil { +@@ -378,6 +381,10 @@ public final class MCUtil { return run.get(); } @@ -579,7 +579,7 @@ index 9572294a50110f2452090da1f32e0a73edc3db05..ff8876b7e7cc2172a2cb5e12d6836b98 * Calculates distance between 2 entities * @param e1 diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index ae0b713870976d4b1e469a90cef9b2e282dbcaab..6c3e0540dce5f810a7822cefe59228ef77528132 100644 +index 646cd39c46d86899f23c8179c0790e32d03f954f..1b97195394161e067312b71c81ddd448b92c5e44 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java @@ -178,7 +178,7 @@ public class Main { @@ -614,7 +614,7 @@ index c70cd016e1978931d115cfca94664897f0158196..eac9658fa4cab7a651e10e4e18c679e0 String s1 = name.toLowerCase(Locale.ROOT); GameProfileCache.GameProfileInfo usercache_usercacheentry = (GameProfileCache.GameProfileInfo) this.profilesByName.get(s1); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c37793f660c0b2a28e4478dfee0582a61a8faf3c..35dc09187b0bed916c9a10f3cf3a900052926a72 100644 +index 66f241411af172e2f44edfc4e8f1b9bda86844e2..e42555a01a581a094bc4bd41bf4cd8a9a45bf7c1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -264,6 +264,9 @@ import org.yaml.snakeyaml.error.MarkedYAMLException; diff --git a/patches/server/0141-Shoulder-Entities-Release-API.patch b/patches/server/0142-Shoulder-Entities-Release-API.patch similarity index 100% rename from patches/server/0141-Shoulder-Entities-Release-API.patch rename to patches/server/0142-Shoulder-Entities-Release-API.patch diff --git a/patches/server/0142-Profile-Lookup-Events.patch b/patches/server/0143-Profile-Lookup-Events.patch similarity index 100% rename from patches/server/0142-Profile-Lookup-Events.patch rename to patches/server/0143-Profile-Lookup-Events.patch diff --git a/patches/server/0143-Block-player-logins-during-server-shutdown.patch b/patches/server/0144-Block-player-logins-during-server-shutdown.patch similarity index 100% rename from patches/server/0143-Block-player-logins-during-server-shutdown.patch rename to patches/server/0144-Block-player-logins-during-server-shutdown.patch diff --git a/patches/server/0144-Entity-fromMobSpawner.patch b/patches/server/0145-Entity-fromMobSpawner.patch similarity index 93% rename from patches/server/0144-Entity-fromMobSpawner.patch rename to patches/server/0145-Entity-fromMobSpawner.patch index 393eb7cd61..bae3882cc4 100644 --- a/patches/server/0144-Entity-fromMobSpawner.patch +++ b/patches/server/0145-Entity-fromMobSpawner.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity#fromMobSpawner() diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b4c91cb985d3772c5b105b8d2267b51d7483e005..3fc715e7ceb35e2309ba3ffeb19ae58cfd25fde6 100644 +index 4e71fb3fcbd89c21e5132cfb76dcbf8cec7785dd..1d21c5d5ea84f76d4cafe9d2d22226cf50232ee1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -388,6 +388,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -16,7 +16,7 @@ index b4c91cb985d3772c5b105b8d2267b51d7483e005..3fc715e7ceb35e2309ba3ffeb19ae58c @javax.annotation.Nullable private org.bukkit.util.Vector origin; @javax.annotation.Nullable -@@ -2125,6 +2126,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2177,6 +2178,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } nbt.put("Paper.Origin", this.newDoubleList(origin.getX(), origin.getY(), origin.getZ())); } @@ -27,7 +27,7 @@ index b4c91cb985d3772c5b105b8d2267b51d7483e005..3fc715e7ceb35e2309ba3ffeb19ae58c // Paper end return nbt; } catch (Throwable throwable) { -@@ -2265,6 +2270,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2317,6 +2322,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.originWorld = originWorld; origin = new org.bukkit.util.Vector(originTag.getDouble(0), originTag.getDouble(1), originTag.getDouble(2)); } diff --git a/patches/server/0145-Improve-the-Saddle-API-for-Horses.patch b/patches/server/0146-Improve-the-Saddle-API-for-Horses.patch similarity index 100% rename from patches/server/0145-Improve-the-Saddle-API-for-Horses.patch rename to patches/server/0146-Improve-the-Saddle-API-for-Horses.patch diff --git a/patches/server/0146-Implement-ensureServerConversions-API.patch b/patches/server/0147-Implement-ensureServerConversions-API.patch similarity index 100% rename from patches/server/0146-Implement-ensureServerConversions-API.patch rename to patches/server/0147-Implement-ensureServerConversions-API.patch diff --git a/patches/server/0147-Implement-getI18NDisplayName.patch b/patches/server/0148-Implement-getI18NDisplayName.patch similarity index 100% rename from patches/server/0147-Implement-getI18NDisplayName.patch rename to patches/server/0148-Implement-getI18NDisplayName.patch diff --git a/patches/server/0148-ProfileWhitelistVerifyEvent.patch b/patches/server/0149-ProfileWhitelistVerifyEvent.patch similarity index 97% rename from patches/server/0148-ProfileWhitelistVerifyEvent.patch rename to patches/server/0149-ProfileWhitelistVerifyEvent.patch index 95627cc8cc..e64e46dedb 100644 --- a/patches/server/0148-ProfileWhitelistVerifyEvent.patch +++ b/patches/server/0149-ProfileWhitelistVerifyEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] ProfileWhitelistVerifyEvent diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0fb1fda1aba730e54d9e922e18de3bd048a78a62..0cdab5d4f1b4d368dfee0dc50183a83ca446fc17 100644 +index a3c150e9552fbc9b9244c70508c27f03a3834fa2..e4199b1c4b297db85a99e1e6a1c61ce6d7abc909 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -633,9 +633,9 @@ public abstract class PlayerList { diff --git a/patches/server/0149-Fix-this-stupid-bullshit.patch b/patches/server/0150-Fix-this-stupid-bullshit.patch similarity index 100% rename from patches/server/0149-Fix-this-stupid-bullshit.patch rename to patches/server/0150-Fix-this-stupid-bullshit.patch diff --git a/patches/server/0150-LivingEntity-setKiller.patch b/patches/server/0151-LivingEntity-setKiller.patch similarity index 100% rename from patches/server/0150-LivingEntity-setKiller.patch rename to patches/server/0151-LivingEntity-setKiller.patch diff --git a/patches/server/0151-Ocelot-despawns-should-honor-nametags-and-leash.patch b/patches/server/0152-Ocelot-despawns-should-honor-nametags-and-leash.patch similarity index 100% rename from patches/server/0151-Ocelot-despawns-should-honor-nametags-and-leash.patch rename to patches/server/0152-Ocelot-despawns-should-honor-nametags-and-leash.patch diff --git a/patches/server/0152-Reset-spawner-timer-when-spawner-event-is-cancelled.patch b/patches/server/0153-Reset-spawner-timer-when-spawner-event-is-cancelled.patch similarity index 100% rename from patches/server/0152-Reset-spawner-timer-when-spawner-event-is-cancelled.patch rename to patches/server/0153-Reset-spawner-timer-when-spawner-event-is-cancelled.patch diff --git a/patches/server/0153-Allow-specifying-a-custom-authentication-servers-dow.patch b/patches/server/0154-Allow-specifying-a-custom-authentication-servers-dow.patch similarity index 100% rename from patches/server/0153-Allow-specifying-a-custom-authentication-servers-dow.patch rename to patches/server/0154-Allow-specifying-a-custom-authentication-servers-dow.patch diff --git a/patches/server/0154-Handle-plugin-prefixes-using-Log4J-configuration.patch b/patches/server/0155-Handle-plugin-prefixes-using-Log4J-configuration.patch similarity index 100% rename from patches/server/0154-Handle-plugin-prefixes-using-Log4J-configuration.patch rename to patches/server/0155-Handle-plugin-prefixes-using-Log4J-configuration.patch diff --git a/patches/server/0155-Improve-Log4J-Configuration-Plugin-Loggers.patch b/patches/server/0156-Improve-Log4J-Configuration-Plugin-Loggers.patch similarity index 100% rename from patches/server/0155-Improve-Log4J-Configuration-Plugin-Loggers.patch rename to patches/server/0156-Improve-Log4J-Configuration-Plugin-Loggers.patch diff --git a/patches/server/0156-Add-PlayerJumpEvent.patch b/patches/server/0157-Add-PlayerJumpEvent.patch similarity index 94% rename from patches/server/0156-Add-PlayerJumpEvent.patch rename to patches/server/0157-Add-PlayerJumpEvent.patch index 62a093ea68..c718d20f84 100644 --- a/patches/server/0156-Add-PlayerJumpEvent.patch +++ b/patches/server/0157-Add-PlayerJumpEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerJumpEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 4f420687d7afc6cdb8175d510c54a0d8dd3847b6..875c98d4f93b3fdd93af3a1087a818f7250515b1 100644 +index bebe7cee0a0a94c1e11b7ac8c79c7496fb6b8edc..592e7d24b27fab4af32d35d0f7c7786c582d9418 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1192,7 +1192,34 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1199,7 +1199,34 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean flag = d7 > 0.0D; if (this.player.onGround() && !packet.isOnGround() && flag) { diff --git a/patches/server/0157-handle-ServerboundKeepAlivePacket-async.patch b/patches/server/0158-handle-ServerboundKeepAlivePacket-async.patch similarity index 100% rename from patches/server/0157-handle-ServerboundKeepAlivePacket-async.patch rename to patches/server/0158-handle-ServerboundKeepAlivePacket-async.patch diff --git a/patches/server/0158-Expose-client-protocol-version-and-virtual-host.patch b/patches/server/0159-Expose-client-protocol-version-and-virtual-host.patch similarity index 90% rename from patches/server/0158-Expose-client-protocol-version-and-virtual-host.patch rename to patches/server/0159-Expose-client-protocol-version-and-virtual-host.patch index f8a2b76a5a..a35ad62785 100644 --- a/patches/server/0158-Expose-client-protocol-version-and-virtual-host.patch +++ b/patches/server/0159-Expose-client-protocol-version-and-virtual-host.patch @@ -60,13 +60,13 @@ index 0000000000000000000000000000000000000000..a5a7624f1f372a26b982836cd31cff15 + +} diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index e7a124403f2b07c96caaaf97d1c9023f9ec2f9d9..e5e4a5fb2c342a249344d207ffea4000cc998710 100644 +index b097bb4855ab724b2c435a9a9db450ff3ce840fe..2c807e8a579de5152f99c75ea272a6483a778f17 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -111,6 +111,10 @@ public class Connection extends SimpleChannelInboundHandler> { - @Nullable - BandwidthDebugMonitor bandwidthDebugMonitor; - public String hostname = ""; // CraftBukkit - add field +@@ -133,6 +133,10 @@ public class Connection extends SimpleChannelInboundHandler> { + } + } + // Paper end - add pending task queue + // Paper start - NetworkClient implementation + public int protocolVersion; + public java.net.InetSocketAddress virtualHost; @@ -90,10 +90,10 @@ index c1eb9f999c1042da804a3560d12c14f5d67b7953..331af220601127872aff709c8f692fdc @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 75e82bec61c9e20d6ae589664f87cb1f26b0deb5..8106506803d77b88f13ca033eefa3b3f62453650 100644 +index 18db64ff86517c7ceb98590c0c91e0c21855db72..4d324d2fc5f9966a6b27391f856c4efec98692c6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -246,6 +246,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -288,6 +288,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } } diff --git a/patches/server/0159-revert-serverside-behavior-of-keepalives.patch b/patches/server/0160-revert-serverside-behavior-of-keepalives.patch similarity index 100% rename from patches/server/0159-revert-serverside-behavior-of-keepalives.patch rename to patches/server/0160-revert-serverside-behavior-of-keepalives.patch diff --git a/patches/server/0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch b/patches/server/0161-Send-attack-SoundEffects-only-to-players-who-can-see.patch similarity index 100% rename from patches/server/0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch rename to patches/server/0161-Send-attack-SoundEffects-only-to-players-who-can-see.patch diff --git a/patches/server/0161-Add-PlayerArmorChangeEvent.patch b/patches/server/0162-Add-PlayerArmorChangeEvent.patch similarity index 100% rename from patches/server/0161-Add-PlayerArmorChangeEvent.patch rename to patches/server/0162-Add-PlayerArmorChangeEvent.patch diff --git a/patches/server/0162-Prevent-logins-from-being-processed-when-the-player-.patch b/patches/server/0163-Prevent-logins-from-being-processed-when-the-player-.patch similarity index 100% rename from patches/server/0162-Prevent-logins-from-being-processed-when-the-player-.patch rename to patches/server/0163-Prevent-logins-from-being-processed-when-the-player-.patch diff --git a/patches/server/0163-Fix-MC-117075-TE-Unload-Lag-Spike.patch b/patches/server/0164-Fix-MC-117075-TE-Unload-Lag-Spike.patch similarity index 88% rename from patches/server/0163-Fix-MC-117075-TE-Unload-Lag-Spike.patch rename to patches/server/0164-Fix-MC-117075-TE-Unload-Lag-Spike.patch index 10951ab2ba..169d912a4b 100644 --- a/patches/server/0163-Fix-MC-117075-TE-Unload-Lag-Spike.patch +++ b/patches/server/0164-Fix-MC-117075-TE-Unload-Lag-Spike.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix MC-117075: TE Unload Lag Spike diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 776a5a9947c56eb63df7ac9797166be456282af1..e00e9a6ca14622c2baeba71f54710fedc838ffd7 100644 +index 7cfcbc1e38f5e9145c827dfe26299277a3f14cee..22dab285bbcea77d04a8625b025f054c625cadd4 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -800,6 +800,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -805,6 +805,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); int tilesThisCycle = 0; @@ -17,7 +17,7 @@ index 776a5a9947c56eb63df7ac9797166be456282af1..e00e9a6ca14622c2baeba71f54710fed for (tileTickPosition = 0; tileTickPosition < this.blockEntityTickers.size(); tileTickPosition++) { // Paper - Disable tick limiters this.tileTickPosition = (this.tileTickPosition < this.blockEntityTickers.size()) ? this.tileTickPosition : 0; TickingBlockEntity tickingblockentity = (TickingBlockEntity) this.blockEntityTickers.get(tileTickPosition); -@@ -807,7 +809,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -812,7 +814,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { if (tickingblockentity == null) { this.getCraftServer().getLogger().severe("Spigot has detected a null entity and has removed it, preventing a crash"); tilesThisCycle--; @@ -25,7 +25,7 @@ index 776a5a9947c56eb63df7ac9797166be456282af1..e00e9a6ca14622c2baeba71f54710fed continue; } // Spigot end -@@ -815,12 +816,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -820,12 +821,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { if (tickingblockentity.isRemoved()) { // Spigot start tilesThisCycle--; diff --git a/patches/server/0164-use-CB-BlockState-implementations-for-captured-block.patch b/patches/server/0165-use-CB-BlockState-implementations-for-captured-block.patch similarity index 95% rename from patches/server/0164-use-CB-BlockState-implementations-for-captured-block.patch rename to patches/server/0165-use-CB-BlockState-implementations-for-captured-block.patch index f2aca08353..c5f6827d65 100644 --- a/patches/server/0164-use-CB-BlockState-implementations-for-captured-block.patch +++ b/patches/server/0165-use-CB-BlockState-implementations-for-captured-block.patch @@ -18,7 +18,7 @@ the blockstate that will be valid for restoration, as opposed to dropping information on restoration when the event is cancelled. diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e00e9a6ca14622c2baeba71f54710fedc838ffd7..068382daaeae03e67b2859cce7d15e290c92352e 100644 +index 22dab285bbcea77d04a8625b025f054c625cadd4..ce24a52b2b9fb0ae7cfb085a204de8780bc8f5d6 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -154,7 +154,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -49,7 +49,7 @@ index e00e9a6ca14622c2baeba71f54710fedc838ffd7..068382daaeae03e67b2859cce7d15e29 this.capturedBlockStates.put(pos.immutable(), blockstate); captured = true; } -@@ -690,7 +691,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -695,7 +696,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public BlockState getBlockState(BlockPos pos) { // CraftBukkit start - tree generation if (this.captureTreeGeneration) { diff --git a/patches/server/0165-API-to-get-a-BlockState-without-a-snapshot.patch b/patches/server/0166-API-to-get-a-BlockState-without-a-snapshot.patch similarity index 100% rename from patches/server/0165-API-to-get-a-BlockState-without-a-snapshot.patch rename to patches/server/0166-API-to-get-a-BlockState-without-a-snapshot.patch diff --git a/patches/server/0166-AsyncTabCompleteEvent.patch b/patches/server/0167-AsyncTabCompleteEvent.patch similarity index 96% rename from patches/server/0166-AsyncTabCompleteEvent.patch rename to patches/server/0167-AsyncTabCompleteEvent.patch index d1e3c29612..c3a706e77f 100644 --- a/patches/server/0166-AsyncTabCompleteEvent.patch +++ b/patches/server/0167-AsyncTabCompleteEvent.patch @@ -16,10 +16,10 @@ Also adds isCommand and getLocation to the sync TabCompleteEvent Co-authored-by: Aikar diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 875c98d4f93b3fdd93af3a1087a818f7250515b1..c14ebcc46c033834a14de5d6335a4dcc7830069d 100644 +index 592e7d24b27fab4af32d35d0f7c7786c582d9418..c425780ba9867b4ccea9841a8a7dba43f98f5073 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -687,27 +687,58 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -687,12 +687,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } @@ -37,6 +37,10 @@ index 875c98d4f93b3fdd93af3a1087a818f7250515b1..c14ebcc46c033834a14de5d6335a4dcc + server.scheduleOnMain(() -> this.disconnect(Component.translatable("disconnect.spam", new Object[0]))); // Paper return; } + // Paper start +@@ -703,18 +707,45 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl + } + // Paper end // CraftBukkit end + // Paper start - async tab completion + TAB_COMPLETE_EXECUTOR.execute(() -> { @@ -87,7 +91,7 @@ index 875c98d4f93b3fdd93af3a1087a818f7250515b1..c14ebcc46c033834a14de5d6335a4dcc @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 35dc09187b0bed916c9a10f3cf3a900052926a72..659e239a407f793706e4f133f6168a556e9de68b 100644 +index e42555a01a581a094bc4bd41bf4cd8a9a45bf7c1..2c4c8a1a4bb779de970068af5a30505f434029be 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -2132,7 +2132,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0167-PlayerPickupExperienceEvent.patch b/patches/server/0168-PlayerPickupExperienceEvent.patch similarity index 100% rename from patches/server/0167-PlayerPickupExperienceEvent.patch rename to patches/server/0168-PlayerPickupExperienceEvent.patch diff --git a/patches/server/0168-Ability-to-apply-mending-to-XP-API.patch b/patches/server/0169-Ability-to-apply-mending-to-XP-API.patch similarity index 94% rename from patches/server/0168-Ability-to-apply-mending-to-XP-API.patch rename to patches/server/0169-Ability-to-apply-mending-to-XP-API.patch index be694c6135..524104d241 100644 --- a/patches/server/0168-Ability-to-apply-mending-to-XP-API.patch +++ b/patches/server/0169-Ability-to-apply-mending-to-XP-API.patch @@ -14,10 +14,10 @@ public net.minecraft.world.entity.ExperienceOrb durabilityToXp(I)I public net.minecraft.world.entity.ExperienceOrb xpToDurability(I)I diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 8106506803d77b88f13ca033eefa3b3f62453650..d327ce535c8750b6ee6c993b3643006e0e91a08d 100644 +index 4d324d2fc5f9966a6b27391f856c4efec98692c6..18d7e0ab3c57a3daa819cd20e8ff6cd33b4c2edc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1498,7 +1498,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1540,7 +1540,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } @Override diff --git a/patches/server/0169-PlayerNaturallySpawnCreaturesEvent.patch b/patches/server/0170-PlayerNaturallySpawnCreaturesEvent.patch similarity index 82% rename from patches/server/0169-PlayerNaturallySpawnCreaturesEvent.patch rename to patches/server/0170-PlayerNaturallySpawnCreaturesEvent.patch index 076442dce8..2bc01a5882 100644 --- a/patches/server/0169-PlayerNaturallySpawnCreaturesEvent.patch +++ b/patches/server/0170-PlayerNaturallySpawnCreaturesEvent.patch @@ -9,10 +9,10 @@ from triggering monster spawns on a server. Also a highly more effecient way to blanket block spawns in a world diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 8c84461a5711cb408b0ead397417c31cb2f4d336..db027a4291131b7f64c32853da4ca5fc71582251 100644 +index ea0b82165e452b7b82d1d9a58eef6059cba30552..cdcad9e1470a0b465ee96d1f2b4b8b31e8c3d219 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1193,7 +1193,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -687,7 +687,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider chunkRange = (chunkRange > level.spigotConfig.viewDistance) ? (byte) level.spigotConfig.viewDistance : chunkRange; chunkRange = (chunkRange > 8) ? 8 : chunkRange; @@ -23,7 +23,7 @@ index 8c84461a5711cb408b0ead397417c31cb2f4d336..db027a4291131b7f64c32853da4ca5fc // Spigot end if (!this.distanceManager.hasPlayersNearby(chunkcoordintpair.toLong())) { return false; -@@ -1208,6 +1210,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -702,6 +704,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } entityplayer = (ServerPlayer) iterator.next(); @@ -40,10 +40,10 @@ index 8c84461a5711cb408b0ead397417c31cb2f4d336..db027a4291131b7f64c32853da4ca5fc return true; diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index b1fd6118132ba38f60d2a2b15c09231fa29be8fa..0f38bdf2c9a29f2111c27138b8d997c230633bb8 100644 +index 65d447df49d8c4a27de9ae7f9e298bf705c688bc..4649e597b86335b33d9e9227d966dd7ad8208096 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -718,6 +718,15 @@ public class ServerChunkCache extends ChunkSource { +@@ -565,6 +565,15 @@ public class ServerChunkCache extends ChunkSource { boolean flag2 = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit Collections.shuffle(list); @@ -60,7 +60,7 @@ index b1fd6118132ba38f60d2a2b15c09231fa29be8fa..0f38bdf2c9a29f2111c27138b8d997c2 while (iterator1.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 40efa19ffe9275748a62e0546c3fd42bbcb0883d..491dffdcbb065acf5861dc01b403d1a895c92baa 100644 +index aee79a46d8fce5e5e80010e0e34f04fc8495d602..74249488581e661dda4792348ca1407c1b1df6a9 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1,5 +1,6 @@ @@ -76,5 +76,5 @@ index 40efa19ffe9275748a62e0546c3fd42bbcb0883d..491dffdcbb065acf5861dc01b403d1a8 public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper + public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) { - super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); + // Paper start - replace player chunk loader + private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); diff --git a/patches/server/0170-Add-setPlayerProfile-API-for-Skulls.patch b/patches/server/0171-Add-setPlayerProfile-API-for-Skulls.patch similarity index 100% rename from patches/server/0170-Add-setPlayerProfile-API-for-Skulls.patch rename to patches/server/0171-Add-setPlayerProfile-API-for-Skulls.patch diff --git a/patches/server/0171-PreCreatureSpawnEvent.patch b/patches/server/0172-PreCreatureSpawnEvent.patch similarity index 100% rename from patches/server/0171-PreCreatureSpawnEvent.patch rename to patches/server/0172-PreCreatureSpawnEvent.patch diff --git a/patches/server/0172-Fill-Profile-Property-Events.patch b/patches/server/0173-Fill-Profile-Property-Events.patch similarity index 100% rename from patches/server/0172-Fill-Profile-Property-Events.patch rename to patches/server/0173-Fill-Profile-Property-Events.patch diff --git a/patches/server/0173-PlayerAdvancementCriterionGrantEvent.patch b/patches/server/0174-PlayerAdvancementCriterionGrantEvent.patch similarity index 100% rename from patches/server/0173-PlayerAdvancementCriterionGrantEvent.patch rename to patches/server/0174-PlayerAdvancementCriterionGrantEvent.patch diff --git a/patches/server/0174-Add-ArmorStand-Item-Meta.patch b/patches/server/0175-Add-ArmorStand-Item-Meta.patch similarity index 100% rename from patches/server/0174-Add-ArmorStand-Item-Meta.patch rename to patches/server/0175-Add-ArmorStand-Item-Meta.patch diff --git a/patches/server/0175-Extend-Player-Interact-cancellation.patch b/patches/server/0176-Extend-Player-Interact-cancellation.patch similarity index 100% rename from patches/server/0175-Extend-Player-Interact-cancellation.patch rename to patches/server/0176-Extend-Player-Interact-cancellation.patch diff --git a/patches/server/0176-Tameable-getOwnerUniqueId-API.patch b/patches/server/0177-Tameable-getOwnerUniqueId-API.patch similarity index 100% rename from patches/server/0176-Tameable-getOwnerUniqueId-API.patch rename to patches/server/0177-Tameable-getOwnerUniqueId-API.patch diff --git a/patches/server/0177-Toggleable-player-crits-helps-mitigate-hacked-client.patch b/patches/server/0178-Toggleable-player-crits-helps-mitigate-hacked-client.patch similarity index 100% rename from patches/server/0177-Toggleable-player-crits-helps-mitigate-hacked-client.patch rename to patches/server/0178-Toggleable-player-crits-helps-mitigate-hacked-client.patch diff --git a/patches/server/0178-Disable-Explicit-Network-Manager-Flushing.patch b/patches/server/0179-Disable-Explicit-Network-Manager-Flushing.patch similarity index 86% rename from patches/server/0178-Disable-Explicit-Network-Manager-Flushing.patch rename to patches/server/0179-Disable-Explicit-Network-Manager-Flushing.patch index 70cd06eab6..d269ed5ad4 100644 --- a/patches/server/0178-Disable-Explicit-Network-Manager-Flushing.patch +++ b/patches/server/0179-Disable-Explicit-Network-Manager-Flushing.patch @@ -12,10 +12,10 @@ flushing on the netty event loop, so it won't do the flush on the main thread. Renable flushing by passing -Dpaper.explicit-flush=true diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index e5e4a5fb2c342a249344d207ffea4000cc998710..2d7f332910328cef616609dc4c89facafcbe66cc 100644 +index 2c807e8a579de5152f99c75ea272a6483a778f17..837cc21af01e691eb9e877479a67ce94d5b2bc06 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -114,6 +114,7 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -136,6 +136,7 @@ public class Connection extends SimpleChannelInboundHandler> { // Paper start - NetworkClient implementation public int protocolVersion; public java.net.InetSocketAddress virtualHost; @@ -23,7 +23,7 @@ index e5e4a5fb2c342a249344d207ffea4000cc998710..2d7f332910328cef616609dc4c89faca // Paper end public Connection(PacketFlow side) { -@@ -401,7 +402,7 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -430,7 +431,7 @@ public class Connection extends SimpleChannelInboundHandler> { } if (this.channel != null) { diff --git a/patches/server/0179-Implement-extended-PaperServerListPingEvent.patch b/patches/server/0180-Implement-extended-PaperServerListPingEvent.patch similarity index 98% rename from patches/server/0179-Implement-extended-PaperServerListPingEvent.patch rename to patches/server/0180-Implement-extended-PaperServerListPingEvent.patch index eea61eada1..c91d2d9333 100644 --- a/patches/server/0179-Implement-extended-PaperServerListPingEvent.patch +++ b/patches/server/0180-Implement-extended-PaperServerListPingEvent.patch @@ -181,7 +181,7 @@ index 0000000000000000000000000000000000000000..6b0bdc266109cdfb874f08bf74323603 + +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a654f345f55493816c239f296864c9f75ee5247a..76728fd630e103e8e3431c6b54ef944cb62b33fd 100644 +index ee27251b9decc00a0094611cf79644bd83bce5c7..52f5c91d71a8fc86d14c3c4c9e258b9cf70ad57b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -3,6 +3,9 @@ package net.minecraft.server; @@ -194,7 +194,7 @@ index a654f345f55493816c239f296864c9f75ee5247a..76728fd630e103e8e3431c6b54ef944c import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -@@ -1334,7 +1337,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop