From 79dd62ae620c082646b2f376451cceb52d3b4618 Mon Sep 17 00:00:00 2001 From: Jason <11360596+jpenilla@users.noreply.github.com> Date: Sun, 2 Jan 2022 11:06:08 -0800 Subject: [PATCH] Use AreaMap for per-player mob spawning (#7235) --- ...ement-optional-per-player-mob-spawns.patch | 373 ++++-------------- ...-PlayerChunkMap-adds-crashing-server.patch | 4 +- .../0393-Improved-Watchdog-Support.patch | 4 +- ...-Chunk-Post-Processing-deadlock-risk.patch | 8 +- ...g-Broken-behavior-of-PlayerJoinEvent.patch | 4 +- ...llocation-of-Vec3D-by-entity-tracker.patch | 4 +- ...erCloseEnoughForSpawning-to-use-dist.patch | 38 +- ...tance-map-to-optimise-entity-tracker.patch | 28 +- ...-incremental-chunk-and-player-saving.patch | 14 +- ...k-Priority-Urgency-System-for-Chunks.patch | 24 +- ...mprove-Chunk-Status-Transition-Speed.patch | 6 +- ...shield-blocking-on-dimension-change.patch} | 0 ...ce-map-update-when-spawning-disabled.patch | 19 - ...atch => 0591-add-DragonEggFormEvent.patch} | 0 ...Event.patch => 0592-EntityMoveEvent.patch} | 0 ...isable-pathfinding-updates-on-block.patch} | 0 ... 0594-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 ...port-for-hex-color-codes-in-console.patch} | 0 ...atch => 0601-Expose-Tracked-Players.patch} | 0 ...2-Remove-streams-from-SensorNearest.patch} | 0 ...er-exception-on-empty-JsonList-file.patch} | 0 ...GUI.patch => 0604-Improve-ServerGUI.patch} | 0 ...ure-plate-EntityInteractEvent-for-i.patch} | 0 ...606-fix-converting-txt-to-json-file.patch} | 0 ...atch => 0607-Add-worldborder-events.patch} | 0 ...=> 0608-added-PlayerNameEntityEvent.patch} | 0 ...grindstones-from-overstacking-items.patch} | 0 ...h => 0610-Add-recipe-to-cook-events.patch} | 0 ...patch => 0611-Add-Block-isValidTool.patch} | 0 ...using-signs-inside-spawn-protection.patch} | 0 ...ch => 0613-Implement-Keyed-on-World.patch} | 0 ...ternative-constructor-for-Rotations.patch} | 0 ...y-API.patch => 0615-Item-Rarity-API.patch} | 0 ...imer-for-Wandering-Traders-spawned-.patch} | 0 ...py-TESign-isEditable-from-snapshots.patch} | 0 ...d-item-when-player-has-disconnected.patch} | 0 ...elist-use-configurable-kick-message.patch} | 0 ...gnore-result-of-PlayerEditBookEvent.patch} | 0 ...21-Entity-load-save-limit-per-chunk.patch} | 0 ...block-falling-causing-client-desync.patch} | 0 ...tch => 0623-Expose-protocol-version.patch} | 0 ...nt-suggestion-tooltips-in-AsyncTabC.patch} | 0 ...ab-completions-for-brigadier-comman.patch} | 0 ...temConsumeEvent-cancelling-properly.patch} | 0 ...patch => 0627-Add-bypass-host-check.patch} | 0 ...0628-Set-area-affect-cloud-rotation.patch} | 0 ...add-isDeeplySleeping-to-HumanEntity.patch} | 0 ...ting-give-items-on-item-drop-cancel.patch} | 0 ...add-consumeFuel-to-FurnaceBurnEvent.patch} | 0 ...-set-drop-chance-to-EntityEquipment.patch} | 0 ...ix-PigZombieAngerEvent-cancellation.patch} | 0 ...-checkReach-check-for-Shulker-boxes.patch} | 0 ...ix-PlayerItemHeldEvent-firing-twice.patch} | 0 ... => 0636-Added-PlayerDeepSleepEvent.patch} | 0 ...ld-API.patch => 0637-More-World-API.patch} | 0 ... 0638-Added-PlayerBedFailEnterEvent.patch} | 0 ...-to-convert-between-Component-and-B.patch} | 0 ...n-acting-as-a-bed-respawn-from-the-.patch} | 0 ...acon-activation-deactivation-events.patch} | 0 ...-RespawnFlags-to-PlayerRespawnEvent.patch} | 0 ...dd-Channel-initialization-listeners.patch} | 0 ...mands-if-tab-completion-is-disabled.patch} | 0 ...> 0645-Add-more-WanderingTrader-API.patch} | 0 ...dd-EntityBlockStorage-clearEntities.patch} | 0 ...ssage-to-PlayerAdvancementDoneEvent.patch} | 0 ...address-to-AsyncPlayerPreLoginEvent.patch} | 0 ...close.patch => 0649-Inventory-close.patch} | 0 ...reateEvent-players-and-end-platform.patch} | 0 ...-in-sunlight-API-for-Phantoms-and-S.patch} | 0 ...=> 0652-Fix-CraftPotionBrewer-cache.patch} | 0 ...atch => 0653-Add-basic-Datapack-API.patch} | 0 ...ment-variable-to-disable-server-gui.patch} | 0 ...itions-to-PlayerGameModeChangeEvent.patch} | 0 ... => 0656-ItemStack-repair-check-API.patch} | 0 ....patch => 0657-More-Enchantment-API.patch} | 0 ...-and-optimise-world-force-upgrading.patch} | 0 ...PI.patch => 0659-Add-Mob-lookAt-API.patch} | 0 ...0660-Add-Unix-domain-socket-support.patch} | 0 ... => 0661-Add-EntityInsideBlockEvent.patch} | 0 ...62-Attributes-API-for-item-defaults.patch} | 0 ...ause-to-Weather-ThunderChangeEvents.patch} | 0 ...patch => 0664-More-Lidded-Block-API.patch} | 0 ...65-Limit-item-frame-cursors-on-maps.patch} | 0 ... => 0666-Add-PlayerKickEvent-causes.patch} | 0 ...0667-Add-PufferFishStateChangeEvent.patch} | 0 ...erBucketEmptyEvent-result-itemstack.patch} | 0 ...tedContainer-instead-of-ReentrantLo.patch} | 0 ...-to-fix-items-merging-through-walls.patch} | 0 ...h => 0671-Add-BellRevealRaiderEvent.patch} | 0 ... 0672-Fix-invulnerable-end-crystals.patch} | 0 ...73-Add-ElderGuardianAppearanceEvent.patch} | 0 ...0674-Fix-dangerous-end-portal-logic.patch} | 0 ...-Biome-Mob-Lookups-for-Mob-Spawning.patch} | 0 ...-Make-item-validations-configurable.patch} | 0 ...patch => 0677-Line-Of-Sight-Changes.patch} | 0 ... => 0678-add-per-world-spawn-limits.patch} | 0 ...plashEvent-for-water-splash-potions.patch} | 0 ... => 0680-Add-more-LimitedRegion-API.patch} | 0 ...layerDropItemEvent-using-wrong-item.patch} | 0 ...=> 0682-Missing-Entity-Behavior-API.patch} | 0 ...ect-for-book-edit-is-called-on-main.patch} | 0 ...of-Block-applyBoneMeal-always-being.patch} | 0 ...tChunkIfLoadedImmediately-in-places.patch} | 0 ...rom-signs-not-firing-command-events.patch} | 0 ...ch => 0687-Adds-PlayerArmSwingEvent.patch} | 0 ...-event-leave-message-not-being-sent.patch} | 0 ...-for-mobs-immune-to-default-effects.patch} | 0 ...correct-message-for-outdated-client.patch} | 0 ...-t-apply-cramming-damage-to-players.patch} | 0 ...d-timings-for-sensors-and-behaviors.patch} | 0 ...-bunch-of-missing-forceDrop-toggles.patch} | 0 ...inger-API.patch => 0694-Stinger-API.patch} | 0 ...cy-issue-with-empty-map-items-in-CB.patch} | 0 ... => 0696-Add-System.out-err-catcher.patch} | 0 ... => 0697-Fix-test-not-bootstrapping.patch} | 0 ...-to-contain-the-source-jars-in-stac.patch} | 0 ...-Improve-boat-collision-performance.patch} | 0 ...AFK-kick-while-watching-end-credits.patch} | 0 ...iting-of-comments-to-server.propert.patch} | 0 ...tch => 0702-Add-PlayerSetSpawnEvent.patch} | 0 ...rs-respect-inventory-max-stack-size.patch} | 0 ...ize-entity-tracker-passenger-checks.patch} | 0 ...-option-for-Piglins-guarding-chests.patch} | 0 ...=> 0706-Added-EntityDamageItemEvent.patch} | 0 ...timize-indirect-passenger-iteration.patch} | 0 ...osition-losing-precision-millions-o.patch} | 0 ...em-frame-map-cursor-update-interval.patch} | 0 ...Make-EntityUnleashEvent-cancellable.patch} | 2 +- ...711-Clear-bucket-NBT-after-dispense.patch} | 0 ...ct-despawn-rate-in-item-merge-check.patch} | 0 ...arget-without-changing-other-things.patch} | 0 ...ch => 0714-Add-BlockBreakBlockEvent.patch} | 0 ...revent-NBT-copy-in-smithing-recipes.patch} | 0 ...patch => 0716-More-CommandBlock-API.patch} | 0 ...-missing-team-sidebar-display-slots.patch} | 0 ...0718-Add-back-EntityPortalExitEvent.patch} | 0 ...-find-targets-for-lightning-strikes.patch} | 0 ... 0720-Get-entity-default-attributes.patch} | 0 ...d-API.patch => 0721-Left-handed-API.patch} | 0 ...=> 0722-Add-advancement-display-API.patch} | 0 ...3-Add-ItemFactory-getMonsterEgg-API.patch} | 0 ...tch => 0724-Add-critical-damage-API.patch} | 0 ...0725-Fix-issues-with-mob-conversion.patch} | 0 ...ollidable-methods-to-various-places.patch} | 0 ...-ram-API.patch => 0727-Goat-ram-API.patch} | 0 ...dd-API-for-resetting-a-single-score.patch} | 0 ...9-Add-Raw-Byte-Entity-Serialization.patch} | 0 ...30-Vanilla-command-permission-fixes.patch} | 0 ...-Make-CallbackExecutor-strict-again.patch} | 2 +- ...server-to-unload-chunks-at-request-.patch} | 2 +- ...logic-for-inventories-on-chunk-unlo.patch} | 0 ...e-recursion-for-chunkholder-updates.patch} | 0 ...ocking-from-state-access-in-UserCac.patch} | 0 ...hunks-refusing-to-unload-at-low-TPS.patch} | 4 +- ...et-level-changes-while-unloading-pl.patch} | 12 +- ...et-level-changes-when-updating-chun.patch} | 0 ...profile-lookups-to-worldgen-threads.patch} | 0 ...g-when-the-async-catcher-is-tripped.patch} | 0 ...per-mobcaps-and-paper-playermobcaps.patch} | 4 +- ...lls-removing-tickets-for-sync-loads.patch} | 2 +- ...tize-ResourceLocation-error-logging.patch} | 0 ...=> 0744-Optimise-general-POI-access.patch} | 0 ...rolled-flushing-for-network-manager.patch} | 0 ...tch => 0746-Add-more-async-catchers.patch} | 0 ...te-entity-bounding-box-lookup-calls.patch} | 0 ... 0748-Optimise-chunk-tick-iteration.patch} | 8 +- ...> 0749-Execute-chunk-tasks-mid-tick.patch} | 6 +- ... => 0750-Do-not-copy-visible-chunks.patch} | 22 +- ...ulate-regionfile-header-if-it-is-co.patch} | 0 ...ementation-for-blockstate-state-loo.patch} | 0 ...-more-information-in-watchdog-dumps.patch} | 0 ...lly-inline-methods-in-BlockPosition.patch} | 0 ... 0755-Distance-manager-tick-timings.patch} | 2 +- ...ler-threads-according-to-the-plugin.patch} | 0 ...-getChunkAt-has-inlined-logic-for-l.patch} | 0 ...h => 0758-Add-packet-limiter-config.patch} | 0 ... 0759-Lag-compensate-block-breaking.patch} | 0 ...Stem-registry-when-loading-default-.patch} | 0 ...our-chunk-data-off-disk-when-conver.patch} | 0 ...sh-calls-for-entity-tracker-packets.patch} | 4 +- ...-lookup-fluid-state-when-raytracing.patch} | 0 ...atch => 0764-Time-scoreboard-search.patch} | 0 ...packets-for-hard-colliding-entities.patch} | 0 ...6-Do-not-run-raytrace-logic-for-AIR.patch} | 0 ...rimise-map-impl-for-tracked-players.patch} | 4 +- ...imise-BlockSoil-nearby-water-lookup.patch} | 0 ...ition-of-entities-to-entity-ticklis.patch} | 0 ... 0770-Optimise-random-block-ticking.patch} | 0 ...1-Optimise-non-flush-packet-sending.patch} | 0 ...0772-Optimise-nearby-player-lookups.patch} | 36 +- ...=> 0773-Optimise-WorldServer-notify.patch} | 6 +- ...0774-Remove-streams-for-villager-AI.patch} | 0 ...> 0775-Rewrite-dataconverter-system.patch} | 0 ...city-compression-and-cipher-natives.patch} | 0 ...hread-worker-count-for-low-core-cou.patch} | 0 ...tity-loads-in-CraftChunk-getEntitie.patch} | 0 ...ifications-to-critical-entity-state.patch} | 0 ...ix-Bukkit-NamespacedKey-shenanigans.patch} | 0 ...ntory-not-closing-on-entity-removal.patch} | 0 ...rement-before-suggesting-root-nodes.patch} | 0 ...ServerboundCommandSuggestionPacket-.patch} | 0 ...nColor-on-tropical-fish-bucket-meta.patch} | 0 ...=> 0785-Ensure-valid-vehicle-status.patch} | 0 ...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 ...axolotls-from-buckets-as-persistent.patch} | 0 ...ous-menus-with-empty-level-accesses.patch} | 0 ...-O-threads-with-chunk-data-while-fl.patch} | 6 +- ...h => 0792-Preserve-overstacked-loot.patch} | 0 ...ate-head-rotation-in-missing-places.patch} | 0 ...unintended-light-block-manipulation.patch} | 0 ...piglins-and-hoglins-towards-mob-cap.patch} | 2 +- ...0796-Fix-CraftCriteria-defaults-map.patch} | 0 ...Fix-upstreams-block-state-factories.patch} | 0 ...ion-for-logging-player-ip-addresses.patch} | 0 ... => 0799-Configurable-feature-seeds.patch} | 0 ...pper-didnt-account-for-entity-sende.patch} | 0 ... 0801-Add-root-admin-user-detection.patch} | 0 ...ays-allow-item-changing-in-Fireball.patch} | 0 ...t-attempt-to-teleport-dead-entities.patch} | 0 ...pare-event-not-working-with-zero-xp.patch} | 0 ...ive-velocity-through-repeated-crits.patch} | 0 ...e-code-using-deprecated-for-removal.patch} | 0 ...ch => 0807-Rewrite-the-light-engine.patch} | 2 +- ...ochunk-light-sources-unless-it-is-m.patch} | 0 ...emoving-recipes-from-RecipeIterator.patch} | 0 ...versized-item-data-in-equipment-and.patch} | 0 ...e-unnecessary-itemmeta-from-clients.patch} | 0 ...ier-changing-growth-for-other-crops.patch} | 0 ...OpenersCounter-openCount-from-going.patch} | 0 ...0814-Add-PlayerItemFrameChangeEvent.patch} | 0 ...> 0815-Add-player-health-update-API.patch} | 0 ...tch => 0816-Optimize-HashMapPalette.patch} | 0 ...low-delegation-to-vanilla-chunk-gen.patch} | 0 ...ingle-and-multi-AABB-VoxelShapes-an.patch} | 0 ...n-checking-in-player-move-packet-ha.patch} | 0 ...ch => 0820-Actually-unload-POI-data.patch} | 12 +- ...-isSectionEmpty-int-and-optimize-Pa.patch} | 0 ...te-Log4j.patch => 0822-Update-Log4j.patch} | 0 ...patch => 0823-Add-more-Campfire-API.patch} | 0 ...n-leak-when-converting-pre-1.18-chu.patch} | 0 ...data-to-disk-if-it-serializes-witho.patch} | 0 ...26-Fix-tripwire-state-inconsistency.patch} | 0 ...uid-logging-on-Block-breakNaturally.patch} | 0 ...ard-CraftEntity-in-teleport-command.patch} | 0 ... => 0829-Improve-scoreboard-entries.patch} | 0 ...ch => 0830-Entity-powdered-snow-API.patch} | 0 ...-type-tags-suggestions-in-selectors.patch} | 0 ...0832-Add-API-for-item-entity-health.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 ...=> 0837-Fix-bees-aging-inside-hives.patch} | 0 ...le-API.patch => 0838-Bucketable-API.patch} | 0 ...layer-world-in-endPortalSoundRadius.patch} | 0 ...0840-Fix-riding-distance-statistics.patch} | 0 ...es.patch => 0841-Validate-usernames.patch} | 0 264 files changed, 207 insertions(+), 457 deletions(-) rename patches/server/{0591-Reset-shield-blocking-on-dimension-change.patch => 0590-Reset-shield-blocking-on-dimension-change.patch} (100%) delete mode 100644 patches/server/0590-Skip-distance-map-update-when-spawning-disabled.patch rename patches/server/{0592-add-DragonEggFormEvent.patch => 0591-add-DragonEggFormEvent.patch} (100%) rename patches/server/{0593-EntityMoveEvent.patch => 0592-EntityMoveEvent.patch} (100%) rename patches/server/{0594-added-option-to-disable-pathfinding-updates-on-block.patch => 0593-added-option-to-disable-pathfinding-updates-on-block.patch} (100%) rename patches/server/{0595-Inline-shift-direction-fields.patch => 0594-Inline-shift-direction-fields.patch} (100%) rename patches/server/{0596-Allow-adding-items-to-BlockDropItemEvent.patch => 0595-Allow-adding-items-to-BlockDropItemEvent.patch} (100%) rename patches/server/{0597-Add-getMainThreadExecutor-to-BukkitScheduler.patch => 0596-Add-getMainThreadExecutor-to-BukkitScheduler.patch} (100%) rename patches/server/{0598-living-entity-allow-attribute-registration.patch => 0597-living-entity-allow-attribute-registration.patch} (100%) rename patches/server/{0599-fix-dead-slime-setSize-invincibility.patch => 0598-fix-dead-slime-setSize-invincibility.patch} (100%) rename patches/server/{0600-Merchant-getRecipes-should-return-an-immutable-list.patch => 0599-Merchant-getRecipes-should-return-an-immutable-list.patch} (100%) rename patches/server/{0601-Add-support-for-hex-color-codes-in-console.patch => 0600-Add-support-for-hex-color-codes-in-console.patch} (100%) rename patches/server/{0602-Expose-Tracked-Players.patch => 0601-Expose-Tracked-Players.patch} (100%) rename patches/server/{0603-Remove-streams-from-SensorNearest.patch => 0602-Remove-streams-from-SensorNearest.patch} (100%) rename patches/server/{0604-Throw-proper-exception-on-empty-JsonList-file.patch => 0603-Throw-proper-exception-on-empty-JsonList-file.patch} (100%) rename patches/server/{0605-Improve-ServerGUI.patch => 0604-Improve-ServerGUI.patch} (100%) rename patches/server/{0606-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch => 0605-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch} (100%) rename patches/server/{0607-fix-converting-txt-to-json-file.patch => 0606-fix-converting-txt-to-json-file.patch} (100%) rename patches/server/{0608-Add-worldborder-events.patch => 0607-Add-worldborder-events.patch} (100%) rename patches/server/{0609-added-PlayerNameEntityEvent.patch => 0608-added-PlayerNameEntityEvent.patch} (100%) rename patches/server/{0610-Prevent-grindstones-from-overstacking-items.patch => 0609-Prevent-grindstones-from-overstacking-items.patch} (100%) rename patches/server/{0611-Add-recipe-to-cook-events.patch => 0610-Add-recipe-to-cook-events.patch} (100%) rename patches/server/{0612-Add-Block-isValidTool.patch => 0611-Add-Block-isValidTool.patch} (100%) rename patches/server/{0613-Allow-using-signs-inside-spawn-protection.patch => 0612-Allow-using-signs-inside-spawn-protection.patch} (100%) rename patches/server/{0614-Implement-Keyed-on-World.patch => 0613-Implement-Keyed-on-World.patch} (100%) rename patches/server/{0615-Add-fast-alternative-constructor-for-Rotations.patch => 0614-Add-fast-alternative-constructor-for-Rotations.patch} (100%) rename patches/server/{0616-Item-Rarity-API.patch => 0615-Item-Rarity-API.patch} (100%) rename patches/server/{0617-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch => 0616-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch} (100%) rename patches/server/{0618-copy-TESign-isEditable-from-snapshots.patch => 0617-copy-TESign-isEditable-from-snapshots.patch} (100%) rename patches/server/{0619-Drop-carried-item-when-player-has-disconnected.patch => 0618-Drop-carried-item-when-player-has-disconnected.patch} (100%) rename patches/server/{0620-forced-whitelist-use-configurable-kick-message.patch => 0619-forced-whitelist-use-configurable-kick-message.patch} (100%) rename patches/server/{0621-Don-t-ignore-result-of-PlayerEditBookEvent.patch => 0620-Don-t-ignore-result-of-PlayerEditBookEvent.patch} (100%) rename patches/server/{0622-Entity-load-save-limit-per-chunk.patch => 0621-Entity-load-save-limit-per-chunk.patch} (100%) rename patches/server/{0623-fix-cancelling-block-falling-causing-client-desync.patch => 0622-fix-cancelling-block-falling-causing-client-desync.patch} (100%) rename patches/server/{0624-Expose-protocol-version.patch => 0623-Expose-protocol-version.patch} (100%) rename patches/server/{0625-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch => 0624-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch} (100%) rename patches/server/{0626-Enhance-console-tab-completions-for-brigadier-comman.patch => 0625-Enhance-console-tab-completions-for-brigadier-comman.patch} (100%) rename patches/server/{0627-Fix-PlayerItemConsumeEvent-cancelling-properly.patch => 0626-Fix-PlayerItemConsumeEvent-cancelling-properly.patch} (100%) rename patches/server/{0628-Add-bypass-host-check.patch => 0627-Add-bypass-host-check.patch} (100%) rename patches/server/{0629-Set-area-affect-cloud-rotation.patch => 0628-Set-area-affect-cloud-rotation.patch} (100%) rename patches/server/{0630-add-isDeeplySleeping-to-HumanEntity.patch => 0629-add-isDeeplySleeping-to-HumanEntity.patch} (100%) rename patches/server/{0631-Fix-duplicating-give-items-on-item-drop-cancel.patch => 0630-Fix-duplicating-give-items-on-item-drop-cancel.patch} (100%) rename patches/server/{0632-add-consumeFuel-to-FurnaceBurnEvent.patch => 0631-add-consumeFuel-to-FurnaceBurnEvent.patch} (100%) rename patches/server/{0633-add-get-set-drop-chance-to-EntityEquipment.patch => 0632-add-get-set-drop-chance-to-EntityEquipment.patch} (100%) rename patches/server/{0634-fix-PigZombieAngerEvent-cancellation.patch => 0633-fix-PigZombieAngerEvent-cancellation.patch} (100%) rename patches/server/{0635-Fix-checkReach-check-for-Shulker-boxes.patch => 0634-Fix-checkReach-check-for-Shulker-boxes.patch} (100%) rename patches/server/{0636-fix-PlayerItemHeldEvent-firing-twice.patch => 0635-fix-PlayerItemHeldEvent-firing-twice.patch} (100%) rename patches/server/{0637-Added-PlayerDeepSleepEvent.patch => 0636-Added-PlayerDeepSleepEvent.patch} (100%) rename patches/server/{0638-More-World-API.patch => 0637-More-World-API.patch} (100%) rename patches/server/{0639-Added-PlayerBedFailEnterEvent.patch => 0638-Added-PlayerBedFailEnterEvent.patch} (100%) rename patches/server/{0640-Implement-methods-to-convert-between-Component-and-B.patch => 0639-Implement-methods-to-convert-between-Component-and-B.patch} (100%) rename patches/server/{0641-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch => 0640-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch} (100%) rename patches/server/{0642-Introduce-beacon-activation-deactivation-events.patch => 0641-Introduce-beacon-activation-deactivation-events.patch} (100%) rename patches/server/{0643-add-RespawnFlags-to-PlayerRespawnEvent.patch => 0642-add-RespawnFlags-to-PlayerRespawnEvent.patch} (100%) rename patches/server/{0644-Add-Channel-initialization-listeners.patch => 0643-Add-Channel-initialization-listeners.patch} (100%) rename patches/server/{0645-Send-empty-commands-if-tab-completion-is-disabled.patch => 0644-Send-empty-commands-if-tab-completion-is-disabled.patch} (100%) rename patches/server/{0646-Add-more-WanderingTrader-API.patch => 0645-Add-more-WanderingTrader-API.patch} (100%) rename patches/server/{0647-Add-EntityBlockStorage-clearEntities.patch => 0646-Add-EntityBlockStorage-clearEntities.patch} (100%) rename patches/server/{0648-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch => 0647-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch} (100%) rename patches/server/{0649-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch => 0648-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch} (100%) rename patches/server/{0650-Inventory-close.patch => 0649-Inventory-close.patch} (100%) rename patches/server/{0651-call-PortalCreateEvent-players-and-end-platform.patch => 0650-call-PortalCreateEvent-players-and-end-platform.patch} (100%) rename patches/server/{0652-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch => 0651-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch} (100%) rename patches/server/{0653-Fix-CraftPotionBrewer-cache.patch => 0652-Fix-CraftPotionBrewer-cache.patch} (100%) rename patches/server/{0654-Add-basic-Datapack-API.patch => 0653-Add-basic-Datapack-API.patch} (100%) rename patches/server/{0655-Add-environment-variable-to-disable-server-gui.patch => 0654-Add-environment-variable-to-disable-server-gui.patch} (100%) rename patches/server/{0656-additions-to-PlayerGameModeChangeEvent.patch => 0655-additions-to-PlayerGameModeChangeEvent.patch} (100%) rename patches/server/{0657-ItemStack-repair-check-API.patch => 0656-ItemStack-repair-check-API.patch} (100%) rename patches/server/{0658-More-Enchantment-API.patch => 0657-More-Enchantment-API.patch} (100%) rename patches/server/{0659-Fix-and-optimise-world-force-upgrading.patch => 0658-Fix-and-optimise-world-force-upgrading.patch} (100%) rename patches/server/{0660-Add-Mob-lookAt-API.patch => 0659-Add-Mob-lookAt-API.patch} (100%) rename patches/server/{0661-Add-Unix-domain-socket-support.patch => 0660-Add-Unix-domain-socket-support.patch} (100%) rename patches/server/{0662-Add-EntityInsideBlockEvent.patch => 0661-Add-EntityInsideBlockEvent.patch} (100%) rename patches/server/{0663-Attributes-API-for-item-defaults.patch => 0662-Attributes-API-for-item-defaults.patch} (100%) rename patches/server/{0664-Add-cause-to-Weather-ThunderChangeEvents.patch => 0663-Add-cause-to-Weather-ThunderChangeEvents.patch} (100%) rename patches/server/{0665-More-Lidded-Block-API.patch => 0664-More-Lidded-Block-API.patch} (100%) rename patches/server/{0666-Limit-item-frame-cursors-on-maps.patch => 0665-Limit-item-frame-cursors-on-maps.patch} (100%) rename patches/server/{0667-Add-PlayerKickEvent-causes.patch => 0666-Add-PlayerKickEvent-causes.patch} (100%) rename patches/server/{0668-Add-PufferFishStateChangeEvent.patch => 0667-Add-PufferFishStateChangeEvent.patch} (100%) rename patches/server/{0669-Fix-PlayerBucketEmptyEvent-result-itemstack.patch => 0668-Fix-PlayerBucketEmptyEvent-result-itemstack.patch} (100%) rename patches/server/{0670-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch => 0669-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch} (100%) rename patches/server/{0671-Add-option-to-fix-items-merging-through-walls.patch => 0670-Add-option-to-fix-items-merging-through-walls.patch} (100%) rename patches/server/{0672-Add-BellRevealRaiderEvent.patch => 0671-Add-BellRevealRaiderEvent.patch} (100%) rename patches/server/{0673-Fix-invulnerable-end-crystals.patch => 0672-Fix-invulnerable-end-crystals.patch} (100%) rename patches/server/{0674-Add-ElderGuardianAppearanceEvent.patch => 0673-Add-ElderGuardianAppearanceEvent.patch} (100%) rename patches/server/{0675-Fix-dangerous-end-portal-logic.patch => 0674-Fix-dangerous-end-portal-logic.patch} (100%) rename patches/server/{0676-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch => 0675-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch} (100%) rename patches/server/{0677-Make-item-validations-configurable.patch => 0676-Make-item-validations-configurable.patch} (100%) rename patches/server/{0678-Line-Of-Sight-Changes.patch => 0677-Line-Of-Sight-Changes.patch} (100%) rename patches/server/{0679-add-per-world-spawn-limits.patch => 0678-add-per-world-spawn-limits.patch} (100%) rename patches/server/{0680-Fix-PotionSplashEvent-for-water-splash-potions.patch => 0679-Fix-PotionSplashEvent-for-water-splash-potions.patch} (100%) rename patches/server/{0681-Add-more-LimitedRegion-API.patch => 0680-Add-more-LimitedRegion-API.patch} (100%) rename patches/server/{0682-Fix-PlayerDropItemEvent-using-wrong-item.patch => 0681-Fix-PlayerDropItemEvent-using-wrong-item.patch} (100%) rename patches/server/{0683-Missing-Entity-Behavior-API.patch => 0682-Missing-Entity-Behavior-API.patch} (100%) rename patches/server/{0684-Ensure-disconnect-for-book-edit-is-called-on-main.patch => 0683-Ensure-disconnect-for-book-edit-is-called-on-main.patch} (100%) rename patches/server/{0685-Fix-return-value-of-Block-applyBoneMeal-always-being.patch => 0684-Fix-return-value-of-Block-applyBoneMeal-always-being.patch} (100%) rename patches/server/{0686-Use-getChunkIfLoadedImmediately-in-places.patch => 0685-Use-getChunkIfLoadedImmediately-in-places.patch} (100%) rename patches/server/{0687-Fix-commands-from-signs-not-firing-command-events.patch => 0686-Fix-commands-from-signs-not-firing-command-events.patch} (100%) rename patches/server/{0688-Adds-PlayerArmSwingEvent.patch => 0687-Adds-PlayerArmSwingEvent.patch} (100%) rename patches/server/{0689-Fixes-kick-event-leave-message-not-being-sent.patch => 0688-Fixes-kick-event-leave-message-not-being-sent.patch} (100%) rename patches/server/{0690-Add-config-for-mobs-immune-to-default-effects.patch => 0689-Add-config-for-mobs-immune-to-default-effects.patch} (100%) rename patches/server/{0691-Fix-incorrect-message-for-outdated-client.patch => 0690-Fix-incorrect-message-for-outdated-client.patch} (100%) rename patches/server/{0692-Don-t-apply-cramming-damage-to-players.patch => 0691-Don-t-apply-cramming-damage-to-players.patch} (100%) rename patches/server/{0693-Rate-options-and-timings-for-sensors-and-behaviors.patch => 0692-Rate-options-and-timings-for-sensors-and-behaviors.patch} (100%) rename patches/server/{0694-Add-a-bunch-of-missing-forceDrop-toggles.patch => 0693-Add-a-bunch-of-missing-forceDrop-toggles.patch} (100%) rename patches/server/{0695-Stinger-API.patch => 0694-Stinger-API.patch} (100%) rename patches/server/{0696-Fix-incosistency-issue-with-empty-map-items-in-CB.patch => 0695-Fix-incosistency-issue-with-empty-map-items-in-CB.patch} (100%) rename patches/server/{0697-Add-System.out-err-catcher.patch => 0696-Add-System.out-err-catcher.patch} (100%) rename patches/server/{0698-Fix-test-not-bootstrapping.patch => 0697-Fix-test-not-bootstrapping.patch} (100%) rename patches/server/{0699-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch => 0698-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch} (100%) rename patches/server/{0700-Improve-boat-collision-performance.patch => 0699-Improve-boat-collision-performance.patch} (100%) rename patches/server/{0701-Prevent-AFK-kick-while-watching-end-credits.patch => 0700-Prevent-AFK-kick-while-watching-end-credits.patch} (100%) rename patches/server/{0702-Allow-skipping-writing-of-comments-to-server.propert.patch => 0701-Allow-skipping-writing-of-comments-to-server.propert.patch} (100%) rename patches/server/{0703-Add-PlayerSetSpawnEvent.patch => 0702-Add-PlayerSetSpawnEvent.patch} (100%) rename patches/server/{0704-Make-hoppers-respect-inventory-max-stack-size.patch => 0703-Make-hoppers-respect-inventory-max-stack-size.patch} (100%) rename patches/server/{0705-Optimize-entity-tracker-passenger-checks.patch => 0704-Optimize-entity-tracker-passenger-checks.patch} (100%) rename patches/server/{0706-Config-option-for-Piglins-guarding-chests.patch => 0705-Config-option-for-Piglins-guarding-chests.patch} (100%) rename patches/server/{0707-Added-EntityDamageItemEvent.patch => 0706-Added-EntityDamageItemEvent.patch} (100%) rename patches/server/{0708-Optimize-indirect-passenger-iteration.patch => 0707-Optimize-indirect-passenger-iteration.patch} (100%) rename patches/server/{0709-Fix-block-drops-position-losing-precision-millions-o.patch => 0708-Fix-block-drops-position-losing-precision-millions-o.patch} (100%) rename patches/server/{0710-Configurable-item-frame-map-cursor-update-interval.patch => 0709-Configurable-item-frame-map-cursor-update-interval.patch} (100%) rename patches/server/{0711-Make-EntityUnleashEvent-cancellable.patch => 0710-Make-EntityUnleashEvent-cancellable.patch} (96%) rename patches/server/{0712-Clear-bucket-NBT-after-dispense.patch => 0711-Clear-bucket-NBT-after-dispense.patch} (100%) rename patches/server/{0713-Respect-despawn-rate-in-item-merge-check.patch => 0712-Respect-despawn-rate-in-item-merge-check.patch} (100%) rename patches/server/{0714-Change-EnderEye-target-without-changing-other-things.patch => 0713-Change-EnderEye-target-without-changing-other-things.patch} (100%) rename patches/server/{0715-Add-BlockBreakBlockEvent.patch => 0714-Add-BlockBreakBlockEvent.patch} (100%) rename patches/server/{0716-Option-to-prevent-NBT-copy-in-smithing-recipes.patch => 0715-Option-to-prevent-NBT-copy-in-smithing-recipes.patch} (100%) rename patches/server/{0717-More-CommandBlock-API.patch => 0716-More-CommandBlock-API.patch} (100%) rename patches/server/{0718-Add-missing-team-sidebar-display-slots.patch => 0717-Add-missing-team-sidebar-display-slots.patch} (100%) rename patches/server/{0719-Add-back-EntityPortalExitEvent.patch => 0718-Add-back-EntityPortalExitEvent.patch} (100%) rename patches/server/{0720-Add-methods-to-find-targets-for-lightning-strikes.patch => 0719-Add-methods-to-find-targets-for-lightning-strikes.patch} (100%) rename patches/server/{0721-Get-entity-default-attributes.patch => 0720-Get-entity-default-attributes.patch} (100%) rename patches/server/{0722-Left-handed-API.patch => 0721-Left-handed-API.patch} (100%) rename patches/server/{0723-Add-advancement-display-API.patch => 0722-Add-advancement-display-API.patch} (100%) rename patches/server/{0724-Add-ItemFactory-getMonsterEgg-API.patch => 0723-Add-ItemFactory-getMonsterEgg-API.patch} (100%) rename patches/server/{0725-Add-critical-damage-API.patch => 0724-Add-critical-damage-API.patch} (100%) rename patches/server/{0726-Fix-issues-with-mob-conversion.patch => 0725-Fix-issues-with-mob-conversion.patch} (100%) rename patches/server/{0727-Add-isCollidable-methods-to-various-places.patch => 0726-Add-isCollidable-methods-to-various-places.patch} (100%) rename patches/server/{0728-Goat-ram-API.patch => 0727-Goat-ram-API.patch} (100%) rename patches/server/{0729-Add-API-for-resetting-a-single-score.patch => 0728-Add-API-for-resetting-a-single-score.patch} (100%) rename patches/server/{0730-Add-Raw-Byte-Entity-Serialization.patch => 0729-Add-Raw-Byte-Entity-Serialization.patch} (100%) rename patches/server/{0731-Vanilla-command-permission-fixes.patch => 0730-Vanilla-command-permission-fixes.patch} (100%) rename patches/server/{0732-Make-CallbackExecutor-strict-again.patch => 0731-Make-CallbackExecutor-strict-again.patch} (95%) rename patches/server/{0733-Do-not-allow-the-server-to-unload-chunks-at-request-.patch => 0732-Do-not-allow-the-server-to-unload-chunks-at-request-.patch} (92%) rename patches/server/{0734-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch => 0733-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch} (100%) rename patches/server/{0735-Correctly-handle-recursion-for-chunkholder-updates.patch => 0734-Correctly-handle-recursion-for-chunkholder-updates.patch} (100%) rename patches/server/{0736-Separate-lookup-locking-from-state-access-in-UserCac.patch => 0735-Separate-lookup-locking-from-state-access-in-UserCac.patch} (100%) rename patches/server/{0737-Fix-chunks-refusing-to-unload-at-low-TPS.patch => 0736-Fix-chunks-refusing-to-unload-at-low-TPS.patch} (88%) rename patches/server/{0738-Do-not-allow-ticket-level-changes-while-unloading-pl.patch => 0737-Do-not-allow-ticket-level-changes-while-unloading-pl.patch} (89%) rename patches/server/{0739-Do-not-allow-ticket-level-changes-when-updating-chun.patch => 0738-Do-not-allow-ticket-level-changes-when-updating-chun.patch} (100%) rename patches/server/{0740-Do-not-submit-profile-lookups-to-worldgen-threads.patch => 0739-Do-not-submit-profile-lookups-to-worldgen-threads.patch} (100%) rename patches/server/{0741-Log-when-the-async-catcher-is-tripped.patch => 0740-Log-when-the-async-catcher-is-tripped.patch} (100%) rename patches/server/{0742-Add-paper-mobcaps-and-paper-playermobcaps.patch => 0741-Add-paper-mobcaps-and-paper-playermobcaps.patch} (99%) rename patches/server/{0743-Prevent-unload-calls-removing-tickets-for-sync-loads.patch => 0742-Prevent-unload-calls-removing-tickets-for-sync-loads.patch} (98%) rename patches/server/{0744-Sanitize-ResourceLocation-error-logging.patch => 0743-Sanitize-ResourceLocation-error-logging.patch} (100%) rename patches/server/{0745-Optimise-general-POI-access.patch => 0744-Optimise-general-POI-access.patch} (100%) rename patches/server/{0746-Allow-controlled-flushing-for-network-manager.patch => 0745-Allow-controlled-flushing-for-network-manager.patch} (100%) rename patches/server/{0747-Add-more-async-catchers.patch => 0746-Add-more-async-catchers.patch} (100%) rename patches/server/{0748-Rewrite-entity-bounding-box-lookup-calls.patch => 0747-Rewrite-entity-bounding-box-lookup-calls.patch} (100%) rename patches/server/{0749-Optimise-chunk-tick-iteration.patch => 0748-Optimise-chunk-tick-iteration.patch} (95%) rename patches/server/{0750-Execute-chunk-tasks-mid-tick.patch => 0749-Execute-chunk-tasks-mid-tick.patch} (97%) rename patches/server/{0751-Do-not-copy-visible-chunks.patch => 0750-Do-not-copy-visible-chunks.patch} (94%) rename patches/server/{0752-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch => 0751-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch} (100%) rename patches/server/{0753-Custom-table-implementation-for-blockstate-state-loo.patch => 0752-Custom-table-implementation-for-blockstate-state-loo.patch} (100%) rename patches/server/{0754-Detail-more-information-in-watchdog-dumps.patch => 0753-Detail-more-information-in-watchdog-dumps.patch} (100%) rename patches/server/{0755-Manually-inline-methods-in-BlockPosition.patch => 0754-Manually-inline-methods-in-BlockPosition.patch} (100%) rename patches/server/{0756-Distance-manager-tick-timings.patch => 0755-Distance-manager-tick-timings.patch} (96%) rename patches/server/{0757-Name-craft-scheduler-threads-according-to-the-plugin.patch => 0756-Name-craft-scheduler-threads-according-to-the-plugin.patch} (100%) rename patches/server/{0758-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch => 0757-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch} (100%) rename patches/server/{0759-Add-packet-limiter-config.patch => 0758-Add-packet-limiter-config.patch} (100%) rename patches/server/{0760-Lag-compensate-block-breaking.patch => 0759-Lag-compensate-block-breaking.patch} (100%) rename patches/server/{0761-Use-correct-LevelStem-registry-when-loading-default-.patch => 0760-Use-correct-LevelStem-registry-when-loading-default-.patch} (100%) rename patches/server/{0762-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch => 0761-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch} (100%) rename patches/server/{0763-Consolidate-flush-calls-for-entity-tracker-packets.patch => 0762-Consolidate-flush-calls-for-entity-tracker-packets.patch} (93%) rename patches/server/{0764-Don-t-lookup-fluid-state-when-raytracing.patch => 0763-Don-t-lookup-fluid-state-when-raytracing.patch} (100%) rename patches/server/{0765-Time-scoreboard-search.patch => 0764-Time-scoreboard-search.patch} (100%) rename patches/server/{0766-Send-full-pos-packets-for-hard-colliding-entities.patch => 0765-Send-full-pos-packets-for-hard-colliding-entities.patch} (100%) rename patches/server/{0767-Do-not-run-raytrace-logic-for-AIR.patch => 0766-Do-not-run-raytrace-logic-for-AIR.patch} (100%) rename patches/server/{0768-Oprimise-map-impl-for-tracked-players.patch => 0767-Oprimise-map-impl-for-tracked-players.patch} (89%) rename patches/server/{0769-Optimise-BlockSoil-nearby-water-lookup.patch => 0768-Optimise-BlockSoil-nearby-water-lookup.patch} (100%) rename patches/server/{0770-Allow-removal-addition-of-entities-to-entity-ticklis.patch => 0769-Allow-removal-addition-of-entities-to-entity-ticklis.patch} (100%) rename patches/server/{0771-Optimise-random-block-ticking.patch => 0770-Optimise-random-block-ticking.patch} (100%) rename patches/server/{0772-Optimise-non-flush-packet-sending.patch => 0771-Optimise-non-flush-packet-sending.patch} (100%) rename patches/server/{0773-Optimise-nearby-player-lookups.patch => 0772-Optimise-nearby-player-lookups.patch} (94%) rename patches/server/{0774-Optimise-WorldServer-notify.patch => 0773-Optimise-WorldServer-notify.patch} (98%) rename patches/server/{0775-Remove-streams-for-villager-AI.patch => 0774-Remove-streams-for-villager-AI.patch} (100%) rename patches/server/{0776-Rewrite-dataconverter-system.patch => 0775-Rewrite-dataconverter-system.patch} (100%) rename patches/server/{0777-Use-Velocity-compression-and-cipher-natives.patch => 0776-Use-Velocity-compression-and-cipher-natives.patch} (100%) rename patches/server/{0778-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch => 0777-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch} (100%) rename patches/server/{0779-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch => 0778-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch} (100%) rename patches/server/{0780-Async-catch-modifications-to-critical-entity-state.patch => 0779-Async-catch-modifications-to-critical-entity-state.patch} (100%) rename patches/server/{0781-Fix-Bukkit-NamespacedKey-shenanigans.patch => 0780-Fix-Bukkit-NamespacedKey-shenanigans.patch} (100%) rename patches/server/{0782-Fix-merchant-inventory-not-closing-on-entity-removal.patch => 0781-Fix-merchant-inventory-not-closing-on-entity-removal.patch} (100%) rename patches/server/{0783-Check-requirement-before-suggesting-root-nodes.patch => 0782-Check-requirement-before-suggesting-root-nodes.patch} (100%) rename patches/server/{0784-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch => 0783-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch} (100%) rename patches/server/{0785-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch => 0784-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch} (100%) rename patches/server/{0786-Ensure-valid-vehicle-status.patch => 0785-Ensure-valid-vehicle-status.patch} (100%) rename patches/server/{0787-Prevent-softlocked-end-exit-portal-generation.patch => 0786-Prevent-softlocked-end-exit-portal-generation.patch} (100%) rename patches/server/{0788-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch => 0787-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch} (100%) rename patches/server/{0789-Don-t-log-debug-logging-being-disabled.patch => 0788-Don-t-log-debug-logging-being-disabled.patch} (100%) rename patches/server/{0790-Mark-fish-and-axolotls-from-buckets-as-persistent.patch => 0789-Mark-fish-and-axolotls-from-buckets-as-persistent.patch} (100%) rename patches/server/{0791-fix-various-menus-with-empty-level-accesses.patch => 0790-fix-various-menus-with-empty-level-accesses.patch} (100%) rename patches/server/{0792-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch => 0791-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch} (90%) rename patches/server/{0793-Preserve-overstacked-loot.patch => 0792-Preserve-overstacked-loot.patch} (100%) rename patches/server/{0794-Update-head-rotation-in-missing-places.patch => 0793-Update-head-rotation-in-missing-places.patch} (100%) rename patches/server/{0795-prevent-unintended-light-block-manipulation.patch => 0794-prevent-unintended-light-block-manipulation.patch} (100%) rename patches/server/{0796-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch => 0795-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch} (93%) rename patches/server/{0797-Fix-CraftCriteria-defaults-map.patch => 0796-Fix-CraftCriteria-defaults-map.patch} (100%) rename patches/server/{0798-Fix-upstreams-block-state-factories.patch => 0797-Fix-upstreams-block-state-factories.patch} (100%) rename patches/server/{0799-Add-config-option-for-logging-player-ip-addresses.patch => 0798-Add-config-option-for-logging-player-ip-addresses.patch} (100%) rename patches/server/{0800-Configurable-feature-seeds.patch => 0799-Configurable-feature-seeds.patch} (100%) rename patches/server/{0801-VanillaCommandWrapper-didnt-account-for-entity-sende.patch => 0800-VanillaCommandWrapper-didnt-account-for-entity-sende.patch} (100%) rename patches/server/{0802-Add-root-admin-user-detection.patch => 0801-Add-root-admin-user-detection.patch} (100%) rename patches/server/{0803-Always-allow-item-changing-in-Fireball.patch => 0802-Always-allow-item-changing-in-Fireball.patch} (100%) rename patches/server/{0804-don-t-attempt-to-teleport-dead-entities.patch => 0803-don-t-attempt-to-teleport-dead-entities.patch} (100%) rename patches/server/{0805-Fix-anvil-prepare-event-not-working-with-zero-xp.patch => 0804-Fix-anvil-prepare-event-not-working-with-zero-xp.patch} (100%) rename patches/server/{0806-Prevent-excessive-velocity-through-repeated-crits.patch => 0805-Prevent-excessive-velocity-through-repeated-crits.patch} (100%) rename patches/server/{0807-Remove-client-side-code-using-deprecated-for-removal.patch => 0806-Remove-client-side-code-using-deprecated-for-removal.patch} (100%) rename patches/server/{0808-Rewrite-the-light-engine.patch => 0807-Rewrite-the-light-engine.patch} (99%) rename patches/server/{0809-Always-parse-protochunk-light-sources-unless-it-is-m.patch => 0808-Always-parse-protochunk-light-sources-unless-it-is-m.patch} (100%) rename patches/server/{0810-Fix-removing-recipes-from-RecipeIterator.patch => 0809-Fix-removing-recipes-from-RecipeIterator.patch} (100%) rename patches/server/{0811-Prevent-sending-oversized-item-data-in-equipment-and.patch => 0810-Prevent-sending-oversized-item-data-in-equipment-and.patch} (100%) rename patches/server/{0812-Hide-unnecessary-itemmeta-from-clients.patch => 0811-Hide-unnecessary-itemmeta-from-clients.patch} (100%) rename patches/server/{0813-Fix-kelp-modifier-changing-growth-for-other-crops.patch => 0812-Fix-kelp-modifier-changing-growth-for-other-crops.patch} (100%) rename patches/server/{0814-Prevent-ContainerOpenersCounter-openCount-from-going.patch => 0813-Prevent-ContainerOpenersCounter-openCount-from-going.patch} (100%) rename patches/server/{0815-Add-PlayerItemFrameChangeEvent.patch => 0814-Add-PlayerItemFrameChangeEvent.patch} (100%) rename patches/server/{0816-Add-player-health-update-API.patch => 0815-Add-player-health-update-API.patch} (100%) rename patches/server/{0817-Optimize-HashMapPalette.patch => 0816-Optimize-HashMapPalette.patch} (100%) rename patches/server/{0818-Allow-delegation-to-vanilla-chunk-gen.patch => 0817-Allow-delegation-to-vanilla-chunk-gen.patch} (100%) rename patches/server/{0819-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch => 0818-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch} (100%) rename patches/server/{0820-Optimise-collision-checking-in-player-move-packet-ha.patch => 0819-Optimise-collision-checking-in-player-move-packet-ha.patch} (100%) rename patches/server/{0821-Actually-unload-POI-data.patch => 0820-Actually-unload-POI-data.patch} (97%) rename patches/server/{0822-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch => 0821-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch} (100%) rename patches/server/{0823-Update-Log4j.patch => 0822-Update-Log4j.patch} (100%) rename patches/server/{0824-Add-more-Campfire-API.patch => 0823-Add-more-Campfire-API.patch} (100%) rename patches/server/{0825-Fix-WorldGenRegion-leak-when-converting-pre-1.18-chu.patch => 0824-Fix-WorldGenRegion-leak-when-converting-pre-1.18-chu.patch} (100%) rename patches/server/{0826-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch => 0825-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch} (100%) rename patches/server/{0827-Fix-tripwire-state-inconsistency.patch => 0826-Fix-tripwire-state-inconsistency.patch} (100%) rename patches/server/{0828-Fix-fluid-logging-on-Block-breakNaturally.patch => 0827-Fix-fluid-logging-on-Block-breakNaturally.patch} (100%) rename patches/server/{0829-Forward-CraftEntity-in-teleport-command.patch => 0828-Forward-CraftEntity-in-teleport-command.patch} (100%) rename patches/server/{0830-Improve-scoreboard-entries.patch => 0829-Improve-scoreboard-entries.patch} (100%) rename patches/server/{0831-Entity-powdered-snow-API.patch => 0830-Entity-powdered-snow-API.patch} (100%) rename patches/server/{0832-Fix-entity-type-tags-suggestions-in-selectors.patch => 0831-Fix-entity-type-tags-suggestions-in-selectors.patch} (100%) rename patches/server/{0833-Add-API-for-item-entity-health.patch => 0832-Add-API-for-item-entity-health.patch} (100%) rename patches/server/{0834-Configurable-max-block-light-for-monster-spawning.patch => 0833-Configurable-max-block-light-for-monster-spawning.patch} (100%) rename patches/server/{0835-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch => 0834-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch} (100%) rename patches/server/{0836-Load-effect-amplifiers-greater-than-127-correctly.patch => 0835-Load-effect-amplifiers-greater-than-127-correctly.patch} (100%) rename patches/server/{0837-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch => 0836-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch} (100%) rename patches/server/{0838-Fix-bees-aging-inside-hives.patch => 0837-Fix-bees-aging-inside-hives.patch} (100%) rename patches/server/{0839-Bucketable-API.patch => 0838-Bucketable-API.patch} (100%) rename patches/server/{0840-Check-player-world-in-endPortalSoundRadius.patch => 0839-Check-player-world-in-endPortalSoundRadius.patch} (100%) rename patches/server/{0841-Fix-riding-distance-statistics.patch => 0840-Fix-riding-distance-statistics.patch} (100%) rename patches/server/{0842-Validate-usernames.patch => 0841-Validate-usernames.patch} (100%) diff --git a/patches/server/0364-implement-optional-per-player-mob-spawns.patch b/patches/server/0364-implement-optional-per-player-mob-spawns.patch index f35f18e4a1..4dce066627 100644 --- a/patches/server/0364-implement-optional-per-player-mob-spawns.patch +++ b/patches/server/0364-implement-optional-per-player-mob-spawns.patch @@ -4,26 +4,6 @@ Date: Mon, 19 Aug 2019 01:27:58 +0500 Subject: [PATCH] implement optional per player mob spawns -diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java -index fe79c0add4f7cb18d487c5bb9415c40c5b551ea2..8d9ddad1879e7616d980ca70de8aecacaa86db35 100644 ---- a/src/main/java/co/aikar/timings/WorldTimingsHandler.java -+++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java -@@ -57,6 +57,7 @@ public class WorldTimingsHandler { - - - public final Timing miscMobSpawning; -+ public final Timing playerMobDistanceMapUpdate; - - public final Timing poiUnload; - public final Timing chunkUnload; -@@ -121,6 +122,7 @@ public class WorldTimingsHandler { - - - miscMobSpawning = Timings.ofSafe(name + "Mob spawning - Misc"); -+ playerMobDistanceMapUpdate = Timings.ofSafe(name + "Per Player Mob Spawning - Distance Map Update"); - - poiUnload = Timings.ofSafe(name + "Chunk unload - POI"); - chunkUnload = Timings.ofSafe(name + "Chunk unload - Chunk"); diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java index 619f5c11ae8e21b060b52b60d681db6dd9cb5816..88d140a03b6f28070b2f78588ee5ce4d5ac3cf0f 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -41,264 +21,6 @@ index 619f5c11ae8e21b060b52b60d681db6dd9cb5816..88d140a03b6f28070b2f78588ee5ce4d + perPlayerMobSpawns = getBoolean("per-player-mob-spawns", true); + } } -diff --git a/src/main/java/com/destroystokyo/paper/util/PlayerMobDistanceMap.java b/src/main/java/com/destroystokyo/paper/util/PlayerMobDistanceMap.java -new file mode 100644 -index 0000000000000000000000000000000000000000..72063ba7fb0d04594043cb07034590d597c3d77e ---- /dev/null -+++ b/src/main/java/com/destroystokyo/paper/util/PlayerMobDistanceMap.java -@@ -0,0 +1,252 @@ -+package com.destroystokyo.paper.util; -+ -+import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap; -+import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; -+import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; -+import java.util.List; -+import java.util.Map; -+import net.minecraft.core.SectionPos; -+import net.minecraft.server.level.ServerPlayer; -+import net.minecraft.world.level.ChunkPos; -+import org.spigotmc.AsyncCatcher; -+import java.util.HashMap; -+ -+/** @author Spottedleaf */ -+public final class PlayerMobDistanceMap { -+ -+ private static final PooledHashSets.PooledObjectLinkedOpenHashSet EMPTY_SET = new PooledHashSets.PooledObjectLinkedOpenHashSet<>(); -+ -+ private final Map players = new HashMap<>(); -+ // we use linked for better iteration. -+ private final Long2ObjectOpenHashMap> playerMap = new Long2ObjectOpenHashMap<>(32, 0.5f); -+ private int viewDistance; -+ -+ private final PooledHashSets pooledHashSets = new PooledHashSets<>(); -+ -+ public PooledHashSets.PooledObjectLinkedOpenHashSet getPlayersInRange(final ChunkPos chunkPos) { -+ return this.getPlayersInRange(chunkPos.x, chunkPos.z); -+ } -+ -+ public PooledHashSets.PooledObjectLinkedOpenHashSet getPlayersInRange(final int chunkX, final int chunkZ) { -+ return this.playerMap.getOrDefault(ChunkPos.asLong(chunkX, chunkZ), EMPTY_SET); -+ } -+ -+ public void update(final List currentPlayers, final int newViewDistance) { -+ AsyncCatcher.catchOp("Distance map update"); -+ final ObjectLinkedOpenHashSet gone = new ObjectLinkedOpenHashSet<>(this.players.keySet()); -+ -+ final int oldViewDistance = this.viewDistance; -+ this.viewDistance = newViewDistance; -+ -+ for (final ServerPlayer player : currentPlayers) { -+ if (player.isSpectator() || !player.affectsSpawning) { -+ continue; // will be left in 'gone' (or not added at all) -+ } -+ -+ gone.remove(player); -+ -+ final SectionPos newPosition = player.getLastSectionPos(); -+ final SectionPos oldPosition = this.players.put(player, newPosition); -+ -+ if (oldPosition == null) { -+ this.addNewPlayer(player, newPosition, newViewDistance); -+ } else { -+ this.updatePlayer(player, oldPosition, newPosition, oldViewDistance, newViewDistance); -+ } -+ //this.validatePlayer(player, newViewDistance); // debug only -+ } -+ -+ for (final ServerPlayer player : gone) { -+ final SectionPos oldPosition = this.players.remove(player); -+ if (oldPosition != null) { -+ this.removePlayer(player, oldPosition, oldViewDistance); -+ } -+ } -+ } -+ -+ // expensive op, only for debug -+ private void validatePlayer(final ServerPlayer player, final int viewDistance) { -+ int entiesGot = 0; -+ int expectedEntries = (2 * viewDistance + 1); -+ expectedEntries *= expectedEntries; -+ -+ final SectionPos currPosition = player.getLastSectionPos(); -+ -+ final int centerX = currPosition.getX(); -+ final int centerZ = currPosition.getZ(); -+ -+ for (final Long2ObjectLinkedOpenHashMap.Entry> entry : this.playerMap.long2ObjectEntrySet()) { -+ final long key = entry.getLongKey(); -+ final PooledHashSets.PooledObjectLinkedOpenHashSet map = entry.getValue(); -+ -+ if (map.referenceCount == 0) { -+ throw new IllegalStateException("Invalid map"); -+ } -+ -+ if (map.set.contains(player)) { -+ ++entiesGot; -+ -+ final int chunkX = ChunkPos.getX(key); -+ final int chunkZ = ChunkPos.getZ(key); -+ -+ final int dist = Math.max(Math.abs(chunkX - centerX), Math.abs(chunkZ - centerZ)); -+ -+ if (dist > viewDistance) { -+ throw new IllegalStateException("Expected view distance " + viewDistance + ", got " + dist); -+ } -+ } -+ } -+ -+ if (entiesGot != expectedEntries) { -+ throw new IllegalStateException("Expected " + expectedEntries + ", got " + entiesGot); -+ } -+ } -+ -+ private void addPlayerTo(final ServerPlayer player, final int chunkX, final int chunkZ) { -+ this.playerMap.compute(ChunkPos.asLong(chunkX, chunkZ), (final Long key, final PooledHashSets.PooledObjectLinkedOpenHashSet players) -> { -+ if (players == null) { -+ return player.cachedSingleMobDistanceMap; -+ } else { -+ return PlayerMobDistanceMap.this.pooledHashSets.findMapWith(players, player); -+ } -+ }); -+ } -+ -+ private void removePlayerFrom(final ServerPlayer player, final int chunkX, final int chunkZ) { -+ this.playerMap.compute(ChunkPos.asLong(chunkX, chunkZ), (final Long keyInMap, final PooledHashSets.PooledObjectLinkedOpenHashSet players) -> { -+ return PlayerMobDistanceMap.this.pooledHashSets.findMapWithout(players, player); // rets null instead of an empty map -+ }); -+ } -+ -+ private void updatePlayer(final ServerPlayer player, final SectionPos oldPosition, final SectionPos newPosition, final int oldViewDistance, final int newViewDistance) { -+ final int toX = newPosition.getX(); -+ final int toZ = newPosition.getZ(); -+ final int fromX = oldPosition.getX(); -+ final int fromZ = oldPosition.getZ(); -+ -+ final int dx = toX - fromX; -+ final int dz = toZ - fromZ; -+ -+ final int totalX = Math.abs(fromX - toX); -+ final int totalZ = Math.abs(fromZ - toZ); -+ -+ if (Math.max(totalX, totalZ) > (2 * oldViewDistance)) { -+ // teleported? -+ this.removePlayer(player, oldPosition, oldViewDistance); -+ this.addNewPlayer(player, newPosition, newViewDistance); -+ return; -+ } -+ -+ // x axis is width -+ // z axis is height -+ // right refers to the x axis of where we moved -+ // top refers to the z axis of where we moved -+ -+ if (oldViewDistance == newViewDistance) { -+ // same view distance -+ -+ // used for relative positioning -+ final int up = 1 | (dz >> (Integer.SIZE - 1)); // 1 if dz >= 0, -1 otherwise -+ final int right = 1 | (dx >> (Integer.SIZE - 1)); // 1 if dx >= 0, -1 otherwise -+ -+ // The area excluded by overlapping the two view distance squares creates four rectangles: -+ // Two on the left, and two on the right. The ones on the left we consider the "removed" section -+ // and on the right the "added" section. -+ // https://i.imgur.com/MrnOBgI.png is a reference image. Note that the outside border is not actually -+ // exclusive to the regions they surround. -+ -+ // 4 points of the rectangle -+ int maxX; // exclusive -+ int minX; // inclusive -+ int maxZ; // exclusive -+ int minZ; // inclusive -+ -+ if (dx != 0) { -+ // handle right addition -+ -+ maxX = toX + (oldViewDistance * right) + right; // exclusive -+ minX = fromX + (oldViewDistance * right) + right; // inclusive -+ maxZ = fromZ + (oldViewDistance * up) + up; // exclusive -+ minZ = toZ - (oldViewDistance * up); // inclusive -+ -+ for (int currX = minX; currX != maxX; currX += right) { -+ for (int currZ = minZ; currZ != maxZ; currZ += up) { -+ this.addPlayerTo(player, currX, currZ); -+ } -+ } -+ } -+ -+ if (dz != 0) { -+ // handle up addition -+ -+ maxX = toX + (oldViewDistance * right) + right; // exclusive -+ minX = toX - (oldViewDistance * right); // inclusive -+ maxZ = toZ + (oldViewDistance * up) + up; // exclusive -+ minZ = fromZ + (oldViewDistance * up) + up; // inclusive -+ -+ for (int currX = minX; currX != maxX; currX += right) { -+ for (int currZ = minZ; currZ != maxZ; currZ += up) { -+ this.addPlayerTo(player, currX, currZ); -+ } -+ } -+ } -+ -+ if (dx != 0) { -+ // handle left removal -+ -+ maxX = toX - (oldViewDistance * right); // exclusive -+ minX = fromX - (oldViewDistance * right); // inclusive -+ maxZ = fromZ + (oldViewDistance * up) + up; // exclusive -+ minZ = toZ - (oldViewDistance * up); // inclusive -+ -+ for (int currX = minX; currX != maxX; currX += right) { -+ for (int currZ = minZ; currZ != maxZ; currZ += up) { -+ this.removePlayerFrom(player, currX, currZ); -+ } -+ } -+ } -+ -+ if (dz != 0) { -+ // handle down removal -+ -+ maxX = fromX + (oldViewDistance * right) + right; // exclusive -+ minX = fromX - (oldViewDistance * right); // inclusive -+ maxZ = toZ - (oldViewDistance * up); // exclusive -+ minZ = fromZ - (oldViewDistance * up); // inclusive -+ -+ for (int currX = minX; currX != maxX; currX += right) { -+ for (int currZ = minZ; currZ != maxZ; currZ += up) { -+ this.removePlayerFrom(player, currX, currZ); -+ } -+ } -+ } -+ } else { -+ // different view distance -+ // for now :) -+ this.removePlayer(player, oldPosition, oldViewDistance); -+ this.addNewPlayer(player, newPosition, newViewDistance); -+ } -+ } -+ -+ private void removePlayer(final ServerPlayer player, final SectionPos position, final int viewDistance) { -+ final int x = position.getX(); -+ final int z = position.getZ(); -+ -+ for (int xoff = -viewDistance; xoff <= viewDistance; ++xoff) { -+ for (int zoff = -viewDistance; zoff <= viewDistance; ++zoff) { -+ this.removePlayerFrom(player, x + xoff, z + zoff); -+ } -+ } -+ } -+ -+ private void addNewPlayer(final ServerPlayer player, final SectionPos position, final int viewDistance) { -+ final int x = position.getX(); -+ final int z = position.getZ(); -+ -+ for (int xoff = -viewDistance; xoff <= viewDistance; ++xoff) { -+ for (int zoff = -viewDistance; zoff <= viewDistance; ++zoff) { -+ this.addPlayerTo(player, x + xoff, z + zoff); -+ } -+ } -+ } -+} diff --git a/src/main/java/com/destroystokyo/paper/util/PooledHashSets.java b/src/main/java/com/destroystokyo/paper/util/PooledHashSets.java new file mode 100644 index 0000000000000000000000000000000000000000..11de56afaf059b00fa5bec293516bcdce7c4b2b9 @@ -547,26 +269,58 @@ index 0000000000000000000000000000000000000000..11de56afaf059b00fa5bec293516bcdc + } +} diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 0c82b270c7095c7e4666a8078ecc7142503795c4..0583d7ee24f694fbf5138dfae9f7b8c8e4225ab3 100644 +index 0c82b270c7095c7e4666a8078ecc7142503795c4..2d7f0eb7df62d1c26ccf19cf61595227e19aa562 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -151,6 +151,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider private final Long2ByteMap chunkTypeCache; private final Queue unloadQueue; int viewDistance; -+ public final com.destroystokyo.paper.util.PlayerMobDistanceMap playerMobDistanceMap; // Paper ++ public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobDistanceMap; // Paper // CraftBukkit start - recursion-safe executor for Chunk loadCallback() and unloadCallback() public final CallbackExecutor callbackExecutor = new CallbackExecutor(); -@@ -263,6 +264,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -180,16 +181,31 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + int chunkX = MCUtil.getChunkCoordinate(player.getX()); + int chunkZ = MCUtil.getChunkCoordinate(player.getZ()); + // Note: players need to be explicitly added to distance maps before they can be updated ++ // Paper start - per player mob spawning ++ if (this.playerMobDistanceMap != null) { ++ this.playerMobDistanceMap.add(player, chunkX, chunkZ, this.distanceManager.getSimulationDistance()); ++ } ++ // Paper end - per player mob spawning + } + + void removePlayerFromDistanceMaps(ServerPlayer player) { + ++ // Paper start - per player mob spawning ++ if (this.playerMobDistanceMap != null) { ++ this.playerMobDistanceMap.remove(player); ++ } ++ // Paper end - per player mob spawning + } + + void updateMaps(ServerPlayer player) { + int chunkX = MCUtil.getChunkCoordinate(player.getX()); + int chunkZ = MCUtil.getChunkCoordinate(player.getZ()); + // Note: players need to be explicitly added to distance maps before they can be updated ++ // Paper start - per player mob spawning ++ if (this.playerMobDistanceMap != null) { ++ this.playerMobDistanceMap.update(player, chunkX, chunkZ, this.distanceManager.getSimulationDistance()); ++ } ++ // Paper end - per player mob spawning + } + // Paper end + // Paper start +@@ -263,6 +279,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.dataRegionManager = new io.papermc.paper.chunk.SingleThreadChunkRegionManager(this.level, 2, (1.0 / 3.0), 1, 6, "Data", DataRegionData::new, DataRegionSectionData::new); this.regionManagers.add(this.dataRegionManager); // Paper end -+ this.playerMobDistanceMap = this.level.paperConfig.perPlayerMobSpawns ? new com.destroystokyo.paper.util.PlayerMobDistanceMap() : null; // Paper ++ this.playerMobDistanceMap = this.level.paperConfig.perPlayerMobSpawns ? new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets) : null; // Paper } protected ChunkGenerator generator() { -@@ -280,6 +282,25 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -280,6 +297,31 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider }); } @@ -575,11 +329,17 @@ index 0c82b270c7095c7e4666a8078ecc7142503795c4..0583d7ee24f694fbf5138dfae9f7b8c8 + if (!this.level.paperConfig.perPlayerMobSpawns) { + return; + } -+ int chunkX = (int)Math.floor(entity.getX()) >> 4; -+ int chunkZ = (int)Math.floor(entity.getZ()) >> 4; + int index = entity.getType().getCategory().ordinal(); + -+ for (ServerPlayer player : this.playerMobDistanceMap.getPlayersInRange(chunkX, chunkZ)) { ++ final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet inRange = this.playerMobDistanceMap.getObjectsInRange(entity.chunkPosition()); ++ if (inRange == null) { ++ return; ++ } ++ final Object[] backingSet = inRange.getBackingSet(); ++ for (int i = 0; i < backingSet.length; i++) { ++ if (!(backingSet[i] instanceof final ServerPlayer player)) { ++ continue; ++ } + ++player.mobCounts[index]; + } + } @@ -610,21 +370,17 @@ index f0dac1f596911eb2109192ef16a619f8ae71d1f7..07b616d9d7cde77c001f5c627daef073 this.naturalSpawnChunkCounter.runAllUpdates(); return this.naturalSpawnChunkCounter.chunks.size(); diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 7b391d6ab84eeaed7bdd27ea70d5e3f9690a0abf..d9405456f61b954f9b6fa2fa7939fc3a36ec6fc6 100644 +index 7b391d6ab84eeaed7bdd27ea70d5e3f9690a0abf..0d380bba07c5c7b6b25fa2ce554418ef8ba9fdb1 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -916,7 +916,22 @@ public class ServerChunkCache extends ChunkSource { +@@ -916,7 +916,18 @@ public class ServerChunkCache extends ChunkSource { gameprofilerfiller.push("naturalSpawnCount"); this.level.timings.countNaturalMobs.startTiming(); // Paper - timings int l = this.distanceManager.getNaturalSpawnChunkCount(); - NaturalSpawner.SpawnState spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, new LocalMobCapCalculator(this.chunkMap)); + // Paper start - per player mob spawning + NaturalSpawner.SpawnState spawnercreature_d; // moved down -+ if (this.chunkMap.playerMobDistanceMap != null) { -+ // update distance map -+ this.level.timings.playerMobDistanceMapUpdate.startTiming(); -+ this.chunkMap.playerMobDistanceMap.update(this.level.players, this.distanceManager.getSimulationDistance()); -+ this.level.timings.playerMobDistanceMapUpdate.stopTiming(); ++ if ((this.spawnFriendlies || this.spawnEnemies) && this.chunkMap.playerMobDistanceMap != null) { // don't count mobs when animals and monsters are disabled + // re-set mob counts + for (ServerPlayer player : this.level.players) { + Arrays.fill(player.mobCounts, 0); @@ -662,7 +418,7 @@ index b193f8dfbe7b61c919ad5eb452d29885982e25e4..01b9edc8aaf472650f171f1b88229807 // Yes, this doesn't match Vanilla, but it's the best we can do for now. diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc267758df10ed 100644 +index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..c0fb5d445ed18fbf52df2be754eab0d8fb6e9239 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -65,7 +65,13 @@ public final class NaturalSpawner { @@ -684,7 +440,7 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 } - if (entity instanceof Mob) { -+ if (localmobcapcalculator != null && entity instanceof Mob) { ++ if (localmobcapcalculator != null && entity instanceof Mob) { // Paper localmobcapcalculator.addMob(chunk.getPos(), enumcreaturetype); } @@ -697,7 +453,7 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 }); } } -@@ -169,13 +180,30 @@ public final class NaturalSpawner { +@@ -169,13 +180,37 @@ public final class NaturalSpawner { continue; } @@ -709,8 +465,15 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 + + if (world.paperConfig.perPlayerMobSpawns) { + int minDiff = Integer.MAX_VALUE; -+ for (net.minecraft.server.level.ServerPlayer entityplayer : world.getChunkSource().chunkMap.playerMobDistanceMap.getPlayersInRange(chunk.getPos())) { -+ minDiff = Math.min(limit - world.getChunkSource().chunkMap.getMobCountNear(entityplayer, enumcreaturetype), minDiff); ++ final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet inRange = world.getChunkSource().chunkMap.playerMobDistanceMap.getObjectsInRange(chunk.getPos()); ++ if (inRange != null) { ++ final Object[] backingSet = inRange.getBackingSet(); ++ for (int k = 0; k < backingSet.length; k++) { ++ if (!(backingSet[k] instanceof final net.minecraft.server.level.ServerPlayer player)) { ++ continue; ++ } ++ minDiff = Math.min(limit - world.getChunkSource().chunkMap.getMobCountNear(player, enumcreaturetype), minDiff); ++ } + } + difference = (minDiff == Integer.MAX_VALUE) ? 0 : minDiff; + } @@ -730,7 +493,7 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 } } -@@ -183,12 +211,18 @@ public final class NaturalSpawner { +@@ -183,12 +218,18 @@ public final class NaturalSpawner { world.getProfiler().pop(); } @@ -750,7 +513,7 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 } @VisibleForDebug -@@ -199,15 +233,21 @@ public final class NaturalSpawner { +@@ -199,15 +240,21 @@ public final class NaturalSpawner { }); } @@ -773,7 +536,7 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 int k = 0; while (k < 3) { -@@ -249,14 +289,14 @@ public final class NaturalSpawner { +@@ -249,14 +296,14 @@ public final class NaturalSpawner { // Paper start Boolean doSpawning = isValidSpawnPostitionForType(world, group, structuremanager, chunkgenerator, biomesettingsmobs_c, blockposition_mutableblockposition, d2); if (doSpawning == null) { @@ -790,7 +553,7 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 } entityinsentient.moveTo(d0, (double) i, d1, world.random.nextFloat() * 360.0F, 0.0F); -@@ -268,10 +308,15 @@ public final class NaturalSpawner { +@@ -268,10 +315,15 @@ public final class NaturalSpawner { ++j; ++k1; runner.run(entityinsentient, chunk); @@ -808,7 +571,7 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 } if (entityinsentient.isMaxGroupSizeReached(k1)) { -@@ -293,6 +338,7 @@ public final class NaturalSpawner { +@@ -293,6 +345,7 @@ public final class NaturalSpawner { } } @@ -816,7 +579,7 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 } private static boolean isRightDistanceToPlayerAndSpawnPoint(ServerLevel world, ChunkAccess chunk, BlockPos.MutableBlockPos pos, double squaredDistance) { -@@ -572,7 +618,7 @@ public final class NaturalSpawner { +@@ -572,7 +625,7 @@ public final class NaturalSpawner { MobCategory enumcreaturetype = entitytypes.getCategory(); this.mobCategoryCounts.addTo(enumcreaturetype, 1); @@ -825,7 +588,7 @@ index 6f63f471c2c9a3b85c6fc92bdee31a5ff9714ff5..3a9e20bdf445c019e60a814ea6fc2677 } public int getSpawnableChunkCount() { -@@ -588,6 +634,7 @@ public final class NaturalSpawner { +@@ -588,6 +641,7 @@ public final class NaturalSpawner { int i = limit * this.spawnableChunkCount / NaturalSpawner.MAGIC_NUMBER; // CraftBukkit end diff --git a/patches/server/0387-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch b/patches/server/0387-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch index 47185d77fc..b14e489690 100644 --- a/patches/server/0387-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch +++ b/patches/server/0387-Prevent-Double-PlayerChunkMap-adds-crashing-server.patch @@ -7,10 +7,10 @@ Suspected case would be around the technique used in .stopRiding Stack will identify any causer of this and warn instead of crashing. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 0583d7ee24f694fbf5138dfae9f7b8c8e4225ab3..27c304d66ecf0bb8d7b5b4343ca207880e14711b 100644 +index 2d7f0eb7df62d1c26ccf19cf61595227e19aa562..ed4b4c3d3d991716078d5f008bf4665e76b30f33 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1539,6 +1539,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1560,6 +1560,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public void addEntity(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity track"); // Spigot diff --git a/patches/server/0393-Improved-Watchdog-Support.patch b/patches/server/0393-Improved-Watchdog-Support.patch index 42b646feff..10a6501213 100644 --- a/patches/server/0393-Improved-Watchdog-Support.patch +++ b/patches/server/0393-Improved-Watchdog-Support.patch @@ -262,10 +262,10 @@ index 049eb5693dc98e1d0ec3bd88c73a41fdb2f59bff..0716aaf29f9d76240a0de4ca02daba44 } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 27c304d66ecf0bb8d7b5b4343ca207880e14711b..6f851c24a67d1b3a349790b0d60f45b23ff93bc6 100644 +index ed4b4c3d3d991716078d5f008bf4665e76b30f33..4cb7e63b433b8d4a02c2d193a2596e51ddab2779 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -514,6 +514,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -535,6 +535,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider MutableBoolean mutableboolean = new MutableBoolean(); do { diff --git a/patches/server/0403-Fix-Chunk-Post-Processing-deadlock-risk.patch b/patches/server/0403-Fix-Chunk-Post-Processing-deadlock-risk.patch index d1cd3c0860..df2020bead 100644 --- a/patches/server/0403-Fix-Chunk-Post-Processing-deadlock-risk.patch +++ b/patches/server/0403-Fix-Chunk-Post-Processing-deadlock-risk.patch @@ -25,7 +25,7 @@ This successfully fixed a reoccurring and highly reproduceable crash for heightmaps. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 6f851c24a67d1b3a349790b0d60f45b23ff93bc6..4566af37c76cb3a2fe6441451a444a5a3c9914f9 100644 +index 4cb7e63b433b8d4a02c2d193a2596e51ddab2779..9396d1164355aa3f10a8e5adad4813be808c0ffb 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -174,6 +174,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -36,7 +36,7 @@ index 6f851c24a67d1b3a349790b0d60f45b23ff93bc6..4566af37c76cb3a2fe6441451a444a5a // Paper start - distance maps private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>(); -@@ -954,7 +955,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -975,7 +976,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return Either.left(chunk); }); }, (runnable) -> { @@ -46,10 +46,10 @@ index 6f851c24a67d1b3a349790b0d60f45b23ff93bc6..4566af37c76cb3a2fe6441451a444a5a completablefuture1.thenAcceptAsync((either) -> { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 5b6381858418ceca4fe40ef329e050538e980cdb..66dfe3d79fa3273a2bab64193f73f2b38002c18c 100644 +index 19c44eae78802c9fe0479cdc32f21156dc9b9d45..02516d4a6ee08908765f5bc84b14560754a67680 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -1144,6 +1144,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -1140,6 +1140,7 @@ public class ServerChunkCache extends ChunkSource { return super.pollTask() || execChunkTask; // Paper } } finally { diff --git a/patches/server/0404-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch b/patches/server/0404-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch index 76c107076b..187b389896 100644 --- a/patches/server/0404-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch +++ b/patches/server/0404-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch @@ -28,10 +28,10 @@ receives a deterministic result, and should no longer require 1 tick delays anymore. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 4566af37c76cb3a2fe6441451a444a5a3c9914f9..49e612fc0fc4ec991d821d0aa4b41f488dd9f832 100644 +index 9396d1164355aa3f10a8e5adad4813be808c0ffb..5f576e6b749e36a4729439930f48e2b1cdddef16 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1548,6 +1548,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1569,6 +1569,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider .printStackTrace(); return; } diff --git a/patches/server/0429-Reduce-allocation-of-Vec3D-by-entity-tracker.patch b/patches/server/0429-Reduce-allocation-of-Vec3D-by-entity-tracker.patch index 510e73aae3..a6be09ca25 100644 --- a/patches/server/0429-Reduce-allocation-of-Vec3D-by-entity-tracker.patch +++ b/patches/server/0429-Reduce-allocation-of-Vec3D-by-entity-tracker.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Reduce allocation of Vec3D by entity tracker diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 49e612fc0fc4ec991d821d0aa4b41f488dd9f832..62a8482b73796f2c6b76c0e039cb21e799bc9416 100644 +index 5f576e6b749e36a4729439930f48e2b1cdddef16..20818ae001a0a1bcf570041468bea33b88fda4ac 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1826,9 +1826,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1847,9 +1847,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public void updatePlayer(ServerPlayer player) { org.spigotmc.AsyncCatcher.catchOp("player tracker update"); // Spigot if (player != this.entity) { diff --git a/patches/server/0432-Optimize-anyPlayerCloseEnoughForSpawning-to-use-dist.patch b/patches/server/0432-Optimize-anyPlayerCloseEnoughForSpawning-to-use-dist.patch index 7376075095..4f97ceeb73 100644 --- a/patches/server/0432-Optimize-anyPlayerCloseEnoughForSpawning-to-use-dist.patch +++ b/patches/server/0432-Optimize-anyPlayerCloseEnoughForSpawning-to-use-dist.patch @@ -37,10 +37,10 @@ index 74d674b2684b0db4aa6c183edc6091d53e9ee882..626bcbc6dd013260c3f8b38a1d14e7ba // CraftBukkit start diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 62a8482b73796f2c6b76c0e039cb21e799bc9416..87b612c25f865af4c8da72c761b70094fb89c4cb 100644 +index 7f8c82f2f50934bcc2eacd40a5fbd93d5dae68f6..745b8c16600ba106907302daa9630abdce6807b0 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -177,21 +177,37 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -177,11 +177,23 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider final CallbackExecutor chunkLoadConversionCallbackExecutor = new CallbackExecutor(); // Paper // Paper start - distance maps private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>(); @@ -61,28 +61,32 @@ index 62a8482b73796f2c6b76c0e039cb21e799bc9416..87b612c25f865af4c8da72c761b70094 int chunkZ = MCUtil.getChunkCoordinate(player.getZ()); // Note: players need to be explicitly added to distance maps before they can be updated + this.playerChunkTickRangeMap.add(player, chunkX, chunkZ, DistanceManager.MOB_SPAWN_RANGE); // Paper - optimise ChunkMap#anyPlayerCloseEnoughForSpawning - } + // Paper start - per player mob spawning + if (this.playerMobDistanceMap != null) { + this.playerMobDistanceMap.add(player, chunkX, chunkZ, this.distanceManager.getSimulationDistance()); +@@ -191,6 +203,10 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider void removePlayerFromDistanceMaps(ServerPlayer player) { -- + + // Paper start - optimise ChunkMap#anyPlayerCloseEnoughForSpawning + this.playerMobSpawnMap.remove(player); + this.playerChunkTickRangeMap.remove(player); + // Paper end - optimise ChunkMap#anyPlayerCloseEnoughForSpawning - } - - void updateMaps(ServerPlayer player) { + // Paper start - per player mob spawning + if (this.playerMobDistanceMap != null) { + this.playerMobDistanceMap.remove(player); +@@ -202,6 +218,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider int chunkX = MCUtil.getChunkCoordinate(player.getX()); int chunkZ = MCUtil.getChunkCoordinate(player.getZ()); // Note: players need to be explicitly added to distance maps before they can be updated + this.playerChunkTickRangeMap.update(player, chunkX, chunkZ, DistanceManager.MOB_SPAWN_RANGE); // Paper - optimise ChunkMap#anyPlayerCloseEnoughForSpawning - } - // Paper end - // Paper start -@@ -266,6 +282,38 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + // Paper start - per player mob spawning + if (this.playerMobDistanceMap != null) { + this.playerMobDistanceMap.update(player, chunkX, chunkZ, this.distanceManager.getSimulationDistance()); +@@ -281,6 +298,38 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.regionManagers.add(this.dataRegionManager); // Paper end - this.playerMobDistanceMap = this.level.paperConfig.perPlayerMobSpawns ? new com.destroystokyo.paper.util.PlayerMobDistanceMap() : null; // Paper + this.playerMobDistanceMap = this.level.paperConfig.perPlayerMobSpawns ? new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets) : null; // Paper + // Paper start - optimise ChunkMap#anyPlayerCloseEnoughForSpawning + this.playerChunkTickRangeMap = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets, + (ServerPlayer player, int rangeX, int rangeZ, int currPosX, int currPosZ, int prevPosX, int prevPosZ, @@ -118,7 +122,7 @@ index 62a8482b73796f2c6b76c0e039cb21e799bc9416..87b612c25f865af4c8da72c761b70094 } protected ChunkGenerator generator() { -@@ -466,6 +514,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -487,6 +536,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } else { if (holder != null) { holder.setTicketLevel(level); @@ -126,7 +130,7 @@ index 62a8482b73796f2c6b76c0e039cb21e799bc9416..87b612c25f865af4c8da72c761b70094 } if (holder != null) { -@@ -1310,43 +1359,48 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1331,43 +1381,48 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return this.anyPlayerCloseEnoughForSpawning(pos, false); } @@ -269,7 +273,7 @@ index f11e9421d393ef5a04f24c78a1214359710cc2f8..3865146697051e01a778414064425ea0 public String getDebugStatus() { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 50f3be85039c698bb2f73116a397d6ddaeea6dbd..b10ed9f87e58983863864161457cd415bb782bfd 100644 +index 02516d4a6ee08908765f5bc84b14560754a67680..b327bd2f48166a4a0c831b0209695fe5935f6a68 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -881,6 +881,37 @@ public class ServerChunkCache extends ChunkSource { @@ -310,7 +314,7 @@ index 50f3be85039c698bb2f73116a397d6ddaeea6dbd..b10ed9f87e58983863864161457cd415 LevelData worlddata = this.level.getLevelData(); ProfilerFiller gameprofilerfiller = this.level.getProfiler(); -@@ -928,15 +959,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -924,15 +955,7 @@ public class ServerChunkCache extends ChunkSource { boolean flag2 = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit Collections.shuffle(list); @@ -327,7 +331,7 @@ index 50f3be85039c698bb2f73116a397d6ddaeea6dbd..b10ed9f87e58983863864161457cd415 Iterator iterator1 = list.iterator(); while (iterator1.hasNext()) { -@@ -944,9 +967,9 @@ public class ServerChunkCache extends ChunkSource { +@@ -940,9 +963,9 @@ public class ServerChunkCache extends ChunkSource { LevelChunk chunk1 = chunkproviderserver_a.chunk; ChunkPos chunkcoordintpair = chunk1.getPos(); diff --git a/patches/server/0433-Use-distance-map-to-optimise-entity-tracker.patch b/patches/server/0433-Use-distance-map-to-optimise-entity-tracker.patch index c9d7cff1bd..3003deadba 100644 --- a/patches/server/0433-Use-distance-map-to-optimise-entity-tracker.patch +++ b/patches/server/0433-Use-distance-map-to-optimise-entity-tracker.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use distance map to optimise entity tracker Use the distance map to find candidate players for tracking. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc845bbacb1 100644 +index 4796e60ade3b576dbe0fe79bc9f0be6085dc7cc8..d358bca3aa0407ede113b4ca6243043f75202267 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -67,6 +67,7 @@ import net.minecraft.network.protocol.game.ClientboundSetEntityLinkPacket; @@ -17,7 +17,7 @@ index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc8 import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.server.network.ServerPlayerConnection; import net.minecraft.util.CsvOutput; -@@ -188,15 +189,45 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -188,10 +189,35 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap; // this map is absent from updateMaps since it's controlled at the start of the chunkproviderserver tick public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerChunkTickRangeMap; // Paper end - optimise ChunkMap#anyPlayerCloseEnoughForSpawning @@ -52,9 +52,11 @@ index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc8 + // Paper end - use distance map to optimise entity tracker // Note: players need to be explicitly added to distance maps before they can be updated this.playerChunkTickRangeMap.add(player, chunkX, chunkZ, DistanceManager.MOB_SPAWN_RANGE); // Paper - optimise ChunkMap#anyPlayerCloseEnoughForSpawning - } + // Paper start - per player mob spawning +@@ -203,6 +229,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider void removePlayerFromDistanceMaps(ServerPlayer player) { + + // Paper start - use distance map to optimise tracker + for (int i = 0, len = TRACKING_RANGE_TYPES.length; i < len; ++i) { + this.playerEntityTrackerTrackMaps[i].remove(player); @@ -63,7 +65,7 @@ index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc8 // Paper start - optimise ChunkMap#anyPlayerCloseEnoughForSpawning this.playerMobSpawnMap.remove(player); this.playerChunkTickRangeMap.remove(player); -@@ -207,6 +238,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -218,6 +249,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider int chunkX = MCUtil.getChunkCoordinate(player.getX()); int chunkZ = MCUtil.getChunkCoordinate(player.getZ()); // Note: players need to be explicitly added to distance maps before they can be updated @@ -76,12 +78,12 @@ index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc8 + } + // Paper end - use distance map to optimise entity tracker this.playerChunkTickRangeMap.update(player, chunkX, chunkZ, DistanceManager.MOB_SPAWN_RANGE); // Paper - optimise ChunkMap#anyPlayerCloseEnoughForSpawning - } - // Paper end -@@ -282,6 +321,45 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + // Paper start - per player mob spawning + if (this.playerMobDistanceMap != null) { +@@ -298,6 +337,45 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.regionManagers.add(this.dataRegionManager); // Paper end - this.playerMobDistanceMap = this.level.paperConfig.perPlayerMobSpawns ? new com.destroystokyo.paper.util.PlayerMobDistanceMap() : null; // Paper + this.playerMobDistanceMap = this.level.paperConfig.perPlayerMobSpawns ? new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets) : null; // Paper + // Paper start - use distance map to optimise entity tracker + this.playerEntityTrackerTrackMaps = new com.destroystokyo.paper.util.misc.PlayerAreaMap[TRACKING_RANGE_TYPES.length]; + this.entityTrackerTrackRanges = new int[TRACKING_RANGE_TYPES.length]; @@ -124,7 +126,7 @@ index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc8 // Paper start - optimise ChunkMap#anyPlayerCloseEnoughForSpawning this.playerChunkTickRangeMap = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets, (ServerPlayer player, int rangeX, int rangeZ, int currPosX, int currPosZ, int prevPosX, int prevPosZ, -@@ -1482,17 +1560,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1504,17 +1582,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public void move(ServerPlayer player) { @@ -143,7 +145,7 @@ index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc8 int i = SectionPos.blockToSectionCoord(player.getBlockX()); int j = SectionPos.blockToSectionCoord(player.getBlockZ()); -@@ -1619,7 +1687,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1641,7 +1709,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider entity.tracker = playerchunkmap_entitytracker; // Paper - Fast access to tracker this.entityMap.put(entity.getId(), playerchunkmap_entitytracker); @@ -152,7 +154,7 @@ index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc8 if (entity instanceof ServerPlayer) { ServerPlayer entityplayer = (ServerPlayer) entity; -@@ -1663,7 +1731,37 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1685,7 +1753,37 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider entity.tracker = null; // Paper - We're no longer tracked } @@ -190,7 +192,7 @@ index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc8 List list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); -@@ -1739,23 +1837,31 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1761,23 +1859,31 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider DebugPackets.sendPoiPacketsForChunk(this.level, chunk.getPos()); List list = Lists.newArrayList(); List list1 = Lists.newArrayList(); @@ -234,7 +236,7 @@ index 87b612c25f865af4c8da72c761b70094fb89c4cb..2534cae6f1b369843808aac91931bdc8 Iterator iterator; Entity entity1; -@@ -1831,6 +1937,42 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1853,6 +1959,42 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.lastSectionPos = SectionPos.of(entity); } diff --git a/patches/server/0456-incremental-chunk-and-player-saving.patch b/patches/server/0456-incremental-chunk-and-player-saving.patch index 5a38def770..a7cf24a9f4 100644 --- a/patches/server/0456-incremental-chunk-and-player-saving.patch +++ b/patches/server/0456-incremental-chunk-and-player-saving.patch @@ -165,7 +165,7 @@ index 626bcbc6dd013260c3f8b38a1d14e7ba35dc1e01..9e96b0465717bfa761289c255fd8d2f1 for (int i = 0; i < this.futures.length(); ++i) { CompletableFuture> completablefuture = (CompletableFuture) this.futures.get(i); diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 2534cae6f1b369843808aac91931bdc845bbacb1..74187951dc906e72904788ff0b42adc263b790bc 100644 +index d358bca3aa0407ede113b4ca6243043f75202267..326a3b312d3446b813e325867f852e0cf6786945 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -101,6 +101,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureMana @@ -176,7 +176,7 @@ index 2534cae6f1b369843808aac91931bdc845bbacb1..74187951dc906e72904788ff0b42adc2 import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.commons.lang3.mutable.MutableObject; import org.apache.logging.log4j.LogManager; -@@ -636,6 +637,64 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -658,6 +659,64 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } @@ -241,7 +241,7 @@ index 2534cae6f1b369843808aac91931bdc845bbacb1..74187951dc906e72904788ff0b42adc2 protected void saveAllChunks(boolean flush) { if (flush) { List list = (List) this.visibleChunkMap.values().stream().filter(ChunkHolder::wasAccessibleSinceLastSave).peek(ChunkHolder::refreshAccessibility).collect(Collectors.toList()); -@@ -729,13 +788,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -751,13 +810,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } int l = 0; @@ -256,7 +256,7 @@ index 2534cae6f1b369843808aac91931bdc845bbacb1..74187951dc906e72904788ff0b42adc2 } -@@ -773,6 +826,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -795,6 +848,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.level.unload(chunk); } @@ -264,7 +264,7 @@ index 2534cae6f1b369843808aac91931bdc845bbacb1..74187951dc906e72904788ff0b42adc2 this.lightEngine.updateChunkStatus(ichunkaccess.getPos()); this.lightEngine.tryScheduleUpdate(); -@@ -1170,6 +1224,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1192,6 +1246,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider asyncSaveData, chunk); chunk.setUnsaved(false); @@ -272,7 +272,7 @@ index 2534cae6f1b369843808aac91931bdc845bbacb1..74187951dc906e72904788ff0b42adc2 } // Paper end -@@ -1179,6 +1234,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1201,6 +1256,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider if (!chunk.isUnsaved()) { return false; } else { @@ -281,7 +281,7 @@ index 2534cae6f1b369843808aac91931bdc845bbacb1..74187951dc906e72904788ff0b42adc2 ChunkPos chunkcoordintpair = chunk.getPos(); diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 1115df1f148bcb079edb9eb397de3fab725bf83b..3ebe6d4a87eac760d65ea335d683742a06c6c580 100644 +index b327bd2f48166a4a0c831b0209695fe5935f6a68..73b1018b0aca377ed0ff188e74040cef57036b0b 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -825,6 +825,15 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0470-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch b/patches/server/0470-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch index 591580f203..4342a6469a 100644 --- a/patches/server/0470-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch +++ b/patches/server/0470-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch @@ -360,7 +360,7 @@ index 9e96b0465717bfa761289c255fd8d2f1df1be3d8..87271552aa85626f22f7f8569c8fb48f return this.isEntityTickingReady; } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892cb8adc4b8 100644 +index 326a3b312d3446b813e325867f852e0cf6786945..3e6cc16ff6f6c7993b15bd807257c0554afb6c77 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -128,6 +128,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -371,7 +371,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c public ChunkGenerator generator; public final Supplier overworldDataStorage; private final PoiManager poiManager; -@@ -299,6 +300,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -315,6 +316,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.level = world; this.generator = chunkGenerator; this.mainThreadExecutor = mainThreadExecutor; @@ -387,7 +387,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c ProcessorMailbox threadedmailbox = ProcessorMailbox.create(executor, "worldgen"); Objects.requireNonNull(mainThreadExecutor); -@@ -410,6 +420,37 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -426,6 +436,37 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider }); } @@ -425,7 +425,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c // Paper start public void updatePlayerMobTypeMap(Entity entity) { if (!this.level.paperConfig.perPlayerMobSpawns) { -@@ -514,6 +555,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -536,6 +577,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider List list1 = new ArrayList(); int j = centerChunk.x; int k = centerChunk.z; @@ -433,7 +433,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c for (int l = -margin; l <= margin; ++l) { for (int i1 = -margin; i1 <= margin; ++i1) { -@@ -532,6 +574,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -554,6 +596,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider ChunkStatus chunkstatus = (ChunkStatus) distanceToStatus.apply(j1); CompletableFuture> completablefuture = playerchunk.getOrScheduleFuture(chunkstatus, this); @@ -448,7 +448,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c list1.add(playerchunk); list.add(completablefuture); -@@ -866,11 +916,19 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -888,11 +938,19 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider if (requiredStatus == ChunkStatus.EMPTY) { return this.scheduleChunkLoad(chunkcoordintpair); } else { @@ -469,7 +469,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c if (optional.isPresent() && ((ChunkAccess) optional.get()).getStatus().isOrAfter(requiredStatus)) { CompletableFuture> completablefuture = requiredStatus.load(this.level, this.structureManager, this.lightEngine, (ichunkaccess) -> { -@@ -882,6 +940,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -904,6 +962,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } else { return this.scheduleChunkGeneration(holder, requiredStatus); } @@ -477,7 +477,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c } } -@@ -938,14 +997,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -960,14 +1019,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider }; CompletableFuture chunkSaveFuture = this.level.asyncChunkTaskManager.getChunkSaveFuture(pos.x, pos.z); @@ -507,7 +507,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c return ret; // Paper end } -@@ -997,7 +1066,10 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1019,7 +1088,10 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.releaseLightTicket(chunkcoordintpair); return CompletableFuture.completedFuture(Either.right(playerchunk_failure)); }); @@ -519,7 +519,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c } protected void releaseLightTicket(ChunkPos pos) { -@@ -1081,7 +1153,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1103,7 +1175,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider long i = chunkHolder.getPos().toLong(); Objects.requireNonNull(chunkHolder); @@ -529,7 +529,7 @@ index 74187951dc906e72904788ff0b42adc263b790bc..0d01fc498d09c5e11d8d173ca98d892c } diff --git a/src/main/java/net/minecraft/server/level/DistanceManager.java b/src/main/java/net/minecraft/server/level/DistanceManager.java -index 84dc1e94b4f7b8315d8422634dd49b1f85044d18..451d5e9b5906e662a0c2e04b407068ea49d1089e 100644 +index cd81e7844c985d7d0f0930faa96478af6a7f6cd4..1744f4983b24a87f3861ebd5d68120cfce904934 100644 --- a/src/main/java/net/minecraft/server/level/DistanceManager.java +++ b/src/main/java/net/minecraft/server/level/DistanceManager.java @@ -113,6 +113,7 @@ public abstract class DistanceManager { @@ -711,7 +711,7 @@ index 84dc1e94b4f7b8315d8422634dd49b1f85044d18..451d5e9b5906e662a0c2e04b407068ea Ticket ticket = new Ticket<>(TicketType.FORCED, 31, pos); long i = pos.toLong(); diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 3ebe6d4a87eac760d65ea335d683742a06c6c580..42cecd0f072505c80b65ccf26e5d838750d21e28 100644 +index 73b1018b0aca377ed0ff188e74040cef57036b0b..3b0e254f569576a6193750811c06f1c102a2aeac 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -601,6 +601,26 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0490-Improve-Chunk-Status-Transition-Speed.patch b/patches/server/0490-Improve-Chunk-Status-Transition-Speed.patch index 71a837cab4..97c098d49a 100644 --- a/patches/server/0490-Improve-Chunk-Status-Transition-Speed.patch +++ b/patches/server/0490-Improve-Chunk-Status-Transition-Speed.patch @@ -54,10 +54,10 @@ index 87271552aa85626f22f7f8569c8fb48fe4b30bf3..80aae4303e011dad13ce818136f0383e public ChunkHolder(ChunkPos pos, int level, LevelHeightAccessor world, LevelLightEngine lightingProvider, ChunkHolder.LevelChangeListener levelUpdateListener, ChunkHolder.PlayerProvider playersWatchingChunkProvider) { this.futures = new AtomicReferenceArray(ChunkHolder.CHUNK_STATUSES.size()); diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 0d01fc498d09c5e11d8d173ca98d892cb8adc4b8..b44f1dc663dc3c081ec85941a2cd73e522e3c348 100644 +index 3e6cc16ff6f6c7993b15bd807257c0554afb6c77..a737fb56fef791f53ed3b0252e5a0369c22bcc7d 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -633,7 +633,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -655,7 +655,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return either.mapLeft((list) -> { return (LevelChunk) list.get(list.size() / 2); }); @@ -66,7 +66,7 @@ index 0d01fc498d09c5e11d8d173ca98d892cb8adc4b8..b44f1dc663dc3c081ec85941a2cd73e5 } @Nullable -@@ -1037,6 +1037,12 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1059,6 +1059,12 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return "chunkGenerate " + requiredStatus.getName(); }); Executor executor = (runnable) -> { diff --git a/patches/server/0591-Reset-shield-blocking-on-dimension-change.patch b/patches/server/0590-Reset-shield-blocking-on-dimension-change.patch similarity index 100% rename from patches/server/0591-Reset-shield-blocking-on-dimension-change.patch rename to patches/server/0590-Reset-shield-blocking-on-dimension-change.patch diff --git a/patches/server/0590-Skip-distance-map-update-when-spawning-disabled.patch b/patches/server/0590-Skip-distance-map-update-when-spawning-disabled.patch deleted file mode 100644 index 6fe17535ff..0000000000 --- a/patches/server/0590-Skip-distance-map-update-when-spawning-disabled.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Beech Horn -Date: Fri, 14 Feb 2020 19:39:59 +0000 -Subject: [PATCH] Skip distance map update when spawning disabled. - - -diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 1ff2d926ca5de9334b1e5aa5defb73d7fbc1c3af..8e87cc36b57bc5e8f8eb5583e02bbede4eb9ce54 100644 ---- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java -+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -966,7 +966,7 @@ public class ServerChunkCache extends ChunkSource { - int l = this.distanceManager.getNaturalSpawnChunkCount(); - // Paper start - per player mob spawning - NaturalSpawner.SpawnState spawnercreature_d; // moved down -- if (this.chunkMap.playerMobDistanceMap != null) { -+ if ((this.spawnFriendlies || this.spawnEnemies) && this.chunkMap.playerMobDistanceMap != null) { // don't update when animals and monsters are disabled - // update distance map - this.level.timings.playerMobDistanceMapUpdate.startTiming(); - this.chunkMap.playerMobDistanceMap.update(this.level.players, this.distanceManager.getSimulationDistance()); diff --git a/patches/server/0592-add-DragonEggFormEvent.patch b/patches/server/0591-add-DragonEggFormEvent.patch similarity index 100% rename from patches/server/0592-add-DragonEggFormEvent.patch rename to patches/server/0591-add-DragonEggFormEvent.patch diff --git a/patches/server/0593-EntityMoveEvent.patch b/patches/server/0592-EntityMoveEvent.patch similarity index 100% rename from patches/server/0593-EntityMoveEvent.patch rename to patches/server/0592-EntityMoveEvent.patch diff --git a/patches/server/0594-added-option-to-disable-pathfinding-updates-on-block.patch b/patches/server/0593-added-option-to-disable-pathfinding-updates-on-block.patch similarity index 100% rename from patches/server/0594-added-option-to-disable-pathfinding-updates-on-block.patch rename to patches/server/0593-added-option-to-disable-pathfinding-updates-on-block.patch diff --git a/patches/server/0595-Inline-shift-direction-fields.patch b/patches/server/0594-Inline-shift-direction-fields.patch similarity index 100% rename from patches/server/0595-Inline-shift-direction-fields.patch rename to patches/server/0594-Inline-shift-direction-fields.patch diff --git a/patches/server/0596-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/server/0595-Allow-adding-items-to-BlockDropItemEvent.patch similarity index 100% rename from patches/server/0596-Allow-adding-items-to-BlockDropItemEvent.patch rename to patches/server/0595-Allow-adding-items-to-BlockDropItemEvent.patch diff --git a/patches/server/0597-Add-getMainThreadExecutor-to-BukkitScheduler.patch b/patches/server/0596-Add-getMainThreadExecutor-to-BukkitScheduler.patch similarity index 100% rename from patches/server/0597-Add-getMainThreadExecutor-to-BukkitScheduler.patch rename to patches/server/0596-Add-getMainThreadExecutor-to-BukkitScheduler.patch diff --git a/patches/server/0598-living-entity-allow-attribute-registration.patch b/patches/server/0597-living-entity-allow-attribute-registration.patch similarity index 100% rename from patches/server/0598-living-entity-allow-attribute-registration.patch rename to patches/server/0597-living-entity-allow-attribute-registration.patch diff --git a/patches/server/0599-fix-dead-slime-setSize-invincibility.patch b/patches/server/0598-fix-dead-slime-setSize-invincibility.patch similarity index 100% rename from patches/server/0599-fix-dead-slime-setSize-invincibility.patch rename to patches/server/0598-fix-dead-slime-setSize-invincibility.patch diff --git a/patches/server/0600-Merchant-getRecipes-should-return-an-immutable-list.patch b/patches/server/0599-Merchant-getRecipes-should-return-an-immutable-list.patch similarity index 100% rename from patches/server/0600-Merchant-getRecipes-should-return-an-immutable-list.patch rename to patches/server/0599-Merchant-getRecipes-should-return-an-immutable-list.patch diff --git a/patches/server/0601-Add-support-for-hex-color-codes-in-console.patch b/patches/server/0600-Add-support-for-hex-color-codes-in-console.patch similarity index 100% rename from patches/server/0601-Add-support-for-hex-color-codes-in-console.patch rename to patches/server/0600-Add-support-for-hex-color-codes-in-console.patch diff --git a/patches/server/0602-Expose-Tracked-Players.patch b/patches/server/0601-Expose-Tracked-Players.patch similarity index 100% rename from patches/server/0602-Expose-Tracked-Players.patch rename to patches/server/0601-Expose-Tracked-Players.patch diff --git a/patches/server/0603-Remove-streams-from-SensorNearest.patch b/patches/server/0602-Remove-streams-from-SensorNearest.patch similarity index 100% rename from patches/server/0603-Remove-streams-from-SensorNearest.patch rename to patches/server/0602-Remove-streams-from-SensorNearest.patch diff --git a/patches/server/0604-Throw-proper-exception-on-empty-JsonList-file.patch b/patches/server/0603-Throw-proper-exception-on-empty-JsonList-file.patch similarity index 100% rename from patches/server/0604-Throw-proper-exception-on-empty-JsonList-file.patch rename to patches/server/0603-Throw-proper-exception-on-empty-JsonList-file.patch diff --git a/patches/server/0605-Improve-ServerGUI.patch b/patches/server/0604-Improve-ServerGUI.patch similarity index 100% rename from patches/server/0605-Improve-ServerGUI.patch rename to patches/server/0604-Improve-ServerGUI.patch diff --git a/patches/server/0606-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch b/patches/server/0605-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch similarity index 100% rename from patches/server/0606-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch rename to patches/server/0605-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch diff --git a/patches/server/0607-fix-converting-txt-to-json-file.patch b/patches/server/0606-fix-converting-txt-to-json-file.patch similarity index 100% rename from patches/server/0607-fix-converting-txt-to-json-file.patch rename to patches/server/0606-fix-converting-txt-to-json-file.patch diff --git a/patches/server/0608-Add-worldborder-events.patch b/patches/server/0607-Add-worldborder-events.patch similarity index 100% rename from patches/server/0608-Add-worldborder-events.patch rename to patches/server/0607-Add-worldborder-events.patch diff --git a/patches/server/0609-added-PlayerNameEntityEvent.patch b/patches/server/0608-added-PlayerNameEntityEvent.patch similarity index 100% rename from patches/server/0609-added-PlayerNameEntityEvent.patch rename to patches/server/0608-added-PlayerNameEntityEvent.patch diff --git a/patches/server/0610-Prevent-grindstones-from-overstacking-items.patch b/patches/server/0609-Prevent-grindstones-from-overstacking-items.patch similarity index 100% rename from patches/server/0610-Prevent-grindstones-from-overstacking-items.patch rename to patches/server/0609-Prevent-grindstones-from-overstacking-items.patch diff --git a/patches/server/0611-Add-recipe-to-cook-events.patch b/patches/server/0610-Add-recipe-to-cook-events.patch similarity index 100% rename from patches/server/0611-Add-recipe-to-cook-events.patch rename to patches/server/0610-Add-recipe-to-cook-events.patch diff --git a/patches/server/0612-Add-Block-isValidTool.patch b/patches/server/0611-Add-Block-isValidTool.patch similarity index 100% rename from patches/server/0612-Add-Block-isValidTool.patch rename to patches/server/0611-Add-Block-isValidTool.patch diff --git a/patches/server/0613-Allow-using-signs-inside-spawn-protection.patch b/patches/server/0612-Allow-using-signs-inside-spawn-protection.patch similarity index 100% rename from patches/server/0613-Allow-using-signs-inside-spawn-protection.patch rename to patches/server/0612-Allow-using-signs-inside-spawn-protection.patch diff --git a/patches/server/0614-Implement-Keyed-on-World.patch b/patches/server/0613-Implement-Keyed-on-World.patch similarity index 100% rename from patches/server/0614-Implement-Keyed-on-World.patch rename to patches/server/0613-Implement-Keyed-on-World.patch diff --git a/patches/server/0615-Add-fast-alternative-constructor-for-Rotations.patch b/patches/server/0614-Add-fast-alternative-constructor-for-Rotations.patch similarity index 100% rename from patches/server/0615-Add-fast-alternative-constructor-for-Rotations.patch rename to patches/server/0614-Add-fast-alternative-constructor-for-Rotations.patch diff --git a/patches/server/0616-Item-Rarity-API.patch b/patches/server/0615-Item-Rarity-API.patch similarity index 100% rename from patches/server/0616-Item-Rarity-API.patch rename to patches/server/0615-Item-Rarity-API.patch diff --git a/patches/server/0617-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch b/patches/server/0616-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch similarity index 100% rename from patches/server/0617-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch rename to patches/server/0616-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch diff --git a/patches/server/0618-copy-TESign-isEditable-from-snapshots.patch b/patches/server/0617-copy-TESign-isEditable-from-snapshots.patch similarity index 100% rename from patches/server/0618-copy-TESign-isEditable-from-snapshots.patch rename to patches/server/0617-copy-TESign-isEditable-from-snapshots.patch diff --git a/patches/server/0619-Drop-carried-item-when-player-has-disconnected.patch b/patches/server/0618-Drop-carried-item-when-player-has-disconnected.patch similarity index 100% rename from patches/server/0619-Drop-carried-item-when-player-has-disconnected.patch rename to patches/server/0618-Drop-carried-item-when-player-has-disconnected.patch diff --git a/patches/server/0620-forced-whitelist-use-configurable-kick-message.patch b/patches/server/0619-forced-whitelist-use-configurable-kick-message.patch similarity index 100% rename from patches/server/0620-forced-whitelist-use-configurable-kick-message.patch rename to patches/server/0619-forced-whitelist-use-configurable-kick-message.patch diff --git a/patches/server/0621-Don-t-ignore-result-of-PlayerEditBookEvent.patch b/patches/server/0620-Don-t-ignore-result-of-PlayerEditBookEvent.patch similarity index 100% rename from patches/server/0621-Don-t-ignore-result-of-PlayerEditBookEvent.patch rename to patches/server/0620-Don-t-ignore-result-of-PlayerEditBookEvent.patch diff --git a/patches/server/0622-Entity-load-save-limit-per-chunk.patch b/patches/server/0621-Entity-load-save-limit-per-chunk.patch similarity index 100% rename from patches/server/0622-Entity-load-save-limit-per-chunk.patch rename to patches/server/0621-Entity-load-save-limit-per-chunk.patch diff --git a/patches/server/0623-fix-cancelling-block-falling-causing-client-desync.patch b/patches/server/0622-fix-cancelling-block-falling-causing-client-desync.patch similarity index 100% rename from patches/server/0623-fix-cancelling-block-falling-causing-client-desync.patch rename to patches/server/0622-fix-cancelling-block-falling-causing-client-desync.patch diff --git a/patches/server/0624-Expose-protocol-version.patch b/patches/server/0623-Expose-protocol-version.patch similarity index 100% rename from patches/server/0624-Expose-protocol-version.patch rename to patches/server/0623-Expose-protocol-version.patch diff --git a/patches/server/0625-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch b/patches/server/0624-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch similarity index 100% rename from patches/server/0625-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch rename to patches/server/0624-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch diff --git a/patches/server/0626-Enhance-console-tab-completions-for-brigadier-comman.patch b/patches/server/0625-Enhance-console-tab-completions-for-brigadier-comman.patch similarity index 100% rename from patches/server/0626-Enhance-console-tab-completions-for-brigadier-comman.patch rename to patches/server/0625-Enhance-console-tab-completions-for-brigadier-comman.patch diff --git a/patches/server/0627-Fix-PlayerItemConsumeEvent-cancelling-properly.patch b/patches/server/0626-Fix-PlayerItemConsumeEvent-cancelling-properly.patch similarity index 100% rename from patches/server/0627-Fix-PlayerItemConsumeEvent-cancelling-properly.patch rename to patches/server/0626-Fix-PlayerItemConsumeEvent-cancelling-properly.patch diff --git a/patches/server/0628-Add-bypass-host-check.patch b/patches/server/0627-Add-bypass-host-check.patch similarity index 100% rename from patches/server/0628-Add-bypass-host-check.patch rename to patches/server/0627-Add-bypass-host-check.patch diff --git a/patches/server/0629-Set-area-affect-cloud-rotation.patch b/patches/server/0628-Set-area-affect-cloud-rotation.patch similarity index 100% rename from patches/server/0629-Set-area-affect-cloud-rotation.patch rename to patches/server/0628-Set-area-affect-cloud-rotation.patch diff --git a/patches/server/0630-add-isDeeplySleeping-to-HumanEntity.patch b/patches/server/0629-add-isDeeplySleeping-to-HumanEntity.patch similarity index 100% rename from patches/server/0630-add-isDeeplySleeping-to-HumanEntity.patch rename to patches/server/0629-add-isDeeplySleeping-to-HumanEntity.patch diff --git a/patches/server/0631-Fix-duplicating-give-items-on-item-drop-cancel.patch b/patches/server/0630-Fix-duplicating-give-items-on-item-drop-cancel.patch similarity index 100% rename from patches/server/0631-Fix-duplicating-give-items-on-item-drop-cancel.patch rename to patches/server/0630-Fix-duplicating-give-items-on-item-drop-cancel.patch diff --git a/patches/server/0632-add-consumeFuel-to-FurnaceBurnEvent.patch b/patches/server/0631-add-consumeFuel-to-FurnaceBurnEvent.patch similarity index 100% rename from patches/server/0632-add-consumeFuel-to-FurnaceBurnEvent.patch rename to patches/server/0631-add-consumeFuel-to-FurnaceBurnEvent.patch diff --git a/patches/server/0633-add-get-set-drop-chance-to-EntityEquipment.patch b/patches/server/0632-add-get-set-drop-chance-to-EntityEquipment.patch similarity index 100% rename from patches/server/0633-add-get-set-drop-chance-to-EntityEquipment.patch rename to patches/server/0632-add-get-set-drop-chance-to-EntityEquipment.patch diff --git a/patches/server/0634-fix-PigZombieAngerEvent-cancellation.patch b/patches/server/0633-fix-PigZombieAngerEvent-cancellation.patch similarity index 100% rename from patches/server/0634-fix-PigZombieAngerEvent-cancellation.patch rename to patches/server/0633-fix-PigZombieAngerEvent-cancellation.patch diff --git a/patches/server/0635-Fix-checkReach-check-for-Shulker-boxes.patch b/patches/server/0634-Fix-checkReach-check-for-Shulker-boxes.patch similarity index 100% rename from patches/server/0635-Fix-checkReach-check-for-Shulker-boxes.patch rename to patches/server/0634-Fix-checkReach-check-for-Shulker-boxes.patch diff --git a/patches/server/0636-fix-PlayerItemHeldEvent-firing-twice.patch b/patches/server/0635-fix-PlayerItemHeldEvent-firing-twice.patch similarity index 100% rename from patches/server/0636-fix-PlayerItemHeldEvent-firing-twice.patch rename to patches/server/0635-fix-PlayerItemHeldEvent-firing-twice.patch diff --git a/patches/server/0637-Added-PlayerDeepSleepEvent.patch b/patches/server/0636-Added-PlayerDeepSleepEvent.patch similarity index 100% rename from patches/server/0637-Added-PlayerDeepSleepEvent.patch rename to patches/server/0636-Added-PlayerDeepSleepEvent.patch diff --git a/patches/server/0638-More-World-API.patch b/patches/server/0637-More-World-API.patch similarity index 100% rename from patches/server/0638-More-World-API.patch rename to patches/server/0637-More-World-API.patch diff --git a/patches/server/0639-Added-PlayerBedFailEnterEvent.patch b/patches/server/0638-Added-PlayerBedFailEnterEvent.patch similarity index 100% rename from patches/server/0639-Added-PlayerBedFailEnterEvent.patch rename to patches/server/0638-Added-PlayerBedFailEnterEvent.patch diff --git a/patches/server/0640-Implement-methods-to-convert-between-Component-and-B.patch b/patches/server/0639-Implement-methods-to-convert-between-Component-and-B.patch similarity index 100% rename from patches/server/0640-Implement-methods-to-convert-between-Component-and-B.patch rename to patches/server/0639-Implement-methods-to-convert-between-Component-and-B.patch diff --git a/patches/server/0641-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch b/patches/server/0640-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch similarity index 100% rename from patches/server/0641-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch rename to patches/server/0640-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch diff --git a/patches/server/0642-Introduce-beacon-activation-deactivation-events.patch b/patches/server/0641-Introduce-beacon-activation-deactivation-events.patch similarity index 100% rename from patches/server/0642-Introduce-beacon-activation-deactivation-events.patch rename to patches/server/0641-Introduce-beacon-activation-deactivation-events.patch diff --git a/patches/server/0643-add-RespawnFlags-to-PlayerRespawnEvent.patch b/patches/server/0642-add-RespawnFlags-to-PlayerRespawnEvent.patch similarity index 100% rename from patches/server/0643-add-RespawnFlags-to-PlayerRespawnEvent.patch rename to patches/server/0642-add-RespawnFlags-to-PlayerRespawnEvent.patch diff --git a/patches/server/0644-Add-Channel-initialization-listeners.patch b/patches/server/0643-Add-Channel-initialization-listeners.patch similarity index 100% rename from patches/server/0644-Add-Channel-initialization-listeners.patch rename to patches/server/0643-Add-Channel-initialization-listeners.patch diff --git a/patches/server/0645-Send-empty-commands-if-tab-completion-is-disabled.patch b/patches/server/0644-Send-empty-commands-if-tab-completion-is-disabled.patch similarity index 100% rename from patches/server/0645-Send-empty-commands-if-tab-completion-is-disabled.patch rename to patches/server/0644-Send-empty-commands-if-tab-completion-is-disabled.patch diff --git a/patches/server/0646-Add-more-WanderingTrader-API.patch b/patches/server/0645-Add-more-WanderingTrader-API.patch similarity index 100% rename from patches/server/0646-Add-more-WanderingTrader-API.patch rename to patches/server/0645-Add-more-WanderingTrader-API.patch diff --git a/patches/server/0647-Add-EntityBlockStorage-clearEntities.patch b/patches/server/0646-Add-EntityBlockStorage-clearEntities.patch similarity index 100% rename from patches/server/0647-Add-EntityBlockStorage-clearEntities.patch rename to patches/server/0646-Add-EntityBlockStorage-clearEntities.patch diff --git a/patches/server/0648-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch b/patches/server/0647-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch similarity index 100% rename from patches/server/0648-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch rename to patches/server/0647-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch diff --git a/patches/server/0649-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch b/patches/server/0648-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch similarity index 100% rename from patches/server/0649-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch rename to patches/server/0648-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch diff --git a/patches/server/0650-Inventory-close.patch b/patches/server/0649-Inventory-close.patch similarity index 100% rename from patches/server/0650-Inventory-close.patch rename to patches/server/0649-Inventory-close.patch diff --git a/patches/server/0651-call-PortalCreateEvent-players-and-end-platform.patch b/patches/server/0650-call-PortalCreateEvent-players-and-end-platform.patch similarity index 100% rename from patches/server/0651-call-PortalCreateEvent-players-and-end-platform.patch rename to patches/server/0650-call-PortalCreateEvent-players-and-end-platform.patch diff --git a/patches/server/0652-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch b/patches/server/0651-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch similarity index 100% rename from patches/server/0652-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch rename to patches/server/0651-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch diff --git a/patches/server/0653-Fix-CraftPotionBrewer-cache.patch b/patches/server/0652-Fix-CraftPotionBrewer-cache.patch similarity index 100% rename from patches/server/0653-Fix-CraftPotionBrewer-cache.patch rename to patches/server/0652-Fix-CraftPotionBrewer-cache.patch diff --git a/patches/server/0654-Add-basic-Datapack-API.patch b/patches/server/0653-Add-basic-Datapack-API.patch similarity index 100% rename from patches/server/0654-Add-basic-Datapack-API.patch rename to patches/server/0653-Add-basic-Datapack-API.patch diff --git a/patches/server/0655-Add-environment-variable-to-disable-server-gui.patch b/patches/server/0654-Add-environment-variable-to-disable-server-gui.patch similarity index 100% rename from patches/server/0655-Add-environment-variable-to-disable-server-gui.patch rename to patches/server/0654-Add-environment-variable-to-disable-server-gui.patch diff --git a/patches/server/0656-additions-to-PlayerGameModeChangeEvent.patch b/patches/server/0655-additions-to-PlayerGameModeChangeEvent.patch similarity index 100% rename from patches/server/0656-additions-to-PlayerGameModeChangeEvent.patch rename to patches/server/0655-additions-to-PlayerGameModeChangeEvent.patch diff --git a/patches/server/0657-ItemStack-repair-check-API.patch b/patches/server/0656-ItemStack-repair-check-API.patch similarity index 100% rename from patches/server/0657-ItemStack-repair-check-API.patch rename to patches/server/0656-ItemStack-repair-check-API.patch diff --git a/patches/server/0658-More-Enchantment-API.patch b/patches/server/0657-More-Enchantment-API.patch similarity index 100% rename from patches/server/0658-More-Enchantment-API.patch rename to patches/server/0657-More-Enchantment-API.patch diff --git a/patches/server/0659-Fix-and-optimise-world-force-upgrading.patch b/patches/server/0658-Fix-and-optimise-world-force-upgrading.patch similarity index 100% rename from patches/server/0659-Fix-and-optimise-world-force-upgrading.patch rename to patches/server/0658-Fix-and-optimise-world-force-upgrading.patch diff --git a/patches/server/0660-Add-Mob-lookAt-API.patch b/patches/server/0659-Add-Mob-lookAt-API.patch similarity index 100% rename from patches/server/0660-Add-Mob-lookAt-API.patch rename to patches/server/0659-Add-Mob-lookAt-API.patch diff --git a/patches/server/0661-Add-Unix-domain-socket-support.patch b/patches/server/0660-Add-Unix-domain-socket-support.patch similarity index 100% rename from patches/server/0661-Add-Unix-domain-socket-support.patch rename to patches/server/0660-Add-Unix-domain-socket-support.patch diff --git a/patches/server/0662-Add-EntityInsideBlockEvent.patch b/patches/server/0661-Add-EntityInsideBlockEvent.patch similarity index 100% rename from patches/server/0662-Add-EntityInsideBlockEvent.patch rename to patches/server/0661-Add-EntityInsideBlockEvent.patch diff --git a/patches/server/0663-Attributes-API-for-item-defaults.patch b/patches/server/0662-Attributes-API-for-item-defaults.patch similarity index 100% rename from patches/server/0663-Attributes-API-for-item-defaults.patch rename to patches/server/0662-Attributes-API-for-item-defaults.patch diff --git a/patches/server/0664-Add-cause-to-Weather-ThunderChangeEvents.patch b/patches/server/0663-Add-cause-to-Weather-ThunderChangeEvents.patch similarity index 100% rename from patches/server/0664-Add-cause-to-Weather-ThunderChangeEvents.patch rename to patches/server/0663-Add-cause-to-Weather-ThunderChangeEvents.patch diff --git a/patches/server/0665-More-Lidded-Block-API.patch b/patches/server/0664-More-Lidded-Block-API.patch similarity index 100% rename from patches/server/0665-More-Lidded-Block-API.patch rename to patches/server/0664-More-Lidded-Block-API.patch diff --git a/patches/server/0666-Limit-item-frame-cursors-on-maps.patch b/patches/server/0665-Limit-item-frame-cursors-on-maps.patch similarity index 100% rename from patches/server/0666-Limit-item-frame-cursors-on-maps.patch rename to patches/server/0665-Limit-item-frame-cursors-on-maps.patch diff --git a/patches/server/0667-Add-PlayerKickEvent-causes.patch b/patches/server/0666-Add-PlayerKickEvent-causes.patch similarity index 100% rename from patches/server/0667-Add-PlayerKickEvent-causes.patch rename to patches/server/0666-Add-PlayerKickEvent-causes.patch diff --git a/patches/server/0668-Add-PufferFishStateChangeEvent.patch b/patches/server/0667-Add-PufferFishStateChangeEvent.patch similarity index 100% rename from patches/server/0668-Add-PufferFishStateChangeEvent.patch rename to patches/server/0667-Add-PufferFishStateChangeEvent.patch diff --git a/patches/server/0669-Fix-PlayerBucketEmptyEvent-result-itemstack.patch b/patches/server/0668-Fix-PlayerBucketEmptyEvent-result-itemstack.patch similarity index 100% rename from patches/server/0669-Fix-PlayerBucketEmptyEvent-result-itemstack.patch rename to patches/server/0668-Fix-PlayerBucketEmptyEvent-result-itemstack.patch diff --git a/patches/server/0670-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch b/patches/server/0669-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch similarity index 100% rename from patches/server/0670-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch rename to patches/server/0669-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch diff --git a/patches/server/0671-Add-option-to-fix-items-merging-through-walls.patch b/patches/server/0670-Add-option-to-fix-items-merging-through-walls.patch similarity index 100% rename from patches/server/0671-Add-option-to-fix-items-merging-through-walls.patch rename to patches/server/0670-Add-option-to-fix-items-merging-through-walls.patch diff --git a/patches/server/0672-Add-BellRevealRaiderEvent.patch b/patches/server/0671-Add-BellRevealRaiderEvent.patch similarity index 100% rename from patches/server/0672-Add-BellRevealRaiderEvent.patch rename to patches/server/0671-Add-BellRevealRaiderEvent.patch diff --git a/patches/server/0673-Fix-invulnerable-end-crystals.patch b/patches/server/0672-Fix-invulnerable-end-crystals.patch similarity index 100% rename from patches/server/0673-Fix-invulnerable-end-crystals.patch rename to patches/server/0672-Fix-invulnerable-end-crystals.patch diff --git a/patches/server/0674-Add-ElderGuardianAppearanceEvent.patch b/patches/server/0673-Add-ElderGuardianAppearanceEvent.patch similarity index 100% rename from patches/server/0674-Add-ElderGuardianAppearanceEvent.patch rename to patches/server/0673-Add-ElderGuardianAppearanceEvent.patch diff --git a/patches/server/0675-Fix-dangerous-end-portal-logic.patch b/patches/server/0674-Fix-dangerous-end-portal-logic.patch similarity index 100% rename from patches/server/0675-Fix-dangerous-end-portal-logic.patch rename to patches/server/0674-Fix-dangerous-end-portal-logic.patch diff --git a/patches/server/0676-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch b/patches/server/0675-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch similarity index 100% rename from patches/server/0676-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch rename to patches/server/0675-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch diff --git a/patches/server/0677-Make-item-validations-configurable.patch b/patches/server/0676-Make-item-validations-configurable.patch similarity index 100% rename from patches/server/0677-Make-item-validations-configurable.patch rename to patches/server/0676-Make-item-validations-configurable.patch diff --git a/patches/server/0678-Line-Of-Sight-Changes.patch b/patches/server/0677-Line-Of-Sight-Changes.patch similarity index 100% rename from patches/server/0678-Line-Of-Sight-Changes.patch rename to patches/server/0677-Line-Of-Sight-Changes.patch diff --git a/patches/server/0679-add-per-world-spawn-limits.patch b/patches/server/0678-add-per-world-spawn-limits.patch similarity index 100% rename from patches/server/0679-add-per-world-spawn-limits.patch rename to patches/server/0678-add-per-world-spawn-limits.patch diff --git a/patches/server/0680-Fix-PotionSplashEvent-for-water-splash-potions.patch b/patches/server/0679-Fix-PotionSplashEvent-for-water-splash-potions.patch similarity index 100% rename from patches/server/0680-Fix-PotionSplashEvent-for-water-splash-potions.patch rename to patches/server/0679-Fix-PotionSplashEvent-for-water-splash-potions.patch diff --git a/patches/server/0681-Add-more-LimitedRegion-API.patch b/patches/server/0680-Add-more-LimitedRegion-API.patch similarity index 100% rename from patches/server/0681-Add-more-LimitedRegion-API.patch rename to patches/server/0680-Add-more-LimitedRegion-API.patch diff --git a/patches/server/0682-Fix-PlayerDropItemEvent-using-wrong-item.patch b/patches/server/0681-Fix-PlayerDropItemEvent-using-wrong-item.patch similarity index 100% rename from patches/server/0682-Fix-PlayerDropItemEvent-using-wrong-item.patch rename to patches/server/0681-Fix-PlayerDropItemEvent-using-wrong-item.patch diff --git a/patches/server/0683-Missing-Entity-Behavior-API.patch b/patches/server/0682-Missing-Entity-Behavior-API.patch similarity index 100% rename from patches/server/0683-Missing-Entity-Behavior-API.patch rename to patches/server/0682-Missing-Entity-Behavior-API.patch diff --git a/patches/server/0684-Ensure-disconnect-for-book-edit-is-called-on-main.patch b/patches/server/0683-Ensure-disconnect-for-book-edit-is-called-on-main.patch similarity index 100% rename from patches/server/0684-Ensure-disconnect-for-book-edit-is-called-on-main.patch rename to patches/server/0683-Ensure-disconnect-for-book-edit-is-called-on-main.patch diff --git a/patches/server/0685-Fix-return-value-of-Block-applyBoneMeal-always-being.patch b/patches/server/0684-Fix-return-value-of-Block-applyBoneMeal-always-being.patch similarity index 100% rename from patches/server/0685-Fix-return-value-of-Block-applyBoneMeal-always-being.patch rename to patches/server/0684-Fix-return-value-of-Block-applyBoneMeal-always-being.patch diff --git a/patches/server/0686-Use-getChunkIfLoadedImmediately-in-places.patch b/patches/server/0685-Use-getChunkIfLoadedImmediately-in-places.patch similarity index 100% rename from patches/server/0686-Use-getChunkIfLoadedImmediately-in-places.patch rename to patches/server/0685-Use-getChunkIfLoadedImmediately-in-places.patch diff --git a/patches/server/0687-Fix-commands-from-signs-not-firing-command-events.patch b/patches/server/0686-Fix-commands-from-signs-not-firing-command-events.patch similarity index 100% rename from patches/server/0687-Fix-commands-from-signs-not-firing-command-events.patch rename to patches/server/0686-Fix-commands-from-signs-not-firing-command-events.patch diff --git a/patches/server/0688-Adds-PlayerArmSwingEvent.patch b/patches/server/0687-Adds-PlayerArmSwingEvent.patch similarity index 100% rename from patches/server/0688-Adds-PlayerArmSwingEvent.patch rename to patches/server/0687-Adds-PlayerArmSwingEvent.patch diff --git a/patches/server/0689-Fixes-kick-event-leave-message-not-being-sent.patch b/patches/server/0688-Fixes-kick-event-leave-message-not-being-sent.patch similarity index 100% rename from patches/server/0689-Fixes-kick-event-leave-message-not-being-sent.patch rename to patches/server/0688-Fixes-kick-event-leave-message-not-being-sent.patch diff --git a/patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch b/patches/server/0689-Add-config-for-mobs-immune-to-default-effects.patch similarity index 100% rename from patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch rename to patches/server/0689-Add-config-for-mobs-immune-to-default-effects.patch diff --git a/patches/server/0691-Fix-incorrect-message-for-outdated-client.patch b/patches/server/0690-Fix-incorrect-message-for-outdated-client.patch similarity index 100% rename from patches/server/0691-Fix-incorrect-message-for-outdated-client.patch rename to patches/server/0690-Fix-incorrect-message-for-outdated-client.patch diff --git a/patches/server/0692-Don-t-apply-cramming-damage-to-players.patch b/patches/server/0691-Don-t-apply-cramming-damage-to-players.patch similarity index 100% rename from patches/server/0692-Don-t-apply-cramming-damage-to-players.patch rename to patches/server/0691-Don-t-apply-cramming-damage-to-players.patch diff --git a/patches/server/0693-Rate-options-and-timings-for-sensors-and-behaviors.patch b/patches/server/0692-Rate-options-and-timings-for-sensors-and-behaviors.patch similarity index 100% rename from patches/server/0693-Rate-options-and-timings-for-sensors-and-behaviors.patch rename to patches/server/0692-Rate-options-and-timings-for-sensors-and-behaviors.patch diff --git a/patches/server/0694-Add-a-bunch-of-missing-forceDrop-toggles.patch b/patches/server/0693-Add-a-bunch-of-missing-forceDrop-toggles.patch similarity index 100% rename from patches/server/0694-Add-a-bunch-of-missing-forceDrop-toggles.patch rename to patches/server/0693-Add-a-bunch-of-missing-forceDrop-toggles.patch diff --git a/patches/server/0695-Stinger-API.patch b/patches/server/0694-Stinger-API.patch similarity index 100% rename from patches/server/0695-Stinger-API.patch rename to patches/server/0694-Stinger-API.patch diff --git a/patches/server/0696-Fix-incosistency-issue-with-empty-map-items-in-CB.patch b/patches/server/0695-Fix-incosistency-issue-with-empty-map-items-in-CB.patch similarity index 100% rename from patches/server/0696-Fix-incosistency-issue-with-empty-map-items-in-CB.patch rename to patches/server/0695-Fix-incosistency-issue-with-empty-map-items-in-CB.patch diff --git a/patches/server/0697-Add-System.out-err-catcher.patch b/patches/server/0696-Add-System.out-err-catcher.patch similarity index 100% rename from patches/server/0697-Add-System.out-err-catcher.patch rename to patches/server/0696-Add-System.out-err-catcher.patch diff --git a/patches/server/0698-Fix-test-not-bootstrapping.patch b/patches/server/0697-Fix-test-not-bootstrapping.patch similarity index 100% rename from patches/server/0698-Fix-test-not-bootstrapping.patch rename to patches/server/0697-Fix-test-not-bootstrapping.patch diff --git a/patches/server/0699-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch b/patches/server/0698-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch similarity index 100% rename from patches/server/0699-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch rename to patches/server/0698-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch diff --git a/patches/server/0700-Improve-boat-collision-performance.patch b/patches/server/0699-Improve-boat-collision-performance.patch similarity index 100% rename from patches/server/0700-Improve-boat-collision-performance.patch rename to patches/server/0699-Improve-boat-collision-performance.patch diff --git a/patches/server/0701-Prevent-AFK-kick-while-watching-end-credits.patch b/patches/server/0700-Prevent-AFK-kick-while-watching-end-credits.patch similarity index 100% rename from patches/server/0701-Prevent-AFK-kick-while-watching-end-credits.patch rename to patches/server/0700-Prevent-AFK-kick-while-watching-end-credits.patch diff --git a/patches/server/0702-Allow-skipping-writing-of-comments-to-server.propert.patch b/patches/server/0701-Allow-skipping-writing-of-comments-to-server.propert.patch similarity index 100% rename from patches/server/0702-Allow-skipping-writing-of-comments-to-server.propert.patch rename to patches/server/0701-Allow-skipping-writing-of-comments-to-server.propert.patch diff --git a/patches/server/0703-Add-PlayerSetSpawnEvent.patch b/patches/server/0702-Add-PlayerSetSpawnEvent.patch similarity index 100% rename from patches/server/0703-Add-PlayerSetSpawnEvent.patch rename to patches/server/0702-Add-PlayerSetSpawnEvent.patch diff --git a/patches/server/0704-Make-hoppers-respect-inventory-max-stack-size.patch b/patches/server/0703-Make-hoppers-respect-inventory-max-stack-size.patch similarity index 100% rename from patches/server/0704-Make-hoppers-respect-inventory-max-stack-size.patch rename to patches/server/0703-Make-hoppers-respect-inventory-max-stack-size.patch diff --git a/patches/server/0705-Optimize-entity-tracker-passenger-checks.patch b/patches/server/0704-Optimize-entity-tracker-passenger-checks.patch similarity index 100% rename from patches/server/0705-Optimize-entity-tracker-passenger-checks.patch rename to patches/server/0704-Optimize-entity-tracker-passenger-checks.patch diff --git a/patches/server/0706-Config-option-for-Piglins-guarding-chests.patch b/patches/server/0705-Config-option-for-Piglins-guarding-chests.patch similarity index 100% rename from patches/server/0706-Config-option-for-Piglins-guarding-chests.patch rename to patches/server/0705-Config-option-for-Piglins-guarding-chests.patch diff --git a/patches/server/0707-Added-EntityDamageItemEvent.patch b/patches/server/0706-Added-EntityDamageItemEvent.patch similarity index 100% rename from patches/server/0707-Added-EntityDamageItemEvent.patch rename to patches/server/0706-Added-EntityDamageItemEvent.patch diff --git a/patches/server/0708-Optimize-indirect-passenger-iteration.patch b/patches/server/0707-Optimize-indirect-passenger-iteration.patch similarity index 100% rename from patches/server/0708-Optimize-indirect-passenger-iteration.patch rename to patches/server/0707-Optimize-indirect-passenger-iteration.patch diff --git a/patches/server/0709-Fix-block-drops-position-losing-precision-millions-o.patch b/patches/server/0708-Fix-block-drops-position-losing-precision-millions-o.patch similarity index 100% rename from patches/server/0709-Fix-block-drops-position-losing-precision-millions-o.patch rename to patches/server/0708-Fix-block-drops-position-losing-precision-millions-o.patch diff --git a/patches/server/0710-Configurable-item-frame-map-cursor-update-interval.patch b/patches/server/0709-Configurable-item-frame-map-cursor-update-interval.patch similarity index 100% rename from patches/server/0710-Configurable-item-frame-map-cursor-update-interval.patch rename to patches/server/0709-Configurable-item-frame-map-cursor-update-interval.patch diff --git a/patches/server/0711-Make-EntityUnleashEvent-cancellable.patch b/patches/server/0710-Make-EntityUnleashEvent-cancellable.patch similarity index 96% rename from patches/server/0711-Make-EntityUnleashEvent-cancellable.patch rename to patches/server/0710-Make-EntityUnleashEvent-cancellable.patch index daed1facee..d931421cc4 100644 --- a/patches/server/0711-Make-EntityUnleashEvent-cancellable.patch +++ b/patches/server/0710-Make-EntityUnleashEvent-cancellable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make EntityUnleashEvent cancellable diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 4566037b8772e81cc28ed3cb3a6b756da85c7260..72888f28583d89f5cc38b6d6628f6557df16638b 100644 +index 79c298334a1a2171ef6aca94114edf72ffb67ba1..736b51e411b009db0482d9a72f179cc7b6241265 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1465,7 +1465,7 @@ public abstract class Mob extends LivingEntity { diff --git a/patches/server/0712-Clear-bucket-NBT-after-dispense.patch b/patches/server/0711-Clear-bucket-NBT-after-dispense.patch similarity index 100% rename from patches/server/0712-Clear-bucket-NBT-after-dispense.patch rename to patches/server/0711-Clear-bucket-NBT-after-dispense.patch diff --git a/patches/server/0713-Respect-despawn-rate-in-item-merge-check.patch b/patches/server/0712-Respect-despawn-rate-in-item-merge-check.patch similarity index 100% rename from patches/server/0713-Respect-despawn-rate-in-item-merge-check.patch rename to patches/server/0712-Respect-despawn-rate-in-item-merge-check.patch diff --git a/patches/server/0714-Change-EnderEye-target-without-changing-other-things.patch b/patches/server/0713-Change-EnderEye-target-without-changing-other-things.patch similarity index 100% rename from patches/server/0714-Change-EnderEye-target-without-changing-other-things.patch rename to patches/server/0713-Change-EnderEye-target-without-changing-other-things.patch diff --git a/patches/server/0715-Add-BlockBreakBlockEvent.patch b/patches/server/0714-Add-BlockBreakBlockEvent.patch similarity index 100% rename from patches/server/0715-Add-BlockBreakBlockEvent.patch rename to patches/server/0714-Add-BlockBreakBlockEvent.patch diff --git a/patches/server/0716-Option-to-prevent-NBT-copy-in-smithing-recipes.patch b/patches/server/0715-Option-to-prevent-NBT-copy-in-smithing-recipes.patch similarity index 100% rename from patches/server/0716-Option-to-prevent-NBT-copy-in-smithing-recipes.patch rename to patches/server/0715-Option-to-prevent-NBT-copy-in-smithing-recipes.patch diff --git a/patches/server/0717-More-CommandBlock-API.patch b/patches/server/0716-More-CommandBlock-API.patch similarity index 100% rename from patches/server/0717-More-CommandBlock-API.patch rename to patches/server/0716-More-CommandBlock-API.patch diff --git a/patches/server/0718-Add-missing-team-sidebar-display-slots.patch b/patches/server/0717-Add-missing-team-sidebar-display-slots.patch similarity index 100% rename from patches/server/0718-Add-missing-team-sidebar-display-slots.patch rename to patches/server/0717-Add-missing-team-sidebar-display-slots.patch diff --git a/patches/server/0719-Add-back-EntityPortalExitEvent.patch b/patches/server/0718-Add-back-EntityPortalExitEvent.patch similarity index 100% rename from patches/server/0719-Add-back-EntityPortalExitEvent.patch rename to patches/server/0718-Add-back-EntityPortalExitEvent.patch diff --git a/patches/server/0720-Add-methods-to-find-targets-for-lightning-strikes.patch b/patches/server/0719-Add-methods-to-find-targets-for-lightning-strikes.patch similarity index 100% rename from patches/server/0720-Add-methods-to-find-targets-for-lightning-strikes.patch rename to patches/server/0719-Add-methods-to-find-targets-for-lightning-strikes.patch diff --git a/patches/server/0721-Get-entity-default-attributes.patch b/patches/server/0720-Get-entity-default-attributes.patch similarity index 100% rename from patches/server/0721-Get-entity-default-attributes.patch rename to patches/server/0720-Get-entity-default-attributes.patch diff --git a/patches/server/0722-Left-handed-API.patch b/patches/server/0721-Left-handed-API.patch similarity index 100% rename from patches/server/0722-Left-handed-API.patch rename to patches/server/0721-Left-handed-API.patch diff --git a/patches/server/0723-Add-advancement-display-API.patch b/patches/server/0722-Add-advancement-display-API.patch similarity index 100% rename from patches/server/0723-Add-advancement-display-API.patch rename to patches/server/0722-Add-advancement-display-API.patch diff --git a/patches/server/0724-Add-ItemFactory-getMonsterEgg-API.patch b/patches/server/0723-Add-ItemFactory-getMonsterEgg-API.patch similarity index 100% rename from patches/server/0724-Add-ItemFactory-getMonsterEgg-API.patch rename to patches/server/0723-Add-ItemFactory-getMonsterEgg-API.patch diff --git a/patches/server/0725-Add-critical-damage-API.patch b/patches/server/0724-Add-critical-damage-API.patch similarity index 100% rename from patches/server/0725-Add-critical-damage-API.patch rename to patches/server/0724-Add-critical-damage-API.patch diff --git a/patches/server/0726-Fix-issues-with-mob-conversion.patch b/patches/server/0725-Fix-issues-with-mob-conversion.patch similarity index 100% rename from patches/server/0726-Fix-issues-with-mob-conversion.patch rename to patches/server/0725-Fix-issues-with-mob-conversion.patch diff --git a/patches/server/0727-Add-isCollidable-methods-to-various-places.patch b/patches/server/0726-Add-isCollidable-methods-to-various-places.patch similarity index 100% rename from patches/server/0727-Add-isCollidable-methods-to-various-places.patch rename to patches/server/0726-Add-isCollidable-methods-to-various-places.patch diff --git a/patches/server/0728-Goat-ram-API.patch b/patches/server/0727-Goat-ram-API.patch similarity index 100% rename from patches/server/0728-Goat-ram-API.patch rename to patches/server/0727-Goat-ram-API.patch diff --git a/patches/server/0729-Add-API-for-resetting-a-single-score.patch b/patches/server/0728-Add-API-for-resetting-a-single-score.patch similarity index 100% rename from patches/server/0729-Add-API-for-resetting-a-single-score.patch rename to patches/server/0728-Add-API-for-resetting-a-single-score.patch diff --git a/patches/server/0730-Add-Raw-Byte-Entity-Serialization.patch b/patches/server/0729-Add-Raw-Byte-Entity-Serialization.patch similarity index 100% rename from patches/server/0730-Add-Raw-Byte-Entity-Serialization.patch rename to patches/server/0729-Add-Raw-Byte-Entity-Serialization.patch diff --git a/patches/server/0731-Vanilla-command-permission-fixes.patch b/patches/server/0730-Vanilla-command-permission-fixes.patch similarity index 100% rename from patches/server/0731-Vanilla-command-permission-fixes.patch rename to patches/server/0730-Vanilla-command-permission-fixes.patch diff --git a/patches/server/0732-Make-CallbackExecutor-strict-again.patch b/patches/server/0731-Make-CallbackExecutor-strict-again.patch similarity index 95% rename from patches/server/0732-Make-CallbackExecutor-strict-again.patch rename to patches/server/0731-Make-CallbackExecutor-strict-again.patch index 85598f01ba..9157c7a0e3 100644 --- a/patches/server/0732-Make-CallbackExecutor-strict-again.patch +++ b/patches/server/0731-Make-CallbackExecutor-strict-again.patch @@ -10,7 +10,7 @@ schedules. Effectively, use the callback executor as a tool of finding issues rather than hiding these issues. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index b44f1dc663dc3c081ec85941a2cd73e522e3c348..23aeeea2b05941d8f31c720567532510bea5abb3 100644 +index a737fb56fef791f53ed3b0252e5a0369c22bcc7d..2d706507abc74b9fdc76958acd97dc3c6417eada 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -160,17 +160,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider diff --git a/patches/server/0733-Do-not-allow-the-server-to-unload-chunks-at-request-.patch b/patches/server/0732-Do-not-allow-the-server-to-unload-chunks-at-request-.patch similarity index 92% rename from patches/server/0733-Do-not-allow-the-server-to-unload-chunks-at-request-.patch rename to patches/server/0732-Do-not-allow-the-server-to-unload-chunks-at-request-.patch index 17cc7a7420..8e1bf74090 100644 --- a/patches/server/0733-Do-not-allow-the-server-to-unload-chunks-at-request-.patch +++ b/patches/server/0732-Do-not-allow-the-server-to-unload-chunks-at-request-.patch @@ -10,7 +10,7 @@ to be unloaded will simply be unloaded next tick, rather than immediately. diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index dcb65eb4e5790e12ebe83b0d25b5a8c7a8bfbb6b..d1d6f4b75e807c8ea485cadd04a3ad1fc7d587bf 100644 +index 3b0e254f569576a6193750811c06f1c102a2aeac..55cc46fb065246ef9fc8332ecc1db75a20986c81 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -884,6 +884,7 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0734-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch b/patches/server/0733-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch similarity index 100% rename from patches/server/0734-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch rename to patches/server/0733-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch diff --git a/patches/server/0735-Correctly-handle-recursion-for-chunkholder-updates.patch b/patches/server/0734-Correctly-handle-recursion-for-chunkholder-updates.patch similarity index 100% rename from patches/server/0735-Correctly-handle-recursion-for-chunkholder-updates.patch rename to patches/server/0734-Correctly-handle-recursion-for-chunkholder-updates.patch diff --git a/patches/server/0736-Separate-lookup-locking-from-state-access-in-UserCac.patch b/patches/server/0735-Separate-lookup-locking-from-state-access-in-UserCac.patch similarity index 100% rename from patches/server/0736-Separate-lookup-locking-from-state-access-in-UserCac.patch rename to patches/server/0735-Separate-lookup-locking-from-state-access-in-UserCac.patch diff --git a/patches/server/0737-Fix-chunks-refusing-to-unload-at-low-TPS.patch b/patches/server/0736-Fix-chunks-refusing-to-unload-at-low-TPS.patch similarity index 88% rename from patches/server/0737-Fix-chunks-refusing-to-unload-at-low-TPS.patch rename to patches/server/0736-Fix-chunks-refusing-to-unload-at-low-TPS.patch index 09cdb63fdd..52f11c055c 100644 --- a/patches/server/0737-Fix-chunks-refusing-to-unload-at-low-TPS.patch +++ b/patches/server/0736-Fix-chunks-refusing-to-unload-at-low-TPS.patch @@ -10,10 +10,10 @@ chunk future to complete. We can simply schedule to the immediate executor to get this effect, rather than the main mailbox. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 23aeeea2b05941d8f31c720567532510bea5abb3..4a36952d81b92ed3cf8b5be8cbb6f0353d64a6d7 100644 +index 2d706507abc74b9fdc76958acd97dc3c6417eada..382532963a856478aa663d9b66e2169eaa36aefc 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1250,9 +1250,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1272,9 +1272,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return chunk; }); diff --git a/patches/server/0738-Do-not-allow-ticket-level-changes-while-unloading-pl.patch b/patches/server/0737-Do-not-allow-ticket-level-changes-while-unloading-pl.patch similarity index 89% rename from patches/server/0738-Do-not-allow-ticket-level-changes-while-unloading-pl.patch rename to patches/server/0737-Do-not-allow-ticket-level-changes-while-unloading-pl.patch index 5d0b400297..9ddac76d98 100644 --- a/patches/server/0738-Do-not-allow-ticket-level-changes-while-unloading-pl.patch +++ b/patches/server/0737-Do-not-allow-ticket-level-changes-while-unloading-pl.patch @@ -8,10 +8,10 @@ Sync loading the chunk at this stage would cause it to load older data, as well as screwing our region state. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 4a36952d81b92ed3cf8b5be8cbb6f0353d64a6d7..65b58b8a88a72c27bd10387a46dd3822c376ccd3 100644 +index 382532963a856478aa663d9b66e2169eaa36aefc..ba5dab2d3bc8325e5678ef58fedac5b2bc7e38d3 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -293,6 +293,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -309,6 +309,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } // Paper end @@ -19,7 +19,7 @@ index 4a36952d81b92ed3cf8b5be8cbb6f0353d64a6d7..65b58b8a88a72c27bd10387a46dd3822 public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureManager structureManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { super(session.getDimensionPath(world.dimension()).resolve("region"), dataFixer, dsync); this.visibleChunkMap = this.updatingChunkMap.clone(); -@@ -649,6 +650,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -671,6 +672,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @Nullable ChunkHolder updateChunkScheduling(long pos, int level, @Nullable ChunkHolder holder, int k) { @@ -27,7 +27,7 @@ index 4a36952d81b92ed3cf8b5be8cbb6f0353d64a6d7..65b58b8a88a72c27bd10387a46dd3822 if (k > ChunkMap.MAX_CHUNK_DISTANCE && level > ChunkMap.MAX_CHUNK_DISTANCE) { return holder; } else { -@@ -861,6 +863,12 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -883,6 +885,12 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider if (completablefuture1 != completablefuture) { this.scheduleUnload(pos, holder); } else { @@ -40,7 +40,7 @@ index 4a36952d81b92ed3cf8b5be8cbb6f0353d64a6d7..65b58b8a88a72c27bd10387a46dd3822 // Paper start boolean removed; if ((removed = this.pendingUnloads.remove(pos, holder)) && ichunkaccess != null) { -@@ -897,6 +905,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -919,6 +927,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.regionManagers.get(index).removeChunk(holder.pos.x, holder.pos.z); } } // Paper end @@ -49,7 +49,7 @@ index 4a36952d81b92ed3cf8b5be8cbb6f0353d64a6d7..65b58b8a88a72c27bd10387a46dd3822 } }; diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index d1d6f4b75e807c8ea485cadd04a3ad1fc7d587bf..f871b8569f9812ee93b16fe9e45ea1a1c4f8f4aa 100644 +index 55cc46fb065246ef9fc8332ecc1db75a20986c81..b3b10baad56bf14a31a11a3375000195ce84d4d3 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -820,6 +820,7 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0739-Do-not-allow-ticket-level-changes-when-updating-chun.patch b/patches/server/0738-Do-not-allow-ticket-level-changes-when-updating-chun.patch similarity index 100% rename from patches/server/0739-Do-not-allow-ticket-level-changes-when-updating-chun.patch rename to patches/server/0738-Do-not-allow-ticket-level-changes-when-updating-chun.patch diff --git a/patches/server/0740-Do-not-submit-profile-lookups-to-worldgen-threads.patch b/patches/server/0739-Do-not-submit-profile-lookups-to-worldgen-threads.patch similarity index 100% rename from patches/server/0740-Do-not-submit-profile-lookups-to-worldgen-threads.patch rename to patches/server/0739-Do-not-submit-profile-lookups-to-worldgen-threads.patch diff --git a/patches/server/0741-Log-when-the-async-catcher-is-tripped.patch b/patches/server/0740-Log-when-the-async-catcher-is-tripped.patch similarity index 100% rename from patches/server/0741-Log-when-the-async-catcher-is-tripped.patch rename to patches/server/0740-Log-when-the-async-catcher-is-tripped.patch diff --git a/patches/server/0742-Add-paper-mobcaps-and-paper-playermobcaps.patch b/patches/server/0741-Add-paper-mobcaps-and-paper-playermobcaps.patch similarity index 99% rename from patches/server/0742-Add-paper-mobcaps-and-paper-playermobcaps.patch rename to patches/server/0741-Add-paper-mobcaps-and-paper-playermobcaps.patch index 79ed1c8447..a5bfbed6e1 100644 --- a/patches/server/0742-Add-paper-mobcaps-and-paper-playermobcaps.patch +++ b/patches/server/0741-Add-paper-mobcaps-and-paper-playermobcaps.patch @@ -272,7 +272,7 @@ index f436ab35798c9b6e6cb2eb60d2c02cbf9b742e69..4d7575087947f3b199dd895cd9aa02a7 List worlds; if (args.length < 2 || args[1].equals("*")) { diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 3a9e20bdf445c019e60a814ea6fc267758df10ed..4e18272192fc3bbb22cc98f2640480c30a056239 100644 +index c0fb5d445ed18fbf52df2be754eab0d8fb6e9239..abb57345a97f36d05eab9bc96ffd6396926c219f 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -148,32 +148,16 @@ public final class NaturalSpawner { @@ -317,7 +317,7 @@ index 3a9e20bdf445c019e60a814ea6fc267758df10ed..4e18272192fc3bbb22cc98f2640480c3 } if (!spawnThisTick || limit == 0) { -@@ -211,6 +195,28 @@ public final class NaturalSpawner { +@@ -218,6 +202,28 @@ public final class NaturalSpawner { world.getProfiler().pop(); } diff --git a/patches/server/0743-Prevent-unload-calls-removing-tickets-for-sync-loads.patch b/patches/server/0742-Prevent-unload-calls-removing-tickets-for-sync-loads.patch similarity index 98% rename from patches/server/0743-Prevent-unload-calls-removing-tickets-for-sync-loads.patch rename to patches/server/0742-Prevent-unload-calls-removing-tickets-for-sync-loads.patch index 613b2742ad..14502c64a4 100644 --- a/patches/server/0743-Prevent-unload-calls-removing-tickets-for-sync-loads.patch +++ b/patches/server/0742-Prevent-unload-calls-removing-tickets-for-sync-loads.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent unload() calls removing tickets for sync loads diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index f871b8569f9812ee93b16fe9e45ea1a1c4f8f4aa..e306dbf3487676e01c483d121c1f26e141358e3f 100644 +index b3b10baad56bf14a31a11a3375000195ce84d4d3..7c3a1622f161409e92c4ccfa13e8c1fc1d66c947 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -725,6 +725,8 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0744-Sanitize-ResourceLocation-error-logging.patch b/patches/server/0743-Sanitize-ResourceLocation-error-logging.patch similarity index 100% rename from patches/server/0744-Sanitize-ResourceLocation-error-logging.patch rename to patches/server/0743-Sanitize-ResourceLocation-error-logging.patch diff --git a/patches/server/0745-Optimise-general-POI-access.patch b/patches/server/0744-Optimise-general-POI-access.patch similarity index 100% rename from patches/server/0745-Optimise-general-POI-access.patch rename to patches/server/0744-Optimise-general-POI-access.patch diff --git a/patches/server/0746-Allow-controlled-flushing-for-network-manager.patch b/patches/server/0745-Allow-controlled-flushing-for-network-manager.patch similarity index 100% rename from patches/server/0746-Allow-controlled-flushing-for-network-manager.patch rename to patches/server/0745-Allow-controlled-flushing-for-network-manager.patch diff --git a/patches/server/0747-Add-more-async-catchers.patch b/patches/server/0746-Add-more-async-catchers.patch similarity index 100% rename from patches/server/0747-Add-more-async-catchers.patch rename to patches/server/0746-Add-more-async-catchers.patch diff --git a/patches/server/0748-Rewrite-entity-bounding-box-lookup-calls.patch b/patches/server/0747-Rewrite-entity-bounding-box-lookup-calls.patch similarity index 100% rename from patches/server/0748-Rewrite-entity-bounding-box-lookup-calls.patch rename to patches/server/0747-Rewrite-entity-bounding-box-lookup-calls.patch diff --git a/patches/server/0749-Optimise-chunk-tick-iteration.patch b/patches/server/0748-Optimise-chunk-tick-iteration.patch similarity index 95% rename from patches/server/0749-Optimise-chunk-tick-iteration.patch rename to patches/server/0748-Optimise-chunk-tick-iteration.patch index 1f7e35fe3a..f640eb1f10 100644 --- a/patches/server/0749-Optimise-chunk-tick-iteration.patch +++ b/patches/server/0748-Optimise-chunk-tick-iteration.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Optimise chunk tick iteration Use a dedicated list of entity ticking chunks to reduce the cost diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index e306dbf3487676e01c483d121c1f26e141358e3f..482676d325a7d502fd74a67236eb05d97fac1d85 100644 +index 7c3a1622f161409e92c4ccfa13e8c1fc1d66c947..f7b2fa30eac4da6847d77fd3b2bdd73349b41822 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -999,34 +999,46 @@ public class ServerChunkCache extends ChunkSource { +@@ -995,34 +995,46 @@ public class ServerChunkCache extends ChunkSource { this.lastSpawnState = spawnercreature_d; gameprofilerfiller.popPush("filteringLoadedChunks"); @@ -72,7 +72,7 @@ index e306dbf3487676e01c483d121c1f26e141358e3f..482676d325a7d502fd74a67236eb05d9 NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1); } -@@ -1034,7 +1046,16 @@ public class ServerChunkCache extends ChunkSource { +@@ -1030,7 +1042,16 @@ public class ServerChunkCache extends ChunkSource { this.level.tickChunk(chunk1, k); } } @@ -89,7 +89,7 @@ index e306dbf3487676e01c483d121c1f26e141358e3f..482676d325a7d502fd74a67236eb05d9 this.level.timings.chunkTicks.stopTiming(); // Paper gameprofilerfiller.popPush("customSpawners"); if (flag2) { -@@ -1043,13 +1064,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -1039,13 +1060,7 @@ public class ServerChunkCache extends ChunkSource { } // Paper - timings } diff --git a/patches/server/0750-Execute-chunk-tasks-mid-tick.patch b/patches/server/0749-Execute-chunk-tasks-mid-tick.patch similarity index 97% rename from patches/server/0750-Execute-chunk-tasks-mid-tick.patch rename to patches/server/0749-Execute-chunk-tasks-mid-tick.patch index ee3d082d78..526c48c813 100644 --- a/patches/server/0750-Execute-chunk-tasks-mid-tick.patch +++ b/patches/server/0749-Execute-chunk-tasks-mid-tick.patch @@ -108,10 +108,10 @@ index 088334869cb62797a1e1d1bbb6187f03189d852d..c245c1f4611f7273c8da629f774e0c64 } else { if (this.haveTime()) { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 482676d325a7d502fd74a67236eb05d97fac1d85..1560a58aa32d281870a9cc8213ec7b089e4cf4ba 100644 +index f7b2fa30eac4da6847d77fd3b2bdd73349b41822..05f2fad85da8192d097c2349e630349f6c61754c 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -1023,6 +1023,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -1019,6 +1019,7 @@ public class ServerChunkCache extends ChunkSource { iterator1 = shuffled.iterator(); } @@ -119,7 +119,7 @@ index 482676d325a7d502fd74a67236eb05d97fac1d85..1560a58aa32d281870a9cc8213ec7b08 try { while (iterator1.hasNext()) { LevelChunk chunk1 = iterator1.next(); -@@ -1044,6 +1045,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -1040,6 +1041,7 @@ public class ServerChunkCache extends ChunkSource { if (this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { this.level.tickChunk(chunk1, k); diff --git a/patches/server/0751-Do-not-copy-visible-chunks.patch b/patches/server/0750-Do-not-copy-visible-chunks.patch similarity index 94% rename from patches/server/0751-Do-not-copy-visible-chunks.patch rename to patches/server/0750-Do-not-copy-visible-chunks.patch index 896c5f9e7f..b18c434422 100644 --- a/patches/server/0751-Do-not-copy-visible-chunks.patch +++ b/patches/server/0750-Do-not-copy-visible-chunks.patch @@ -35,7 +35,7 @@ index b3516862d796c2d9fcc1c67a6073445403d73088..b61abf227a04b4565c2525e5f469db30 List allChunks = new ArrayList<>(visibleChunks.values()); List players = world.players; diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87eeaddb16 100644 +index ba5dab2d3bc8325e5678ef58fedac5b2bc7e38d3..7353b4e43503b371973c2de6a61e5ca91d613680 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -120,9 +120,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -52,7 +52,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 private final Long2ObjectLinkedOpenHashMap pendingUnloads; public final LongSet entitiesInLevel; public final ServerLevel level; -@@ -296,7 +298,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -312,7 +314,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider boolean unloadingPlayerChunk = false; // Paper - do not allow ticket level changes while unloading chunks public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureManager structureManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { super(session.getDimensionPath(world.dimension()).resolve("region"), dataFixer, dsync); @@ -61,7 +61,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 this.pendingUnloads = new Long2ObjectLinkedOpenHashMap(); this.entitiesInLevel = new LongOpenHashSet(); this.toDrop = new LongOpenHashSet(); -@@ -513,12 +515,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -535,12 +537,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @Nullable public ChunkHolder getUpdatingChunkIfPresent(long pos) { @@ -81,7 +81,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 } protected IntSupplier getChunkQueueLevel(long pos) { -@@ -680,7 +687,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -702,7 +709,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper end } @@ -90,7 +90,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 this.modified = true; } -@@ -760,7 +767,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -782,7 +789,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider protected void saveAllChunks(boolean flush) { if (flush) { @@ -99,7 +99,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 MutableBoolean mutableboolean = new MutableBoolean(); do { -@@ -791,7 +798,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -813,7 +820,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider //this.flushWorker(); // Paper - nuke IOWorker this.level.asyncChunkTaskManager.flush(); // Paper - flush to preserve behavior compat with pre-async behaviour } else { @@ -108,7 +108,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 } } -@@ -825,7 +832,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -847,7 +854,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider while (longiterator.hasNext()) { // Spigot long j = longiterator.nextLong(); longiterator.remove(); // Spigot @@ -117,7 +117,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 if (playerchunk != null) { this.pendingUnloads.put(j, playerchunk); -@@ -924,7 +931,12 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -946,7 +953,12 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider if (!this.modified) { return false; } else { @@ -131,7 +131,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 this.modified = false; return true; } -@@ -1402,7 +1414,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1424,7 +1436,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.viewDistance = j; this.distanceManager.updatePlayerTickets(this.viewDistance + 1); @@ -140,7 +140,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 while (objectiterator.hasNext()) { ChunkHolder playerchunk = (ChunkHolder) objectiterator.next(); -@@ -1445,7 +1457,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1467,7 +1479,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public int size() { @@ -149,7 +149,7 @@ index 65b58b8a88a72c27bd10387a46dd3822c376ccd3..47f78643d226932093f14b3f536fdb87 } public DistanceManager getDistanceManager() { -@@ -1453,13 +1465,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1475,13 +1487,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } protected Iterable getChunks() { diff --git a/patches/server/0752-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch b/patches/server/0751-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch similarity index 100% rename from patches/server/0752-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch rename to patches/server/0751-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch diff --git a/patches/server/0753-Custom-table-implementation-for-blockstate-state-loo.patch b/patches/server/0752-Custom-table-implementation-for-blockstate-state-loo.patch similarity index 100% rename from patches/server/0753-Custom-table-implementation-for-blockstate-state-loo.patch rename to patches/server/0752-Custom-table-implementation-for-blockstate-state-loo.patch diff --git a/patches/server/0754-Detail-more-information-in-watchdog-dumps.patch b/patches/server/0753-Detail-more-information-in-watchdog-dumps.patch similarity index 100% rename from patches/server/0754-Detail-more-information-in-watchdog-dumps.patch rename to patches/server/0753-Detail-more-information-in-watchdog-dumps.patch diff --git a/patches/server/0755-Manually-inline-methods-in-BlockPosition.patch b/patches/server/0754-Manually-inline-methods-in-BlockPosition.patch similarity index 100% rename from patches/server/0755-Manually-inline-methods-in-BlockPosition.patch rename to patches/server/0754-Manually-inline-methods-in-BlockPosition.patch diff --git a/patches/server/0756-Distance-manager-tick-timings.patch b/patches/server/0755-Distance-manager-tick-timings.patch similarity index 96% rename from patches/server/0756-Distance-manager-tick-timings.patch rename to patches/server/0755-Distance-manager-tick-timings.patch index ff8e1591fe..46878c6c13 100644 --- a/patches/server/0756-Distance-manager-tick-timings.patch +++ b/patches/server/0755-Distance-manager-tick-timings.patch @@ -19,7 +19,7 @@ index eada966d7f108a6081be7a848f5c1dfcb1eed676..a977f7483f37df473096b2234dc1308b public static final Timing midTickChunkTasks = Timings.ofSafe("Mid Tick Chunk Tasks"); diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 1560a58aa32d281870a9cc8213ec7b089e4cf4ba..54a9cd342f7c5720388906abf4485594bea57021 100644 +index 05f2fad85da8192d097c2349e630349f6c61754c..631eb52d646309cfbd5b4c7c0621c865967c08e7 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -834,6 +834,7 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0757-Name-craft-scheduler-threads-according-to-the-plugin.patch b/patches/server/0756-Name-craft-scheduler-threads-according-to-the-plugin.patch similarity index 100% rename from patches/server/0757-Name-craft-scheduler-threads-according-to-the-plugin.patch rename to patches/server/0756-Name-craft-scheduler-threads-according-to-the-plugin.patch diff --git a/patches/server/0758-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch b/patches/server/0757-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch similarity index 100% rename from patches/server/0758-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch rename to patches/server/0757-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch diff --git a/patches/server/0759-Add-packet-limiter-config.patch b/patches/server/0758-Add-packet-limiter-config.patch similarity index 100% rename from patches/server/0759-Add-packet-limiter-config.patch rename to patches/server/0758-Add-packet-limiter-config.patch diff --git a/patches/server/0760-Lag-compensate-block-breaking.patch b/patches/server/0759-Lag-compensate-block-breaking.patch similarity index 100% rename from patches/server/0760-Lag-compensate-block-breaking.patch rename to patches/server/0759-Lag-compensate-block-breaking.patch diff --git a/patches/server/0761-Use-correct-LevelStem-registry-when-loading-default-.patch b/patches/server/0760-Use-correct-LevelStem-registry-when-loading-default-.patch similarity index 100% rename from patches/server/0761-Use-correct-LevelStem-registry-when-loading-default-.patch rename to patches/server/0760-Use-correct-LevelStem-registry-when-loading-default-.patch diff --git a/patches/server/0762-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch b/patches/server/0761-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch similarity index 100% rename from patches/server/0762-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch rename to patches/server/0761-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch diff --git a/patches/server/0763-Consolidate-flush-calls-for-entity-tracker-packets.patch b/patches/server/0762-Consolidate-flush-calls-for-entity-tracker-packets.patch similarity index 93% rename from patches/server/0763-Consolidate-flush-calls-for-entity-tracker-packets.patch rename to patches/server/0762-Consolidate-flush-calls-for-entity-tracker-packets.patch index 0692af7e78..2a471a6bb2 100644 --- a/patches/server/0763-Consolidate-flush-calls-for-entity-tracker-packets.patch +++ b/patches/server/0762-Consolidate-flush-calls-for-entity-tracker-packets.patch @@ -22,10 +22,10 @@ With this change I could get all 200 on at 0ms ping. So in general this patch should reduce Netty I/O thread load. diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 54a9cd342f7c5720388906abf4485594bea57021..37e38abe5fd375d93f6a74add23b5a939a7a9994 100644 +index 631eb52d646309cfbd5b4c7c0621c865967c08e7..9a07ccbd12675e501a9aebf89ab85adf6fb658ba 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -1070,7 +1070,24 @@ public class ServerChunkCache extends ChunkSource { +@@ -1066,7 +1066,24 @@ public class ServerChunkCache extends ChunkSource { // Paper - no, iterating just ONCE is expensive enough! Don't do it TWICE! Code moved up gameprofilerfiller.pop(); diff --git a/patches/server/0764-Don-t-lookup-fluid-state-when-raytracing.patch b/patches/server/0763-Don-t-lookup-fluid-state-when-raytracing.patch similarity index 100% rename from patches/server/0764-Don-t-lookup-fluid-state-when-raytracing.patch rename to patches/server/0763-Don-t-lookup-fluid-state-when-raytracing.patch diff --git a/patches/server/0765-Time-scoreboard-search.patch b/patches/server/0764-Time-scoreboard-search.patch similarity index 100% rename from patches/server/0765-Time-scoreboard-search.patch rename to patches/server/0764-Time-scoreboard-search.patch diff --git a/patches/server/0766-Send-full-pos-packets-for-hard-colliding-entities.patch b/patches/server/0765-Send-full-pos-packets-for-hard-colliding-entities.patch similarity index 100% rename from patches/server/0766-Send-full-pos-packets-for-hard-colliding-entities.patch rename to patches/server/0765-Send-full-pos-packets-for-hard-colliding-entities.patch diff --git a/patches/server/0767-Do-not-run-raytrace-logic-for-AIR.patch b/patches/server/0766-Do-not-run-raytrace-logic-for-AIR.patch similarity index 100% rename from patches/server/0767-Do-not-run-raytrace-logic-for-AIR.patch rename to patches/server/0766-Do-not-run-raytrace-logic-for-AIR.patch diff --git a/patches/server/0768-Oprimise-map-impl-for-tracked-players.patch b/patches/server/0767-Oprimise-map-impl-for-tracked-players.patch similarity index 89% rename from patches/server/0768-Oprimise-map-impl-for-tracked-players.patch rename to patches/server/0767-Oprimise-map-impl-for-tracked-players.patch index 42ca053d2f..cdfa81b622 100644 --- a/patches/server/0768-Oprimise-map-impl-for-tracked-players.patch +++ b/patches/server/0767-Oprimise-map-impl-for-tracked-players.patch @@ -7,7 +7,7 @@ Reference2BooleanOpenHashMap is going to have better lookups than HashMap. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 47f78643d226932093f14b3f536fdb87eeaddb16..9b70613762310f50f2c036f3d462b76538d1165f 100644 +index 7353b4e43503b371973c2de6a61e5ca91d613680..31a1a13887bda174181d926d83273a89b59ec789 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -108,6 +108,7 @@ import org.apache.logging.log4j.LogManager; @@ -18,7 +18,7 @@ index 47f78643d226932093f14b3f536fdb87eeaddb16..9b70613762310f50f2c036f3d462b765 public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider { -@@ -2092,7 +2093,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -2114,7 +2115,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider final Entity entity; private final int range; SectionPos lastSectionPos; diff --git a/patches/server/0769-Optimise-BlockSoil-nearby-water-lookup.patch b/patches/server/0768-Optimise-BlockSoil-nearby-water-lookup.patch similarity index 100% rename from patches/server/0769-Optimise-BlockSoil-nearby-water-lookup.patch rename to patches/server/0768-Optimise-BlockSoil-nearby-water-lookup.patch diff --git a/patches/server/0770-Allow-removal-addition-of-entities-to-entity-ticklis.patch b/patches/server/0769-Allow-removal-addition-of-entities-to-entity-ticklis.patch similarity index 100% rename from patches/server/0770-Allow-removal-addition-of-entities-to-entity-ticklis.patch rename to patches/server/0769-Allow-removal-addition-of-entities-to-entity-ticklis.patch diff --git a/patches/server/0771-Optimise-random-block-ticking.patch b/patches/server/0770-Optimise-random-block-ticking.patch similarity index 100% rename from patches/server/0771-Optimise-random-block-ticking.patch rename to patches/server/0770-Optimise-random-block-ticking.patch diff --git a/patches/server/0772-Optimise-non-flush-packet-sending.patch b/patches/server/0771-Optimise-non-flush-packet-sending.patch similarity index 100% rename from patches/server/0772-Optimise-non-flush-packet-sending.patch rename to patches/server/0771-Optimise-non-flush-packet-sending.patch diff --git a/patches/server/0773-Optimise-nearby-player-lookups.patch b/patches/server/0772-Optimise-nearby-player-lookups.patch similarity index 94% rename from patches/server/0773-Optimise-nearby-player-lookups.patch rename to patches/server/0772-Optimise-nearby-player-lookups.patch index e12b800e8a..d330db46cf 100644 --- a/patches/server/0773-Optimise-nearby-player-lookups.patch +++ b/patches/server/0772-Optimise-nearby-player-lookups.patch @@ -26,12 +26,12 @@ index 1f602d50f3212078490c0092ceefd3b17e0b1532..825fdb0336b0388dbbc54c8da9978190 // Paper end - optimise anyPlayerCloseEnoughForSpawning long lastAutoSaveTime; // Paper - incremental autosave diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 9b70613762310f50f2c036f3d462b76538d1165f..db739bc7d10db0e27fdeba24165bbf2951b2802b 100644 +index 075c09e241ca71d21049b71e0b520ba71caebd24..1ceb4f282fdcbe3bc7b75db95a93e547bee227ae 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -159,6 +159,13 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider int viewDistance; - public final com.destroystokyo.paper.util.PlayerMobDistanceMap playerMobDistanceMap; // Paper + public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobDistanceMap; // Paper + // Paper start - optimise checkDespawn + public static final int GENERAL_AREA_MAP_SQUARE_RADIUS = 40; @@ -48,26 +48,26 @@ index 9b70613762310f50f2c036f3d462b76538d1165f..db739bc7d10db0e27fdeba24165bbf29 // Note: players need to be explicitly added to distance maps before they can be updated this.playerChunkTickRangeMap.add(player, chunkX, chunkZ, DistanceManager.MOB_SPAWN_RANGE); // Paper - optimise ChunkMap#anyPlayerCloseEnoughForSpawning + this.playerGeneralAreaMap.add(player, chunkX, chunkZ, GENERAL_AREA_MAP_SQUARE_RADIUS); // Paper - optimise checkDespawn - } - - void removePlayerFromDistanceMaps(ServerPlayer player) { -@@ -248,6 +256,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + // Paper start - per player mob spawning + if (this.playerMobDistanceMap != null) { + this.playerMobDistanceMap.add(player, chunkX, chunkZ, this.distanceManager.getSimulationDistance()); +@@ -254,6 +262,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.playerMobSpawnMap.remove(player); this.playerChunkTickRangeMap.remove(player); // Paper end - optimise ChunkMap#anyPlayerCloseEnoughForSpawning + this.playerGeneralAreaMap.remove(player); // Paper - optimise checkDespawns - } - - void updateMaps(ServerPlayer player) { -@@ -263,6 +272,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + // Paper start - per player mob spawning + if (this.playerMobDistanceMap != null) { + this.playerMobDistanceMap.remove(player); +@@ -274,6 +283,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } // Paper end - use distance map to optimise entity tracker this.playerChunkTickRangeMap.update(player, chunkX, chunkZ, DistanceManager.MOB_SPAWN_RANGE); // Paper - optimise ChunkMap#anyPlayerCloseEnoughForSpawning + this.playerGeneralAreaMap.update(player, chunkX, chunkZ, GENERAL_AREA_MAP_SQUARE_RADIUS); // Paper - optimise checkDespawn - } - // Paper end - // Paper start -@@ -418,6 +428,23 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + // Paper start - per player mob spawning + if (this.playerMobDistanceMap != null) { + this.playerMobDistanceMap.update(player, chunkX, chunkZ, this.distanceManager.getSimulationDistance()); +@@ -434,6 +444,23 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } }); // Paper end - optimise ChunkMap#anyPlayerCloseEnoughForSpawning @@ -195,7 +195,7 @@ index 83517c4eaf419770178f0520210218e0a70c4642..0918bb28fd058e6b79f45993a46738a5 this.handlingTick = true; diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 72888f28583d89f5cc38b6d6628f6557df16638b..153d866a09f598ae08cab7dedbcddfc9ce969d4b 100644 +index 736b51e411b009db0482d9a72f179cc7b6241265..031660f7d0ea270f87e5174a4fe65ccad1f7a561 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -792,7 +792,12 @@ public abstract class Mob extends LivingEntity { @@ -287,10 +287,10 @@ index 103428df78d1efe805ab425f1b4085077239bdf6..4247dcb003626535dbb997f48ad9f613 protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, final DimensionType dimensionmanager, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 4e18272192fc3bbb22cc98f2640480c30a056239..4286a4b3e2dabcc4c512d250d909e7b074cbfae7 100644 +index abb57345a97f36d05eab9bc96ffd6396926c219f..c6bddf5e08376f1f254a27fc38647587eefcb00a 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -275,7 +275,7 @@ public final class NaturalSpawner { +@@ -282,7 +282,7 @@ public final class NaturalSpawner { blockposition_mutableblockposition.set(l, i, i1); double d0 = (double) l + 0.5D; double d1 = (double) i1 + 0.5D; @@ -299,7 +299,7 @@ index 4e18272192fc3bbb22cc98f2640480c30a056239..4286a4b3e2dabcc4c512d250d909e7b0 if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); -@@ -348,7 +348,7 @@ public final class NaturalSpawner { +@@ -355,7 +355,7 @@ public final class NaturalSpawner { } private static boolean isRightDistanceToPlayerAndSpawnPoint(ServerLevel world, ChunkAccess chunk, BlockPos.MutableBlockPos pos, double squaredDistance) { diff --git a/patches/server/0774-Optimise-WorldServer-notify.patch b/patches/server/0773-Optimise-WorldServer-notify.patch similarity index 98% rename from patches/server/0774-Optimise-WorldServer-notify.patch rename to patches/server/0773-Optimise-WorldServer-notify.patch index d9b61b1ece..3382201094 100644 --- a/patches/server/0774-Optimise-WorldServer-notify.patch +++ b/patches/server/0773-Optimise-WorldServer-notify.patch @@ -8,10 +8,10 @@ Instead, only iterate over navigators in the current region that are eligible for repathing. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index db739bc7d10db0e27fdeba24165bbf2951b2802b..82f19265435cb4bff4928ce81e0b4682088fac9d 100644 +index 60ae567fe76a643f6a363644bfc99eac2ef64835..634f8690ccce7cdcc524258a6f2844c60b9563b5 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -280,15 +280,81 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -296,15 +296,81 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public final io.papermc.paper.chunk.SingleThreadChunkRegionManager dataRegionManager; public static final class DataRegionData implements io.papermc.paper.chunk.SingleThreadChunkRegionManager.RegionData { @@ -93,7 +93,7 @@ index db739bc7d10db0e27fdeba24165bbf2951b2802b..82f19265435cb4bff4928ce81e0b4682 } @Override -@@ -298,6 +364,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -314,6 +380,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider final DataRegionSectionData sectionData = (DataRegionSectionData)section.sectionData; final DataRegionData oldRegionData = oldRegion == null ? null : (DataRegionData)oldRegion.regionData; final DataRegionData newRegionData = (DataRegionData)newRegion.regionData; diff --git a/patches/server/0775-Remove-streams-for-villager-AI.patch b/patches/server/0774-Remove-streams-for-villager-AI.patch similarity index 100% rename from patches/server/0775-Remove-streams-for-villager-AI.patch rename to patches/server/0774-Remove-streams-for-villager-AI.patch diff --git a/patches/server/0776-Rewrite-dataconverter-system.patch b/patches/server/0775-Rewrite-dataconverter-system.patch similarity index 100% rename from patches/server/0776-Rewrite-dataconverter-system.patch rename to patches/server/0775-Rewrite-dataconverter-system.patch diff --git a/patches/server/0777-Use-Velocity-compression-and-cipher-natives.patch b/patches/server/0776-Use-Velocity-compression-and-cipher-natives.patch similarity index 100% rename from patches/server/0777-Use-Velocity-compression-and-cipher-natives.patch rename to patches/server/0776-Use-Velocity-compression-and-cipher-natives.patch diff --git a/patches/server/0778-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch b/patches/server/0777-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch similarity index 100% rename from patches/server/0778-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch rename to patches/server/0777-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch diff --git a/patches/server/0779-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch b/patches/server/0778-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch similarity index 100% rename from patches/server/0779-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch rename to patches/server/0778-Do-not-process-entity-loads-in-CraftChunk-getEntitie.patch diff --git a/patches/server/0780-Async-catch-modifications-to-critical-entity-state.patch b/patches/server/0779-Async-catch-modifications-to-critical-entity-state.patch similarity index 100% rename from patches/server/0780-Async-catch-modifications-to-critical-entity-state.patch rename to patches/server/0779-Async-catch-modifications-to-critical-entity-state.patch diff --git a/patches/server/0781-Fix-Bukkit-NamespacedKey-shenanigans.patch b/patches/server/0780-Fix-Bukkit-NamespacedKey-shenanigans.patch similarity index 100% rename from patches/server/0781-Fix-Bukkit-NamespacedKey-shenanigans.patch rename to patches/server/0780-Fix-Bukkit-NamespacedKey-shenanigans.patch diff --git a/patches/server/0782-Fix-merchant-inventory-not-closing-on-entity-removal.patch b/patches/server/0781-Fix-merchant-inventory-not-closing-on-entity-removal.patch similarity index 100% rename from patches/server/0782-Fix-merchant-inventory-not-closing-on-entity-removal.patch rename to patches/server/0781-Fix-merchant-inventory-not-closing-on-entity-removal.patch diff --git a/patches/server/0783-Check-requirement-before-suggesting-root-nodes.patch b/patches/server/0782-Check-requirement-before-suggesting-root-nodes.patch similarity index 100% rename from patches/server/0783-Check-requirement-before-suggesting-root-nodes.patch rename to patches/server/0782-Check-requirement-before-suggesting-root-nodes.patch diff --git a/patches/server/0784-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch b/patches/server/0783-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch similarity index 100% rename from patches/server/0784-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch rename to patches/server/0783-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch diff --git a/patches/server/0785-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch b/patches/server/0784-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch similarity index 100% rename from patches/server/0785-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch rename to patches/server/0784-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch diff --git a/patches/server/0786-Ensure-valid-vehicle-status.patch b/patches/server/0785-Ensure-valid-vehicle-status.patch similarity index 100% rename from patches/server/0786-Ensure-valid-vehicle-status.patch rename to patches/server/0785-Ensure-valid-vehicle-status.patch diff --git a/patches/server/0787-Prevent-softlocked-end-exit-portal-generation.patch b/patches/server/0786-Prevent-softlocked-end-exit-portal-generation.patch similarity index 100% rename from patches/server/0787-Prevent-softlocked-end-exit-portal-generation.patch rename to patches/server/0786-Prevent-softlocked-end-exit-portal-generation.patch diff --git a/patches/server/0788-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch b/patches/server/0787-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch similarity index 100% rename from patches/server/0788-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch rename to patches/server/0787-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch diff --git a/patches/server/0789-Don-t-log-debug-logging-being-disabled.patch b/patches/server/0788-Don-t-log-debug-logging-being-disabled.patch similarity index 100% rename from patches/server/0789-Don-t-log-debug-logging-being-disabled.patch rename to patches/server/0788-Don-t-log-debug-logging-being-disabled.patch diff --git a/patches/server/0790-Mark-fish-and-axolotls-from-buckets-as-persistent.patch b/patches/server/0789-Mark-fish-and-axolotls-from-buckets-as-persistent.patch similarity index 100% rename from patches/server/0790-Mark-fish-and-axolotls-from-buckets-as-persistent.patch rename to patches/server/0789-Mark-fish-and-axolotls-from-buckets-as-persistent.patch diff --git a/patches/server/0791-fix-various-menus-with-empty-level-accesses.patch b/patches/server/0790-fix-various-menus-with-empty-level-accesses.patch similarity index 100% rename from patches/server/0791-fix-various-menus-with-empty-level-accesses.patch rename to patches/server/0790-fix-various-menus-with-empty-level-accesses.patch diff --git a/patches/server/0792-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch b/patches/server/0791-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch similarity index 90% rename from patches/server/0792-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch rename to patches/server/0791-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch index 6dde3030da..b8c570f4c7 100644 --- a/patches/server/0792-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch +++ b/patches/server/0791-Do-not-overload-I-O-threads-with-chunk-data-while-fl.patch @@ -12,10 +12,10 @@ time to save, as flush saving performs a full flush at the end anyways. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 82f19265435cb4bff4928ce81e0b4682088fac9d..df785c230dde77eb8805872ccb506f882250547f 100644 +index 634f8690ccce7cdcc524258a6f2844c60b9563b5..b7a215c94e1ef021360dde5c4099ddd5b1f676b8 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -869,6 +869,16 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -891,6 +891,16 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper end protected void saveAllChunks(boolean flush) { @@ -32,7 +32,7 @@ index 82f19265435cb4bff4928ce81e0b4682088fac9d..df785c230dde77eb8805872ccb506f88 if (flush) { List list = (List) this.updatingChunks.getVisibleValuesCopy().stream().filter(ChunkHolder::wasAccessibleSinceLastSave).peek(ChunkHolder::refreshAccessibility).collect(Collectors.toList()); // Paper MutableBoolean mutableboolean = new MutableBoolean(); -@@ -891,6 +901,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -913,6 +923,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider }).filter((ichunkaccess) -> { return ichunkaccess instanceof ImposterProtoChunk || ichunkaccess instanceof LevelChunk; }).filter(this::save).forEach((ichunkaccess) -> { diff --git a/patches/server/0793-Preserve-overstacked-loot.patch b/patches/server/0792-Preserve-overstacked-loot.patch similarity index 100% rename from patches/server/0793-Preserve-overstacked-loot.patch rename to patches/server/0792-Preserve-overstacked-loot.patch diff --git a/patches/server/0794-Update-head-rotation-in-missing-places.patch b/patches/server/0793-Update-head-rotation-in-missing-places.patch similarity index 100% rename from patches/server/0794-Update-head-rotation-in-missing-places.patch rename to patches/server/0793-Update-head-rotation-in-missing-places.patch diff --git a/patches/server/0795-prevent-unintended-light-block-manipulation.patch b/patches/server/0794-prevent-unintended-light-block-manipulation.patch similarity index 100% rename from patches/server/0795-prevent-unintended-light-block-manipulation.patch rename to patches/server/0794-prevent-unintended-light-block-manipulation.patch diff --git a/patches/server/0796-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch b/patches/server/0795-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch similarity index 93% rename from patches/server/0796-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch rename to patches/server/0795-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch index 9bda515c66..b1b9f99897 100644 --- a/patches/server/0796-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch +++ b/patches/server/0795-Dont-count-named-piglins-and-hoglins-towards-mob-cap.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dont count named piglins and hoglins towards mob cap diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 4286a4b3e2dabcc4c512d250d909e7b074cbfae7..17a52bef19e361483a490ca83ced08ddbb9df3b4 100644 +index c6bddf5e08376f1f254a27fc38647587eefcb00a..302803aa25b713cb087bdb2991cb0803dfe6005b 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -83,7 +83,7 @@ public final class NaturalSpawner { diff --git a/patches/server/0797-Fix-CraftCriteria-defaults-map.patch b/patches/server/0796-Fix-CraftCriteria-defaults-map.patch similarity index 100% rename from patches/server/0797-Fix-CraftCriteria-defaults-map.patch rename to patches/server/0796-Fix-CraftCriteria-defaults-map.patch diff --git a/patches/server/0798-Fix-upstreams-block-state-factories.patch b/patches/server/0797-Fix-upstreams-block-state-factories.patch similarity index 100% rename from patches/server/0798-Fix-upstreams-block-state-factories.patch rename to patches/server/0797-Fix-upstreams-block-state-factories.patch diff --git a/patches/server/0799-Add-config-option-for-logging-player-ip-addresses.patch b/patches/server/0798-Add-config-option-for-logging-player-ip-addresses.patch similarity index 100% rename from patches/server/0799-Add-config-option-for-logging-player-ip-addresses.patch rename to patches/server/0798-Add-config-option-for-logging-player-ip-addresses.patch diff --git a/patches/server/0800-Configurable-feature-seeds.patch b/patches/server/0799-Configurable-feature-seeds.patch similarity index 100% rename from patches/server/0800-Configurable-feature-seeds.patch rename to patches/server/0799-Configurable-feature-seeds.patch diff --git a/patches/server/0801-VanillaCommandWrapper-didnt-account-for-entity-sende.patch b/patches/server/0800-VanillaCommandWrapper-didnt-account-for-entity-sende.patch similarity index 100% rename from patches/server/0801-VanillaCommandWrapper-didnt-account-for-entity-sende.patch rename to patches/server/0800-VanillaCommandWrapper-didnt-account-for-entity-sende.patch diff --git a/patches/server/0802-Add-root-admin-user-detection.patch b/patches/server/0801-Add-root-admin-user-detection.patch similarity index 100% rename from patches/server/0802-Add-root-admin-user-detection.patch rename to patches/server/0801-Add-root-admin-user-detection.patch diff --git a/patches/server/0803-Always-allow-item-changing-in-Fireball.patch b/patches/server/0802-Always-allow-item-changing-in-Fireball.patch similarity index 100% rename from patches/server/0803-Always-allow-item-changing-in-Fireball.patch rename to patches/server/0802-Always-allow-item-changing-in-Fireball.patch diff --git a/patches/server/0804-don-t-attempt-to-teleport-dead-entities.patch b/patches/server/0803-don-t-attempt-to-teleport-dead-entities.patch similarity index 100% rename from patches/server/0804-don-t-attempt-to-teleport-dead-entities.patch rename to patches/server/0803-don-t-attempt-to-teleport-dead-entities.patch diff --git a/patches/server/0805-Fix-anvil-prepare-event-not-working-with-zero-xp.patch b/patches/server/0804-Fix-anvil-prepare-event-not-working-with-zero-xp.patch similarity index 100% rename from patches/server/0805-Fix-anvil-prepare-event-not-working-with-zero-xp.patch rename to patches/server/0804-Fix-anvil-prepare-event-not-working-with-zero-xp.patch diff --git a/patches/server/0806-Prevent-excessive-velocity-through-repeated-crits.patch b/patches/server/0805-Prevent-excessive-velocity-through-repeated-crits.patch similarity index 100% rename from patches/server/0806-Prevent-excessive-velocity-through-repeated-crits.patch rename to patches/server/0805-Prevent-excessive-velocity-through-repeated-crits.patch diff --git a/patches/server/0807-Remove-client-side-code-using-deprecated-for-removal.patch b/patches/server/0806-Remove-client-side-code-using-deprecated-for-removal.patch similarity index 100% rename from patches/server/0807-Remove-client-side-code-using-deprecated-for-removal.patch rename to patches/server/0806-Remove-client-side-code-using-deprecated-for-removal.patch diff --git a/patches/server/0808-Rewrite-the-light-engine.patch b/patches/server/0807-Rewrite-the-light-engine.patch similarity index 99% rename from patches/server/0808-Rewrite-the-light-engine.patch rename to patches/server/0807-Rewrite-the-light-engine.patch index efc4295f5b..7b4f8c6b70 100644 --- a/patches/server/0808-Rewrite-the-light-engine.patch +++ b/patches/server/0807-Rewrite-the-light-engine.patch @@ -4432,7 +4432,7 @@ index 825fdb0336b0388dbbc54c8da99781900612031c..d271871563fa883efb77b35ec3b1dfbb private final DebugBuffer chunkToSaveHistory; public int oldTicketLevel; diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index df785c230dde77eb8805872ccb506f882250547f..478054bde7fdaeed77f56ca4ead9e1740a439ce0 100644 +index b7a215c94e1ef021360dde5c4099ddd5b1f676b8..02bcffcdde33088e43a7771924b2d2bf47badd09 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -130,7 +130,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider diff --git a/patches/server/0809-Always-parse-protochunk-light-sources-unless-it-is-m.patch b/patches/server/0808-Always-parse-protochunk-light-sources-unless-it-is-m.patch similarity index 100% rename from patches/server/0809-Always-parse-protochunk-light-sources-unless-it-is-m.patch rename to patches/server/0808-Always-parse-protochunk-light-sources-unless-it-is-m.patch diff --git a/patches/server/0810-Fix-removing-recipes-from-RecipeIterator.patch b/patches/server/0809-Fix-removing-recipes-from-RecipeIterator.patch similarity index 100% rename from patches/server/0810-Fix-removing-recipes-from-RecipeIterator.patch rename to patches/server/0809-Fix-removing-recipes-from-RecipeIterator.patch diff --git a/patches/server/0811-Prevent-sending-oversized-item-data-in-equipment-and.patch b/patches/server/0810-Prevent-sending-oversized-item-data-in-equipment-and.patch similarity index 100% rename from patches/server/0811-Prevent-sending-oversized-item-data-in-equipment-and.patch rename to patches/server/0810-Prevent-sending-oversized-item-data-in-equipment-and.patch diff --git a/patches/server/0812-Hide-unnecessary-itemmeta-from-clients.patch b/patches/server/0811-Hide-unnecessary-itemmeta-from-clients.patch similarity index 100% rename from patches/server/0812-Hide-unnecessary-itemmeta-from-clients.patch rename to patches/server/0811-Hide-unnecessary-itemmeta-from-clients.patch diff --git a/patches/server/0813-Fix-kelp-modifier-changing-growth-for-other-crops.patch b/patches/server/0812-Fix-kelp-modifier-changing-growth-for-other-crops.patch similarity index 100% rename from patches/server/0813-Fix-kelp-modifier-changing-growth-for-other-crops.patch rename to patches/server/0812-Fix-kelp-modifier-changing-growth-for-other-crops.patch diff --git a/patches/server/0814-Prevent-ContainerOpenersCounter-openCount-from-going.patch b/patches/server/0813-Prevent-ContainerOpenersCounter-openCount-from-going.patch similarity index 100% rename from patches/server/0814-Prevent-ContainerOpenersCounter-openCount-from-going.patch rename to patches/server/0813-Prevent-ContainerOpenersCounter-openCount-from-going.patch diff --git a/patches/server/0815-Add-PlayerItemFrameChangeEvent.patch b/patches/server/0814-Add-PlayerItemFrameChangeEvent.patch similarity index 100% rename from patches/server/0815-Add-PlayerItemFrameChangeEvent.patch rename to patches/server/0814-Add-PlayerItemFrameChangeEvent.patch diff --git a/patches/server/0816-Add-player-health-update-API.patch b/patches/server/0815-Add-player-health-update-API.patch similarity index 100% rename from patches/server/0816-Add-player-health-update-API.patch rename to patches/server/0815-Add-player-health-update-API.patch diff --git a/patches/server/0817-Optimize-HashMapPalette.patch b/patches/server/0816-Optimize-HashMapPalette.patch similarity index 100% rename from patches/server/0817-Optimize-HashMapPalette.patch rename to patches/server/0816-Optimize-HashMapPalette.patch diff --git a/patches/server/0818-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/server/0817-Allow-delegation-to-vanilla-chunk-gen.patch similarity index 100% rename from patches/server/0818-Allow-delegation-to-vanilla-chunk-gen.patch rename to patches/server/0817-Allow-delegation-to-vanilla-chunk-gen.patch diff --git a/patches/server/0819-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch b/patches/server/0818-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch similarity index 100% rename from patches/server/0819-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch rename to patches/server/0818-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch diff --git a/patches/server/0820-Optimise-collision-checking-in-player-move-packet-ha.patch b/patches/server/0819-Optimise-collision-checking-in-player-move-packet-ha.patch similarity index 100% rename from patches/server/0820-Optimise-collision-checking-in-player-move-packet-ha.patch rename to patches/server/0819-Optimise-collision-checking-in-player-move-packet-ha.patch diff --git a/patches/server/0821-Actually-unload-POI-data.patch b/patches/server/0820-Actually-unload-POI-data.patch similarity index 97% rename from patches/server/0821-Actually-unload-POI-data.patch rename to patches/server/0820-Actually-unload-POI-data.patch index 47629b692d..0a61e261e9 100644 --- a/patches/server/0821-Actually-unload-POI-data.patch +++ b/patches/server/0820-Actually-unload-POI-data.patch @@ -10,10 +10,10 @@ This patch also prevents the saving/unloading of POI data when world saving is disabled. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 478054bde7fdaeed77f56ca4ead9e1740a439ce0..b127949def00b312266b9207264758bf60f5c136 100644 +index 02bcffcdde33088e43a7771924b2d2bf47badd09..e97e0dbc094963f0976590c2700686647f6dcc8a 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -789,6 +789,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -811,6 +811,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } // Paper end } @@ -21,7 +21,7 @@ index 478054bde7fdaeed77f56ca4ead9e1740a439ce0..b127949def00b312266b9207264758bf this.updatingChunks.queueUpdate(pos, holder); // Paper - Don't copy this.modified = true; -@@ -934,7 +935,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -956,7 +957,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider gameprofilerfiller.pop(); } @@ -30,7 +30,7 @@ index 478054bde7fdaeed77f56ca4ead9e1740a439ce0..b127949def00b312266b9207264758bf private void processUnloads(BooleanSupplier shouldKeepTicking) { LongIterator longiterator = this.toDrop.iterator(); -@@ -997,6 +998,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1019,6 +1020,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.regionManagers.get(index).removeChunk(holder.pos.x, holder.pos.z); } // Paper end @@ -38,7 +38,7 @@ index 478054bde7fdaeed77f56ca4ead9e1740a439ce0..b127949def00b312266b9207264758bf if (ichunkaccess instanceof LevelChunk) { ((LevelChunk) ichunkaccess).setLoaded(false); } -@@ -1025,6 +1027,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1047,6 +1049,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider for (int index = 0, len = this.regionManagers.size(); index < len; ++index) { this.regionManagers.get(index).removeChunk(holder.pos.x, holder.pos.z); } @@ -46,7 +46,7 @@ index 478054bde7fdaeed77f56ca4ead9e1740a439ce0..b127949def00b312266b9207264758bf } // Paper end } finally { this.unloadingPlayerChunk = unloadingBefore; } // Paper - do not allow ticket level changes while unloading chunks -@@ -1101,6 +1104,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1123,6 +1126,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } this.poiManager.loadInData(pos, chunkHolder.poiData); chunkHolder.tasks.forEach(Runnable::run); diff --git a/patches/server/0822-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch b/patches/server/0821-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch similarity index 100% rename from patches/server/0822-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch rename to patches/server/0821-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch diff --git a/patches/server/0823-Update-Log4j.patch b/patches/server/0822-Update-Log4j.patch similarity index 100% rename from patches/server/0823-Update-Log4j.patch rename to patches/server/0822-Update-Log4j.patch diff --git a/patches/server/0824-Add-more-Campfire-API.patch b/patches/server/0823-Add-more-Campfire-API.patch similarity index 100% rename from patches/server/0824-Add-more-Campfire-API.patch rename to patches/server/0823-Add-more-Campfire-API.patch diff --git a/patches/server/0825-Fix-WorldGenRegion-leak-when-converting-pre-1.18-chu.patch b/patches/server/0824-Fix-WorldGenRegion-leak-when-converting-pre-1.18-chu.patch similarity index 100% rename from patches/server/0825-Fix-WorldGenRegion-leak-when-converting-pre-1.18-chu.patch rename to patches/server/0824-Fix-WorldGenRegion-leak-when-converting-pre-1.18-chu.patch diff --git a/patches/server/0826-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch b/patches/server/0825-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch similarity index 100% rename from patches/server/0826-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch rename to patches/server/0825-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch diff --git a/patches/server/0827-Fix-tripwire-state-inconsistency.patch b/patches/server/0826-Fix-tripwire-state-inconsistency.patch similarity index 100% rename from patches/server/0827-Fix-tripwire-state-inconsistency.patch rename to patches/server/0826-Fix-tripwire-state-inconsistency.patch diff --git a/patches/server/0828-Fix-fluid-logging-on-Block-breakNaturally.patch b/patches/server/0827-Fix-fluid-logging-on-Block-breakNaturally.patch similarity index 100% rename from patches/server/0828-Fix-fluid-logging-on-Block-breakNaturally.patch rename to patches/server/0827-Fix-fluid-logging-on-Block-breakNaturally.patch diff --git a/patches/server/0829-Forward-CraftEntity-in-teleport-command.patch b/patches/server/0828-Forward-CraftEntity-in-teleport-command.patch similarity index 100% rename from patches/server/0829-Forward-CraftEntity-in-teleport-command.patch rename to patches/server/0828-Forward-CraftEntity-in-teleport-command.patch diff --git a/patches/server/0830-Improve-scoreboard-entries.patch b/patches/server/0829-Improve-scoreboard-entries.patch similarity index 100% rename from patches/server/0830-Improve-scoreboard-entries.patch rename to patches/server/0829-Improve-scoreboard-entries.patch diff --git a/patches/server/0831-Entity-powdered-snow-API.patch b/patches/server/0830-Entity-powdered-snow-API.patch similarity index 100% rename from patches/server/0831-Entity-powdered-snow-API.patch rename to patches/server/0830-Entity-powdered-snow-API.patch diff --git a/patches/server/0832-Fix-entity-type-tags-suggestions-in-selectors.patch b/patches/server/0831-Fix-entity-type-tags-suggestions-in-selectors.patch similarity index 100% rename from patches/server/0832-Fix-entity-type-tags-suggestions-in-selectors.patch rename to patches/server/0831-Fix-entity-type-tags-suggestions-in-selectors.patch diff --git a/patches/server/0833-Add-API-for-item-entity-health.patch b/patches/server/0832-Add-API-for-item-entity-health.patch similarity index 100% rename from patches/server/0833-Add-API-for-item-entity-health.patch rename to patches/server/0832-Add-API-for-item-entity-health.patch diff --git a/patches/server/0834-Configurable-max-block-light-for-monster-spawning.patch b/patches/server/0833-Configurable-max-block-light-for-monster-spawning.patch similarity index 100% rename from patches/server/0834-Configurable-max-block-light-for-monster-spawning.patch rename to patches/server/0833-Configurable-max-block-light-for-monster-spawning.patch diff --git a/patches/server/0835-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch b/patches/server/0834-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch similarity index 100% rename from patches/server/0835-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch rename to patches/server/0834-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch diff --git a/patches/server/0836-Load-effect-amplifiers-greater-than-127-correctly.patch b/patches/server/0835-Load-effect-amplifiers-greater-than-127-correctly.patch similarity index 100% rename from patches/server/0836-Load-effect-amplifiers-greater-than-127-correctly.patch rename to patches/server/0835-Load-effect-amplifiers-greater-than-127-correctly.patch diff --git a/patches/server/0837-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/server/0836-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch similarity index 100% rename from patches/server/0837-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch rename to patches/server/0836-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch diff --git a/patches/server/0838-Fix-bees-aging-inside-hives.patch b/patches/server/0837-Fix-bees-aging-inside-hives.patch similarity index 100% rename from patches/server/0838-Fix-bees-aging-inside-hives.patch rename to patches/server/0837-Fix-bees-aging-inside-hives.patch diff --git a/patches/server/0839-Bucketable-API.patch b/patches/server/0838-Bucketable-API.patch similarity index 100% rename from patches/server/0839-Bucketable-API.patch rename to patches/server/0838-Bucketable-API.patch diff --git a/patches/server/0840-Check-player-world-in-endPortalSoundRadius.patch b/patches/server/0839-Check-player-world-in-endPortalSoundRadius.patch similarity index 100% rename from patches/server/0840-Check-player-world-in-endPortalSoundRadius.patch rename to patches/server/0839-Check-player-world-in-endPortalSoundRadius.patch diff --git a/patches/server/0841-Fix-riding-distance-statistics.patch b/patches/server/0840-Fix-riding-distance-statistics.patch similarity index 100% rename from patches/server/0841-Fix-riding-distance-statistics.patch rename to patches/server/0840-Fix-riding-distance-statistics.patch diff --git a/patches/server/0842-Validate-usernames.patch b/patches/server/0841-Validate-usernames.patch similarity index 100% rename from patches/server/0842-Validate-usernames.patch rename to patches/server/0841-Validate-usernames.patch