From 7c2dc4b3429f16943300da0eb06100e910ad832e Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Mon, 11 Dec 2023 22:02:06 -0800 Subject: [PATCH] Use Codecs for adventure Component conversions & network serialization (#10014) * finish implementing all adventure components in codecs * add some initial tests * Add round trip tests for text and translatable components * Add more round trip test data (score component is failing) * Add more round trip test data * Fix SCORE_COMPONENT_MAP_CODEC * Improve test failure messages * Add failure cases * Add a couple more test data * Make use of AdventureCodecs * Update patches after rebase * Squash changes into adventure patch * Fix AT formatting * update comment --------- Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com> --- patches/server/0010-Adventure.patch | 923 +++++++++++++++++- .../0056-Player-Tab-List-and-Title-APIs.patch | 6 +- ...oleAppender-for-console-improvements.patch | 10 +- ...Remove-unnecessary-itemmeta-handling.patch | 6 +- ...incremental-chunk-and-player-saving.patch} | 2 +- ...tial-work-on-native-Adventure-codecs.patch | 303 ------ ...421-Support-old-UUID-format-for-NBT.patch} | 0 ...vert-legacy-attributes-in-Item-Meta.patch} | 0 ...Remove-some-streams-from-structures.patch} | 0 ...rom-classes-related-villager-gossip.patch} | 0 ...0425-Support-components-in-ItemMeta.patch} | 0 ...e-fix-EntityTargetLivingEntityEvent.patch} | 0 ...patch => 0427-Add-entity-liquid-API.patch} | 0 ...date-itemstack-legacy-name-and-lore.patch} | 0 ...atch => 0429-Add-PrepareResultEvent.patch} | 0 ...-for-portal-on-world-gen-entity-add.patch} | 0 ...x-arrows-never-despawning-MC-125757.patch} | 0 ...Vanilla-Command-permission-checking.patch} | 0 ...-5989.patch => 0433-Fix-SPIGOT-5989.patch} | 0 ...-Bukkit-world-container-is-not-used.patch} | 0 ...5885-Unable-to-disable-advancements.patch} | 0 ...taPlayer-leak-due-from-quitting-ear.patch} | 0 ...e-NetworkManager-Exception-Handling.patch} | 0 ...ix-some-rails-connecting-improperly.patch} | 0 ...stake-in-CB-NBT-int-deserialization.patch} | 0 ...support.patch => 0440-Brand-support.patch} | 2 +- ...PickupItemAnimation-to-LivingEntity.patch} | 0 ...h => 0442-Don-t-require-FACING-data.patch} | 0 ...eEvent-not-firing-for-all-use-cases.patch} | 0 ...PI.patch => 0444-Add-moon-phase-API.patch} | 0 ...rver-load-chunks-from-newer-version.patch} | 0 ...headless-pistons-from-being-created.patch} | 0 ...ent.patch => 0447-Add-BellRingEvent.patch} | 0 ...dd-zombie-targets-turtle-egg-config.patch} | 0 ...patch => 0449-Buffer-joins-to-world.patch} | 0 ...-Eigencraft-redstone-implementation.patch} | 0 ...s-not-working-in-some-kick-messages.patch} | 0 ...reateEvent-needs-to-know-its-entity.patch} | 0 ...I.patch => 0453-Add-more-Evoker-API.patch} | 0 ...Add-methods-to-get-translation-keys.patch} | 0 ...te-HoverEvent-from-ItemStack-Entity.patch} | 0 ...ch => 0456-Cache-block-data-strings.patch} | 0 ...rtation-and-cancel-velocity-if-tele.patch} | 0 ...l-open-container-api-to-HumanEntity.patch} | 0 ...aFixerUpper-Rewrite-Rules-on-demand.patch} | 0 ...-capture-to-capture-all-items-added.patch} | 2 +- ...-Counter-to-allow-plugins-to-use-va.patch} | 0 ...track-plugin-scoreboards-by-default.patch} | 0 ...king.patch => 0463-Entity-isTicking.patch} | 0 ...non-whitelisted-player-when-white-l.patch} | 0 ...-Concurrency-issue-in-ShufflingList.patch} | 0 ...eset-Ender-Crystals-on-Dragon-Spawn.patch} | 0 ...-large-move-vectors-crashing-server.patch} | 0 ...atch => 0468-Optimise-getType-calls.patch} | 0 ....patch => 0469-Villager-resetOffers.patch} | 0 ...ce-order-when-capturing-blockstates.patch} | 0 ...lockpos-allocation-from-pathfinding.patch} | 0 ...em-locations-dropped-from-campfires.patch} | 0 ...73-Fixed-TileEntityBell-memory-leak.patch} | 0 ...ing-up-when-item-stack-is-empty-in-.patch} | 0 ...Add-getOfflinePlayerIfCached-String.patch} | 0 ...ch => 0476-Add-ignore-discounts-API.patch} | 0 ...Toggle-for-removing-existing-dragon.patch} | 0 ...x-client-lag-on-advancement-loading.patch} | 0 ...> 0479-Item-no-age-no-player-pickup.patch} | 0 ...er-Remove-Streams-Optimized-collect.patch} | 0 ...481-Beacon-API-custom-effect-ranges.patch} | 0 ...tch => 0482-Add-API-for-quit-reason.patch} | 2 +- ...ng-Trader-spawn-rate-config-options.patch} | 0 ...ch => 0484-Expose-world-spawn-angle.patch} | 0 ...patch => 0485-Add-Destroy-Speed-API.patch} | 0 ...-spawnParticle-x-y-z-precision-loss.patch} | 2 +- ...87-Add-LivingEntity-clearActiveItem.patch} | 0 ...=> 0488-Add-PlayerItemCooldownEvent.patch} | 0 ...rove-performance-of-the-end-generat.patch} | 0 ...PI.patch => 0490-More-lightning-API.patch} | 0 ...should-not-bypass-cramming-gamerule.patch} | 0 ...-missing-default-perms-for-commands.patch} | 0 ...h => 0493-Add-PlayerShearBlockEvent.patch} | 0 ....patch => 0494-Limit-recipe-packets.patch} | 0 ...-CraftSound-backwards-compatibility.patch} | 0 ...496-Player-Chunk-Load-Unload-Events.patch} | 0 ...7-Optimize-Dynamic-get-Missing-Keys.patch} | 0 ...-Expose-LivingEntity-hurt-direction.patch} | 0 ...OBSTRUCTED-reason-to-BedEnterResult.patch} | 0 ...-invalid-ingredient-lists-in-Villag.patch} | 0 ...rTradeEvent-and-PlayerPurchaseEvent.patch} | 0 ...ch => 0502-Implement-TargetHitEvent.patch} | 0 ... 0503-MC-4-Fix-item-position-desync.patch} | 0 ...504-Additional-Block-Material-API-s.patch} | 0 ...tch => 0505-Fix-harming-potion-dupe.patch} | 0 ...get-Material-from-Boats-and-Minecar.patch} | 0 ....patch => 0507-Cache-burn-durations.patch} | 0 ...ob-spawner-spawn-egg-transformation.patch} | 0 ...ix-Not-a-string-Map-Conversion-spam.patch} | 0 ...ment-PlayerFlowerPotManipulateEvent.patch} | 0 ...ct-event-not-being-called-sometimes.patch} | 0 ...h => 0512-Zombie-API-breaking-doors.patch} | 0 ...513-Fix-nerfed-slime-when-splitting.patch} | 0 ...=> 0514-Add-EntityLoadCrossbowEvent.patch} | 0 ...0515-Added-WorldGameRuleChangeEvent.patch} | 0 ...-Added-ServerResourcesReloadedEvent.patch} | 0 ...d-settings-for-mobs-picking-up-loot.patch} | 0 ...mplemented-BlockFailedDispenseEvent.patch} | 0 ...-Added-PlayerLecternPageChangeEvent.patch} | 0 ...-Added-PlayerLoomPatternSelectEvent.patch} | 0 ...nfigurable-door-breaking-difficulty.patch} | 0 ...ty-commands-shall-not-be-dispatched.patch} | 0 ...OIs.patch => 0523-Remove-stale-POIs.patch} | 0 ...h => 0524-Fix-villager-boat-exploit.patch} | 0 ...I.patch => 0525-Add-sendOpLevel-API.patch} | 2 +- ...0526-TODO-Registry-Modification-API.patch} | 0 ...h => 0527-Add-StructuresLocateEvent.patch} | 0 ...-for-requiring-a-player-participant.patch} | 0 ...leHitEvent-call-when-fireballs-dead.patch} | 0 ...nent-with-empty-text-instead-of-thr.patch} | 0 ...531-Make-schedule-command-per-world.patch} | 0 ...532-Configurable-max-leash-distance.patch} | 0 ...533-Implement-BlockPreDispenseEvent.patch} | 0 ...ng-of-PlayerChangeBeaconEffectEvent.patch} | 0 ...e-for-always-placing-the-dragon-egg.patch} | 0 ...-PlayerStonecutterRecipeSelectEvent.patch} | 0 ...eash-variable-to-EntityUnleashEvent.patch} | 0 ...shield-blocking-on-dimension-change.patch} | 0 ...atch => 0539-add-DragonEggFormEvent.patch} | 0 ...Event.patch => 0540-EntityMoveEvent.patch} | 2 +- ...isable-pathfinding-updates-on-block.patch} | 2 +- ... 0542-Inline-shift-direction-fields.patch} | 0 ...-adding-items-to-BlockDropItemEvent.patch} | 0 ...inThreadExecutor-to-BukkitScheduler.patch} | 0 ...entity-allow-attribute-registration.patch} | 0 ...ix-dead-slime-setSize-invincibility.patch} | 0 ...pes-should-return-an-immutable-list.patch} | 0 ...atch => 0548-Expose-Tracked-Players.patch} | 0 ...9-Remove-streams-from-SensorNearest.patch} | 0 ...GUI.patch => 0550-Improve-ServerGUI.patch} | 0 ...551-fix-converting-txt-to-json-file.patch} | 0 ...atch => 0552-Add-worldborder-events.patch} | 0 ...=> 0553-added-PlayerNameEntityEvent.patch} | 0 ...grindstones-from-overstacking-items.patch} | 0 ...h => 0555-Add-recipe-to-cook-events.patch} | 0 ...patch => 0556-Add-Block-isValidTool.patch} | 0 ...using-signs-inside-spawn-protection.patch} | 2 +- ....patch => 0558-Expand-world-key-API.patch} | 0 ...ternative-constructor-for-Rotations.patch} | 0 ...y-API.patch => 0560-Item-Rarity-API.patch} | 0 ...d-item-when-player-has-disconnected.patch} | 0 ...elist-use-configurable-kick-message.patch} | 0 ...gnore-result-of-PlayerEditBookEvent.patch} | 2 +- ...tch => 0564-Expose-protocol-version.patch} | 0 ...ab-completions-for-brigadier-comman.patch} | 0 ...temConsumeEvent-cancelling-properly.patch} | 0 ...patch => 0567-Add-bypass-host-check.patch} | 0 ...0568-Set-area-affect-cloud-rotation.patch} | 0 ...add-isDeeplySleeping-to-HumanEntity.patch} | 0 ...add-consumeFuel-to-FurnaceBurnEvent.patch} | 0 ...-set-drop-chance-to-EntityEquipment.patch} | 0 ...ix-PigZombieAngerEvent-cancellation.patch} | 0 ...ix-PlayerItemHeldEvent-firing-twice.patch} | 2 +- ... => 0574-Added-PlayerDeepSleepEvent.patch} | 0 ...ld-API.patch => 0575-More-World-API.patch} | 0 ... 0576-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} | 2 +- ...dd-Channel-initialization-listeners.patch} | 0 ...mands-if-tab-completion-is-disabled.patch} | 0 ...> 0583-Add-more-WanderingTrader-API.patch} | 0 ...dd-EntityBlockStorage-clearEntities.patch} | 0 ...85-Entity-load-save-limit-per-chunk.patch} | 0 ...ssage-to-PlayerAdvancementDoneEvent.patch} | 0 ...address-to-AsyncPlayerPreLoginEvent.patch} | 0 ...close.patch => 0588-Inventory-close.patch} | 0 ...-in-sunlight-API-for-Phantoms-and-S.patch} | 0 ...atch => 0590-Add-basic-Datapack-API.patch} | 0 ...ment-variable-to-disable-server-gui.patch} | 0 ...itions-to-PlayerGameModeChangeEvent.patch} | 4 +- ... => 0593-ItemStack-repair-check-API.patch} | 0 ....patch => 0594-More-Enchantment-API.patch} | 0 ...ve-range-check-for-block-placing-up.patch} | 2 +- ...-and-optimise-world-force-upgrading.patch} | 0 ...PI.patch => 0597-Add-Mob-lookAt-API.patch} | 0 ...0598-Add-Unix-domain-socket-support.patch} | 2 +- ... => 0599-Add-EntityInsideBlockEvent.patch} | 0 ...00-Attributes-API-for-item-defaults.patch} | 0 ...ause-to-Weather-ThunderChangeEvents.patch} | 2 +- ...patch => 0602-More-Lidded-Block-API.patch} | 0 ...03-Limit-item-frame-cursors-on-maps.patch} | 0 ... => 0604-Add-PlayerKickEvent-causes.patch} | 4 +- ...0605-Add-PufferFishStateChangeEvent.patch} | 0 ...erBucketEmptyEvent-result-itemstack.patch} | 0 ...tedContainer-instead-of-ThreadingDe.patch} | 0 ...-to-fix-items-merging-through-walls.patch} | 0 ...h => 0609-Add-BellRevealRaiderEvent.patch} | 0 ... 0610-Fix-invulnerable-end-crystals.patch} | 0 ...11-Add-ElderGuardianAppearanceEvent.patch} | 0 ...0612-Fix-dangerous-end-portal-logic.patch} | 0 ...-Biome-Mob-Lookups-for-Mob-Spawning.patch} | 0 ...-Make-item-validations-configurable.patch} | 0 ...patch => 0615-Line-Of-Sight-Changes.patch} | 0 ... => 0616-add-per-world-spawn-limits.patch} | 0 ...h => 0617-Fix-potions-splash-events.patch} | 0 ... => 0618-Add-more-LimitedRegion-API.patch} | 0 ...layerDropItemEvent-using-wrong-item.patch} | 0 ...PI.patch => 0620-Missing-Entity-API.patch} | 0 ...ect-for-book-edit-is-called-on-main.patch} | 2 +- ...of-Block-applyBoneMeal-always-being.patch} | 0 ...tChunkIfLoadedImmediately-in-places.patch} | 2 +- ...rom-signs-not-firing-command-events.patch} | 0 ...ch => 0625-Adds-PlayerArmSwingEvent.patch} | 2 +- ...-event-leave-message-not-being-sent.patch} | 4 +- ...-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 => 0632-Stinger-API.patch} | 0 ...cy-issue-with-empty-map-items-in-CB.patch} | 0 ... => 0634-Add-System.out-err-catcher.patch} | 0 ...-to-contain-the-source-jars-in-stac.patch} | 0 ...-Improve-boat-collision-performance.patch} | 0 ...AFK-kick-while-watching-end-credits.patch} | 2 +- ...iting-of-comments-to-server.propert.patch} | 0 ...tch => 0639-Add-PlayerSetSpawnEvent.patch} | 2 +- ...rs-respect-inventory-max-stack-size.patch} | 0 ...ize-entity-tracker-passenger-checks.patch} | 0 ...-option-for-Piglins-guarding-chests.patch} | 0 ...=> 0643-Added-EntityDamageItemEvent.patch} | 0 ...timize-indirect-passenger-iteration.patch} | 0 ...em-frame-map-cursor-update-interval.patch} | 0 ...Make-EntityUnleashEvent-cancellable.patch} | 0 ...647-Clear-bucket-NBT-after-dispense.patch} | 0 ...arget-without-changing-other-things.patch} | 0 ...ch => 0649-Add-BlockBreakBlockEvent.patch} | 0 ...revent-NBT-copy-in-smithing-recipes.patch} | 0 ...patch => 0651-More-CommandBlock-API.patch} | 0 ...-missing-team-sidebar-display-slots.patch} | 0 ...0653-Add-back-EntityPortalExitEvent.patch} | 0 ...-find-targets-for-lightning-strikes.patch} | 2 +- ... 0655-Get-entity-default-attributes.patch} | 0 ...d-API.patch => 0656-Left-handed-API.patch} | 0 ...ch => 0657-Add-more-advancement-API.patch} | 0 ...658-Add-ItemFactory-getSpawnEgg-API.patch} | 0 ...tch => 0659-Add-critical-damage-API.patch} | 0 ...0660-Fix-issues-with-mob-conversion.patch} | 0 ...ollidable-methods-to-various-places.patch} | 0 ...-ram-API.patch => 0662-Goat-ram-API.patch} | 0 ...dd-API-for-resetting-a-single-score.patch} | 0 ...4-Add-Raw-Byte-Entity-Serialization.patch} | 0 ...65-Vanilla-command-permission-fixes.patch} | 0 ...logic-for-inventories-on-chunk-unlo.patch} | 2 +- ...67-Fix-GameProfileCache-concurrency.patch} | 0 ...668-Improve-and-expand-AsyncCatcher.patch} | 2 +- ...per-mobcaps-and-paper-playermobcaps.patch} | 0 ...tize-ResourceLocation-error-logging.patch} | 0 ...=> 0671-Optimise-general-POI-access.patch} | 0 ...ementation-for-blockstate-state-loo.patch} | 0 ...lly-inline-methods-in-BlockPosition.patch} | 0 ...ler-threads-according-to-the-plugin.patch} | 0 ...-getChunkAt-has-inlined-logic-for-l.patch} | 0 ...our-chunk-data-off-disk-when-conver.patch} | 0 ...-lookup-fluid-state-when-raytracing.patch} | 0 ...atch => 0678-Time-scoreboard-search.patch} | 0 ...packets-for-hard-colliding-entities.patch} | 0 ...0-Do-not-run-raytrace-logic-for-AIR.patch} | 0 ...> 0681-Execute-chunk-tasks-mid-tick.patch} | 2 +- ...rimise-map-impl-for-tracked-players.patch} | 0 ...imise-BlockSoil-nearby-water-lookup.patch} | 0 ... 0684-Optimise-random-block-ticking.patch} | 2 +- ...ulate-regionfile-header-if-it-is-co.patch} | 0 ...city-compression-and-cipher-natives.patch} | 0 ...-more-information-in-watchdog-dumps.patch} | 2 +- ...hread-worker-count-for-low-core-cou.patch} | 0 ...ix-Bukkit-NamespacedKey-shenanigans.patch} | 0 ... 0690-Distance-manager-tick-timings.patch} | 0 ...ntory-not-closing-on-entity-removal.patch} | 0 ...rement-before-suggesting-root-nodes.patch} | 0 ...ServerboundCommandSuggestionPacket-.patch} | 2 +- ...h => 0694-Add-packet-limiter-config.patch} | 0 ...nColor-on-tropical-fish-bucket-meta.patch} | 0 ...=> 0696-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 ...ous-menus-with-empty-level-accesses.patch} | 0 ...h => 0701-Preserve-overstacked-loot.patch} | 0 ...ate-head-rotation-in-missing-places.patch} | 0 ...unintended-light-block-manipulation.patch} | 0 ...0704-Fix-CraftCriteria-defaults-map.patch} | 0 ...Fix-upstreams-block-state-factories.patch} | 0 ... => 0706-Configurable-feature-seeds.patch} | 0 ... 0707-Add-root-admin-user-detection.patch} | 0 ...ays-allow-item-changing-in-Fireball.patch} | 0 ...t-attempt-to-teleport-dead-entities.patch} | 0 ...ive-velocity-through-repeated-crits.patch} | 0 ...e-code-using-deprecated-for-removal.patch} | 0 ...emoving-recipes-from-RecipeIterator.patch} | 0 ...versized-item-data-in-equipment-and.patch} | 0 ...e-unnecessary-itemmeta-from-clients.patch} | 2 +- ...=> 0715-Fix-Spigot-growth-modifiers.patch} | 0 ...OpenersCounter-openCount-from-going.patch} | 0 ...0717-Add-PlayerItemFrameChangeEvent.patch} | 0 ...tch => 0718-Optimize-HashMapPalette.patch} | 0 ...low-delegation-to-vanilla-chunk-gen.patch} | 0 ...tch => 0720-Collision-optimisations.patch} | 0 ...n-checking-in-player-move-packet-ha.patch} | 2 +- ...-isSectionEmpty-int-and-optimize-Pa.patch} | 0 ...patch => 0723-Add-more-Campfire-API.patch} | 0 ...data-to-disk-if-it-serializes-witho.patch} | 0 ...25-Fix-tripwire-state-inconsistency.patch} | 0 ...ard-CraftEntity-in-teleport-command.patch} | 0 ... => 0727-Improve-scoreboard-entries.patch} | 0 ...ch => 0728-Entity-powdered-snow-API.patch} | 0 ...0729-Add-API-for-item-entity-health.patch} | 0 ...-type-tags-suggestions-in-selectors.patch} | 0 ...ax-block-light-for-monster-spawning.patch} | 0 ...pistons-and-BlockPistonRetractEvent.patch} | 0 ...plifiers-greater-than-127-correctly.patch} | 0 ...-canSmelt-methods-to-FurnaceInvento.patch} | 0 ...=> 0735-Fix-bees-aging-inside-hives.patch} | 0 ...le-API.patch => 0736-Bucketable-API.patch} | 0 ...es.patch => 0737-Validate-usernames.patch} | 0 ...er-animal-spawn-height-configurable.patch} | 0 ...anilla-BiomeProvider-from-WorldInfo.patch} | 0 ...ion-for-worlds-affected-by-time-cmd.patch} | 0 ...heck-for-PersistentDataContainer-ha.patch} | 0 ...2-Multiple-Entries-with-Scoreboards.patch} | 0 ...743-Reset-placed-block-on-exception.patch} | 0 ...configurable-height-for-slime-spawn.patch} | 0 ...ostname-to-AsyncPlayerPreLoginEvent.patch} | 0 ...0746-Fix-xp-reward-for-baby-zombies.patch} | 0 ...lti-Block-Change-API-Implementation.patch} | 2 +- ...ent.patch => 0748-Fix-NotePlayEvent.patch} | 0 ....patch => 0749-Freeze-Tick-Lock-API.patch} | 0 ...lphin-API.patch => 0750-Dolphin-API.patch} | 0 ...h => 0751-More-PotionEffectType-API.patch} | 0 ...for-StructureTemplate.Pallete-cache.patch} | 0 ...command-sender-which-forwards-feedb.patch} | 0 ...-missing-structure-set-seed-configs.patch} | 0 ...h => 0755-Implement-regenerateChunk.patch} | 0 ...lled-powdered-snow-bucket-placement.patch} | 0 ...ate-calls-to-CraftServer-getSpawnLi.patch} | 0 ...gs.patch => 0758-Add-GameEvent-tags.patch} | 0 ...ks-fairly-for-worlds-while-waiting-.patch} | 0 ...tch => 0760-Furnace-RecipesUsed-API.patch} | 0 ...gurable-sculk-sensor-listener-range.patch} | 0 ...d-missing-block-data-mins-and-maxes.patch} | 0 ...fault-CustomSpawners-in-custom-worl.patch} | 0 ...-worldlist-before-initing-the-world.patch} | 0 ... => 0765-Fix-Entity-Position-Desync.patch} | 0 ...s.patch => 0766-Custom-Potion-Mixes.patch} | 0 ...67-Force-close-world-loading-screen.patch} | 0 ...768-Fix-falling-block-spawn-methods.patch} | 0 ...Expose-furnace-minecart-push-values.patch} | 0 ...ojectileHitEvent-for-piercing-arrow.patch} | 0 ...I.patch => 0771-More-Projectile-API.patch} | 0 ...x-swamp-hut-cat-generation-deadlock.patch} | 0 ...le-movement-from-players-while-tele.patch} | 2 +- ...0774-Implement-getComputedBiome-API.patch} | 0 ...> 0775-Make-some-itemstacks-nonnull.patch} | 0 ...776-Implement-enchantWithLevels-API.patch} | 0 ...h => 0777-Fix-saving-in-unloadWorld.patch} | 0 ...h => 0778-Buffer-OOB-setBlock-calls.patch} | 0 ... 0779-Add-TameableDeathMessageEvent.patch} | 0 ...ock-data-for-EntityChangeBlockEvent.patch} | 0 ...bles-running-when-mob-loot-gamerule.patch} | 0 ...ssenger-world-matches-ridden-entity.patch} | 0 ...rd-against-invalid-entity-positions.patch} | 0 ...s.patch => 0784-cache-resource-keys.patch} | 0 ...ange-the-podium-for-the-EnderDragon.patch} | 0 ...erriding-a-block-entity-during-worl.patch} | 0 ...eGrowEvent-species-for-RED_MUSHROOM.patch} | 0 ...t-tile-entity-copies-loading-chunks.patch} | 2 +- ...ead-of-display-name-in-PlayerList-g.patch} | 0 ...-ServerLevel-for-gamerule-callbacks.patch} | 2 +- ...ing-amount-to-PlayerItemDamageEvent.patch} | 0 ...> 0792-WorldCreator-keepSpawnLoaded.patch} | 0 ...-in-CraftPersistentDataTypeRegistry.patch} | 0 ...destroyed-trigger-in-the-correct-pl.patch} | 0 ...Event-and-CollarColorable-interface.patch} | 0 ...CauldronLevelChange-on-initial-fill.patch} | 0 ...snow-cauldrons-not-turning-to-water.patch} | 0 ...> 0798-Add-PlayerStopUsingItemEvent.patch} | 0 ...rs.patch => 0799-Don-t-tick-markers.patch} | 0 ...tch => 0800-Expand-FallingBlock-API.patch} | 0 ...-not-accept-invalid-client-settings.patch} | 2 +- ...0802-Add-support-for-Proxy-Protocol.patch} | 0 ...x-OfflinePlayer-getBedSpawnLocation.patch} | 0 ...tory-for-smokers-and-blast-furnaces.patch} | 0 ... 0805-Sanitize-Sent-BlockEntity-NBT.patch} | 0 ...-selector-resolving-in-books-by-def.patch} | 0 ...ntity-loading-causing-async-lookups.patch} | 0 ...-on-world-create-while-being-ticked.patch} | 0 ...ate-Current-redstone-implementation.patch} | 0 ...10-Dont-resent-entity-on-art-update.patch} | 0 ... => 0811-Add-WardenAngerChangeEvent.patch} | 0 ...strict-advancement-dimension-checks.patch} | 0 ...tant-BlockStateListPopulator-method.patch} | 0 ...I.patch => 0814-Nameable-Banner-API.patch} | 0 ...roadcast-messages-to-command-blocks.patch} | 0 ...pty-items-from-being-added-to-world.patch} | 0 ...hPotion-and-LingeringPotion-spawnin.patch} | 0 ...atch => 0818-Add-Player-getFishHook.patch} | 0 ...chunk-for-dynamic-game-event-listen.patch} | 0 ...s-missing-EntityDropItemEvent-calls.patch} | 0 ...PE.patch => 0821-Fix-Bee-flower-NPE.patch} | 0 ...-not-using-commands.spam-exclusions.patch} | 2 +- ...API.patch => 0823-More-Teleport-API.patch} | 4 +- ... => 0824-Add-EntityPortalReadyEvent.patch} | 0 ...level-random-in-entity-constructors.patch} | 0 ...k-entities-after-destroy-prediction.patch} | 2 +- ...on-plugins-accessing-faraway-chunks.patch} | 0 ...tom-Chat-Completion-Suggestions-API.patch} | 2 +- ...Add-and-fix-missing-BlockFadeEvents.patch} | 0 ...ion-API.patch => 0830-Collision-API.patch} | 0 ...nd-message-for-brigadier-syntax-exc.patch} | 0 ...API.patch => 0832-Block-Ticking-API.patch} | 0 ...-Add-Velocity-IP-Forwarding-Support.patch} | 0 ...834-Add-NamespacedKey-biome-methods.patch} | 0 ...x-plugin-loggers-on-server-shutdown.patch} | 0 ...ok-changes-from-crashing-the-server.patch} | 0 ...tityChangeBlockEvent-in-more-places.patch} | 0 ...> 0838-Missing-eating-regain-reason.patch} | 0 ....patch => 0839-Missing-effect-cause.patch} | 0 ...serialization-deserialization-for-P.patch} | 0 ...rameter-to-ProjectileSource-launchP.patch} | 0 ...2-Call-BlockPhysicsEvent-more-often.patch} | 0 ...0843-Configurable-chat-thread-limit.patch} | 0 ...of-WorldCreator-keepSpawnLoaded-ret.patch} | 0 ... 0845-fix-Jigsaw-block-kicking-user.patch} | 0 ...mEvent-for-mud-converting-into-clay.patch} | 0 ... => 0847-Add-getDrops-to-BlockState.patch} | 0 ...=> 0848-Fix-a-bunch-of-vanilla-bugs.patch} | 0 ...y-onTrackingStart-during-navigation.patch} | 0 ... 0850-Fix-custom-piglin-loved-items.patch} | 0 ...=> 0851-EntityPickupItemEvent-fixes.patch} | 0 ...interactions-with-items-on-cooldown.patch} | 0 ...-Add-PlayerInventorySlotChangeEvent.patch} | 0 ... 0854-Elder-Guardian-appearance-API.patch} | 2 +- ...ow-changing-bed-s-occupied-property.patch} | 0 ...ch => 0856-Add-entity-knockback-API.patch} | 0 ....patch => 0857-Detect-headless-JREs.patch} | 0 ...-vehicle-collision-event-not-called.patch} | 0 ...9-optimized-dirt-and-snow-spreading.patch} | 0 ... => 0860-Added-EntityToggleSitEvent.patch} | 0 ... => 0861-Add-fire-tick-delay-option.patch} | 0 ...patch => 0862-Add-Moving-Piston-API.patch} | 0 ...> 0863-Ignore-impossible-spawn-tick.patch} | 0 ...source-for-fireworks-from-dispenser.patch} | 0 ...t-suggestion-permissions-to-align-w.patch} | 0 ...Event-cancellation-cant-fully-preve.patch} | 0 ...Prevent-compass-from-loading-chunks.patch} | 0 ...0868-Add-PrePlayerAttackEntityEvent.patch} | 0 ...e-reset-EnderDragon-boss-event-name.patch} | 0 ...-green-map-markers-do-not-disappear.patch} | 0 ... 0871-Add-Player-Warden-Warning-API.patch} | 2 +- ...a-friendly-methods-to-update-trades.patch} | 0 ...873-Add-paper-dumplisteners-command.patch} | 0 ...lobal-player-list-where-appropriate.patch} | 0 ...sync-entity-add-due-to-fungus-trees.patch} | 0 ....patch => 0876-ItemStack-damage-API.patch} | 0 ...tion-API.patch => 0877-Friction-API.patch} | 0 ...trol-player-s-insomnia-and-phantoms.patch} | 0 ...=> 0879-Fix-player-kick-on-shutdown.patch} | 0 ... => 0880-Sync-offhand-slot-in-menus.patch} | 0 ... 0881-Player-Entity-Tracking-Events.patch} | 0 ...tch => 0882-Limit-pet-look-distance.patch} | 0 ...ch => 0883-Properly-resend-entities.patch} | 2 +- ...nd-additions-to-the-SpawnReason-API.patch} | 0 ...ments.patch => 0885-fix-Instruments.patch} | 2 +- ...for-some-hot-BlockBehavior-and-Flui.patch} | 0 ...es-in-dispense-events-regarding-sta.patch} | 0 ...tch => 0888-Add-BlockLockCheckEvent.patch} | 0 ... 0889-Add-Sneaking-API-for-Entities.patch} | 0 ... => 0890-Improve-logging-and-errors.patch} | 2 +- ....patch => 0891-Improve-PortalEvents.patch} | 0 ...ion-for-spider-worldborder-climbing.patch} | 0 ...sing-SpigotConfig-logCommands-check.patch} | 2 +- ...Allay-stopDancing-while-not-dancing.patch} | 0 ...ge.patch => 0895-Flying-Fall-Damage.patch} | 2 +- ...k-state-to-BlockExplodeEvent-and-En.patch} | 0 ...ion-moving-velocity-to-VehicleBlock.patch} | 0 ...onfig-for-disabling-entity-tag-tags.patch} | 0 ...e-player-info-update-packet-on-join.patch} | 2 +- ...k-items-during-EntityResurrectEvent.patch} | 0 ...en-API.patch => 0901-Win-Screen-API.patch} | 2 +- ...ItemStack-setAmount-null-assignment.patch} | 0 ...ix-force-opening-enchantment-tables.patch} | 0 ...tch => 0904-Add-Entity-Body-Yaw-API.patch} | 0 ...vent-sleeping-villagers-moving-towa.patch} | 0 ...hen-a-captured-block-state-is-outda.patch} | 0 ...=> 0907-Add-EntityFertilizeEggEvent.patch} | 0 ...ty-drop-not-updating-the-client-inv.patch} | 0 ...temEvent-and-EntityCompostItemEvent.patch} | 0 ...ctly-handle-ArmorStand-invisibility.patch} | 0 ...ancement-triggers-for-entity-damage.patch} | 0 ...912-Fix-text-display-error-on-spawn.patch} | 0 ...nventories-returning-null-Locations.patch} | 0 ...API.patch => 0914-Add-Shearable-API.patch} | 0 ...Fix-SpawnEggMeta-get-setSpawnedType.patch} | 0 ...pers.patch => 0916-Optimize-Hoppers.patch} | 0 ...ives-generating-from-using-bonemeal.patch} | 0 ...g-to-bad-recipes-in-furnace-like-ti.patch} | 0 ...ence-violations-like-they-should-be.patch} | 2 +- ...uplicate-animate-packet-for-records.patch} | 0 ...xpired-keys-from-impacting-new-join.patch} | 2 +- ...ts-being-fired-from-unloaded-chunks.patch} | 0 ...0923-Use-array-for-gamerule-storage.patch} | 0 ...Fix-a-couple-of-upstream-bed-issues.patch} | 0 ...ix-demo-flag-not-enabling-demo-mode.patch} | 0 ... 0926-Add-Mob-Experience-reward-API.patch} | 0 ...redstone-on-top-of-trap-doors-early.patch} | 0 ...-Fix-DamageCause-for-Falling-Blocks.patch} | 0 ...Lazy-Initialization-for-Enum-Fields.patch} | 0 ...30-More-accurate-isInOpenWater-impl.patch} | 0 ...ccess-to-lookups-field-in-RegistryO.patch} | 0 ...ecalcBlockCounts-for-empty-sections.patch} | 0 ... => 0933-Expand-PlayerItemMendEvent.patch} | 2 +- ...sh-ProjectileSource-for-projectiles.patch} | 0 ... => 0935-Add-transient-modifier-API.patch} | 0 ...patch => 0936-Fix-block-place-logic.patch} | 0 ...nd-playing-for-BlockItem-ItemStacks.patch} | 0 ...efinitions-of-trim-material-pattern.patch} | 0 ...l-BlockGrowEvent-for-missing-blocks.patch} | 0 ...nhasbukkit-default-if-alias-block-e.patch} | 0 ...pLike-spam-for-missing-key-selector.patch} | 0 ...-Fix-sniffer-removeExploredLocation.patch} | 0 ...to-remove-all-active-potion-effects.patch} | 0 ...yerChunkLoaderData-in-order-to-prep.patch} | 0 ...rafting-result-amount-for-fireworks.patch} | 0 ...> 0946-Properly-Cancel-Usable-Items.patch} | 2 +- ...7-Add-event-for-player-editing-sign.patch} | 0 ...k-item-frames-if-players-can-see-it.patch} | 0 ...-command-function-perm-level-checks.patch} | 0 ...Add-option-to-disable-block-updates.patch} | 0 ...951-Call-missing-BlockDispenseEvent.patch} | 0 ...-chunks-for-supporting-block-checks.patch} | 0 ...Optimize-player-lookups-for-beacons.patch} | 0 ...954-Add-Sign-getInteractableSideFor.patch} | 0 ...55-Array-backed-synched-entity-data.patch} | 0 ...6-fix-item-meta-for-tadpole-buckets.patch} | 0 ...uppress-Item-Meta-Validation-Checks.patch} | 0 ...t-API.patch => 0958-Fix-BanList-API.patch} | 2 +- ...d-water-fluid-explosion-resistance-.patch} | 0 ...x-possible-NPE-on-painting-creation.patch} | 0 ...imer-for-Wandering-Traders-spawned-.patch} | 0 ...nceOrb-should-call-EntitySpawnEvent.patch} | 0 ...igns.patch => 0963-Don-t-tick-signs.patch} | 0 ...t-throw-both-Spread-and-Grow-Events.patch} | 0 ....patch => 0965-Add-whitelist-events.patch} | 0 ... 0966-Implement-PlayerFailMoveEvent.patch} | 2 +- ...olia-scheduler-and-owned-region-API.patch} | 0 ...se-allay-memory-on-non-item-targets.patch} | 0 ...API-for-updating-recipes-on-clients.patch} | 0 ...tion-when-spawning-display-entities.patch} | 0 ...971-Only-capture-actual-tree-growth.patch} | 0 ...rce-for-mushroom-block-spread-event.patch} | 0 ...Data-on-more-entities-when-spawning.patch} | 0 ...-Use-correct-seed-on-api-world-load.patch} | 0 ...ta-neighbour-ticks-outside-of-range.patch} | 0 ...> 0976-Cache-map-ids-on-item-frames.patch} | 0 ...-custom-statistic-criteria-creation.patch} | 0 ...atch => 0978-Bandaid-fix-for-Effect.patch} | 2 +- ...tch => 0979-SculkCatalyst-bloom-API.patch} | 0 ...API-for-an-entity-s-scoreboard-name.patch} | 0 ...g-PreCreatureSpawnEvent-with-per-pl.patch} | 0 ...lace-methods-with-old-StructureType.patch} | 0 ...e-namespaced-commands-if-send-names.patch} | 2 +- ...-handle-BlockBreakEvent-isDropItems.patch} | 0 ...entity-death-event-for-ender-dragon.patch} | 0 ...tity-tracking-range-by-Y-coordinate.patch} | 0 ... => 0987-Add-Listing-API-for-Player.patch} | 2 +- ...figurable-Region-Compression-Format.patch} | 0 ...d-BlockFace-during-BlockDamageEvent.patch} | 0 ...h => 0990-Fix-NPE-on-Boat-getStatus.patch} | 0 ...e-API.patch => 0991-Expand-Pose-API.patch} | 0 ...patch => 0992-More-DragonBattle-API.patch} | 0 ... 0993-Deep-clone-unhandled-nbt-tags.patch} | 0 ...tch => 0994-Add-PlayerPickItemEvent.patch} | 2 +- ...-Improve-performance-of-mass-crafts.patch} | 0 ...=> 0996-Allow-trident-custom-damage.patch} | 0 ...pose-hand-during-BlockCanBuildEvent.patch} | 0 ...-nearest-structure-border-iteration.patch} | 0 ...Implement-OfflinePlayer-isConnected.patch} | 2 +- ....patch => 1000-Fix-inventory-desync.patch} | 0 ...titleOverride-to-InventoryOpenEvent.patch} | 0 ...02-Configure-sniffer-egg-hatch-time.patch} | 0 ...-proximity-check-before-entity-look.patch} | 0 ...kip-POI-finding-if-stuck-in-vehicle.patch} | 0 ...t-sanity-checks-in-container-clicks.patch} | 2 +- ...ll-BlockRedstoneEvents-for-lecterns.patch} | 0 ...roper-checking-of-empty-item-stacks.patch} | 0 ...ix-silent-equipment-change-for-mobs.patch} | 0 ...h => 1009-Fix-spigot-s-Forced-Stats.patch} | 0 ...ing-InventoryHolders-to-inventories.patch} | 0 ...entities-in-chunks-that-are-positio.patch} | 0 ...> 1012-Actually-optimise-explosions.patch} | 0 ...sing-logs-for-log-ips-config-option.patch} | 0 ...Remove-Spigot-Bug-Fix-for-MC-109346.patch} | 0 ...atch => 1015-Fix-SuspiciousStewMeta.patch} | 0 ... 1016-Optimise-chunk-tick-iteration.patch} | 0 ...atch => 1017-Lag-compensation-ticks.patch} | 0 ...n-on-UpgradeData.BlockFixers-class-.patch} | 0 ...-AdvancementProgress-getDateAwarded.patch} | 0 ...idebar-objectives-not-being-cleared.patch} | 0 ...21-Optimise-nearby-player-retrieval.patch} | 0 ...1022-Remove-streams-for-villager-AI.patch} | 0 ...x-missing-map-initialize-event-call.patch} | 0 ...a-when-attaching-firework-to-entity.patch} | 0 ...ble-for-initializing-CraftLootTable.patch} | 0 ...method-of-Fireballs-change-the-trav.patch} | 0 ...27-Fix-UnsafeValues-loadAdvancement.patch} | 0 ...> 1028-Add-player-idle-duration-API.patch} | 2 +- ...-if-we-can-see-non-visible-entities.patch} | 0 ...NPE-in-SculkBloomEvent-world-access.patch} | 0 ...tack-for-Player-sendEquipmentChange.patch} | 2 +- ...Ints.patch => 1032-Optimize-VarInts.patch} | 0 ...e-collision-shape-of-a-block-before.patch} | 0 ...redicate-for-blocks-when-raytracing.patch} | 0 ...em-packets-with-collector-as-source.patch} | 0 ...cure-profile-with-proxy-online-mode.patch} | 0 ... => 1037-Expand-LingeringPotion-API.patch} | 0 ....patch => 1038-Add-MaterialTagsTest.patch} | 0 ...ngEffect-powers-lightning-rods-and-.patch} | 0 ...h-event-for-all-player-interactions.patch} | 0 ...everal-issues-with-EntityBreedEvent.patch} | 0 ...042-Add-UUID-attribute-modifier-API.patch} | 0 ...-event-call-for-entity-teleport-API.patch} | 0 ...y-create-LootContext-for-criterions.patch} | 0 ...tyPotionEffectEvent-during-worldgen.patch} | 0 ...-getAttributeModifier-duplication-c.patch} | 0 ...store-vanilla-entity-drops-behavior.patch} | 0 ...tch => 1048-Add-Structure-check-API.patch} | 0 ...-Dont-resend-blocks-on-interactions.patch} | 0 ...patch => 1050-Temp-adventure-update.patch} | 0 ...evious-behavior-for-setResourcePack.patch} | 2 +- 637 files changed, 965 insertions(+), 421 deletions(-) rename patches/server/{0421-incremental-chunk-and-player-saving.patch => 0420-incremental-chunk-and-player-saving.patch} (98%) delete mode 100644 patches/server/0420-initial-work-on-native-Adventure-codecs.patch rename patches/server/{0422-Support-old-UUID-format-for-NBT.patch => 0421-Support-old-UUID-format-for-NBT.patch} (100%) rename patches/server/{0423-Convert-legacy-attributes-in-Item-Meta.patch => 0422-Convert-legacy-attributes-in-Item-Meta.patch} (100%) rename patches/server/{0424-Remove-some-streams-from-structures.patch => 0423-Remove-some-streams-from-structures.patch} (100%) rename patches/server/{0425-Remove-streams-from-classes-related-villager-gossip.patch => 0424-Remove-streams-from-classes-related-villager-gossip.patch} (100%) rename patches/server/{0426-Support-components-in-ItemMeta.patch => 0425-Support-components-in-ItemMeta.patch} (100%) rename patches/server/{0427-Improve-fix-EntityTargetLivingEntityEvent.patch => 0426-Improve-fix-EntityTargetLivingEntityEvent.patch} (100%) rename patches/server/{0428-Add-entity-liquid-API.patch => 0427-Add-entity-liquid-API.patch} (100%) rename patches/server/{0429-Update-itemstack-legacy-name-and-lore.patch => 0428-Update-itemstack-legacy-name-and-lore.patch} (100%) rename patches/server/{0430-Add-PrepareResultEvent.patch => 0429-Add-PrepareResultEvent.patch} (100%) rename patches/server/{0431-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch => 0430-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch} (100%) rename patches/server/{0432-Fix-arrows-never-despawning-MC-125757.patch => 0431-Fix-arrows-never-despawning-MC-125757.patch} (100%) rename patches/server/{0433-Thread-Safe-Vanilla-Command-permission-checking.patch => 0432-Thread-Safe-Vanilla-Command-permission-checking.patch} (100%) rename patches/server/{0434-Fix-SPIGOT-5989.patch => 0433-Fix-SPIGOT-5989.patch} (100%) rename patches/server/{0435-Fix-SPIGOT-5824-Bukkit-world-container-is-not-used.patch => 0434-Fix-SPIGOT-5824-Bukkit-world-container-is-not-used.patch} (100%) rename patches/server/{0436-Fix-SPIGOT-5885-Unable-to-disable-advancements.patch => 0435-Fix-SPIGOT-5885-Unable-to-disable-advancements.patch} (100%) rename patches/server/{0437-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch => 0436-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch} (100%) rename patches/server/{0438-Optimize-NetworkManager-Exception-Handling.patch => 0437-Optimize-NetworkManager-Exception-Handling.patch} (100%) rename patches/server/{0439-Fix-some-rails-connecting-improperly.patch => 0438-Fix-some-rails-connecting-improperly.patch} (100%) rename patches/server/{0440-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch => 0439-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch} (100%) rename patches/server/{0441-Brand-support.patch => 0440-Brand-support.patch} (98%) rename patches/server/{0442-Add-playPickupItemAnimation-to-LivingEntity.patch => 0441-Add-playPickupItemAnimation-to-LivingEntity.patch} (100%) rename patches/server/{0443-Don-t-require-FACING-data.patch => 0442-Don-t-require-FACING-data.patch} (100%) rename patches/server/{0444-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch => 0443-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch} (100%) rename patches/server/{0445-Add-moon-phase-API.patch => 0444-Add-moon-phase-API.patch} (100%) rename patches/server/{0446-Do-not-let-the-server-load-chunks-from-newer-version.patch => 0445-Do-not-let-the-server-load-chunks-from-newer-version.patch} (100%) rename patches/server/{0447-Prevent-headless-pistons-from-being-created.patch => 0446-Prevent-headless-pistons-from-being-created.patch} (100%) rename patches/server/{0448-Add-BellRingEvent.patch => 0447-Add-BellRingEvent.patch} (100%) rename patches/server/{0449-Add-zombie-targets-turtle-egg-config.patch => 0448-Add-zombie-targets-turtle-egg-config.patch} (100%) rename patches/server/{0450-Buffer-joins-to-world.patch => 0449-Buffer-joins-to-world.patch} (100%) rename patches/server/{0451-Eigencraft-redstone-implementation.patch => 0450-Eigencraft-redstone-implementation.patch} (100%) rename patches/server/{0452-Fix-hex-colors-not-working-in-some-kick-messages.patch => 0451-Fix-hex-colors-not-working-in-some-kick-messages.patch} (100%) rename patches/server/{0453-PortalCreateEvent-needs-to-know-its-entity.patch => 0452-PortalCreateEvent-needs-to-know-its-entity.patch} (100%) rename patches/server/{0454-Add-more-Evoker-API.patch => 0453-Add-more-Evoker-API.patch} (100%) rename patches/server/{0455-Add-methods-to-get-translation-keys.patch => 0454-Add-methods-to-get-translation-keys.patch} (100%) rename patches/server/{0456-Create-HoverEvent-from-ItemStack-Entity.patch => 0455-Create-HoverEvent-from-ItemStack-Entity.patch} (100%) rename patches/server/{0457-Cache-block-data-strings.patch => 0456-Cache-block-data-strings.patch} (100%) rename patches/server/{0458-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch => 0457-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch} (100%) rename patches/server/{0459-Add-additional-open-container-api-to-HumanEntity.patch => 0458-Add-additional-open-container-api-to-HumanEntity.patch} (100%) rename patches/server/{0460-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch => 0459-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch} (100%) rename patches/server/{0461-Extend-block-drop-capture-to-capture-all-items-added.patch => 0460-Extend-block-drop-capture-to-capture-all-items-added.patch} (96%) rename patches/server/{0462-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch => 0461-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch} (100%) rename patches/server/{0463-Lazily-track-plugin-scoreboards-by-default.patch => 0462-Lazily-track-plugin-scoreboards-by-default.patch} (100%) rename patches/server/{0464-Entity-isTicking.patch => 0463-Entity-isTicking.patch} (100%) rename patches/server/{0465-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch => 0464-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch} (100%) rename patches/server/{0466-Fix-Concurrency-issue-in-ShufflingList.patch => 0465-Fix-Concurrency-issue-in-ShufflingList.patch} (100%) rename patches/server/{0467-Reset-Ender-Crystals-on-Dragon-Spawn.patch => 0466-Reset-Ender-Crystals-on-Dragon-Spawn.patch} (100%) rename patches/server/{0468-Fix-for-large-move-vectors-crashing-server.patch => 0467-Fix-for-large-move-vectors-crashing-server.patch} (100%) rename patches/server/{0469-Optimise-getType-calls.patch => 0468-Optimise-getType-calls.patch} (100%) rename patches/server/{0470-Villager-resetOffers.patch => 0469-Villager-resetOffers.patch} (100%) rename patches/server/{0471-Retain-block-place-order-when-capturing-blockstates.patch => 0470-Retain-block-place-order-when-capturing-blockstates.patch} (100%) rename patches/server/{0472-Reduce-blockpos-allocation-from-pathfinding.patch => 0471-Reduce-blockpos-allocation-from-pathfinding.patch} (100%) rename patches/server/{0473-Fix-item-locations-dropped-from-campfires.patch => 0472-Fix-item-locations-dropped-from-campfires.patch} (100%) rename patches/server/{0474-Fixed-TileEntityBell-memory-leak.patch => 0473-Fixed-TileEntityBell-memory-leak.patch} (100%) rename patches/server/{0475-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch => 0474-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch} (100%) rename patches/server/{0476-Add-getOfflinePlayerIfCached-String.patch => 0475-Add-getOfflinePlayerIfCached-String.patch} (100%) rename patches/server/{0477-Add-ignore-discounts-API.patch => 0476-Add-ignore-discounts-API.patch} (100%) rename patches/server/{0478-Toggle-for-removing-existing-dragon.patch => 0477-Toggle-for-removing-existing-dragon.patch} (100%) rename patches/server/{0479-Fix-client-lag-on-advancement-loading.patch => 0478-Fix-client-lag-on-advancement-loading.patch} (100%) rename patches/server/{0480-Item-no-age-no-player-pickup.patch => 0479-Item-no-age-no-player-pickup.patch} (100%) rename patches/server/{0481-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch => 0480-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch} (100%) rename patches/server/{0482-Beacon-API-custom-effect-ranges.patch => 0481-Beacon-API-custom-effect-ranges.patch} (100%) rename patches/server/{0483-Add-API-for-quit-reason.patch => 0482-Add-API-for-quit-reason.patch} (98%) rename patches/server/{0484-Add-Wandering-Trader-spawn-rate-config-options.patch => 0483-Add-Wandering-Trader-spawn-rate-config-options.patch} (100%) rename patches/server/{0485-Expose-world-spawn-angle.patch => 0484-Expose-world-spawn-angle.patch} (100%) rename patches/server/{0486-Add-Destroy-Speed-API.patch => 0485-Add-Destroy-Speed-API.patch} (100%) rename patches/server/{0487-Fix-Player-spawnParticle-x-y-z-precision-loss.patch => 0486-Fix-Player-spawnParticle-x-y-z-precision-loss.patch} (93%) rename patches/server/{0488-Add-LivingEntity-clearActiveItem.patch => 0487-Add-LivingEntity-clearActiveItem.patch} (100%) rename patches/server/{0489-Add-PlayerItemCooldownEvent.patch => 0488-Add-PlayerItemCooldownEvent.patch} (100%) rename patches/server/{0490-Significantly-improve-performance-of-the-end-generat.patch => 0489-Significantly-improve-performance-of-the-end-generat.patch} (100%) rename patches/server/{0491-More-lightning-API.patch => 0490-More-lightning-API.patch} (100%) rename patches/server/{0492-Climbing-should-not-bypass-cramming-gamerule.patch => 0491-Climbing-should-not-bypass-cramming-gamerule.patch} (100%) rename patches/server/{0493-Added-missing-default-perms-for-commands.patch => 0492-Added-missing-default-perms-for-commands.patch} (100%) rename patches/server/{0494-Add-PlayerShearBlockEvent.patch => 0493-Add-PlayerShearBlockEvent.patch} (100%) rename patches/server/{0495-Limit-recipe-packets.patch => 0494-Limit-recipe-packets.patch} (100%) rename patches/server/{0496-Fix-CraftSound-backwards-compatibility.patch => 0495-Fix-CraftSound-backwards-compatibility.patch} (100%) rename patches/server/{0497-Player-Chunk-Load-Unload-Events.patch => 0496-Player-Chunk-Load-Unload-Events.patch} (100%) rename patches/server/{0498-Optimize-Dynamic-get-Missing-Keys.patch => 0497-Optimize-Dynamic-get-Missing-Keys.patch} (100%) rename patches/server/{0499-Expose-LivingEntity-hurt-direction.patch => 0498-Expose-LivingEntity-hurt-direction.patch} (100%) rename patches/server/{0500-Add-OBSTRUCTED-reason-to-BedEnterResult.patch => 0499-Add-OBSTRUCTED-reason-to-BedEnterResult.patch} (100%) rename patches/server/{0501-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch => 0500-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch} (100%) rename patches/server/{0502-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch => 0501-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch} (100%) rename patches/server/{0503-Implement-TargetHitEvent.patch => 0502-Implement-TargetHitEvent.patch} (100%) rename patches/server/{0504-MC-4-Fix-item-position-desync.patch => 0503-MC-4-Fix-item-position-desync.patch} (100%) rename patches/server/{0505-Additional-Block-Material-API-s.patch => 0504-Additional-Block-Material-API-s.patch} (100%) rename patches/server/{0506-Fix-harming-potion-dupe.patch => 0505-Fix-harming-potion-dupe.patch} (100%) rename patches/server/{0507-Implement-API-to-get-Material-from-Boats-and-Minecar.patch => 0506-Implement-API-to-get-Material-from-Boats-and-Minecar.patch} (100%) rename patches/server/{0508-Cache-burn-durations.patch => 0507-Cache-burn-durations.patch} (100%) rename patches/server/{0509-Allow-disabling-mob-spawner-spawn-egg-transformation.patch => 0508-Allow-disabling-mob-spawner-spawn-egg-transformation.patch} (100%) rename patches/server/{0510-Fix-Not-a-string-Map-Conversion-spam.patch => 0509-Fix-Not-a-string-Map-Conversion-spam.patch} (100%) rename patches/server/{0511-Implement-PlayerFlowerPotManipulateEvent.patch => 0510-Implement-PlayerFlowerPotManipulateEvent.patch} (100%) rename patches/server/{0512-Fix-interact-event-not-being-called-sometimes.patch => 0511-Fix-interact-event-not-being-called-sometimes.patch} (100%) rename patches/server/{0513-Zombie-API-breaking-doors.patch => 0512-Zombie-API-breaking-doors.patch} (100%) rename patches/server/{0514-Fix-nerfed-slime-when-splitting.patch => 0513-Fix-nerfed-slime-when-splitting.patch} (100%) rename patches/server/{0515-Add-EntityLoadCrossbowEvent.patch => 0514-Add-EntityLoadCrossbowEvent.patch} (100%) rename patches/server/{0516-Added-WorldGameRuleChangeEvent.patch => 0515-Added-WorldGameRuleChangeEvent.patch} (100%) rename patches/server/{0517-Added-ServerResourcesReloadedEvent.patch => 0516-Added-ServerResourcesReloadedEvent.patch} (100%) rename patches/server/{0518-Added-world-settings-for-mobs-picking-up-loot.patch => 0517-Added-world-settings-for-mobs-picking-up-loot.patch} (100%) rename patches/server/{0519-Implemented-BlockFailedDispenseEvent.patch => 0518-Implemented-BlockFailedDispenseEvent.patch} (100%) rename patches/server/{0520-Added-PlayerLecternPageChangeEvent.patch => 0519-Added-PlayerLecternPageChangeEvent.patch} (100%) rename patches/server/{0521-Added-PlayerLoomPatternSelectEvent.patch => 0520-Added-PlayerLoomPatternSelectEvent.patch} (100%) rename patches/server/{0522-Configurable-door-breaking-difficulty.patch => 0521-Configurable-door-breaking-difficulty.patch} (100%) rename patches/server/{0523-Empty-commands-shall-not-be-dispatched.patch => 0522-Empty-commands-shall-not-be-dispatched.patch} (100%) rename patches/server/{0524-Remove-stale-POIs.patch => 0523-Remove-stale-POIs.patch} (100%) rename patches/server/{0525-Fix-villager-boat-exploit.patch => 0524-Fix-villager-boat-exploit.patch} (100%) rename patches/server/{0526-Add-sendOpLevel-API.patch => 0525-Add-sendOpLevel-API.patch} (96%) rename patches/server/{0527-TODO-Registry-Modification-API.patch => 0526-TODO-Registry-Modification-API.patch} (100%) rename patches/server/{0528-Add-StructuresLocateEvent.patch => 0527-Add-StructuresLocateEvent.patch} (100%) rename patches/server/{0529-Collision-option-for-requiring-a-player-participant.patch => 0528-Collision-option-for-requiring-a-player-participant.patch} (100%) rename patches/server/{0530-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch => 0529-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch} (100%) rename patches/server/{0531-Return-chat-component-with-empty-text-instead-of-thr.patch => 0530-Return-chat-component-with-empty-text-instead-of-thr.patch} (100%) rename patches/server/{0532-Make-schedule-command-per-world.patch => 0531-Make-schedule-command-per-world.patch} (100%) rename patches/server/{0533-Configurable-max-leash-distance.patch => 0532-Configurable-max-leash-distance.patch} (100%) rename patches/server/{0534-Implement-BlockPreDispenseEvent.patch => 0533-Implement-BlockPreDispenseEvent.patch} (100%) rename patches/server/{0535-Added-firing-of-PlayerChangeBeaconEffectEvent.patch => 0534-Added-firing-of-PlayerChangeBeaconEffectEvent.patch} (100%) rename patches/server/{0536-Add-toggle-for-always-placing-the-dragon-egg.patch => 0535-Add-toggle-for-always-placing-the-dragon-egg.patch} (100%) rename patches/server/{0537-Added-PlayerStonecutterRecipeSelectEvent.patch => 0536-Added-PlayerStonecutterRecipeSelectEvent.patch} (100%) rename patches/server/{0538-Add-dropLeash-variable-to-EntityUnleashEvent.patch => 0537-Add-dropLeash-variable-to-EntityUnleashEvent.patch} (100%) rename patches/server/{0539-Reset-shield-blocking-on-dimension-change.patch => 0538-Reset-shield-blocking-on-dimension-change.patch} (100%) rename patches/server/{0540-add-DragonEggFormEvent.patch => 0539-add-DragonEggFormEvent.patch} (100%) rename patches/server/{0541-EntityMoveEvent.patch => 0540-EntityMoveEvent.patch} (97%) rename patches/server/{0542-added-option-to-disable-pathfinding-updates-on-block.patch => 0541-added-option-to-disable-pathfinding-updates-on-block.patch} (91%) rename patches/server/{0543-Inline-shift-direction-fields.patch => 0542-Inline-shift-direction-fields.patch} (100%) rename patches/server/{0544-Allow-adding-items-to-BlockDropItemEvent.patch => 0543-Allow-adding-items-to-BlockDropItemEvent.patch} (100%) rename patches/server/{0545-Add-getMainThreadExecutor-to-BukkitScheduler.patch => 0544-Add-getMainThreadExecutor-to-BukkitScheduler.patch} (100%) rename patches/server/{0546-living-entity-allow-attribute-registration.patch => 0545-living-entity-allow-attribute-registration.patch} (100%) rename patches/server/{0547-fix-dead-slime-setSize-invincibility.patch => 0546-fix-dead-slime-setSize-invincibility.patch} (100%) rename patches/server/{0548-Merchant-getRecipes-should-return-an-immutable-list.patch => 0547-Merchant-getRecipes-should-return-an-immutable-list.patch} (100%) rename patches/server/{0549-Expose-Tracked-Players.patch => 0548-Expose-Tracked-Players.patch} (100%) rename patches/server/{0550-Remove-streams-from-SensorNearest.patch => 0549-Remove-streams-from-SensorNearest.patch} (100%) rename patches/server/{0551-Improve-ServerGUI.patch => 0550-Improve-ServerGUI.patch} (100%) rename patches/server/{0552-fix-converting-txt-to-json-file.patch => 0551-fix-converting-txt-to-json-file.patch} (100%) rename patches/server/{0553-Add-worldborder-events.patch => 0552-Add-worldborder-events.patch} (100%) rename patches/server/{0554-added-PlayerNameEntityEvent.patch => 0553-added-PlayerNameEntityEvent.patch} (100%) rename patches/server/{0555-Prevent-grindstones-from-overstacking-items.patch => 0554-Prevent-grindstones-from-overstacking-items.patch} (100%) rename patches/server/{0556-Add-recipe-to-cook-events.patch => 0555-Add-recipe-to-cook-events.patch} (100%) rename patches/server/{0557-Add-Block-isValidTool.patch => 0556-Add-Block-isValidTool.patch} (100%) rename patches/server/{0558-Allow-using-signs-inside-spawn-protection.patch => 0557-Allow-using-signs-inside-spawn-protection.patch} (94%) rename patches/server/{0559-Expand-world-key-API.patch => 0558-Expand-world-key-API.patch} (100%) rename patches/server/{0560-Add-fast-alternative-constructor-for-Rotations.patch => 0559-Add-fast-alternative-constructor-for-Rotations.patch} (100%) rename patches/server/{0561-Item-Rarity-API.patch => 0560-Item-Rarity-API.patch} (100%) rename patches/server/{0562-Drop-carried-item-when-player-has-disconnected.patch => 0561-Drop-carried-item-when-player-has-disconnected.patch} (100%) rename patches/server/{0563-forced-whitelist-use-configurable-kick-message.patch => 0562-forced-whitelist-use-configurable-kick-message.patch} (100%) rename patches/server/{0564-Don-t-ignore-result-of-PlayerEditBookEvent.patch => 0563-Don-t-ignore-result-of-PlayerEditBookEvent.patch} (91%) rename patches/server/{0565-Expose-protocol-version.patch => 0564-Expose-protocol-version.patch} (100%) rename patches/server/{0566-Enhance-console-tab-completions-for-brigadier-comman.patch => 0565-Enhance-console-tab-completions-for-brigadier-comman.patch} (100%) rename patches/server/{0567-Fix-PlayerItemConsumeEvent-cancelling-properly.patch => 0566-Fix-PlayerItemConsumeEvent-cancelling-properly.patch} (100%) rename patches/server/{0568-Add-bypass-host-check.patch => 0567-Add-bypass-host-check.patch} (100%) rename patches/server/{0569-Set-area-affect-cloud-rotation.patch => 0568-Set-area-affect-cloud-rotation.patch} (100%) rename patches/server/{0570-add-isDeeplySleeping-to-HumanEntity.patch => 0569-add-isDeeplySleeping-to-HumanEntity.patch} (100%) rename patches/server/{0571-add-consumeFuel-to-FurnaceBurnEvent.patch => 0570-add-consumeFuel-to-FurnaceBurnEvent.patch} (100%) rename patches/server/{0572-add-get-set-drop-chance-to-EntityEquipment.patch => 0571-add-get-set-drop-chance-to-EntityEquipment.patch} (100%) rename patches/server/{0573-fix-PigZombieAngerEvent-cancellation.patch => 0572-fix-PigZombieAngerEvent-cancellation.patch} (100%) rename patches/server/{0574-fix-PlayerItemHeldEvent-firing-twice.patch => 0573-fix-PlayerItemHeldEvent-firing-twice.patch} (93%) rename patches/server/{0575-Added-PlayerDeepSleepEvent.patch => 0574-Added-PlayerDeepSleepEvent.patch} (100%) rename patches/server/{0576-More-World-API.patch => 0575-More-World-API.patch} (100%) rename patches/server/{0577-Added-PlayerBedFailEnterEvent.patch => 0576-Added-PlayerBedFailEnterEvent.patch} (100%) rename patches/server/{0578-Implement-methods-to-convert-between-Component-and-B.patch => 0577-Implement-methods-to-convert-between-Component-and-B.patch} (100%) rename patches/server/{0579-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch => 0578-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch} (100%) rename patches/server/{0580-Introduce-beacon-activation-deactivation-events.patch => 0579-Introduce-beacon-activation-deactivation-events.patch} (100%) rename patches/server/{0581-add-RespawnFlags-to-PlayerRespawnEvent.patch => 0580-add-RespawnFlags-to-PlayerRespawnEvent.patch} (97%) rename patches/server/{0582-Add-Channel-initialization-listeners.patch => 0581-Add-Channel-initialization-listeners.patch} (100%) rename patches/server/{0583-Send-empty-commands-if-tab-completion-is-disabled.patch => 0582-Send-empty-commands-if-tab-completion-is-disabled.patch} (100%) rename patches/server/{0584-Add-more-WanderingTrader-API.patch => 0583-Add-more-WanderingTrader-API.patch} (100%) rename patches/server/{0585-Add-EntityBlockStorage-clearEntities.patch => 0584-Add-EntityBlockStorage-clearEntities.patch} (100%) rename patches/server/{0586-Entity-load-save-limit-per-chunk.patch => 0585-Entity-load-save-limit-per-chunk.patch} (100%) rename patches/server/{0587-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch => 0586-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch} (100%) rename patches/server/{0588-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch => 0587-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch} (100%) rename patches/server/{0589-Inventory-close.patch => 0588-Inventory-close.patch} (100%) rename patches/server/{0590-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch => 0589-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch} (100%) rename patches/server/{0591-Add-basic-Datapack-API.patch => 0590-Add-basic-Datapack-API.patch} (100%) rename patches/server/{0592-Add-environment-variable-to-disable-server-gui.patch => 0591-Add-environment-variable-to-disable-server-gui.patch} (100%) rename patches/server/{0593-additions-to-PlayerGameModeChangeEvent.patch => 0592-additions-to-PlayerGameModeChangeEvent.patch} (98%) rename patches/server/{0594-ItemStack-repair-check-API.patch => 0593-ItemStack-repair-check-API.patch} (100%) rename patches/server/{0595-More-Enchantment-API.patch => 0594-More-Enchantment-API.patch} (100%) rename patches/server/{0596-Move-range-check-for-block-placing-up.patch => 0595-Move-range-check-for-block-placing-up.patch} (92%) rename patches/server/{0597-Fix-and-optimise-world-force-upgrading.patch => 0596-Fix-and-optimise-world-force-upgrading.patch} (100%) rename patches/server/{0598-Add-Mob-lookAt-API.patch => 0597-Add-Mob-lookAt-API.patch} (100%) rename patches/server/{0599-Add-Unix-domain-socket-support.patch => 0598-Add-Unix-domain-socket-support.patch} (98%) rename patches/server/{0600-Add-EntityInsideBlockEvent.patch => 0599-Add-EntityInsideBlockEvent.patch} (100%) rename patches/server/{0601-Attributes-API-for-item-defaults.patch => 0600-Attributes-API-for-item-defaults.patch} (100%) rename patches/server/{0602-Add-cause-to-Weather-ThunderChangeEvents.patch => 0601-Add-cause-to-Weather-ThunderChangeEvents.patch} (98%) rename patches/server/{0603-More-Lidded-Block-API.patch => 0602-More-Lidded-Block-API.patch} (100%) rename patches/server/{0604-Limit-item-frame-cursors-on-maps.patch => 0603-Limit-item-frame-cursors-on-maps.patch} (100%) rename patches/server/{0605-Add-PlayerKickEvent-causes.patch => 0604-Add-PlayerKickEvent-causes.patch} (99%) rename patches/server/{0606-Add-PufferFishStateChangeEvent.patch => 0605-Add-PufferFishStateChangeEvent.patch} (100%) rename patches/server/{0607-Fix-PlayerBucketEmptyEvent-result-itemstack.patch => 0606-Fix-PlayerBucketEmptyEvent-result-itemstack.patch} (100%) rename patches/server/{0608-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch => 0607-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch} (100%) rename patches/server/{0609-Add-option-to-fix-items-merging-through-walls.patch => 0608-Add-option-to-fix-items-merging-through-walls.patch} (100%) rename patches/server/{0610-Add-BellRevealRaiderEvent.patch => 0609-Add-BellRevealRaiderEvent.patch} (100%) rename patches/server/{0611-Fix-invulnerable-end-crystals.patch => 0610-Fix-invulnerable-end-crystals.patch} (100%) rename patches/server/{0612-Add-ElderGuardianAppearanceEvent.patch => 0611-Add-ElderGuardianAppearanceEvent.patch} (100%) rename patches/server/{0613-Fix-dangerous-end-portal-logic.patch => 0612-Fix-dangerous-end-portal-logic.patch} (100%) rename patches/server/{0614-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch => 0613-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch} (100%) rename patches/server/{0615-Make-item-validations-configurable.patch => 0614-Make-item-validations-configurable.patch} (100%) rename patches/server/{0616-Line-Of-Sight-Changes.patch => 0615-Line-Of-Sight-Changes.patch} (100%) rename patches/server/{0617-add-per-world-spawn-limits.patch => 0616-add-per-world-spawn-limits.patch} (100%) rename patches/server/{0618-Fix-potions-splash-events.patch => 0617-Fix-potions-splash-events.patch} (100%) rename patches/server/{0619-Add-more-LimitedRegion-API.patch => 0618-Add-more-LimitedRegion-API.patch} (100%) rename patches/server/{0620-Fix-PlayerDropItemEvent-using-wrong-item.patch => 0619-Fix-PlayerDropItemEvent-using-wrong-item.patch} (100%) rename patches/server/{0621-Missing-Entity-API.patch => 0620-Missing-Entity-API.patch} (100%) rename patches/server/{0622-Ensure-disconnect-for-book-edit-is-called-on-main.patch => 0621-Ensure-disconnect-for-book-edit-is-called-on-main.patch} (92%) rename patches/server/{0623-Fix-return-value-of-Block-applyBoneMeal-always-being.patch => 0622-Fix-return-value-of-Block-applyBoneMeal-always-being.patch} (100%) rename patches/server/{0624-Use-getChunkIfLoadedImmediately-in-places.patch => 0623-Use-getChunkIfLoadedImmediately-in-places.patch} (97%) rename patches/server/{0625-Fix-commands-from-signs-not-firing-command-events.patch => 0624-Fix-commands-from-signs-not-firing-command-events.patch} (100%) rename patches/server/{0626-Adds-PlayerArmSwingEvent.patch => 0625-Adds-PlayerArmSwingEvent.patch} (93%) rename patches/server/{0627-Fixes-kick-event-leave-message-not-being-sent.patch => 0626-Fixes-kick-event-leave-message-not-being-sent.patch} (97%) rename patches/server/{0628-Add-config-for-mobs-immune-to-default-effects.patch => 0627-Add-config-for-mobs-immune-to-default-effects.patch} (100%) rename patches/server/{0629-Fix-incorrect-message-for-outdated-client.patch => 0628-Fix-incorrect-message-for-outdated-client.patch} (100%) rename patches/server/{0630-Don-t-apply-cramming-damage-to-players.patch => 0629-Don-t-apply-cramming-damage-to-players.patch} (100%) rename patches/server/{0631-Rate-options-and-timings-for-sensors-and-behaviors.patch => 0630-Rate-options-and-timings-for-sensors-and-behaviors.patch} (100%) rename patches/server/{0632-Add-a-bunch-of-missing-forceDrop-toggles.patch => 0631-Add-a-bunch-of-missing-forceDrop-toggles.patch} (100%) rename patches/server/{0633-Stinger-API.patch => 0632-Stinger-API.patch} (100%) rename patches/server/{0634-Fix-incosistency-issue-with-empty-map-items-in-CB.patch => 0633-Fix-incosistency-issue-with-empty-map-items-in-CB.patch} (100%) rename patches/server/{0635-Add-System.out-err-catcher.patch => 0634-Add-System.out-err-catcher.patch} (100%) rename patches/server/{0636-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch => 0635-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch} (100%) rename patches/server/{0637-Improve-boat-collision-performance.patch => 0636-Improve-boat-collision-performance.patch} (100%) rename patches/server/{0638-Prevent-AFK-kick-while-watching-end-credits.patch => 0637-Prevent-AFK-kick-while-watching-end-credits.patch} (93%) rename patches/server/{0639-Allow-skipping-writing-of-comments-to-server.propert.patch => 0638-Allow-skipping-writing-of-comments-to-server.propert.patch} (100%) rename patches/server/{0640-Add-PlayerSetSpawnEvent.patch => 0639-Add-PlayerSetSpawnEvent.patch} (99%) rename patches/server/{0641-Make-hoppers-respect-inventory-max-stack-size.patch => 0640-Make-hoppers-respect-inventory-max-stack-size.patch} (100%) rename patches/server/{0642-Optimize-entity-tracker-passenger-checks.patch => 0641-Optimize-entity-tracker-passenger-checks.patch} (100%) rename patches/server/{0643-Config-option-for-Piglins-guarding-chests.patch => 0642-Config-option-for-Piglins-guarding-chests.patch} (100%) rename patches/server/{0644-Added-EntityDamageItemEvent.patch => 0643-Added-EntityDamageItemEvent.patch} (100%) rename patches/server/{0645-Optimize-indirect-passenger-iteration.patch => 0644-Optimize-indirect-passenger-iteration.patch} (100%) rename patches/server/{0646-Configurable-item-frame-map-cursor-update-interval.patch => 0645-Configurable-item-frame-map-cursor-update-interval.patch} (100%) rename patches/server/{0647-Make-EntityUnleashEvent-cancellable.patch => 0646-Make-EntityUnleashEvent-cancellable.patch} (100%) rename patches/server/{0648-Clear-bucket-NBT-after-dispense.patch => 0647-Clear-bucket-NBT-after-dispense.patch} (100%) rename patches/server/{0649-Change-EnderEye-target-without-changing-other-things.patch => 0648-Change-EnderEye-target-without-changing-other-things.patch} (100%) rename patches/server/{0650-Add-BlockBreakBlockEvent.patch => 0649-Add-BlockBreakBlockEvent.patch} (100%) rename patches/server/{0651-Option-to-prevent-NBT-copy-in-smithing-recipes.patch => 0650-Option-to-prevent-NBT-copy-in-smithing-recipes.patch} (100%) rename patches/server/{0652-More-CommandBlock-API.patch => 0651-More-CommandBlock-API.patch} (100%) rename patches/server/{0653-Add-missing-team-sidebar-display-slots.patch => 0652-Add-missing-team-sidebar-display-slots.patch} (100%) rename patches/server/{0654-Add-back-EntityPortalExitEvent.patch => 0653-Add-back-EntityPortalExitEvent.patch} (100%) rename patches/server/{0655-Add-methods-to-find-targets-for-lightning-strikes.patch => 0654-Add-methods-to-find-targets-for-lightning-strikes.patch} (96%) rename patches/server/{0656-Get-entity-default-attributes.patch => 0655-Get-entity-default-attributes.patch} (100%) rename patches/server/{0657-Left-handed-API.patch => 0656-Left-handed-API.patch} (100%) rename patches/server/{0658-Add-more-advancement-API.patch => 0657-Add-more-advancement-API.patch} (100%) rename patches/server/{0659-Add-ItemFactory-getSpawnEgg-API.patch => 0658-Add-ItemFactory-getSpawnEgg-API.patch} (100%) rename patches/server/{0660-Add-critical-damage-API.patch => 0659-Add-critical-damage-API.patch} (100%) rename patches/server/{0661-Fix-issues-with-mob-conversion.patch => 0660-Fix-issues-with-mob-conversion.patch} (100%) rename patches/server/{0662-Add-isCollidable-methods-to-various-places.patch => 0661-Add-isCollidable-methods-to-various-places.patch} (100%) rename patches/server/{0663-Goat-ram-API.patch => 0662-Goat-ram-API.patch} (100%) rename patches/server/{0664-Add-API-for-resetting-a-single-score.patch => 0663-Add-API-for-resetting-a-single-score.patch} (100%) rename patches/server/{0665-Add-Raw-Byte-Entity-Serialization.patch => 0664-Add-Raw-Byte-Entity-Serialization.patch} (100%) rename patches/server/{0666-Vanilla-command-permission-fixes.patch => 0665-Vanilla-command-permission-fixes.patch} (100%) rename patches/server/{0667-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch => 0666-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch} (97%) rename patches/server/{0668-Fix-GameProfileCache-concurrency.patch => 0667-Fix-GameProfileCache-concurrency.patch} (100%) rename patches/server/{0669-Improve-and-expand-AsyncCatcher.patch => 0668-Improve-and-expand-AsyncCatcher.patch} (99%) rename patches/server/{0670-Add-paper-mobcaps-and-paper-playermobcaps.patch => 0669-Add-paper-mobcaps-and-paper-playermobcaps.patch} (100%) rename patches/server/{0671-Sanitize-ResourceLocation-error-logging.patch => 0670-Sanitize-ResourceLocation-error-logging.patch} (100%) rename patches/server/{0672-Optimise-general-POI-access.patch => 0671-Optimise-general-POI-access.patch} (100%) rename patches/server/{0673-Custom-table-implementation-for-blockstate-state-loo.patch => 0672-Custom-table-implementation-for-blockstate-state-loo.patch} (100%) rename patches/server/{0674-Manually-inline-methods-in-BlockPosition.patch => 0673-Manually-inline-methods-in-BlockPosition.patch} (100%) rename patches/server/{0675-Name-craft-scheduler-threads-according-to-the-plugin.patch => 0674-Name-craft-scheduler-threads-according-to-the-plugin.patch} (100%) rename patches/server/{0676-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch => 0675-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch} (100%) rename patches/server/{0677-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch => 0676-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch} (100%) rename patches/server/{0678-Don-t-lookup-fluid-state-when-raytracing.patch => 0677-Don-t-lookup-fluid-state-when-raytracing.patch} (100%) rename patches/server/{0679-Time-scoreboard-search.patch => 0678-Time-scoreboard-search.patch} (100%) rename patches/server/{0680-Send-full-pos-packets-for-hard-colliding-entities.patch => 0679-Send-full-pos-packets-for-hard-colliding-entities.patch} (100%) rename patches/server/{0681-Do-not-run-raytrace-logic-for-AIR.patch => 0680-Do-not-run-raytrace-logic-for-AIR.patch} (100%) rename patches/server/{0682-Execute-chunk-tasks-mid-tick.patch => 0681-Execute-chunk-tasks-mid-tick.patch} (98%) rename patches/server/{0683-Oprimise-map-impl-for-tracked-players.patch => 0682-Oprimise-map-impl-for-tracked-players.patch} (100%) rename patches/server/{0684-Optimise-BlockSoil-nearby-water-lookup.patch => 0683-Optimise-BlockSoil-nearby-water-lookup.patch} (100%) rename patches/server/{0685-Optimise-random-block-ticking.patch => 0684-Optimise-random-block-ticking.patch} (99%) rename patches/server/{0686-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch => 0685-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch} (100%) rename patches/server/{0687-Use-Velocity-compression-and-cipher-natives.patch => 0686-Use-Velocity-compression-and-cipher-natives.patch} (100%) rename patches/server/{0688-Detail-more-information-in-watchdog-dumps.patch => 0687-Detail-more-information-in-watchdog-dumps.patch} (99%) rename patches/server/{0689-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch => 0688-Reduce-worldgen-thread-worker-count-for-low-core-cou.patch} (100%) rename patches/server/{0690-Fix-Bukkit-NamespacedKey-shenanigans.patch => 0689-Fix-Bukkit-NamespacedKey-shenanigans.patch} (100%) rename patches/server/{0691-Distance-manager-tick-timings.patch => 0690-Distance-manager-tick-timings.patch} (100%) rename patches/server/{0692-Fix-merchant-inventory-not-closing-on-entity-removal.patch => 0691-Fix-merchant-inventory-not-closing-on-entity-removal.patch} (100%) rename patches/server/{0693-Check-requirement-before-suggesting-root-nodes.patch => 0692-Check-requirement-before-suggesting-root-nodes.patch} (100%) rename patches/server/{0694-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch => 0693-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch} (92%) rename patches/server/{0695-Add-packet-limiter-config.patch => 0694-Add-packet-limiter-config.patch} (100%) rename patches/server/{0696-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch => 0695-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch} (100%) rename patches/server/{0697-Ensure-valid-vehicle-status.patch => 0696-Ensure-valid-vehicle-status.patch} (100%) rename patches/server/{0698-Prevent-softlocked-end-exit-portal-generation.patch => 0697-Prevent-softlocked-end-exit-portal-generation.patch} (100%) rename patches/server/{0699-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch => 0698-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch} (100%) rename patches/server/{0700-Don-t-log-debug-logging-being-disabled.patch => 0699-Don-t-log-debug-logging-being-disabled.patch} (100%) rename patches/server/{0701-fix-various-menus-with-empty-level-accesses.patch => 0700-fix-various-menus-with-empty-level-accesses.patch} (100%) rename patches/server/{0702-Preserve-overstacked-loot.patch => 0701-Preserve-overstacked-loot.patch} (100%) rename patches/server/{0703-Update-head-rotation-in-missing-places.patch => 0702-Update-head-rotation-in-missing-places.patch} (100%) rename patches/server/{0704-prevent-unintended-light-block-manipulation.patch => 0703-prevent-unintended-light-block-manipulation.patch} (100%) rename patches/server/{0705-Fix-CraftCriteria-defaults-map.patch => 0704-Fix-CraftCriteria-defaults-map.patch} (100%) rename patches/server/{0706-Fix-upstreams-block-state-factories.patch => 0705-Fix-upstreams-block-state-factories.patch} (100%) rename patches/server/{0707-Configurable-feature-seeds.patch => 0706-Configurable-feature-seeds.patch} (100%) rename patches/server/{0708-Add-root-admin-user-detection.patch => 0707-Add-root-admin-user-detection.patch} (100%) rename patches/server/{0709-Always-allow-item-changing-in-Fireball.patch => 0708-Always-allow-item-changing-in-Fireball.patch} (100%) rename patches/server/{0710-don-t-attempt-to-teleport-dead-entities.patch => 0709-don-t-attempt-to-teleport-dead-entities.patch} (100%) rename patches/server/{0711-Prevent-excessive-velocity-through-repeated-crits.patch => 0710-Prevent-excessive-velocity-through-repeated-crits.patch} (100%) rename patches/server/{0712-Remove-client-side-code-using-deprecated-for-removal.patch => 0711-Remove-client-side-code-using-deprecated-for-removal.patch} (100%) rename patches/server/{0713-Fix-removing-recipes-from-RecipeIterator.patch => 0712-Fix-removing-recipes-from-RecipeIterator.patch} (100%) rename patches/server/{0714-Prevent-sending-oversized-item-data-in-equipment-and.patch => 0713-Prevent-sending-oversized-item-data-in-equipment-and.patch} (100%) rename patches/server/{0715-Hide-unnecessary-itemmeta-from-clients.patch => 0714-Hide-unnecessary-itemmeta-from-clients.patch} (98%) rename patches/server/{0716-Fix-Spigot-growth-modifiers.patch => 0715-Fix-Spigot-growth-modifiers.patch} (100%) rename patches/server/{0717-Prevent-ContainerOpenersCounter-openCount-from-going.patch => 0716-Prevent-ContainerOpenersCounter-openCount-from-going.patch} (100%) rename patches/server/{0718-Add-PlayerItemFrameChangeEvent.patch => 0717-Add-PlayerItemFrameChangeEvent.patch} (100%) rename patches/server/{0719-Optimize-HashMapPalette.patch => 0718-Optimize-HashMapPalette.patch} (100%) rename patches/server/{0720-Allow-delegation-to-vanilla-chunk-gen.patch => 0719-Allow-delegation-to-vanilla-chunk-gen.patch} (100%) rename patches/server/{0721-Collision-optimisations.patch => 0720-Collision-optimisations.patch} (100%) rename patches/server/{0722-Optimise-collision-checking-in-player-move-packet-ha.patch => 0721-Optimise-collision-checking-in-player-move-packet-ha.patch} (99%) rename patches/server/{0723-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch => 0722-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch} (100%) rename patches/server/{0724-Add-more-Campfire-API.patch => 0723-Add-more-Campfire-API.patch} (100%) rename patches/server/{0725-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch => 0724-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch} (100%) rename patches/server/{0726-Fix-tripwire-state-inconsistency.patch => 0725-Fix-tripwire-state-inconsistency.patch} (100%) rename patches/server/{0727-Forward-CraftEntity-in-teleport-command.patch => 0726-Forward-CraftEntity-in-teleport-command.patch} (100%) rename patches/server/{0728-Improve-scoreboard-entries.patch => 0727-Improve-scoreboard-entries.patch} (100%) rename patches/server/{0729-Entity-powdered-snow-API.patch => 0728-Entity-powdered-snow-API.patch} (100%) rename patches/server/{0730-Add-API-for-item-entity-health.patch => 0729-Add-API-for-item-entity-health.patch} (100%) rename patches/server/{0731-Fix-entity-type-tags-suggestions-in-selectors.patch => 0730-Fix-entity-type-tags-suggestions-in-selectors.patch} (100%) rename patches/server/{0732-Configurable-max-block-light-for-monster-spawning.patch => 0731-Configurable-max-block-light-for-monster-spawning.patch} (100%) rename patches/server/{0733-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch => 0732-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch} (100%) rename patches/server/{0734-Load-effect-amplifiers-greater-than-127-correctly.patch => 0733-Load-effect-amplifiers-greater-than-127-correctly.patch} (100%) rename patches/server/{0735-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch => 0734-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch} (100%) rename patches/server/{0736-Fix-bees-aging-inside-hives.patch => 0735-Fix-bees-aging-inside-hives.patch} (100%) rename patches/server/{0737-Bucketable-API.patch => 0736-Bucketable-API.patch} (100%) rename patches/server/{0738-Validate-usernames.patch => 0737-Validate-usernames.patch} (100%) rename patches/server/{0739-Make-water-animal-spawn-height-configurable.patch => 0738-Make-water-animal-spawn-height-configurable.patch} (100%) rename patches/server/{0740-Expose-vanilla-BiomeProvider-from-WorldInfo.patch => 0739-Expose-vanilla-BiomeProvider-from-WorldInfo.patch} (100%) rename patches/server/{0741-Add-config-option-for-worlds-affected-by-time-cmd.patch => 0740-Add-config-option-for-worlds-affected-by-time-cmd.patch} (100%) rename patches/server/{0742-Add-missing-IAE-check-for-PersistentDataContainer-ha.patch => 0741-Add-missing-IAE-check-for-PersistentDataContainer-ha.patch} (100%) rename patches/server/{0743-Multiple-Entries-with-Scoreboards.patch => 0742-Multiple-Entries-with-Scoreboards.patch} (100%) rename patches/server/{0744-Reset-placed-block-on-exception.patch => 0743-Reset-placed-block-on-exception.patch} (100%) rename patches/server/{0745-Add-configurable-height-for-slime-spawn.patch => 0744-Add-configurable-height-for-slime-spawn.patch} (100%) rename patches/server/{0746-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch => 0745-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch} (100%) rename patches/server/{0747-Fix-xp-reward-for-baby-zombies.patch => 0746-Fix-xp-reward-for-baby-zombies.patch} (100%) rename patches/server/{0748-Multi-Block-Change-API-Implementation.patch => 0747-Multi-Block-Change-API-Implementation.patch} (97%) rename patches/server/{0749-Fix-NotePlayEvent.patch => 0748-Fix-NotePlayEvent.patch} (100%) rename patches/server/{0750-Freeze-Tick-Lock-API.patch => 0749-Freeze-Tick-Lock-API.patch} (100%) rename patches/server/{0751-Dolphin-API.patch => 0750-Dolphin-API.patch} (100%) rename patches/server/{0752-More-PotionEffectType-API.patch => 0751-More-PotionEffectType-API.patch} (100%) rename patches/server/{0753-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch => 0752-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch} (100%) rename patches/server/{0754-API-for-creating-command-sender-which-forwards-feedb.patch => 0753-API-for-creating-command-sender-which-forwards-feedb.patch} (100%) rename patches/server/{0755-Add-missing-structure-set-seed-configs.patch => 0754-Add-missing-structure-set-seed-configs.patch} (100%) rename patches/server/{0756-Implement-regenerateChunk.patch => 0755-Implement-regenerateChunk.patch} (100%) rename patches/server/{0757-Fix-cancelled-powdered-snow-bucket-placement.patch => 0756-Fix-cancelled-powdered-snow-bucket-placement.patch} (100%) rename patches/server/{0758-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch => 0757-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch} (100%) rename patches/server/{0759-Add-GameEvent-tags.patch => 0758-Add-GameEvent-tags.patch} (100%) rename patches/server/{0760-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch => 0759-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch} (100%) rename patches/server/{0761-Furnace-RecipesUsed-API.patch => 0760-Furnace-RecipesUsed-API.patch} (100%) rename patches/server/{0762-Configurable-sculk-sensor-listener-range.patch => 0761-Configurable-sculk-sensor-listener-range.patch} (100%) rename patches/server/{0763-Add-missing-block-data-mins-and-maxes.patch => 0762-Add-missing-block-data-mins-and-maxes.patch} (100%) rename patches/server/{0764-Option-to-have-default-CustomSpawners-in-custom-worl.patch => 0763-Option-to-have-default-CustomSpawners-in-custom-worl.patch} (100%) rename patches/server/{0765-Put-world-into-worldlist-before-initing-the-world.patch => 0764-Put-world-into-worldlist-before-initing-the-world.patch} (100%) rename patches/server/{0766-Fix-Entity-Position-Desync.patch => 0765-Fix-Entity-Position-Desync.patch} (100%) rename patches/server/{0767-Custom-Potion-Mixes.patch => 0766-Custom-Potion-Mixes.patch} (100%) rename patches/server/{0768-Force-close-world-loading-screen.patch => 0767-Force-close-world-loading-screen.patch} (100%) rename patches/server/{0769-Fix-falling-block-spawn-methods.patch => 0768-Fix-falling-block-spawn-methods.patch} (100%) rename patches/server/{0770-Expose-furnace-minecart-push-values.patch => 0769-Expose-furnace-minecart-push-values.patch} (100%) rename patches/server/{0771-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch => 0770-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch} (100%) rename patches/server/{0772-More-Projectile-API.patch => 0771-More-Projectile-API.patch} (100%) rename patches/server/{0773-Fix-swamp-hut-cat-generation-deadlock.patch => 0772-Fix-swamp-hut-cat-generation-deadlock.patch} (100%) rename patches/server/{0774-Don-t-allow-vehicle-movement-from-players-while-tele.patch => 0773-Don-t-allow-vehicle-movement-from-players-while-tele.patch} (93%) rename patches/server/{0775-Implement-getComputedBiome-API.patch => 0774-Implement-getComputedBiome-API.patch} (100%) rename patches/server/{0776-Make-some-itemstacks-nonnull.patch => 0775-Make-some-itemstacks-nonnull.patch} (100%) rename patches/server/{0777-Implement-enchantWithLevels-API.patch => 0776-Implement-enchantWithLevels-API.patch} (100%) rename patches/server/{0778-Fix-saving-in-unloadWorld.patch => 0777-Fix-saving-in-unloadWorld.patch} (100%) rename patches/server/{0779-Buffer-OOB-setBlock-calls.patch => 0778-Buffer-OOB-setBlock-calls.patch} (100%) rename patches/server/{0780-Add-TameableDeathMessageEvent.patch => 0779-Add-TameableDeathMessageEvent.patch} (100%) rename patches/server/{0781-Fix-new-block-data-for-EntityChangeBlockEvent.patch => 0780-Fix-new-block-data-for-EntityChangeBlockEvent.patch} (100%) rename patches/server/{0782-fix-player-loottables-running-when-mob-loot-gamerule.patch => 0781-fix-player-loottables-running-when-mob-loot-gamerule.patch} (100%) rename patches/server/{0783-Ensure-entity-passenger-world-matches-ridden-entity.patch => 0782-Ensure-entity-passenger-world-matches-ridden-entity.patch} (100%) rename patches/server/{0784-Guard-against-invalid-entity-positions.patch => 0783-Guard-against-invalid-entity-positions.patch} (100%) rename patches/server/{0785-cache-resource-keys.patch => 0784-cache-resource-keys.patch} (100%) rename patches/server/{0786-Allow-to-change-the-podium-for-the-EnderDragon.patch => 0785-Allow-to-change-the-podium-for-the-EnderDragon.patch} (100%) rename patches/server/{0787-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch => 0786-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch} (100%) rename patches/server/{0788-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch => 0787-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch} (100%) rename patches/server/{0789-Prevent-tile-entity-copies-loading-chunks.patch => 0788-Prevent-tile-entity-copies-loading-chunks.patch} (93%) rename patches/server/{0790-Use-username-instead-of-display-name-in-PlayerList-g.patch => 0789-Use-username-instead-of-display-name-in-PlayerList-g.patch} (100%) rename patches/server/{0791-Pass-ServerLevel-for-gamerule-callbacks.patch => 0790-Pass-ServerLevel-for-gamerule-callbacks.patch} (99%) rename patches/server/{0792-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch => 0791-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch} (100%) rename patches/server/{0793-WorldCreator-keepSpawnLoaded.patch => 0792-WorldCreator-keepSpawnLoaded.patch} (100%) rename patches/server/{0794-Fix-CME-in-CraftPersistentDataTypeRegistry.patch => 0793-Fix-CME-in-CraftPersistentDataTypeRegistry.patch} (100%) rename patches/server/{0795-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch => 0794-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch} (100%) rename patches/server/{0796-Add-EntityDyeEvent-and-CollarColorable-interface.patch => 0795-Add-EntityDyeEvent-and-CollarColorable-interface.patch} (100%) rename patches/server/{0797-Fire-CauldronLevelChange-on-initial-fill.patch => 0796-Fire-CauldronLevelChange-on-initial-fill.patch} (100%) rename patches/server/{0798-fix-powder-snow-cauldrons-not-turning-to-water.patch => 0797-fix-powder-snow-cauldrons-not-turning-to-water.patch} (100%) rename patches/server/{0799-Add-PlayerStopUsingItemEvent.patch => 0798-Add-PlayerStopUsingItemEvent.patch} (100%) rename patches/server/{0800-Don-t-tick-markers.patch => 0799-Don-t-tick-markers.patch} (100%) rename patches/server/{0801-Expand-FallingBlock-API.patch => 0800-Expand-FallingBlock-API.patch} (100%) rename patches/server/{0802-Do-not-accept-invalid-client-settings.patch => 0801-Do-not-accept-invalid-client-settings.patch} (94%) rename patches/server/{0803-Add-support-for-Proxy-Protocol.patch => 0802-Add-support-for-Proxy-Protocol.patch} (100%) rename patches/server/{0804-Fix-OfflinePlayer-getBedSpawnLocation.patch => 0803-Fix-OfflinePlayer-getBedSpawnLocation.patch} (100%) rename patches/server/{0805-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch => 0804-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch} (100%) rename patches/server/{0806-Sanitize-Sent-BlockEntity-NBT.patch => 0805-Sanitize-Sent-BlockEntity-NBT.patch} (100%) rename patches/server/{0807-Disable-component-selector-resolving-in-books-by-def.patch => 0806-Disable-component-selector-resolving-in-books-by-def.patch} (100%) rename patches/server/{0808-Prevent-entity-loading-causing-async-lookups.patch => 0807-Prevent-entity-loading-causing-async-lookups.patch} (100%) rename patches/server/{0809-Throw-exception-on-world-create-while-being-ticked.patch => 0808-Throw-exception-on-world-create-while-being-ticked.patch} (100%) rename patches/server/{0810-Add-Alternate-Current-redstone-implementation.patch => 0809-Add-Alternate-Current-redstone-implementation.patch} (100%) rename patches/server/{0811-Dont-resent-entity-on-art-update.patch => 0810-Dont-resent-entity-on-art-update.patch} (100%) rename patches/server/{0812-Add-WardenAngerChangeEvent.patch => 0811-Add-WardenAngerChangeEvent.patch} (100%) rename patches/server/{0813-Add-option-for-strict-advancement-dimension-checks.patch => 0812-Add-option-for-strict-advancement-dimension-checks.patch} (100%) rename patches/server/{0814-Add-missing-important-BlockStateListPopulator-method.patch => 0813-Add-missing-important-BlockStateListPopulator-method.patch} (100%) rename patches/server/{0815-Nameable-Banner-API.patch => 0814-Nameable-Banner-API.patch} (100%) rename patches/server/{0816-Don-t-broadcast-messages-to-command-blocks.patch => 0815-Don-t-broadcast-messages-to-command-blocks.patch} (100%) rename patches/server/{0817-Prevent-empty-items-from-being-added-to-world.patch => 0816-Prevent-empty-items-from-being-added-to-world.patch} (100%) rename patches/server/{0818-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch => 0817-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch} (100%) rename patches/server/{0819-Add-Player-getFishHook.patch => 0818-Add-Player-getFishHook.patch} (100%) rename patches/server/{0820-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch => 0819-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch} (100%) rename patches/server/{0821-Add-various-missing-EntityDropItemEvent-calls.patch => 0820-Add-various-missing-EntityDropItemEvent-calls.patch} (100%) rename patches/server/{0822-Fix-Bee-flower-NPE.patch => 0821-Fix-Bee-flower-NPE.patch} (100%) rename patches/server/{0823-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch => 0822-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch} (92%) rename patches/server/{0824-More-Teleport-API.patch => 0823-More-Teleport-API.patch} (98%) rename patches/server/{0825-Add-EntityPortalReadyEvent.patch => 0824-Add-EntityPortalReadyEvent.patch} (100%) rename patches/server/{0826-Don-t-use-level-random-in-entity-constructors.patch => 0825-Don-t-use-level-random-in-entity-constructors.patch} (100%) rename patches/server/{0827-Send-block-entities-after-destroy-prediction.patch => 0826-Send-block-entities-after-destroy-prediction.patch} (98%) rename patches/server/{0828-Warn-on-plugins-accessing-faraway-chunks.patch => 0827-Warn-on-plugins-accessing-faraway-chunks.patch} (100%) rename patches/server/{0829-Custom-Chat-Completion-Suggestions-API.patch => 0828-Custom-Chat-Completion-Suggestions-API.patch} (94%) rename patches/server/{0830-Add-and-fix-missing-BlockFadeEvents.patch => 0829-Add-and-fix-missing-BlockFadeEvents.patch} (100%) rename patches/server/{0831-Collision-API.patch => 0830-Collision-API.patch} (100%) rename patches/server/{0832-Fix-suggest-command-message-for-brigadier-syntax-exc.patch => 0831-Fix-suggest-command-message-for-brigadier-syntax-exc.patch} (100%) rename patches/server/{0833-Block-Ticking-API.patch => 0832-Block-Ticking-API.patch} (100%) rename patches/server/{0834-Add-Velocity-IP-Forwarding-Support.patch => 0833-Add-Velocity-IP-Forwarding-Support.patch} (100%) rename patches/server/{0835-Add-NamespacedKey-biome-methods.patch => 0834-Add-NamespacedKey-biome-methods.patch} (100%) rename patches/server/{0836-Fix-plugin-loggers-on-server-shutdown.patch => 0835-Fix-plugin-loggers-on-server-shutdown.patch} (100%) rename patches/server/{0837-Stop-large-look-changes-from-crashing-the-server.patch => 0836-Stop-large-look-changes-from-crashing-the-server.patch} (100%) rename patches/server/{0838-Fire-EntityChangeBlockEvent-in-more-places.patch => 0837-Fire-EntityChangeBlockEvent-in-more-places.patch} (100%) rename patches/server/{0839-Missing-eating-regain-reason.patch => 0838-Missing-eating-regain-reason.patch} (100%) rename patches/server/{0840-Missing-effect-cause.patch => 0839-Missing-effect-cause.patch} (100%) rename patches/server/{0841-Added-byte-array-serialization-deserialization-for-P.patch => 0840-Added-byte-array-serialization-deserialization-for-P.patch} (100%) rename patches/server/{0842-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch => 0841-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch} (100%) rename patches/server/{0843-Call-BlockPhysicsEvent-more-often.patch => 0842-Call-BlockPhysicsEvent-more-often.patch} (100%) rename patches/server/{0844-Configurable-chat-thread-limit.patch => 0843-Configurable-chat-thread-limit.patch} (100%) rename patches/server/{0845-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch => 0844-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch} (100%) rename patches/server/{0846-fix-Jigsaw-block-kicking-user.patch => 0845-fix-Jigsaw-block-kicking-user.patch} (100%) rename patches/server/{0847-use-BlockFormEvent-for-mud-converting-into-clay.patch => 0846-use-BlockFormEvent-for-mud-converting-into-clay.patch} (100%) rename patches/server/{0848-Add-getDrops-to-BlockState.patch => 0847-Add-getDrops-to-BlockState.patch} (100%) rename patches/server/{0849-Fix-a-bunch-of-vanilla-bugs.patch => 0848-Fix-a-bunch-of-vanilla-bugs.patch} (100%) rename patches/server/{0850-Remove-unnecessary-onTrackingStart-during-navigation.patch => 0849-Remove-unnecessary-onTrackingStart-during-navigation.patch} (100%) rename patches/server/{0851-Fix-custom-piglin-loved-items.patch => 0850-Fix-custom-piglin-loved-items.patch} (100%) rename patches/server/{0852-EntityPickupItemEvent-fixes.patch => 0851-EntityPickupItemEvent-fixes.patch} (100%) rename patches/server/{0853-Correctly-handle-interactions-with-items-on-cooldown.patch => 0852-Correctly-handle-interactions-with-items-on-cooldown.patch} (100%) rename patches/server/{0854-Add-PlayerInventorySlotChangeEvent.patch => 0853-Add-PlayerInventorySlotChangeEvent.patch} (100%) rename patches/server/{0855-Elder-Guardian-appearance-API.patch => 0854-Elder-Guardian-appearance-API.patch} (90%) rename patches/server/{0856-Allow-changing-bed-s-occupied-property.patch => 0855-Allow-changing-bed-s-occupied-property.patch} (100%) rename patches/server/{0857-Add-entity-knockback-API.patch => 0856-Add-entity-knockback-API.patch} (100%) rename patches/server/{0858-Detect-headless-JREs.patch => 0857-Detect-headless-JREs.patch} (100%) rename patches/server/{0859-fixed-entity-vehicle-collision-event-not-called.patch => 0858-fixed-entity-vehicle-collision-event-not-called.patch} (100%) rename patches/server/{0860-optimized-dirt-and-snow-spreading.patch => 0859-optimized-dirt-and-snow-spreading.patch} (100%) rename patches/server/{0861-Added-EntityToggleSitEvent.patch => 0860-Added-EntityToggleSitEvent.patch} (100%) rename patches/server/{0862-Add-fire-tick-delay-option.patch => 0861-Add-fire-tick-delay-option.patch} (100%) rename patches/server/{0863-Add-Moving-Piston-API.patch => 0862-Add-Moving-Piston-API.patch} (100%) rename patches/server/{0864-Ignore-impossible-spawn-tick.patch => 0863-Ignore-impossible-spawn-tick.patch} (100%) rename patches/server/{0865-Track-projectile-source-for-fireworks-from-dispenser.patch => 0864-Track-projectile-source-for-fireworks-from-dispenser.patch} (100%) rename patches/server/{0866-Fix-EntityArgument-suggestion-permissions-to-align-w.patch => 0865-Fix-EntityArgument-suggestion-permissions-to-align-w.patch} (100%) rename patches/server/{0867-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch => 0866-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch} (100%) rename patches/server/{0868-Prevent-compass-from-loading-chunks.patch => 0867-Prevent-compass-from-loading-chunks.patch} (100%) rename patches/server/{0869-Add-PrePlayerAttackEntityEvent.patch => 0868-Add-PrePlayerAttackEntityEvent.patch} (100%) rename patches/server/{0870-ensure-reset-EnderDragon-boss-event-name.patch => 0869-ensure-reset-EnderDragon-boss-event-name.patch} (100%) rename patches/server/{0871-fix-MC-252817-green-map-markers-do-not-disappear.patch => 0870-fix-MC-252817-green-map-markers-do-not-disappear.patch} (100%) rename patches/server/{0872-Add-Player-Warden-Warning-API.patch => 0871-Add-Player-Warden-Warning-API.patch} (95%) rename patches/server/{0873-More-vanilla-friendly-methods-to-update-trades.patch => 0872-More-vanilla-friendly-methods-to-update-trades.patch} (100%) rename patches/server/{0874-Add-paper-dumplisteners-command.patch => 0873-Add-paper-dumplisteners-command.patch} (100%) rename patches/server/{0875-check-global-player-list-where-appropriate.patch => 0874-check-global-player-list-where-appropriate.patch} (100%) rename patches/server/{0876-Fix-async-entity-add-due-to-fungus-trees.patch => 0875-Fix-async-entity-add-due-to-fungus-trees.patch} (100%) rename patches/server/{0877-ItemStack-damage-API.patch => 0876-ItemStack-damage-API.patch} (100%) rename patches/server/{0878-Friction-API.patch => 0877-Friction-API.patch} (100%) rename patches/server/{0879-Ability-to-control-player-s-insomnia-and-phantoms.patch => 0878-Ability-to-control-player-s-insomnia-and-phantoms.patch} (100%) rename patches/server/{0880-Fix-player-kick-on-shutdown.patch => 0879-Fix-player-kick-on-shutdown.patch} (100%) rename patches/server/{0881-Sync-offhand-slot-in-menus.patch => 0880-Sync-offhand-slot-in-menus.patch} (100%) rename patches/server/{0882-Player-Entity-Tracking-Events.patch => 0881-Player-Entity-Tracking-Events.patch} (100%) rename patches/server/{0883-Limit-pet-look-distance.patch => 0882-Limit-pet-look-distance.patch} (100%) rename patches/server/{0884-Properly-resend-entities.patch => 0883-Properly-resend-entities.patch} (99%) rename patches/server/{0885-Fixes-and-additions-to-the-SpawnReason-API.patch => 0884-Fixes-and-additions-to-the-SpawnReason-API.patch} (100%) rename patches/server/{0886-fix-Instruments.patch => 0885-fix-Instruments.patch} (96%) rename patches/server/{0887-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch => 0886-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch} (100%) rename patches/server/{0888-Fix-inconsistencies-in-dispense-events-regarding-sta.patch => 0887-Fix-inconsistencies-in-dispense-events-regarding-sta.patch} (100%) rename patches/server/{0889-Add-BlockLockCheckEvent.patch => 0888-Add-BlockLockCheckEvent.patch} (100%) rename patches/server/{0890-Add-Sneaking-API-for-Entities.patch => 0889-Add-Sneaking-API-for-Entities.patch} (100%) rename patches/server/{0891-Improve-logging-and-errors.patch => 0890-Improve-logging-and-errors.patch} (98%) rename patches/server/{0892-Improve-PortalEvents.patch => 0891-Improve-PortalEvents.patch} (100%) rename patches/server/{0893-Add-config-option-for-spider-worldborder-climbing.patch => 0892-Add-config-option-for-spider-worldborder-climbing.patch} (100%) rename patches/server/{0894-Add-missing-SpigotConfig-logCommands-check.patch => 0893-Add-missing-SpigotConfig-logCommands-check.patch} (92%) rename patches/server/{0895-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch => 0894-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch} (100%) rename patches/server/{0896-Flying-Fall-Damage.patch => 0895-Flying-Fall-Damage.patch} (95%) rename patches/server/{0897-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch => 0896-Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch} (100%) rename patches/server/{0898-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch => 0897-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch} (100%) rename patches/server/{0899-config-for-disabling-entity-tag-tags.patch => 0898-config-for-disabling-entity-tag-tags.patch} (100%) rename patches/server/{0900-Use-single-player-info-update-packet-on-join.patch => 0899-Use-single-player-info-update-packet-on-join.patch} (97%) rename patches/server/{0901-Correctly-shrink-items-during-EntityResurrectEvent.patch => 0900-Correctly-shrink-items-during-EntityResurrectEvent.patch} (100%) rename patches/server/{0902-Win-Screen-API.patch => 0901-Win-Screen-API.patch} (93%) rename patches/server/{0903-Remove-CraftItemStack-setAmount-null-assignment.patch => 0902-Remove-CraftItemStack-setAmount-null-assignment.patch} (100%) rename patches/server/{0904-Fix-force-opening-enchantment-tables.patch => 0903-Fix-force-opening-enchantment-tables.patch} (100%) rename patches/server/{0905-Add-Entity-Body-Yaw-API.patch => 0904-Add-Entity-Body-Yaw-API.patch} (100%) rename patches/server/{0906-Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch => 0905-Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch} (100%) rename patches/server/{0907-Update-the-flag-when-a-captured-block-state-is-outda.patch => 0906-Update-the-flag-when-a-captured-block-state-is-outda.patch} (100%) rename patches/server/{0908-Add-EntityFertilizeEggEvent.patch => 0907-Add-EntityFertilizeEggEvent.patch} (100%) rename patches/server/{0909-Fix-HumanEntity-drop-not-updating-the-client-inv.patch => 0908-Fix-HumanEntity-drop-not-updating-the-client-inv.patch} (100%) rename patches/server/{0910-Add-CompostItemEvent-and-EntityCompostItemEvent.patch => 0909-Add-CompostItemEvent-and-EntityCompostItemEvent.patch} (100%) rename patches/server/{0911-Correctly-handle-ArmorStand-invisibility.patch => 0910-Correctly-handle-ArmorStand-invisibility.patch} (100%) rename patches/server/{0912-Fix-advancement-triggers-for-entity-damage.patch => 0911-Fix-advancement-triggers-for-entity-damage.patch} (100%) rename patches/server/{0913-Fix-text-display-error-on-spawn.patch => 0912-Fix-text-display-error-on-spawn.patch} (100%) rename patches/server/{0914-Fix-certain-inventories-returning-null-Locations.patch => 0913-Fix-certain-inventories-returning-null-Locations.patch} (100%) rename patches/server/{0915-Add-Shearable-API.patch => 0914-Add-Shearable-API.patch} (100%) rename patches/server/{0916-Fix-SpawnEggMeta-get-setSpawnedType.patch => 0915-Fix-SpawnEggMeta-get-setSpawnedType.patch} (100%) rename patches/server/{0917-Optimize-Hoppers.patch => 0916-Optimize-Hoppers.patch} (100%) rename patches/server/{0918-Fix-beehives-generating-from-using-bonemeal.patch => 0917-Fix-beehives-generating-from-using-bonemeal.patch} (100%) rename patches/server/{0919-Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch => 0918-Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch} (100%) rename patches/server/{0920-Treat-sequence-violations-like-they-should-be.patch => 0919-Treat-sequence-violations-like-they-should-be.patch} (91%) rename patches/server/{0921-remove-duplicate-animate-packet-for-records.patch => 0920-remove-duplicate-animate-packet-for-records.patch} (100%) rename patches/server/{0922-Prevent-causing-expired-keys-from-impacting-new-join.patch => 0921-Prevent-causing-expired-keys-from-impacting-new-join.patch} (97%) rename patches/server/{0923-Prevent-GameEvents-being-fired-from-unloaded-chunks.patch => 0922-Prevent-GameEvents-being-fired-from-unloaded-chunks.patch} (100%) rename patches/server/{0924-Use-array-for-gamerule-storage.patch => 0923-Use-array-for-gamerule-storage.patch} (100%) rename patches/server/{0925-Fix-a-couple-of-upstream-bed-issues.patch => 0924-Fix-a-couple-of-upstream-bed-issues.patch} (100%) rename patches/server/{0926-Fix-demo-flag-not-enabling-demo-mode.patch => 0925-Fix-demo-flag-not-enabling-demo-mode.patch} (100%) rename patches/server/{0927-Add-Mob-Experience-reward-API.patch => 0926-Add-Mob-Experience-reward-API.patch} (100%) rename patches/server/{0928-Break-redstone-on-top-of-trap-doors-early.patch => 0927-Break-redstone-on-top-of-trap-doors-early.patch} (100%) rename patches/server/{0929-Fix-DamageCause-for-Falling-Blocks.patch => 0928-Fix-DamageCause-for-Falling-Blocks.patch} (100%) rename patches/server/{0930-Avoid-Lazy-Initialization-for-Enum-Fields.patch => 0929-Avoid-Lazy-Initialization-for-Enum-Fields.patch} (100%) rename patches/server/{0931-More-accurate-isInOpenWater-impl.patch => 0930-More-accurate-isInOpenWater-impl.patch} (100%) rename patches/server/{0932-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch => 0931-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch} (100%) rename patches/server/{0933-Optimise-recalcBlockCounts-for-empty-sections.patch => 0932-Optimise-recalcBlockCounts-for-empty-sections.patch} (100%) rename patches/server/{0934-Expand-PlayerItemMendEvent.patch => 0933-Expand-PlayerItemMendEvent.patch} (98%) rename patches/server/{0935-Refresh-ProjectileSource-for-projectiles.patch => 0934-Refresh-ProjectileSource-for-projectiles.patch} (100%) rename patches/server/{0936-Add-transient-modifier-API.patch => 0935-Add-transient-modifier-API.patch} (100%) rename patches/server/{0937-Fix-block-place-logic.patch => 0936-Fix-block-place-logic.patch} (100%) rename patches/server/{0938-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch => 0937-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch} (100%) rename patches/server/{0939-Ignore-inline-definitions-of-trim-material-pattern.patch => 0938-Ignore-inline-definitions-of-trim-material-pattern.patch} (100%) rename patches/server/{0940-Call-BlockGrowEvent-for-missing-blocks.patch => 0939-Call-BlockGrowEvent-for-missing-blocks.patch} (100%) rename patches/server/{0941-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch => 0940-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch} (100%) rename patches/server/{0942-fix-MapLike-spam-for-missing-key-selector.patch => 0941-fix-MapLike-spam-for-missing-key-selector.patch} (100%) rename patches/server/{0943-Fix-sniffer-removeExploredLocation.patch => 0942-Fix-sniffer-removeExploredLocation.patch} (100%) rename patches/server/{0944-Add-method-to-remove-all-active-potion-effects.patch => 0943-Add-method-to-remove-all-active-potion-effects.patch} (100%) rename patches/server/{0945-Temp-Pre-init-PlayerChunkLoaderData-in-order-to-prep.patch => 0944-Temp-Pre-init-PlayerChunkLoaderData-in-order-to-prep.patch} (100%) rename patches/server/{0946-Fix-incorrect-crafting-result-amount-for-fireworks.patch => 0945-Fix-incorrect-crafting-result-amount-for-fireworks.patch} (100%) rename patches/server/{0947-Properly-Cancel-Usable-Items.patch => 0946-Properly-Cancel-Usable-Items.patch} (97%) rename patches/server/{0948-Add-event-for-player-editing-sign.patch => 0947-Add-event-for-player-editing-sign.patch} (100%) rename patches/server/{0949-Only-tick-item-frames-if-players-can-see-it.patch => 0948-Only-tick-item-frames-if-players-can-see-it.patch} (100%) rename patches/server/{0950-Improve-command-function-perm-level-checks.patch => 0949-Improve-command-function-perm-level-checks.patch} (100%) rename patches/server/{0951-Add-option-to-disable-block-updates.patch => 0950-Add-option-to-disable-block-updates.patch} (100%) rename patches/server/{0952-Call-missing-BlockDispenseEvent.patch => 0951-Call-missing-BlockDispenseEvent.patch} (100%) rename patches/server/{0953-Don-t-load-chunks-for-supporting-block-checks.patch => 0952-Don-t-load-chunks-for-supporting-block-checks.patch} (100%) rename patches/server/{0954-Optimize-player-lookups-for-beacons.patch => 0953-Optimize-player-lookups-for-beacons.patch} (100%) rename patches/server/{0955-Add-Sign-getInteractableSideFor.patch => 0954-Add-Sign-getInteractableSideFor.patch} (100%) rename patches/server/{0956-Array-backed-synched-entity-data.patch => 0955-Array-backed-synched-entity-data.patch} (100%) rename patches/server/{0957-fix-item-meta-for-tadpole-buckets.patch => 0956-fix-item-meta-for-tadpole-buckets.patch} (100%) rename patches/server/{0958-Suppress-Item-Meta-Validation-Checks.patch => 0957-Suppress-Item-Meta-Validation-Checks.patch} (100%) rename patches/server/{0959-Fix-BanList-API.patch => 0958-Fix-BanList-API.patch} (99%) rename patches/server/{0960-Determine-lava-and-water-fluid-explosion-resistance-.patch => 0959-Determine-lava-and-water-fluid-explosion-resistance-.patch} (100%) rename patches/server/{0961-Fix-possible-NPE-on-painting-creation.patch => 0960-Fix-possible-NPE-on-painting-creation.patch} (100%) rename patches/server/{0962-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch => 0961-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch} (100%) rename patches/server/{0963-ExperienceOrb-should-call-EntitySpawnEvent.patch => 0962-ExperienceOrb-should-call-EntitySpawnEvent.patch} (100%) rename patches/server/{0964-Don-t-tick-signs.patch => 0963-Don-t-tick-signs.patch} (100%) rename patches/server/{0965-Make-Amethyst-throw-both-Spread-and-Grow-Events.patch => 0964-Make-Amethyst-throw-both-Spread-and-Grow-Events.patch} (100%) rename patches/server/{0966-Add-whitelist-events.patch => 0965-Add-whitelist-events.patch} (100%) rename patches/server/{0967-Implement-PlayerFailMoveEvent.patch => 0966-Implement-PlayerFailMoveEvent.patch} (98%) rename patches/server/{0968-Folia-scheduler-and-owned-region-API.patch => 0967-Folia-scheduler-and-owned-region-API.patch} (100%) rename patches/server/{0969-Only-erase-allay-memory-on-non-item-targets.patch => 0968-Only-erase-allay-memory-on-non-item-targets.patch} (100%) rename patches/server/{0970-API-for-updating-recipes-on-clients.patch => 0969-API-for-updating-recipes-on-clients.patch} (100%) rename patches/server/{0971-Fix-rotation-when-spawning-display-entities.patch => 0970-Fix-rotation-when-spawning-display-entities.patch} (100%) rename patches/server/{0972-Only-capture-actual-tree-growth.patch => 0971-Only-capture-actual-tree-growth.patch} (100%) rename patches/server/{0973-Use-correct-source-for-mushroom-block-spread-event.patch => 0972-Use-correct-source-for-mushroom-block-spread-event.patch} (100%) rename patches/server/{0974-Respect-randomizeData-on-more-entities-when-spawning.patch => 0973-Respect-randomizeData-on-more-entities-when-spawning.patch} (100%) rename patches/server/{0975-Use-correct-seed-on-api-world-load.patch => 0974-Use-correct-seed-on-api-world-load.patch} (100%) rename patches/server/{0976-Remove-UpgradeData-neighbour-ticks-outside-of-range.patch => 0975-Remove-UpgradeData-neighbour-ticks-outside-of-range.patch} (100%) rename patches/server/{0977-Cache-map-ids-on-item-frames.patch => 0976-Cache-map-ids-on-item-frames.patch} (100%) rename patches/server/{0978-Fix-custom-statistic-criteria-creation.patch => 0977-Fix-custom-statistic-criteria-creation.patch} (100%) rename patches/server/{0979-Bandaid-fix-for-Effect.patch => 0978-Bandaid-fix-for-Effect.patch} (98%) rename patches/server/{0980-SculkCatalyst-bloom-API.patch => 0979-SculkCatalyst-bloom-API.patch} (100%) rename patches/server/{0981-API-for-an-entity-s-scoreboard-name.patch => 0980-API-for-an-entity-s-scoreboard-name.patch} (100%) rename patches/server/{0982-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch => 0981-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch} (100%) rename patches/server/{0983-Deprecate-and-replace-methods-with-old-StructureType.patch => 0982-Deprecate-and-replace-methods-with-old-StructureType.patch} (100%) rename patches/server/{0984-Don-t-tab-complete-namespaced-commands-if-send-names.patch => 0983-Don-t-tab-complete-namespaced-commands-if-send-names.patch} (95%) rename patches/server/{0985-Properly-handle-BlockBreakEvent-isDropItems.patch => 0984-Properly-handle-BlockBreakEvent-isDropItems.patch} (100%) rename patches/server/{0986-Fire-entity-death-event-for-ender-dragon.patch => 0985-Fire-entity-death-event-for-ender-dragon.patch} (100%) rename patches/server/{0987-Configurable-entity-tracking-range-by-Y-coordinate.patch => 0986-Configurable-entity-tracking-range-by-Y-coordinate.patch} (100%) rename patches/server/{0988-Add-Listing-API-for-Player.patch => 0987-Add-Listing-API-for-Player.patch} (99%) rename patches/server/{0989-Configurable-Region-Compression-Format.patch => 0988-Configurable-Region-Compression-Format.patch} (100%) rename patches/server/{0990-Expose-clicked-BlockFace-during-BlockDamageEvent.patch => 0989-Expose-clicked-BlockFace-during-BlockDamageEvent.patch} (100%) rename patches/server/{0991-Fix-NPE-on-Boat-getStatus.patch => 0990-Fix-NPE-on-Boat-getStatus.patch} (100%) rename patches/server/{0992-Expand-Pose-API.patch => 0991-Expand-Pose-API.patch} (100%) rename patches/server/{0993-More-DragonBattle-API.patch => 0992-More-DragonBattle-API.patch} (100%) rename patches/server/{0994-Deep-clone-unhandled-nbt-tags.patch => 0993-Deep-clone-unhandled-nbt-tags.patch} (100%) rename patches/server/{0995-Add-PlayerPickItemEvent.patch => 0994-Add-PlayerPickItemEvent.patch} (96%) rename patches/server/{0996-Improve-performance-of-mass-crafts.patch => 0995-Improve-performance-of-mass-crafts.patch} (100%) rename patches/server/{0997-Allow-trident-custom-damage.patch => 0996-Allow-trident-custom-damage.patch} (100%) rename patches/server/{0998-Expose-hand-during-BlockCanBuildEvent.patch => 0997-Expose-hand-during-BlockCanBuildEvent.patch} (100%) rename patches/server/{0999-Optimize-nearest-structure-border-iteration.patch => 0998-Optimize-nearest-structure-border-iteration.patch} (100%) rename patches/server/{1000-Implement-OfflinePlayer-isConnected.patch => 0999-Implement-OfflinePlayer-isConnected.patch} (94%) rename patches/server/{1001-Fix-inventory-desync.patch => 1000-Fix-inventory-desync.patch} (100%) rename patches/server/{1002-Add-titleOverride-to-InventoryOpenEvent.patch => 1001-Add-titleOverride-to-InventoryOpenEvent.patch} (100%) rename patches/server/{1003-Configure-sniffer-egg-hatch-time.patch => 1002-Configure-sniffer-egg-hatch-time.patch} (100%) rename patches/server/{1004-Do-crystal-portal-proximity-check-before-entity-look.patch => 1003-Do-crystal-portal-proximity-check-before-entity-look.patch} (100%) rename patches/server/{1005-Skip-POI-finding-if-stuck-in-vehicle.patch => 1004-Skip-POI-finding-if-stuck-in-vehicle.patch} (100%) rename patches/server/{1006-Add-slot-sanity-checks-in-container-clicks.patch => 1005-Add-slot-sanity-checks-in-container-clicks.patch} (96%) rename patches/server/{1007-Call-BlockRedstoneEvents-for-lecterns.patch => 1006-Call-BlockRedstoneEvents-for-lecterns.patch} (100%) rename patches/server/{1008-Allow-proper-checking-of-empty-item-stacks.patch => 1007-Allow-proper-checking-of-empty-item-stacks.patch} (100%) rename patches/server/{1009-Fix-silent-equipment-change-for-mobs.patch => 1008-Fix-silent-equipment-change-for-mobs.patch} (100%) rename patches/server/{1010-Fix-spigot-s-Forced-Stats.patch => 1009-Fix-spigot-s-Forced-Stats.patch} (100%) rename patches/server/{1011-Add-missing-InventoryHolders-to-inventories.patch => 1010-Add-missing-InventoryHolders-to-inventories.patch} (100%) rename patches/server/{1012-Do-not-read-tile-entities-in-chunks-that-are-positio.patch => 1011-Do-not-read-tile-entities-in-chunks-that-are-positio.patch} (100%) rename patches/server/{1013-Actually-optimise-explosions.patch => 1012-Actually-optimise-explosions.patch} (100%) rename patches/server/{1014-Add-missing-logs-for-log-ips-config-option.patch => 1013-Add-missing-logs-for-log-ips-config-option.patch} (100%) rename patches/server/{1015-Remove-Spigot-Bug-Fix-for-MC-109346.patch => 1014-Remove-Spigot-Bug-Fix-for-MC-109346.patch} (100%) rename patches/server/{1016-Fix-SuspiciousStewMeta.patch => 1015-Fix-SuspiciousStewMeta.patch} (100%) rename patches/server/{1017-Optimise-chunk-tick-iteration.patch => 1016-Optimise-chunk-tick-iteration.patch} (100%) rename patches/server/{1018-Lag-compensation-ticks.patch => 1017-Lag-compensation-ticks.patch} (100%) rename patches/server/{1019-Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch => 1018-Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch} (100%) rename patches/server/{1020-Fix-NPE-in-AdvancementProgress-getDateAwarded.patch => 1019-Fix-NPE-in-AdvancementProgress-getDateAwarded.patch} (100%) rename patches/server/{1021-Fix-team-sidebar-objectives-not-being-cleared.patch => 1020-Fix-team-sidebar-objectives-not-being-cleared.patch} (100%) rename patches/server/{1022-Optimise-nearby-player-retrieval.patch => 1021-Optimise-nearby-player-retrieval.patch} (100%) rename patches/server/{1023-Remove-streams-for-villager-AI.patch => 1022-Remove-streams-for-villager-AI.patch} (100%) rename patches/server/{1024-Fix-missing-map-initialize-event-call.patch => 1023-Fix-missing-map-initialize-event-call.patch} (100%) rename patches/server/{1025-Update-entity-data-when-attaching-firework-to-entity.patch => 1024-Update-entity-data-when-attaching-firework-to-entity.patch} (100%) rename patches/server/{1026-Use-correct-variable-for-initializing-CraftLootTable.patch => 1025-Use-correct-variable-for-initializing-CraftLootTable.patch} (100%) rename patches/server/{1027-Make-setVelocity-method-of-Fireballs-change-the-trav.patch => 1026-Make-setVelocity-method-of-Fireballs-change-the-trav.patch} (100%) rename patches/server/{1028-Fix-UnsafeValues-loadAdvancement.patch => 1027-Fix-UnsafeValues-loadAdvancement.patch} (100%) rename patches/server/{1029-Add-player-idle-duration-API.patch => 1028-Add-player-idle-duration-API.patch} (91%) rename patches/server/{1030-Don-t-check-if-we-can-see-non-visible-entities.patch => 1029-Don-t-check-if-we-can-see-non-visible-entities.patch} (100%) rename patches/server/{1031-Fix-NPE-in-SculkBloomEvent-world-access.patch => 1030-Fix-NPE-in-SculkBloomEvent-world-access.patch} (100%) rename patches/server/{1032-Allow-null-itemstack-for-Player-sendEquipmentChange.patch => 1031-Allow-null-itemstack-for-Player-sendEquipmentChange.patch} (90%) rename patches/server/{1033-Optimize-VarInts.patch => 1032-Optimize-VarInts.patch} (100%) rename patches/server/{1034-Add-API-to-get-the-collision-shape-of-a-block-before.patch => 1033-Add-API-to-get-the-collision-shape-of-a-block-before.patch} (100%) rename patches/server/{1035-Add-predicate-for-blocks-when-raytracing.patch => 1034-Add-predicate-for-blocks-when-raytracing.patch} (100%) rename patches/server/{1036-Broadcast-take-item-packets-with-collector-as-source.patch => 1035-Broadcast-take-item-packets-with-collector-as-source.patch} (100%) rename patches/server/{1037-fix-secure-profile-with-proxy-online-mode.patch => 1036-fix-secure-profile-with-proxy-online-mode.patch} (100%) rename patches/server/{1038-Expand-LingeringPotion-API.patch => 1037-Expand-LingeringPotion-API.patch} (100%) rename patches/server/{1039-Add-MaterialTagsTest.patch => 1038-Add-MaterialTagsTest.patch} (100%) rename patches/server/{1040-Fix-strikeLightningEffect-powers-lightning-rods-and-.patch => 1039-Fix-strikeLightningEffect-powers-lightning-rods-and-.patch} (100%) rename patches/server/{1041-Add-hand-to-fish-event-for-all-player-interactions.patch => 1040-Add-hand-to-fish-event-for-all-player-interactions.patch} (100%) rename patches/server/{1042-Fix-several-issues-with-EntityBreedEvent.patch => 1041-Fix-several-issues-with-EntityBreedEvent.patch} (100%) rename patches/server/{1043-Add-UUID-attribute-modifier-API.patch => 1042-Add-UUID-attribute-modifier-API.patch} (100%) rename patches/server/{1044-Fix-missing-event-call-for-entity-teleport-API.patch => 1043-Fix-missing-event-call-for-entity-teleport-API.patch} (100%) rename patches/server/{1045-Lazily-create-LootContext-for-criterions.patch => 1044-Lazily-create-LootContext-for-criterions.patch} (100%) rename patches/server/{1046-Don-t-fire-EntityPotionEffectEvent-during-worldgen.patch => 1045-Don-t-fire-EntityPotionEffectEvent-during-worldgen.patch} (100%) rename patches/server/{1047-Fix-CraftMetaItem-getAttributeModifier-duplication-c.patch => 1046-Fix-CraftMetaItem-getAttributeModifier-duplication-c.patch} (100%) rename patches/server/{1048-Restore-vanilla-entity-drops-behavior.patch => 1047-Restore-vanilla-entity-drops-behavior.patch} (100%) rename patches/server/{1049-Add-Structure-check-API.patch => 1048-Add-Structure-check-API.patch} (100%) rename patches/server/{1050-Dont-resend-blocks-on-interactions.patch => 1049-Dont-resend-blocks-on-interactions.patch} (100%) rename patches/server/{1051-Temp-adventure-update.patch => 1050-Temp-adventure-update.patch} (100%) rename patches/server/{1052-Keep-previous-behavior-for-setResourcePack.patch => 1051-Keep-previous-behavior-for-setResourcePack.patch} (94%) diff --git a/patches/server/0010-Adventure.patch b/patches/server/0010-Adventure.patch index ee701aa325..49b0841e1c 100644 --- a/patches/server/0010-Adventure.patch +++ b/patches/server/0010-Adventure.patch @@ -3,25 +3,425 @@ From: Riley Park Date: Fri, 29 Jan 2021 17:54:03 +0100 Subject: [PATCH] Adventure +== AT == +public net.minecraft.network.chat.HoverEvent$ItemStackInfo item +public net.minecraft.network.chat.HoverEvent$ItemStackInfo count +public net.minecraft.network.chat.HoverEvent$ItemStackInfo tag +public net.minecraft.network.chat.contents.TranslatableContents filterAllowedArguments(Ljava/lang/Object;)Lcom/mojang/serialization/DataResult; + Co-authored-by: zml Co-authored-by: Jake Potrebic -diff --git a/src/main/java/io/papermc/paper/adventure/AdventureComponent.java b/src/main/java/io/papermc/paper/adventure/AdventureComponent.java +diff --git a/src/main/java/io/papermc/paper/adventure/AdventureCodecs.java b/src/main/java/io/papermc/paper/adventure/AdventureCodecs.java new file mode 100644 -index 0000000000000000000000000000000000000000..fbf7804f8e02fc76cadae661083dbcc5b1c21881 +index 0000000000000000000000000000000000000000..89d24905a91b3844ff95fe1d9252464a896906a7 --- /dev/null -+++ b/src/main/java/io/papermc/paper/adventure/AdventureComponent.java -@@ -0,0 +1,90 @@ ++++ b/src/main/java/io/papermc/paper/adventure/AdventureCodecs.java +@@ -0,0 +1,393 @@ ++package io.papermc.paper.adventure; ++ ++import com.mojang.brigadier.exceptions.CommandSyntaxException; ++import com.mojang.datafixers.util.Either; ++import com.mojang.serialization.Codec; ++import com.mojang.serialization.DataResult; ++import com.mojang.serialization.Encoder; ++import com.mojang.serialization.MapCodec; ++import com.mojang.serialization.codecs.RecordCodecBuilder; ++import java.io.IOException; ++import java.util.Collections; ++import java.util.List; ++import java.util.Optional; ++import java.util.UUID; ++import java.util.function.Consumer; ++import java.util.function.Function; ++import java.util.function.Predicate; ++import net.kyori.adventure.key.Key; ++import net.kyori.adventure.nbt.api.BinaryTagHolder; ++import net.kyori.adventure.text.BlockNBTComponent; ++import net.kyori.adventure.text.Component; ++import net.kyori.adventure.text.EntityNBTComponent; ++import net.kyori.adventure.text.KeybindComponent; ++import net.kyori.adventure.text.NBTComponent; ++import net.kyori.adventure.text.NBTComponentBuilder; ++import net.kyori.adventure.text.ScoreComponent; ++import net.kyori.adventure.text.SelectorComponent; ++import net.kyori.adventure.text.StorageNBTComponent; ++import net.kyori.adventure.text.TextComponent; ++import net.kyori.adventure.text.TranslatableComponent; ++import net.kyori.adventure.text.event.ClickEvent; ++import net.kyori.adventure.text.event.HoverEvent; ++import net.kyori.adventure.text.format.NamedTextColor; ++import net.kyori.adventure.text.format.Style; ++import net.kyori.adventure.text.format.TextColor; ++import net.kyori.adventure.text.format.TextDecoration; ++import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; ++import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; ++import net.minecraft.core.UUIDUtil; ++import net.minecraft.core.registries.BuiltInRegistries; ++import net.minecraft.nbt.CompoundTag; ++import net.minecraft.nbt.TagParser; ++import net.minecraft.network.chat.ComponentSerialization; ++import net.minecraft.network.chat.contents.KeybindContents; ++import net.minecraft.network.chat.contents.ScoreContents; ++import net.minecraft.network.chat.contents.TranslatableContents; ++import net.minecraft.util.ExtraCodecs; ++import net.minecraft.util.StringRepresentable; ++import net.minecraft.world.item.Item; ++import net.minecraft.world.item.ItemStack; ++import org.checkerframework.checker.nullness.qual.NonNull; ++import org.checkerframework.checker.nullness.qual.Nullable; ++import org.checkerframework.framework.qual.DefaultQualifier; ++import org.intellij.lang.annotations.Subst; ++ ++import static com.mojang.serialization.codecs.RecordCodecBuilder.mapCodec; ++import static java.util.function.Function.identity; ++import static net.kyori.adventure.text.Component.text; ++import static net.minecraft.util.ExtraCodecs.recursive; ++import static net.minecraft.util.ExtraCodecs.strictOptionalField; ++ ++@DefaultQualifier(NonNull.class) ++public final class AdventureCodecs { ++ ++ public static final Codec COMPONENT_CODEC = recursive("adventure Component", AdventureCodecs::createCodec); ++ ++ static final Codec TEXT_COLOR_CODEC = Codec.STRING.comapFlatMap(s -> { ++ if (s.startsWith("#")) { ++ @Nullable TextColor value = TextColor.fromHexString(s); ++ return value != null ? DataResult.success(value) : DataResult.error(() -> "Cannot convert " + s + " to adventure TextColor"); ++ } else { ++ final @Nullable NamedTextColor value = NamedTextColor.NAMES.value(s); ++ return value != null ? DataResult.success(value) : DataResult.error(() -> "Cannot convert " + s + " to adventure NamedTextColor"); ++ } ++ }, textColor -> { ++ if (textColor instanceof NamedTextColor named) { ++ return NamedTextColor.NAMES.keyOrThrow(named); ++ } else { ++ return textColor.asHexString(); ++ } ++ }); ++ ++ static final Codec KEY_CODEC = Codec.STRING.comapFlatMap(s -> { ++ return Key.parseable(s) ? DataResult.success(Key.key(s)) : DataResult.error(() -> "Cannot convert " + s + " to adventure Key"); ++ }, Key::asString); ++ ++ static final Codec CLICK_EVENT_ACTION_CODEC = Codec.STRING.comapFlatMap(s -> { ++ final ClickEvent.@Nullable Action value = ClickEvent.Action.NAMES.value(s); ++ return value != null ? DataResult.success(value) : DataResult.error(() -> "Cannot convert " + s + " to adventure ClickEvent$Action"); ++ }, ClickEvent.Action.NAMES::keyOrThrow); ++ static final Codec CLICK_EVENT_CODEC = RecordCodecBuilder.create((instance) -> { ++ return instance.group( ++ CLICK_EVENT_ACTION_CODEC.fieldOf("action").forGetter(ClickEvent::action), ++ Codec.STRING.fieldOf("value").forGetter(ClickEvent::value) ++ ).apply(instance, ClickEvent::clickEvent); ++ }); ++ ++ static Codec showEntityCodec(final Codec componentCodec) { ++ return RecordCodecBuilder.create((instance) -> { ++ return instance.group( ++ KEY_CODEC.fieldOf("type").forGetter(HoverEvent.ShowEntity::type), ++ UUIDUtil.LENIENT_CODEC.fieldOf("id").forGetter(HoverEvent.ShowEntity::id), ++ strictOptionalField(componentCodec, "name").forGetter(he -> Optional.ofNullable(he.name())) ++ ).apply(instance, (key, uuid, component) -> { ++ return HoverEvent.ShowEntity.showEntity(key, uuid, component.orElse(null)); ++ }); ++ }); ++ } ++ ++ static Codec showItemCodec(final Codec componentCodec) { ++ return net.minecraft.network.chat.HoverEvent.ItemStackInfo.CODEC.xmap(isi -> { ++ @Subst("key") final String typeKey = BuiltInRegistries.ITEM.getKey(isi.item).toString(); ++ return HoverEvent.ShowItem.showItem(Key.key(typeKey), isi.count, PaperAdventure.asBinaryTagHolder(isi.tag.orElse(null))); ++ }, si -> { ++ final Item itemType = BuiltInRegistries.ITEM.get(PaperAdventure.asVanilla(si.item())); ++ final ItemStack stack; ++ try { ++ final @Nullable CompoundTag tag = si.nbt() != null ? si.nbt().get(PaperAdventure.NBT_CODEC) : null; ++ stack = new ItemStack(BuiltInRegistries.ITEM.wrapAsHolder(itemType), si.count(), Optional.ofNullable(tag)); ++ } catch (final IOException e) { ++ throw new RuntimeException(e); ++ } ++ return new net.minecraft.network.chat.HoverEvent.ItemStackInfo(stack); ++ }); ++ } ++ ++ static final HoverEventType SHOW_ENTITY_HOVER_EVENT_TYPE = new HoverEventType<>(AdventureCodecs::showEntityCodec, HoverEvent.Action.SHOW_ENTITY, "show_entity", AdventureCodecs::legacyDeserializeEntity); ++ static final HoverEventType SHOW_ITEM_HOVER_EVENT_TYPE = new HoverEventType<>(AdventureCodecs::showItemCodec, HoverEvent.Action.SHOW_ITEM, "show_item", AdventureCodecs::legacyDeserializeItem); ++ static final HoverEventType SHOW_TEXT_HOVER_EVENT_TYPE = new HoverEventType<>(identity(), HoverEvent.Action.SHOW_TEXT, "show_text", DataResult::success); ++ static final Codec> HOVER_EVENT_TYPE_CODEC = StringRepresentable.fromValues(() -> new HoverEventType[]{ SHOW_ENTITY_HOVER_EVENT_TYPE, SHOW_ITEM_HOVER_EVENT_TYPE, SHOW_TEXT_HOVER_EVENT_TYPE }); ++ ++ static DataResult legacyDeserializeEntity(final Component text) { ++ try { ++ final CompoundTag tag = TagParser.parseTag(PlainTextComponentSerializer.plainText().serialize(text)); ++ final @Nullable Component entityName = GsonComponentSerializer.gson().deserializeOrNull(tag.getString("name")); ++ @Subst("key") final String keyString = tag.getString("type"); ++ final UUID entityUUID = UUID.fromString(tag.getString("id")); ++ return DataResult.success(HoverEvent.ShowEntity.showEntity(Key.key(keyString), entityUUID, entityName)); ++ } catch (final Exception ex) { ++ return DataResult.error(() -> "Failed to parse tooltip: " + ex.getMessage()); ++ } ++ } ++ ++ static DataResult legacyDeserializeItem(final Component text) { ++ try { ++ final ItemStack stack = ItemStack.of(TagParser.parseTag(PlainTextComponentSerializer.plainText().serialize(text))); ++ @Subst("key") final String keyString = BuiltInRegistries.ITEM.getKey(stack.getItem()).toString(); ++ return DataResult.success(HoverEvent.ShowItem.showItem(Key.key(keyString), stack.getCount(), stack.getTag() != null ? BinaryTagHolder.encode(stack.getTag(), PaperAdventure.NBT_CODEC) : null)); ++ } catch (final CommandSyntaxException | IOException ex) { ++ return DataResult.error(() -> "Failed to parse item tag: " + ex.getMessage()); ++ } ++ } ++ ++ record HoverEventType(Function, Codec>> codec, String id, Function, Codec>> legacyCodec) implements StringRepresentable { ++ HoverEventType(final Function, Codec> contentCodec, final HoverEvent.Action action, final String id, final Function> legacyDeserializer) { ++ this(cc -> contentCodec.apply(cc).xmap(v -> HoverEvent.hoverEvent(action, v), HoverEvent::value).fieldOf("contents").codec(), ++ id, ++ codec -> Codec.of( ++ Encoder.error("Can't encode in legacy format"), ++ codec.flatMap(legacyDeserializer).map(text -> HoverEvent.hoverEvent(action, text)) ++ ) ++ ); ++ } ++ @Override ++ public String getSerializedName() { ++ return this.id; ++ } ++ } ++ ++ private static final Function, HoverEventType> GET_HOVER_EVENT_TYPE = he -> { ++ if (he.action() == HoverEvent.Action.SHOW_ENTITY) { ++ return SHOW_ENTITY_HOVER_EVENT_TYPE; ++ } else if (he.action() == HoverEvent.Action.SHOW_ITEM) { ++ return SHOW_ITEM_HOVER_EVENT_TYPE; ++ } else if (he.action() == HoverEvent.Action.SHOW_TEXT) { ++ return SHOW_TEXT_HOVER_EVENT_TYPE; ++ } else { ++ throw new IllegalStateException(); ++ } ++ }; ++ static final Codec> HOVER_EVENT_CODEC = Codec.either( ++ HOVER_EVENT_TYPE_CODEC.>dispatchMap("action", GET_HOVER_EVENT_TYPE, het -> het.codec.apply(COMPONENT_CODEC)).codec(), ++ HOVER_EVENT_TYPE_CODEC.>dispatchMap("action", GET_HOVER_EVENT_TYPE, het -> het.legacyCodec.apply(COMPONENT_CODEC)).codec() ++ ).xmap(either -> either.map(identity(), identity()), Either::left); ++ ++ public static final MapCodec