aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--patches/api/0351-Add-new-overload-to-PersistentDataContainer-has.patch (renamed from patches/api/0352-Add-new-overload-to-PersistentDataContainer-has.patch)0
-rw-r--r--patches/api/0351-Remove-upstream-snakeyaml-fix.patch32
-rw-r--r--patches/api/0352-Multiple-Entries-with-Scoreboards.patch (renamed from patches/api/0353-Multiple-Entries-with-Scoreboards.patch)0
-rw-r--r--patches/api/0353-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/api/0354-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/api/0354-Warn-on-strange-EventHandler-return-types.patch (renamed from patches/api/0355-Warn-on-strange-EventHandler-return-types.patch)0
-rw-r--r--patches/api/0355-Multi-Block-Change-API.patch (renamed from patches/api/0356-Multi-Block-Change-API.patch)0
-rw-r--r--patches/api/0356-Fix-NotePlayEvent.patch (renamed from patches/api/0357-Fix-NotePlayEvent.patch)0
-rw-r--r--patches/api/0357-Freeze-Tick-Lock-API.patch (renamed from patches/api/0358-Freeze-Tick-Lock-API.patch)0
-rw-r--r--patches/api/0358-Dolphin-API.patch (renamed from patches/api/0359-Dolphin-API.patch)0
-rw-r--r--patches/api/0359-More-PotionEffectType-API.patch (renamed from patches/api/0360-More-PotionEffectType-API.patch)0
-rw-r--r--patches/api/0360-API-for-creating-command-sender-which-forwards-feedb.patch (renamed from patches/api/0361-API-for-creating-command-sender-which-forwards-feedb.patch)0
-rw-r--r--patches/api/0361-Implement-regenerateChunk.patch (renamed from patches/api/0362-Implement-regenerateChunk.patch)0
-rw-r--r--patches/api/0362-Don-t-load-plugins-prefixed-with-a-dot.patch (renamed from patches/api/0363-Don-t-load-plugins-prefixed-with-a-dot.patch)0
-rw-r--r--patches/api/0363-Add-GameEvent-tags.patch (renamed from patches/api/0364-Add-GameEvent-tags.patch)0
-rw-r--r--patches/api/0364-Furnace-RecipesUsed-API.patch (renamed from patches/api/0365-Furnace-RecipesUsed-API.patch)0
-rw-r--r--patches/api/0365-Configurable-sculk-sensor-listener-range.patch (renamed from patches/api/0366-Configurable-sculk-sensor-listener-range.patch)0
-rw-r--r--patches/api/0366-Add-missing-block-data-mins-and-maxes.patch (renamed from patches/api/0367-Add-missing-block-data-mins-and-maxes.patch)0
-rw-r--r--patches/api/0367-Custom-Potion-Mixes.patch (renamed from patches/api/0368-Custom-Potion-Mixes.patch)0
-rw-r--r--patches/api/0368-Expose-furnace-minecart-push-values.patch (renamed from patches/api/0369-Expose-furnace-minecart-push-values.patch)0
-rw-r--r--patches/api/0369-More-Projectile-API.patch (renamed from patches/api/0370-More-Projectile-API.patch)0
-rw-r--r--patches/api/0370-Add-getComputedBiome-API.patch (renamed from patches/api/0371-Add-getComputedBiome-API.patch)0
-rw-r--r--patches/api/0371-Add-enchantWithLevels-API.patch (renamed from patches/api/0372-Add-enchantWithLevels-API.patch)0
-rw-r--r--patches/api/0372-Add-TameableDeathMessageEvent.patch (renamed from patches/api/0373-Add-TameableDeathMessageEvent.patch)0
-rw-r--r--patches/api/0373-Allow-to-change-the-podium-of-the-EnderDragon.patch (renamed from patches/api/0374-Allow-to-change-the-podium-of-the-EnderDragon.patch)0
-rw-r--r--patches/api/0374-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch (renamed from patches/api/0375-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch)0
-rw-r--r--patches/api/0375-Update-Folder-Uses-Plugin-Name.patch (renamed from patches/api/0376-Update-Folder-Uses-Plugin-Name.patch)0
-rw-r--r--patches/api/0376-WorldCreator-keepSpawnLoaded.patch (renamed from patches/api/0377-WorldCreator-keepSpawnLoaded.patch)0
-rw-r--r--patches/api/0377-Add-EntityDyeEvent-and-CollarColorable-interface.patch (renamed from patches/api/0378-Add-EntityDyeEvent-and-CollarColorable-interface.patch)0
-rw-r--r--patches/api/0378-Add-PlayerStopUsingItemEvent.patch (renamed from patches/api/0379-Add-PlayerStopUsingItemEvent.patch)0
-rw-r--r--patches/api/0379-FallingBlock-auto-expire-setting.patch (renamed from patches/api/0380-FallingBlock-auto-expire-setting.patch)0
-rw-r--r--patches/api/0380-Keyed-Cat-Type.patch (renamed from patches/api/0381-Keyed-Cat-Type.patch)0
-rw-r--r--patches/api/0381-Add-method-isTickingWorlds-to-Bukkit.patch (renamed from patches/api/0382-Add-method-isTickingWorlds-to-Bukkit.patch)0
-rw-r--r--patches/api/0382-Add-WardenAngerChangeEvent.patch (renamed from patches/api/0383-Add-WardenAngerChangeEvent.patch)0
-rw-r--r--patches/api/0383-Nameable-Banner-API.patch (renamed from patches/api/0384-Nameable-Banner-API.patch)0
-rw-r--r--patches/api/0384-Add-Player-getFishHook.patch (renamed from patches/api/0385-Add-Player-getFishHook.patch)0
-rw-r--r--patches/api/0385-More-Teleport-API.patch (renamed from patches/api/0386-More-Teleport-API.patch)0
-rw-r--r--patches/api/0386-Add-EntityPortalReadyEvent.patch (renamed from patches/api/0387-Add-EntityPortalReadyEvent.patch)0
-rw-r--r--patches/api/0387-Custom-Chat-Completion-Suggestions-API.patch (renamed from patches/api/0388-Custom-Chat-Completion-Suggestions-API.patch)0
-rw-r--r--patches/api/0388-Collision-API.patch (renamed from patches/api/0389-Collision-API.patch)0
-rw-r--r--patches/api/0389-Block-Ticking-API.patch (renamed from patches/api/0390-Block-Ticking-API.patch)0
-rw-r--r--patches/api/0390-Add-NamespacedKey-biome-methods.patch (renamed from patches/api/0391-Add-NamespacedKey-biome-methods.patch)0
-rw-r--r--patches/api/0391-Add-custom-destroyerIdentity-to-sendBlockDamage.patch (renamed from patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch)0
-rw-r--r--patches/api/0392-Also-load-resources-from-LibraryLoader.patch (renamed from patches/api/0393-Also-load-resources-from-LibraryLoader.patch)0
-rw-r--r--patches/api/0393-Added-byte-array-serialization-deserialization-for-P.patch (renamed from patches/api/0394-Added-byte-array-serialization-deserialization-for-P.patch)0
-rw-r--r--patches/api/0394-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch (renamed from patches/api/0395-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch)0
-rw-r--r--patches/api/0395-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch (renamed from patches/api/0396-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch)8
-rw-r--r--patches/api/0396-Add-system-property-to-print-stacktrace-on-bad-plugi.patch (renamed from patches/api/0397-Add-system-property-to-print-stacktrace-on-bad-plugi.patch)0
-rw-r--r--patches/api/0397-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch (renamed from patches/api/0398-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch)0
-rw-r--r--patches/api/0398-Add-PlayerInventorySlotChangeEvent.patch (renamed from patches/api/0399-Add-PlayerInventorySlotChangeEvent.patch)0
-rw-r--r--patches/api/0399-Elder-Guardian-appearance-API.patch (renamed from patches/api/0400-Elder-Guardian-appearance-API.patch)0
-rw-r--r--patches/api/0400-Allow-changing-bed-s-occupied-property.patch (renamed from patches/api/0401-Allow-changing-bed-s-occupied-property.patch)0
-rw-r--r--patches/api/0401-Add-EquipmentSlot-convenience-methods.patch (renamed from patches/api/0402-Add-EquipmentSlot-convenience-methods.patch)0
-rw-r--r--patches/api/0402-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch (renamed from patches/api/0403-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch)0
-rw-r--r--patches/api/0403-Add-entity-knockback-API.patch (renamed from patches/api/0404-Add-entity-knockback-API.patch)0
-rw-r--r--patches/api/0404-Added-EntityToggleSitEvent.patch (renamed from patches/api/0405-Added-EntityToggleSitEvent.patch)0
-rw-r--r--patches/api/0405-Add-Moving-Piston-API.patch (renamed from patches/api/0406-Add-Moving-Piston-API.patch)0
-rw-r--r--patches/server/0018-Configurable-cactus-bamboo-and-reed-growth-heights.patch12
-rw-r--r--patches/server/0244-Restore-vanilla-default-mob-spawn-range-and-water-an.patch4
-rw-r--r--patches/server/0345-Entity-Activation-Range-2.0.patch6
-rw-r--r--patches/server/0636-Add-EntityInsideBlockEvent.patch8
-rw-r--r--patches/server/0765-Fix-kelp-modifier-changing-growth-for-other-crops.patch55
-rw-r--r--patches/server/0792-Fix-saving-configs-with-more-long-comments.patch1702
-rw-r--r--patches/server/0792-Make-water-animal-spawn-height-configurable.patch (renamed from patches/server/0793-Make-water-animal-spawn-height-configurable.patch)0
-rw-r--r--patches/server/0793-Expose-vanilla-BiomeProvider-from-WorldInfo.patch (renamed from patches/server/0794-Expose-vanilla-BiomeProvider-from-WorldInfo.patch)0
-rw-r--r--patches/server/0794-Add-config-option-for-worlds-affected-by-time-cmd.patch (renamed from patches/server/0795-Add-config-option-for-worlds-affected-by-time-cmd.patch)0
-rw-r--r--patches/server/0795-Add-new-overload-to-PersistentDataContainer-has.patch (renamed from patches/server/0796-Add-new-overload-to-PersistentDataContainer-has.patch)0
-rw-r--r--patches/server/0796-Multiple-Entries-with-Scoreboards.patch (renamed from patches/server/0797-Multiple-Entries-with-Scoreboards.patch)0
-rw-r--r--patches/server/0797-Reset-placed-block-on-exception.patch (renamed from patches/server/0798-Reset-placed-block-on-exception.patch)0
-rw-r--r--patches/server/0798-Add-configurable-height-for-slime-spawn.patch (renamed from patches/server/0799-Add-configurable-height-for-slime-spawn.patch)0
-rw-r--r--patches/server/0799-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch (renamed from patches/server/0800-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch)0
-rw-r--r--patches/server/0800-Fix-xp-reward-for-baby-zombies.patch (renamed from patches/server/0801-Fix-xp-reward-for-baby-zombies.patch)0
-rw-r--r--patches/server/0801-Kick-on-main-for-illegal-chat.patch (renamed from patches/server/0802-Kick-on-main-for-illegal-chat.patch)0
-rw-r--r--patches/server/0802-Multi-Block-Change-API-Implementation.patch (renamed from patches/server/0803-Multi-Block-Change-API-Implementation.patch)0
-rw-r--r--patches/server/0803-Fix-NotePlayEvent.patch (renamed from patches/server/0804-Fix-NotePlayEvent.patch)0
-rw-r--r--patches/server/0804-Freeze-Tick-Lock-API.patch (renamed from patches/server/0805-Freeze-Tick-Lock-API.patch)0
-rw-r--r--patches/server/0805-Dolphin-API.patch (renamed from patches/server/0806-Dolphin-API.patch)0
-rw-r--r--patches/server/0806-More-PotionEffectType-API.patch (renamed from patches/server/0807-More-PotionEffectType-API.patch)0
-rw-r--r--patches/server/0807-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch (renamed from patches/server/0808-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch)0
-rw-r--r--patches/server/0808-API-for-creating-command-sender-which-forwards-feedb.patch (renamed from patches/server/0809-API-for-creating-command-sender-which-forwards-feedb.patch)0
-rw-r--r--patches/server/0809-Add-missing-structure-set-seed-configs.patch (renamed from patches/server/0810-Add-missing-structure-set-seed-configs.patch)6
-rw-r--r--patches/server/0810-Implement-regenerateChunk.patch (renamed from patches/server/0811-Implement-regenerateChunk.patch)0
-rw-r--r--patches/server/0811-Fix-cancelled-powdered-snow-bucket-placement.patch (renamed from patches/server/0812-Fix-cancelled-powdered-snow-bucket-placement.patch)0
-rw-r--r--patches/server/0812-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch (renamed from patches/server/0813-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch)0
-rw-r--r--patches/server/0813-Add-GameEvent-tags.patch (renamed from patches/server/0814-Add-GameEvent-tags.patch)0
-rw-r--r--patches/server/0814-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch (renamed from patches/server/0815-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch)0
-rw-r--r--patches/server/0815-Furnace-RecipesUsed-API.patch (renamed from patches/server/0816-Furnace-RecipesUsed-API.patch)0
-rw-r--r--patches/server/0816-Configurable-sculk-sensor-listener-range.patch (renamed from patches/server/0817-Configurable-sculk-sensor-listener-range.patch)0
-rw-r--r--patches/server/0817-Add-missing-block-data-mins-and-maxes.patch (renamed from patches/server/0818-Add-missing-block-data-mins-and-maxes.patch)0
-rw-r--r--patches/server/0818-Option-to-have-default-CustomSpawners-in-custom-worl.patch (renamed from patches/server/0819-Option-to-have-default-CustomSpawners-in-custom-worl.patch)0
-rw-r--r--patches/server/0819-Put-world-into-worldlist-before-initing-the-world.patch (renamed from patches/server/0820-Put-world-into-worldlist-before-initing-the-world.patch)0
-rw-r--r--patches/server/0820-Fix-Entity-Position-Desync.patch (renamed from patches/server/0821-Fix-Entity-Position-Desync.patch)0
-rw-r--r--patches/server/0821-Custom-Potion-Mixes.patch (renamed from patches/server/0822-Custom-Potion-Mixes.patch)0
-rw-r--r--patches/server/0822-Fix-Fluid-tags-isTagged-method.patch (renamed from patches/server/0823-Fix-Fluid-tags-isTagged-method.patch)0
-rw-r--r--patches/server/0823-Force-close-world-loading-screen.patch (renamed from patches/server/0824-Force-close-world-loading-screen.patch)0
-rw-r--r--patches/server/0824-Fix-falling-block-spawn-methods.patch (renamed from patches/server/0825-Fix-falling-block-spawn-methods.patch)0
-rw-r--r--patches/server/0825-Expose-furnace-minecart-push-values.patch (renamed from patches/server/0826-Expose-furnace-minecart-push-values.patch)0
-rw-r--r--patches/server/0826-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch (renamed from patches/server/0827-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch)0
-rw-r--r--patches/server/0827-More-Projectile-API.patch (renamed from patches/server/0828-More-Projectile-API.patch)0
-rw-r--r--patches/server/0828-Fix-swamp-hut-cat-generation-deadlock.patch (renamed from patches/server/0829-Fix-swamp-hut-cat-generation-deadlock.patch)0
-rw-r--r--patches/server/0829-Don-t-allow-vehicle-movement-from-players-while-tele.patch (renamed from patches/server/0830-Don-t-allow-vehicle-movement-from-players-while-tele.patch)0
-rw-r--r--patches/server/0830-Implement-getComputedBiome-API.patch (renamed from patches/server/0831-Implement-getComputedBiome-API.patch)0
-rw-r--r--patches/server/0831-Make-some-itemstacks-nonnull.patch (renamed from patches/server/0832-Make-some-itemstacks-nonnull.patch)0
-rw-r--r--patches/server/0832-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch (renamed from patches/server/0833-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch)0
-rw-r--r--patches/server/0833-Implement-enchantWithLevels-API.patch (renamed from patches/server/0834-Implement-enchantWithLevels-API.patch)0
-rw-r--r--patches/server/0834-Fix-saving-in-unloadWorld.patch (renamed from patches/server/0835-Fix-saving-in-unloadWorld.patch)0
-rw-r--r--patches/server/0835-Buffer-OOB-setBlock-calls.patch (renamed from patches/server/0836-Buffer-OOB-setBlock-calls.patch)0
-rw-r--r--patches/server/0836-Add-TameableDeathMessageEvent.patch (renamed from patches/server/0837-Add-TameableDeathMessageEvent.patch)0
-rw-r--r--patches/server/0837-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch (renamed from patches/server/0838-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch)0
-rw-r--r--patches/server/0838-fix-player-loottables-running-when-mob-loot-gamerule.patch (renamed from patches/server/0839-fix-player-loottables-running-when-mob-loot-gamerule.patch)0
-rw-r--r--patches/server/0839-Ensure-entity-passenger-world-matches-ridden-entity.patch (renamed from patches/server/0840-Ensure-entity-passenger-world-matches-ridden-entity.patch)0
-rw-r--r--patches/server/0840-Guard-against-invalid-entity-positions.patch (renamed from patches/server/0841-Guard-against-invalid-entity-positions.patch)0
-rw-r--r--patches/server/0841-cache-resource-keys.patch (renamed from patches/server/0842-cache-resource-keys.patch)0
-rw-r--r--patches/server/0842-Allow-to-change-the-podium-for-the-EnderDragon.patch (renamed from patches/server/0843-Allow-to-change-the-podium-for-the-EnderDragon.patch)0
-rw-r--r--patches/server/0843-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch (renamed from patches/server/0844-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch)0
-rw-r--r--patches/server/0844-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch (renamed from patches/server/0845-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch)0
-rw-r--r--patches/server/0845-Prevent-tile-entity-copies-loading-chunks.patch (renamed from patches/server/0846-Prevent-tile-entity-copies-loading-chunks.patch)0
-rw-r--r--patches/server/0846-Use-username-instead-of-display-name-in-PlayerList-g.patch (renamed from patches/server/0847-Use-username-instead-of-display-name-in-PlayerList-g.patch)0
-rw-r--r--patches/server/0847-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch (renamed from patches/server/0848-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch)0
-rw-r--r--patches/server/0848-Pass-ServerLevel-for-gamerule-callbacks.patch (renamed from patches/server/0849-Pass-ServerLevel-for-gamerule-callbacks.patch)0
-rw-r--r--patches/server/0849-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch (renamed from patches/server/0850-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch)0
-rw-r--r--patches/server/0850-WorldCreator-keepSpawnLoaded.patch (renamed from patches/server/0851-WorldCreator-keepSpawnLoaded.patch)0
-rw-r--r--patches/server/0851-Fix-NPE-for-BlockDataMeta-getBlockData.patch (renamed from patches/server/0852-Fix-NPE-for-BlockDataMeta-getBlockData.patch)0
-rw-r--r--patches/server/0852-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch (renamed from patches/server/0853-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch)0
-rw-r--r--patches/server/0853-Add-EntityDyeEvent-and-CollarColorable-interface.patch (renamed from patches/server/0854-Add-EntityDyeEvent-and-CollarColorable-interface.patch)0
-rw-r--r--patches/server/0854-Fire-CauldronLevelChange-on-initial-fill.patch (renamed from patches/server/0855-Fire-CauldronLevelChange-on-initial-fill.patch)0
-rw-r--r--patches/server/0855-fix-powder-snow-cauldrons-not-turning-to-water.patch (renamed from patches/server/0856-fix-powder-snow-cauldrons-not-turning-to-water.patch)0
-rw-r--r--patches/server/0856-Add-PlayerStopUsingItemEvent.patch (renamed from patches/server/0857-Add-PlayerStopUsingItemEvent.patch)0
-rw-r--r--patches/server/0857-FallingBlock-auto-expire-setting.patch (renamed from patches/server/0858-FallingBlock-auto-expire-setting.patch)0
-rw-r--r--patches/server/0858-Don-t-tick-markers.patch (renamed from patches/server/0859-Don-t-tick-markers.patch)0
-rw-r--r--patches/server/0859-Do-not-accept-invalid-client-settings.patch (renamed from patches/server/0860-Do-not-accept-invalid-client-settings.patch)0
-rw-r--r--patches/server/0860-Add-support-for-Proxy-Protocol.patch (renamed from patches/server/0861-Add-support-for-Proxy-Protocol.patch)0
-rw-r--r--patches/server/0861-Fix-OfflinePlayer-getBedSpawnLocation.patch (renamed from patches/server/0862-Fix-OfflinePlayer-getBedSpawnLocation.patch)0
-rw-r--r--patches/server/0862-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch (renamed from patches/server/0863-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch)0
-rw-r--r--patches/server/0863-Sanitize-Sent-BlockEntity-NBT.patch (renamed from patches/server/0864-Sanitize-Sent-BlockEntity-NBT.patch)0
-rw-r--r--patches/server/0864-Prevent-entity-loading-causing-async-lookups.patch (renamed from patches/server/0865-Prevent-entity-loading-causing-async-lookups.patch)0
-rw-r--r--patches/server/0865-Disable-component-selector-resolving-in-books-by-def.patch (renamed from patches/server/0866-Disable-component-selector-resolving-in-books-by-def.patch)0
-rw-r--r--patches/server/0866-Throw-exception-on-world-create-while-being-ticked.patch (renamed from patches/server/0867-Throw-exception-on-world-create-while-being-ticked.patch)0
-rw-r--r--patches/server/0867-Add-Alternate-Current-redstone-implementation.patch (renamed from patches/server/0868-Add-Alternate-Current-redstone-implementation.patch)0
-rw-r--r--patches/server/0868-Dont-resent-entity-on-art-update.patch (renamed from patches/server/0869-Dont-resent-entity-on-art-update.patch)0
-rw-r--r--patches/server/0869-Add-missing-spawn-eggs.patch (renamed from patches/server/0870-Add-missing-spawn-eggs.patch)0
-rw-r--r--patches/server/0870-Add-WardenAngerChangeEvent.patch (renamed from patches/server/0871-Add-WardenAngerChangeEvent.patch)0
-rw-r--r--patches/server/0871-Add-option-for-strict-advancement-dimension-checks.patch (renamed from patches/server/0872-Add-option-for-strict-advancement-dimension-checks.patch)0
-rw-r--r--patches/server/0872-Add-missing-important-BlockStateListPopulator-method.patch (renamed from patches/server/0873-Add-missing-important-BlockStateListPopulator-method.patch)0
-rw-r--r--patches/server/0873-Nameable-Banner-API.patch (renamed from patches/server/0874-Nameable-Banner-API.patch)0
-rw-r--r--patches/server/0874-Don-t-broadcast-messages-to-command-blocks.patch (renamed from patches/server/0875-Don-t-broadcast-messages-to-command-blocks.patch)0
-rw-r--r--patches/server/0875-Prevent-empty-items-from-being-added-to-world.patch (renamed from patches/server/0876-Prevent-empty-items-from-being-added-to-world.patch)0
-rw-r--r--patches/server/0876-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch (renamed from patches/server/0877-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch)0
-rw-r--r--patches/server/0877-Don-t-print-component-in-resource-pack-rejection-mes.patch (renamed from patches/server/0878-Don-t-print-component-in-resource-pack-rejection-mes.patch)0
-rw-r--r--patches/server/0878-Add-Player-getFishHook.patch (renamed from patches/server/0879-Add-Player-getFishHook.patch)0
-rw-r--r--patches/server/0879-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch (renamed from patches/server/0880-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch)0
-rw-r--r--patches/server/0880-Add-various-missing-EntityDropItemEvent-calls.patch (renamed from patches/server/0881-Add-various-missing-EntityDropItemEvent-calls.patch)0
-rw-r--r--patches/server/0881-Add-some-minimal-debug-information-to-chat-packet-er.patch (renamed from patches/server/0882-Add-some-minimal-debug-information-to-chat-packet-er.patch)0
-rw-r--r--patches/server/0882-Fix-Bee-flower-NPE.patch (renamed from patches/server/0883-Fix-Bee-flower-NPE.patch)0
-rw-r--r--patches/server/0883-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch (renamed from patches/server/0884-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch)0
-rw-r--r--patches/server/0884-Fixes-and-additions-to-the-SpawnReason-API.patch (renamed from patches/server/0885-Fixes-and-additions-to-the-SpawnReason-API.patch)0
-rw-r--r--patches/server/0885-More-Teleport-API.patch (renamed from patches/server/0886-More-Teleport-API.patch)0
-rw-r--r--patches/server/0886-Add-EntityPortalReadyEvent.patch (renamed from patches/server/0887-Add-EntityPortalReadyEvent.patch)0
-rw-r--r--patches/server/0887-Don-t-use-level-random-in-entity-constructors.patch (renamed from patches/server/0888-Don-t-use-level-random-in-entity-constructors.patch)0
-rw-r--r--patches/server/0888-Send-block-entities-after-destroy-prediction.patch (renamed from patches/server/0889-Send-block-entities-after-destroy-prediction.patch)0
-rw-r--r--patches/server/0889-Warn-on-plugins-accessing-faraway-chunks.patch (renamed from patches/server/0890-Warn-on-plugins-accessing-faraway-chunks.patch)0
-rw-r--r--patches/server/0890-Custom-Chat-Completion-Suggestions-API.patch (renamed from patches/server/0891-Custom-Chat-Completion-Suggestions-API.patch)0
-rw-r--r--patches/server/0891-Add-missing-BlockFadeEvents.patch (renamed from patches/server/0892-Add-missing-BlockFadeEvents.patch)0
-rw-r--r--patches/server/0892-Collision-API.patch (renamed from patches/server/0893-Collision-API.patch)0
-rw-r--r--patches/server/0893-Fix-suggest-command-message-for-brigadier-syntax-exc.patch (renamed from patches/server/0894-Fix-suggest-command-message-for-brigadier-syntax-exc.patch)0
-rw-r--r--patches/server/0894-Fix-command-preprocess-cancelling-and-command-changi.patch (renamed from patches/server/0895-Fix-command-preprocess-cancelling-and-command-changi.patch)0
-rw-r--r--patches/server/0895-Remove-invalid-signature-login-stacktrace.patch (renamed from patches/server/0896-Remove-invalid-signature-login-stacktrace.patch)0
-rw-r--r--patches/server/0896-Add-async-catcher-to-PlayerConnection-internalTelepo.patch (renamed from patches/server/0897-Add-async-catcher-to-PlayerConnection-internalTelepo.patch)0
-rw-r--r--patches/server/0897-Block-Ticking-API.patch (renamed from patches/server/0898-Block-Ticking-API.patch)0
-rw-r--r--patches/server/0898-Add-Velocity-IP-Forwarding-Support.patch (renamed from patches/server/0899-Add-Velocity-IP-Forwarding-Support.patch)0
-rw-r--r--patches/server/0899-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch (renamed from patches/server/0900-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch)0
-rw-r--r--patches/server/0900-Add-NamespacedKey-biome-methods.patch (renamed from patches/server/0901-Add-NamespacedKey-biome-methods.patch)0
-rw-r--r--patches/server/0901-Fix-plugin-loggers-on-server-shutdown.patch (renamed from patches/server/0902-Fix-plugin-loggers-on-server-shutdown.patch)0
-rw-r--r--patches/server/0902-Workaround-for-client-lag-spikes-MC-162253.patch (renamed from patches/server/0903-Workaround-for-client-lag-spikes-MC-162253.patch)0
-rw-r--r--patches/server/0903-Stop-large-look-changes-from-crashing-the-server.patch (renamed from patches/server/0904-Stop-large-look-changes-from-crashing-the-server.patch)0
-rw-r--r--patches/server/0904-Add-custom-destroyerIdentity-to-sendBlockDamage.patch (renamed from patches/server/0905-Add-custom-destroyerIdentity-to-sendBlockDamage.patch)0
-rw-r--r--patches/server/0905-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch (renamed from patches/server/0906-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch)0
-rw-r--r--patches/server/0906-Fire-EntityChangeBlockEvent-in-more-places.patch (renamed from patches/server/0907-Fire-EntityChangeBlockEvent-in-more-places.patch)0
-rw-r--r--patches/server/0907-Missing-eating-regain-reason.patch (renamed from patches/server/0908-Missing-eating-regain-reason.patch)0
-rw-r--r--patches/server/0908-Missing-effect-cause.patch (renamed from patches/server/0909-Missing-effect-cause.patch)0
-rw-r--r--patches/server/0909-Added-byte-array-serialization-deserialization-for-P.patch (renamed from patches/server/0910-Added-byte-array-serialization-deserialization-for-P.patch)0
-rw-r--r--patches/server/0910-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch (renamed from patches/server/0911-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch)0
-rw-r--r--patches/server/0911-Call-BlockPhysicsEvent-more-often.patch (renamed from patches/server/0912-Call-BlockPhysicsEvent-more-often.patch)0
-rw-r--r--patches/server/0912-Configurable-chat-thread-limit.patch (renamed from patches/server/0913-Configurable-chat-thread-limit.patch)0
-rw-r--r--patches/server/0913-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch (renamed from patches/server/0914-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch)0
-rw-r--r--patches/server/0914-Set-position-before-player-sending-on-dimension-chan.patch (renamed from patches/server/0915-Set-position-before-player-sending-on-dimension-chan.patch)0
-rw-r--r--patches/server/0915-fix-Jigsaw-block-kicking-user.patch (renamed from patches/server/0916-fix-Jigsaw-block-kicking-user.patch)0
-rw-r--r--patches/server/0916-use-BlockFormEvent-for-mud-converting-into-clay.patch (renamed from patches/server/0917-use-BlockFormEvent-for-mud-converting-into-clay.patch)0
-rw-r--r--patches/server/0917-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch (renamed from patches/server/0918-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch)0
-rw-r--r--patches/server/0918-Fix-a-bunch-of-vanilla-bugs.patch (renamed from patches/server/0919-Fix-a-bunch-of-vanilla-bugs.patch)0
-rw-r--r--patches/server/0919-Fix-nothing-mlg.patch (renamed from patches/server/0920-Fix-nothing-mlg.patch)0
-rw-r--r--patches/server/0920-Remove-unnecessary-onTrackingStart-during-navigation.patch (renamed from patches/server/0921-Remove-unnecessary-onTrackingStart-during-navigation.patch)0
-rw-r--r--patches/server/0921-Fix-custom-piglin-loved-items.patch (renamed from patches/server/0922-Fix-custom-piglin-loved-items.patch)0
-rw-r--r--patches/server/0922-EntityPickupItemEvent-fixes.patch (renamed from patches/server/0923-EntityPickupItemEvent-fixes.patch)0
-rw-r--r--patches/server/0923-Correctly-handle-interactions-with-items-on-cooldown.patch (renamed from patches/server/0924-Correctly-handle-interactions-with-items-on-cooldown.patch)0
-rw-r--r--patches/server/0924-Add-PlayerInventorySlotChangeEvent.patch (renamed from patches/server/0925-Add-PlayerInventorySlotChangeEvent.patch)0
-rw-r--r--patches/server/0925-Elder-Guardian-appearance-API.patch (renamed from patches/server/0926-Elder-Guardian-appearance-API.patch)0
-rw-r--r--patches/server/0926-Allow-changing-bed-s-occupied-property.patch (renamed from patches/server/0927-Allow-changing-bed-s-occupied-property.patch)0
-rw-r--r--patches/server/0927-Add-entity-knockback-API.patch (renamed from patches/server/0928-Add-entity-knockback-API.patch)0
-rw-r--r--patches/server/0928-Detect-headless-JREs.patch (renamed from patches/server/0929-Detect-headless-JREs.patch)0
-rw-r--r--patches/server/0929-fixed-entity-vehicle-collision-event-not-called.patch (renamed from patches/server/0930-fixed-entity-vehicle-collision-event-not-called.patch)0
-rw-r--r--patches/server/0930-optimized-dirt-and-snow-spreading.patch (renamed from patches/server/0931-optimized-dirt-and-snow-spreading.patch)0
-rw-r--r--patches/server/0931-Added-EntityToggleSitEvent.patch (renamed from patches/server/0932-Added-EntityToggleSitEvent.patch)0
-rw-r--r--patches/server/0932-Add-fire-tick-delay-option.patch (renamed from patches/server/0933-Add-fire-tick-delay-option.patch)0
-rw-r--r--patches/server/0933-Add-Moving-Piston-API.patch (renamed from patches/server/0934-Add-Moving-Piston-API.patch)0
-rw-r--r--patches/server/0934-Ignore-impossible-spawn-tick.patch (renamed from patches/server/0935-Ignore-impossible-spawn-tick.patch)0
m---------work/Bukkit0
m---------work/Spigot0
207 files changed, 35 insertions, 1798 deletions
diff --git a/patches/api/0352-Add-new-overload-to-PersistentDataContainer-has.patch b/patches/api/0351-Add-new-overload-to-PersistentDataContainer-has.patch
index 73c49a2fc8..73c49a2fc8 100644
--- a/patches/api/0352-Add-new-overload-to-PersistentDataContainer-has.patch
+++ b/patches/api/0351-Add-new-overload-to-PersistentDataContainer-has.patch
diff --git a/patches/api/0351-Remove-upstream-snakeyaml-fix.patch b/patches/api/0351-Remove-upstream-snakeyaml-fix.patch
deleted file mode 100644
index d64efcbe9d..0000000000
--- a/patches/api/0351-Remove-upstream-snakeyaml-fix.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <[email protected]>
-Date: Wed, 5 Jan 2022 12:12:58 -0800
-Subject: [PATCH] Remove upstream snakeyaml fix
-
-See Server Patch: Fix saving configs with more long comments
-
-diff --git a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
-index 21d73587e535c43e13473e441dea6fe86c3bf266..0a03cefda788b1dc57ddd61914492a15788aa3d5 100644
---- a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
-+++ b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
-@@ -65,7 +65,7 @@ public class YamlConfiguration extends FileConfiguration {
- yamlLoaderOptions = new LoaderOptions();
- yamlLoaderOptions.setMaxAliasesForCollections(Integer.MAX_VALUE); // SPIGOT-5881: Not ideal, but was default pre SnakeYAML 1.26
-
-- yaml = new BukkitYaml(constructor, representer, yamlDumperOptions, yamlLoaderOptions);
-+ yaml = new /*BukkitYaml*/Yaml(constructor, representer, yamlDumperOptions, yamlLoaderOptions); // Paper - don't use upstream BukkitYaml fix, add the whole snakeyaml Emitter class itself with the fix
- }
-
- @NotNull
-diff --git a/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java b/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java
-index 194949d74a3f1c69f7869a826ee3a011a6c26786..9f83d16341b4efd5c7150d2ab9abd579f373fa95 100644
---- a/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java
-+++ b/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java
-@@ -152,6 +152,7 @@ public class YamlConfigurationTest extends FileConfigurationTest {
- }
-
- @Test
-+ @org.junit.Ignore // Paper - ignore test because our fix doesn't work in testing environment
- public void test100Comments() throws InvalidConfigurationException {
- StringBuilder commentBuilder = new StringBuilder();
- for (int i = 0; i < 100; i++) {
diff --git a/patches/api/0353-Multiple-Entries-with-Scoreboards.patch b/patches/api/0352-Multiple-Entries-with-Scoreboards.patch
index 2601f1c5a7..2601f1c5a7 100644
--- a/patches/api/0353-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/api/0352-Multiple-Entries-with-Scoreboards.patch
diff --git a/patches/api/0354-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch b/patches/api/0353-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
index 3f005c4a38..3f005c4a38 100644
--- a/patches/api/0354-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/api/0353-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/api/0355-Warn-on-strange-EventHandler-return-types.patch b/patches/api/0354-Warn-on-strange-EventHandler-return-types.patch
index 29026c1725..29026c1725 100644
--- a/patches/api/0355-Warn-on-strange-EventHandler-return-types.patch
+++ b/patches/api/0354-Warn-on-strange-EventHandler-return-types.patch
diff --git a/patches/api/0356-Multi-Block-Change-API.patch b/patches/api/0355-Multi-Block-Change-API.patch
index 1d9a1f89d4..1d9a1f89d4 100644
--- a/patches/api/0356-Multi-Block-Change-API.patch
+++ b/patches/api/0355-Multi-Block-Change-API.patch
diff --git a/patches/api/0357-Fix-NotePlayEvent.patch b/patches/api/0356-Fix-NotePlayEvent.patch
index a474627df0..a474627df0 100644
--- a/patches/api/0357-Fix-NotePlayEvent.patch
+++ b/patches/api/0356-Fix-NotePlayEvent.patch
diff --git a/patches/api/0358-Freeze-Tick-Lock-API.patch b/patches/api/0357-Freeze-Tick-Lock-API.patch
index 01344fbab1..01344fbab1 100644
--- a/patches/api/0358-Freeze-Tick-Lock-API.patch
+++ b/patches/api/0357-Freeze-Tick-Lock-API.patch
diff --git a/patches/api/0359-Dolphin-API.patch b/patches/api/0358-Dolphin-API.patch
index 73beed437b..73beed437b 100644
--- a/patches/api/0359-Dolphin-API.patch
+++ b/patches/api/0358-Dolphin-API.patch
diff --git a/patches/api/0360-More-PotionEffectType-API.patch b/patches/api/0359-More-PotionEffectType-API.patch
index aa6840470d..aa6840470d 100644
--- a/patches/api/0360-More-PotionEffectType-API.patch
+++ b/patches/api/0359-More-PotionEffectType-API.patch
diff --git a/patches/api/0361-API-for-creating-command-sender-which-forwards-feedb.patch b/patches/api/0360-API-for-creating-command-sender-which-forwards-feedb.patch
index 95101a7000..95101a7000 100644
--- a/patches/api/0361-API-for-creating-command-sender-which-forwards-feedb.patch
+++ b/patches/api/0360-API-for-creating-command-sender-which-forwards-feedb.patch
diff --git a/patches/api/0362-Implement-regenerateChunk.patch b/patches/api/0361-Implement-regenerateChunk.patch
index 4cc4dda624..4cc4dda624 100644
--- a/patches/api/0362-Implement-regenerateChunk.patch
+++ b/patches/api/0361-Implement-regenerateChunk.patch
diff --git a/patches/api/0363-Don-t-load-plugins-prefixed-with-a-dot.patch b/patches/api/0362-Don-t-load-plugins-prefixed-with-a-dot.patch
index 497267bb52..497267bb52 100644
--- a/patches/api/0363-Don-t-load-plugins-prefixed-with-a-dot.patch
+++ b/patches/api/0362-Don-t-load-plugins-prefixed-with-a-dot.patch
diff --git a/patches/api/0364-Add-GameEvent-tags.patch b/patches/api/0363-Add-GameEvent-tags.patch
index a3687657c0..a3687657c0 100644
--- a/patches/api/0364-Add-GameEvent-tags.patch
+++ b/patches/api/0363-Add-GameEvent-tags.patch
diff --git a/patches/api/0365-Furnace-RecipesUsed-API.patch b/patches/api/0364-Furnace-RecipesUsed-API.patch
index 7fed82db21..7fed82db21 100644
--- a/patches/api/0365-Furnace-RecipesUsed-API.patch
+++ b/patches/api/0364-Furnace-RecipesUsed-API.patch
diff --git a/patches/api/0366-Configurable-sculk-sensor-listener-range.patch b/patches/api/0365-Configurable-sculk-sensor-listener-range.patch
index b1ad0cdb5b..b1ad0cdb5b 100644
--- a/patches/api/0366-Configurable-sculk-sensor-listener-range.patch
+++ b/patches/api/0365-Configurable-sculk-sensor-listener-range.patch
diff --git a/patches/api/0367-Add-missing-block-data-mins-and-maxes.patch b/patches/api/0366-Add-missing-block-data-mins-and-maxes.patch
index 600497b952..600497b952 100644
--- a/patches/api/0367-Add-missing-block-data-mins-and-maxes.patch
+++ b/patches/api/0366-Add-missing-block-data-mins-and-maxes.patch
diff --git a/patches/api/0368-Custom-Potion-Mixes.patch b/patches/api/0367-Custom-Potion-Mixes.patch
index 260c044149..260c044149 100644
--- a/patches/api/0368-Custom-Potion-Mixes.patch
+++ b/patches/api/0367-Custom-Potion-Mixes.patch
diff --git a/patches/api/0369-Expose-furnace-minecart-push-values.patch b/patches/api/0368-Expose-furnace-minecart-push-values.patch
index 3d8c2336e7..3d8c2336e7 100644
--- a/patches/api/0369-Expose-furnace-minecart-push-values.patch
+++ b/patches/api/0368-Expose-furnace-minecart-push-values.patch
diff --git a/patches/api/0370-More-Projectile-API.patch b/patches/api/0369-More-Projectile-API.patch
index 0841766648..0841766648 100644
--- a/patches/api/0370-More-Projectile-API.patch
+++ b/patches/api/0369-More-Projectile-API.patch
diff --git a/patches/api/0371-Add-getComputedBiome-API.patch b/patches/api/0370-Add-getComputedBiome-API.patch
index b192af7101..b192af7101 100644
--- a/patches/api/0371-Add-getComputedBiome-API.patch
+++ b/patches/api/0370-Add-getComputedBiome-API.patch
diff --git a/patches/api/0372-Add-enchantWithLevels-API.patch b/patches/api/0371-Add-enchantWithLevels-API.patch
index 394fcb62bf..394fcb62bf 100644
--- a/patches/api/0372-Add-enchantWithLevels-API.patch
+++ b/patches/api/0371-Add-enchantWithLevels-API.patch
diff --git a/patches/api/0373-Add-TameableDeathMessageEvent.patch b/patches/api/0372-Add-TameableDeathMessageEvent.patch
index 6152eacbe6..6152eacbe6 100644
--- a/patches/api/0373-Add-TameableDeathMessageEvent.patch
+++ b/patches/api/0372-Add-TameableDeathMessageEvent.patch
diff --git a/patches/api/0374-Allow-to-change-the-podium-of-the-EnderDragon.patch b/patches/api/0373-Allow-to-change-the-podium-of-the-EnderDragon.patch
index b86913ddbe..b86913ddbe 100644
--- a/patches/api/0374-Allow-to-change-the-podium-of-the-EnderDragon.patch
+++ b/patches/api/0373-Allow-to-change-the-podium-of-the-EnderDragon.patch
diff --git a/patches/api/0375-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch b/patches/api/0374-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
index 5775b6f33c..5775b6f33c 100644
--- a/patches/api/0375-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
+++ b/patches/api/0374-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
diff --git a/patches/api/0376-Update-Folder-Uses-Plugin-Name.patch b/patches/api/0375-Update-Folder-Uses-Plugin-Name.patch
index a5c98762cf..a5c98762cf 100644
--- a/patches/api/0376-Update-Folder-Uses-Plugin-Name.patch
+++ b/patches/api/0375-Update-Folder-Uses-Plugin-Name.patch
diff --git a/patches/api/0377-WorldCreator-keepSpawnLoaded.patch b/patches/api/0376-WorldCreator-keepSpawnLoaded.patch
index c148a391f4..c148a391f4 100644
--- a/patches/api/0377-WorldCreator-keepSpawnLoaded.patch
+++ b/patches/api/0376-WorldCreator-keepSpawnLoaded.patch
diff --git a/patches/api/0378-Add-EntityDyeEvent-and-CollarColorable-interface.patch b/patches/api/0377-Add-EntityDyeEvent-and-CollarColorable-interface.patch
index 032a0872d1..032a0872d1 100644
--- a/patches/api/0378-Add-EntityDyeEvent-and-CollarColorable-interface.patch
+++ b/patches/api/0377-Add-EntityDyeEvent-and-CollarColorable-interface.patch
diff --git a/patches/api/0379-Add-PlayerStopUsingItemEvent.patch b/patches/api/0378-Add-PlayerStopUsingItemEvent.patch
index 0743d44ae1..0743d44ae1 100644
--- a/patches/api/0379-Add-PlayerStopUsingItemEvent.patch
+++ b/patches/api/0378-Add-PlayerStopUsingItemEvent.patch
diff --git a/patches/api/0380-FallingBlock-auto-expire-setting.patch b/patches/api/0379-FallingBlock-auto-expire-setting.patch
index 90c104c7ce..90c104c7ce 100644
--- a/patches/api/0380-FallingBlock-auto-expire-setting.patch
+++ b/patches/api/0379-FallingBlock-auto-expire-setting.patch
diff --git a/patches/api/0381-Keyed-Cat-Type.patch b/patches/api/0380-Keyed-Cat-Type.patch
index b0797d78b7..b0797d78b7 100644
--- a/patches/api/0381-Keyed-Cat-Type.patch
+++ b/patches/api/0380-Keyed-Cat-Type.patch
diff --git a/patches/api/0382-Add-method-isTickingWorlds-to-Bukkit.patch b/patches/api/0381-Add-method-isTickingWorlds-to-Bukkit.patch
index 10c607bbbc..10c607bbbc 100644
--- a/patches/api/0382-Add-method-isTickingWorlds-to-Bukkit.patch
+++ b/patches/api/0381-Add-method-isTickingWorlds-to-Bukkit.patch
diff --git a/patches/api/0383-Add-WardenAngerChangeEvent.patch b/patches/api/0382-Add-WardenAngerChangeEvent.patch
index acf45b5314..acf45b5314 100644
--- a/patches/api/0383-Add-WardenAngerChangeEvent.patch
+++ b/patches/api/0382-Add-WardenAngerChangeEvent.patch
diff --git a/patches/api/0384-Nameable-Banner-API.patch b/patches/api/0383-Nameable-Banner-API.patch
index eba196daaf..eba196daaf 100644
--- a/patches/api/0384-Nameable-Banner-API.patch
+++ b/patches/api/0383-Nameable-Banner-API.patch
diff --git a/patches/api/0385-Add-Player-getFishHook.patch b/patches/api/0384-Add-Player-getFishHook.patch
index 9c96c813ae..9c96c813ae 100644
--- a/patches/api/0385-Add-Player-getFishHook.patch
+++ b/patches/api/0384-Add-Player-getFishHook.patch
diff --git a/patches/api/0386-More-Teleport-API.patch b/patches/api/0385-More-Teleport-API.patch
index 24f17beb8d..24f17beb8d 100644
--- a/patches/api/0386-More-Teleport-API.patch
+++ b/patches/api/0385-More-Teleport-API.patch
diff --git a/patches/api/0387-Add-EntityPortalReadyEvent.patch b/patches/api/0386-Add-EntityPortalReadyEvent.patch
index 4b1b1f1e1f..4b1b1f1e1f 100644
--- a/patches/api/0387-Add-EntityPortalReadyEvent.patch
+++ b/patches/api/0386-Add-EntityPortalReadyEvent.patch
diff --git a/patches/api/0388-Custom-Chat-Completion-Suggestions-API.patch b/patches/api/0387-Custom-Chat-Completion-Suggestions-API.patch
index 0afdd4aa9a..0afdd4aa9a 100644
--- a/patches/api/0388-Custom-Chat-Completion-Suggestions-API.patch
+++ b/patches/api/0387-Custom-Chat-Completion-Suggestions-API.patch
diff --git a/patches/api/0389-Collision-API.patch b/patches/api/0388-Collision-API.patch
index 0c2293a64d..0c2293a64d 100644
--- a/patches/api/0389-Collision-API.patch
+++ b/patches/api/0388-Collision-API.patch
diff --git a/patches/api/0390-Block-Ticking-API.patch b/patches/api/0389-Block-Ticking-API.patch
index 7c077405ca..7c077405ca 100644
--- a/patches/api/0390-Block-Ticking-API.patch
+++ b/patches/api/0389-Block-Ticking-API.patch
diff --git a/patches/api/0391-Add-NamespacedKey-biome-methods.patch b/patches/api/0390-Add-NamespacedKey-biome-methods.patch
index fc1f5c4d7e..fc1f5c4d7e 100644
--- a/patches/api/0391-Add-NamespacedKey-biome-methods.patch
+++ b/patches/api/0390-Add-NamespacedKey-biome-methods.patch
diff --git a/patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch b/patches/api/0391-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
index 31fa2bff14..31fa2bff14 100644
--- a/patches/api/0392-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
+++ b/patches/api/0391-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
diff --git a/patches/api/0393-Also-load-resources-from-LibraryLoader.patch b/patches/api/0392-Also-load-resources-from-LibraryLoader.patch
index 9843c45af2..9843c45af2 100644
--- a/patches/api/0393-Also-load-resources-from-LibraryLoader.patch
+++ b/patches/api/0392-Also-load-resources-from-LibraryLoader.patch
diff --git a/patches/api/0394-Added-byte-array-serialization-deserialization-for-P.patch b/patches/api/0393-Added-byte-array-serialization-deserialization-for-P.patch
index 9c197fc52f..9c197fc52f 100644
--- a/patches/api/0394-Added-byte-array-serialization-deserialization-for-P.patch
+++ b/patches/api/0393-Added-byte-array-serialization-deserialization-for-P.patch
diff --git a/patches/api/0395-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch b/patches/api/0394-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
index bec7a5d015..bec7a5d015 100644
--- a/patches/api/0395-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
+++ b/patches/api/0394-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
diff --git a/patches/api/0396-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch b/patches/api/0395-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
index 7fe0223346..92a4ba129e 100644
--- a/patches/api/0396-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
+++ b/patches/api/0395-Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Expose codepoint limit in YamlConfigOptions, and increase
diff --git a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
-index 0a03cefda788b1dc57ddd61914492a15788aa3d5..df98d2c12ef4867118aba3452c3aba1175faab4e 100644
+index 559b876d1156c04e4e417fb07439bbbc78bea065..9903be1739a5f8657f182b641e93d8b3480f3d57 100644
--- a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
+++ b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
-@@ -96,6 +96,7 @@ public class YamlConfiguration extends FileConfiguration {
+@@ -97,6 +97,7 @@ public class YamlConfiguration extends FileConfiguration {
public void loadFromString(@NotNull String contents) throws InvalidConfigurationException {
Preconditions.checkArgument(contents != null, "Contents cannot be null");
yamlLoaderOptions.setProcessComments(options().parseComments());
@@ -18,14 +18,14 @@ index 0a03cefda788b1dc57ddd61914492a15788aa3d5..df98d2c12ef4867118aba3452c3aba11
MappingNode node;
try (Reader reader = new UnicodeReader(new ByteArrayInputStream(contents.getBytes(StandardCharsets.UTF_8)))) {
diff --git a/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java b/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java
-index 3f7f6caf5fcf38b65c282cd83b93e45a272b138f..2a64bc9ab9ae4a7931ebce238cdab7a37e5f85b2 100644
+index 3f7f6caf5fcf38b65c282cd83b93e45a272b138f..5d0ec7436f4487c686473248f332689224156fd5 100644
--- a/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java
+++ b/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java
@@ -12,6 +12,7 @@ import org.jetbrains.annotations.Nullable;
public class YamlConfigurationOptions extends FileConfigurationOptions {
private int indent = 2;
private int width = 80;
-+ private int codePointLimit = 64 * 1024 * 1024; // 64 MB // Paper
++ private int codePointLimit = Integer.MAX_VALUE; // Paper - use upstream's default from YamlConfiguration
protected YamlConfigurationOptions(@NotNull YamlConfiguration configuration) {
super(configuration);
diff --git a/patches/api/0397-Add-system-property-to-print-stacktrace-on-bad-plugi.patch b/patches/api/0396-Add-system-property-to-print-stacktrace-on-bad-plugi.patch
index 48e74889cc..48e74889cc 100644
--- a/patches/api/0397-Add-system-property-to-print-stacktrace-on-bad-plugi.patch
+++ b/patches/api/0396-Add-system-property-to-print-stacktrace-on-bad-plugi.patch
diff --git a/patches/api/0398-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch b/patches/api/0397-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
index c23b7577e0..c23b7577e0 100644
--- a/patches/api/0398-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
+++ b/patches/api/0397-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
diff --git a/patches/api/0399-Add-PlayerInventorySlotChangeEvent.patch b/patches/api/0398-Add-PlayerInventorySlotChangeEvent.patch
index f094f9dbc9..f094f9dbc9 100644
--- a/patches/api/0399-Add-PlayerInventorySlotChangeEvent.patch
+++ b/patches/api/0398-Add-PlayerInventorySlotChangeEvent.patch
diff --git a/patches/api/0400-Elder-Guardian-appearance-API.patch b/patches/api/0399-Elder-Guardian-appearance-API.patch
index ca33de41db..ca33de41db 100644
--- a/patches/api/0400-Elder-Guardian-appearance-API.patch
+++ b/patches/api/0399-Elder-Guardian-appearance-API.patch
diff --git a/patches/api/0401-Allow-changing-bed-s-occupied-property.patch b/patches/api/0400-Allow-changing-bed-s-occupied-property.patch
index 8dfafd6d33..8dfafd6d33 100644
--- a/patches/api/0401-Allow-changing-bed-s-occupied-property.patch
+++ b/patches/api/0400-Allow-changing-bed-s-occupied-property.patch
diff --git a/patches/api/0402-Add-EquipmentSlot-convenience-methods.patch b/patches/api/0401-Add-EquipmentSlot-convenience-methods.patch
index 0ef6b4c9b0..0ef6b4c9b0 100644
--- a/patches/api/0402-Add-EquipmentSlot-convenience-methods.patch
+++ b/patches/api/0401-Add-EquipmentSlot-convenience-methods.patch
diff --git a/patches/api/0403-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch b/patches/api/0402-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
index d4e19b6acd..d4e19b6acd 100644
--- a/patches/api/0403-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
+++ b/patches/api/0402-Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
diff --git a/patches/api/0404-Add-entity-knockback-API.patch b/patches/api/0403-Add-entity-knockback-API.patch
index a8167a1284..a8167a1284 100644
--- a/patches/api/0404-Add-entity-knockback-API.patch
+++ b/patches/api/0403-Add-entity-knockback-API.patch
diff --git a/patches/api/0405-Added-EntityToggleSitEvent.patch b/patches/api/0404-Added-EntityToggleSitEvent.patch
index af2476123b..af2476123b 100644
--- a/patches/api/0405-Added-EntityToggleSitEvent.patch
+++ b/patches/api/0404-Added-EntityToggleSitEvent.patch
diff --git a/patches/api/0406-Add-Moving-Piston-API.patch b/patches/api/0405-Add-Moving-Piston-API.patch
index 8f889f1e3d..8f889f1e3d 100644
--- a/patches/api/0406-Add-Moving-Piston-API.patch
+++ b/patches/api/0405-Add-Moving-Piston-API.patch
diff --git a/patches/server/0018-Configurable-cactus-bamboo-and-reed-growth-heights.patch b/patches/server/0018-Configurable-cactus-bamboo-and-reed-growth-heights.patch
index e794b359ef..7d405a11d6 100644
--- a/patches/server/0018-Configurable-cactus-bamboo-and-reed-growth-heights.patch
+++ b/patches/server/0018-Configurable-cactus-bamboo-and-reed-growth-heights.patch
@@ -7,11 +7,11 @@ Bamboo - Both the minimum fully-grown heights and the maximum are configurable
- Machine_Maker
diff --git a/src/main/java/net/minecraft/world/level/block/BambooBlock.java b/src/main/java/net/minecraft/world/level/block/BambooBlock.java
-index 4d9c6b462101dd533b0d08c40e0257e39ccbead3..4eaf778f43b67210321ffafa3da622cb4262d57b 100644
+index 3a6894c3cdee0d55f0546cda50c824ea5e95bfe0..2db8fd4fb03642fce2c7eca9c6b189f38d5cbf4a 100644
--- a/src/main/java/net/minecraft/world/level/block/BambooBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BambooBlock.java
@@ -130,7 +130,7 @@ public class BambooBlock extends Block implements BonemealableBlock {
- if (random.nextInt(Math.max(1, (int) (100.0F / world.spigotConfig.bambooModifier) * 3)) == 0 && world.isEmptyBlock(pos.above()) && world.getRawBrightness(pos.above(), 0) >= 9) { // Spigot
+ if (random.nextFloat() < (world.spigotConfig.bambooModifier / (100.0f * 3)) && world.isEmptyBlock(pos.above()) && world.getRawBrightness(pos.above(), 0) >= 9) { // Spigot - SPIGOT-7159: Better modifier resolution
int i = this.getHeightBelowUpToMax(world, pos) + 1;
- if (i < 16) {
@@ -65,7 +65,7 @@ index 4d9c6b462101dd533b0d08c40e0257e39ccbead3..4eaf778f43b67210321ffafa3da622cb
}
diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
-index 3b4be44e4204435a360bc224a9b2651952dedf02..cb3d26af146859b87fc471174f8f63dfe7caa5fd 100644
+index ea052e4a5e5cb23609129fd08869bcd38f675cd0..7f137f43f725cd2866e10f0ade40d4906b64fac1 100644
--- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
@@ -55,7 +55,7 @@ public class CactusBlock extends Block {
@@ -76,9 +76,9 @@ index 3b4be44e4204435a360bc224a9b2651952dedf02..cb3d26af146859b87fc471174f8f63df
+ if (i < world.paperConfig().maxGrowthHeight.cactus) { // Paper - Configurable growth height
int j = (Integer) state.getValue(CactusBlock.AGE);
- if (j >= (byte) range(3, ((100.0F / world.spigotConfig.cactusModifier) * 15) + 0.5F, 15)) { // Spigot
+ int modifier = world.spigotConfig.cactusModifier; // Spigot - SPIGOT-7159: Better modifier resolution
diff --git a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java
-index e5956a2a68f168a4c08c6c409ae7b288eb792660..5554889adbade3af627b11348e9cc04191bfea36 100644
+index 2aa81f93a2e1e94d0788b4d7b67f94494101c397..6b400a4759c8c8612a3b5c96ca0d87ef9dc71435 100644
--- a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java
@@ -52,7 +52,7 @@ public class SugarCaneBlock extends Block {
@@ -89,4 +89,4 @@ index e5956a2a68f168a4c08c6c409ae7b288eb792660..5554889adbade3af627b11348e9cc041
+ if (i < world.paperConfig().maxGrowthHeight.reeds) { // Paper - Configurable growth height
int j = (Integer) state.getValue(SugarCaneBlock.AGE);
- if (j >= (byte) range(3, ((100.0F / world.spigotConfig.caneModifier) * 15) + 0.5F, 15)) { // Spigot
+ int modifier = world.spigotConfig.caneModifier; // Spigot - SPIGOT-7159: Better modifier resolution
diff --git a/patches/server/0244-Restore-vanilla-default-mob-spawn-range-and-water-an.patch b/patches/server/0244-Restore-vanilla-default-mob-spawn-range-and-water-an.patch
index e10d949eea..765c83db85 100644
--- a/patches/server/0244-Restore-vanilla-default-mob-spawn-range-and-water-an.patch
+++ b/patches/server/0244-Restore-vanilla-default-mob-spawn-range-and-water-an.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Restore vanilla default mob-spawn-range and water animals
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-index d139cbcf0b159372f229bef6ae49b45a74c163ad..d4d2d11cf19167410ec6ad3417495e7130330d11 100644
+index 3b7724a8ad8b9df0bbbca7fd2f8328e9885c5a73..70b3ff4a6a9aea24e28d99997a936e850d46b05e 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-@@ -184,7 +184,7 @@ public class SpigotWorldConfig
+@@ -190,7 +190,7 @@ public class SpigotWorldConfig
public byte mobSpawnRange;
private void mobSpawnRange()
{
diff --git a/patches/server/0345-Entity-Activation-Range-2.0.patch b/patches/server/0345-Entity-Activation-Range-2.0.patch
index 75756d5de2..d6938aae98 100644
--- a/patches/server/0345-Entity-Activation-Range-2.0.patch
+++ b/patches/server/0345-Entity-Activation-Range-2.0.patch
@@ -303,7 +303,7 @@ index f957c0aca36b7228ac3a33ca04c948b1d10642d1..39fc94b1e1555fd6706391223dd27831
super.customServerAiStep();
}
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java b/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java
-index 540c23f6297c34cf8e7bf8312ceaa5fc868f414c..2866385a64b22b7dc82b6122c62bcea6b0908a60 100644
+index 3f8990d15bd6815db0ccb924e621dfcc3220e0e0..70f1916185b79bbb9f033f4ef8119d7b17a13ef8 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java
@@ -57,6 +57,7 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper
@@ -742,10 +742,10 @@ index 2861c585710eaa00541ff417a29f1f6a2fb5b46a..b1ed97618d08d7691d24f89e9e9b0ed0
isActive = false;
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-index d4d2d11cf19167410ec6ad3417495e7130330d11..9c9723e13b5440d4803a7268057d63cbdc973b77 100644
+index 70b3ff4a6a9aea24e28d99997a936e850d46b05e..a345befaee2e4703294c3941f4060c496838c496 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-@@ -199,14 +199,60 @@ public class SpigotWorldConfig
+@@ -205,14 +205,60 @@ public class SpigotWorldConfig
public int monsterActivationRange = 32;
public int raiderActivationRange = 48;
public int miscActivationRange = 16;
diff --git a/patches/server/0636-Add-EntityInsideBlockEvent.patch b/patches/server/0636-Add-EntityInsideBlockEvent.patch
index e9906dfffc..712e15581a 100644
--- a/patches/server/0636-Add-EntityInsideBlockEvent.patch
+++ b/patches/server/0636-Add-EntityInsideBlockEvent.patch
@@ -65,10 +65,10 @@ index c187e9df237ee71562343bbb4b577b2dcd9b4f1c..a0194e78913017693df7d92516dfbacb
this.checkPressed(state, world, pos);
}
diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
-index cb3d26af146859b87fc471174f8f63dfe7caa5fd..0fbabb84ef13e68b12212d9bfeb885c78893c116 100644
+index 7f137f43f725cd2866e10f0ade40d4906b64fac1..1ec242205b82a5a1f10deb2312795cc5dc157a76 100644
--- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
-@@ -116,6 +116,7 @@ public class CactusBlock extends Block {
+@@ -117,6 +117,7 @@ public class CactusBlock extends Block {
@Override
public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
@@ -89,7 +89,7 @@ index 930421c72326fabfa3f2e3ab37c4dd6f416d6d44..a4c44cb59dee29cf227dbb51bfc1576d
org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = CraftBlock.at(world, pos); // CraftBukkit
entity.hurt(DamageSource.IN_FIRE, (float) this.fireDamage);
diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java
-index 76fc886013b6c53f7888292f8fda50abe72e43bf..275e5334b1206a2dcafc3772c7e2ad0ebe3693f9 100644
+index 26b4a4d8784923cb2caea3c20a180a9fe7bb4d8b..7d8394d09ec11c96b9329857a0d347565dd07b32 100644
--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java
@@ -163,6 +163,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock {
@@ -197,7 +197,7 @@ index 47f54002654d198a56a85884de34e305e545eb4b..518d3832c36c9ecf1ed9267ffc1f926d
entity.makeStuckInBlock(state, new Vec3(0.8999999761581421D, 1.5D, 0.8999999761581421D));
if (world.isClientSide) {
diff --git a/src/main/java/net/minecraft/world/level/block/SweetBerryBushBlock.java b/src/main/java/net/minecraft/world/level/block/SweetBerryBushBlock.java
-index 1eddae82b9a438eefa49add5e3706aba755ccf45..1561be49f3a2761ce48bb16ea2dffbf1c37d0536 100644
+index 3eba9715601fcd1e86cb50bdef2434b404009caf..9871249335b67cfcfc17e7a1d504da1bc9b08c8a 100644
--- a/src/main/java/net/minecraft/world/level/block/SweetBerryBushBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SweetBerryBushBlock.java
@@ -77,6 +77,7 @@ public class SweetBerryBushBlock extends BushBlock implements BonemealableBlock
diff --git a/patches/server/0765-Fix-kelp-modifier-changing-growth-for-other-crops.patch b/patches/server/0765-Fix-kelp-modifier-changing-growth-for-other-crops.patch
index 60f87f5973..7447d00874 100644
--- a/patches/server/0765-Fix-kelp-modifier-changing-growth-for-other-crops.patch
+++ b/patches/server/0765-Fix-kelp-modifier-changing-growth-for-other-crops.patch
@@ -34,29 +34,10 @@ index 7d9056f9d841fbbdeaf1e323d818f2f1267b47e8..4940e101250874111e9c55aeb5b87b28
public ItemStack getCloneItemStack(BlockGetter world, BlockPos pos, BlockState state) {
return new ItemStack(Items.GLOW_BERRIES);
diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
-index ae9052efc48dc05c7b41cb18c4330d7e62839a07..4d1e1cf4c541793492a02681087a6242e7977acd 100644
+index 4e30917fbc5c539fefc8dc391b902241f7c5ad35..b7517d1e8a5d5eb719de5eda424b7dd2449f1182 100644
--- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
-@@ -40,16 +40,36 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements
-
- @Override
- public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) {
-- if ((Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25 && random.nextDouble() < (100.0D / world.spigotConfig.kelpModifier) * this.growPerTickProbability) { // Spigot
-+ // Paper start
-+ final int modifier;
-+ if (state.is(Blocks.TWISTING_VINES) || state.is(Blocks.TWISTING_VINES_PLANT)) {
-+ modifier = world.spigotConfig.twistingVinesModifier;
-+ } else if (state.is(Blocks.WEEPING_VINES) || state.is(Blocks.WEEPING_VINES_PLANT)) {
-+ modifier = world.spigotConfig.weepingVinesModifier;
-+ } else if (state.is(Blocks.CAVE_VINES) || state.is(Blocks.CAVE_VINES_PLANT)) {
-+ modifier = world.spigotConfig.caveVinesModifier;
-+ } else if (state.is(Blocks.KELP) || state.is(Blocks.KELP_PLANT)) {
-+ modifier = world.spigotConfig.kelpModifier;
-+ } else {
-+ modifier = 100; // Above cases are exhaustive as of 1.18
-+ }
-+ if ((Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25 && random.nextDouble() < (modifier / 100.0D) * this.growPerTickProbability) { // Spigot // Paper - fix growth modifier having the reverse effect
-+ // Paper end
+@@ -56,12 +56,18 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements
BlockPos blockposition1 = pos.relative(this.growthDirection);
if (this.canGrowInto(world.getBlockState(blockposition1))) {
@@ -77,32 +58,22 @@ index ae9052efc48dc05c7b41cb18c4330d7e62839a07..4d1e1cf4c541793492a02681087a6242
return (BlockState) state.cycle(GrowingPlantHeadBlock.AGE);
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-index 40984144a062230fd45cc6c707b03e5cd7d89efc..cf96f9fdc4ae561f01d44503b9851c60140e4ea7 100644
+index 102b038e2566cba4f259a61e502ff0808c47234c..6bcc46795d1f78746192cc107c4a1f61580ec3c5 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-@@ -103,6 +103,12 @@ public class SpigotWorldConfig
- public int bambooModifier;
- public int sweetBerryModifier;
- public int kelpModifier;
-+ // Paper start
-+ public int twistingVinesModifier;
-+ public int weepingVinesModifier;
-+ public int caveVinesModifier;
-+ public int glowBerryModifier;
-+ // Paper end
+@@ -106,6 +106,7 @@ public class SpigotWorldConfig
+ public int twistingVinesModifier;
+ public int weepingVinesModifier;
+ public int caveVinesModifier;
++ public int glowBerryModifier; // Paper
private int getAndValidateGrowth(String crop)
{
int modifier = this.getInt( "growth." + crop.toLowerCase(java.util.Locale.ENGLISH) + "-modifier", 100 );
-@@ -133,6 +139,12 @@ public class SpigotWorldConfig
- this.bambooModifier = this.getAndValidateGrowth( "Bamboo" );
- this.sweetBerryModifier = this.getAndValidateGrowth( "SweetBerry" );
- this.kelpModifier = this.getAndValidateGrowth( "Kelp" );
-+ // Paper start
-+ this.twistingVinesModifier = this.getAndValidateGrowth("TwistingVines");
-+ this.weepingVinesModifier = this.getAndValidateGrowth("WeepingVines");
-+ this.caveVinesModifier = this.getAndValidateGrowth("CaveVines");
-+ this.glowBerryModifier = this.getAndValidateGrowth("GlowBerry");
-+ // Paper end
+@@ -139,6 +140,7 @@ public class SpigotWorldConfig
+ this.twistingVinesModifier = this.getAndValidateGrowth( "TwistingVines" );
+ this.weepingVinesModifier = this.getAndValidateGrowth( "WeepingVines" );
+ this.caveVinesModifier = this.getAndValidateGrowth( "CaveVines" );
++ this.glowBerryModifier = this.getAndValidateGrowth("GlowBerry"); // Paper
}
public double itemMerge;
diff --git a/patches/server/0792-Fix-saving-configs-with-more-long-comments.patch b/patches/server/0792-Fix-saving-configs-with-more-long-comments.patch
deleted file mode 100644
index 7d52b01085..0000000000
--- a/patches/server/0792-Fix-saving-configs-with-more-long-comments.patch
+++ /dev/null
@@ -1,1702 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <[email protected]>
-Date: Sat, 1 Jan 2022 21:24:50 -0800
-Subject: [PATCH] Fix saving configs with more long comments
-
-This is a bug with snakeyaml
-PR: https://bitbucket.org/snakeyaml/snakeyaml/pull-requests/3
-Issue: https://bitbucket.org/snakeyaml/snakeyaml/issues/518/comments-could-cause-queue-full
-
-Added the entire Emitter class from snakeyaml because
-dev-imports doesn't work with non-mojang-added dependencies
-
-Replacement for upstream: https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/a7505b3cd0498baca152777767f0e4ddebbe4d1a
-
-diff --git a/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java b/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
-new file mode 100644
-index 0000000000000000000000000000000000000000..ca32c00775f3d98abea39bbfeb0268bb9efbc12b
---- /dev/null
-+++ b/src/main/java/org/yaml/snakeyaml/emitter/Emitter.java
-@@ -0,0 +1,1682 @@
-+/**
-+ * Copyright (c) 2008, SnakeYAML
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the "License");
-+ * you may not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+package org.yaml.snakeyaml.emitter;
-+
-+import org.yaml.snakeyaml.DumperOptions;
-+import org.yaml.snakeyaml.DumperOptions.ScalarStyle;
-+import org.yaml.snakeyaml.DumperOptions.Version;
-+import org.yaml.snakeyaml.comments.CommentEventsCollector;
-+import org.yaml.snakeyaml.comments.CommentLine;
-+import org.yaml.snakeyaml.comments.CommentType;
-+import org.yaml.snakeyaml.error.YAMLException;
-+import org.yaml.snakeyaml.events.AliasEvent;
-+import org.yaml.snakeyaml.events.CollectionEndEvent;
-+import org.yaml.snakeyaml.events.CollectionStartEvent;
-+import org.yaml.snakeyaml.events.CommentEvent;
-+import org.yaml.snakeyaml.events.DocumentEndEvent;
-+import org.yaml.snakeyaml.events.DocumentStartEvent;
-+import org.yaml.snakeyaml.events.Event;
-+import org.yaml.snakeyaml.events.Event.ID;
-+import org.yaml.snakeyaml.events.MappingEndEvent;
-+import org.yaml.snakeyaml.events.MappingStartEvent;
-+import org.yaml.snakeyaml.events.NodeEvent;
-+import org.yaml.snakeyaml.events.ScalarEvent;
-+import org.yaml.snakeyaml.events.SequenceEndEvent;
-+import org.yaml.snakeyaml.events.SequenceStartEvent;
-+import org.yaml.snakeyaml.events.StreamEndEvent;
-+import org.yaml.snakeyaml.events.StreamStartEvent;
-+import org.yaml.snakeyaml.nodes.Tag;
-+import org.yaml.snakeyaml.reader.StreamReader;
-+import org.yaml.snakeyaml.scanner.Constant;
-+import org.yaml.snakeyaml.util.ArrayStack;
-+
-+import java.io.IOException;
-+import java.io.Writer;
-+import java.util.ArrayDeque;
-+import java.util.HashMap;
-+import java.util.HashSet;
-+import java.util.Iterator;
-+import java.util.LinkedHashMap;
-+import java.util.List;
-+import java.util.Map;
-+import java.util.Queue;
-+import java.util.Set;
-+import java.util.TreeSet;
-+import java.util.concurrent.ArrayBlockingQueue;
-+import java.util.regex.Matcher;
-+import java.util.regex.Pattern;
-+
-+/**
-+ * <pre>
-+ * Emitter expects events obeying the following grammar:
-+ * stream ::= STREAM-START document* STREAM-END
-+ * document ::= DOCUMENT-START node DOCUMENT-END
-+ * node ::= SCALAR | sequence | mapping
-+ * sequence ::= SEQUENCE-START node* SEQUENCE-END
-+ * mapping ::= MAPPING-START (node node)* MAPPING-END
-+ * </pre>
-+ */
-+public final class Emitter implements Emitable {
-+ public static final int MIN_INDENT = 1;
-+ public static final int MAX_INDENT = 10;
-+ private static final char[] SPACE = {' '};
-+
-+ private static final Pattern SPACES_PATTERN = Pattern.compile("\\s");
-+ private static final Set<Character> INVALID_ANCHOR = new HashSet();
-+ static {
-+ INVALID_ANCHOR.add('[');
-+ INVALID_ANCHOR.add(']');
-+ INVALID_ANCHOR.add('{');
-+ INVALID_ANCHOR.add('}');
-+ INVALID_ANCHOR.add(',');
-+ INVALID_ANCHOR.add('*');
-+ INVALID_ANCHOR.add('&');
-+ }
-+
-+ private static final Map<Character, String> ESCAPE_REPLACEMENTS = new HashMap<Character, String>();
-+ static {
-+ ESCAPE_REPLACEMENTS.put('\0', "0");
-+ ESCAPE_REPLACEMENTS.put('\u0007', "a");
-+ ESCAPE_REPLACEMENTS.put('\u0008', "b");
-+ ESCAPE_REPLACEMENTS.put('\u0009', "t");
-+ ESCAPE_REPLACEMENTS.put('\n', "n");
-+ ESCAPE_REPLACEMENTS.put('\u000B', "v");
-+ ESCAPE_REPLACEMENTS.put('\u000C', "f");
-+ ESCAPE_REPLACEMENTS.put('\r', "r");
-+ ESCAPE_REPLACEMENTS.put('\u001B', "e");
-+ ESCAPE_REPLACEMENTS.put('"', "\"");
-+ ESCAPE_REPLACEMENTS.put('\\', "\\");
-+ ESCAPE_REPLACEMENTS.put('\u0085', "N");
-+ ESCAPE_REPLACEMENTS.put('\u00A0', "_");
-+ ESCAPE_REPLACEMENTS.put('\u2028', "L");
-+ ESCAPE_REPLACEMENTS.put('\u2029', "P");
-+ }
-+
-+ private final static Map<String, String> DEFAULT_TAG_PREFIXES = new LinkedHashMap<String, String>();
-+ static {
-+ DEFAULT_TAG_PREFIXES.put("!", "!");
-+ DEFAULT_TAG_PREFIXES.put(Tag.PREFIX, "!!");
-+ }
-+ // The stream should have the methods `write` and possibly `flush`.
-+ private final Writer stream;
-+
-+ // Encoding is defined by Writer (cannot be overridden by STREAM-START.)
-+ // private Charset encoding;
-+
-+ // Emitter is a state machine with a stack of states to handle nested
-+ // structures.
-+ private final ArrayStack<EmitterState> states;
-+ private EmitterState state;
-+
-+ // Current event and the event queue.
-+ private final Queue<Event> events;
-+ private Event event;
-+
-+ // The current indentation level and the stack of previous indents.
-+ private final ArrayStack<Integer> indents;
-+ private Integer indent;
-+
-+ // Flow level.
-+ private int flowLevel;
-+
-+ // Contexts.
-+ private boolean rootContext;
-+ private boolean mappingContext;
-+ private boolean simpleKeyContext;
-+
-+ //
-+ // Characteristics of the last emitted character:
-+ // - current position.
-+ // - is it a whitespace?
-+ // - is it an indention character
-+ // (indentation space, '-', '?', or ':')?
-+ // private int line; this variable is not used
-+ private int column;
-+ private boolean whitespace;
-+ private boolean indention;
-+ private boolean openEnded;
-+
-+ // Formatting details.
-+ private final Boolean canonical;
-+ // pretty print flow by adding extra line breaks
-+ private final Boolean prettyFlow;
-+
-+ private final boolean allowUnicode;
-+ private int bestIndent;
-+ private final int indicatorIndent;
-+ private final boolean indentWithIndicator;
-+ private int bestWidth;
-+ private final char[] bestLineBreak;
-+ private final boolean splitLines;
-+ private final int maxSimpleKeyLength;
-+ private final boolean emitComments;
-+
-+ // Tag prefixes.
-+ private Map<String, String> tagPrefixes;
-+
-+ // Prepared anchor and tag.
-+ private String preparedAnchor;
-+ private String preparedTag;
-+
-+ // Scalar analysis and style.
-+ private ScalarAnalysis analysis;
-+ private DumperOptions.ScalarStyle style;
-+
-+ // Comment processing
-+ private final CommentEventsCollector blockCommentsCollector;
-+ private final CommentEventsCollector inlineCommentsCollector;
-+
-+
-+ public Emitter(Writer stream, DumperOptions opts) {
-+ // The stream should have the methods `write` and possibly `flush`.
-+ this.stream = stream;
-+ // Emitter is a state machine with a stack of states to handle nested
-+ // structures.
-+ this.states = new ArrayStack<EmitterState>(100);
-+ this.state = new ExpectStreamStart();
-+ // Current event and the event queue.
-+ this.events = new ArrayDeque<>(100); // Paper - allow more than 100 events (or comments)
-+ // this.events = new ArrayBlockingQueue<>(100);
-+ this.event = null;
-+ // The current indentation level and the stack of previous indents.
-+ this.indents = new ArrayStack<Integer>(10);
-+ this.indent = null;
-+ // Flow level.
-+ this.flowLevel = 0;
-+ // Contexts.
-+ mappingContext = false;
-+ simpleKeyContext = false;
-+
-+ //
-+ // Characteristics of the last emitted character:
-+ // - current position.
-+ // - is it a whitespace?
-+ // - is it an indention character
-+ // (indentation space, '-', '?', or ':')?
-+ column = 0;
-+ whitespace = true;
-+ indention = true;
-+
-+ // Whether the document requires an explicit document indicator
-+ openEnded = false;
-+
-+ // Formatting details.
-+ this.canonical = opts.isCanonical();
-+ this.prettyFlow = opts.isPrettyFlow();
-+ this.allowUnicode = opts.isAllowUnicode();
-+ this.bestIndent = 2;
-+ if ((opts.getIndent() > MIN_INDENT) && (opts.getIndent() < MAX_INDENT)) {
-+ this.bestIndent = opts.getIndent();
-+ }
-+ this.indicatorIndent = opts.getIndicatorIndent();
-+ this.indentWithIndicator = opts.getIndentWithIndicator();
-+ this.bestWidth = 80;
-+ if (opts.getWidth() > this.bestIndent * 2) {
-+ this.bestWidth = opts.getWidth();
-+ }
-+ this.bestLineBreak = opts.getLineBreak().getString().toCharArray();
-+ this.splitLines = opts.getSplitLines();
-+ this.maxSimpleKeyLength = opts.getMaxSimpleKeyLength();
-+ this.emitComments = opts.isProcessComments();
-+
-+ // Tag prefixes.
-+ this.tagPrefixes = new LinkedHashMap<String, String>();
-+
-+ // Prepared anchor and tag.
-+ this.preparedAnchor = null;
-+ this.preparedTag = null;
-+
-+ // Scalar analysis and style.
-+ this.analysis = null;
-+ this.style = null;
-+
-+ // Comment processing
-+ this.blockCommentsCollector = new CommentEventsCollector(events,
-+ CommentType.BLANK_LINE, CommentType.BLOCK);
-+ this.inlineCommentsCollector = new CommentEventsCollector(events,
-+ CommentType.IN_LINE);
-+ }
-+
-+ public void emit(Event event) throws IOException {
-+ this.events.add(event);
-+ while (!needMoreEvents()) {
-+ this.event = this.events.poll();
-+ this.state.expect();
-+ this.event = null;
-+ }
-+ }
-+
-+ // In some cases, we wait for a few next events before emitting.
-+
-+ private boolean needMoreEvents() {
-+ if (events.isEmpty()) {
-+ return true;
-+ }
-+
-+ Iterator<Event> iter = events.iterator();
-+ Event event = iter.next(); // FIXME why without check ???
-+ while(event instanceof CommentEvent) {
-+ if (!iter.hasNext()) {
-+ return true;
-+ }
-+ event = iter.next();
-+ }
-+
-+ if (event instanceof DocumentStartEvent) {
-+ return needEvents(iter, 1);
-+ } else if (event instanceof SequenceStartEvent) {
-+ return needEvents(iter, 2);
-+ } else if (event instanceof MappingStartEvent) {
-+ return needEvents(iter, 3);
-+ } else if (event instanceof StreamStartEvent) {
-+ return needEvents(iter, 2);
-+ } else if (event instanceof StreamEndEvent) {
-+ return false;
-+ } else if (emitComments) {
-+ return needEvents(iter, 1);
-+ }
-+ return false;
-+ }
-+
-+ private boolean needEvents(Iterator<Event> iter, int count) {
-+ int level = 0;
-+ int actualCount = 0;
-+ while (iter.hasNext()) {
-+ Event event = iter.next();
-+ if (event instanceof CommentEvent) {
-+ continue;
-+ }
-+ actualCount++;
-+ if (event instanceof DocumentStartEvent || event instanceof CollectionStartEvent) {
-+ level++;
-+ } else if (event instanceof DocumentEndEvent || event instanceof CollectionEndEvent) {
-+ level--;
-+ } else if (event instanceof StreamEndEvent) {
-+ level = -1;
-+ }
-+ if (level < 0) {
-+ return false;
-+ }
-+ }
-+ return actualCount < count;
-+ }
-+
-+ private void increaseIndent(boolean flow, boolean indentless) {
-+ indents.push(indent);
-+ if (indent == null) {
-+ if (flow) {
-+ indent = bestIndent;
-+ } else {
-+ indent = 0;
-+ }
-+ } else if (!indentless) {
-+ this.indent += bestIndent;
-+ }
-+ }
-+
-+ // States
-+
-+ // Stream handlers.
-+
-+ private class ExpectStreamStart implements EmitterState {
-+ public void expect() throws IOException {
-+ if (event instanceof StreamStartEvent) {
-+ writeStreamStart();
-+ state = new ExpectFirstDocumentStart();
-+ } else {
-+ throw new EmitterException("expected StreamStartEvent, but got " + event);
-+ }
-+ }
-+ }
-+
-+ private class ExpectNothing implements EmitterState {
-+ public void expect() throws IOException {
-+ throw new EmitterException("expecting nothing, but got " + event);
-+ }
-+ }
-+
-+ // Document handlers.
-+
-+ private class ExpectFirstDocumentStart implements EmitterState {
-+ public void expect() throws IOException {
-+ new ExpectDocumentStart(true).expect();
-+ }
-+ }
-+
-+ private class ExpectDocumentStart implements EmitterState {
-+ private final boolean first;
-+
-+ public ExpectDocumentStart(boolean first) {
-+ this.first = first;
-+ }
-+
-+ public void expect() throws IOException {
-+ if (event instanceof DocumentStartEvent) {
-+ DocumentStartEvent ev = (DocumentStartEvent) event;
-+ if ((ev.getVersion() != null || ev.getTags() != null) && openEnded) {
-+ writeIndicator("...", true, false, false);
-+ writeIndent();
-+ }
-+ if (ev.getVersion() != null) {
-+ String versionText = prepareVersion(ev.getVersion());
-+ writeVersionDirective(versionText);
-+ }
-+ tagPrefixes = new LinkedHashMap<String, String>(DEFAULT_TAG_PREFIXES);
-+ if (ev.getTags() != null) {
-+ Set<String> handles = new TreeSet<String>(ev.getTags().keySet());
-+ for (String handle : handles) {
-+ String prefix = ev.getTags().get(handle);
-+ tagPrefixes.put(prefix, handle);
-+ String handleText = prepareTagHandle(handle);
-+ String prefixText = prepareTagPrefix(prefix);
-+ writeTagDirective(handleText, prefixText);
-+ }
-+ }
-+ boolean implicit = first && !ev.getExplicit() && !canonical
-+ && ev.getVersion() == null
-+ && (ev.getTags() == null || ev.getTags().isEmpty())
-+ && !checkEmptyDocument();
-+ if (!implicit) {
-+ writeIndent();
-+ writeIndicator("---", true, false, false);
-+ if (canonical) {
-+ writeIndent();
-+ }
-+ }
-+ state = new ExpectDocumentRoot();
-+ } else if (event instanceof StreamEndEvent) {
-+ writeStreamEnd();
-+ state = new ExpectNothing();
-+ } else if (event instanceof CommentEvent) {
-+ blockCommentsCollector.collectEvents(event);
-+ writeBlockComment();
-+ // state = state; remains unchanged
-+ } else {
-+ throw new EmitterException("expected DocumentStartEvent, but got " + event);
-+ }
-+ }
-+ }
-+
-+ private class ExpectDocumentEnd implements EmitterState {
-+ public void expect() throws IOException {
-+ event = blockCommentsCollector.collectEventsAndPoll(event);
-+ writeBlockComment();
-+ if (event instanceof DocumentEndEvent) {
-+ writeIndent();
-+ if (((DocumentEndEvent) event).getExplicit()) {
-+ writeIndicator("...", true, false, false);
-+ writeIndent();
-+ }
-+ flushStream();
-+ state = new ExpectDocumentStart(false);
-+ } else {
-+ throw new EmitterException("expected DocumentEndEvent, but got " + event);
-+ }
-+ }
-+ }
-+
-+ private class ExpectDocumentRoot implements EmitterState {
-+ public void expect() throws IOException {
-+ event = blockCommentsCollector.collectEventsAndPoll(event);
-+ if (!blockCommentsCollector.isEmpty()) {
-+ writeBlockComment();
-+ if (event instanceof DocumentEndEvent) {
-+ new ExpectDocumentEnd().expect();
-+ return;
-+ }
-+ }
-+ states.push(new ExpectDocumentEnd());
-+ expectNode(true, false, false);
-+ }
-+ }
-+
-+ // Node handlers.
-+
-+ private void expectNode(boolean root, boolean mapping, boolean simpleKey) throws IOException {
-+ rootContext = root;
-+ mappingContext = mapping;
-+ simpleKeyContext = simpleKey;
-+ if (event instanceof AliasEvent) {
-+ expectAlias();
-+ } else if (event instanceof ScalarEvent || event instanceof CollectionStartEvent) {
-+ processAnchor("&");
-+ processTag();
-+ if (event instanceof ScalarEvent) {
-+ expectScalar();
-+ } else if (event instanceof SequenceStartEvent) {
-+ if (flowLevel != 0 || canonical || ((SequenceStartEvent) event).isFlow()
-+ || checkEmptySequence()) {
-+ expectFlowSequence();
-+ } else {
-+ expectBlockSequence();
-+ }
-+ } else {// MappingStartEvent
-+ if (flowLevel != 0 || canonical || ((MappingStartEvent) event).isFlow()
-+ || checkEmptyMapping()) {
-+ expectFlowMapping();
-+ } else {
-+ expectBlockMapping();
-+ }
-+ }
-+ } else {
-+ throw new EmitterException("expected NodeEvent, but got " + event);
-+ }
-+ }
-+
-+ private void expectAlias() throws IOException {
-+ if (!(event instanceof AliasEvent)) {
-+ throw new EmitterException("Alias must be provided");
-+ }
-+ processAnchor("*");
-+ state = states.pop();
-+ }
-+
-+ private void expectScalar() throws IOException {
-+ increaseIndent(true, false);
-+ processScalar();
-+ indent = indents.pop();
-+ state = states.pop();
-+ }
-+
-+ // Flow sequence handlers.
-+
-+ private void expectFlowSequence() throws IOException {
-+ writeIndicator("[", true, true, false);
-+ flowLevel++;
-+ increaseIndent(true, false);
-+ if (prettyFlow) {
-+ writeIndent();
-+ }
-+ state = new ExpectFirstFlowSequenceItem();
-+ }
-+
-+ private class ExpectFirstFlowSequenceItem implements EmitterState {
-+ public void expect() throws IOException {
-+ if (event instanceof SequenceEndEvent) {
-+ indent = indents.pop();
-+ flowLevel--;
-+ writeIndicator("]", false, false, false);
-+ inlineCommentsCollector.collectEvents();
-+ writeInlineComments();
-+ state = states.pop();
-+ } else if (event instanceof CommentEvent) {
-+ blockCommentsCollector.collectEvents(event);
-+ writeBlockComment();
-+ } else {
-+ if (canonical || (column > bestWidth && splitLines) || prettyFlow) {
-+ writeIndent();
-+ }
-+ states.push(new ExpectFlowSequenceItem());
-+ expectNode(false, false, false);
-+ event = inlineCommentsCollector.collectEvents(event);
-+ writeInlineComments();
-+ }
-+ }
-+ }
-+
-+ private class ExpectFlowSequenceItem implements EmitterState {
-+ public void expect() throws IOException {
-+ if (event instanceof SequenceEndEvent) {
-+ indent = indents.pop();
-+ flowLevel--;
-+ if (canonical) {
-+ writeIndicator(",", false, false, false);
-+ writeIndent();
-+ } else if (prettyFlow) {
-+ writeIndent();
-+ }
-+ writeIndicator("]", false, false, false);
-+ inlineCommentsCollector.collectEvents();
-+ writeInlineComments();
-+ if (prettyFlow) {
-+ writeIndent();
-+ }
-+ state = states.pop();
-+ } else if (event instanceof CommentEvent) {
-+ event = blockCommentsCollector.collectEvents(event);
-+ } else {
-+ writeIndicator(",", false, false, false);
-+ writeBlockComment();
-+ if (canonical || (column > bestWidth && splitLines) || prettyFlow) {
-+ writeIndent();
-+ }
-+ states.push(new ExpectFlowSequenceItem());
-+ expectNode(false, false, false);
-+ event = inlineCommentsCollector.collectEvents(event);
-+ writeInlineComments();
-+ }
-+ }
-+ }
-+
-+ // Flow mapping handlers.
-+
-+ private void expectFlowMapping() throws IOException {
-+ writeIndicator("{", true, true, false);
-+ flowLevel++;
-+ increaseIndent(true, false);
-+ if (prettyFlow) {
-+ writeIndent();
-+ }
-+ state = new ExpectFirstFlowMappingKey();
-+ }
-+
-+ private class ExpectFirstFlowMappingKey implements EmitterState {
-+ public void expect() throws IOException {
-+ event = blockCommentsCollector.collectEventsAndPoll(event);
-+ writeBlockComment();
-+ if (event instanceof MappingEndEvent) {
-+ indent = indents.pop();
-+ flowLevel--;
-+ writeIndicator("}", false, false, false);
-+ inlineCommentsCollector.collectEvents();
-+ writeInlineComments();
-+ state = states.pop();
-+ } else {
-+ if (canonical || (column > bestWidth && splitLines) || prettyFlow) {
-+ writeIndent();
-+ }
-+ if (!canonical && checkSimpleKey()) {
-+ states.push(new ExpectFlowMappingSimpleValue());
-+ expectNode(false, true, true);
-+ } else {
-+ writeIndicator("?", true, false, false);
-+ states.push(new ExpectFlowMappingValue());
-+ expectNode(false, true, false);
-+ }
-+ }
-+ }
-+ }
-+
-+ private class ExpectFlowMappingKey implements EmitterState {
-+ public void expect() throws IOException {
-+ if (event instanceof MappingEndEvent) {
-+ indent = indents.pop();
-+ flowLevel--;
-+ if (canonical) {
-+ writeIndicator(",", false, false, false);
-+ writeIndent();
-+ }
-+ if (prettyFlow) {
-+ writeIndent();
-+ }
-+ writeIndicator("}", false, false, false);
-+ inlineCommentsCollector.collectEvents();
-+ writeInlineComments();
-+ state = states.pop();
-+ } else {
-+ writeIndicator(",", false, false, false);
-+ event = blockCommentsCollector.collectEventsAndPoll(event);
-+ writeBlockComment();
-+ if (canonical || (column > bestWidth && splitLines) || prettyFlow) {
-+ writeIndent();
-+ }
-+ if (!canonical && checkSimpleKey()) {
-+ states.push(new ExpectFlowMappingSimpleValue());
-+ expectNode(false, true, true);
-+ } else {
-+ writeIndicator("?", true, false, false);
-+ states.push(new ExpectFlowMappingValue());
-+ expectNode(false, true, false);
-+ }
-+ }
-+ }
-+ }
-+
-+ private class ExpectFlowMappingSimpleValue implements EmitterState {
-+ public void expect() throws IOException {
-+ writeIndicator(":", false, false, false);
-+ event = inlineCommentsCollector.collectEventsAndPoll(event);
-+ writeInlineComments();
-+ states.push(new ExpectFlowMappingKey());
-+ expectNode(false, true, false);
-+ inlineCommentsCollector.collectEvents(event);
-+ writeInlineComments();
-+ }
-+ }
-+
-+ private class ExpectFlowMappingValue implements EmitterState {
-+ public void expect() throws IOException {
-+ if (canonical || (column > bestWidth) || prettyFlow) {
-+ writeIndent();
-+ }
-+ writeIndicator(":", true, false, false);
-+ event = inlineCommentsCollector.collectEventsAndPoll(event);
-+ writeInlineComments();
-+ states.push(new ExpectFlowMappingKey());
-+ expectNode(false, true, false);
-+ inlineCommentsCollector.collectEvents(event);
-+ writeInlineComments();
-+ }
-+ }
-+
-+ // Block sequence handlers.
-+
-+ private void expectBlockSequence() throws IOException {
-+ boolean indentless = mappingContext && !indention;
-+ increaseIndent(false, indentless);
-+ state = new ExpectFirstBlockSequenceItem();
-+ }
-+
-+ private class ExpectFirstBlockSequenceItem implements EmitterState {
-+ public void expect() throws IOException {
-+ new ExpectBlockSequenceItem(true).expect();
-+ }
-+ }
-+
-+ private class ExpectBlockSequenceItem implements EmitterState {
-+ private final boolean first;
-+
-+ public ExpectBlockSequenceItem(boolean first) {
-+ this.first = first;
-+ }
-+
-+ public void expect() throws IOException {
-+ if (!this.first && event instanceof SequenceEndEvent) {
-+ indent = indents.pop();
-+ state = states.pop();
-+ } else if( event instanceof CommentEvent) {
-+ blockCommentsCollector.collectEvents(event);
-+ } else {
-+ writeIndent();
-+ if (!indentWithIndicator || this.first) {
-+ writeWhitespace(indicatorIndent);
-+ }
-+ writeIndicator("-", true, false, true);
-+ if (indentWithIndicator && this.first) {
-+ indent += indicatorIndent;
-+ }
-+ if (!blockCommentsCollector.isEmpty()) {
-+ increaseIndent(false, false);
-+ writeBlockComment();
-+ if(event instanceof ScalarEvent) {
-+ analysis = analyzeScalar(((ScalarEvent)event).getValue());
-+ if (!analysis.isEmpty()) {
-+ writeIndent();
-+ }
-+ }
-+ indent = indents.pop();
-+ }
-+ states.push(new ExpectBlockSequenceItem(false));
-+ expectNode(false, false, false);
-+ inlineCommentsCollector.collectEvents();
-+ writeInlineComments();
-+ }
-+ }
-+ }
-+
-+ // Block mapping handlers.
-+ private void expectBlockMapping() throws IOException {
-+ increaseIndent(false, false);
-+ state = new ExpectFirstBlockMappingKey();
-+ }
-+
-+ private class ExpectFirstBlockMappingKey implements EmitterState {
-+ public void expect() throws IOException {
-+ new ExpectBlockMappingKey(true).expect();
-+ }
-+ }
-+
-+ private class ExpectBlockMappingKey implements EmitterState {
-+ private final boolean first;
-+
-+ public ExpectBlockMappingKey(boolean first) {
-+ this.first = first;
-+ }
-+
-+ public void expect() throws IOException {
-+ event = blockCommentsCollector.collectEventsAndPoll(event);
-+ writeBlockComment();
-+ if (!this.first && event instanceof MappingEndEvent) {
-+ indent = indents.pop();
-+ state = states.pop();
-+ } else {
-+ writeIndent();
-+ if (checkSimpleKey()) {
-+ states.push(new ExpectBlockMappingSimpleValue());
-+ expectNode(false, true, true);
-+ } else {
-+ writeIndicator("?", true, false, true);
-+ states.push(new ExpectBlockMappingValue());
-+ expectNode(false, true, false);
-+ }
-+ }
-+ }
-+ }
-+
-+ private boolean isFoldedOrLiteral(Event event) {
-+ if(!event.is(ID.Scalar)) {
-+ return false;
-+ }
-+ ScalarEvent scalarEvent = (ScalarEvent) event;
-+ ScalarStyle style = scalarEvent.getScalarStyle();
-+ return style == ScalarStyle.FOLDED || style == ScalarStyle.LITERAL;
-+ }
-+
-+ private class ExpectBlockMappingSimpleValue implements EmitterState {
-+ public void expect() throws IOException {
-+ writeIndicator(":", false, false, false);
-+ event = inlineCommentsCollector.collectEventsAndPoll(event);
-+ if(!isFoldedOrLiteral(event)) {
-+ if(writeInlineComments()) {
-+ increaseIndent(true, false);
-+ writeIndent();
-+ indent = indents.pop();
-+ }
-+ }
-+ event = blockCommentsCollector.collectEventsAndPoll(event);
-+ if(!blockCommentsCollector.isEmpty()) {
-+ increaseIndent(true, false);
-+ writeBlockComment();
-+ writeIndent();
-+ indent = indents.pop();
-+ }
-+ states.push(new ExpectBlockMappingKey(false));
-+ expectNode(false, true, false);
-+ inlineCommentsCollector.collectEvents();
-+ writeInlineComments();
-+ }
-+ }
-+
-+ private class ExpectBlockMappingValue implements EmitterState {
-+ public void expect() throws IOException {
-+ writeIndent();
-+ writeIndicator(":", true, false, true);
-+ event = inlineCommentsCollector.collectEventsAndPoll(event);
-+ writeInlineComments();
-+ event = blockCommentsCollector.collectEventsAndPoll(event);
-+ writeBlockComment();
-+ states.push(new ExpectBlockMappingKey(false));
-+ expectNode(false, true, false);
-+ inlineCommentsCollector.collectEvents(event);
-+ writeInlineComments();
-+ }
-+ }
-+
-+ // Checkers.
-+
-+ private boolean checkEmptySequence() {
-+ return event instanceof SequenceStartEvent && !events.isEmpty() && events.peek() instanceof SequenceEndEvent;
-+ }
-+
-+ private boolean checkEmptyMapping() {
-+ return event instanceof MappingStartEvent && !events.isEmpty() && events.peek() instanceof MappingEndEvent;
-+ }
-+
-+ private boolean checkEmptyDocument() {
-+ if (!(event instanceof DocumentStartEvent) || events.isEmpty()) {
-+ return false;
-+ }
-+ Event event = events.peek();
-+ if (event instanceof ScalarEvent) {
-+ ScalarEvent e = (ScalarEvent) event;
-+ return e.getAnchor() == null && e.getTag() == null && e.getImplicit() != null && e
-+ .getValue().length() == 0;
-+ }
-+ return false;
-+ }
-+
-+ private boolean checkSimpleKey() {
-+ int length = 0;
-+ if (event instanceof NodeEvent && ((NodeEvent) event).getAnchor() != null) {
-+ if (preparedAnchor == null) {
-+ preparedAnchor = prepareAnchor(((NodeEvent) event).getAnchor());
-+ }
-+ length += preparedAnchor.length();
-+ }
-+ String tag = null;
-+ if (event instanceof ScalarEvent) {
-+ tag = ((ScalarEvent) event).getTag();
-+ } else if (event instanceof CollectionStartEvent) {
-+ tag = ((CollectionStartEvent) event).getTag();
-+ }
-+ if (tag != null) {
-+ if (preparedTag == null) {
-+ preparedTag = prepareTag(tag);
-+ }
-+ length += preparedTag.length();
-+ }
-+ if (event instanceof ScalarEvent) {
-+ if (analysis == null) {
-+ analysis = analyzeScalar(((ScalarEvent) event).getValue());
-+ }
-+ length += analysis.getScalar().length();
-+ }
-+ return length < maxSimpleKeyLength && (event instanceof AliasEvent
-+ || (event instanceof ScalarEvent && !analysis.isEmpty() && !analysis.isMultiline())
-+ || checkEmptySequence() || checkEmptyMapping());
-+ }
-+
-+ // Anchor, Tag, and Scalar processors.
-+
-+ private void processAnchor(String indicator) throws IOException {
-+ NodeEvent ev = (NodeEvent) event;
-+ if (ev.getAnchor() == null) {
-+ preparedAnchor = null;
-+ return;
-+ }
-+ if (preparedAnchor == null) {
-+ preparedAnchor = prepareAnchor(ev.getAnchor());
-+ }
-+ writeIndicator(indicator + preparedAnchor, true, false, false);
-+ preparedAnchor = null;
-+ }
-+
-+ private void processTag() throws IOException {
-+ String tag = null;
-+ if (event instanceof ScalarEvent) {
-+ ScalarEvent ev = (ScalarEvent) event;
-+ tag = ev.getTag();
-+ if (style == null) {
-+ style = chooseScalarStyle();
-+ }
-+ if ((!canonical || tag == null) && ((style == null && ev.getImplicit()
-+ .canOmitTagInPlainScalar()) || (style != null && ev.getImplicit()
-+ .canOmitTagInNonPlainScalar()))) {
-+ preparedTag = null;
-+ return;
-+ }
-+ if (ev.getImplicit().canOmitTagInPlainScalar() && tag == null) {
-+ tag = "!";
-+ preparedTag = null;
-+ }
-+ } else {
-+ CollectionStartEvent ev = (CollectionStartEvent) event;
-+ tag = ev.getTag();
-+ if ((!canonical || tag == null) && ev.getImplicit()) {
-+ preparedTag = null;
-+ return;
-+ }
-+ }
-+ if (tag == null) {
-+ throw new EmitterException("tag is not specified");
-+ }
-+ if (preparedTag == null) {
-+ preparedTag = prepareTag(tag);
-+ }
-+ writeIndicator(preparedTag, true, false, false);
-+ preparedTag = null;
-+ }
-+
-+ private DumperOptions.ScalarStyle chooseScalarStyle() {
-+ ScalarEvent ev = (ScalarEvent) event;
-+ if (analysis == null) {
-+ analysis = analyzeScalar(ev.getValue());
-+ }
-+ if (!ev.isPlain() && ev.getScalarStyle() == DumperOptions.ScalarStyle.DOUBLE_QUOTED || this.canonical) {
-+ return DumperOptions.ScalarStyle.DOUBLE_QUOTED;
-+ }
-+ if (ev.isPlain() && ev.getImplicit().canOmitTagInPlainScalar()) {
-+ if (!(simpleKeyContext && (analysis.isEmpty() || analysis.isMultiline()))
-+ && ((flowLevel != 0 && analysis.isAllowFlowPlain()) || (flowLevel == 0 && analysis.isAllowBlockPlain()))) {
-+ return null;
-+ }
-+ }
-+ if (!ev.isPlain() && (ev.getScalarStyle() == DumperOptions.ScalarStyle.LITERAL || ev.getScalarStyle() == DumperOptions.ScalarStyle.FOLDED)) {
-+ if (flowLevel == 0 && !simpleKeyContext && analysis.isAllowBlock()) {
-+ return ev.getScalarStyle();
-+ }
-+ }
-+ if (ev.isPlain() || ev.getScalarStyle() == DumperOptions.ScalarStyle.SINGLE_QUOTED) {
-+ if (analysis.isAllowSingleQuoted() && !(simpleKeyContext && analysis.isMultiline())) {
-+ return DumperOptions.ScalarStyle.SINGLE_QUOTED;
-+ }
-+ }
-+ return DumperOptions.ScalarStyle.DOUBLE_QUOTED;
-+ }
-+
-+ private void processScalar() throws IOException {
-+ ScalarEvent ev = (ScalarEvent) event;
-+ if (analysis == null) {
-+ analysis = analyzeScalar(ev.getValue());
-+ }
-+ if (style == null) {
-+ style = chooseScalarStyle();
-+ }
-+ boolean split = !simpleKeyContext && splitLines;
-+ if (style == null) {
-+ writePlain(analysis.getScalar(), split);
-+ } else {
-+ switch (style) {
-+ case DOUBLE_QUOTED:
-+ writeDoubleQuoted(analysis.getScalar(), split);
-+ break;
-+ case SINGLE_QUOTED:
-+ writeSingleQuoted(analysis.getScalar(), split);
-+ break;
-+ case FOLDED:
-+ writeFolded(analysis.getScalar(), split);
-+ break;
-+ case LITERAL:
-+ writeLiteral(analysis.getScalar());
-+ break;
-+ default:
-+ throw new YAMLException("Unexpected style: " + style);
-+ }
-+ }
-+ analysis = null;
-+ style = null;
-+ }
-+
-+ // Analyzers.
-+
-+ private String prepareVersion(Version version) {
-+ if (version.major() != 1) {
-+ throw new EmitterException("unsupported YAML version: " + version);
-+ }
-+ return version.getRepresentation();
-+ }
-+
-+ private final static Pattern HANDLE_FORMAT = Pattern.compile("^![-_\\w]*!$");
-+
-+ private String prepareTagHandle(String handle) {
-+ if (handle.length() == 0) {
-+ throw new EmitterException("tag handle must not be empty");
-+ } else if (handle.charAt(0) != '!' || handle.charAt(handle.length() - 1) != '!') {
-+ throw new EmitterException("tag handle must start and end with '!': " + handle);
-+ } else if (!"!".equals(handle) && !HANDLE_FORMAT.matcher(handle).matches()) {
-+ throw new EmitterException("invalid character in the tag handle: " + handle);
-+ }
-+ return handle;
-+ }
-+
-+ private String prepareTagPrefix(String prefix) {
-+ if (prefix.length() == 0) {
-+ throw new EmitterException("tag prefix must not be empty");
-+ }
-+ StringBuilder chunks = new StringBuilder();
-+ int start = 0;
-+ int end = 0;
-+ if (prefix.charAt(0) == '!') {
-+ end = 1;
-+ }
-+ while (end < prefix.length()) {
-+ end++;
-+ }
-+ if (start < end) {
-+ chunks.append(prefix, start, end);
-+ }
-+ return chunks.toString();
-+ }
-+
-+ private String prepareTag(String tag) {
-+ if (tag.length() == 0) {
-+ throw new EmitterException("tag must not be empty");
-+ }
-+ if ("!".equals(tag)) {
-+ return tag;
-+ }
-+ String handle = null;
-+ String suffix = tag;
-+ // shall the tag prefixes be sorted as in PyYAML?
-+ for (String prefix : tagPrefixes.keySet()) {
-+ if (tag.startsWith(prefix) && ("!".equals(prefix) || prefix.length() < tag.length())) {
-+ handle = prefix;
-+ }
-+ }
-+ if (handle != null) {
-+ suffix = tag.substring(handle.length());
-+ handle = tagPrefixes.get(handle);
-+ }
-+
-+ int end = suffix.length();
-+ String suffixText = end > 0 ? suffix.substring(0, end) : "";
-+
-+ if (handle != null) {
-+ return handle + suffixText;
-+ }
-+ return "!<" + suffixText + ">";
-+ }
-+
-+ static String prepareAnchor(String anchor) {
-+ if (anchor.length() == 0) {
-+ throw new EmitterException("anchor must not be empty");
-+ }
-+ for (Character invalid : INVALID_ANCHOR) {
-+ if (anchor.indexOf(invalid) > -1) {
-+ throw new EmitterException("Invalid character '" + invalid + "' in the anchor: " + anchor);
-+ }
-+ }
-+ Matcher matcher = SPACES_PATTERN.matcher(anchor);
-+ if (matcher.find()) {
-+ throw new EmitterException("Anchor may not contain spaces: " + anchor);
-+ }
-+ return anchor;
-+ }
-+
-+ private ScalarAnalysis analyzeScalar(String scalar) {
-+ // Empty scalar is a special case.
-+ if (scalar.length() == 0) {
-+ return new ScalarAnalysis(scalar, true, false, false, true, true, false);
-+ }
-+ // Indicators and special characters.
-+ boolean blockIndicators = false;
-+ boolean flowIndicators = false;
-+ boolean lineBreaks = false;
-+ boolean specialCharacters = false;
-+
-+ // Important whitespace combinations.
-+ boolean leadingSpace = false;
-+ boolean leadingBreak = false;
-+ boolean trailingSpace = false;
-+ boolean trailingBreak = false;
-+ boolean breakSpace = false;
-+ boolean spaceBreak = false;
-+
-+ // Check document indicators.
-+ if (scalar.startsWith("---") || scalar.startsWith("...")) {
-+ blockIndicators = true;
-+ flowIndicators = true;
-+ }
-+ // First character or preceded by a whitespace.
-+ boolean preceededByWhitespace = true;
-+ boolean followedByWhitespace = scalar.length() == 1 || Constant.NULL_BL_T_LINEBR.has(scalar.codePointAt(1));
-+ // The previous character is a space.
-+ boolean previousSpace = false;
-+
-+ // The previous character is a break.
-+ boolean previousBreak = false;
-+
-+ int index = 0;
-+
-+ while (index < scalar.length()) {
-+ int c = scalar.codePointAt(index);
-+ // Check for indicators.
-+ if (index == 0) {
-+ // Leading indicators are special characters.
-+ if ("#,[]{}&*!|>'\"%@`".indexOf(c) != -1) {
-+ flowIndicators = true;
-+ blockIndicators = true;
-+ }
-+ if (c == '?' || c == ':') {
-+ flowIndicators = true;
-+ if (followedByWhitespace) {
-+ blockIndicators = true;
-+ }
-+ }
-+ if (c == '-' && followedByWhitespace) {
-+ flowIndicators = true;
-+ blockIndicators = true;
-+ }
-+ } else {
-+ // Some indicators cannot appear within a scalar as well.
-+ if (",?[]{}".indexOf(c) != -1) {
-+ flowIndicators = true;
-+ }
-+ if (c == ':') {
-+ flowIndicators = true;
-+ if (followedByWhitespace) {
-+ blockIndicators = true;
-+ }
-+ }
-+ if (c == '#' && preceededByWhitespace) {
-+ flowIndicators = true;
-+ blockIndicators = true;
-+ }
-+ }
-+ // Check for line breaks, special, and unicode characters.
-+ boolean isLineBreak = Constant.LINEBR.has(c);
-+ if (isLineBreak) {
-+ lineBreaks = true;
-+ }
-+ if (!(c == '\n' || (0x20 <= c && c <= 0x7E))) {
-+ if (c == 0x85 || (c >= 0xA0 && c <= 0xD7FF)
-+ || (c >= 0xE000 && c <= 0xFFFD)
-+ || (c >= 0x10000 && c <= 0x10FFFF)) {
-+ // unicode is used
-+ if (!this.allowUnicode) {
-+ specialCharacters = true;
-+ }
-+ } else {
-+ specialCharacters = true;
-+ }
-+ }
-+ // Detect important whitespace combinations.
-+ if (c == ' ') {
-+ if (index == 0) {
-+ leadingSpace = true;
-+ }
-+ if (index == scalar.length() - 1) {
-+ trailingSpace = true;
-+ }
-+ if (previousBreak) {
-+ breakSpace = true;
-+ }
-+ previousSpace = true;
-+ previousBreak = false;
-+ } else if (isLineBreak) {
-+ if (index == 0) {
-+ leadingBreak = true;
-+ }
-+ if (index == scalar.length() - 1) {
-+ trailingBreak = true;
-+ }
-+ if (previousSpace) {
-+ spaceBreak = true;
-+ }
-+ previousSpace = false;
-+ previousBreak = true;
-+ } else {
-+ previousSpace = false;
-+ previousBreak = false;
-+ }
-+
-+ // Prepare for the next character.
-+ index += Character.charCount(c);
-+ preceededByWhitespace = Constant.NULL_BL_T.has(c) || isLineBreak;
-+ followedByWhitespace = true;
-+ if (index + 1 < scalar.length()) {
-+ int nextIndex = index + Character.charCount(scalar.codePointAt(index));
-+ if (nextIndex < scalar.length()) {
-+ followedByWhitespace = (Constant.NULL_BL_T.has(scalar.codePointAt(nextIndex))) || isLineBreak;
-+ }
-+ }
-+ }
-+ // Let's decide what styles are allowed.
-+ boolean allowFlowPlain = true;
-+ boolean allowBlockPlain = true;
-+ boolean allowSingleQuoted = true;
-+ boolean allowBlock = true;
-+ // Leading and trailing whitespaces are bad for plain scalars.
-+ if (leadingSpace || leadingBreak || trailingSpace || trailingBreak) {
-+ allowFlowPlain = allowBlockPlain = false;
-+ }
-+ // We do not permit trailing spaces for block scalars.
-+ if (trailingSpace) {
-+ allowBlock = false;
-+ }
-+ // Spaces at the beginning of a new line are only acceptable for block
-+ // scalars.
-+ if (breakSpace) {
-+ allowFlowPlain = allowBlockPlain = allowSingleQuoted = false;
-+ }
-+ // Spaces followed by breaks, as well as special character are only
-+ // allowed for double quoted scalars.
-+ if (spaceBreak || specialCharacters) {
-+ allowFlowPlain = allowBlockPlain = allowSingleQuoted = allowBlock = false;
-+ }
-+ // Although the plain scalar writer supports breaks, we never emit
-+ // multiline plain scalars in the flow context.
-+ if (lineBreaks) {
-+ allowFlowPlain = false;
-+ }
-+ // Flow indicators are forbidden for flow plain scalars.
-+ if (flowIndicators) {
-+ allowFlowPlain = false;
-+ }
-+ // Block indicators are forbidden for block plain scalars.
-+ if (blockIndicators) {
-+ allowBlockPlain = false;
-+ }
-+
-+ return new ScalarAnalysis(scalar, false, lineBreaks, allowFlowPlain, allowBlockPlain,
-+ allowSingleQuoted, allowBlock);
-+ }
-+
-+ // Writers.
-+
-+ void flushStream() throws IOException {
-+ stream.flush();
-+ }
-+
-+ void writeStreamStart() {
-+ // BOM is written by Writer.
-+ }
-+
-+ void writeStreamEnd() throws IOException {
-+ flushStream();
-+ }
-+
-+ void writeIndicator(String indicator, boolean needWhitespace, boolean whitespace,
-+ boolean indentation) throws IOException {
-+ if (!this.whitespace && needWhitespace) {
-+ this.column++;
-+ stream.write(SPACE);
-+ }
-+ this.whitespace = whitespace;
-+ this.indention = this.indention && indentation;
-+ this.column += indicator.length();
-+ openEnded = false;
-+ stream.write(indicator);
-+ }
-+
-+ void writeIndent() throws IOException {
-+ int indent;
-+ if (this.indent != null) {
-+ indent = this.indent;
-+ } else {
-+ indent = 0;
-+ }
-+
-+ if (!this.indention || this.column > indent || (this.column == indent && !this.whitespace)) {
-+ writeLineBreak(null);
-+ }
-+
-+ writeWhitespace(indent - this.column);
-+ }
-+
-+ private void writeWhitespace(int length) throws IOException {
-+ if (length <= 0) {
-+ return;
-+ }
-+ this.whitespace = true;
-+ char[] data = new char[length];
-+ for (int i = 0; i < data.length; i++) {
-+ data[i] = ' ';
-+ }
-+ this.column += length;
-+ stream.write(data);
-+ }
-+
-+ private void writeLineBreak(String data) throws IOException {
-+ this.whitespace = true;
-+ this.indention = true;
-+ this.column = 0;
-+ if (data == null) {
-+ stream.write(this.bestLineBreak);
-+ } else {
-+ stream.write(data);
-+ }
-+ }
-+
-+ void writeVersionDirective(String versionText) throws IOException {
-+ stream.write("%YAML ");
-+ stream.write(versionText);
-+ writeLineBreak(null);
-+ }
-+
-+ void writeTagDirective(String handleText, String prefixText) throws IOException {
-+ // XXX: not sure 4 invocations better then StringBuilders created by str
-+ // + str
-+ stream.write("%TAG ");
-+ stream.write(handleText);
-+ stream.write(SPACE);
-+ stream.write(prefixText);
-+ writeLineBreak(null);
-+ }
-+
-+ // Scalar streams.
-+ private void writeSingleQuoted(String text, boolean split) throws IOException {
-+ writeIndicator("'", true, false, false);
-+ boolean spaces = false;
-+ boolean breaks = false;
-+ int start = 0, end = 0;
-+ char ch;
-+ while (end <= text.length()) {
-+ ch = 0;
-+ if (end < text.length()) {
-+ ch = text.charAt(end);
-+ }
-+ if (spaces) {
-+ if (ch == 0 || ch != ' ') {
-+ if (start + 1 == end && this.column > this.bestWidth && split && start != 0
-+ && end != text.length()) {
-+ writeIndent();
-+ } else {
-+ int len = end - start;
-+ this.column += len;
-+ stream.write(text, start, len);
-+ }
-+ start = end;
-+ }
-+ } else if (breaks) {
-+ if (ch == 0 || Constant.LINEBR.hasNo(ch)) {
-+ if (text.charAt(start) == '\n') {
-+ writeLineBreak(null);
-+ }
-+ String data = text.substring(start, end);
-+ for (char br : data.toCharArray()) {
-+ if (br == '\n') {
-+ writeLineBreak(null);
-+ } else {
-+ writeLineBreak(String.valueOf(br));
-+ }
-+ }
-+ writeIndent();
-+ start = end;
-+ }
-+ } else {
-+ if (Constant.LINEBR.has(ch, "\0 '")) {
-+ if (start < end) {
-+ int len = end - start;
-+ this.column += len;
-+ stream.write(text, start, len);
-+ start = end;
-+ }
-+ }
-+ }
-+ if (ch == '\'') {
-+ this.column += 2;
-+ stream.write("''");
-+ start = end + 1;
-+ }
-+ if (ch != 0) {
-+ spaces = ch == ' ';
-+ breaks = Constant.LINEBR.has(ch);
-+ }
-+ end++;
-+ }
-+ writeIndicator("'", false, false, false);
-+ }
-+
-+ private void writeDoubleQuoted(String text, boolean split) throws IOException {
-+ writeIndicator("\"", true, false, false);
-+ int start = 0;
-+ int end = 0;
-+ while (end <= text.length()) {
-+ Character ch = null;
-+ if (end < text.length()) {
-+ ch = text.charAt(end);
-+ }
-+ if (ch == null || "\"\\\u0085\u2028\u2029\uFEFF".indexOf(ch) != -1
-+ || !('\u0020' <= ch && ch <= '\u007E')) {
-+ if (start < end) {
-+ int len = end - start;
-+ this.column += len;
-+ stream.write(text, start, len);
-+ start = end;
-+ }
-+ if (ch != null) {
-+ String data;
-+ if (ESCAPE_REPLACEMENTS.containsKey(ch)) {
-+ data = "\\" + ESCAPE_REPLACEMENTS.get(ch);
-+ } else if (!this.allowUnicode || !StreamReader.isPrintable(ch)) {
-+ // if !allowUnicode or the character is not printable,
-+ // we must encode it
-+ if (ch <= '\u00FF') {
-+ String s = "0" + Integer.toString(ch, 16);
-+ data = "\\x" + s.substring(s.length() - 2);
-+ } else if (ch >= '\uD800' && ch <= '\uDBFF') {
-+ if (end + 1 < text.length()) {
-+ Character ch2 = text.charAt(++end);
-+ String s = "000" + Long.toHexString(Character.toCodePoint(ch, ch2));
-+ data = "\\U" + s.substring(s.length() - 8);
-+ } else {
-+ String s = "000" + Integer.toString(ch, 16);
-+ data = "\\u" + s.substring(s.length() - 4);
-+ }
-+ } else {
-+ String s = "000" + Integer.toString(ch, 16);
-+ data = "\\u" + s.substring(s.length() - 4);
-+ }
-+ } else {
-+ data = String.valueOf(ch);
-+ }
-+ this.column += data.length();
-+ stream.write(data);
-+ start = end + 1;
-+ }
-+ }
-+ if ((0 < end && end < (text.length() - 1)) && (ch == ' ' || start >= end)
-+ && (this.column + (end - start)) > this.bestWidth && split) {
-+ String data;
-+ if (start >= end) {
-+ data = "\\";
-+ } else {
-+ data = text.substring(start, end) + "\\";
-+ }
-+ if (start < end) {
-+ start = end;
-+ }
-+ this.column += data.length();
-+ stream.write(data);
-+ writeIndent();
-+ this.whitespace = false;
-+ this.indention = false;
-+ if (text.charAt(start) == ' ') {
-+ data = "\\";
-+ this.column += data.length();
-+ stream.write(data);
-+ }
-+ }
-+ end += 1;
-+ }
-+ writeIndicator("\"", false, false, false);
-+ }
-+
-+ private boolean writeCommentLines(List<CommentLine> commentLines) throws IOException {
-+ boolean wroteComment = false;
-+ if(emitComments) {
-+ int indentColumns = 0;
-+ boolean firstComment = true;
-+ for (CommentLine commentLine : commentLines) {
-+ if (commentLine.getCommentType() != CommentType.BLANK_LINE) {
-+ if (firstComment) {
-+ firstComment = false;
-+ writeIndicator("#", commentLine.getCommentType() == CommentType.IN_LINE, false, false);
-+ indentColumns = this.column > 0 ? this.column - 1 : 0;
-+ } else {
-+ writeWhitespace(indentColumns);
-+ writeIndicator("#", false, false, false);
-+ }
-+ stream.write(commentLine.getValue());
-+ writeLineBreak(null);
-+ } else {
-+ writeLineBreak(null);
-+ writeIndent();
-+ }
-+ wroteComment = true;
-+ }
-+ }
-+ return wroteComment;
-+ }
-+
-+ private void writeBlockComment() throws IOException {
-+ if(!blockCommentsCollector.isEmpty()) {
-+ writeIndent();
-+ writeCommentLines(blockCommentsCollector.consume());
-+ }
-+ }
-+
-+ private boolean writeInlineComments() throws IOException {
-+ return writeCommentLines(inlineCommentsCollector.consume());
-+ }
-+
-+ private String determineBlockHints(String text) {
-+ StringBuilder hints = new StringBuilder();
-+ if (Constant.LINEBR.has(text.charAt(0), " ")) {
-+ hints.append(bestIndent);
-+ }
-+ char ch1 = text.charAt(text.length() - 1);
-+ if (Constant.LINEBR.hasNo(ch1)) {
-+ hints.append("-");
-+ } else if (text.length() == 1 || Constant.LINEBR.has(text.charAt(text.length() - 2))) {
-+ hints.append("+");
-+ }
-+ return hints.toString();
-+ }
-+
-+ void writeFolded(String text, boolean split) throws IOException {
-+ String hints = determineBlockHints(text);
-+ writeIndicator(">" + hints, true, false, false);
-+ if (hints.length() > 0 && (hints.charAt(hints.length() - 1) == '+')) {
-+ openEnded = true;
-+ }
-+ if(!writeInlineComments()) {
-+ writeLineBreak(null);
-+ }
-+ boolean leadingSpace = true;
-+ boolean spaces = false;
-+ boolean breaks = true;
-+ int start = 0, end = 0;
-+ while (end <= text.length()) {
-+ char ch = 0;
-+ if (end < text.length()) {
-+ ch = text.charAt(end);
-+ }
-+ if (breaks) {
-+ if (ch == 0 || Constant.LINEBR.hasNo(ch)) {
-+ if (!leadingSpace && ch != 0 && ch != ' ' && text.charAt(start) == '\n') {
-+ writeLineBreak(null);
-+ }
-+ leadingSpace = ch == ' ';
-+ String data = text.substring(start, end);
-+ for (char br : data.toCharArray()) {
-+ if (br == '\n') {
-+ writeLineBreak(null);
-+ } else {
-+ writeLineBreak(String.valueOf(br));
-+ }
-+ }
-+ if (ch != 0) {
-+ writeIndent();
-+ }
-+ start = end;
-+ }
-+ } else if (spaces) {
-+ if (ch != ' ') {
-+ if (start + 1 == end && this.column > this.bestWidth && split) {
-+ writeIndent();
-+ } else {
-+ int len = end - start;
-+ this.column += len;
-+ stream.write(text, start, len);
-+ }
-+ start = end;
-+ }
-+ } else {
-+ if (Constant.LINEBR.has(ch, "\0 ")) {
-+ int len = end - start;
-+ this.column += len;
-+ stream.write(text, start, len);
-+ if (ch == 0) {
-+ writeLineBreak(null);
-+ }
-+ start = end;
-+ }
-+ }
-+ if (ch != 0) {
-+ breaks = Constant.LINEBR.has(ch);
-+ spaces = ch == ' ';
-+ }
-+ end++;
-+ }
-+ }
-+
-+ void writeLiteral(String text) throws IOException {
-+ String hints = determineBlockHints(text);
-+ writeIndicator("|" + hints, true, false, false);
-+ if (hints.length() > 0 && (hints.charAt(hints.length() - 1)) == '+') {
-+ openEnded = true;
-+ }
-+ if(!writeInlineComments()) {
-+ writeLineBreak(null);
-+ }
-+ boolean breaks = true;
-+ int start = 0, end = 0;
-+ while (end <= text.length()) {
-+ char ch = 0;
-+ if (end < text.length()) {
-+ ch = text.charAt(end);
-+ }
-+ if (breaks) {
-+ if (ch == 0 || Constant.LINEBR.hasNo(ch)) {
-+ String data = text.substring(start, end);
-+ for (char br : data.toCharArray()) {
-+ if (br == '\n') {
-+ writeLineBreak(null);
-+ } else {
-+ writeLineBreak(String.valueOf(br));
-+ }
-+ }
-+ if (ch != 0) {
-+ writeIndent();
-+ }
-+ start = end;
-+ }
-+ } else {
-+ if (ch == 0 || Constant.LINEBR.has(ch)) {
-+ stream.write(text, start, end - start);
-+ if (ch == 0) {
-+ writeLineBreak(null);
-+ }
-+ start = end;
-+ }
-+ }
-+ if (ch != 0) {
-+ breaks = Constant.LINEBR.has(ch);
-+ }
-+ end++;
-+ }
-+ }
-+
-+ void writePlain(String text, boolean split) throws IOException {
-+ if (rootContext) {
-+ openEnded = true;
-+ }
-+ if (text.length() == 0) {
-+ return;
-+ }
-+ if (!this.whitespace) {
-+ this.column++;
-+ stream.write(SPACE);
-+ }
-+ this.whitespace = false;
-+ this.indention = false;
-+ boolean spaces = false;
-+ boolean breaks = false;
-+ int start = 0, end = 0;
-+ while (end <= text.length()) {
-+ char ch = 0;
-+ if (end < text.length()) {
-+ ch = text.charAt(end);
-+ }
-+ if (spaces) {
-+ if (ch != ' ') {
-+ if (start + 1 == end && this.column > this.bestWidth && split) {
-+ writeIndent();
-+ this.whitespace = false;
-+ this.indention = false;
-+ } else {
-+ int len = end - start;
-+ this.column += len;
-+ stream.write(text, start, len);
-+ }
-+ start = end;
-+ }
-+ } else if (breaks) {
-+ if (Constant.LINEBR.hasNo(ch)) {
-+ if (text.charAt(start) == '\n') {
-+ writeLineBreak(null);
-+ }
-+ String data = text.substring(start, end);
-+ for (char br : data.toCharArray()) {
-+ if (br == '\n') {
-+ writeLineBreak(null);
-+ } else {
-+ writeLineBreak(String.valueOf(br));
-+ }
-+ }
-+ writeIndent();
-+ this.whitespace = false;
-+ this.indention = false;
-+ start = end;
-+ }
-+ } else {
-+ if (Constant.LINEBR.has(ch, "\0 ")) {
-+ int len = end - start;
-+ this.column += len;
-+ stream.write(text, start, len);
-+ start = end;
-+ }
-+ }
-+ if (ch != 0) {
-+ spaces = ch == ' ';
-+ breaks = Constant.LINEBR.has(ch);
-+ }
-+ end++;
-+ }
-+ }
-+}
diff --git a/patches/server/0793-Make-water-animal-spawn-height-configurable.patch b/patches/server/0792-Make-water-animal-spawn-height-configurable.patch
index dea45f0b70..dea45f0b70 100644
--- a/patches/server/0793-Make-water-animal-spawn-height-configurable.patch
+++ b/patches/server/0792-Make-water-animal-spawn-height-configurable.patch
diff --git a/patches/server/0794-Expose-vanilla-BiomeProvider-from-WorldInfo.patch b/patches/server/0793-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
index a9805b24fc..a9805b24fc 100644
--- a/patches/server/0794-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
+++ b/patches/server/0793-Expose-vanilla-BiomeProvider-from-WorldInfo.patch
diff --git a/patches/server/0795-Add-config-option-for-worlds-affected-by-time-cmd.patch b/patches/server/0794-Add-config-option-for-worlds-affected-by-time-cmd.patch
index de155852d0..de155852d0 100644
--- a/patches/server/0795-Add-config-option-for-worlds-affected-by-time-cmd.patch
+++ b/patches/server/0794-Add-config-option-for-worlds-affected-by-time-cmd.patch
diff --git a/patches/server/0796-Add-new-overload-to-PersistentDataContainer-has.patch b/patches/server/0795-Add-new-overload-to-PersistentDataContainer-has.patch
index d19f7179e1..d19f7179e1 100644
--- a/patches/server/0796-Add-new-overload-to-PersistentDataContainer-has.patch
+++ b/patches/server/0795-Add-new-overload-to-PersistentDataContainer-has.patch
diff --git a/patches/server/0797-Multiple-Entries-with-Scoreboards.patch b/patches/server/0796-Multiple-Entries-with-Scoreboards.patch
index b644176ac9..b644176ac9 100644
--- a/patches/server/0797-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/server/0796-Multiple-Entries-with-Scoreboards.patch
diff --git a/patches/server/0798-Reset-placed-block-on-exception.patch b/patches/server/0797-Reset-placed-block-on-exception.patch
index 3881c0d6de..3881c0d6de 100644
--- a/patches/server/0798-Reset-placed-block-on-exception.patch
+++ b/patches/server/0797-Reset-placed-block-on-exception.patch
diff --git a/patches/server/0799-Add-configurable-height-for-slime-spawn.patch b/patches/server/0798-Add-configurable-height-for-slime-spawn.patch
index a05bae35ee..a05bae35ee 100644
--- a/patches/server/0799-Add-configurable-height-for-slime-spawn.patch
+++ b/patches/server/0798-Add-configurable-height-for-slime-spawn.patch
diff --git a/patches/server/0800-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch b/patches/server/0799-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
index 1f0e3525bd..1f0e3525bd 100644
--- a/patches/server/0800-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
+++ b/patches/server/0799-Added-getHostname-to-AsyncPlayerPreLoginEvent.patch
diff --git a/patches/server/0801-Fix-xp-reward-for-baby-zombies.patch b/patches/server/0800-Fix-xp-reward-for-baby-zombies.patch
index 42920471c5..42920471c5 100644
--- a/patches/server/0801-Fix-xp-reward-for-baby-zombies.patch
+++ b/patches/server/0800-Fix-xp-reward-for-baby-zombies.patch
diff --git a/patches/server/0802-Kick-on-main-for-illegal-chat.patch b/patches/server/0801-Kick-on-main-for-illegal-chat.patch
index 054da69477..054da69477 100644
--- a/patches/server/0802-Kick-on-main-for-illegal-chat.patch
+++ b/patches/server/0801-Kick-on-main-for-illegal-chat.patch
diff --git a/patches/server/0803-Multi-Block-Change-API-Implementation.patch b/patches/server/0802-Multi-Block-Change-API-Implementation.patch
index ffb3e44334..ffb3e44334 100644
--- a/patches/server/0803-Multi-Block-Change-API-Implementation.patch
+++ b/patches/server/0802-Multi-Block-Change-API-Implementation.patch
diff --git a/patches/server/0804-Fix-NotePlayEvent.patch b/patches/server/0803-Fix-NotePlayEvent.patch
index 83040e523a..83040e523a 100644
--- a/patches/server/0804-Fix-NotePlayEvent.patch
+++ b/patches/server/0803-Fix-NotePlayEvent.patch
diff --git a/patches/server/0805-Freeze-Tick-Lock-API.patch b/patches/server/0804-Freeze-Tick-Lock-API.patch
index 4fa7369491..4fa7369491 100644
--- a/patches/server/0805-Freeze-Tick-Lock-API.patch
+++ b/patches/server/0804-Freeze-Tick-Lock-API.patch
diff --git a/patches/server/0806-Dolphin-API.patch b/patches/server/0805-Dolphin-API.patch
index 4bb12a6785..4bb12a6785 100644
--- a/patches/server/0806-Dolphin-API.patch
+++ b/patches/server/0805-Dolphin-API.patch
diff --git a/patches/server/0807-More-PotionEffectType-API.patch b/patches/server/0806-More-PotionEffectType-API.patch
index 5d8c4415d3..5d8c4415d3 100644
--- a/patches/server/0807-More-PotionEffectType-API.patch
+++ b/patches/server/0806-More-PotionEffectType-API.patch
diff --git a/patches/server/0808-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch b/patches/server/0807-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch
index 02ee15a8e1..02ee15a8e1 100644
--- a/patches/server/0808-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch
+++ b/patches/server/0807-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch
diff --git a/patches/server/0809-API-for-creating-command-sender-which-forwards-feedb.patch b/patches/server/0808-API-for-creating-command-sender-which-forwards-feedb.patch
index c06c0406b5..c06c0406b5 100644
--- a/patches/server/0809-API-for-creating-command-sender-which-forwards-feedb.patch
+++ b/patches/server/0808-API-for-creating-command-sender-which-forwards-feedb.patch
diff --git a/patches/server/0810-Add-missing-structure-set-seed-configs.patch b/patches/server/0809-Add-missing-structure-set-seed-configs.patch
index 4053a482eb..3e8dff27d6 100644
--- a/patches/server/0810-Add-missing-structure-set-seed-configs.patch
+++ b/patches/server/0809-Add-missing-structure-set-seed-configs.patch
@@ -162,10 +162,10 @@ index 2fd1284c7f0d8e2cf35d03072089256d990b06eb..8ef0e9fa126cd96289bab48eaa06c2a1
@Override
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-index cf96f9fdc4ae561f01d44503b9851c60140e4ea7..46ef3400605cc420bd88f13838df7d1f1106235e 100644
+index 6bcc46795d1f78746192cc107c4a1f61580ec3c5..5503ad6a93d331771a0e92c0da6adedf2ac81aff 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-@@ -366,6 +366,16 @@ public class SpigotWorldConfig
+@@ -362,6 +362,16 @@ public class SpigotWorldConfig
public int mansionSeed;
public int fossilSeed;
public int portalSeed;
@@ -182,7 +182,7 @@ index cf96f9fdc4ae561f01d44503b9851c60140e4ea7..46ef3400605cc420bd88f13838df7d1f
private void initWorldGenSeeds()
{
this.villageSeed = this.getInt( "seed-village", 10387312 );
-@@ -383,6 +393,12 @@ public class SpigotWorldConfig
+@@ -379,6 +389,12 @@ public class SpigotWorldConfig
this.mansionSeed = this.getInt( "seed-mansion", 10387319 );
this.fossilSeed = this.getInt( "seed-fossil", 14357921 );
this.portalSeed = this.getInt( "seed-portal", 34222645 );
diff --git a/patches/server/0811-Implement-regenerateChunk.patch b/patches/server/0810-Implement-regenerateChunk.patch
index 52ed98a62f..52ed98a62f 100644
--- a/patches/server/0811-Implement-regenerateChunk.patch
+++ b/patches/server/0810-Implement-regenerateChunk.patch
diff --git a/patches/server/0812-Fix-cancelled-powdered-snow-bucket-placement.patch b/patches/server/0811-Fix-cancelled-powdered-snow-bucket-placement.patch
index c6754ee3e6..c6754ee3e6 100644
--- a/patches/server/0812-Fix-cancelled-powdered-snow-bucket-placement.patch
+++ b/patches/server/0811-Fix-cancelled-powdered-snow-bucket-placement.patch
diff --git a/patches/server/0813-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch b/patches/server/0812-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch
index 4e491d2b35..4e491d2b35 100644
--- a/patches/server/0813-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch
+++ b/patches/server/0812-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch
diff --git a/patches/server/0814-Add-GameEvent-tags.patch b/patches/server/0813-Add-GameEvent-tags.patch
index bcde64da83..bcde64da83 100644
--- a/patches/server/0814-Add-GameEvent-tags.patch
+++ b/patches/server/0813-Add-GameEvent-tags.patch
diff --git a/patches/server/0815-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch b/patches/server/0814-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch
index b39e446490..b39e446490 100644
--- a/patches/server/0815-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch
+++ b/patches/server/0814-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch
diff --git a/patches/server/0816-Furnace-RecipesUsed-API.patch b/patches/server/0815-Furnace-RecipesUsed-API.patch
index 2e6cf1c2fe..2e6cf1c2fe 100644
--- a/patches/server/0816-Furnace-RecipesUsed-API.patch
+++ b/patches/server/0815-Furnace-RecipesUsed-API.patch
diff --git a/patches/server/0817-Configurable-sculk-sensor-listener-range.patch b/patches/server/0816-Configurable-sculk-sensor-listener-range.patch
index f19796285a..f19796285a 100644
--- a/patches/server/0817-Configurable-sculk-sensor-listener-range.patch
+++ b/patches/server/0816-Configurable-sculk-sensor-listener-range.patch
diff --git a/patches/server/0818-Add-missing-block-data-mins-and-maxes.patch b/patches/server/0817-Add-missing-block-data-mins-and-maxes.patch
index 83ba5f6bc1..83ba5f6bc1 100644
--- a/patches/server/0818-Add-missing-block-data-mins-and-maxes.patch
+++ b/patches/server/0817-Add-missing-block-data-mins-and-maxes.patch
diff --git a/patches/server/0819-Option-to-have-default-CustomSpawners-in-custom-worl.patch b/patches/server/0818-Option-to-have-default-CustomSpawners-in-custom-worl.patch
index b4b2dbda38..b4b2dbda38 100644
--- a/patches/server/0819-Option-to-have-default-CustomSpawners-in-custom-worl.patch
+++ b/patches/server/0818-Option-to-have-default-CustomSpawners-in-custom-worl.patch
diff --git a/patches/server/0820-Put-world-into-worldlist-before-initing-the-world.patch b/patches/server/0819-Put-world-into-worldlist-before-initing-the-world.patch
index 678a666fc4..678a666fc4 100644
--- a/patches/server/0820-Put-world-into-worldlist-before-initing-the-world.patch
+++ b/patches/server/0819-Put-world-into-worldlist-before-initing-the-world.patch
diff --git a/patches/server/0821-Fix-Entity-Position-Desync.patch b/patches/server/0820-Fix-Entity-Position-Desync.patch
index f4b0a0dc54..f4b0a0dc54 100644
--- a/patches/server/0821-Fix-Entity-Position-Desync.patch
+++ b/patches/server/0820-Fix-Entity-Position-Desync.patch
diff --git a/patches/server/0822-Custom-Potion-Mixes.patch b/patches/server/0821-Custom-Potion-Mixes.patch
index 83f97585c5..83f97585c5 100644
--- a/patches/server/0822-Custom-Potion-Mixes.patch
+++ b/patches/server/0821-Custom-Potion-Mixes.patch
diff --git a/patches/server/0823-Fix-Fluid-tags-isTagged-method.patch b/patches/server/0822-Fix-Fluid-tags-isTagged-method.patch
index 0ce876073c..0ce876073c 100644
--- a/patches/server/0823-Fix-Fluid-tags-isTagged-method.patch
+++ b/patches/server/0822-Fix-Fluid-tags-isTagged-method.patch
diff --git a/patches/server/0824-Force-close-world-loading-screen.patch b/patches/server/0823-Force-close-world-loading-screen.patch
index 9294146475..9294146475 100644
--- a/patches/server/0824-Force-close-world-loading-screen.patch
+++ b/patches/server/0823-Force-close-world-loading-screen.patch
diff --git a/patches/server/0825-Fix-falling-block-spawn-methods.patch b/patches/server/0824-Fix-falling-block-spawn-methods.patch
index 7aaafc2cf1..7aaafc2cf1 100644
--- a/patches/server/0825-Fix-falling-block-spawn-methods.patch
+++ b/patches/server/0824-Fix-falling-block-spawn-methods.patch
diff --git a/patches/server/0826-Expose-furnace-minecart-push-values.patch b/patches/server/0825-Expose-furnace-minecart-push-values.patch
index 4086d94249..4086d94249 100644
--- a/patches/server/0826-Expose-furnace-minecart-push-values.patch
+++ b/patches/server/0825-Expose-furnace-minecart-push-values.patch
diff --git a/patches/server/0827-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch b/patches/server/0826-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch
index a9cdda7a75..a9cdda7a75 100644
--- a/patches/server/0827-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch
+++ b/patches/server/0826-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch
diff --git a/patches/server/0828-More-Projectile-API.patch b/patches/server/0827-More-Projectile-API.patch
index cc09814a54..cc09814a54 100644
--- a/patches/server/0828-More-Projectile-API.patch
+++ b/patches/server/0827-More-Projectile-API.patch
diff --git a/patches/server/0829-Fix-swamp-hut-cat-generation-deadlock.patch b/patches/server/0828-Fix-swamp-hut-cat-generation-deadlock.patch
index ae8f7dbdb2..ae8f7dbdb2 100644
--- a/patches/server/0829-Fix-swamp-hut-cat-generation-deadlock.patch
+++ b/patches/server/0828-Fix-swamp-hut-cat-generation-deadlock.patch
diff --git a/patches/server/0830-Don-t-allow-vehicle-movement-from-players-while-tele.patch b/patches/server/0829-Don-t-allow-vehicle-movement-from-players-while-tele.patch
index 77c8b0c110..77c8b0c110 100644
--- a/patches/server/0830-Don-t-allow-vehicle-movement-from-players-while-tele.patch
+++ b/patches/server/0829-Don-t-allow-vehicle-movement-from-players-while-tele.patch
diff --git a/patches/server/0831-Implement-getComputedBiome-API.patch b/patches/server/0830-Implement-getComputedBiome-API.patch
index b6a274bb77..b6a274bb77 100644
--- a/patches/server/0831-Implement-getComputedBiome-API.patch
+++ b/patches/server/0830-Implement-getComputedBiome-API.patch
diff --git a/patches/server/0832-Make-some-itemstacks-nonnull.patch b/patches/server/0831-Make-some-itemstacks-nonnull.patch
index e2cba95fe4..e2cba95fe4 100644
--- a/patches/server/0832-Make-some-itemstacks-nonnull.patch
+++ b/patches/server/0831-Make-some-itemstacks-nonnull.patch
diff --git a/patches/server/0833-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch b/patches/server/0832-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch
index fe6855e900..fe6855e900 100644
--- a/patches/server/0833-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch
+++ b/patches/server/0832-Add-debug-for-invalid-GameProfiles-on-skull-blocks-i.patch
diff --git a/patches/server/0834-Implement-enchantWithLevels-API.patch b/patches/server/0833-Implement-enchantWithLevels-API.patch
index 204d4534fb..204d4534fb 100644
--- a/patches/server/0834-Implement-enchantWithLevels-API.patch
+++ b/patches/server/0833-Implement-enchantWithLevels-API.patch
diff --git a/patches/server/0835-Fix-saving-in-unloadWorld.patch b/patches/server/0834-Fix-saving-in-unloadWorld.patch
index 0011be143d..0011be143d 100644
--- a/patches/server/0835-Fix-saving-in-unloadWorld.patch
+++ b/patches/server/0834-Fix-saving-in-unloadWorld.patch
diff --git a/patches/server/0836-Buffer-OOB-setBlock-calls.patch b/patches/server/0835-Buffer-OOB-setBlock-calls.patch
index 62e5606e17..62e5606e17 100644
--- a/patches/server/0836-Buffer-OOB-setBlock-calls.patch
+++ b/patches/server/0835-Buffer-OOB-setBlock-calls.patch
diff --git a/patches/server/0837-Add-TameableDeathMessageEvent.patch b/patches/server/0836-Add-TameableDeathMessageEvent.patch
index 8bbbaffa2c..8bbbaffa2c 100644
--- a/patches/server/0837-Add-TameableDeathMessageEvent.patch
+++ b/patches/server/0836-Add-TameableDeathMessageEvent.patch
diff --git a/patches/server/0838-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch b/patches/server/0837-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch
index 8ecf55d257..8ecf55d257 100644
--- a/patches/server/0838-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch
+++ b/patches/server/0837-Fix-new-block-data-for-EntityChangeBlockEvent-when-s.patch
diff --git a/patches/server/0839-fix-player-loottables-running-when-mob-loot-gamerule.patch b/patches/server/0838-fix-player-loottables-running-when-mob-loot-gamerule.patch
index 8dd4659462..8dd4659462 100644
--- a/patches/server/0839-fix-player-loottables-running-when-mob-loot-gamerule.patch
+++ b/patches/server/0838-fix-player-loottables-running-when-mob-loot-gamerule.patch
diff --git a/patches/server/0840-Ensure-entity-passenger-world-matches-ridden-entity.patch b/patches/server/0839-Ensure-entity-passenger-world-matches-ridden-entity.patch
index 58c393fb73..58c393fb73 100644
--- a/patches/server/0840-Ensure-entity-passenger-world-matches-ridden-entity.patch
+++ b/patches/server/0839-Ensure-entity-passenger-world-matches-ridden-entity.patch
diff --git a/patches/server/0841-Guard-against-invalid-entity-positions.patch b/patches/server/0840-Guard-against-invalid-entity-positions.patch
index c46dce184c..c46dce184c 100644
--- a/patches/server/0841-Guard-against-invalid-entity-positions.patch
+++ b/patches/server/0840-Guard-against-invalid-entity-positions.patch
diff --git a/patches/server/0842-cache-resource-keys.patch b/patches/server/0841-cache-resource-keys.patch
index 4234b8673f..4234b8673f 100644
--- a/patches/server/0842-cache-resource-keys.patch
+++ b/patches/server/0841-cache-resource-keys.patch
diff --git a/patches/server/0843-Allow-to-change-the-podium-for-the-EnderDragon.patch b/patches/server/0842-Allow-to-change-the-podium-for-the-EnderDragon.patch
index ca79a2f05b..ca79a2f05b 100644
--- a/patches/server/0843-Allow-to-change-the-podium-for-the-EnderDragon.patch
+++ b/patches/server/0842-Allow-to-change-the-podium-for-the-EnderDragon.patch
diff --git a/patches/server/0844-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch b/patches/server/0843-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
index 9ef13e101f..9ef13e101f 100644
--- a/patches/server/0844-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
+++ b/patches/server/0843-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
diff --git a/patches/server/0845-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch b/patches/server/0844-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch
index 4b39ce4dc3..4b39ce4dc3 100644
--- a/patches/server/0845-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch
+++ b/patches/server/0844-Fix-StructureGrowEvent-species-for-RED_MUSHROOM.patch
diff --git a/patches/server/0846-Prevent-tile-entity-copies-loading-chunks.patch b/patches/server/0845-Prevent-tile-entity-copies-loading-chunks.patch
index 3c5eabbf49..3c5eabbf49 100644
--- a/patches/server/0846-Prevent-tile-entity-copies-loading-chunks.patch
+++ b/patches/server/0845-Prevent-tile-entity-copies-loading-chunks.patch
diff --git a/patches/server/0847-Use-username-instead-of-display-name-in-PlayerList-g.patch b/patches/server/0846-Use-username-instead-of-display-name-in-PlayerList-g.patch
index 0d9a571f4d..0d9a571f4d 100644
--- a/patches/server/0847-Use-username-instead-of-display-name-in-PlayerList-g.patch
+++ b/patches/server/0846-Use-username-instead-of-display-name-in-PlayerList-g.patch
diff --git a/patches/server/0848-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch b/patches/server/0847-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch
index 951baf9062..951baf9062 100644
--- a/patches/server/0848-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch
+++ b/patches/server/0847-Fix-slime-spawners-not-spawning-outside-slime-chunks.patch
diff --git a/patches/server/0849-Pass-ServerLevel-for-gamerule-callbacks.patch b/patches/server/0848-Pass-ServerLevel-for-gamerule-callbacks.patch
index e309f68ed2..e309f68ed2 100644
--- a/patches/server/0849-Pass-ServerLevel-for-gamerule-callbacks.patch
+++ b/patches/server/0848-Pass-ServerLevel-for-gamerule-callbacks.patch
diff --git a/patches/server/0850-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch b/patches/server/0849-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
index fff84c5a62..fff84c5a62 100644
--- a/patches/server/0850-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
+++ b/patches/server/0849-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
diff --git a/patches/server/0851-WorldCreator-keepSpawnLoaded.patch b/patches/server/0850-WorldCreator-keepSpawnLoaded.patch
index 83b3e1ff72..83b3e1ff72 100644
--- a/patches/server/0851-WorldCreator-keepSpawnLoaded.patch
+++ b/patches/server/0850-WorldCreator-keepSpawnLoaded.patch
diff --git a/patches/server/0852-Fix-NPE-for-BlockDataMeta-getBlockData.patch b/patches/server/0851-Fix-NPE-for-BlockDataMeta-getBlockData.patch
index d33dabf6c9..d33dabf6c9 100644
--- a/patches/server/0852-Fix-NPE-for-BlockDataMeta-getBlockData.patch
+++ b/patches/server/0851-Fix-NPE-for-BlockDataMeta-getBlockData.patch
diff --git a/patches/server/0853-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch b/patches/server/0852-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch
index 79c74b0a57..79c74b0a57 100644
--- a/patches/server/0853-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch
+++ b/patches/server/0852-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch
diff --git a/patches/server/0854-Add-EntityDyeEvent-and-CollarColorable-interface.patch b/patches/server/0853-Add-EntityDyeEvent-and-CollarColorable-interface.patch
index 8eacb2217e..8eacb2217e 100644
--- a/patches/server/0854-Add-EntityDyeEvent-and-CollarColorable-interface.patch
+++ b/patches/server/0853-Add-EntityDyeEvent-and-CollarColorable-interface.patch
diff --git a/patches/server/0855-Fire-CauldronLevelChange-on-initial-fill.patch b/patches/server/0854-Fire-CauldronLevelChange-on-initial-fill.patch
index c0fcd53f55..c0fcd53f55 100644
--- a/patches/server/0855-Fire-CauldronLevelChange-on-initial-fill.patch
+++ b/patches/server/0854-Fire-CauldronLevelChange-on-initial-fill.patch
diff --git a/patches/server/0856-fix-powder-snow-cauldrons-not-turning-to-water.patch b/patches/server/0855-fix-powder-snow-cauldrons-not-turning-to-water.patch
index aef5bd0551..aef5bd0551 100644
--- a/patches/server/0856-fix-powder-snow-cauldrons-not-turning-to-water.patch
+++ b/patches/server/0855-fix-powder-snow-cauldrons-not-turning-to-water.patch
diff --git a/patches/server/0857-Add-PlayerStopUsingItemEvent.patch b/patches/server/0856-Add-PlayerStopUsingItemEvent.patch
index 0257c5ae82..0257c5ae82 100644
--- a/patches/server/0857-Add-PlayerStopUsingItemEvent.patch
+++ b/patches/server/0856-Add-PlayerStopUsingItemEvent.patch
diff --git a/patches/server/0858-FallingBlock-auto-expire-setting.patch b/patches/server/0857-FallingBlock-auto-expire-setting.patch
index a7b0c20dd6..a7b0c20dd6 100644
--- a/patches/server/0858-FallingBlock-auto-expire-setting.patch
+++ b/patches/server/0857-FallingBlock-auto-expire-setting.patch
diff --git a/patches/server/0859-Don-t-tick-markers.patch b/patches/server/0858-Don-t-tick-markers.patch
index 6f1a2dd7e8..6f1a2dd7e8 100644
--- a/patches/server/0859-Don-t-tick-markers.patch
+++ b/patches/server/0858-Don-t-tick-markers.patch
diff --git a/patches/server/0860-Do-not-accept-invalid-client-settings.patch b/patches/server/0859-Do-not-accept-invalid-client-settings.patch
index 88c7e8c514..88c7e8c514 100644
--- a/patches/server/0860-Do-not-accept-invalid-client-settings.patch
+++ b/patches/server/0859-Do-not-accept-invalid-client-settings.patch
diff --git a/patches/server/0861-Add-support-for-Proxy-Protocol.patch b/patches/server/0860-Add-support-for-Proxy-Protocol.patch
index 51687b36e9..51687b36e9 100644
--- a/patches/server/0861-Add-support-for-Proxy-Protocol.patch
+++ b/patches/server/0860-Add-support-for-Proxy-Protocol.patch
diff --git a/patches/server/0862-Fix-OfflinePlayer-getBedSpawnLocation.patch b/patches/server/0861-Fix-OfflinePlayer-getBedSpawnLocation.patch
index b11ce011a5..b11ce011a5 100644
--- a/patches/server/0862-Fix-OfflinePlayer-getBedSpawnLocation.patch
+++ b/patches/server/0861-Fix-OfflinePlayer-getBedSpawnLocation.patch
diff --git a/patches/server/0863-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch b/patches/server/0862-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch
index 59fabed7e4..59fabed7e4 100644
--- a/patches/server/0863-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch
+++ b/patches/server/0862-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch
diff --git a/patches/server/0864-Sanitize-Sent-BlockEntity-NBT.patch b/patches/server/0863-Sanitize-Sent-BlockEntity-NBT.patch
index fb3c8b1818..fb3c8b1818 100644
--- a/patches/server/0864-Sanitize-Sent-BlockEntity-NBT.patch
+++ b/patches/server/0863-Sanitize-Sent-BlockEntity-NBT.patch
diff --git a/patches/server/0865-Prevent-entity-loading-causing-async-lookups.patch b/patches/server/0864-Prevent-entity-loading-causing-async-lookups.patch
index af64e15a4b..af64e15a4b 100644
--- a/patches/server/0865-Prevent-entity-loading-causing-async-lookups.patch
+++ b/patches/server/0864-Prevent-entity-loading-causing-async-lookups.patch
diff --git a/patches/server/0866-Disable-component-selector-resolving-in-books-by-def.patch b/patches/server/0865-Disable-component-selector-resolving-in-books-by-def.patch
index 72862c20c5..72862c20c5 100644
--- a/patches/server/0866-Disable-component-selector-resolving-in-books-by-def.patch
+++ b/patches/server/0865-Disable-component-selector-resolving-in-books-by-def.patch
diff --git a/patches/server/0867-Throw-exception-on-world-create-while-being-ticked.patch b/patches/server/0866-Throw-exception-on-world-create-while-being-ticked.patch
index 92792493ee..92792493ee 100644
--- a/patches/server/0867-Throw-exception-on-world-create-while-being-ticked.patch
+++ b/patches/server/0866-Throw-exception-on-world-create-while-being-ticked.patch
diff --git a/patches/server/0868-Add-Alternate-Current-redstone-implementation.patch b/patches/server/0867-Add-Alternate-Current-redstone-implementation.patch
index 08a0345e44..08a0345e44 100644
--- a/patches/server/0868-Add-Alternate-Current-redstone-implementation.patch
+++ b/patches/server/0867-Add-Alternate-Current-redstone-implementation.patch
diff --git a/patches/server/0869-Dont-resent-entity-on-art-update.patch b/patches/server/0868-Dont-resent-entity-on-art-update.patch
index ff4ac47ad6..ff4ac47ad6 100644
--- a/patches/server/0869-Dont-resent-entity-on-art-update.patch
+++ b/patches/server/0868-Dont-resent-entity-on-art-update.patch
diff --git a/patches/server/0870-Add-missing-spawn-eggs.patch b/patches/server/0869-Add-missing-spawn-eggs.patch
index ba88344787..ba88344787 100644
--- a/patches/server/0870-Add-missing-spawn-eggs.patch
+++ b/patches/server/0869-Add-missing-spawn-eggs.patch
diff --git a/patches/server/0871-Add-WardenAngerChangeEvent.patch b/patches/server/0870-Add-WardenAngerChangeEvent.patch
index cfe1a98c72..cfe1a98c72 100644
--- a/patches/server/0871-Add-WardenAngerChangeEvent.patch
+++ b/patches/server/0870-Add-WardenAngerChangeEvent.patch
diff --git a/patches/server/0872-Add-option-for-strict-advancement-dimension-checks.patch b/patches/server/0871-Add-option-for-strict-advancement-dimension-checks.patch
index 400526a4d4..400526a4d4 100644
--- a/patches/server/0872-Add-option-for-strict-advancement-dimension-checks.patch
+++ b/patches/server/0871-Add-option-for-strict-advancement-dimension-checks.patch
diff --git a/patches/server/0873-Add-missing-important-BlockStateListPopulator-method.patch b/patches/server/0872-Add-missing-important-BlockStateListPopulator-method.patch
index 2296cce864..2296cce864 100644
--- a/patches/server/0873-Add-missing-important-BlockStateListPopulator-method.patch
+++ b/patches/server/0872-Add-missing-important-BlockStateListPopulator-method.patch
diff --git a/patches/server/0874-Nameable-Banner-API.patch b/patches/server/0873-Nameable-Banner-API.patch
index 78f176be32..78f176be32 100644
--- a/patches/server/0874-Nameable-Banner-API.patch
+++ b/patches/server/0873-Nameable-Banner-API.patch
diff --git a/patches/server/0875-Don-t-broadcast-messages-to-command-blocks.patch b/patches/server/0874-Don-t-broadcast-messages-to-command-blocks.patch
index fd94342154..fd94342154 100644
--- a/patches/server/0875-Don-t-broadcast-messages-to-command-blocks.patch
+++ b/patches/server/0874-Don-t-broadcast-messages-to-command-blocks.patch
diff --git a/patches/server/0876-Prevent-empty-items-from-being-added-to-world.patch b/patches/server/0875-Prevent-empty-items-from-being-added-to-world.patch
index f5ec296ded..f5ec296ded 100644
--- a/patches/server/0876-Prevent-empty-items-from-being-added-to-world.patch
+++ b/patches/server/0875-Prevent-empty-items-from-being-added-to-world.patch
diff --git a/patches/server/0877-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch b/patches/server/0876-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch
index ad894dbcce..ad894dbcce 100644
--- a/patches/server/0877-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch
+++ b/patches/server/0876-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch
diff --git a/patches/server/0878-Don-t-print-component-in-resource-pack-rejection-mes.patch b/patches/server/0877-Don-t-print-component-in-resource-pack-rejection-mes.patch
index e39a508723..e39a508723 100644
--- a/patches/server/0878-Don-t-print-component-in-resource-pack-rejection-mes.patch
+++ b/patches/server/0877-Don-t-print-component-in-resource-pack-rejection-mes.patch
diff --git a/patches/server/0879-Add-Player-getFishHook.patch b/patches/server/0878-Add-Player-getFishHook.patch
index bf5ccb5986..bf5ccb5986 100644
--- a/patches/server/0879-Add-Player-getFishHook.patch
+++ b/patches/server/0878-Add-Player-getFishHook.patch
diff --git a/patches/server/0880-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch b/patches/server/0879-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch
index f9cbdd0899..f9cbdd0899 100644
--- a/patches/server/0880-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch
+++ b/patches/server/0879-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch
diff --git a/patches/server/0881-Add-various-missing-EntityDropItemEvent-calls.patch b/patches/server/0880-Add-various-missing-EntityDropItemEvent-calls.patch
index cef83e5b43..cef83e5b43 100644
--- a/patches/server/0881-Add-various-missing-EntityDropItemEvent-calls.patch
+++ b/patches/server/0880-Add-various-missing-EntityDropItemEvent-calls.patch
diff --git a/patches/server/0882-Add-some-minimal-debug-information-to-chat-packet-er.patch b/patches/server/0881-Add-some-minimal-debug-information-to-chat-packet-er.patch
index 2cbecbfbe0..2cbecbfbe0 100644
--- a/patches/server/0882-Add-some-minimal-debug-information-to-chat-packet-er.patch
+++ b/patches/server/0881-Add-some-minimal-debug-information-to-chat-packet-er.patch
diff --git a/patches/server/0883-Fix-Bee-flower-NPE.patch b/patches/server/0882-Fix-Bee-flower-NPE.patch
index d1fca0922f..d1fca0922f 100644
--- a/patches/server/0883-Fix-Bee-flower-NPE.patch
+++ b/patches/server/0882-Fix-Bee-flower-NPE.patch
diff --git a/patches/server/0884-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch b/patches/server/0883-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch
index 90422ebe0b..90422ebe0b 100644
--- a/patches/server/0884-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch
+++ b/patches/server/0883-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch
diff --git a/patches/server/0885-Fixes-and-additions-to-the-SpawnReason-API.patch b/patches/server/0884-Fixes-and-additions-to-the-SpawnReason-API.patch
index 596e867634..596e867634 100644
--- a/patches/server/0885-Fixes-and-additions-to-the-SpawnReason-API.patch
+++ b/patches/server/0884-Fixes-and-additions-to-the-SpawnReason-API.patch
diff --git a/patches/server/0886-More-Teleport-API.patch b/patches/server/0885-More-Teleport-API.patch
index e2e71abd9a..e2e71abd9a 100644
--- a/patches/server/0886-More-Teleport-API.patch
+++ b/patches/server/0885-More-Teleport-API.patch
diff --git a/patches/server/0887-Add-EntityPortalReadyEvent.patch b/patches/server/0886-Add-EntityPortalReadyEvent.patch
index 1789bbd1ec..1789bbd1ec 100644
--- a/patches/server/0887-Add-EntityPortalReadyEvent.patch
+++ b/patches/server/0886-Add-EntityPortalReadyEvent.patch
diff --git a/patches/server/0888-Don-t-use-level-random-in-entity-constructors.patch b/patches/server/0887-Don-t-use-level-random-in-entity-constructors.patch
index aea2ef2591..aea2ef2591 100644
--- a/patches/server/0888-Don-t-use-level-random-in-entity-constructors.patch
+++ b/patches/server/0887-Don-t-use-level-random-in-entity-constructors.patch
diff --git a/patches/server/0889-Send-block-entities-after-destroy-prediction.patch b/patches/server/0888-Send-block-entities-after-destroy-prediction.patch
index 0d7cf43457..0d7cf43457 100644
--- a/patches/server/0889-Send-block-entities-after-destroy-prediction.patch
+++ b/patches/server/0888-Send-block-entities-after-destroy-prediction.patch
diff --git a/patches/server/0890-Warn-on-plugins-accessing-faraway-chunks.patch b/patches/server/0889-Warn-on-plugins-accessing-faraway-chunks.patch
index fd9a449523..fd9a449523 100644
--- a/patches/server/0890-Warn-on-plugins-accessing-faraway-chunks.patch
+++ b/patches/server/0889-Warn-on-plugins-accessing-faraway-chunks.patch
diff --git a/patches/server/0891-Custom-Chat-Completion-Suggestions-API.patch b/patches/server/0890-Custom-Chat-Completion-Suggestions-API.patch
index 0a4575bacf..0a4575bacf 100644
--- a/patches/server/0891-Custom-Chat-Completion-Suggestions-API.patch
+++ b/patches/server/0890-Custom-Chat-Completion-Suggestions-API.patch
diff --git a/patches/server/0892-Add-missing-BlockFadeEvents.patch b/patches/server/0891-Add-missing-BlockFadeEvents.patch
index 6b887deccf..6b887deccf 100644
--- a/patches/server/0892-Add-missing-BlockFadeEvents.patch
+++ b/patches/server/0891-Add-missing-BlockFadeEvents.patch
diff --git a/patches/server/0893-Collision-API.patch b/patches/server/0892-Collision-API.patch
index 620c1e6cec..620c1e6cec 100644
--- a/patches/server/0893-Collision-API.patch
+++ b/patches/server/0892-Collision-API.patch
diff --git a/patches/server/0894-Fix-suggest-command-message-for-brigadier-syntax-exc.patch b/patches/server/0893-Fix-suggest-command-message-for-brigadier-syntax-exc.patch
index 3a5bf3be59..3a5bf3be59 100644
--- a/patches/server/0894-Fix-suggest-command-message-for-brigadier-syntax-exc.patch
+++ b/patches/server/0893-Fix-suggest-command-message-for-brigadier-syntax-exc.patch
diff --git a/patches/server/0895-Fix-command-preprocess-cancelling-and-command-changi.patch b/patches/server/0894-Fix-command-preprocess-cancelling-and-command-changi.patch
index 6a4d1cbe43..6a4d1cbe43 100644
--- a/patches/server/0895-Fix-command-preprocess-cancelling-and-command-changi.patch
+++ b/patches/server/0894-Fix-command-preprocess-cancelling-and-command-changi.patch
diff --git a/patches/server/0896-Remove-invalid-signature-login-stacktrace.patch b/patches/server/0895-Remove-invalid-signature-login-stacktrace.patch
index af4b5e1aec..af4b5e1aec 100644
--- a/patches/server/0896-Remove-invalid-signature-login-stacktrace.patch
+++ b/patches/server/0895-Remove-invalid-signature-login-stacktrace.patch
diff --git a/patches/server/0897-Add-async-catcher-to-PlayerConnection-internalTelepo.patch b/patches/server/0896-Add-async-catcher-to-PlayerConnection-internalTelepo.patch
index 05e9d349b8..05e9d349b8 100644
--- a/patches/server/0897-Add-async-catcher-to-PlayerConnection-internalTelepo.patch
+++ b/patches/server/0896-Add-async-catcher-to-PlayerConnection-internalTelepo.patch
diff --git a/patches/server/0898-Block-Ticking-API.patch b/patches/server/0897-Block-Ticking-API.patch
index 43db29d605..43db29d605 100644
--- a/patches/server/0898-Block-Ticking-API.patch
+++ b/patches/server/0897-Block-Ticking-API.patch
diff --git a/patches/server/0899-Add-Velocity-IP-Forwarding-Support.patch b/patches/server/0898-Add-Velocity-IP-Forwarding-Support.patch
index d651ad3104..d651ad3104 100644
--- a/patches/server/0899-Add-Velocity-IP-Forwarding-Support.patch
+++ b/patches/server/0898-Add-Velocity-IP-Forwarding-Support.patch
diff --git a/patches/server/0900-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch b/patches/server/0899-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch
index 5d5ebb5ffd..5d5ebb5ffd 100644
--- a/patches/server/0900-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch
+++ b/patches/server/0899-Use-thread-safe-random-in-ServerLoginPacketListenerI.patch
diff --git a/patches/server/0901-Add-NamespacedKey-biome-methods.patch b/patches/server/0900-Add-NamespacedKey-biome-methods.patch
index 3266ac0fb2..3266ac0fb2 100644
--- a/patches/server/0901-Add-NamespacedKey-biome-methods.patch
+++ b/patches/server/0900-Add-NamespacedKey-biome-methods.patch
diff --git a/patches/server/0902-Fix-plugin-loggers-on-server-shutdown.patch b/patches/server/0901-Fix-plugin-loggers-on-server-shutdown.patch
index 1ebabbd92c..1ebabbd92c 100644
--- a/patches/server/0902-Fix-plugin-loggers-on-server-shutdown.patch
+++ b/patches/server/0901-Fix-plugin-loggers-on-server-shutdown.patch
diff --git a/patches/server/0903-Workaround-for-client-lag-spikes-MC-162253.patch b/patches/server/0902-Workaround-for-client-lag-spikes-MC-162253.patch
index fd5bf78e20..fd5bf78e20 100644
--- a/patches/server/0903-Workaround-for-client-lag-spikes-MC-162253.patch
+++ b/patches/server/0902-Workaround-for-client-lag-spikes-MC-162253.patch
diff --git a/patches/server/0904-Stop-large-look-changes-from-crashing-the-server.patch b/patches/server/0903-Stop-large-look-changes-from-crashing-the-server.patch
index 430fec0edb..430fec0edb 100644
--- a/patches/server/0904-Stop-large-look-changes-from-crashing-the-server.patch
+++ b/patches/server/0903-Stop-large-look-changes-from-crashing-the-server.patch
diff --git a/patches/server/0905-Add-custom-destroyerIdentity-to-sendBlockDamage.patch b/patches/server/0904-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
index f5809b775f..f5809b775f 100644
--- a/patches/server/0905-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
+++ b/patches/server/0904-Add-custom-destroyerIdentity-to-sendBlockDamage.patch
diff --git a/patches/server/0906-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch b/patches/server/0905-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch
index 0bdc6667a6..0bdc6667a6 100644
--- a/patches/server/0906-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch
+++ b/patches/server/0905-Fix-EndDragonFight-killed-statuses-should-be-false-f.patch
diff --git a/patches/server/0907-Fire-EntityChangeBlockEvent-in-more-places.patch b/patches/server/0906-Fire-EntityChangeBlockEvent-in-more-places.patch
index 35c92f85b3..35c92f85b3 100644
--- a/patches/server/0907-Fire-EntityChangeBlockEvent-in-more-places.patch
+++ b/patches/server/0906-Fire-EntityChangeBlockEvent-in-more-places.patch
diff --git a/patches/server/0908-Missing-eating-regain-reason.patch b/patches/server/0907-Missing-eating-regain-reason.patch
index 1f8bd2bc7b..1f8bd2bc7b 100644
--- a/patches/server/0908-Missing-eating-regain-reason.patch
+++ b/patches/server/0907-Missing-eating-regain-reason.patch
diff --git a/patches/server/0909-Missing-effect-cause.patch b/patches/server/0908-Missing-effect-cause.patch
index 70a763eeb3..70a763eeb3 100644
--- a/patches/server/0909-Missing-effect-cause.patch
+++ b/patches/server/0908-Missing-effect-cause.patch
diff --git a/patches/server/0910-Added-byte-array-serialization-deserialization-for-P.patch b/patches/server/0909-Added-byte-array-serialization-deserialization-for-P.patch
index 3553cbd00c..3553cbd00c 100644
--- a/patches/server/0910-Added-byte-array-serialization-deserialization-for-P.patch
+++ b/patches/server/0909-Added-byte-array-serialization-deserialization-for-P.patch
diff --git a/patches/server/0911-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch b/patches/server/0910-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
index 8e7053e1f5..8e7053e1f5 100644
--- a/patches/server/0911-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
+++ b/patches/server/0910-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
diff --git a/patches/server/0912-Call-BlockPhysicsEvent-more-often.patch b/patches/server/0911-Call-BlockPhysicsEvent-more-often.patch
index 532418a20f..532418a20f 100644
--- a/patches/server/0912-Call-BlockPhysicsEvent-more-often.patch
+++ b/patches/server/0911-Call-BlockPhysicsEvent-more-often.patch
diff --git a/patches/server/0913-Configurable-chat-thread-limit.patch b/patches/server/0912-Configurable-chat-thread-limit.patch
index 1bb08ba4e5..1bb08ba4e5 100644
--- a/patches/server/0913-Configurable-chat-thread-limit.patch
+++ b/patches/server/0912-Configurable-chat-thread-limit.patch
diff --git a/patches/server/0914-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch b/patches/server/0913-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
index b571f18f1d..b571f18f1d 100644
--- a/patches/server/0914-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
+++ b/patches/server/0913-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
diff --git a/patches/server/0915-Set-position-before-player-sending-on-dimension-chan.patch b/patches/server/0914-Set-position-before-player-sending-on-dimension-chan.patch
index ecc49e7279..ecc49e7279 100644
--- a/patches/server/0915-Set-position-before-player-sending-on-dimension-chan.patch
+++ b/patches/server/0914-Set-position-before-player-sending-on-dimension-chan.patch
diff --git a/patches/server/0916-fix-Jigsaw-block-kicking-user.patch b/patches/server/0915-fix-Jigsaw-block-kicking-user.patch
index 846e244a93..846e244a93 100644
--- a/patches/server/0916-fix-Jigsaw-block-kicking-user.patch
+++ b/patches/server/0915-fix-Jigsaw-block-kicking-user.patch
diff --git a/patches/server/0917-use-BlockFormEvent-for-mud-converting-into-clay.patch b/patches/server/0916-use-BlockFormEvent-for-mud-converting-into-clay.patch
index 9e935dca74..9e935dca74 100644
--- a/patches/server/0917-use-BlockFormEvent-for-mud-converting-into-clay.patch
+++ b/patches/server/0916-use-BlockFormEvent-for-mud-converting-into-clay.patch
diff --git a/patches/server/0918-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch b/patches/server/0917-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
index 517828b9b3..517828b9b3 100644
--- a/patches/server/0918-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
+++ b/patches/server/0917-Add-getDrops-to-BlockState-and-isPreferredTool-to-Bl.patch
diff --git a/patches/server/0919-Fix-a-bunch-of-vanilla-bugs.patch b/patches/server/0918-Fix-a-bunch-of-vanilla-bugs.patch
index ff0ed12381..ff0ed12381 100644
--- a/patches/server/0919-Fix-a-bunch-of-vanilla-bugs.patch
+++ b/patches/server/0918-Fix-a-bunch-of-vanilla-bugs.patch
diff --git a/patches/server/0920-Fix-nothing-mlg.patch b/patches/server/0919-Fix-nothing-mlg.patch
index 5daa6a890c..5daa6a890c 100644
--- a/patches/server/0920-Fix-nothing-mlg.patch
+++ b/patches/server/0919-Fix-nothing-mlg.patch
diff --git a/patches/server/0921-Remove-unnecessary-onTrackingStart-during-navigation.patch b/patches/server/0920-Remove-unnecessary-onTrackingStart-during-navigation.patch
index 71b2d48ea7..71b2d48ea7 100644
--- a/patches/server/0921-Remove-unnecessary-onTrackingStart-during-navigation.patch
+++ b/patches/server/0920-Remove-unnecessary-onTrackingStart-during-navigation.patch
diff --git a/patches/server/0922-Fix-custom-piglin-loved-items.patch b/patches/server/0921-Fix-custom-piglin-loved-items.patch
index 316765e536..316765e536 100644
--- a/patches/server/0922-Fix-custom-piglin-loved-items.patch
+++ b/patches/server/0921-Fix-custom-piglin-loved-items.patch
diff --git a/patches/server/0923-EntityPickupItemEvent-fixes.patch b/patches/server/0922-EntityPickupItemEvent-fixes.patch
index 55ee52922d..55ee52922d 100644
--- a/patches/server/0923-EntityPickupItemEvent-fixes.patch
+++ b/patches/server/0922-EntityPickupItemEvent-fixes.patch
diff --git a/patches/server/0924-Correctly-handle-interactions-with-items-on-cooldown.patch b/patches/server/0923-Correctly-handle-interactions-with-items-on-cooldown.patch
index 3c2b0a812f..3c2b0a812f 100644
--- a/patches/server/0924-Correctly-handle-interactions-with-items-on-cooldown.patch
+++ b/patches/server/0923-Correctly-handle-interactions-with-items-on-cooldown.patch
diff --git a/patches/server/0925-Add-PlayerInventorySlotChangeEvent.patch b/patches/server/0924-Add-PlayerInventorySlotChangeEvent.patch
index 4c38d4e329..4c38d4e329 100644
--- a/patches/server/0925-Add-PlayerInventorySlotChangeEvent.patch
+++ b/patches/server/0924-Add-PlayerInventorySlotChangeEvent.patch
diff --git a/patches/server/0926-Elder-Guardian-appearance-API.patch b/patches/server/0925-Elder-Guardian-appearance-API.patch
index 415f2653b4..415f2653b4 100644
--- a/patches/server/0926-Elder-Guardian-appearance-API.patch
+++ b/patches/server/0925-Elder-Guardian-appearance-API.patch
diff --git a/patches/server/0927-Allow-changing-bed-s-occupied-property.patch b/patches/server/0926-Allow-changing-bed-s-occupied-property.patch
index 4d0128b6d3..4d0128b6d3 100644
--- a/patches/server/0927-Allow-changing-bed-s-occupied-property.patch
+++ b/patches/server/0926-Allow-changing-bed-s-occupied-property.patch
diff --git a/patches/server/0928-Add-entity-knockback-API.patch b/patches/server/0927-Add-entity-knockback-API.patch
index 27409e5603..27409e5603 100644
--- a/patches/server/0928-Add-entity-knockback-API.patch
+++ b/patches/server/0927-Add-entity-knockback-API.patch
diff --git a/patches/server/0929-Detect-headless-JREs.patch b/patches/server/0928-Detect-headless-JREs.patch
index 85669a4c56..85669a4c56 100644
--- a/patches/server/0929-Detect-headless-JREs.patch
+++ b/patches/server/0928-Detect-headless-JREs.patch
diff --git a/patches/server/0930-fixed-entity-vehicle-collision-event-not-called.patch b/patches/server/0929-fixed-entity-vehicle-collision-event-not-called.patch
index 38afe823d5..38afe823d5 100644
--- a/patches/server/0930-fixed-entity-vehicle-collision-event-not-called.patch
+++ b/patches/server/0929-fixed-entity-vehicle-collision-event-not-called.patch
diff --git a/patches/server/0931-optimized-dirt-and-snow-spreading.patch b/patches/server/0930-optimized-dirt-and-snow-spreading.patch
index a146caa330..a146caa330 100644
--- a/patches/server/0931-optimized-dirt-and-snow-spreading.patch
+++ b/patches/server/0930-optimized-dirt-and-snow-spreading.patch
diff --git a/patches/server/0932-Added-EntityToggleSitEvent.patch b/patches/server/0931-Added-EntityToggleSitEvent.patch
index 72110ccbfb..72110ccbfb 100644
--- a/patches/server/0932-Added-EntityToggleSitEvent.patch
+++ b/patches/server/0931-Added-EntityToggleSitEvent.patch
diff --git a/patches/server/0933-Add-fire-tick-delay-option.patch b/patches/server/0932-Add-fire-tick-delay-option.patch
index f30b4f8be8..f30b4f8be8 100644
--- a/patches/server/0933-Add-fire-tick-delay-option.patch
+++ b/patches/server/0932-Add-fire-tick-delay-option.patch
diff --git a/patches/server/0934-Add-Moving-Piston-API.patch b/patches/server/0933-Add-Moving-Piston-API.patch
index 53df041ba1..53df041ba1 100644
--- a/patches/server/0934-Add-Moving-Piston-API.patch
+++ b/patches/server/0933-Add-Moving-Piston-API.patch
diff --git a/patches/server/0935-Ignore-impossible-spawn-tick.patch b/patches/server/0934-Ignore-impossible-spawn-tick.patch
index 9db2fe1bb4..9db2fe1bb4 100644
--- a/patches/server/0935-Ignore-impossible-spawn-tick.patch
+++ b/patches/server/0934-Ignore-impossible-spawn-tick.patch
diff --git a/work/Bukkit b/work/Bukkit
-Subproject 0994345029c4d127696616de3bab3e8044b0374
+Subproject 006049902d41e91d01844126dd968ca92fb99c8
diff --git a/work/Spigot b/work/Spigot
-Subproject 4aa5ead2377692b934a84b6853d188e2d9cbd53
+Subproject 89741d3e9ff89cb2aa3b2e34a714a3a073b60d9