From e74f718fdf287192c67d3d7423cfaae84b17a2bb Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 23 Sep 2023 04:50:44 -0700 Subject: [PATCH] the rest of the patches --- ...zeable-Zombie-Villager-curing-times.patch} | 10 +- ...for-sponges-to-work-on-lava-and-mud.patch} | 10 +- ...200-Toggle-for-Wither-s-spawn-sound.patch} | 10 +- ...-breaks-from-solid-neighbors-config.patch} | 4 +- ...move-curse-of-binding-with-weakness.patch} | 8 +- ...0203-Conduit-behavior-configuration.patch} | 4 +- .../0204-Cauldron-fill-chances.patch} | 4 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 2 +- .../0206-Shulker-change-color-with-dye.patch} | 14 +- .../0207-Extended-OfflinePlayer-API.patch} | 6 +- ...he-ability-to-add-combustible-items.patch} | 10 +- ...in-and-thunder-should-stop-on-sleep.patch} | 8 +- ...-blocks-to-grow-into-trees-naturall.patch} | 12 +- ...-right-click-to-use-exp-for-mending.patch} | 16 +- ...urally-aggressive-to-players-chance.patch} | 6 +- ...urally-aggressive-to-players-chance.patch} | 16 +- ...r-beds-to-explode-on-villager-sleep.patch} | 10 +- ...Halloween-options-and-optimizations.patch} | 22 +- .../0216-Config-for-grindstones.patch} | 4 +- .../0217-UPnP-Port-Forwarding.patch} | 10 +- ...Campfire-option-for-lit-when-placed.patch} | 8 +- ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 10 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 6 +- .../0222-Signs-allow-color-codes.patch} | 8 +- ...-and-twisting-vines-configurable-ma.patch} | 10 +- .../0224-Mobs-always-drop-experience.patch} | 450 +++++++++--------- .../0225-Potion-NamespacedKey.patch} | 90 ++-- .../0226-Grindstone-API.patch} | 2 +- ...e-to-replant-crops-and-nether-warts.patch} | 10 +- ...ring-jeb-produces-random-color-wool.patch} | 10 +- ...urtle-eggs-random-tick-crack-chance.patch} | 8 +- .../0230-Mob-head-visibility-percent.patch} | 22 +- ...able-valid-characters-for-usernames.patch} | 4 +- ...Shears-can-have-looting-enchantment.patch} | 20 +- ...Stop-bees-from-dying-after-stinging.patch} | 6 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 10 +- ...onfigurable-farmland-trample-height.patch} | 6 +- ...onfigurable-player-pickup-exp-delay.patch} | 14 +- .../0237-Allow-void-trading.patch} | 10 +- .../0238-Configurable-phantom-size.patch} | 10 +- .../0239-Configurable-food-attributes.patch} | 0 .../0240-Max-joins-per-second.patch} | 4 +- ...figurable-minimum-demand-for-trades.patch} | 14 +- .../0242-Lobotomize-stuck-villagers.patch} | 35 +- ...ion-for-villager-display-trade-item.patch} | 8 +- ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 8 +- .../0246-Anvil-repair-damage-options.patch} | 4 +- ...-turtle-egg-trampling-with-feather-.patch} | 8 +- ...d-toggle-for-enchant-level-clamping.patch} | 4 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 10 +- .../0251-Stonecutter-damage.patch} | 8 +- ...le-damage-settings-for-magma-blocks.patch} | 4 +- ...253-Add-config-for-snow-on-blue-ice.patch} | 4 +- .../0254-Skeletons-eat-wither-roses.patch} | 6 +- ...55-Enchantment-Table-Persists-Lapis.patch} | 16 +- .../0256-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 4 +- ...for-sculk-shrieker-can_summon-state.patch} | 4 +- .../0259-Config-to-not-let-coral-die.patch} | 4 +- .../0260-Add-local-difficulty-api.patch} | 4 +- ...261-Add-toggle-for-RNG-manipulation.patch} | 6 +- .../0262-Send-client-custom-name-of-BE.patch} | 0 ...Fix-exact-choice-recipe-book-clicks.patch} | 16 +- .../0264-Allow-custom-ChatDecorators.patch} | 4 +- .../0265-Remove-Timings.patch} | 237 ++++----- .../0266-Remove-Mojang-Profiler.patch} | 427 ++++++++--------- ...r-output-for-invalid-movement-kicks.patch} | 6 +- .../0268-Add-Bee-API.patch} | 0 .../0269-Debug-Marker-API.patch} | 16 +- ...g-option-to-ignore-creative-players.patch} | 11 +- ...71-Add-skeleton-bow-accuracy-option.patch} | 8 +- .../0272-Allay-respect-item-NBT.patch} | 8 +- .../0273-Add-death-screen-API.patch} | 4 +- ...4-Implement-ram-and-rambar-commands.patch} | 27 +- ...275-Add-item-packet-serialize-event.patch} | 14 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 6 +- ...Configurable-block-blast-resistance.patch} | 2 +- ...gurable-block-fall-damage-modifiers.patch} | 2 +- .../0279-Language-API.patch} | 4 +- .../0280-Milk-Keeps-Beneficial-Effects.patch} | 10 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 6 +- .../0284-Fire-Immunity-API.patch} | 16 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 10 +- .../0286-Added-got-ram-event.patch} | 4 +- .../0287-Log-skipped-entity-s-position.patch} | 4 +- .../0288-End-Crystal-Cramming.patch} | 6 +- ...eacon-effects-when-covered-by-tinte.patch} | 12 +- ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 12 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 4 +- .../0293-Add-PreExplodeEvents.patch} | 4 +- ...4-Improve-output-of-plugins-command.patch} | 0 .../0295-Add-mending-multiplier.patch} | 2 +- .../0296-Make-GUI-Great-Again.patch} | 2 +- .../0297-Stored-Bee-API.patch} | 0 .../0298-Shears-can-defuse-TNT.patch} | 4 +- .../0299-Explorer-Map-API.patch} | 8 +- ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 10 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 8 +- ...ways-showing-item-in-player-death-m.patch} | 2 +- ...0303-place-end-crystal-on-any-block.patch} | 8 +- 106 files changed, 958 insertions(+), 1027 deletions(-) rename patches/{unapplied/server/0201-Customizeable-Zombie-Villager-curing-times.patch => server/0198-Customizeable-Zombie-Villager-curing-times.patch} (87%) rename patches/{unapplied/server/0202-Option-for-sponges-to-work-on-lava-and-mud.patch => server/0199-Option-for-sponges-to-work-on-lava-and-mud.patch} (87%) rename patches/{unapplied/server/0203-Toggle-for-Wither-s-spawn-sound.patch => server/0200-Toggle-for-Wither-s-spawn-sound.patch} (85%) rename patches/{unapplied/server/0204-Cactus-breaks-from-solid-neighbors-config.patch => server/0201-Cactus-breaks-from-solid-neighbors-config.patch} (92%) rename patches/{unapplied/server/0205-Config-to-remove-curse-of-binding-with-weakness.patch => server/0202-Config-to-remove-curse-of-binding-with-weakness.patch} (90%) rename patches/{unapplied/server/0206-Conduit-behavior-configuration.patch => server/0203-Conduit-behavior-configuration.patch} (97%) rename patches/{unapplied/server/0207-Cauldron-fill-chances.patch => server/0204-Cauldron-fill-chances.patch} (96%) rename patches/{unapplied/server/0208-Config-to-allow-mobs-to-pathfind-over-rails.patch => server/0205-Config-to-allow-mobs-to-pathfind-over-rails.patch} (97%) rename patches/{unapplied/server/0209-Shulker-change-color-with-dye.patch => server/0206-Shulker-change-color-with-dye.patch} (87%) rename patches/{unapplied/server/0210-Extended-OfflinePlayer-API.patch => server/0207-Extended-OfflinePlayer-API.patch} (97%) rename patches/{unapplied/server/0211-Added-the-ability-to-add-combustible-items.patch => server/0208-Added-the-ability-to-add-combustible-items.patch} (89%) rename patches/{unapplied/server/0212-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (90%) rename patches/{unapplied/server/0213-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => server/0210-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (92%) rename patches/{unapplied/server/0214-Shift-right-click-to-use-exp-for-mending.patch => server/0211-Shift-right-click-to-use-exp-for-mending.patch} (87%) rename patches/{unapplied/server/0215-Dolphins-naturally-aggressive-to-players-chance.patch => server/0212-Dolphins-naturally-aggressive-to-players-chance.patch} (95%) rename patches/{unapplied/server/0216-Cows-naturally-aggressive-to-players-chance.patch => server/0213-Cows-naturally-aggressive-to-players-chance.patch} (90%) rename patches/{unapplied/server/0217-Option-for-beds-to-explode-on-villager-sleep.patch => server/0214-Option-for-beds-to-explode-on-villager-sleep.patch} (86%) rename patches/{unapplied/server/0218-Halloween-options-and-optimizations.patch => server/0215-Halloween-options-and-optimizations.patch} (84%) rename patches/{unapplied/server/0219-Config-for-grindstones.patch => server/0216-Config-for-grindstones.patch} (96%) rename patches/{unapplied/server/0220-UPnP-Port-Forwarding.patch => server/0217-UPnP-Port-Forwarding.patch} (91%) rename patches/{unapplied/server/0221-Campfire-option-for-lit-when-placed.patch => server/0218-Campfire-option-for-lit-when-placed.patch} (87%) rename patches/{unapplied/server/0222-options-to-extinguish-fire-blocks-with-snowballs.patch => server/0219-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/{unapplied/server/0223-Add-option-to-disable-zombie-villagers-cure.patch => server/0220-Add-option-to-disable-zombie-villagers-cure.patch} (86%) rename patches/{unapplied/server/0224-Persistent-BlockEntity-Lore-and-DisplayName.patch => server/0221-Persistent-BlockEntity-Lore-and-DisplayName.patch} (97%) rename patches/{unapplied/server/0225-Signs-allow-color-codes.patch => server/0222-Signs-allow-color-codes.patch} (95%) rename patches/{unapplied/server/0226-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => server/0223-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (95%) rename patches/{unapplied/server/0227-Mobs-always-drop-experience.patch => server/0224-Mobs-always-drop-experience.patch} (88%) rename patches/{unapplied/server/0228-Potion-NamespacedKey.patch => server/0225-Potion-NamespacedKey.patch} (75%) rename patches/{unapplied/server/0229-Grindstone-API.patch => server/0226-Grindstone-API.patch} (95%) rename patches/{unapplied/server/0230-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (94%) rename patches/{unapplied/server/0231-Shearing-jeb-produces-random-color-wool.patch => server/0228-Shearing-jeb-produces-random-color-wool.patch} (85%) rename patches/{unapplied/server/0232-Turtle-eggs-random-tick-crack-chance.patch => server/0229-Turtle-eggs-random-tick-crack-chance.patch} (86%) rename patches/{unapplied/server/0233-Mob-head-visibility-percent.patch => server/0230-Mob-head-visibility-percent.patch} (89%) rename patches/{unapplied/server/0234-Configurable-valid-characters-for-usernames.patch => server/0231-Configurable-valid-characters-for-usernames.patch} (91%) rename patches/{unapplied/server/0235-Shears-can-have-looting-enchantment.patch => server/0232-Shears-can-have-looting-enchantment.patch} (93%) rename patches/{unapplied/server/0236-Stop-bees-from-dying-after-stinging.patch => server/0233-Stop-bees-from-dying-after-stinging.patch} (90%) rename patches/{unapplied/server/0237-Give-bee-counts-in-beehives-to-Purpur-clients.patch => server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (91%) rename patches/{unapplied/server/0238-Configurable-farmland-trample-height.patch => server/0235-Configurable-farmland-trample-height.patch} (94%) rename patches/{unapplied/server/0239-Configurable-player-pickup-exp-delay.patch => server/0236-Configurable-player-pickup-exp-delay.patch} (88%) rename patches/{unapplied/server/0240-Allow-void-trading.patch => server/0237-Allow-void-trading.patch} (87%) rename patches/{unapplied/server/0241-Configurable-phantom-size.patch => server/0238-Configurable-phantom-size.patch} (87%) rename patches/{unapplied/server/0242-Configurable-food-attributes.patch => server/0239-Configurable-food-attributes.patch} (100%) rename patches/{unapplied/server/0243-Max-joins-per-second.patch => server/0240-Max-joins-per-second.patch} (93%) rename patches/{unapplied/server/0244-Configurable-minimum-demand-for-trades.patch => server/0241-Configurable-minimum-demand-for-trades.patch} (85%) rename patches/{unapplied/server/0245-Lobotomize-stuck-villagers.patch => server/0242-Lobotomize-stuck-villagers.patch} (81%) rename patches/{unapplied/server/0246-Option-for-villager-display-trade-item.patch => server/0243-Option-for-villager-display-trade-item.patch} (87%) rename patches/{unapplied/server/0247-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (93%) rename patches/{unapplied/server/0248-Config-for-mob-last-hurt-by-player-time.patch => server/0245-Config-for-mob-last-hurt-by-player-time.patch} (91%) rename patches/{unapplied/server/0249-Anvil-repair-damage-options.patch => server/0246-Anvil-repair-damage-options.patch} (97%) rename patches/{unapplied/server/0250-Option-to-disable-turtle-egg-trampling-with-feather-.patch => server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (89%) rename patches/{unapplied/server/0251-Add-toggle-for-enchant-level-clamping.patch => server/0248-Add-toggle-for-enchant-level-clamping.patch} (95%) rename patches/{unapplied/server/0252-Skip-junit-tests-for-purpur-commands.patch => server/0249-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/{unapplied/server/0253-Implement-configurable-search-radius-for-villagers-t.patch => server/0250-Implement-configurable-search-radius-for-villagers-t.patch} (87%) rename patches/{unapplied/server/0254-Stonecutter-damage.patch => server/0251-Stonecutter-damage.patch} (95%) rename patches/{unapplied/server/0255-Configurable-damage-settings-for-magma-blocks.patch => server/0252-Configurable-damage-settings-for-magma-blocks.patch} (94%) rename patches/{unapplied/server/0256-Add-config-for-snow-on-blue-ice.patch => server/0253-Add-config-for-snow-on-blue-ice.patch} (93%) rename patches/{unapplied/server/0257-Skeletons-eat-wither-roses.patch => server/0254-Skeletons-eat-wither-roses.patch} (96%) rename patches/{unapplied/server/0258-Enchantment-Table-Persists-Lapis.patch => server/0255-Enchantment-Table-Persists-Lapis.patch} (92%) rename patches/{unapplied/server/0259-Spark-Profiler.patch => server/0256-Spark-Profiler.patch} (100%) rename patches/{unapplied/server/0260-Option-to-disable-kick-for-out-of-order-chat.patch => server/0257-Option-to-disable-kick-for-out-of-order-chat.patch} (90%) rename patches/{unapplied/server/0261-Config-for-sculk-shrieker-can_summon-state.patch => server/0258-Config-for-sculk-shrieker-can_summon-state.patch} (93%) rename patches/{unapplied/server/0262-Config-to-not-let-coral-die.patch => server/0259-Config-to-not-let-coral-die.patch} (94%) rename patches/{unapplied/server/0263-Add-local-difficulty-api.patch => server/0260-Add-local-difficulty-api.patch} (85%) rename patches/{unapplied/server/0264-Add-toggle-for-RNG-manipulation.patch => server/0261-Add-toggle-for-RNG-manipulation.patch} (91%) rename patches/{unapplied/server/0265-Send-client-custom-name-of-BE.patch => server/0262-Send-client-custom-name-of-BE.patch} (100%) rename patches/{unapplied/server/0266-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch => server/0263-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch} (90%) rename patches/{unapplied/server/0267-Allow-custom-ChatDecorators.patch => server/0264-Allow-custom-ChatDecorators.patch} (90%) rename patches/{unapplied/server/0268-Remove-Timings.patch => server/0265-Remove-Timings.patch} (84%) rename patches/{unapplied/server/0269-Remove-Mojang-Profiler.patch => server/0266-Remove-Mojang-Profiler.patch} (84%) rename patches/{unapplied/server/0270-Add-more-logger-output-for-invalid-movement-kicks.patch => server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch} (88%) rename patches/{unapplied/server/0271-Add-Bee-API.patch => server/0268-Add-Bee-API.patch} (100%) rename patches/{unapplied/server/0272-Debug-Marker-API.patch => server/0269-Debug-Marker-API.patch} (91%) rename patches/{unapplied/server/0273-mob-spawning-option-to-ignore-creative-players.patch => server/0270-mob-spawning-option-to-ignore-creative-players.patch} (67%) rename patches/{unapplied/server/0274-Add-skeleton-bow-accuracy-option.patch => server/0271-Add-skeleton-bow-accuracy-option.patch} (91%) rename patches/{unapplied/server/0275-Allay-respect-item-NBT.patch => server/0272-Allay-respect-item-NBT.patch} (89%) rename patches/{unapplied/server/0276-Add-death-screen-API.patch => server/0273-Add-death-screen-API.patch} (87%) rename patches/{unapplied/server/0278-Implement-ram-and-rambar-commands.patch => server/0274-Implement-ram-and-rambar-commands.patch} (95%) rename patches/{unapplied/server/0279-Add-item-packet-serialize-event.patch => server/0275-Add-item-packet-serialize-event.patch} (87%) rename patches/{unapplied/server/0280-Add-an-option-to-fix-MC-3304-projectile-looting.patch => server/0276-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (96%) rename patches/{unapplied/server/0281-Configurable-block-blast-resistance.patch => server/0277-Configurable-block-blast-resistance.patch} (96%) rename patches/{unapplied/server/0282-Configurable-block-fall-damage-modifiers.patch => server/0278-Configurable-block-fall-damage-modifiers.patch} (98%) rename patches/{unapplied/server/0283-Language-API.patch => server/0279-Language-API.patch} (88%) rename patches/{unapplied/server/0284-Milk-Keeps-Beneficial-Effects.patch => server/0280-Milk-Keeps-Beneficial-Effects.patch} (90%) rename patches/{unapplied/server/0285-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => server/0281-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/{unapplied/server/0286-Add-log-suppression-for-LibraryLoader.patch => server/0282-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/{unapplied/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch => server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (92%) rename patches/{unapplied/server/0288-Fire-Immunity-API.patch => server/0284-Fire-Immunity-API.patch} (86%) rename patches/{unapplied/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (87%) rename patches/{unapplied/server/0290-Added-got-ram-event.patch => server/0286-Added-got-ram-event.patch} (86%) rename patches/{unapplied/server/0291-Log-skipped-entity-s-position.patch => server/0287-Log-skipped-entity-s-position.patch} (86%) rename patches/{unapplied/server/0292-End-Crystal-Cramming.patch => server/0288-End-Crystal-Cramming.patch} (91%) rename patches/{unapplied/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (87%) rename patches/{unapplied/server/0294-Add-attribute-clamping-and-armor-limit-config.patch => server/0290-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/{unapplied/server/0295-Config-to-remove-explosion-radius-clamp.patch => server/0291-Config-to-remove-explosion-radius-clamp.patch} (86%) rename patches/{unapplied/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch => server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/{unapplied/server/0297-Add-PreExplodeEvents.patch => server/0293-Add-PreExplodeEvents.patch} (92%) rename patches/{unapplied/server/0298-Improve-output-of-plugins-command.patch => server/0294-Improve-output-of-plugins-command.patch} (100%) rename patches/{unapplied/server/0299-Add-mending-multiplier.patch => server/0295-Add-mending-multiplier.patch} (96%) rename patches/{unapplied/server/0300-Make-GUI-Great-Again.patch => server/0296-Make-GUI-Great-Again.patch} (99%) rename patches/{unapplied/server/0301-Stored-Bee-API.patch => server/0297-Stored-Bee-API.patch} (100%) rename patches/{unapplied/server/0302-Shears-can-defuse-TNT.patch => server/0298-Shears-can-defuse-TNT.patch} (95%) rename patches/{unapplied/server/0303-Explorer-Map-API.patch => server/0299-Explorer-Map-API.patch} (85%) rename patches/{unapplied/server/0304-Option-Ocelot-Spawn-Under-Sea-Level.patch => server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch} (84%) rename patches/{unapplied/server/0305-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (91%) rename patches/{unapplied/server/0306-Add-option-for-always-showing-item-in-player-death-m.patch => server/0302-Add-option-for-always-showing-item-in-player-death-m.patch} (97%) rename patches/{unapplied/server/0307-place-end-crystal-on-any-block.patch => server/0303-place-end-crystal-on-any-block.patch} (88%) diff --git a/patches/unapplied/server/0201-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0198-Customizeable-Zombie-Villager-curing-times.patch similarity index 87% rename from patches/unapplied/server/0201-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0198-Customizeable-Zombie-Villager-curing-times.patch index 918a5737f..3c025c5b7 100644 --- a/patches/unapplied/server/0201-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0198-Customizeable-Zombie-Villager-curing-times.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizeable Zombie Villager curing times diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index c3f220a85b91a25662c943b5ee4508cd7a18c75d..40b3498c57c62f8bdaac50546ca47f4927db7bfa 100644 +index 5933bff2db353644705f5e1cfec3b0f2dedbad87..ecf41531855e1f60d9739ac6d2d82df7794f072f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -218,7 +218,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -221,7 +221,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } if (!this.level().isClientSide) { @@ -18,10 +18,10 @@ index c3f220a85b91a25662c943b5ee4508cd7a18c75d..40b3498c57c62f8bdaac50546ca47f49 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d13188a1207352a6ee5ff9c9ed633e7f834a81c9..b3a794d7181aecb8f734b98182f619ee82bb3dbf 100644 +index 8cece9543a87ac86a8320fef4a23b39dbc76ab5c..b2f365ab51b56a83ed7ea67c921c163c3511b834 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2774,6 +2774,8 @@ public class PurpurWorldConfig { +@@ -2770,6 +2770,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index d13188a1207352a6ee5ff9c9ed633e7f834a81c9..b3a794d7181aecb8f734b98182f619ee private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2789,6 +2791,8 @@ public class PurpurWorldConfig { +@@ -2785,6 +2787,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/unapplied/server/0202-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0199-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 87% rename from patches/unapplied/server/0202-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0199-Option-for-sponges-to-work-on-lava-and-mud.patch index 4be3824b0..c7286491c 100644 --- a/patches/unapplied/server/0202-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0199-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Option for sponges to work on lava and mud Co-authored by: granny diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index 709dd0af07f2439d7c7e8b5cd0677580dc3f6278..2276fed1feb4fea59b5bd49b5e4586d49478b3cc 100644 +index e7b19fa84d9dce28dd88a3b4adcb83576dcb98a8..cc1ac862526377b2ac7b66bc20f428dc1aed6e78 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -@@ -67,7 +67,7 @@ public class SpongeBlock extends Block { +@@ -70,7 +70,7 @@ public class SpongeBlock extends Block { FluidState fluid = blockList.getFluidState(blockposition1); // CraftBukkit end @@ -18,7 +18,7 @@ index 709dd0af07f2439d7c7e8b5cd0677580dc3f6278..2276fed1feb4fea59b5bd49b5e4586d4 return false; } else { Block block = iblockdata.getBlock(); -@@ -82,6 +82,10 @@ public class SpongeBlock extends Block { +@@ -85,6 +85,10 @@ public class SpongeBlock extends Block { if (iblockdata.getBlock() instanceof LiquidBlock) { blockList.setBlock(blockposition1, Blocks.AIR.defaultBlockState(), 3); // CraftBukkit @@ -30,10 +30,10 @@ index 709dd0af07f2439d7c7e8b5cd0677580dc3f6278..2276fed1feb4fea59b5bd49b5e4586d4 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b3a794d7181aecb8f734b98182f619ee82bb3dbf..309f2360d3faa4e7f6932329623b9b9647cd5f98 100644 +index b2f365ab51b56a83ed7ea67c921c163c3511b834..13aa8ae8f33834793adf18c12541c2ecd2d0699f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -953,9 +953,13 @@ public class PurpurWorldConfig { +@@ -949,9 +949,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/unapplied/server/0203-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0200-Toggle-for-Wither-s-spawn-sound.patch similarity index 85% rename from patches/unapplied/server/0203-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0200-Toggle-for-Wither-s-spawn-sound.patch index d763dcf75..08b88bf4c 100644 --- a/patches/unapplied/server/0203-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0200-Toggle-for-Wither-s-spawn-sound.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for Wither's spawn sound diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index ff5d08f0cf323606ca2eb8bef3f487c7a86029e2..5bf7a6ecd58612c8502ed747263b6c0edd445294 100644 +index 86b06182616fe07f1a5ef2b1799c434884cba149..9abc47eb3d0c1a0ee0868ec223431f4de4925c77 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -425,7 +425,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -418,7 +418,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } // CraftBukkit end @@ -18,10 +18,10 @@ index ff5d08f0cf323606ca2eb8bef3f487c7a86029e2..5bf7a6ecd58612c8502ed747263b6c0e // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 309f2360d3faa4e7f6932329623b9b9647cd5f98..21c597f6f010bca75115354b8cf5d567d8d0f474 100644 +index 13aa8ae8f33834793adf18c12541c2ecd2d0699f..7670e4e1291e8c48b960ee44977d4850b470a81e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2621,6 +2621,7 @@ public class PurpurWorldConfig { +@@ -2617,6 +2617,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 309f2360d3faa4e7f6932329623b9b9647cd5f98..21c597f6f010bca75115354b8cf5d567 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2642,6 +2643,7 @@ public class PurpurWorldConfig { +@@ -2638,6 +2639,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/unapplied/server/0204-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0201-Cactus-breaks-from-solid-neighbors-config.patch similarity index 92% rename from patches/unapplied/server/0204-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0201-Cactus-breaks-from-solid-neighbors-config.patch index 1deb983a7..9a219962e 100644 --- a/patches/unapplied/server/0204-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0201-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index 0003fb51ae3a6575575e10b4c86719f3061e2577..c2ca3432a47124d02e1aaf8ffb621f9a return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 21c597f6f010bca75115354b8cf5d567d8d0f474..45d77adb73d0df1e856088d3df6cffb6a4623cd7 100644 +index 7670e4e1291e8c48b960ee44977d4850b470a81e..2951c05d64f7c1667343dd781800816b7fae5cb9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -779,6 +779,11 @@ public class PurpurWorldConfig { +@@ -775,6 +775,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/unapplied/server/0205-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0202-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 90% rename from patches/unapplied/server/0205-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0202-Config-to-remove-curse-of-binding-with-weakness.patch index e11afcf53..a14b3f56c 100644 --- a/patches/unapplied/server/0205-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0202-Config-to-remove-curse-of-binding-with-weakness.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove curse of binding with weakness diff --git a/src/main/java/net/minecraft/world/inventory/InventoryMenu.java b/src/main/java/net/minecraft/world/inventory/InventoryMenu.java -index c549618421c5d077c3d977d8d2064eca2acc438a..5972fa434847d24fa98b7895fd8386d20a636885 100644 +index b399903e8f11ec6c12fe7e724b7d9c8292acd573..a4afa946cd47238eb0fed297a27b24013d5ba77c 100644 --- a/src/main/java/net/minecraft/world/inventory/InventoryMenu.java +++ b/src/main/java/net/minecraft/world/inventory/InventoryMenu.java @@ -4,6 +4,7 @@ import com.mojang.datafixers.util.Pair; @@ -26,10 +26,10 @@ index c549618421c5d077c3d977d8d2064eca2acc438a..5972fa434847d24fa98b7895fd8386d2 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 45d77adb73d0df1e856088d3df6cffb6a4623cd7..8e5912f9a1e3d4b97306bf31833afc435cd026e8 100644 +index 2951c05d64f7c1667343dd781800816b7fae5cb9..f64c758f51134e8102ca4092bc313eefd346d211 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -408,6 +408,7 @@ public class PurpurWorldConfig { +@@ -406,6 +406,7 @@ public class PurpurWorldConfig { public int playerPortalWaitTime = 80; public int playerCreativePortalWaitTime = 1; public boolean playerRidableInWater = false; @@ -37,7 +37,7 @@ index 45d77adb73d0df1e856088d3df6cffb6a4623cd7..8e5912f9a1e3d4b97306bf31833afc43 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -435,6 +436,7 @@ public class PurpurWorldConfig { +@@ -431,6 +432,7 @@ public class PurpurWorldConfig { playerPortalWaitTime = getInt("gameplay-mechanics.player.portal-wait-time", playerPortalWaitTime); playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); diff --git a/patches/unapplied/server/0206-Conduit-behavior-configuration.patch b/patches/server/0203-Conduit-behavior-configuration.patch similarity index 97% rename from patches/unapplied/server/0206-Conduit-behavior-configuration.patch rename to patches/server/0203-Conduit-behavior-configuration.patch index 64be92a49..d9255aa2c 100644 --- a/patches/unapplied/server/0206-Conduit-behavior-configuration.patch +++ b/patches/server/0203-Conduit-behavior-configuration.patch @@ -77,10 +77,10 @@ index 963a596154091b79ca139af6274aa323518ad1ad..4dcac3899a500d8586580bcfd5b4516e }); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e5912f9a1e3d4b97306bf31833afc435cd026e8..97afdc6199fd2b3c2033c8b3a27d2e5059f780cb 100644 +index f64c758f51134e8102ca4092bc313eefd346d211..5fd3e6bab03a2adcb776720b242c902b1330779e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2840,4 +2840,27 @@ public class PurpurWorldConfig { +@@ -2836,4 +2836,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/unapplied/server/0207-Cauldron-fill-chances.patch b/patches/server/0204-Cauldron-fill-chances.patch similarity index 96% rename from patches/unapplied/server/0207-Cauldron-fill-chances.patch rename to patches/server/0204-Cauldron-fill-chances.patch index 069f93aff..dfe78e80d 100644 --- a/patches/unapplied/server/0207-Cauldron-fill-chances.patch +++ b/patches/server/0204-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index cd943997f11f5ea5c600fdc6db96043fb0fa713c..4adeda49a2e422e11f885bffb311653d if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97afdc6199fd2b3c2033c8b3a27d2e5059f780cb..389ed035a2fb98675f6779628a620ad0680823f8 100644 +index 5fd3e6bab03a2adcb776720b242c902b1330779e..909e6bb2781637e5f4c2525371de2ad0b5524afe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2863,4 +2863,15 @@ public class PurpurWorldConfig { +@@ -2859,4 +2859,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/unapplied/server/0208-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0205-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 97% rename from patches/unapplied/server/0208-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0205-Config-to-allow-mobs-to-pathfind-over-rails.patch index d15dff7e6..40cf268ee 100644 --- a/patches/unapplied/server/0208-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0205-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,7 +18,7 @@ index 3583fcf5284bc5883308876dbd9886664b391e28..d976a6df54c1e817def2d588692abe25 if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) { double g = (double)(x - direction.getStepX()) + 0.5D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 389ed035a2fb98675f6779628a620ad0680823f8..14a9bbb6bda6ba245a84cfe7ed80dd591ae41dd7 100644 +index 909e6bb2781637e5f4c2525371de2ad0b5524afe..8ae2e7f81d1d6a09d9b733ae27ad6c99a58aeb2e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -138,6 +138,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0209-Shulker-change-color-with-dye.patch b/patches/server/0206-Shulker-change-color-with-dye.patch similarity index 87% rename from patches/unapplied/server/0209-Shulker-change-color-with-dye.patch rename to patches/server/0206-Shulker-change-color-with-dye.patch index dbdb7316b..edf3fe483 100644 --- a/patches/unapplied/server/0209-Shulker-change-color-with-dye.patch +++ b/patches/server/0206-Shulker-change-color-with-dye.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shulker change color with dye diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index a0b19ffbdb64c40d8b92ed82104dde323b466190..714adaf017813eb64bb3a9a60b5ff45737e4d95d 100644 +index 786fe41cc743817f2ed613969c7eeec9fc001b4b..40f4a53cf244549e9cf392f4286bdec1a6852574 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -22,6 +22,8 @@ import net.minecraft.tags.DamageTypeTags; @@ -17,16 +17,16 @@ index a0b19ffbdb64c40d8b92ed82104dde323b466190..714adaf017813eb64bb3a9a60b5ff457 import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityDimensions; -@@ -50,6 +52,8 @@ import net.minecraft.world.entity.projectile.AbstractArrow; +@@ -49,6 +51,8 @@ import net.minecraft.world.entity.player.Player; + import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.entity.projectile.ShulkerBullet; - import net.minecraft.world.entity.vehicle.Boat; import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.DyeItem; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.block.Blocks; -@@ -125,6 +129,19 @@ public class Shulker extends AbstractGolem implements VariantHolder { +@@ -147,7 +147,13 @@ public abstract class AbstractFurnaceMenu extends RecipeBookMenu { } else if (slot != 1 && slot != 0) { if (this.canSmelt(itemstack1)) { if (!this.moveItemStackTo(itemstack1, 0, 1, false)) { @@ -24,7 +24,7 @@ index 35b41bceeba72c3896c91c2605bac3b0bf9c54e9..5c028f957661089ff502109c99669285 } else if (this.isFuel(itemstack1)) { if (!this.moveItemStackTo(itemstack1, 1, 2, false)) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index ca2052804ad829a1528a9c5a0a792275beead113..997d0fab71eacc6466ffe3bc8f6349e5813d6d49 100644 +index b0afc384907bb75dfa26e432a2328fe080660019..92e58d9503daf4cc9bc1f4c7785e159e0c1f4bf3 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java @@ -208,6 +208,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit @@ -51,10 +51,10 @@ index ca2052804ad829a1528a9c5a0a792275beead113..997d0fab71eacc6466ffe3bc8f6349e5 private int maxStack = MAX_STACK; public List transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 9bf5facac29591b7f6d5cfb7abb5a7bf6e9d382b..ab31661318beb96bc18b270cc614adcf0ea86d08 100644 +index 3f06e418e1322b966f19b488beb2780e7168b45b..cb912efba182aff9e8f080aa473f78115eae8a47 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1535,6 +1535,19 @@ public final class CraftServer implements Server { +@@ -1532,6 +1532,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/unapplied/server/0212-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 90% rename from patches/unapplied/server/0212-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 511492c34..e294e377e 100644 --- a/patches/unapplied/server/0212-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index df8efd93ad6ab30974e3025187cd234b37111129..8cbb36b2dbcb9a1470c95746d7d481a142419164 100644 +index bbb3052a3b2704e25696457d53d0940664fa263a..cb35bac1923fe40f172a521ce5892e0dcfd7e305 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1344,6 +1344,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1241,6 +1241,7 @@ public class ServerLevel extends Level implements WorldGenLevel { private void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index df8efd93ad6ab30974e3025187cd234b37111129..8cbb36b2dbcb9a1470c95746d7d481a1 this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1351,6 +1352,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1248,6 +1249,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -25,7 +25,7 @@ index df8efd93ad6ab30974e3025187cd234b37111129..8cbb36b2dbcb9a1470c95746d7d481a1 // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 36bf7feb12b83f97612fa221a48fcffb61f9de88..8d8248e00a9235abffbf381398a13ff2bb9f2b08 100644 +index a8cddd10832e6be2704569b6c1fb995bd9caf0b9..1da30e052c08c27370755cae3e1890a397a2f323 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -139,6 +139,8 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0213-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0210-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 92% rename from patches/unapplied/server/0213-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0210-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 4ffc844e9..abbd59590 100644 --- a/patches/unapplied/server/0213-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0210-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Chance for azalea blocks to grow into trees naturally diff --git a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java -index 95b53450a807fccfa55b59852da52785b8cf3e3d..c69f1d23979a0759472d22760a18d986b2d979b6 100644 +index 087f3b3cc180e16195efdc0b402701fd9f5d78b4..aa4e13f1c77f10221128569483497668cd2eb7d3 100644 --- a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java @@ -43,6 +43,20 @@ public class AzaleaBlock extends BushBlock implements BonemealableBlock { @@ -30,10 +30,10 @@ index 95b53450a807fccfa55b59852da52785b8cf3e3d..c69f1d23979a0759472d22760a18d986 } diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java -index 0453397c157c8c7968947445f41bc46b68b111e8..ed35878fdb9dffcd46c27d26ee8379401207cef5 100644 +index b49e02ac7b3db9a5b79ce3f106ead19af4e7cfa6..6425bc42bb8024aa7936b841d6c2ee2c892eb329 100644 --- a/src/main/java/net/minecraft/world/level/block/Blocks.java +++ b/src/main/java/net/minecraft/world/level/block/Blocks.java -@@ -1093,8 +1093,8 @@ public class Blocks { +@@ -1094,8 +1094,8 @@ public class Blocks { public static final Block CAVE_VINES = register("cave_vines", new CaveVinesBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY))); public static final Block CAVE_VINES_PLANT = register("cave_vines_plant", new CaveVinesPlantBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY))); public static final Block SPORE_BLOSSOM = register("spore_blossom", new SporeBlossomBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).instabreak().noCollission().sound(SoundType.SPORE_BLOSSOM).pushReaction(PushReaction.DESTROY))); @@ -45,10 +45,10 @@ index 0453397c157c8c7968947445f41bc46b68b111e8..ed35878fdb9dffcd46c27d26ee837940 public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().sound(SoundType.PINK_PETALS).pushReaction(PushReaction.DESTROY))); public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS).pushReaction(PushReaction.DESTROY))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8d8248e00a9235abffbf381398a13ff2bb9f2b08..9e7c090c44edc98b3399046ad76c5ca144f5bb2d 100644 +index 1da30e052c08c27370755cae3e1890a397a2f323..a3a5decf6586569c347d36f4416cf3cb3b0bef78 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -739,6 +739,11 @@ public class PurpurWorldConfig { +@@ -735,6 +735,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -60,7 +60,7 @@ index 8d8248e00a9235abffbf381398a13ff2bb9f2b08..9e7c090c44edc98b3399046ad76c5ca1 public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -876,6 +881,11 @@ public class PurpurWorldConfig { +@@ -872,6 +877,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/unapplied/server/0214-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch similarity index 87% rename from patches/unapplied/server/0214-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch index cd149434e..e4512b2a1 100644 --- a/patches/unapplied/server/0214-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0211-Shift-right-click-to-use-exp-for-mending.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 1e0d07949e8b4450a400625a23d386024192eef1..f3bac087856f420aa6c14707e90288f4962967bf 100644 +index 0488fe39acf7191754707b7c8f424e6a3e32c152..bcce65e453bec778739e8b2f9d89356f41dbbd20 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -518,6 +518,7 @@ public class ServerPlayerGameMode { +@@ -516,6 +516,7 @@ public class ServerPlayerGameMode { public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -16,7 +16,7 @@ index 1e0d07949e8b4450a400625a23d386024192eef1..f3bac087856f420aa6c14707e90288f4 BlockPos blockposition = hitResult.getBlockPos(); BlockState iblockdata = world.getBlockState(blockposition); InteractionResult enuminteractionresult = InteractionResult.PASS; -@@ -620,4 +621,18 @@ public class ServerPlayerGameMode { +@@ -618,4 +619,18 @@ public class ServerPlayerGameMode { public void setLevel(ServerLevel world) { this.level = world; } @@ -36,10 +36,10 @@ index 1e0d07949e8b4450a400625a23d386024192eef1..f3bac087856f420aa6c14707e90288f4 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7ac39b9f7a0afabe4a6fde954a85f0d4f53a01df..cb1851fca9290edb502662c100bb2ac6fa4d70d1 100644 +index fe4f8517f1d3614568be697720908609776f353e..70eaf9347d49924841f2cfa23932b3eadfe49c82 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2144,6 +2144,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2019,6 +2019,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -48,10 +48,10 @@ index 7ac39b9f7a0afabe4a6fde954a85f0d4f53a01df..cb1851fca9290edb502662c100bb2ac6 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9e7c090c44edc98b3399046ad76c5ca144f5bb2d..8d59047a6ab10af7a4cc418345ff7b17ce5d6355 100644 +index a3a5decf6586569c347d36f4416cf3cb3b0bef78..8e658c5e81b85fa4fa36b9e18a02bd0634e42554 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -415,6 +415,7 @@ public class PurpurWorldConfig { +@@ -413,6 +413,7 @@ public class PurpurWorldConfig { public int playerCreativePortalWaitTime = 1; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index 9e7c090c44edc98b3399046ad76c5ca144f5bb2d..8d59047a6ab10af7a4cc418345ff7b17 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -443,6 +444,7 @@ public class PurpurWorldConfig { +@@ -439,6 +440,7 @@ public class PurpurWorldConfig { playerCreativePortalWaitTime = getInt("gameplay-mechanics.player.creative-portal-wait-time", playerCreativePortalWaitTime); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); diff --git a/patches/unapplied/server/0215-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0212-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 95% rename from patches/unapplied/server/0215-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0212-Dolphins-naturally-aggressive-to-players-chance.patch index 1a144d8de..ec76f54a5 100644 --- a/patches/unapplied/server/0215-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0212-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index 77746eeffdc612793a6c907f222753bce5cd0ed4..b6342637f1b42b6368dcda17eea4b39a public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8d59047a6ab10af7a4cc418345ff7b17ce5d6355..80f7ae88760e6de74445271712929b3bdc2dda3c 100644 +index 8e658c5e81b85fa4fa36b9e18a02bd0634e42554..c146356aa04126f2cd74aabf50c1436fa111aa6a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1281,6 +1281,7 @@ public class PurpurWorldConfig { +@@ -1277,6 +1277,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 8d59047a6ab10af7a4cc418345ff7b17ce5d6355..80f7ae88760e6de74445271712929b3b private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1295,6 +1296,7 @@ public class PurpurWorldConfig { +@@ -1291,6 +1292,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/unapplied/server/0216-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0213-Cows-naturally-aggressive-to-players-chance.patch similarity index 90% rename from patches/unapplied/server/0216-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0213-Cows-naturally-aggressive-to-players-chance.patch index 18108ca64..054fdd923 100644 --- a/patches/unapplied/server/0216-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0213-Cows-naturally-aggressive-to-players-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 8d714c029cf3b62af1ff8140a82ed3ae463e0e18..37f073e821a1b0f8efe89a7d88ce732cda402dff 100644 +index f76b0d92150fd985a8fc699f6f884527d589dfd3..3c12e179861b5514e081d0db1664f7173955629c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -39,6 +39,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; +@@ -42,6 +42,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; // CraftBukkit end public class Cow extends Animal { @@ -16,7 +16,7 @@ index 8d714c029cf3b62af1ff8140a82ed3ae463e0e18..37f073e821a1b0f8efe89a7d88ce732c public Cow(EntityType type, Level world) { super(type, world); -@@ -64,6 +65,7 @@ public class Cow extends Animal { +@@ -67,6 +68,7 @@ public class Cow extends Animal { @Override public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); @@ -24,7 +24,7 @@ index 8d714c029cf3b62af1ff8140a82ed3ae463e0e18..37f073e821a1b0f8efe89a7d88ce732c } @Override -@@ -76,11 +78,18 @@ public class Cow extends Animal { +@@ -79,11 +81,18 @@ public class Cow extends Animal { return this.level().purpurConfig.cowTakeDamageFromWater; } @@ -43,7 +43,7 @@ index 8d714c029cf3b62af1ff8140a82ed3ae463e0e18..37f073e821a1b0f8efe89a7d88ce732c this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); if (level().purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); -@@ -88,10 +97,11 @@ public class Cow extends Animal { +@@ -91,10 +100,11 @@ public class Cow extends Animal { this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); @@ -57,10 +57,10 @@ index 8d714c029cf3b62af1ff8140a82ed3ae463e0e18..37f073e821a1b0f8efe89a7d88ce732c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 80f7ae88760e6de74445271712929b3bdc2dda3c..1913ace7da1ba4beda5373d51a63ca7d3da7a564 100644 +index c146356aa04126f2cd74aabf50c1436fa111aa6a..e752c2050b696a0f1db12c5301fbe940488d87d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1230,7 +1230,14 @@ public class PurpurWorldConfig { +@@ -1226,7 +1226,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -75,7 +75,7 @@ index 80f7ae88760e6de74445271712929b3bdc2dda3c..1913ace7da1ba4beda5373d51a63ca7d cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1243,6 +1250,8 @@ public class PurpurWorldConfig { +@@ -1239,6 +1246,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/unapplied/server/0217-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0214-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 86% rename from patches/unapplied/server/0217-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0214-Option-for-beds-to-explode-on-villager-sleep.patch index 50e65cc9a..8b75a44e7 100644 --- a/patches/unapplied/server/0217-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0214-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 444dbab9a1c95d1f8bc97e165e5302473a29c7e8..2ffceda6ce3cfe515f9348dafc28b04689d5a460 100644 +index d24f970c50c1a4937b66e7eb6e3edc1d3b61a07e..bae27f98d3deaa855da9bc2dc6e8bd7d80fea786 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1110,6 +1110,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1113,6 +1113,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { @@ -22,10 +22,10 @@ index 444dbab9a1c95d1f8bc97e165e5302473a29c7e8..2ffceda6ce3cfe515f9348dafc28b046 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1913ace7da1ba4beda5373d51a63ca7d3da7a564..af78db690b3d3437aedcb72bca76b01a4689921d 100644 +index e752c2050b696a0f1db12c5301fbe940488d87d1..dae834b637164fabea2b17d2d752a04df31ee88a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -758,6 +758,7 @@ public class PurpurWorldConfig { +@@ -754,6 +754,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 1913ace7da1ba4beda5373d51a63ca7d3da7a564..af78db690b3d3437aedcb72bca76b01a public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -768,6 +769,7 @@ public class PurpurWorldConfig { +@@ -764,6 +765,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/unapplied/server/0218-Halloween-options-and-optimizations.patch b/patches/server/0215-Halloween-options-and-optimizations.patch similarity index 84% rename from patches/unapplied/server/0218-Halloween-options-and-optimizations.patch rename to patches/server/0215-Halloween-options-and-optimizations.patch index 7f1c82875..edab64a5a 100644 --- a/patches/unapplied/server/0218-Halloween-options-and-optimizations.patch +++ b/patches/server/0215-Halloween-options-and-optimizations.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Halloween options and optimizations diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25..c103c3da165ec4a9717400fdf278de2a667edd2a 100644 +index 91c7295b75cee5b9fc18434b94a67cb8db0151e3..fb3fff24d0146711faf1cd5eba706004ce203618 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -300,7 +300,7 @@ public class Bat extends AmbientCreature { @@ -17,16 +17,16 @@ index c3d1d77a5703db4e1e3eb38fdd0b8903f691bf25..c103c3da165ec4a9717400fdf278de2a b0 = 7; } else if (random.nextBoolean()) { return false; -@@ -314,6 +314,7 @@ public class Bat extends AmbientCreature { - private static boolean isSpookySeason = false; - private static final int ONE_HOUR = 20 * 60 * 60; - private static int lastSpookyCheck = -ONE_HOUR; +@@ -310,6 +310,7 @@ public class Bat extends AmbientCreature { + } + } + + public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur private static boolean isHalloween() { - if (net.minecraft.server.MinecraftServer.currentTick - lastSpookyCheck > ONE_HOUR) { LocalDate localdate = LocalDate.now(); + int i = localdate.get(ChronoField.DAY_OF_MONTH); diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 892ae3a9ac2395896ff7881c49eaece8d46e831e..41376b705748e14c1c4174e07732ce09ad8e581f 100644 +index f35637a105d5aa12fb57c2456f2b2a7db12a49f0..f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -143,11 +143,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -43,10 +43,10 @@ index 892ae3a9ac2395896ff7881c49eaece8d46e831e..41376b705748e14c1c4174e07732ce09 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 0bc90b6d5c5a3cb3477d41336a9bb1130ff32fa1..a8d2f8654ee370e98bb1c4e7e1111debd62a7429 100644 +index 143ac5fac02a29516d03b69008b1345555857640..c265d2abd36857f6a25f8e0584e7cf939637b7a9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -593,11 +593,7 @@ public class Zombie extends Monster { +@@ -594,11 +594,7 @@ public class Zombie extends Monster { } if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { @@ -60,10 +60,10 @@ index 0bc90b6d5c5a3cb3477d41336a9bb1130ff32fa1..a8d2f8654ee370e98bb1c4e7e1111deb this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af78db690b3d3437aedcb72bca76b01a4689921d..af6de9d4d6dace3f26b7012606d399f5c398ef0a 100644 +index dae834b637164fabea2b17d2d752a04df31ee88a..9f3fe0265904da5a4be55fd3bc0ed1d283d241a9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1623,6 +1623,13 @@ public class PurpurWorldConfig { +@@ -1619,6 +1619,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/unapplied/server/0219-Config-for-grindstones.patch b/patches/server/0216-Config-for-grindstones.patch similarity index 96% rename from patches/unapplied/server/0219-Config-for-grindstones.patch rename to patches/server/0216-Config-for-grindstones.patch index 864f86f7b..65da4266d 100644 --- a/patches/unapplied/server/0219-Config-for-grindstones.patch +++ b/patches/server/0216-Config-for-grindstones.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for grindstones diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index b56766ff0e61691294b40ea8c2370940c0e8b640..6860e3467bf785e9d017fc98fce1e3cf71f9b6ee 100644 +index a21eadcdfbdc4be803c5793bc97996db3e706071..132a07e226ae3ac6b5abc6f53c62345e2ab2f31f 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -57,7 +57,7 @@ index b56766ff0e61691294b40ea8c2370940c0e8b640..6860e3467bf785e9d017fc98fce1e3cf } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 853cf54077d760f1118ce494b401d286d789e5fc..19313ea70f105e71019947e34669384472b0aaab 100644 +index 62fa79eccbb6f679c0460a6dfd457c405b3a8e67..f3449eb7a1433a8420c0de6f4649f0fae70b2294 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -309,6 +309,9 @@ public class PurpurConfig { diff --git a/patches/unapplied/server/0220-UPnP-Port-Forwarding.patch b/patches/server/0217-UPnP-Port-Forwarding.patch similarity index 91% rename from patches/unapplied/server/0220-UPnP-Port-Forwarding.patch rename to patches/server/0217-UPnP-Port-Forwarding.patch index 76cc2862a..406d513c4 100644 --- a/patches/unapplied/server/0220-UPnP-Port-Forwarding.patch +++ b/patches/server/0217-UPnP-Port-Forwarding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 49286716235f3bd49cbc42ef693daafba746f930..3a9fe6d9f2e7406ffc368e2dadaab803b591f5c2 100644 +index caaa154082fef69c6bf3ff6101242de5b037c583..5018f85fd87fe167389706bda04327bbe7d2c17a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -308,6 +308,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { +@@ -138,6 +138,11 @@ public class Cat extends TamableAnimal implements VariantHolder { return this.level().purpurConfig.catTakeDamageFromWater; } @@ -69,10 +69,10 @@ index 7f1763b820a0c5dc69bdf6cdf14a97a283ba5916..3347b39fa1bc3308aa3b70b416952388 return this.getVariant().texture(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index 6fe3e62ba4534e821937baa14d728186f8c6439e..00bdb2b75221349cb40da2b5fc1563393fd17ef6 100644 +index 2dc2486e2b5e046ab8f23976b7bf0202f61756ec..0388ff9ce0ffe1029d977a65a528a0d9f228a3ee 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -89,6 +89,11 @@ public class Chicken extends Animal { +@@ -90,6 +90,11 @@ public class Chicken extends Animal { return this.level().purpurConfig.chickenTakeDamageFromWater; } @@ -101,10 +101,10 @@ index 2343325fa9a771de7b9445cda24a2bcd7a7c1761..f0b6118a9995bb41836685bbf94d2e7f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 37f073e821a1b0f8efe89a7d88ce732cda402dff..3cee7d5656b2df2997ceaee3489c02ce881e6875 100644 +index 3c12e179861b5514e081d0db1664f7173955629c..6d00b3cd4a9cb0fc8a9e9c27f37429a25fcf6e9d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -84,6 +84,11 @@ public class Cow extends Animal { +@@ -87,6 +87,11 @@ public class Cow extends Animal { return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } @@ -133,10 +133,10 @@ index b6342637f1b42b6368dcda17eea4b39a22ec3b79..4c9c07d470357c35bd5ba3c21437a2c4 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index ed7d057bc12ca0e3d808320a008c902ebb27e1ca..ca3096abbd54745af591101c7b306ed87f212954 100644 +index 7bd1177b58bd5ecc5659266eece39a49ec08ffa9..39c982f83a8b5b0787fc8dd48a0c11e5ad452bb0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -196,6 +196,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -198,6 +198,11 @@ public class Fox extends Animal implements VariantHolder { return this.level().purpurConfig.foxTakeDamageFromWater; } @@ -165,7 +165,7 @@ index c2817324ff57860ea2628dc4ac8e78b76cf67a5a..64aba511e615983988cdb6a0fd45b7d9 protected void registerGoals() { if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 56fb35206af7e04a78eba489d444135176188a20..1b0a0e36baa0f664f06b2d166aa907b320066b6e 100644 +index 6b635c997a8052f6ea9b6dc39bef70000edbd782..ab5b150b379598861666ad32906e1fe454437063 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -95,6 +95,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -153,6 +153,11 @@ public class Rabbit extends Animal implements VariantHolder { public boolean isSensitiveToWater() { return this.level().purpurConfig.rabbitTakeDamageFromWater; } @@ -309,10 +309,10 @@ index e101c3bf425902908c43ffa18867fb83a5e1f16e..382e47f26ee94506cb76463a677351b9 public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 35decea07efa8ca9f7ed896be9b8f3eb5afbf082..a1b323ecba25910e97f154e487acc94943117e0c 100644 +index 6e951928482fb6d662f2b7aa37ebe7a0885b47de..f2d0c67709e38209a8a02e98f4392b9e0a53c211 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -149,6 +149,11 @@ public class Sheep extends Animal implements Shearable { +@@ -151,6 +151,11 @@ public class Sheep extends Animal implements Shearable { return this.level().purpurConfig.sheepTakeDamageFromWater; } @@ -373,10 +373,10 @@ index b16d075581a352714f86f1b87805f24c9e336aa3..87b6f6b10ba6e3d9c6a42298a2019a52 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index df9a7975959393ab2e81fa7c3878afd034ef7f90..1502f13acd0a104efe470e605826213ea92af191 100644 +index 01375aede431c5023dd4a2d6667948c7bd056efe..c8f3be5fd869f62472d5a248f9c02700dac0ac69 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -115,6 +115,11 @@ public class Turtle extends Animal { +@@ -118,6 +118,11 @@ public class Turtle extends Animal { return this.level().purpurConfig.turtleTakeDamageFromWater; } @@ -389,10 +389,10 @@ index df9a7975959393ab2e81fa7c3878afd034ef7f90..1502f13acd0a104efe470e605826213e this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index c967302542eeac0bad33c3b53b7d5b2aea7defbb..64bceae4d06b35fcbecb0daca2496ba30e39d995 100644 +index 6b51886e383992f35e0313bd9cc012354190a87d..5d49ed7ddf44a3d549b178ae548664194967776b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -215,6 +215,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -217,6 +217,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { return this.level().purpurConfig.wolfTakeDamageFromWater; } @@ -405,7 +405,7 @@ index c967302542eeac0bad33c3b53b7d5b2aea7defbb..64bceae4d06b35fcbecb0daca2496ba3 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 6aaf20501558f1710be0adca9c14441448698541..51b475191113cf3cae5e776b0dfbcd0236a92808 100644 +index 3ada2ed68d66253d38641fd23b455484bae02684..38bd4f2325320b63407e5537a8e8744b96abfe95 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -130,6 +130,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 83a3a87caba237b382e4409339e98b6b99a005b7..0f8af63a88e425e5e66f68133b6c604caefc6977 100644 +index bcba99876662e2e96a107d84da02c2366ed338e2..d8e6208b9238c6840fa6990866e64c830566bf0e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -117,6 +117,11 @@ public class Goat extends Animal { +@@ -119,6 +119,11 @@ public class Goat extends Animal { return this.level().purpurConfig.goatTakeDamageFromWater; } @@ -469,10 +469,10 @@ index f8dbea402f723bf38d7ab3f2468d1b02b7124560..3b1faa63e46a48e83ea672cf6da444a1 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index fac46dd905f9a634cff393494f6ff0404eb17fb7..a9f36af3e07f74b3d11697d5fad9f0a469844779 100644 +index fb6bca763fcbb249c86c1e360274d4458df19bfc..9288327a365bc67c5bb8ed6aa23b78c725d5ba40 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -148,6 +148,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 651c4f4b3d9349b8e9d6601a37ca5da192898a61..fc5272e8671ff4bda3bd17abe5c31cc0ff4114f8 100644 +index 8cd6012b00dd5b307fd76ef0fd9c2cd92342a92a..15fd1af0773ba1254a429240444f48e68e29ee74 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -94,6 +94,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -96,6 +96,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { return this.level().purpurConfig.zoglinTakeDamageFromWater; } @@ -1029,10 +1029,10 @@ index 651c4f4b3d9349b8e9d6601a37ca5da192898a61..fc5272e8671ff4bda3bd17abe5c31cc0 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index a8d2f8654ee370e98bb1c4e7e1111debd62a7429..7c5efb5582f43d9f333f926ad7dba1ed9920333a 100644 +index c265d2abd36857f6a25f8e0584e7cf939637b7a9..97ed65885f43c712953d6d8b3c231bac6f031390 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -146,6 +146,11 @@ public class Zombie extends Monster { +@@ -147,6 +147,11 @@ public class Zombie extends Monster { return this.level().purpurConfig.zombieTakeDamageFromWater; } @@ -1045,10 +1045,10 @@ index a8d2f8654ee370e98bb1c4e7e1111debd62a7429..7c5efb5582f43d9f333f926ad7dba1ed protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index b8e0ae0714fd2b77831fb714b1bad901e7081cf4..be2a35f703310f699ee31bd2ec1c938af281a577 100644 +index 4bac02d30ec28ea0bce069f0f915b660b99b122d..858bf64d951ae48421ceb2f9b62de9397ffb4dc3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -126,6 +126,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -129,6 +129,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { return level().purpurConfig.zombieVillagerJockeyTryExistingChickens; } @@ -1061,10 +1061,10 @@ index b8e0ae0714fd2b77831fb714b1bad901e7081cf4..be2a35f703310f699ee31bd2ec1c938a protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 21ba6ea58dfbfd9a7c0bf7d518d7f12730841a08..7bb99d7fd8e05805e0cac7bec0b2771990057f58 100644 +index 3574a1e641d8af34a0ff7ea8dcfb08641cf6ace0..df8c7a45eb49a8c667030eb67d6d49dcbaef4fcf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -105,6 +105,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -106,6 +106,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { return level().purpurConfig.zombifiedPiglinJockeyTryExistingChickens; } @@ -1077,10 +1077,10 @@ index 21ba6ea58dfbfd9a7c0bf7d518d7f12730841a08..7bb99d7fd8e05805e0cac7bec0b27719 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 1fd65b47b1bd56bc09902324b1dd22dad2e0bc2d..0ddcff8d4cd22cc01462c412c3db39238237ca49 100644 +index e60b3ccc703c36ab37e084c21811d43717aaa226..d709178522abd982de78946e859a14cab50e9818 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -99,6 +99,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -101,6 +101,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level().purpurConfig.hoglinTakeDamageFromWater; } @@ -1093,7 +1093,7 @@ index 1fd65b47b1bd56bc09902324b1dd22dad2e0bc2d..0ddcff8d4cd22cc01462c412c3db3923 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 83e9873138fb178511119effbe21449c303a5063..9fb7f6d0532a7419674cc20e4fc6cb4b08c73514 100644 +index 022e58de15a359eb8e91d1d6007b19251b7e1a63..4169e11a3ad40f5b11fd9ab69ee85ae5be31265b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -123,6 +123,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1125,10 +1125,10 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 2ffceda6ce3cfe515f9348dafc28b04689d5a460..903016cc402bc688f4fd92f339b242db6dfe3841 100644 +index bae27f98d3deaa855da9bc2dc6e8bd7d80fea786..1e054e727243b9d47cc913f82cf8e026a9f4af44 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -194,6 +194,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -193,6 +193,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerTakeDamageFromWater; } @@ -1141,10 +1141,10 @@ index 2ffceda6ce3cfe515f9348dafc28b04689d5a460..903016cc402bc688f4fd92f339b242db public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 68d263a7647e395d981014f7cc761fe76fc74cb6..970b1f6eaeeddf9928ba61239248ecd2234eda9a 100644 +index bb18a29281df797e05d828caed0a604329209cba..6986fcbe67e55c4942d13b2af39bd6293bf993a9 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -98,6 +98,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -102,6 +102,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return this.level().purpurConfig.wanderingTraderTakeDamageFromWater; } @@ -1157,10 +1157,10 @@ index 68d263a7647e395d981014f7cc761fe76fc74cb6..970b1f6eaeeddf9928ba61239248ecd2 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c0047d22a638 100644 +index 3d07df1fbe7116df6f97a2fb3931e739c38b671e..41b856485bbb6872cc49cfdc460303e465c3143e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1048,12 +1048,14 @@ public class PurpurWorldConfig { +@@ -1044,12 +1044,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean batRidable = false; -@@ -1069,6 +1071,7 @@ public class PurpurWorldConfig { +@@ -1065,6 +1067,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1088,6 +1091,7 @@ public class PurpurWorldConfig { +@@ -1084,6 +1087,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean beeRidable = false; -@@ -1099,6 +1103,7 @@ public class PurpurWorldConfig { +@@ -1095,6 +1099,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1114,6 +1119,7 @@ public class PurpurWorldConfig { +@@ -1110,6 +1115,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1207,7 +1207,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean blazeRidable = false; -@@ -1122,6 +1128,7 @@ public class PurpurWorldConfig { +@@ -1118,6 +1124,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1134,6 +1141,7 @@ public class PurpurWorldConfig { +@@ -1130,6 +1137,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean camelRidableInWater = false; -@@ -1165,6 +1173,7 @@ public class PurpurWorldConfig { +@@ -1161,6 +1169,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1185,6 +1194,7 @@ public class PurpurWorldConfig { +@@ -1181,6 +1190,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean caveSpiderRidable = false; -@@ -1192,6 +1202,7 @@ public class PurpurWorldConfig { +@@ -1188,6 +1198,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1203,6 +1214,7 @@ public class PurpurWorldConfig { +@@ -1199,6 +1210,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean chickenRidable = false; -@@ -1212,6 +1224,7 @@ public class PurpurWorldConfig { +@@ -1208,6 +1220,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1225,12 +1238,14 @@ public class PurpurWorldConfig { +@@ -1221,12 +1234,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1241,6 +1256,7 @@ public class PurpurWorldConfig { +@@ -1237,6 +1252,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean cowRidable = false; -@@ -1252,6 +1268,7 @@ public class PurpurWorldConfig { +@@ -1248,6 +1264,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1272,6 +1289,7 @@ public class PurpurWorldConfig { +@@ -1268,6 +1285,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean creeperRidable = false; -@@ -1284,6 +1302,7 @@ public class PurpurWorldConfig { +@@ -1280,6 +1298,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1300,6 +1319,7 @@ public class PurpurWorldConfig { +@@ -1296,6 +1315,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean dolphinRidable = false; -@@ -1311,6 +1331,7 @@ public class PurpurWorldConfig { +@@ -1307,6 +1327,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1326,6 +1347,7 @@ public class PurpurWorldConfig { +@@ -1322,6 +1343,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean donkeyRidableInWater = false; -@@ -1337,6 +1359,7 @@ public class PurpurWorldConfig { +@@ -1333,6 +1355,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1354,6 +1377,7 @@ public class PurpurWorldConfig { +@@ -1350,6 +1373,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean drownedRidable = false; -@@ -1366,6 +1390,7 @@ public class PurpurWorldConfig { +@@ -1362,6 +1386,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1382,12 +1407,14 @@ public class PurpurWorldConfig { +@@ -1378,12 +1403,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1373,7 +1373,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1398,6 +1425,7 @@ public class PurpurWorldConfig { +@@ -1394,6 +1421,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean enderDragonRidable = false; -@@ -1443,6 +1471,7 @@ public class PurpurWorldConfig { +@@ -1439,6 +1467,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1466,6 +1495,7 @@ public class PurpurWorldConfig { +@@ -1462,6 +1491,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1397,7 +1397,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean endermiteRidable = false; -@@ -1473,6 +1503,7 @@ public class PurpurWorldConfig { +@@ -1469,6 +1499,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1484,6 +1515,7 @@ public class PurpurWorldConfig { +@@ -1480,6 +1511,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean evokerRidable = false; -@@ -1492,6 +1524,7 @@ public class PurpurWorldConfig { +@@ -1488,6 +1520,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1504,6 +1537,7 @@ public class PurpurWorldConfig { +@@ -1500,6 +1533,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1429,7 +1429,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean foxRidable = false; -@@ -1514,6 +1548,7 @@ public class PurpurWorldConfig { +@@ -1510,6 +1544,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1528,6 +1563,7 @@ public class PurpurWorldConfig { +@@ -1524,6 +1559,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1445,7 +1445,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean frogRidable = false; -@@ -1549,6 +1585,7 @@ public class PurpurWorldConfig { +@@ -1545,6 +1581,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1561,6 +1598,7 @@ public class PurpurWorldConfig { +@@ -1557,6 +1594,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean giantRidable = false; -@@ -1574,6 +1612,7 @@ public class PurpurWorldConfig { +@@ -1570,6 +1608,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1595,6 +1634,7 @@ public class PurpurWorldConfig { +@@ -1591,6 +1630,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean glowSquidRidable = false; -@@ -1602,12 +1642,14 @@ public class PurpurWorldConfig { +@@ -1598,12 +1638,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean goatRidable = false; -@@ -1616,6 +1658,7 @@ public class PurpurWorldConfig { +@@ -1612,6 +1654,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1623,12 +1666,14 @@ public class PurpurWorldConfig { +@@ -1619,12 +1662,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1639,6 +1684,7 @@ public class PurpurWorldConfig { +@@ -1635,6 +1680,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean forceHalloweenSeason = false; -@@ -1654,6 +1700,7 @@ public class PurpurWorldConfig { +@@ -1650,6 +1696,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1666,6 +1713,7 @@ public class PurpurWorldConfig { +@@ -1662,6 +1709,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1539,7 +1539,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean horseRidableInWater = false; -@@ -1677,6 +1725,7 @@ public class PurpurWorldConfig { +@@ -1673,6 +1721,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1694,6 +1743,7 @@ public class PurpurWorldConfig { +@@ -1690,6 +1739,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1555,7 +1555,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean huskRidable = false; -@@ -1705,6 +1755,7 @@ public class PurpurWorldConfig { +@@ -1701,6 +1751,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1720,6 +1771,7 @@ public class PurpurWorldConfig { +@@ -1716,6 +1767,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1571,7 +1571,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean illusionerRidable = false; -@@ -1729,6 +1781,7 @@ public class PurpurWorldConfig { +@@ -1725,6 +1777,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1746,6 +1799,7 @@ public class PurpurWorldConfig { +@@ -1742,6 +1795,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean ironGolemRidable = false; -@@ -1756,6 +1810,7 @@ public class PurpurWorldConfig { +@@ -1752,6 +1806,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1770,6 +1825,7 @@ public class PurpurWorldConfig { +@@ -1766,6 +1821,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1603,7 +1603,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean llamaRidable = false; -@@ -1784,6 +1840,7 @@ public class PurpurWorldConfig { +@@ -1780,6 +1836,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1804,6 +1861,7 @@ public class PurpurWorldConfig { +@@ -1800,6 +1857,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1619,7 +1619,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean magmaCubeRidable = false; -@@ -1814,6 +1872,7 @@ public class PurpurWorldConfig { +@@ -1810,6 +1868,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1828,6 +1887,7 @@ public class PurpurWorldConfig { +@@ -1824,6 +1883,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean mooshroomRidable = false; -@@ -1836,6 +1896,7 @@ public class PurpurWorldConfig { +@@ -1832,6 +1892,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1848,6 +1909,7 @@ public class PurpurWorldConfig { +@@ -1844,6 +1905,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1651,7 +1651,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean muleRidableInWater = false; -@@ -1859,6 +1921,7 @@ public class PurpurWorldConfig { +@@ -1855,6 +1917,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1876,6 +1939,7 @@ public class PurpurWorldConfig { +@@ -1872,6 +1935,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1667,7 +1667,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean ocelotRidable = false; -@@ -1884,6 +1948,7 @@ public class PurpurWorldConfig { +@@ -1880,6 +1944,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1896,6 +1961,7 @@ public class PurpurWorldConfig { +@@ -1892,6 +1957,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1683,7 +1683,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean pandaRidable = false; -@@ -1904,6 +1970,7 @@ public class PurpurWorldConfig { +@@ -1900,6 +1966,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1916,6 +1983,7 @@ public class PurpurWorldConfig { +@@ -1912,6 +1979,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1699,7 +1699,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean parrotRidable = false; -@@ -1925,6 +1993,7 @@ public class PurpurWorldConfig { +@@ -1921,6 +1989,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1938,6 +2007,7 @@ public class PurpurWorldConfig { +@@ -1934,6 +2003,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1715,7 +1715,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean phantomRidable = false; -@@ -1965,6 +2035,7 @@ public class PurpurWorldConfig { +@@ -1961,6 +2031,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2000,6 +2071,7 @@ public class PurpurWorldConfig { +@@ -1996,6 +2067,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean pigRidable = false; -@@ -2009,6 +2081,7 @@ public class PurpurWorldConfig { +@@ -2005,6 +2077,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2022,6 +2095,7 @@ public class PurpurWorldConfig { +@@ -2018,6 +2091,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean piglinRidable = false; -@@ -2031,6 +2105,7 @@ public class PurpurWorldConfig { +@@ -2027,6 +2101,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2044,6 +2119,7 @@ public class PurpurWorldConfig { +@@ -2040,6 +2115,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean piglinBruteRidable = false; -@@ -2051,6 +2127,7 @@ public class PurpurWorldConfig { +@@ -2047,6 +2123,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2062,6 +2139,7 @@ public class PurpurWorldConfig { +@@ -2058,6 +2135,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean pillagerRidable = false; -@@ -2070,6 +2148,7 @@ public class PurpurWorldConfig { +@@ -2066,6 +2144,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2082,6 +2161,7 @@ public class PurpurWorldConfig { +@@ -2078,6 +2157,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean polarBearRidable = false; -@@ -2092,6 +2172,7 @@ public class PurpurWorldConfig { +@@ -2088,6 +2168,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2107,12 +2188,14 @@ public class PurpurWorldConfig { +@@ -2103,12 +2184,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2123,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2119,6 +2202,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean rabbitRidable = false; -@@ -2134,6 +2218,7 @@ public class PurpurWorldConfig { +@@ -2130,6 +2214,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2149,6 +2234,7 @@ public class PurpurWorldConfig { +@@ -2145,6 +2230,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean ravagerRidable = false; -@@ -2158,6 +2244,7 @@ public class PurpurWorldConfig { +@@ -2154,6 +2240,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2187,12 +2274,14 @@ public class PurpurWorldConfig { +@@ -2183,12 +2270,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2203,6 +2292,7 @@ public class PurpurWorldConfig { +@@ -2199,6 +2288,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean sheepRidable = false; -@@ -2212,6 +2302,7 @@ public class PurpurWorldConfig { +@@ -2208,6 +2298,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2225,6 +2316,7 @@ public class PurpurWorldConfig { +@@ -2221,6 +2312,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean shulkerRidable = false; -@@ -2238,6 +2330,7 @@ public class PurpurWorldConfig { +@@ -2234,6 +2326,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2255,6 +2348,7 @@ public class PurpurWorldConfig { +@@ -2251,6 +2344,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean silverfishRidable = false; -@@ -2263,6 +2357,7 @@ public class PurpurWorldConfig { +@@ -2259,6 +2353,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2275,6 +2370,7 @@ public class PurpurWorldConfig { +@@ -2271,6 +2366,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean skeletonRidable = false; -@@ -2282,6 +2378,7 @@ public class PurpurWorldConfig { +@@ -2278,6 +2374,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2293,6 +2390,7 @@ public class PurpurWorldConfig { +@@ -2289,6 +2386,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean skeletonHorseRidableInWater = true; -@@ -2304,6 +2402,7 @@ public class PurpurWorldConfig { +@@ -2300,6 +2398,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2320,6 +2419,7 @@ public class PurpurWorldConfig { +@@ -2316,6 +2415,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean slimeRidable = false; -@@ -2330,6 +2430,7 @@ public class PurpurWorldConfig { +@@ -2326,6 +2426,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2344,6 +2445,7 @@ public class PurpurWorldConfig { +@@ -2340,6 +2441,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean snowGolemRidable = false; -@@ -2359,6 +2461,7 @@ public class PurpurWorldConfig { +@@ -2355,6 +2457,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2378,6 +2481,7 @@ public class PurpurWorldConfig { +@@ -2374,6 +2477,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean snifferRidable = false; -@@ -2400,6 +2504,7 @@ public class PurpurWorldConfig { +@@ -2396,6 +2500,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2413,6 +2518,7 @@ public class PurpurWorldConfig { +@@ -2409,6 +2514,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean spiderRidable = false; -@@ -2420,6 +2526,7 @@ public class PurpurWorldConfig { +@@ -2416,6 +2522,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2431,6 +2538,7 @@ public class PurpurWorldConfig { +@@ -2427,6 +2534,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean strayRidable = false; -@@ -2438,6 +2546,7 @@ public class PurpurWorldConfig { +@@ -2434,6 +2542,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2449,6 +2558,7 @@ public class PurpurWorldConfig { +@@ -2445,6 +2554,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean striderRidable = false; -@@ -2458,6 +2568,7 @@ public class PurpurWorldConfig { +@@ -2454,6 +2564,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2471,6 +2582,7 @@ public class PurpurWorldConfig { +@@ -2467,6 +2578,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean tadpoleRidable = false; -@@ -2493,6 +2605,7 @@ public class PurpurWorldConfig { +@@ -2489,6 +2601,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2512,12 +2625,14 @@ public class PurpurWorldConfig { +@@ -2508,12 +2621,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2528,6 +2643,7 @@ public class PurpurWorldConfig { +@@ -2524,6 +2639,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean turtleRidable = false; -@@ -2536,6 +2652,7 @@ public class PurpurWorldConfig { +@@ -2532,6 +2648,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2548,6 +2665,7 @@ public class PurpurWorldConfig { +@@ -2544,6 +2661,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean vexRidable = false; -@@ -2556,6 +2674,7 @@ public class PurpurWorldConfig { +@@ -2552,6 +2670,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2568,6 +2687,7 @@ public class PurpurWorldConfig { +@@ -2564,6 +2683,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean villagerRidable = false; -@@ -2583,6 +2703,7 @@ public class PurpurWorldConfig { +@@ -2579,6 +2699,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2602,6 +2723,7 @@ public class PurpurWorldConfig { +@@ -2598,6 +2719,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean vindicatorRidable = false; -@@ -2610,6 +2732,7 @@ public class PurpurWorldConfig { +@@ -2606,6 +2728,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2622,6 +2745,7 @@ public class PurpurWorldConfig { +@@ -2618,6 +2741,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean wanderingTraderRidable = false; -@@ -2632,6 +2756,7 @@ public class PurpurWorldConfig { +@@ -2628,6 +2752,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2646,6 +2771,7 @@ public class PurpurWorldConfig { +@@ -2642,6 +2767,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean wardenRidable = false; -@@ -2662,6 +2788,7 @@ public class PurpurWorldConfig { +@@ -2658,6 +2784,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2673,6 +2800,7 @@ public class PurpurWorldConfig { +@@ -2669,6 +2796,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean witherRidable = false; -@@ -2687,6 +2815,7 @@ public class PurpurWorldConfig { +@@ -2683,6 +2811,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2709,6 +2838,7 @@ public class PurpurWorldConfig { +@@ -2705,6 +2834,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean witherSkeletonRidable = false; -@@ -2716,6 +2846,7 @@ public class PurpurWorldConfig { +@@ -2712,6 +2842,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2727,6 +2858,7 @@ public class PurpurWorldConfig { +@@ -2723,6 +2854,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean wolfRidable = false; -@@ -2738,6 +2870,7 @@ public class PurpurWorldConfig { +@@ -2734,6 +2866,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2757,6 +2890,7 @@ public class PurpurWorldConfig { +@@ -2753,6 +2886,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean zoglinRidable = false; -@@ -2764,6 +2898,7 @@ public class PurpurWorldConfig { +@@ -2760,6 +2894,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2775,6 +2910,7 @@ public class PurpurWorldConfig { +@@ -2771,6 +2906,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean zombieRidable = false; -@@ -2788,6 +2924,7 @@ public class PurpurWorldConfig { +@@ -2784,6 +2920,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2805,6 +2942,7 @@ public class PurpurWorldConfig { +@@ -2801,6 +2938,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean zombieHorseRidableInWater = false; -@@ -2817,6 +2955,7 @@ public class PurpurWorldConfig { +@@ -2813,6 +2951,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2834,6 +2973,7 @@ public class PurpurWorldConfig { +@@ -2830,6 +2969,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean zombieVillagerRidable = false; -@@ -2848,6 +2988,7 @@ public class PurpurWorldConfig { +@@ -2844,6 +2984,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2866,6 +3007,7 @@ public class PurpurWorldConfig { +@@ -2862,6 +3003,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 } public boolean zombifiedPiglinRidable = false; -@@ -2878,6 +3020,7 @@ public class PurpurWorldConfig { +@@ -2874,6 +3016,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 0a43e97fa389cdfd3a542c25878f28afb88d15b7..e184a95a4ff3028ffa05fb4dad68c004 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2894,6 +3037,7 @@ public class PurpurWorldConfig { +@@ -2890,6 +3033,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/unapplied/server/0228-Potion-NamespacedKey.patch b/patches/server/0225-Potion-NamespacedKey.patch similarity index 75% rename from patches/unapplied/server/0228-Potion-NamespacedKey.patch rename to patches/server/0225-Potion-NamespacedKey.patch index 7e9785d9f..c82d073c7 100644 --- a/patches/unapplied/server/0228-Potion-NamespacedKey.patch +++ b/patches/server/0225-Potion-NamespacedKey.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Potion NamespacedKey diff --git a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bdaef6e474 100644 +index 68e1b8271475996020af50b3b2cf04cd25aa6c85..4f2fcbcf90d6f5ee89e35c993a65cae6c5b7ed91 100644 --- a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java +++ b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -@@ -14,6 +14,7 @@ import net.minecraft.util.ExtraCodecs; +@@ -16,6 +16,7 @@ import net.minecraft.util.ExtraCodecs; import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; import org.slf4j.Logger; @@ -16,7 +16,7 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd public class MobEffectInstance implements Comparable { private static final Logger LOGGER = LogUtils.getLogger(); -@@ -25,6 +26,7 @@ public class MobEffectInstance implements Comparable { +@@ -35,6 +36,7 @@ public class MobEffectInstance implements Comparable { private boolean visible; private boolean showIcon; @Nullable @@ -24,7 +24,7 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd private MobEffectInstance hiddenEffect; private final Optional factorData; -@@ -44,17 +46,36 @@ public class MobEffectInstance implements Comparable { +@@ -54,17 +56,36 @@ public class MobEffectInstance implements Comparable { this(type, duration, amplifier, ambient, visible, visible); } @@ -62,7 +62,7 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd this.hiddenEffect = hiddenEffect; this.factorData = factorCalculationData; } -@@ -75,6 +96,7 @@ public class MobEffectInstance implements Comparable { +@@ -85,6 +106,7 @@ public class MobEffectInstance implements Comparable { this.ambient = that.ambient; this.visible = that.visible; this.showIcon = that.showIcon; @@ -70,7 +70,7 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd } public boolean update(MobEffectInstance that) { -@@ -120,6 +142,13 @@ public class MobEffectInstance implements Comparable { +@@ -129,6 +151,13 @@ public class MobEffectInstance implements Comparable { bl = true; } @@ -84,7 +84,7 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd return bl; } -@@ -163,6 +192,17 @@ public class MobEffectInstance implements Comparable { +@@ -172,6 +201,17 @@ public class MobEffectInstance implements Comparable { return this.showIcon; } @@ -102,7 +102,7 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd public boolean tick(LivingEntity entity, Runnable overwriteCallback) { if (this.hasRemainingDuration()) { int i = this.isInfiniteDuration() ? entity.tickCount : this.duration; -@@ -226,6 +266,12 @@ public class MobEffectInstance implements Comparable { +@@ -232,6 +272,12 @@ public class MobEffectInstance implements Comparable { string = string + ", Show Icon: false"; } @@ -115,7 +115,7 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd return string; } -@@ -241,7 +287,7 @@ public class MobEffectInstance implements Comparable { +@@ -247,7 +293,7 @@ public class MobEffectInstance implements Comparable { return false; } else { MobEffectInstance mobEffectInstance = (MobEffectInstance)object; @@ -124,33 +124,33 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd } } -@@ -265,6 +311,11 @@ public class MobEffectInstance implements Comparable { - nbt.putBoolean("Ambient", this.isAmbient()); - nbt.putBoolean("ShowParticles", this.isVisible()); - nbt.putBoolean("ShowIcon", this.showIcon()); +@@ -272,6 +318,11 @@ public class MobEffectInstance implements Comparable { + nbt.putBoolean("ambient", this.isAmbient()); + nbt.putBoolean("show_particles", this.isVisible()); + nbt.putBoolean("show_icon", this.showIcon()); + // Purpur start + if (this.key != null) { -+ nbt.putString("Key", this.key.toString()); ++ nbt.putString("key", this.key.toString()); + } + // Purpur end if (this.hiddenEffect != null) { CompoundTag compoundTag = new CompoundTag(); this.hiddenEffect.save(compoundTag); -@@ -299,6 +350,13 @@ public class MobEffectInstance implements Comparable { - bl3 = nbt.getBoolean("ShowIcon"); +@@ -306,6 +357,13 @@ public class MobEffectInstance implements Comparable { + bl3 = nbt.getBoolean("show_icon"); } + // Purpur start + NamespacedKey key = null; -+ if (nbt.contains("Key")) { -+ key = NamespacedKey.fromString(nbt.getString("Key")); ++ if (nbt.contains("key")) { ++ key = NamespacedKey.fromString(nbt.getString("key")); + } + // Purpur end + MobEffectInstance mobEffectInstance = null; - if (nbt.contains("HiddenEffect", 10)) { - mobEffectInstance = loadSpecifiedEffect(type, nbt.getCompound("HiddenEffect")); -@@ -311,7 +369,7 @@ public class MobEffectInstance implements Comparable { + if (nbt.contains("hidden_effect", 10)) { + mobEffectInstance = loadSpecifiedEffect(type, nbt.getCompound("hidden_effect")); +@@ -318,7 +376,7 @@ public class MobEffectInstance implements Comparable { optional = Optional.empty(); } @@ -160,24 +160,24 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 72dcac5708c06556549d268e54ecb4b6e71c93be..7f1c7532adace841baec500598133981a6feb78a 100644 +index a6934034c9fc8e3f04365d7595fccbe68fc093b6..5ca34447926510f1d4c5c5ba9eb3c7c6369a85de 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -465,7 +465,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @Override public boolean addPotionEffect(PotionEffect effect, boolean force) { org.spigotmc.AsyncCatcher.catchOp("effect add"); // Paper -- this.getHandle().addEffect(new MobEffectInstance(MobEffect.byId(effect.getType().getId()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon()), EntityPotionEffectEvent.Cause.PLUGIN); // Paper - Don't ignore icon -+ this.getHandle().addEffect(new MobEffectInstance(MobEffect.byId(effect.getType().getId()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()), EntityPotionEffectEvent.Cause.PLUGIN); // Purpur - add key // Paper - Don't ignore icon +- this.getHandle().addEffect(new MobEffectInstance(CraftPotionEffectType.bukkitToMinecraft(effect.getType()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon()), EntityPotionEffectEvent.Cause.PLUGIN); // Paper - Don't ignore icon ++ this.getHandle().addEffect(new MobEffectInstance(CraftPotionEffectType.bukkitToMinecraft(effect.getType()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()), EntityPotionEffectEvent.Cause.PLUGIN); // Purpur - add key // Paper - Don't ignore icon return true; } @@ -486,7 +486,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @Override public PotionEffect getPotionEffect(PotionEffectType type) { - MobEffectInstance handle = this.getHandle().getEffect(MobEffect.byId(type.getId())); -- return (handle == null) ? null : new PotionEffect(PotionEffectType.getById(MobEffect.getId(handle.getEffect())), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible()); -+ return (handle == null) ? null : new PotionEffect(PotionEffectType.getById(MobEffect.getId(handle.getEffect())), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible(), handle.getKey()); // Purpur - add key + MobEffectInstance handle = this.getHandle().getEffect(CraftPotionEffectType.bukkitToMinecraft(type)); +- return (handle == null) ? null : new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible()); ++ return (handle == null) ? null : new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible(), handle.getKey()); // Purpur - add key } @Override @@ -185,32 +185,24 @@ index 72dcac5708c06556549d268e54ecb4b6e71c93be..7f1c7532adace841baec500598133981 public Collection getActivePotionEffects() { List effects = new ArrayList(); for (MobEffectInstance handle : this.getHandle().activeEffects.values()) { -- effects.add(new PotionEffect(PotionEffectType.getById(MobEffect.getId(handle.getEffect())), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible())); -+ effects.add(new PotionEffect(PotionEffectType.getById(MobEffect.getId(handle.getEffect())), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible(), handle.getKey())); // Purpur - add key +- effects.add(new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible())); ++ effects.add(new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible()), handle.getKey()); // Purpur - add key } return effects; } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -index d94ab2607d1ab657a6b37924ce5ebcbbc3984011..f594596029513426f974ba820ed4702703b667a4 100644 +index 5a71efd27180004ee91495d9255867dbdfa1783e..1dcc3405393d11836a21aa16e435be64c04f6e7d 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -@@ -13,6 +13,7 @@ import net.minecraft.nbt.CompoundTag; - import net.minecraft.nbt.ListTag; - import org.bukkit.Color; - import org.bukkit.Material; -+import org.bukkit.NamespacedKey; - import org.bukkit.configuration.serialization.DelegateDeserialization; - import org.bukkit.craftbukkit.inventory.CraftMetaItem.SerializableMeta; - import org.bukkit.craftbukkit.potion.CraftPotionUtil; -@@ -42,6 +43,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { +@@ -43,6 +43,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { static final ItemMetaKey POTION_COLOR = new ItemMetaKey("CustomPotionColor", "custom-color"); - static final ItemMetaKey ID = new ItemMetaKey("Id", "potion-id"); + static final ItemMetaKey ID = new ItemMetaKey("id", "potion-id"); static final ItemMetaKey DEFAULT_POTION = new ItemMetaKey("Potion", "potion-type"); -+ static final ItemMetaKey KEY = new ItemMetaKey("Key", "namespacedkey"); // Purpur - add key ++ static final ItemMetaKey KEY = new ItemMetaKey("key", "namespacedkey"); // Purpur - add key // Having an initial "state" in ItemMeta seems bit dirty but the UNCRAFTABLE potion type // is treated as the empty form of the meta because it represents an empty potion with no effect -@@ -91,7 +93,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { +@@ -92,7 +93,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { boolean ambient = effect.getBoolean(AMBIENT.NBT); boolean particles = effect.contains(SHOW_PARTICLES.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_PARTICLES.NBT) : true; boolean icon = effect.contains(SHOW_ICON.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(SHOW_ICON.NBT) : particles; @@ -225,7 +217,7 @@ index d94ab2607d1ab657a6b37924ce5ebcbbc3984011..f594596029513426f974ba820ed47027 } } } -@@ -138,6 +146,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { +@@ -139,6 +146,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { effectData.putBoolean(AMBIENT.NBT, effect.isAmbient()); effectData.putBoolean(SHOW_PARTICLES.NBT, effect.hasParticles()); effectData.putBoolean(SHOW_ICON.NBT, effect.hasIcon()); @@ -237,7 +229,7 @@ index d94ab2607d1ab657a6b37924ce5ebcbbc3984011..f594596029513426f974ba820ed47027 effectList.add(effectData); } } -@@ -199,7 +212,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { +@@ -200,7 +212,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { if (index != -1) { if (overwrite) { PotionEffect old = this.customEffects.get(index); @@ -247,13 +239,13 @@ index d94ab2607d1ab657a6b37924ce5ebcbbc3984011..f594596029513426f974ba820ed47027 } this.customEffects.set(index, effect); diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -index acb69821a99aa69bce6d127e10976089c85be223..c5abd73981c5f4b41605eba0d44e6573dfd2a77a 100644 +index 354393cbf0f113f14e936b40da56125a3130cbd9..a1ef7ecdf272546bdd76bb4b2ecd86a69c51c777 100644 --- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java +++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java @@ -101,7 +101,7 @@ public class CraftPotionUtil { public static MobEffectInstance fromBukkit(PotionEffect effect) { - MobEffect type = MobEffect.byId(effect.getType().getId()); + MobEffect type = CraftPotionEffectType.bukkitToMinecraft(effect.getType()); - return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles()); + return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.getKey()); // Purpur - add key } @@ -269,7 +261,7 @@ index acb69821a99aa69bce6d127e10976089c85be223..c5abd73981c5f4b41605eba0d44e6573 public static boolean equals(MobEffect mobEffect, PotionEffectType type) { diff --git a/src/test/java/org/bukkit/potion/PotionTest.java b/src/test/java/org/bukkit/potion/PotionTest.java -index 83226ec2fa977819e12a499eb3765232543c17b3..a742774dabaee0629f4e6adabee5f3ec4b3be41c 100644 +index 9457c66bd81f202e009c94f732c8e8e7f2ab9957..863f140260657f224fa3a2eb0bc6f929f74f5c0d 100644 --- a/src/test/java/org/bukkit/potion/PotionTest.java +++ b/src/test/java/org/bukkit/potion/PotionTest.java @@ -9,6 +9,7 @@ import net.minecraft.resources.ResourceLocation; @@ -277,10 +269,10 @@ index 83226ec2fa977819e12a499eb3765232543c17b3..a742774dabaee0629f4e6adabee5f3ec import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.alchemy.Potion; +import org.bukkit.NamespacedKey; + import org.bukkit.craftbukkit.potion.CraftPotionEffectType; import org.bukkit.support.AbstractTestingBase; import org.junit.Test; - -@@ -47,4 +48,27 @@ public class PotionTest extends AbstractTestingBase { +@@ -46,4 +47,27 @@ public class PotionTest extends AbstractTestingBase { assertEquals("Same type not returned by name " + key, bukkit, byName); } } diff --git a/patches/unapplied/server/0229-Grindstone-API.patch b/patches/server/0226-Grindstone-API.patch similarity index 95% rename from patches/unapplied/server/0229-Grindstone-API.patch rename to patches/server/0226-Grindstone-API.patch index c1b78036d..62b41be83 100644 --- a/patches/unapplied/server/0229-Grindstone-API.patch +++ b/patches/server/0226-Grindstone-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Grindstone API diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index 6860e3467bf785e9d017fc98fce1e3cf71f9b6ee..23a8522b80475ad29ffb4afd2f4836acda2538e3 100644 +index 132a07e226ae3ac6b5abc6f53c62345e2ab2f31f..3b721092a7a73472756064e0eb91d3220fdc4bc8 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { diff --git a/patches/unapplied/server/0230-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 94% rename from patches/unapplied/server/0230-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 6f0bf21ae..21996dc6f 100644 --- a/patches/unapplied/server/0230-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -34,10 +34,10 @@ index 03fde6e47c4a347c62fe9b4a3351769aedf874f6..ca906b0250e5332f7ececf1419ca6d2c + // Purpur end } 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 373fda589014c71c07170ec6707d5ff66d46ddd5..26b3f162f25bed3e9d8001e3d9c2f8d7d4b3e08a 100644 +index 3f429f083f45d34effc273ccaa5db4da089f7355..61d051f42d8c3d1f039b97fdc7a61b54f57ee86a 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java -@@ -203,4 +203,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock { +@@ -207,4 +207,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(CropBlock.AGE); } @@ -74,10 +74,10 @@ index e55720c4d2fbdf6aae526910e87a67c29cf906fd..74fedd3e401c6d58c03c0579f4b91911 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e184a95a4ff3028ffa05fb4dad68c0047d22a638..98c39a3297e676c7c780430180f5e98076b7e718 100644 +index 41b856485bbb6872cc49cfdc460303e465c3143e..bda73dd90c7d5e72996efca0a41e7f4785c6f548 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -547,6 +547,8 @@ public class PurpurWorldConfig { +@@ -543,6 +543,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index e184a95a4ff3028ffa05fb4dad68c0047d22a638..98c39a3297e676c7c780430180f5e980 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -740,6 +742,8 @@ public class PurpurWorldConfig { +@@ -736,6 +738,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/unapplied/server/0231-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0228-Shearing-jeb-produces-random-color-wool.patch similarity index 85% rename from patches/unapplied/server/0231-Shearing-jeb-produces-random-color-wool.patch rename to patches/server/0228-Shearing-jeb-produces-random-color-wool.patch index 8935e148a..94433ce00 100644 --- a/patches/unapplied/server/0231-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0228-Shearing-jeb-produces-random-color-wool.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shearing jeb produces random color wool diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index a1b323ecba25910e97f154e487acc94943117e0c..62d8ae4c689170420c7850fbbb402be85b565882 100644 +index f2d0c67709e38209a8a02e98f4392b9e0a53c211..fb477c3c594bb81e92ae0c606635c309840d0dc5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -315,7 +315,7 @@ public class Sheep extends Animal implements Shearable { +@@ -317,7 +317,7 @@ public class Sheep extends Animal implements Shearable { for (int j = 0; j < i; ++j) { this.forceDrops = true; // CraftBukkit @@ -18,10 +18,10 @@ index a1b323ecba25910e97f154e487acc94943117e0c..62d8ae4c689170420c7850fbbb402be8 if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98c39a3297e676c7c780430180f5e98076b7e718..6edb5b4cac3ac9cf7d080293f0b582df31fe2c86 100644 +index bda73dd90c7d5e72996efca0a41e7f4785c6f548..fad281ec8314d4431126abbcea997932401ea95e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2307,6 +2307,7 @@ public class PurpurWorldConfig { +@@ -2303,6 +2303,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 98c39a3297e676c7c780430180f5e98076b7e718..6edb5b4cac3ac9cf7d080293f0b582df private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2321,6 +2322,7 @@ public class PurpurWorldConfig { +@@ -2317,6 +2318,7 @@ public class PurpurWorldConfig { sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); diff --git a/patches/unapplied/server/0232-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch similarity index 86% rename from patches/unapplied/server/0232-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch index 6477054a3..78b87573e 100644 --- a/patches/unapplied/server/0232-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Turtle eggs random tick crack chance diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 86360fad47e4cda64b02ce4c8c0227649ed69a5d..b211d7b37095b52424ead1bb0be0c81bc4322985 100644 +index 9c834e3deed07eb70e6a57df2db732c1e2334737..8e975daca6a50c95d7fb620f2756b8bb2b7c7d6b 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -160,7 +160,7 @@ public class TurtleEggBlock extends Block { +@@ -162,7 +162,7 @@ public class TurtleEggBlock extends Block { private boolean shouldUpdateHatchLevel(Level world) { float f = world.getTimeOfDay(1.0F); @@ -18,10 +18,10 @@ index 86360fad47e4cda64b02ce4c8c0227649ed69a5d..b211d7b37095b52424ead1bb0be0c81b @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6edb5b4cac3ac9cf7d080293f0b582df31fe2c86..30e63ae6bc35efc64a016966f55bfb1e7df52d89 100644 +index fad281ec8314d4431126abbcea997932401ea95e..c300838d83652a36389694e7afbec5feff11cd8a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1015,11 +1015,13 @@ public class PurpurWorldConfig { +@@ -1011,11 +1011,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/unapplied/server/0233-Mob-head-visibility-percent.patch b/patches/server/0230-Mob-head-visibility-percent.patch similarity index 89% rename from patches/unapplied/server/0233-Mob-head-visibility-percent.patch rename to patches/server/0230-Mob-head-visibility-percent.patch index 104090484..cbd81d506 100644 --- a/patches/unapplied/server/0233-Mob-head-visibility-percent.patch +++ b/patches/server/0230-Mob-head-visibility-percent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 21d6851cb903f214db92109a6c16bb7367e40e1c..aff8b1b0683e52038b6d92e052a012c9198bf8ce 100644 +index 7c91aa226517d9d574f102e3e4976904b419e657..11761085514d54e23fece41a408b74a2bde3effc 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1040,9 +1040,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1041,9 +1041,20 @@ public abstract class LivingEntity extends Entity implements Attackable { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); @@ -32,10 +32,10 @@ index 21d6851cb903f214db92109a6c16bb7367e40e1c..aff8b1b0683e52038b6d92e052a012c9 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 30e63ae6bc35efc64a016966f55bfb1e7df52d89..91af2d4187b2e61426539d018900c810d048efc9 100644 +index c300838d83652a36389694e7afbec5feff11cd8a..a5f86aa5c3cd08dddb147c338a124953cacbf178 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1309,6 +1309,7 @@ public class PurpurWorldConfig { +@@ -1305,6 +1305,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 30e63ae6bc35efc64a016966f55bfb1e7df52d89..91af2d4187b2e61426539d018900c810 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1326,6 +1327,7 @@ public class PurpurWorldConfig { +@@ -1322,6 +1323,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index 30e63ae6bc35efc64a016966f55bfb1e7df52d89..91af2d4187b2e61426539d018900c810 } public boolean dolphinRidable = false; -@@ -2112,6 +2114,7 @@ public class PurpurWorldConfig { +@@ -2108,6 +2110,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 30e63ae6bc35efc64a016966f55bfb1e7df52d89..91af2d4187b2e61426539d018900c810 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2126,6 +2129,7 @@ public class PurpurWorldConfig { +@@ -2122,6 +2125,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index 30e63ae6bc35efc64a016966f55bfb1e7df52d89..91af2d4187b2e61426539d018900c810 } public boolean piglinBruteRidable = false; -@@ -2387,6 +2391,7 @@ public class PurpurWorldConfig { +@@ -2383,6 +2387,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 30e63ae6bc35efc64a016966f55bfb1e7df52d89..91af2d4187b2e61426539d018900c810 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2399,6 +2404,7 @@ public class PurpurWorldConfig { +@@ -2395,6 +2400,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index 30e63ae6bc35efc64a016966f55bfb1e7df52d89..91af2d4187b2e61426539d018900c810 } public boolean skeletonHorseRidableInWater = true; -@@ -2933,6 +2939,7 @@ public class PurpurWorldConfig { +@@ -2929,6 +2935,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 30e63ae6bc35efc64a016966f55bfb1e7df52d89..91af2d4187b2e61426539d018900c810 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2951,6 +2958,7 @@ public class PurpurWorldConfig { +@@ -2947,6 +2954,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/unapplied/server/0234-Configurable-valid-characters-for-usernames.patch b/patches/server/0231-Configurable-valid-characters-for-usernames.patch similarity index 91% rename from patches/unapplied/server/0234-Configurable-valid-characters-for-usernames.patch rename to patches/server/0231-Configurable-valid-characters-for-usernames.patch index 664d05272..d32428a81 100644 --- a/patches/unapplied/server/0234-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0231-Configurable-valid-characters-for-usernames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable valid characters for usernames diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index b4b88a3d4dc66c44ca8f3bad1025c17a9993ac1d..01d5fa265fb2818465b5a71a2e2efeec751a7a05 100644 +index e615e417627840d645db259bc9640a0471a52b05..f0bbc48e2df1da42e4bf9f7113451738b986fbbf 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -221,6 +221,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -141,6 +141,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, return false; } diff --git a/patches/unapplied/server/0235-Shears-can-have-looting-enchantment.patch b/patches/server/0232-Shears-can-have-looting-enchantment.patch similarity index 93% rename from patches/unapplied/server/0235-Shears-can-have-looting-enchantment.patch rename to patches/server/0232-Shears-can-have-looting-enchantment.patch index 5a2131cef..01fadb23a 100644 --- a/patches/unapplied/server/0235-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0232-Shears-can-have-looting-enchantment.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shears can have looting enchantment diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -index 9b0049dfeaec9b688bf276f2ac2b18943b5696b2..d7563904232353cbf3b9255cedfb75920e35220c 100644 +index e17090003988ad2c890d48666c2234b14d511345..433f1f11b8b92c7d48352416f79ab5a394c33287 100644 --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java @@ -107,7 +107,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { @@ -37,10 +37,10 @@ index 5e8cc5cfac8888628c6d513148f41be09ca65a2c..a089fc61ec09be6b7490375489178dc6 boolean readyForShearing(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 1b0a0e36baa0f664f06b2d166aa907b320066b6e..e462b81aa1276a8f1222b74459359f6c6d57f739 100644 +index ab5b150b379598861666ad32906e1fe454437063..59ef1070c6c1ac876e097cd23835e4ed8b6e732f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -164,7 +164,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { -@@ -207,7 +207,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { entityhuman1.broadcastBreakEvent(hand); -@@ -308,10 +308,11 @@ public class Sheep extends Animal implements Shearable { +@@ -310,10 +310,11 @@ public class Sheep extends Animal implements Shearable { } @Override @@ -139,11 +139,11 @@ index 859435f747ceef860cb4e9e825a7353ea3b90798..fc2c35f57436371cb0111aedfd289ac9 }; diff --git a/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java -index 4007c16550683e23b396dfdff29530a82523fe05..8fe09c13643d99639fb242da4367c42ef31b38b4 100644 +index 7f1ffc0ac402fcf0ec086986e959ecc9f78dde03..1351d52374d1c2367932e5ecd5f4637955fb14c9 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java +++ b/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java @@ -7,6 +7,14 @@ public class LootBonusEnchantment extends Enchantment { - super(weight, target, slotTypes); + super(rarity, target, slotTypes); } + // Purpur start diff --git a/patches/unapplied/server/0236-Stop-bees-from-dying-after-stinging.patch b/patches/server/0233-Stop-bees-from-dying-after-stinging.patch similarity index 90% rename from patches/unapplied/server/0236-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0233-Stop-bees-from-dying-after-stinging.patch index 254bdbdf4..4f22108b7 100644 --- a/patches/unapplied/server/0236-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0233-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index ac4ca4de2be18a08268b24dfe259cfd136b1a4da..e837500019157129007841c847d807eb ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 91af2d4187b2e61426539d018900c810d048efc9..a419aa0b06d5215ec66649dde8822120eb91a0f3 100644 +index a5f86aa5c3cd08dddb147c338a124953cacbf178..60beda5c1f3b7ca562b8ba9ff48e0c6e50e89649 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1110,6 +1110,7 @@ public class PurpurWorldConfig { +@@ -1106,6 +1106,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 91af2d4187b2e61426539d018900c810d048efc9..a419aa0b06d5215ec66649dde8822120 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1126,6 +1127,7 @@ public class PurpurWorldConfig { +@@ -1122,6 +1123,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/unapplied/server/0237-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 91% rename from patches/unapplied/server/0237-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 1c0d9b0d5..94899158c 100644 --- a/patches/unapplied/server/0237-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3a9fe6d9f2e7406ffc368e2dadaab803b591f5c2..d474e2ce24d822254c1ac0c9d9468ac13f9cca86 100644 +index 5018f85fd87fe167389706bda04327bbe7d2c17a..ad403421711052faf36cb6b063997cfa90712423 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1033,6 +1033,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= 0) { // Purpur @@ -35,10 +35,10 @@ index 0a9d8b22c7127b87826d9d256a5f36c34f2bfc0f..d00035e31cf4773a418d1cc6a6018d08 } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 948269a1ce9fe56bfa77e02a1671b993d5d44699..365849cce2cacd8c884d1e8e27b1b6723b1bb223 100644 +index 3d1107d954d8dd040895908ddadf2c11c437a9ef..f0f83c4570c79ed88275631ee35aa20e5ef27748 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -424,6 +424,7 @@ public class PurpurWorldConfig { +@@ -422,6 +422,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index 948269a1ce9fe56bfa77e02a1671b993d5d44699..365849cce2cacd8c884d1e8e27b1b672 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -453,6 +454,7 @@ public class PurpurWorldConfig { +@@ -449,6 +450,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/unapplied/server/0240-Allow-void-trading.patch b/patches/server/0237-Allow-void-trading.patch similarity index 87% rename from patches/unapplied/server/0240-Allow-void-trading.patch rename to patches/server/0237-Allow-void-trading.patch index 203c3e2a8..bb9030285 100644 --- a/patches/unapplied/server/0240-Allow-void-trading.patch +++ b/patches/server/0237-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 8cbb36b2dbcb9a1470c95746d7d481a142419164..122defeec159165c5fef295ec1dd2da4a6ada622 100644 +index cb35bac1923fe40f172a521ce5892e0dcfd7e305..7ded6820b9b0b493a72e158d7a92d5062d2948ef 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2837,7 +2837,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2725,7 +2725,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start @@ -18,10 +18,10 @@ index 8cbb36b2dbcb9a1470c95746d7d481a142419164..122defeec159165c5fef295ec1dd2da4 } // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 365849cce2cacd8c884d1e8e27b1b6723b1bb223..0f12ebf1ce10f66fd329e0b768891607238b52d1 100644 +index f0f83c4570c79ed88275631ee35aa20e5ef27748..6008732a98759ac23daab766ea986162b816945f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -425,6 +425,7 @@ public class PurpurWorldConfig { +@@ -423,6 +423,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index 365849cce2cacd8c884d1e8e27b1b6723b1bb223..0f12ebf1ce10f66fd329e0b768891607 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -455,6 +456,7 @@ public class PurpurWorldConfig { +@@ -451,6 +452,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/unapplied/server/0241-Configurable-phantom-size.patch b/patches/server/0238-Configurable-phantom-size.patch similarity index 87% rename from patches/unapplied/server/0241-Configurable-phantom-size.patch rename to patches/server/0238-Configurable-phantom-size.patch index f5721ed8d..54fe29305 100644 --- a/patches/unapplied/server/0241-Configurable-phantom-size.patch +++ b/patches/server/0238-Configurable-phantom-size.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable phantom size diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index f71cbaabfff370f019f124203fb947ea7a817d95..17638b9d3340c86528a8ae597712c7590b98dba6 100644 +index ab9ed9acc394dedf2151b83ff5cf998e0e0be21e..355445b7f8972cb789d33f59d03c382f238c294d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -271,7 +271,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -272,7 +272,11 @@ public class Phantom extends FlyingMob implements Enemy { @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { this.anchorPoint = this.blockPosition().above(5); @@ -22,10 +22,10 @@ index f71cbaabfff370f019f124203fb947ea7a817d95..17638b9d3340c86528a8ae597712c759 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0f12ebf1ce10f66fd329e0b768891607238b52d1..fdb99c7565e0b23443d783fa01aa3f9cea5b3132 100644 +index 6008732a98759ac23daab766ea986162b816945f..807ca55a5734fccb10b1aae2d99e0b37aeffc614 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2052,6 +2052,8 @@ public class PurpurWorldConfig { +@@ -2048,6 +2048,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 0f12ebf1ce10f66fd329e0b768891607238b52d1..fdb99c7565e0b23443d783fa01aa3f9c private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2088,6 +2090,13 @@ public class PurpurWorldConfig { +@@ -2084,6 +2086,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/unapplied/server/0242-Configurable-food-attributes.patch b/patches/server/0239-Configurable-food-attributes.patch similarity index 100% rename from patches/unapplied/server/0242-Configurable-food-attributes.patch rename to patches/server/0239-Configurable-food-attributes.patch diff --git a/patches/unapplied/server/0243-Max-joins-per-second.patch b/patches/server/0240-Max-joins-per-second.patch similarity index 93% rename from patches/unapplied/server/0243-Max-joins-per-second.patch rename to patches/server/0240-Max-joins-per-second.patch index 8b6a30d7c..049b56992 100644 --- a/patches/unapplied/server/0243-Max-joins-per-second.patch +++ b/patches/server/0240-Max-joins-per-second.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Max joins per second When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index cf20f0983fc25b26cf92b9d3a28746b1909fc56b..89c1b69ddeb420c2fbda5f588e7c9a467a76089d 100644 +index 91fcb63835b0b725c53bc75be782b5c5bcc870e7..52639268f0db741e0eb67dc02f9d6e74aeccae6c 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -579,11 +579,20 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -569,11 +569,20 @@ public class Connection extends SimpleChannelInboundHandler> { private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper private static int joinAttemptsThisTick; // Paper private static int currTick; // Paper diff --git a/patches/unapplied/server/0244-Configurable-minimum-demand-for-trades.patch b/patches/server/0241-Configurable-minimum-demand-for-trades.patch similarity index 85% rename from patches/unapplied/server/0244-Configurable-minimum-demand-for-trades.patch rename to patches/server/0241-Configurable-minimum-demand-for-trades.patch index 690b34a95..c3b276586 100644 --- a/patches/unapplied/server/0244-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0241-Configurable-minimum-demand-for-trades.patch @@ -9,10 +9,10 @@ This patch adds a config option to allow the minimum demand to instead be configurable. diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 903016cc402bc688f4fd92f339b242db6dfe3841..0d817148dedd9919e6e1dd0c38c96a57ad919ced 100644 +index 1e054e727243b9d47cc913f82cf8e026a9f4af44..46a3f321e4673401ee597f779d5f61441e7c3598 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -545,7 +545,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -540,7 +540,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler while (iterator.hasNext()) { MerchantOffer merchantrecipe = (MerchantOffer) iterator.next(); @@ -22,10 +22,10 @@ index 903016cc402bc688f4fd92f339b242db6dfe3841..0d817148dedd9919e6e1dd0c38c96a57 } diff --git a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java -index 28bdcb14cb5b458d3c990fcf343ef97f08e4f3c6..48167334162443365bb8a6d082a51b2c626ab3d8 100644 +index 4f7457578ab3118d10e0d5dfc23d79c9b20c2f44..e03ce53b93d1b9366f2a7f14f341750a163ae0db 100644 --- a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java +++ b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java -@@ -134,7 +134,12 @@ public class MerchantOffer { +@@ -149,7 +149,12 @@ public class MerchantOffer { } public void updateDemand() { @@ -40,10 +40,10 @@ index 28bdcb14cb5b458d3c990fcf343ef97f08e4f3c6..48167334162443365bb8a6d082a51b2c public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fdb99c7565e0b23443d783fa01aa3f9cea5b3132..fd141b5aaf45b6ae5aba56143c02f6a54133b9c8 100644 +index 807ca55a5734fccb10b1aae2d99e0b37aeffc614..321c625b1374e1a5676459d33f071d62ad45437b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2735,6 +2735,7 @@ public class PurpurWorldConfig { +@@ -2731,6 +2731,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index fdb99c7565e0b23443d783fa01aa3f9cea5b3132..fd141b5aaf45b6ae5aba56143c02f6a5 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2755,6 +2756,7 @@ public class PurpurWorldConfig { +@@ -2751,6 +2752,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/unapplied/server/0245-Lobotomize-stuck-villagers.patch b/patches/server/0242-Lobotomize-stuck-villagers.patch similarity index 81% rename from patches/unapplied/server/0245-Lobotomize-stuck-villagers.patch rename to patches/server/0242-Lobotomize-stuck-villagers.patch index 01076a16b..78f13e719 100644 --- a/patches/unapplied/server/0245-Lobotomize-stuck-villagers.patch +++ b/patches/server/0242-Lobotomize-stuck-villagers.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Lobotomize stuck villagers diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 0d817148dedd9919e6e1dd0c38c96a57ad919ced..3eb7ac97ea11d0c47ecbc047e2e64c17baaa70f4 100644 +index 46a3f321e4673401ee597f779d5f61441e7c3598..d70639fef24b6a8a3b504723992a050edbc16f61 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -140,6 +140,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -141,6 +141,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler }, MemoryModuleType.MEETING_POINT, (entityvillager, holder) -> { return holder.is(PoiTypes.MEETING); }); + private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur + private int notLobotomizedCount = 0; // Purpur - public long nextGolemPanic = -1; // Pufferfish - -@@ -199,6 +201,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + public Villager(EntityType entityType, Level world) { + this(entityType, world, VillagerType.PLAINS); +@@ -198,6 +200,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerAlwaysDropExp; } @@ -65,7 +65,7 @@ index 0d817148dedd9919e6e1dd0c38c96a57ad919ced..3eb7ac97ea11d0c47ecbc047e2e64c17 @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -296,14 +339,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -294,10 +337,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper start this.customServerAiStep(false); } @@ -73,9 +73,7 @@ index 0d817148dedd9919e6e1dd0c38c96a57ad919ced..3eb7ac97ea11d0c47ecbc047e2e64c17 + protected void customServerAiStep(boolean inactive) { // Purpur - not final // Paper end this.level().getProfiler().push("villagerBrain"); -- // Pufferfish start -- if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider -- this.getBrain().tick((ServerLevel) this.level(), this); // Paper +- //if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + // Purpur start + if (this.level().purpurConfig.villagerLobotomizeEnabled) { + // treat as inactive if lobotomized @@ -83,20 +81,19 @@ index 0d817148dedd9919e6e1dd0c38c96a57ad919ced..3eb7ac97ea11d0c47ecbc047e2e64c17 + } else { + // clean up state for API + this.isLobotomized = false; - } -- // Pufferfish end -+ if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Purpur - only use brain if no rider ++ } ++ /*if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish + this.getBrain().tick((ServerLevel) this.level(), this); // Paper -+ else if (this.isLobotomized && shouldRestock()) restock(); ++ else */if (this.isLobotomized && shouldRestock()) restock(); + // Purpur end + if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper this.level().getProfiler().pop(); if (this.assignProfessionWhenSpawned) { - this.assignProfessionWhenSpawned = false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index f29e221e5b850516c169c03bfbd2b0885d1a841b..9e343d6e6393db17748fd13d76354464e128001f 100644 +index a67b5d20b956e0bf801c9eeb9330567c21927010..15c7dd5ae4ea040b91b665e5ce05c0d35ab1604e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -216,4 +216,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { +@@ -252,4 +252,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { getHandle().getGossips().gossips.clear(); } // Paper end @@ -109,10 +106,10 @@ index f29e221e5b850516c169c03bfbd2b0885d1a841b..9e343d6e6393db17748fd13d76354464 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fd141b5aaf45b6ae5aba56143c02f6a54133b9c8..852d04096a1d2eb747183407f850cc9eafe44e1a 100644 +index 321c625b1374e1a5676459d33f071d62ad45437b..3fa481c71331a19b58511392a840f47915639ce2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2736,6 +2736,8 @@ public class PurpurWorldConfig { +@@ -2732,6 +2732,8 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -121,7 +118,7 @@ index fd141b5aaf45b6ae5aba56143c02f6a54133b9c8..852d04096a1d2eb747183407f850cc9e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2757,6 +2759,17 @@ public class PurpurWorldConfig { +@@ -2753,6 +2755,17 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/unapplied/server/0246-Option-for-villager-display-trade-item.patch b/patches/server/0243-Option-for-villager-display-trade-item.patch similarity index 87% rename from patches/unapplied/server/0246-Option-for-villager-display-trade-item.patch rename to patches/server/0243-Option-for-villager-display-trade-item.patch index 6514f646e..98e7dfb00 100644 --- a/patches/unapplied/server/0246-Option-for-villager-display-trade-item.patch +++ b/patches/server/0243-Option-for-villager-display-trade-item.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option for villager display trade item diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java b/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -index 050be72c815010bf3f4b72427e2052b00420e8ee..8a213205f57c8dcd2226d7194d74b1b13dec5a78 100644 +index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903996ecaf6 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java @@ -42,6 +42,7 @@ public class ShowTradesToPlayer extends Behavior { @@ -17,10 +17,10 @@ index 050be72c815010bf3f4b72427e2052b00420e8ee..8a213205f57c8dcd2226d7194d74b1b1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 852d04096a1d2eb747183407f850cc9eafe44e1a..265858cc747ed26c98cfea2caf27a9a0f7ea5198 100644 +index 3fa481c71331a19b58511392a840f47915639ce2..38d13eb230cfb33a450b8a9a1a3c6aa2efe5b053 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2738,6 +2738,7 @@ public class PurpurWorldConfig { +@@ -2734,6 +2734,7 @@ public class PurpurWorldConfig { public int villagerMinimumDemand = 0; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; @@ -28,7 +28,7 @@ index 852d04096a1d2eb747183407f850cc9eafe44e1a..265858cc747ed26c98cfea2caf27a9a0 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2770,6 +2771,7 @@ public class PurpurWorldConfig { +@@ -2766,6 +2767,7 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); diff --git a/patches/unapplied/server/0247-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 93% rename from patches/unapplied/server/0247-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index ef6eccaa1..9b6db0573 100644 --- a/patches/unapplied/server/0247-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index cd2ce5bcb8c30e4657cd0e340d80544c7e805905..c8c6fed3f93903bb5c6145930538d415 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 265858cc747ed26c98cfea2caf27a9a0f7ea5198..15024b91f36fc2e2ab1942bc952d8f1619c94a47 100644 +index 38d13eb230cfb33a450b8a9a1a3c6aa2efe5b053..db1e6276243ee849757bed15f8308474afe56790 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1002,8 +1002,10 @@ public class PurpurWorldConfig { +@@ -998,8 +998,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/unapplied/server/0248-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch similarity index 91% rename from patches/unapplied/server/0248-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch index e126a4612..6947d95e5 100644 --- a/patches/unapplied/server/0248-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4758e9376e144e3baec2423a26f970ad03aa1565..4d13f2645ae9e76ed7b36d381ae24cd826e722b3 100644 +index 11761085514d54e23fece41a408b74a2bde3effc..9e07866c6597b62eb02985770c1fcffe6fb3f601 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1506,13 +1506,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1526,13 +1526,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; @@ -25,7 +25,7 @@ index 4758e9376e144e3baec2423a26f970ad03aa1565..4d13f2645ae9e76ed7b36d381ae24cd8 if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 7f1c7532adace841baec500598133981a6feb78a..99dd93c066d4acc177de7f03ae45e491b535f4d1 100644 +index 5ca34447926510f1d4c5c5ba9eb3c7c6369a85de..4e11a5eb37998deba9eea2663ac2c7fb92de8acc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -453,7 +453,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -38,7 +38,7 @@ index 7f1c7532adace841baec500598133981a6feb78a..99dd93c066d4acc177de7f03ae45e491 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15024b91f36fc2e2ab1942bc952d8f1619c94a47..1ab0127d72fb6c8f7c3999768c7078dad1fced70 100644 +index db1e6276243ee849757bed15f8308474afe56790..a5e9e56c86de0ae3b8053367dac777c94a990a30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0249-Anvil-repair-damage-options.patch b/patches/server/0246-Anvil-repair-damage-options.patch similarity index 97% rename from patches/unapplied/server/0249-Anvil-repair-damage-options.patch rename to patches/server/0246-Anvil-repair-damage-options.patch index 76278d584..e6cd11410 100644 --- a/patches/unapplied/server/0249-Anvil-repair-damage-options.patch +++ b/patches/server/0246-Anvil-repair-damage-options.patch @@ -64,10 +64,10 @@ index 5c5a3b169795bf8a527b316c666cbc2105c66622..020afeca950d2c7fb6c7b179d424548f return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1ab0127d72fb6c8f7c3999768c7078dad1fced70..a279fdf4598af127b87bf21f8b74df15a1bd2664 100644 +index a5e9e56c86de0ae3b8053367dac777c94a990a30..6ae50abd3d1bb4e5ff6f8865ca6f4303c8144b0e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -754,9 +754,13 @@ public class PurpurWorldConfig { +@@ -750,9 +750,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/unapplied/server/0250-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 89% rename from patches/unapplied/server/0250-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch index ca88b79f7..7889c0c86 100644 --- a/patches/unapplied/server/0250-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0247-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable turtle egg trampling with feather falling diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index b211d7b37095b52424ead1bb0be0c81bc4322985..58facc048840d3ba0a58c92673340e6e0aa4e305 100644 +index 8e975daca6a50c95d7fb620f2756b8bb2b7c7d6b..e23b920be6702ef6faf97b42fb8a87442707d6be 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -209,7 +209,13 @@ public class TurtleEggBlock extends Block { +@@ -211,7 +211,13 @@ public class TurtleEggBlock extends Block { if (!(entity instanceof LivingEntity)) { return false; } @@ -24,10 +24,10 @@ index b211d7b37095b52424ead1bb0be0c81bc4322985..58facc048840d3ba0a58c92673340e6e return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a279fdf4598af127b87bf21f8b74df15a1bd2664..64d7eb44358835c6293f02cb427785615a9ea874 100644 +index 6ae50abd3d1bb4e5ff6f8865ca6f4303c8144b0e..ce4f8f9661c6c0d09fa517861aae80559859f09f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1030,12 +1030,14 @@ public class PurpurWorldConfig { +@@ -1026,12 +1026,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/unapplied/server/0251-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0248-Add-toggle-for-enchant-level-clamping.patch similarity index 95% rename from patches/unapplied/server/0251-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0248-Add-toggle-for-enchant-level-clamping.patch index e651f2722..0fb43035d 100644 --- a/patches/unapplied/server/0251-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0248-Add-toggle-for-enchant-level-clamping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for enchant level clamping diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 832cf93ee9d29e9eb324909ab04be8e769ce1f67..dec5c808a56e3f0eeffad8da6f81041029a8706b 100644 +index dfb2852a4fa1a8b8ffe7817c3cf63d87abaf1a82..6c7f0db683101e12ae48dc3f28d5d00ac9569e35 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1202,7 +1202,7 @@ public final class ItemStack { +@@ -1207,7 +1207,7 @@ public final class ItemStack { ListTag nbttaglist = this.tag.getList("Enchantments", 10); diff --git a/patches/unapplied/server/0252-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0249-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/unapplied/server/0252-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0249-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/unapplied/server/0253-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch similarity index 87% rename from patches/unapplied/server/0253-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch index 112b14a81..0077f8c06 100644 --- a/patches/unapplied/server/0253-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0250-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 3eb7ac97ea11d0c47ecbc047e2e64c17baaa70f4..85c8854691070d8867a5eaf410fe7a2f75fadb9f 100644 +index d70639fef24b6a8a3b504723992a050edbc16f61..99928a3a8954be0d5b1f7736c12dbbb10d4c508c 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1092,6 +1092,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1099,6 +1099,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { @@ -18,10 +18,10 @@ index 3eb7ac97ea11d0c47ecbc047e2e64c17baaa70f4..85c8854691070d8867a5eaf410fe7a2f AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 64d7eb44358835c6293f02cb427785615a9ea874..147c25389a57da3d13c513225488d4e1160a7831 100644 +index ce4f8f9661c6c0d09fa517861aae80559859f09f..b964bad8d599e093ad312a9dedf1a33856ce9ec1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2749,6 +2749,8 @@ public class PurpurWorldConfig { +@@ -2745,6 +2745,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 64d7eb44358835c6293f02cb427785615a9ea874..147c25389a57da3d13c513225488d4e1 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2782,6 +2784,8 @@ public class PurpurWorldConfig { +@@ -2778,6 +2780,8 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/unapplied/server/0254-Stonecutter-damage.patch b/patches/server/0251-Stonecutter-damage.patch similarity index 95% rename from patches/unapplied/server/0254-Stonecutter-damage.patch rename to patches/server/0251-Stonecutter-damage.patch index 2e024d81d..41ac75f17 100644 --- a/patches/unapplied/server/0254-Stonecutter-damage.patch +++ b/patches/server/0251-Stonecutter-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index c6f8ae130b75fbb0ad41f9a5917e934e33fd3043..45e4717ba832edceeafdba575323c2527c350193 100644 +index 9e3608650c44ef5fa724c3aea86603d7bd02429c..8c2c515f1b5f56bf1d6cf0c35d4f0fa7b593d1a0 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java @@ -102,6 +102,8 @@ public class CombatTracker { @@ -90,7 +90,7 @@ index d976a6df54c1e817def2d588692abe25a03ee0fa..ba57accc272958da4714896baeadb52c return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 33a67078ba6ecc11d2929a164354702664d6a480..15eb4403deefca5f16052a74bbd9059091ed4c3f 100644 +index 4d147845402a26957c905dd600bf0657bb7bd714..e78e809cc7644d5007b149d5940f8cc164a76975 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { @@ -105,10 +105,10 @@ index 33a67078ba6ecc11d2929a164354702664d6a480..15eb4403deefca5f16052a74bbd90590 public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 147c25389a57da3d13c513225488d4e1160a7831..fe5fe3faab9fd7977139181cc8a40dd16e06e23d 100644 +index b964bad8d599e093ad312a9dedf1a33856ce9ec1..417322e7cf09eb56acf5fc398ce2319b54c4477a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1025,6 +1025,11 @@ public class PurpurWorldConfig { +@@ -1021,6 +1021,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/unapplied/server/0255-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch similarity index 94% rename from patches/unapplied/server/0255-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch index 09ec3b25b..027a8ae10 100644 --- a/patches/unapplied/server/0255-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0252-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 1b766045687e4dcded5cbcc50b746c55b9a34e22..be365914856593bb3c4e1945cc990786 entity.hurt(world.damageSources().hotFloor(), 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fe5fe3faab9fd7977139181cc8a40dd16e06e23d..6e37d135cb88443cdbb379ea2a90374bf1383ec7 100644 +index 417322e7cf09eb56acf5fc398ce2319b54c4477a..93e601cad7c26024fe195ee5217c8d65c1b083e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -956,6 +956,13 @@ public class PurpurWorldConfig { +@@ -952,6 +952,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/unapplied/server/0256-Add-config-for-snow-on-blue-ice.patch b/patches/server/0253-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/unapplied/server/0256-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0253-Add-config-for-snow-on-blue-ice.patch index fc24b8cf5..102753e6d 100644 --- a/patches/unapplied/server/0256-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0253-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6e37d135cb88443cdbb379ea2a90374bf1383ec7..67266a22f05ffc94a375af873339a9c718ddd66c 100644 +index 93e601cad7c26024fe195ee5217c8d65c1b083e4..ea082eed28b9d63514291a094ebd99b8670e7910 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -937,9 +937,11 @@ public class PurpurWorldConfig { +@@ -933,9 +933,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/unapplied/server/0257-Skeletons-eat-wither-roses.patch b/patches/server/0254-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/unapplied/server/0257-Skeletons-eat-wither-roses.patch rename to patches/server/0254-Skeletons-eat-wither-roses.patch index 60ded7f6d..cf22f9748 100644 --- a/patches/unapplied/server/0257-Skeletons-eat-wither-roses.patch +++ b/patches/server/0254-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 67266a22f05ffc94a375af873339a9c718ddd66c..13413402b516f892264072f4061c509d7ed1d94c 100644 +index ea082eed28b9d63514291a094ebd99b8670e7910..40f127476d96b39ac107cb1d18dd08798612c952 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2433,6 +2433,7 @@ public class PurpurWorldConfig { +@@ -2429,6 +2429,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 67266a22f05ffc94a375af873339a9c718ddd66c..13413402b516f892264072f4061c509d private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2446,6 +2447,7 @@ public class PurpurWorldConfig { +@@ -2442,6 +2443,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/unapplied/server/0258-Enchantment-Table-Persists-Lapis.patch b/patches/server/0255-Enchantment-Table-Persists-Lapis.patch similarity index 92% rename from patches/unapplied/server/0258-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0255-Enchantment-Table-Persists-Lapis.patch index 98ba43458..ba2f7c030 100644 --- a/patches/unapplied/server/0258-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0255-Enchantment-Table-Persists-Lapis.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 93e8316f9d64625dcc4df0644a2187bcc884ef65..1711406996ec4a9cb7b1838bd2446e5cf802e043 100644 +index c5c509fbb915c60dfa95aac8510684d0b9f8b0ff..d604b7ec46f08993647979ed220a84842e3fe325 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -38,6 +38,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; +@@ -40,6 +40,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; import org.bukkit.entity.Player; // CraftBukkit end @@ -20,8 +20,8 @@ index 93e8316f9d64625dcc4df0644a2187bcc884ef65..1711406996ec4a9cb7b1838bd2446e5c + public class EnchantmentMenu extends AbstractContainerMenu { - private final Container enchantSlots; -@@ -71,6 +77,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { + static final ResourceLocation EMPTY_SLOT_LAPIS_LAZULI = new ResourceLocation("item/empty_slot_lapis_lazuli"); +@@ -74,6 +80,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { return context.getLocation(); } // CraftBukkit end @@ -44,7 +44,7 @@ index 93e8316f9d64625dcc4df0644a2187bcc884ef65..1711406996ec4a9cb7b1838bd2446e5c }; this.random = RandomSource.create(); this.enchantmentSeed = DataSlot.standalone(); -@@ -96,6 +118,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -99,6 +121,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { } }); @@ -62,7 +62,7 @@ index 93e8316f9d64625dcc4df0644a2187bcc884ef65..1711406996ec4a9cb7b1838bd2446e5c int j; for (j = 0; j < 3; ++j) { -@@ -340,6 +373,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -344,6 +377,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { public void removed(net.minecraft.world.entity.player.Player player) { super.removed(player); this.access.execute((world, blockposition) -> { @@ -146,10 +146,10 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13413402b516f892264072f4061c509d7ed1d94c..261d451d47c00ea36748e4f610a2f1e27a4b6ab4 100644 +index 40f127476d96b39ac107cb1d18dd08798612c952..9c90c8f1c6697a98049bf044ac061bb93e1a4363 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1468,6 +1468,11 @@ public class PurpurWorldConfig { +@@ -1464,6 +1464,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/unapplied/server/0259-Spark-Profiler.patch b/patches/server/0256-Spark-Profiler.patch similarity index 100% rename from patches/unapplied/server/0259-Spark-Profiler.patch rename to patches/server/0256-Spark-Profiler.patch diff --git a/patches/unapplied/server/0260-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 90% rename from patches/unapplied/server/0260-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch index a8be2efe8..d9048e1a4 100644 --- a/patches/unapplied/server/0260-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0257-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index cb1851fca9290edb502662c100bb2ac6fa4d70d1..b1050654cca5ce8a834c9e913b8e804609499aa9 100644 +index 70eaf9347d49924841f2cfa23932b3eadfe49c82..87e064670d336f1c3a86cdc524e2686c7ee5af72 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2510,7 +2510,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2336,7 +2336,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { instant1 = (Instant) this.lastChatTimeStamp.get(); if (timestamp.isBefore(instant1)) { diff --git a/patches/unapplied/server/0261-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch similarity index 93% rename from patches/unapplied/server/0261-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch index 6b5ac1959..bd840ee3f 100644 --- a/patches/unapplied/server/0261-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0258-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index 02d01eabb9606ae8c3b76ad9fa4bb9a525e247b1..ce51fec4a874f9466f9966684c535315 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 261d451d47c00ea36748e4f610a2f1e27a4b6ab4..9f7ca8b8f79fdea1dc664639dc1f09c76610a043 100644 +index 9c90c8f1c6697a98049bf044ac061bb93e1a4363..2f7a5fd20ace3f27edc79c0f4a7bb4e4a772b3f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1001,6 +1001,11 @@ public class PurpurWorldConfig { +@@ -997,6 +997,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } diff --git a/patches/unapplied/server/0262-Config-to-not-let-coral-die.patch b/patches/server/0259-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/unapplied/server/0262-Config-to-not-let-coral-die.patch rename to patches/server/0259-Config-to-not-let-coral-die.patch index 90bebff8d..9a3a983e5 100644 --- a/patches/unapplied/server/0262-Config-to-not-let-coral-die.patch +++ b/patches/server/0259-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 88faea00be60a519f56f975a5311df5e1eb3e6b8..cbb726ac367be81e27d3a86643baf7c4 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9f7ca8b8f79fdea1dc664639dc1f09c76610a043..ce7c96dd55ad88ad35fef9aa992952b8ac333d06 100644 +index 2f7a5fd20ace3f27edc79c0f4a7bb4e4a772b3f8..4351793923ea16e3c3fe7ed547c1236cae0e952a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -838,6 +838,11 @@ public class PurpurWorldConfig { +@@ -834,6 +834,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/unapplied/server/0263-Add-local-difficulty-api.patch b/patches/server/0260-Add-local-difficulty-api.patch similarity index 85% rename from patches/unapplied/server/0263-Add-local-difficulty-api.patch rename to patches/server/0260-Add-local-difficulty-api.patch index 58f0258a5..1ea8c0374 100644 --- a/patches/unapplied/server/0263-Add-local-difficulty-api.patch +++ b/patches/server/0260-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index f857f490ffba2f25f7c06c5fb1a1905f0b51fbe2..a2e852adf47261b1b2eb9734cc90f4676ed58126 100644 +index 7aef2714791674086246ab4b5b92c8965dbfdae0..e55438768a030cdcef433782e55f0fafc4f51db1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2290,6 +2290,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2284,6 +2284,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/unapplied/server/0264-Add-toggle-for-RNG-manipulation.patch b/patches/server/0261-Add-toggle-for-RNG-manipulation.patch similarity index 91% rename from patches/unapplied/server/0264-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0261-Add-toggle-for-RNG-manipulation.patch index 475b95f4a..440e70c07 100644 --- a/patches/unapplied/server/0264-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0261-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c99d273b8d686872d5699e4490769786951256e1..156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4 100644 +index e78d85a313f585ec9c7fe9895402591b7b10d6b9..28cac00d496cc6e37648dbe96ba4aea2b834cedd 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -616,7 +616,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -555,7 +555,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -33,7 +33,7 @@ index 88c238e492b1081d1a64a3b6f05d7baa17e5d8c9..dd7f2beabf0edad4143ac2365ac04a22 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce7c96dd55ad88ad35fef9aa992952b8ac333d06..370b5ff992fb3ff7dd88ab479b3c251d36ced42f 100644 +index 4351793923ea16e3c3fe7ed547c1236cae0e952a..07b8826509d158e60ee6c3c847f7855b7469325f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -204,9 +204,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0265-Send-client-custom-name-of-BE.patch b/patches/server/0262-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/unapplied/server/0265-Send-client-custom-name-of-BE.patch rename to patches/server/0262-Send-client-custom-name-of-BE.patch diff --git a/patches/unapplied/server/0266-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch b/patches/server/0263-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch similarity index 90% rename from patches/unapplied/server/0266-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch rename to patches/server/0263-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch index 98df8a3c0..c850a06cb 100644 --- a/patches/unapplied/server/0266-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch +++ b/patches/server/0263-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PaperPR #7822 Fix exact choice recipe book clicks diff --git a/src/main/java/net/minecraft/world/entity/player/StackedContents.java b/src/main/java/net/minecraft/world/entity/player/StackedContents.java -index 68d272e98f9e54c9b150c75c27a9ae545be842f6..63fc6074082b579c3f88316008cbeb2a2d7f5841 100644 +index 26b236a764177ac16d53f5cbaf83d3e21d015ebc..6bc60ea5249cca9f4c1d029a2b7460fe3476e05a 100644 --- a/src/main/java/net/minecraft/world/entity/player/StackedContents.java +++ b/src/main/java/net/minecraft/world/entity/player/StackedContents.java -@@ -40,8 +40,62 @@ public class StackedContents { +@@ -41,8 +41,62 @@ public class StackedContents { int j = Math.min(maxCount, stack.getCount()); if (this.extrasMap != null && stack.hasTag() && this.extrasMap.accountStack(stack, j)) return; // Paper - if an exact ingredient, don't include it this.put(i, j); @@ -71,7 +71,7 @@ index 68d272e98f9e54c9b150c75c27a9ae545be842f6..63fc6074082b579c3f88316008cbeb2a } public static int getStackingIndex(ItemStack stack) { -@@ -83,6 +137,12 @@ public class StackedContents { +@@ -84,6 +138,12 @@ public class StackedContents { } public static ItemStack fromStackingIndex(int itemId) { @@ -85,10 +85,10 @@ index 68d272e98f9e54c9b150c75c27a9ae545be842f6..63fc6074082b579c3f88316008cbeb2a } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index f76f912501fc647f759dbd54b2b220f5b95c1407..7e68596e28db88213e9352f798c5a4ce37cc5656 100644 +index 6c7f0db683101e12ae48dc3f28d5d00ac9569e35..68035cfe391b0e39a7a5f4b8b6e3275d75686070 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -113,6 +113,7 @@ import org.bukkit.event.world.StructureGrowEvent; +@@ -114,6 +114,7 @@ import org.bukkit.event.world.StructureGrowEvent; public final class ItemStack { @@ -97,10 +97,10 @@ index f76f912501fc647f759dbd54b2b220f5b95c1407..7e68596e28db88213e9352f798c5a4ce return instance.group(BuiltInRegistries.ITEM.byNameCodec().fieldOf("id").forGetter(ItemStack::getItem), Codec.INT.fieldOf("Count").forGetter(ItemStack::getCount), CompoundTag.CODEC.optionalFieldOf("tag").forGetter((itemstack) -> { return Optional.ofNullable(itemstack.getTag()); diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -index 3ca086418ad037c48775db73d2b9c410acf1e326..f47eab4c31925f51de4a6bc8be730281cb3388fc 100644 +index 3532db21cee82c18f95c540d24b2071585d71c4e..ae98a5b49b5eb7b9b2846d1e41b5665c725198a2 100644 --- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java +++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -@@ -51,7 +51,11 @@ public final class Ingredient implements Predicate { +@@ -57,7 +57,11 @@ public final class Ingredient implements Predicate { if (this.itemStacks == null) { this.itemStacks = (ItemStack[]) Arrays.stream(this.values).flatMap((recipeitemstack_provider) -> { return recipeitemstack_provider.getItems().stream(); @@ -113,7 +113,7 @@ index 3ca086418ad037c48775db73d2b9c410acf1e326..f47eab4c31925f51de4a6bc8be730281 return new ItemStack[i]; }); } -@@ -106,7 +110,13 @@ public final class Ingredient implements Predicate { +@@ -112,7 +116,13 @@ public final class Ingredient implements Predicate { for (int j = 0; j < i; ++j) { ItemStack itemstack = aitemstack1[j]; diff --git a/patches/unapplied/server/0267-Allow-custom-ChatDecorators.patch b/patches/server/0264-Allow-custom-ChatDecorators.patch similarity index 90% rename from patches/unapplied/server/0267-Allow-custom-ChatDecorators.patch rename to patches/server/0264-Allow-custom-ChatDecorators.patch index 8473f1426..5f6166afa 100644 --- a/patches/unapplied/server/0267-Allow-custom-ChatDecorators.patch +++ b/patches/server/0264-Allow-custom-ChatDecorators.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow custom ChatDecorators Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d474e2ce24d822254c1ac0c9d9468ac13f9cca86..1d6843b376d626e2db8565d15e02bf4c93be30e3 100644 +index ad403421711052faf36cb6b063997cfa90712423..e7e2c8115b1f25039965f390c927b004e8b3f630 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2671,6 +2671,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> CURRENT_TICKET_UPDATE_SCHEDULING = new ThreadLocal<>(); diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java -index 51304c5cf4b0ac7646693ef97ef4a3847d3342b5..535ab99585cd4463d051334681bc80b5d20df7c0 100644 +index b66a7d4aab887309579154815a0d4abf9de506b0..e6f56bc5b129699bab60db9c97c7f73b6ede2351 100644 --- a/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java @@ -1779,7 +1779,7 @@ public final class NewChunkHolder { @@ -43,32 +43,23 @@ index 51304c5cf4b0ac7646693ef97ef4a3847d3342b5..535ab99585cd4463d051334681bc80b5 return executedUnloadTask | canSaveChunk | canSaveEntities | canSavePOI ? new SaveStat(executedUnloadTask || canSaveChunk, canSaveEntities, canSavePOI): null; } diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -index d2f0a0755317f5fa9a1ccf7db346aa77fd287d80..03852e7d21d9470a4469676367463fefb38acdc6 100644 +index 9a49f5271ec1d9de17632bfffe8309cb1ba0d8b1..0be239c5c78432a6377cd7828cd49f61f8f0ac8f 100644 --- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java +++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -@@ -47,7 +47,7 @@ public class PacketUtils { - if (MinecraftServer.getServer().hasStopped() || (listener instanceof ServerGamePacketListenerImpl && ((ServerGamePacketListenerImpl) listener).processedDisconnect)) return; // CraftBukkit, MC-142590 - if (listener.isAcceptingMessages()) { +@@ -49,7 +49,7 @@ public class PacketUtils { + if (MinecraftServer.getServer().hasStopped() || (listener instanceof ServerCommonPacketListenerImpl && ((ServerCommonPacketListenerImpl) listener).processedDisconnect)) return; // CraftBukkit, MC-142590 + if (listener.shouldHandleMessage(packet)) { co.aikar.timings.Timing timing = co.aikar.timings.MinecraftTimings.getPacketTiming(packet); // Paper - timings - try (co.aikar.timings.Timing ignored = timing.startTiming()) { // Paper - timings + try { // Paper - timings // Purpur packet.handle(listener); } catch (Exception exception) { - if (listener.shouldPropagateHandlingExceptions()) { + if (exception instanceof ReportedException) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1d6843b376d626e2db8565d15e02bf4c93be30e3..629d870e6b501969d72e48500ea3c06c3bf3fe4d 100644 +index e7e2c8115b1f25039965f390c927b004e8b3f630..d4aad1e62e2473c48c35b2e4238c4f5709b2352a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -313,7 +313,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { -@@ -1404,15 +1404,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { + entityplayer.connection.suspendFlushing(); + }); - MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Spigot // Paper + //MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Spigot // Paper // Purpur this.server.getScheduler().mainThreadHeartbeat(this.tickCount); // CraftBukkit @@ -120,7 +111,7 @@ index 1d6843b376d626e2db8565d15e02bf4c93be30e3..629d870e6b501969d72e48500ea3c06c // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1521,21 +1521,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -319,7 +281,7 @@ index d60ae9f8d3afe3e996a66331ee510cfa5841388c..2d8dbcab5760d4b1879d17642c8e3b26 ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1329,17 +1329,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1117,17 +1117,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -341,10 +303,10 @@ index d60ae9f8d3afe3e996a66331ee510cfa5841388c..2d8dbcab5760d4b1879d17642c8e3b26 } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index fe1a9c646b09d11e7fa2186afbeb70b680ad2b57..14613af193b178133fd688f26a766b36fa969590 100644 +index 2ab16e10323982e193e647246bd116e31f17bad2..ead4d70df7f33ff984d288d14d774a4156abb4fd 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -299,10 +299,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -295,10 +295,10 @@ public class ServerChunkCache extends ChunkSource { io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.pushChunkWait(this.level, x1, z1); // Paper - rewrite chunk system // Paper end com.destroystokyo.paper.io.SyncLoadFinder.logSyncLoad(this.level, x1, z1); // Paper - sync load info @@ -357,7 +319,7 @@ index fe1a9c646b09d11e7fa2186afbeb70b680ad2b57..14613af193b178133fd688f26a766b36 } // Paper ichunkaccess = (ChunkAccess) ((Either) completablefuture.join()).map((ichunkaccess1) -> { return ichunkaccess1; -@@ -451,17 +451,17 @@ public class ServerChunkCache extends ChunkSource { +@@ -447,17 +447,17 @@ public class ServerChunkCache extends ChunkSource { public void save(boolean flush) { this.runDistanceManagerUpdates(); @@ -379,7 +341,7 @@ index fe1a9c646b09d11e7fa2186afbeb70b680ad2b57..14613af193b178133fd688f26a766b36 } // Paper end -@@ -491,22 +491,22 @@ public class ServerChunkCache extends ChunkSource { +@@ -487,22 +487,22 @@ public class ServerChunkCache extends ChunkSource { @Override public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { this.level.getProfiler().push("purge"); @@ -408,7 +370,7 @@ index fe1a9c646b09d11e7fa2186afbeb70b680ad2b57..14613af193b178133fd688f26a766b36 this.level.getProfiler().pop(); this.clearCache(); } -@@ -561,7 +561,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -525,7 +525,7 @@ public class ServerChunkCache extends ChunkSource { boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit gameprofilerfiller.push("naturalSpawnCount"); @@ -417,25 +379,26 @@ index fe1a9c646b09d11e7fa2186afbeb70b680ad2b57..14613af193b178133fd688f26a766b36 int l = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - per player mob spawning NaturalSpawner.SpawnState spawnercreature_d; // moved down -@@ -592,12 +592,12 @@ public class ServerChunkCache extends ChunkSource { - // Pufferfish end +@@ -549,13 +549,13 @@ public class ServerChunkCache extends ChunkSource { + spawnercreature_d = NaturalSpawner.createState(l, this.level.getAllEntities(), this::getFullChunk, this.chunkMap.playerMobDistanceMap == null ? new LocalMobCapCalculator(this.chunkMap) : null, false); } // Paper end - this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings + //this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur - //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously + this.lastSpawnState = spawnercreature_d; gameprofilerfiller.popPush("filteringLoadedChunks"); - // Paper - moved down + List list = Lists.newArrayListWithCapacity(l); + Iterator iterator = this.chunkMap.getChunks().iterator(); - this.level.timings.chunkTicks.startTiming(); // Paper + //this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - // Paper - moved down - -@@ -652,17 +652,17 @@ public class ServerChunkCache extends ChunkSource { + while (iterator.hasNext()) { + ChunkHolder playerchunk = (ChunkHolder) iterator.next(); +@@ -599,19 +599,19 @@ public class ServerChunkCache extends ChunkSource { + } } } - // Paper end - optimise chunk tick iteration - this.level.timings.chunkTicks.stopTiming(); // Paper + //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur gameprofilerfiller.popPush("customSpawners"); @@ -446,28 +409,22 @@ index fe1a9c646b09d11e7fa2186afbeb70b680ad2b57..14613af193b178133fd688f26a766b36 - } // Paper - timings + //} // Paper - timings // Purpur } - gameprofilerfiller.pop(); - // Paper start - use set of chunks requiring updates, rather than iterating every single one loaded + gameprofilerfiller.popPush("broadcast"); -- this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing -+ //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur - if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { - ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); - this.chunkMap.needsChangeBroadcasting.clear(); -@@ -674,7 +674,7 @@ public class ServerChunkCache extends ChunkSource { - } - } - } -- this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing -+ //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur + list.forEach((chunkproviderserver_a1) -> { +- this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing ++ //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur + chunkproviderserver_a1.holder.broadcastChanges(chunkproviderserver_a1.chunk); +- this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing ++ //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur + }); + gameprofilerfiller.pop(); gameprofilerfiller.pop(); - // Paper end - use set of chunks requiring updates, rather than iterating every single one loaded - // Paper start - controlled flush for entity tracker packets diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128c9c7e00b 100644 +index 7ded6820b9b0b493a72e158d7a92d5062d2948ef..4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -828,7 +828,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -736,7 +736,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); gameprofilerfiller.popPush("tickPending"); @@ -476,7 +433,7 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 if (!this.isDebug()) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -837,20 +837,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -745,20 +745,20 @@ public class ServerLevel extends Level implements WorldGenLevel { this.fluidTicks.tick(j, 65536, this::tickFluid); gameprofilerfiller.pop(); } @@ -504,7 +461,7 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 this.handlingTick = false; gameprofilerfiller.pop(); boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players -@@ -861,7 +861,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -769,7 +769,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (flag || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -513,16 +470,16 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 if (this.dragonFight != null) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -869,7 +869,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -777,7 +777,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } org.spigotmc.ActivationRange.activateEntities(this); // Spigot - timings.entityTick.startTiming(); // Spigot + //timings.entityTick.startTiming(); // Spigot // Purpur this.entityTickList.forEach((entity) -> { - entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { -@@ -910,8 +910,8 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed +@@ -804,8 +804,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -533,25 +490,25 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -1093,7 +1093,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -946,7 +946,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper start - optimise random block ticking - gameprofilerfiller.popPush("randomTick"); + gameprofilerfiller.popPush("tickBlocks"); - timings.chunkTicksBlocks.startTiming(); // Paper + //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); - int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this); -@@ -1127,7 +1127,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - } + final int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this); +@@ -979,7 +979,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise random block ticking + - timings.chunkTicksBlocks.stopTiming(); // Paper + //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur gameprofilerfiller.pop(); } -@@ -1420,8 +1420,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1317,8 +1317,8 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -562,7 +519,7 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1437,7 +1437,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1334,7 +1334,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -571,7 +528,7 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1460,8 +1460,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1357,8 +1357,8 @@ public class ServerLevel extends Level implements WorldGenLevel { if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -582,7 +539,7 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1491,7 +1491,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1388,7 +1388,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -591,7 +548,7 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 } } else { passenger.stopRiding(); -@@ -1511,14 +1511,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1408,14 +1408,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -609,7 +566,7 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1530,7 +1530,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1427,7 +1427,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -618,7 +575,7 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 } // Paper end -@@ -1544,7 +1544,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1441,7 +1441,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit @@ -627,7 +584,7 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1554,11 +1554,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1451,11 +1451,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -643,10 +600,10 @@ index 122defeec159165c5fef295ec1dd2da4a6ada622..5b7507db055d7be59b369f66e659e128 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c2d8d653c7aea674e2efbf60d172da5d2c69758f..dfc84223a083890cd78b77029e1f85eb23f66229 100644 +index 87e064670d336f1c3a86cdc524e2686c7ee5af72..9fa25455dd264ea0b58d5e1825fd88475021dea9 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2620,7 +2620,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2446,7 +2446,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -655,7 +612,7 @@ index c2d8d653c7aea674e2efbf60d172da5d2c69758f..dfc84223a083890cd78b77029e1f85eb if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2630,7 +2630,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2456,7 +2456,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -664,7 +621,7 @@ index c2d8d653c7aea674e2efbf60d172da5d2c69758f..dfc84223a083890cd78b77029e1f85eb return; } -@@ -2643,7 +2643,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2469,7 +2469,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -674,10 +631,10 @@ index c2d8d653c7aea674e2efbf60d172da5d2c69758f..dfc84223a083890cd78b77029e1f85eb } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 43fdebcd107a7ca08b93de1d649b4d5e6acf5e81..824f31b68b38f2f8642fb9d59a123cfdaffbb7b2 100644 +index ad4f678de4aeeb7bb3d624f44dacc2c1d5200b1e..9942ab57f883f79719dff20f666912face27d5c4 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1257,7 +1257,7 @@ public abstract class PlayerList { +@@ -1249,7 +1249,7 @@ public abstract class PlayerList { public void saveAll(int interval) { io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main @@ -686,7 +643,7 @@ index 43fdebcd107a7ca08b93de1d649b4d5e6acf5e81..824f31b68b38f2f8642fb9d59a123cfd int numSaved = 0; long now = MinecraftServer.currentTick; for (int i = 0; i < this.players.size(); ++i) { -@@ -1268,7 +1268,7 @@ public abstract class PlayerList { +@@ -1260,7 +1260,7 @@ public abstract class PlayerList { } // Paper end } @@ -745,10 +702,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 2832776269971f3e3b689f8d16b2058d815cf5ba..233980edc80fa0f15756f6d16b76b1f84bd79920 100644 +index 282ec5085a8076790d2a24e7979b36c06a9bcba0..f9db7dde74ce1277a792497d078ed272e8b23d10 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1015,15 +1015,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1299,15 +1299,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -767,7 +724,7 @@ index 2832776269971f3e3b689f8d16b2058d815cf5ba..233980edc80fa0f15756f6d16b76b1f8 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); int tilesThisCycle = 0; -@@ -1056,7 +1056,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1340,7 +1340,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); @@ -777,7 +734,7 @@ index 2832776269971f3e3b689f8d16b2058d815cf5ba..233980edc80fa0f15756f6d16b76b1f8 co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 49de1fca183b2c6a0a5399025abfc0e47f314315..482dfb2bbf8b85ba98bf164c5cf3edcdf927eb98 100644 +index 64656c384863a6430e933e506d965ee628f08669..93af6e1a041a514e9b7198e0e510fa88b043439d 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -133,7 +133,7 @@ public final class NaturalSpawner { @@ -799,10 +756,10 @@ index 49de1fca183b2c6a0a5399025abfc0e47f314315..482dfb2bbf8b85ba98bf164c5cf3edcd } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index dbb0593a6feb60216379bde6720ca16f3ca827ae..4dab159024cf91cd297dcb31833f9d57e2132326 100644 +index 7fccb874ca2de82cc652a440bd250d0d1295397d..b27e2e187f9edebdf53cfad3d410154c0751ac86 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -895,7 +895,7 @@ public class LevelChunk extends ChunkAccess { +@@ -789,7 +789,7 @@ public class LevelChunk extends ChunkAccess { this.chunkHolder.getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -811,7 +768,7 @@ index dbb0593a6feb60216379bde6720ca16f3ca827ae..4dab159024cf91cd297dcb31833f9d57 this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -915,7 +915,7 @@ public class LevelChunk extends ChunkAccess { +@@ -809,7 +809,7 @@ public class LevelChunk extends ChunkAccess { } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -820,7 +777,7 @@ index dbb0593a6feb60216379bde6720ca16f3ca827ae..4dab159024cf91cd297dcb31833f9d57 } } } -@@ -1273,7 +1273,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1167,7 +1167,7 @@ public class LevelChunk extends ChunkAccess { ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); gameprofilerfiller.push(this::getType); @@ -829,7 +786,7 @@ index dbb0593a6feb60216379bde6720ca16f3ca827ae..4dab159024cf91cd297dcb31833f9d57 BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1295,7 +1295,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1189,7 +1189,7 @@ public class LevelChunk extends ChunkAccess { // Paper end // Spigot start } finally { @@ -894,7 +851,7 @@ index 3f45bab0e9f7b3697e6d9d1092a1e6e579f7066f..4f1cf281c4bf68c37982d390da8779de long getCreatedAt() { diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -index 500f2eb0df5a07637cd278c263e95592b0037eb6..895431584c476067790f1f131699d49eac3f4b8f 100644 +index 628951be16da8f19f0e1a974a0b4efa86e873b99..af1717fe7be06e4828febc0d5737f086b9c08e08 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java @@ -115,7 +115,7 @@ public final class CraftScoreboardManager implements ScoreboardManager { @@ -916,10 +873,10 @@ index 500f2eb0df5a07637cd278c263e95592b0037eb6..895431584c476067790f1f131699d49e // Paper end - add timings for scoreboard search } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 79d027e517ce08443d86b877a55df24cc20d102b..43d9e7287cf0e498ccbff9b865bb813e7fb567c0 100644 +index bc98504b9eacd41994c234e6385f37c5d681383b..f2e7e3501ca9d1664039468b5e7dece47986fd29 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -170,7 +170,7 @@ public class ActivationRange +@@ -166,7 +166,7 @@ public class ActivationRange */ public static void activateEntities(Level world) { @@ -928,7 +885,7 @@ index 79d027e517ce08443d86b877a55df24cc20d102b..43d9e7287cf0e498ccbff9b865bb813e final int miscActivationRange = world.spigotConfig.miscActivationRange; final int raiderActivationRange = world.spigotConfig.raiderActivationRange; final int animalActivationRange = world.spigotConfig.animalActivationRange; -@@ -245,7 +245,7 @@ public class ActivationRange +@@ -227,7 +227,7 @@ public class ActivationRange } // Paper end } diff --git a/patches/unapplied/server/0269-Remove-Mojang-Profiler.patch b/patches/server/0266-Remove-Mojang-Profiler.patch similarity index 84% rename from patches/unapplied/server/0269-Remove-Mojang-Profiler.patch rename to patches/server/0266-Remove-Mojang-Profiler.patch index b86a9da10..23dde7309 100644 --- a/patches/unapplied/server/0269-Remove-Mojang-Profiler.patch +++ b/patches/server/0266-Remove-Mojang-Profiler.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Remove Mojang Profiler diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 5f6cc8b16af6dce3b74f0c2c662b0ecf84ae8d36..52b06c34d9d3ffb8844556e7b0eaed5a7f03da0c 100644 +index af712f089e7919fa0bd3946866fd3486fab19f76..9caab6541a224dc8f729a7d720eccda7bd83ed53 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -150,7 +150,7 @@ public class Commands { +@@ -152,7 +152,7 @@ public class Commands { DamageCommand.register(this.dispatcher, commandRegistryAccess); DataCommands.register(this.dispatcher); DataPackCommand.register(this.dispatcher); @@ -17,7 +17,7 @@ index 5f6cc8b16af6dce3b74f0c2c662b0ecf84ae8d36..52b06c34d9d3ffb8844556e7b0eaed5a DefaultGameModeCommands.register(this.dispatcher); DifficultyCommand.register(this.dispatcher); EffectCommands.register(this.dispatcher, commandRegistryAccess); -@@ -317,9 +317,9 @@ public class Commands { +@@ -323,9 +323,9 @@ public class Commands { public int performCommand(ParseResults parseresults, String s, String label) { // CraftBukkit CommandSourceStack commandlistenerwrapper = (CommandSourceStack) parseresults.getContext().getSource(); @@ -29,7 +29,7 @@ index 5f6cc8b16af6dce3b74f0c2c662b0ecf84ae8d36..52b06c34d9d3ffb8844556e7b0eaed5a byte b0; -@@ -402,7 +402,7 @@ public class Commands { +@@ -408,7 +408,7 @@ public class Commands { b0 = 0; } } finally { @@ -39,10 +39,10 @@ index 5f6cc8b16af6dce3b74f0c2c662b0ecf84ae8d36..52b06c34d9d3ffb8844556e7b0eaed5a return b0; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 629d870e6b501969d72e48500ea3c06c3bf3fe4d..9903d461f775701b2e01899b344c58609edd426a 100644 +index d4aad1e62e2473c48c35b2e4238c4f5709b2352a..94b9a2f72dbdf85a95a9b99c45a66e7044f69f2a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -340,13 +340,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1443,7 +1443,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur @@ -192,7 +192,7 @@ index 629d870e6b501969d72e48500ea3c06c3bf3fe4d..9903d461f775701b2e01899b344c5860 try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1603,17 +1603,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2549,40 +2549,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop functions, ResourceLocation label) { @@ -357,7 +365,7 @@ index aa3f4ca3be843616d34897e41909255f512f8963..426ac5faa9344472560fb20bdea8bdc3 Iterator iterator = functions.iterator(); while (iterator.hasNext()) { -@@ -70,7 +70,7 @@ public class ServerFunctionManager { +@@ -72,7 +72,7 @@ public class ServerFunctionManager { this.execute(customfunction, this.getGameLoopSender()); } @@ -366,7 +374,7 @@ index aa3f4ca3be843616d34897e41909255f512f8963..426ac5faa9344472560fb20bdea8bdc3 } public int execute(CommandFunction function, CommandSourceStack source) { -@@ -187,10 +187,10 @@ public class ServerFunctionManager { +@@ -195,10 +195,10 @@ public class ServerFunctionManager { try { ServerFunctionManager.QueuedCommand customfunctiondata_queuedcommand = (ServerFunctionManager.QueuedCommand) this.commandQueue.removeFirst(); @@ -379,7 +387,7 @@ index aa3f4ca3be843616d34897e41909255f512f8963..426ac5faa9344472560fb20bdea8bdc3 this.depth = customfunctiondata_queuedcommand.depth; customfunctiondata_queuedcommand.execute(ServerFunctionManager.this, this.commandQueue, i, this.tracer); if (this.abortCurrentDepth) { -@@ -209,7 +209,7 @@ public class ServerFunctionManager { +@@ -217,7 +217,7 @@ public class ServerFunctionManager { this.nestedCalls.clear(); } finally { @@ -389,10 +397,10 @@ index aa3f4ca3be843616d34897e41909255f512f8963..426ac5faa9344472560fb20bdea8bdc3 ++j; diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 2d8dbcab5760d4b1879d17642c8e3b2658e4d7ec..3a7c694ff0e248df3f4d168a5e2e883c0e3cb167 100644 +index 3f0799cf3d9c5b9bfe3f29b1bf6cbdc9ca0fd38e..d9f92ee89bc9d91a3889f24745e593ff282843f4 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -640,20 +640,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -468,20 +468,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } protected void tick(BooleanSupplier shouldKeepTicking) { @@ -418,10 +426,10 @@ index 2d8dbcab5760d4b1879d17642c8e3b2658e4d7ec..3a7c694ff0e248df3f4d168a5e2e883c public boolean hasWork() { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 14613af193b178133fd688f26a766b36fa969590..2d5b0f293bb30243e774bfb62b8100c01e7eb383 100644 +index ead4d70df7f33ff984d288d14d774a4156abb4fd..d082b45777426b3737cb928f039364461658ef67 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -280,16 +280,16 @@ public class ServerChunkCache extends ChunkSource { +@@ -276,16 +276,16 @@ public class ServerChunkCache extends ChunkSource { return ifLoaded; } // Paper end @@ -441,7 +449,7 @@ index 14613af193b178133fd688f26a766b36fa969590..2d5b0f293bb30243e774bfb62b8100c0 CompletableFuture> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create, true); // Paper ServerChunkCache.MainThreadExecutor chunkproviderserver_b = this.mainThreadProcessor; -@@ -478,24 +478,24 @@ public class ServerChunkCache extends ChunkSource { +@@ -474,24 +474,24 @@ public class ServerChunkCache extends ChunkSource { // CraftBukkit start - modelled on below public void purgeUnload() { if (true) return; // Paper - tickets will be removed later, this behavior isn't really well accounted for by the chunk system @@ -471,7 +479,7 @@ index 14613af193b178133fd688f26a766b36fa969590..2d5b0f293bb30243e774bfb62b8100c0 if (tickChunks) { //this.level.timings.chunks.startTiming(); // Paper - timings // Purpur this.chunkMap.level.playerChunkLoader.tick(); // Paper - replace player chunk loader - this is mostly required to account for view distance changes -@@ -504,10 +504,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -500,10 +500,10 @@ public class ServerChunkCache extends ChunkSource { } //this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur @@ -484,16 +492,15 @@ index 14613af193b178133fd688f26a766b36fa969590..2d5b0f293bb30243e774bfb62b8100c0 this.clearCache(); } -@@ -553,14 +553,14 @@ public class ServerChunkCache extends ChunkSource { - } - // Paper end - optimize isOutisdeRange +@@ -518,13 +518,13 @@ public class ServerChunkCache extends ChunkSource { + this.chunkMap.tick(); + } else { LevelData worlddata = this.level.getLevelData(); - ProfilerFiller gameprofilerfiller = this.level.getProfiler(); + //ProfilerFiller gameprofilerfiller = this.level.getProfiler(); // Purpur - gameprofilerfiller.push("pollingChunks"); + //gameprofilerfiller.push("pollingChunks"); // Purpur - this.level.resetIceAndSnowTick(); // Pufferfish - reset ice & snow tick random int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING); boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit @@ -502,25 +509,27 @@ index 14613af193b178133fd688f26a766b36fa969590..2d5b0f293bb30243e774bfb62b8100c0 //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int l = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - per player mob spawning -@@ -595,13 +595,13 @@ public class ServerChunkCache extends ChunkSource { +@@ -552,7 +552,7 @@ public class ServerChunkCache extends ChunkSource { //this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur - //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously + this.lastSpawnState = spawnercreature_d; - gameprofilerfiller.popPush("filteringLoadedChunks"); + //gameprofilerfiller.popPush("filteringLoadedChunks"); // Purpur - // Paper - moved down + List list = Lists.newArrayListWithCapacity(l); + Iterator iterator = this.chunkMap.getChunks().iterator(); //this.level.timings.chunkTicks.startTiming(); // Paper // Purpur - - // Paper - moved down +@@ -566,7 +566,7 @@ public class ServerChunkCache extends ChunkSource { + } + } - gameprofilerfiller.popPush("spawnAndTick"); + //gameprofilerfiller.popPush("spawnAndTick"); // Purpur boolean flag2 = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit - // Paper - only shuffle if per-player mob spawning is disabled -@@ -653,15 +653,15 @@ public class ServerChunkCache extends ChunkSource { + Collections.shuffle(list); +@@ -600,21 +600,21 @@ public class ServerChunkCache extends ChunkSource { + } } - // Paper end - optimise chunk tick iteration //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur - gameprofilerfiller.popPush("customSpawners"); + //gameprofilerfiller.popPush("customSpawners"); // Purpur @@ -529,24 +538,22 @@ index 14613af193b178133fd688f26a766b36fa969590..2d5b0f293bb30243e774bfb62b8100c0 this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); //} // Paper - timings // Purpur } -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - // Paper start - use set of chunks requiring updates, rather than iterating every single one loaded + - gameprofilerfiller.popPush("broadcast"); + //gameprofilerfiller.popPush("broadcast"); // Purpur - //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur - if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { - ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); -@@ -675,7 +675,7 @@ public class ServerChunkCache extends ChunkSource { - } - } - //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur + list.forEach((chunkproviderserver_a1) -> { + //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur + chunkproviderserver_a1.holder.broadcastChanges(chunkproviderserver_a1.chunk); + //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur + }); +- gameprofilerfiller.pop(); - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur - // Paper end - use set of chunks requiring updates, rather than iterating every single one loaded - // Paper start - controlled flush for entity tracker packets - List disabledFlushes = new java.util.ArrayList<>(this.level.players.size()); -@@ -900,7 +900,7 @@ public class ServerChunkCache extends ChunkSource { ++ //gameprofilerfiller.pop(); // Purpur + this.chunkMap.tick(); + } + } +@@ -787,7 +787,7 @@ public class ServerChunkCache extends ChunkSource { @Override protected void doRunTask(Runnable task) { @@ -556,13 +563,13 @@ index 14613af193b178133fd688f26a766b36fa969590..2d5b0f293bb30243e774bfb62b8100c0 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda875fae17 100644 +index 4cc1f2fa4453e2ba160bfd42717bd7c8c68541fe..b55517984b3c0ed225a869ae44eceb6c3bb64ffe 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -795,12 +795,12 @@ public class ServerLevel extends Level implements WorldGenLevel { - } - } - // Paper end - optimise checkDespawn +@@ -703,12 +703,12 @@ public class ServerLevel extends Level implements WorldGenLevel { + } + + public void tick(BooleanSupplier shouldKeepTicking) { - ProfilerFiller gameprofilerfiller = this.getProfiler(); + //ProfilerFiller gameprofilerfiller = this.getProfiler(); // Purpur @@ -575,7 +582,7 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda this.advanceWeatherCycle(); int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; -@@ -827,32 +827,32 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -735,32 +735,32 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); @@ -616,7 +623,7 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players if (flag) { -@@ -860,12 +860,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -768,12 +768,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } if (flag || this.emptyTime++ < 300) { @@ -632,7 +639,7 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -876,9 +876,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -783,9 +783,9 @@ public class ServerLevel extends Level implements WorldGenLevel { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else { @@ -644,19 +651,13 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -890,7 +890,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -797,22 +797,21 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.stopRiding(); } - gameprofilerfiller.push("tick"); + //gameprofilerfiller.push("tick"); // Purpur - // Pufferfish start - copied from this.guardEntityTick - try { - this.tickNonPassenger(entity); // Pufferfish - changed -@@ -905,20 +905,19 @@ public class ServerLevel extends Level implements WorldGenLevel { - // Paper end - } - // Pufferfish end + this.guardEntityTick(this::tickNonPassenger, entity); - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } @@ -677,7 +678,7 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda } @Override -@@ -1000,9 +999,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -892,9 +891,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -688,35 +689,35 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda + //gameprofilerfiller.push("thunder"); // Purpur final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change - if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - disable thunder // Pufferfish - replace random with shouldDoLightning -@@ -1040,7 +1039,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - disable thunder +@@ -933,7 +932,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } - gameprofilerfiller.popPush("iceandsnow"); + //gameprofilerfiller.popPush("iceandsnow"); // Purpur - int l; - int i1; -@@ -1092,7 +1091,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - } + if (!this.paperConfig().environment.disableIceAndSnow) { // Paper + for (int l = 0; l < randomTickSpeed; ++l) { +@@ -945,7 +944,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + } // Paper // Paper start - optimise random block ticking -- gameprofilerfiller.popPush("randomTick"); -+ //gameprofilerfiller.popPush("randomTick"); // Purpur +- gameprofilerfiller.popPush("tickBlocks"); ++ //gameprofilerfiller.popPush("tickBlocks"); // Purpur //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); -@@ -1128,7 +1127,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - } +@@ -980,7 +979,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end - optimise random block ticking + //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } - public Optional findLightningRod(BlockPos pos) { -@@ -1424,19 +1423,19 @@ public class ServerLevel extends Level implements WorldGenLevel { + private void tickIceAndSnow(boolean raining, BlockPos.MutableBlockPos blockposition1, final LevelChunk chunk) { // Paper - optimise chunk ticking +@@ -1321,19 +1320,19 @@ public class ServerLevel extends Level implements WorldGenLevel { //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -741,7 +742,7 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1465,12 +1464,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1362,12 +1361,12 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -758,7 +759,7 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1482,7 +1481,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1379,7 +1378,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -768,10 +769,10 @@ index 5b7507db055d7be59b369f66e659e128c9c7e00b..221d1d0e1b4b46de6ebca5faac09bbda while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 01f001c39581c4af5765548e221e254465fe0195..2f013c3365d065325d645d43f7c5137f942b06df 100644 +index 4f9796dfb1243befb6fa41b4fd633951a4bf0fc6..3c44249e782d0e98689a58c719030dea2f007644 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1241,7 +1241,7 @@ public class ServerPlayer extends Player { +@@ -1235,7 +1235,7 @@ public class ServerPlayer extends Player { PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); if (shapedetectorshape != null) { @@ -780,7 +781,7 @@ index 01f001c39581c4af5765548e221e254465fe0195..2f013c3365d065325d645d43f7c5137f worldserver = shapedetectorshape.world; // CraftBukkit if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event if (resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit -@@ -1264,8 +1264,8 @@ public class ServerPlayer extends Player { +@@ -1258,8 +1258,8 @@ public class ServerPlayer extends Player { worldserver = ((CraftWorld) exit.getWorld()).getHandle(); // CraftBukkit end @@ -791,7 +792,7 @@ index 01f001c39581c4af5765548e221e254465fe0195..2f013c3365d065325d645d43f7c5137f if (true) { // CraftBukkit this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds -@@ -1283,7 +1283,7 @@ public class ServerPlayer extends Player { +@@ -1277,7 +1277,7 @@ public class ServerPlayer extends Player { this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringPortalTeleport(this); @@ -800,28 +801,28 @@ index 01f001c39581c4af5765548e221e254465fe0195..2f013c3365d065325d645d43f7c5137f this.triggerDimensionChangeTriggers(worldserver1); this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); playerlist.sendLevelInfo(this, worldserver); -diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index dfc84223a083890cd78b77029e1f85eb23f66229..1c5d3dd9a962edaf49be9397fc5ce9e1f4924e86 100644 ---- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -412,7 +412,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic - this.aboveGroundVehicleTickCount = 0; - } +diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +index 9bc03cd18bf30bc71f79a6c11f3f30664cf6b822..c0d9e65b8c52afc761c7ca7ec19501141a28aa3a 100644 +--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +@@ -212,7 +212,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack + } + protected void keepConnectionAlive() { - this.server.getProfiler().push("keepAlive"); + //this.server.getProfiler().push("keepAlive"); // Purpur // Paper Start - give clients a longer time to respond to pings as per pre 1.12.2 timings // This should effectively place the keepalive handling back to "as it was" before 1.12.2 long currentTime = Util.getMillis(); -@@ -448,7 +448,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -248,7 +248,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack } // Paper end - this.server.getProfiler().pop(); + //this.server.getProfiler().pop(); // Purpur - // CraftBukkit start - for (int spam; (spam = this.chatSpamTickCount.get()) > 0 && !this.chatSpamTickCount.compareAndSet(spam, spam - 1); ) ; - if (tabSpamLimiter.get() > 0) tabSpamLimiter.getAndDecrement(); // Paper - split to seperate variable + } + + public void suspendFlushing() { diff --git a/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java b/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java index 9ddbfcf80d9a381dace78a62880f85a4d767e0eb..7383c7d3820dce06108eaafd236a7c6c06a10a42 100644 --- a/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java @@ -1027,19 +1028,10 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e32f1a776 100644 +index 28cac00d496cc6e37648dbe96ba4aea2b834cedd..6e0331818ef68fa355e3c27dc3e362b82d1c6e3a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -439,7 +439,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - public int activatedPriority = gg.pufferfish.pufferfish.PufferfishConfig.maximumActivationPrio; // golf score - public final BlockPos.MutableBlockPos cachedBlockPos = new BlockPos.MutableBlockPos(); // used where needed - // Pufferfish end -- -+ - public float getBukkitYaw() { - return this.yRot; - } -@@ -864,7 +864,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -797,7 +797,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { // CraftBukkit end public void baseTick() { @@ -1048,7 +1040,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking this.feetBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -925,7 +925,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -858,7 +858,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.firstTick = false; @@ -1057,7 +1049,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e } public void setSharedFlagOnFire(boolean onFire) { -@@ -1144,7 +1144,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1077,7 +1077,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } } @@ -1066,7 +1058,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1153,7 +1153,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1086,7 +1086,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity || this instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1075,7 +1067,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e return; } // Paper end -@@ -1174,8 +1174,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1107,8 +1107,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1086,7 +1078,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1194,7 +1194,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1127,7 +1127,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1095,7 +1087,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1332,7 +1332,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1265,7 +1265,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1104,7 +1096,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e } } // Paper start - detailed watchdog information -@@ -3101,7 +3101,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3113,7 +3113,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit @@ -1113,7 +1105,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e this.portalTime = i; // Paper start io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3119,7 +3119,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3131,7 +3131,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } } // Paper // CraftBukkit end @@ -1122,7 +1114,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e } this.isInsidePortal = false; -@@ -3590,14 +3590,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3606,14 +3606,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } // Paper end if (this.level() instanceof ServerLevel && !this.isRemoved()) { @@ -1139,7 +1131,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit if (shapedetectorshape == null) { -@@ -3636,7 +3636,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3652,7 +3652,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.unRide(); // CraftBukkit end @@ -1148,7 +1140,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e // Paper start - Change lead drop timing to prevent dupe if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3659,10 +3659,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3675,10 +3675,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.removeAfterChangingDimensions(); @@ -1162,10 +1154,10 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e843992c8737210c106d6281a3b5cd13b85a5cff..9dc72ff027594c848d408bb211549ba6fd890c4b 100644 +index 9e07866c6597b62eb02985770c1fcffe6fb3f601..7bace36fb2c447cc2c7d07777a910c5867bbfe99 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -411,7 +411,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } super.baseTick(); @@ -1174,7 +1166,7 @@ index e843992c8737210c106d6281a3b5cd13b85a5cff..9dc72ff027594c848d408bb211549ba6 if (this.fireImmune() || this.level().isClientSide) { this.clearFire(); } -@@ -513,7 +513,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -514,7 +514,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); @@ -1183,7 +1175,7 @@ index e843992c8737210c106d6281a3b5cd13b85a5cff..9dc72ff027594c848d408bb211549ba6 } public boolean canSpawnSoulSpeedParticle() { -@@ -3127,10 +3127,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3136,10 +3136,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1197,7 +1189,7 @@ index e843992c8737210c106d6281a3b5cd13b85a5cff..9dc72ff027594c848d408bb211549ba6 // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3142,7 +3142,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3151,7 +3151,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1206,10 +1198,10 @@ index e843992c8737210c106d6281a3b5cd13b85a5cff..9dc72ff027594c848d408bb211549ba6 this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3431,19 +3431,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3434,19 +3434,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } - this.setDeltaMovement(d4, d5, d6); + this.setDeltaMovement(d0, d1, d2); - this.level().getProfiler().push("ai"); + //this.level().getProfiler().push("ai"); // Purpur if (this.isImmobile()) { @@ -1229,9 +1221,9 @@ index e843992c8737210c106d6281a3b5cd13b85a5cff..9dc72ff027594c848d408bb211549ba6 + //this.level().getProfiler().pop(); // Purpur + //this.level().getProfiler().push("jump"); // Purpur if (this.jumping && this.isAffectedByFluids()) { - double d7; + double d3; -@@ -3470,8 +3470,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3473,8 +3473,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1242,7 +1234,7 @@ index e843992c8737210c106d6281a3b5cd13b85a5cff..9dc72ff027594c848d408bb211549ba6 this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3498,8 +3498,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3501,8 +3501,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1253,7 +1245,7 @@ index e843992c8737210c106d6281a3b5cd13b85a5cff..9dc72ff027594c848d408bb211549ba6 if (!this.level().isClientSide && !this.isDeadOrDying() && !freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3516,15 +3516,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3519,15 +3519,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1273,10 +1265,10 @@ index e843992c8737210c106d6281a3b5cd13b85a5cff..9dc72ff027594c848d408bb211549ba6 // Purpur start if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 1910f1ad22b2d2b79ad0161d20dcc9772ff2bd7f..5dd0c925af627f7159289dc1e3e79bc593c421f2 100644 +index eafc2eb59616fa4a310a5eee0844a9957cd9f4de..2d2fa961648d36d3fab4d3b8da4e2cd6e1cf9dc7 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -365,13 +365,13 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -364,13 +364,13 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void baseTick() { super.baseTick(); @@ -1292,7 +1284,7 @@ index 1910f1ad22b2d2b79ad0161d20dcc9772ff2bd7f..5dd0c925af627f7159289dc1e3e79bc5 incrementTicksSinceLastInteraction(); // Purpur } -@@ -702,7 +702,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -701,7 +701,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void aiStep() { super.aiStep(); @@ -1301,7 +1293,7 @@ index 1910f1ad22b2d2b79ad0161d20dcc9772ff2bd7f..5dd0c925af627f7159289dc1e3e79bc5 if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level().purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { Vec3i baseblockposition = this.getPickupReach(); List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); -@@ -722,7 +722,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -721,7 +721,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } } @@ -1310,7 +1302,7 @@ index 1910f1ad22b2d2b79ad0161d20dcc9772ff2bd7f..5dd0c925af627f7159289dc1e3e79bc5 } protected Vec3i getPickupReach() { -@@ -934,46 +934,46 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -935,42 +935,42 @@ public abstract class Mob extends LivingEntity implements Targeting { return; } // Paper end @@ -1324,26 +1316,22 @@ index 1910f1ad22b2d2b79ad0161d20dcc9772ff2bd7f..5dd0c925af627f7159289dc1e3e79bc5 if (i % 2 != 0 && this.tickCount > 1) { - this.level().getProfiler().push("targetSelector"); + //this.level().getProfiler().push("targetSelector"); // Purpur - if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.targetSelector.tickRunningGoals(false); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goalSelector"); + //this.level().getProfiler().pop(); // Purpur + //this.level().getProfiler().push("goalSelector"); // Purpur - if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.goalSelector.tickRunningGoals(false); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur } else { - this.level().getProfiler().push("targetSelector"); + //this.level().getProfiler().push("targetSelector"); - if (this.targetSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.targetSelector.tick(); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goalSelector"); + //this.level().getProfiler().pop(); // Purpur + //this.level().getProfiler().push("goalSelector"); // Purpur - if (this.goalSelector.inactiveTick(this.activatedPriority, false)) // Pufferfish - use this to alternate ticking this.goalSelector.tick(); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1378,10 +1366,10 @@ index 1910f1ad22b2d2b79ad0161d20dcc9772ff2bd7f..5dd0c925af627f7159289dc1e3e79bc5 } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f82c249c2 100644 +index b738ee2d3801fadfd09313f05ae24593e56b0ec6..8a70bc63e12838f45fa3eade74f2899438715886 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -105,8 +105,8 @@ public class GoalSelector { +@@ -102,8 +102,8 @@ public class GoalSelector { } public void tick() { @@ -1392,7 +1380,7 @@ index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f for(WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { -@@ -123,8 +123,8 @@ public class GoalSelector { +@@ -120,8 +120,8 @@ public class GoalSelector { } } @@ -1403,7 +1391,7 @@ index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f for(WrappedGoal wrappedGoal2 : this.availableGoals) { // Paper start -@@ -144,13 +144,13 @@ public class GoalSelector { +@@ -141,13 +141,13 @@ public class GoalSelector { } } @@ -1420,7 +1408,7 @@ index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f for(WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (tickAll || wrappedGoal.requiresUpdateEveryTick())) { -@@ -158,7 +158,7 @@ public class GoalSelector { +@@ -155,7 +155,7 @@ public class GoalSelector { } } @@ -1430,7 +1418,7 @@ index 1635818fc4b1788c0d397085239df6dd75b210ab..02978315bc2b828cc603ce7478408f3f public Set getAvailableGoals() { diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index b376670d11088e524ce246f667e580e90cd119a3..fdb08ecc19bc4a1bc93cf6b18adcea2bc5573965 100644 +index b37415d45dda8e658c8995a4519e552dc378bb41..0e36e3e672de4c806e2d534b437489a3a349a722 100644 --- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java +++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java @@ -172,12 +172,12 @@ public abstract class PathNavigation { @@ -1465,16 +1453,16 @@ index 51772f03a3469b11e7166ec6f3a1b9c64a606221..02f2f46ccc48bb4d9bd08555818b0489 this.seen.add(i); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 6c2129b93dbeaeb1e8e8db58fce8670ef8ce5716..d50bf1b980231a1045c1c9df622a9a50fc2ed893 100644 +index 80ff5b8b2041afd7ffef99c33ecd4f5252e827fe..f9af021350df28f286028099d857f034bc03913b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -260,13 +260,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS - private int behaviorTick = 0; // Pufferfish +@@ -258,13 +258,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS + @Override protected void customServerAiStep() { - this.level().getProfiler().push("allayBrain"); + //this.level().getProfiler().push("allayBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("allayActivityUpdate"); @@ -1487,16 +1475,16 @@ index 6c2129b93dbeaeb1e8e8db58fce8670ef8ce5716..d50bf1b980231a1045c1c9df622a9a50 } diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 51b475191113cf3cae5e776b0dfbcd0236a92808..07abf72b7aed98652ac6639b26ade358fcd9135a 100644 +index 38bd4f2325320b63407e5537a8e8744b96abfe95..943bda9f2767c4a4bcb57fb57e1bfaf4093fa0b9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -325,13 +325,13 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder optional = this.getBrain().getMemory(MemoryModuleType.PLAY_DEAD_TICKS); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 8073a3a0df7d75a29419303c85d7dadd9f94be99..9f19ebfa6392a080672c472e08f755379e9776b4 100644 +index f44261137f12354640170206ca7bfb6d991dc7a0..1d84135c709a90843b1ee34fb47508e78a7ce95d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -@@ -161,13 +161,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider +@@ -158,13 +158,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @Override protected void customServerAiStep() { @@ -1531,16 +1519,16 @@ index 8073a3a0df7d75a29419303c85d7dadd9f94be99..9f19ebfa6392a080672c472e08f75537 } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 840b61241c44e92b3053157492f4389f46179e81..dc1e8bcd8049d79c0e383ccd6a5697f79a3a2ebd 100644 +index 7ac51b7c53c89f15661a1fe0b00d07de40f64d81..420ece09271aa745b1b7123d5a72bcc6861b4584 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -218,13 +218,13 @@ public class Frog extends Animal implements VariantHolder { - private int behaviorTick = 0; // Pufferfish +@@ -219,13 +219,13 @@ public class Frog extends Animal implements VariantHolder { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("frogBrain"); + //this.level().getProfiler().push("frogBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("frogActivityUpdate"); @@ -1553,16 +1541,16 @@ index 840b61241c44e92b3053157492f4389f46179e81..dc1e8bcd8049d79c0e383ccd6a5697f7 } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index af8438ae8c805d3276ef2d82eb39b08880fcc8a1..6b012bea26e8ef0c04571f43da67f6e108188830 100644 +index b3533626fd12686d6ebb3330874f805c99a1f5f2..d34718fcde19c8bace0fe9d44f4f97b7a156dae4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -117,13 +117,13 @@ public class Tadpole extends AbstractFish { - private int behaviorTick = 0; // Pufferfish +@@ -116,13 +116,13 @@ public class Tadpole extends AbstractFish { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("tadpoleBrain"); + //this.level().getProfiler().push("tadpoleBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("tadpoleActivityUpdate"); @@ -1575,17 +1563,16 @@ index af8438ae8c805d3276ef2d82eb39b08880fcc8a1..6b012bea26e8ef0c04571f43da67f6e1 } diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 0f8af63a88e425e5e66f68133b6c604caefc6977..31cfc2c8c5188a266c9e9993e5cf322e000df397 100644 +index d8e6208b9238c6840fa6990866e64c830566bf0e..976834b381a629b026e42ac0dcb3a8885d24b113 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -224,13 +224,14 @@ public class Goat extends Animal { - private int behaviorTick = 0; // Pufferfish +@@ -225,13 +225,13 @@ public class Goat extends Animal { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("goatBrain"); + //this.level().getProfiler().push("goatBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Uncomment when pufferfish patch -+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Uncomment when pufferfish patch + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goatActivityUpdate"); @@ -1598,10 +1585,10 @@ index 0f8af63a88e425e5e66f68133b6c604caefc6977..31cfc2c8c5188a266c9e9993e5cf322e } diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index fbc08af025e1f53696093c459656a753f8f89ebe..552777d7ef6a1190a3b84bdf2f130f735c61d275 100644 +index 42bfc59462f320e95c13075c8541c4c4c98a6879..dcb10e2ea1e0c7d0479adae5bc2ff57ece172aad 100644 --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -520,11 +520,11 @@ public class Sniffer extends Animal { +@@ -517,11 +517,11 @@ public class Sniffer extends Animal { @Override protected void customServerAiStep() { @@ -1617,10 +1604,10 @@ index fbc08af025e1f53696093c459656a753f8f89ebe..552777d7ef6a1190a3b84bdf2f130f73 } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index fc5272e8671ff4bda3bd17abe5c31cc0ff4114f8..399e9baedaf37597c539aa5432a513365df83b5e 100644 +index 15fd1af0773ba1254a429240444f48e68e29ee74..1d36459ee10da702d65b4a6d139a05fdd487556f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -230,10 +230,10 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -232,10 +232,10 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @Override protected void customServerAiStep() { @@ -1634,16 +1621,16 @@ index fc5272e8671ff4bda3bd17abe5c31cc0ff4114f8..399e9baedaf37597c539aa5432a51336 } diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 0ddcff8d4cd22cc01462c412c3db39238237ca49..ecc445bb3cda2d79d64c580b72544567dd304f53 100644 +index d709178522abd982de78946e859a14cab50e9818..70f88aed0a19a875a3ab2cd0880d51bcfd24126b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -166,10 +166,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - private int behaviorTick; // Pufferfish +@@ -167,10 +167,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { + @Override protected void customServerAiStep() { - this.level().getProfiler().push("hoglinBrain"); + //this.level().getProfiler().push("hoglinBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - Pufferfish this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1651,16 +1638,16 @@ index 0ddcff8d4cd22cc01462c412c3db39238237ca49..ecc445bb3cda2d79d64c580b72544567 if (this.isConverting()) { ++this.timeInOverworld; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 9fb7f6d0532a7419674cc20e4fc6cb4b08c73514..79f969ea76fc2073e10c050c2aa64b5b5e473181 100644 +index 4169e11a3ad40f5b11fd9ab69ee85ae5be31265b..a667b327935efd15318f9f27d81fe73aabc93484 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -340,10 +340,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento - private int behaviorTick; // Pufferfish +@@ -334,10 +334,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento + @Override protected void customServerAiStep() { - this.level().getProfiler().push("piglinBrain"); + //this.level().getProfiler().push("piglinBrain"); // Purpur - if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider + //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1685,16 +1672,15 @@ index 61e8f2d030fc50840c3f80dfb6fc810797ec440f..856e6e02c9424a6c06e310262cb4f5bd PiglinBruteAi.maybePlayActivitySound(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 0aa6874022d4ee8e38f2d85c45a2a4201c2a83fe..3fa46affc4d77d01909cfeaeaba6e06ba9fd5592 100644 +index c31a23faa07e3261d609bbecae0c2f3b15a382c6..b7a2edd9fb90931bb89d4f3004f1bdc051aeb053 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -300,10 +300,10 @@ public class Warden extends Monster implements VibrationSystem { +@@ -300,9 +300,9 @@ public class Warden extends Monster implements VibrationSystem { protected void customServerAiStep() { ServerLevel worldserver = (ServerLevel) this.level(); - worldserver.getProfiler().push("wardenBrain"); + //worldserver.getProfiler().push("wardenBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish this.getBrain().tick(worldserver, this); - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur @@ -1702,10 +1688,10 @@ index 0aa6874022d4ee8e38f2d85c45a2a4201c2a83fe..3fa46affc4d77d01909cfeaeaba6e06b if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 85c8854691070d8867a5eaf410fe7a2f75fadb9f..2ea19f72dd8e86d5821f734c13ac2dc6f53e9c30 100644 +index 99928a3a8954be0d5b1f7736c12dbbb10d4c508c..b9c964a4f9a89259605a09e2a8eb0f7ae94ae24f 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -341,7 +341,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -339,7 +339,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } protected void customServerAiStep(boolean inactive) { // Purpur - not final // Paper end @@ -1714,20 +1700,20 @@ index 85c8854691070d8867a5eaf410fe7a2f75fadb9f..2ea19f72dd8e86d5821f734c13ac2dc6 // Purpur start if (this.level().purpurConfig.villagerLobotomizeEnabled) { // treat as inactive if lobotomized -@@ -354,7 +354,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - this.getBrain().tick((ServerLevel) this.level(), this); // Paper - else if (this.isLobotomized && shouldRestock()) restock(); +@@ -353,7 +353,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + else */if (this.isLobotomized && shouldRestock()) restock(); // Purpur end + if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper - this.level().getProfiler().pop(); + //this.level().getProfiler().pop(); // Purpur if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..e35ebb5b923c2f63e37e5dae006bc4a030e49bb7 100644 +index 45243249a561440512ef2a620c60b02e159c80e2..b26cea981a876fd42c9ab91923d507b3c11a0425 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -382,7 +382,7 @@ public class Explosion { +@@ -706,7 +706,7 @@ public class Explosion { if (!iblockdata.isAir() && iblockdata.isDestroyable()) { // Paper BlockPos blockposition1 = blockposition.immutable(); @@ -1736,7 +1722,7 @@ index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..e35ebb5b923c2f63e37e5dae006bc4a0 if (block.dropFromExplosion(this)) { Level world = this.level; -@@ -404,7 +404,7 @@ public class Explosion { +@@ -728,7 +728,7 @@ public class Explosion { this.level.setBlock(blockposition, Blocks.AIR.defaultBlockState(), 3); block.wasExploded(this.level, blockposition, this); @@ -1746,10 +1732,10 @@ index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..e35ebb5b923c2f63e37e5dae006bc4a0 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 233980edc80fa0f15756f6d16b76b1f84bd79920..713a091b8083e46b395311889c2a1482279c27ec 100644 +index f9db7dde74ce1277a792497d078ed272e8b23d10..7b35238aadcd10a4a246712f252e6254b0070d57 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1012,9 +1012,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1296,9 +1296,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1761,7 +1747,7 @@ index 233980edc80fa0f15756f6d16b76b1f84bd79920..713a091b8083e46b395311889c2a1482 //timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1059,7 +1059,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1343,7 +1343,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1770,7 +1756,7 @@ index 233980edc80fa0f15756f6d16b76b1f84bd79920..713a091b8083e46b395311889c2a1482 spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1252,7 +1252,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1546,7 +1546,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1779,7 +1765,7 @@ index 233980edc80fa0f15756f6d16b76b1f84bd79920..713a091b8083e46b395311889c2a1482 List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1271,7 +1271,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1565,7 +1565,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1788,17 +1774,16 @@ index 233980edc80fa0f15756f6d16b76b1f84bd79920..713a091b8083e46b395311889c2a1482 // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1528,7 +1528,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1822,6 +1822,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { -- if (gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish -+ if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur ++ //if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur // Purpur - TODO: Pufferfish return (ProfilerFiller) this.profiler.get(); } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 482dfb2bbf8b85ba98bf164c5cf3edcdf927eb98..ad89aac8d6b1ac1095806930afd4fe196084525b 100644 +index 93af6e1a041a514e9b7198e0e510fa88b043439d..ec95678e5fb3f36a35cd0e03c65184a8ee4c8609 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -132,7 +132,7 @@ public final class NaturalSpawner { @@ -1820,10 +1805,10 @@ index 482dfb2bbf8b85ba98bf164c5cf3edcdf927eb98..ad89aac8d6b1ac1095806930afd4fe19 // Paper start diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 4dab159024cf91cd297dcb31833f9d57e2132326..c17b04880b4032984b43dd4fbe1c08f96112abac 100644 +index b27e2e187f9edebdf53cfad3d410154c0751ac86..5ba88bf9109ae1b6cf782b378a08ac7fd135f289 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -552,11 +552,11 @@ public class LevelChunk extends ChunkAccess { +@@ -446,11 +446,11 @@ public class LevelChunk extends ChunkAccess { if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); @@ -1838,24 +1823,24 @@ index 4dab159024cf91cd297dcb31833f9d57e2132326..c17b04880b4032984b43dd4fbe1c08f9 } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1270,9 +1270,9 @@ public class LevelChunk extends ChunkAccess { +@@ -1164,9 +1164,9 @@ public class LevelChunk extends ChunkAccess { if (LevelChunk.this.isTicking(blockposition)) { try { - ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); -+ //ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); // Purpur ++ //ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); - gameprofilerfiller.push(this::getType); -+ //gameprofilerfiller.push(this::getType); // Purpur ++ //gameprofilerfiller.push(this::getType); //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1284,7 +1284,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1178,7 +1178,7 @@ public class LevelChunk extends ChunkAccess { LevelChunk.LOGGER.warn("Block entity {} @ {} state {} invalid for ticking:", new Object[]{LogUtils.defer(this::getType), LogUtils.defer(this::getPos), iblockdata}); } - gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur ++ //gameprofilerfiller.pop(); } catch (Throwable throwable) { if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent tile entity and entity crashes diff --git a/patches/unapplied/server/0270-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 88% rename from patches/unapplied/server/0270-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch index 242ab5cb7..78275b210 100644 --- a/patches/unapplied/server/0270-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0267-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e22f403c54922f05d6d5704ec648dce02097bbb0..9b488a98fdf06515ff267040dd6d654004665207 100644 +index 9fa25455dd264ea0b58d5e1825fd88475021dea9..0d79a045ae1f28f07f1b052ba014bbf372217dba 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -867,6 +867,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -736,6 +736,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause @@ -16,7 +16,7 @@ index e22f403c54922f05d6d5704ec648dce02097bbb0..9b488a98fdf06515ff267040dd6d6540 return; } -@@ -1455,8 +1456,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -1323,8 +1324,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/unapplied/server/0271-Add-Bee-API.patch b/patches/server/0268-Add-Bee-API.patch similarity index 100% rename from patches/unapplied/server/0271-Add-Bee-API.patch rename to patches/server/0268-Add-Bee-API.patch diff --git a/patches/unapplied/server/0272-Debug-Marker-API.patch b/patches/server/0269-Debug-Marker-API.patch similarity index 91% rename from patches/unapplied/server/0272-Debug-Marker-API.patch rename to patches/server/0269-Debug-Marker-API.patch index 98bd940b8..375f77b3d 100644 --- a/patches/unapplied/server/0272-Debug-Marker-API.patch +++ b/patches/server/0269-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index ab31661318beb96bc18b270cc614adcf0ea86d08..9bb5c8a2480dbb86c022d9a83b892d28cf232e8d 100644 +index cb912efba182aff9e8f080aa473f78115eae8a47..8632e9cab6563b9ea0a01c2e5248ad658129d5ce 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1546,6 +1546,42 @@ public final class CraftServer implements Server { +@@ -1543,6 +1543,42 @@ public final class CraftServer implements Server { public void removeFuel(org.bukkit.Material material) { net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material))); } @@ -52,10 +52,10 @@ index ab31661318beb96bc18b270cc614adcf0ea86d08..9bb5c8a2480dbb86c022d9a83b892d28 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index a2e852adf47261b1b2eb9734cc90f4676ed58126..1392e483c363e25d1f16465d876cb7d7c70afa68 100644 +index e55438768a030cdcef433782e55f0fafc4f51db1..2b87e25c1b6627d4ccfb11f4c20c1796c897867f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2294,6 +2294,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2288,6 +2288,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,12 +99,12 @@ index a2e852adf47261b1b2eb9734cc90f4676ed58126..1392e483c363e25d1f16465d876cb7d7 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9c093c406711047a450624e2d137677b1cd4d4b7..c5729a6b326846c5f01bbb413177e244f32a48f1 100644 +index 19f6bad1b81c5a5c249631b43e1f6c159dc994e0..5c23c28955ef0fc3168cf98cd625681bd896ea5f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3334,5 +3334,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - public void setSpawnInvulnerableTicks(int spawnInvulnerableTime) { - getHandle().spawnInvulnerableTime = spawnInvulnerableTime; +@@ -3335,5 +3335,48 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + public void resetIdleTimer() { + getHandle().resetLastActionTime(); } + + @Override diff --git a/patches/unapplied/server/0273-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch similarity index 67% rename from patches/unapplied/server/0273-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch index 9b75d48ec..22f371302 100644 --- a/patches/unapplied/server/0273-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0270-mob-spawning-option-to-ignore-creative-players.patch @@ -5,20 +5,21 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index ad89aac8d6b1ac1095806930afd4fe196084525b..1f9994f4b0b736f64a8676d9431469527c6484df 100644 +index ec95678e5fb3f36a35cd0e03c65184a8ee4c8609..a32ac7796c8cba94b02d854d47395cc1a513f770 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -260,7 +260,7 @@ public final class NaturalSpawner { +@@ -260,7 +260,8 @@ public final class NaturalSpawner { blockposition_mutableblockposition.set(l, i, i1); double d0 = (double) l + 0.5D; double d1 = (double) i1 + 0.5D; -- Player entityhuman = (chunk instanceof LevelChunk) ? ((LevelChunk)chunk).findNearestPlayer(d0, i, d1, 576.0D, net.minecraft.world.entity.EntitySelector.NO_SPECTATORS) : world.getNearestPlayer(d0, (double) i, d1, -1.0D, false); // Paper - use chunk's player cache to optimize search in range -+ Player entityhuman = (chunk instanceof LevelChunk) ? ((LevelChunk)chunk).findNearestPlayer(d0, i, d1, 576.0D, world.purpurConfig.mobSpawningIgnoreCreativePlayers ? net.minecraft.world.entity.EntitySelector.NO_CREATIVE_OR_SPECTATOR : net.minecraft.world.entity.EntitySelector.NO_SPECTATORS) : world.getNearestPlayer(d0, (double) i, d1, -1.0D, world.purpurConfig.mobSpawningIgnoreCreativePlayers); // Paper - use chunk's player cache to optimize search in range // Purpur +- Player entityhuman = world.getNearestPlayer(d0, (double) i, d1, -1.0D, false); ++ Player entityhuman = world.getNearestPlayer(d0, (double) i, d1, -1.0D, world.purpurConfig.mobSpawningIgnoreCreativePlayers); // Purpur - diff on change ++ //Player entityhuman = (chunk instanceof LevelChunk) ? ((LevelChunk)chunk).findNearestPlayer(d0, i, d1, 576.0D, world.purpurConfig.mobSpawningIgnoreCreativePlayers ? net.minecraft.world.entity.EntitySelector.NO_CREATIVE_OR_SPECTATOR : net.minecraft.world.entity.EntitySelector.NO_SPECTATORS) : world.getNearestPlayer(d0, (double) i, d1, -1.0D, world.purpurConfig.mobSpawningIgnoreCreativePlayers); // Paper - use chunk's player cache to optimize search in range // Purpur // Purpur - TODO: Paper if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 370b5ff992fb3ff7dd88ab479b3c251d36ced42f..8519259a086dfcceb793e5e1177e06248c97bc2e 100644 +index 07b8826509d158e60ee6c3c847f7855b7469325f..71d2da21e1dcf5991f9161b3fcad66247a5a4991 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -377,6 +377,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0274-Add-skeleton-bow-accuracy-option.patch b/patches/server/0271-Add-skeleton-bow-accuracy-option.patch similarity index 91% rename from patches/unapplied/server/0274-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0271-Add-skeleton-bow-accuracy-option.patch index 85cdb8a96..887b8ab1a 100644 --- a/patches/unapplied/server/0274-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0271-Add-skeleton-bow-accuracy-option.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add skeleton bow accuracy option diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 41376b705748e14c1c4174e07732ce09ad8e581f..dd84433a988712da9d799cbda2487a902315fb92 100644 +index f3e1fa62d9f067c0fe8aacb88bf30b01ee0562c1..28eb98d383d6846a25c29f8cd8ff211c360a56dc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -182,7 +182,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -18,10 +18,10 @@ index 41376b705748e14c1c4174e07732ce09ad8e581f..dd84433a988712da9d799cbda2487a90 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8519259a086dfcceb793e5e1177e06248c97bc2e..5f4b6d211e1a310ca2efcc94686e2757cff973ec 100644 +index 71d2da21e1dcf5991f9161b3fcad66247a5a4991..86340e782bbc125ec672eea855de29f90ac127de 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2453,6 +2453,8 @@ public class PurpurWorldConfig { +@@ -2449,6 +2449,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 8519259a086dfcceb793e5e1177e06248c97bc2e..5f4b6d211e1a310ca2efcc94686e2757 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2467,6 +2469,18 @@ public class PurpurWorldConfig { +@@ -2463,6 +2465,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/unapplied/server/0275-Allay-respect-item-NBT.patch b/patches/server/0272-Allay-respect-item-NBT.patch similarity index 89% rename from patches/unapplied/server/0275-Allay-respect-item-NBT.patch rename to patches/server/0272-Allay-respect-item-NBT.patch index d49181e1b..a538e1abd 100644 --- a/patches/unapplied/server/0275-Allay-respect-item-NBT.patch +++ b/patches/server/0272-Allay-respect-item-NBT.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allay respect item NBT diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index d50bf1b980231a1045c1c9df622a9a50fc2ed893..7166f4a39fd615e10d7b1f53c57363832a41f365 100644 +index f9af021350df28f286028099d857f034bc03913b..b3e92d3fb6fbadfc6df236754123bc12ad9bc7e7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -407,9 +407,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -405,9 +405,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @Override public boolean wantsToPickUp(ItemStack stack) { @@ -44,10 +44,10 @@ index d50bf1b980231a1045c1c9df622a9a50fc2ed893..7166f4a39fd615e10d7b1f53c5736383 private boolean allayConsidersItemEqual(ItemStack stack, ItemStack stack2) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f4b6d211e1a310ca2efcc94686e2757cff973ec..a4c5c469fed51b46727783ddefa293e53b9c66ca 100644 +index 86340e782bbc125ec672eea855de29f90ac127de..1a8a1a9bca5c2f92b87fb1a21bdff194718caa8e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1087,10 +1087,13 @@ public class PurpurWorldConfig { +@@ -1083,10 +1083,13 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = true; public boolean allayControllable = true; diff --git a/patches/unapplied/server/0276-Add-death-screen-API.patch b/patches/server/0273-Add-death-screen-API.patch similarity index 87% rename from patches/unapplied/server/0276-Add-death-screen-API.patch rename to patches/server/0273-Add-death-screen-API.patch index 3e78bfa92..94dd97dfe 100644 --- a/patches/unapplied/server/0276-Add-death-screen-API.patch +++ b/patches/server/0273-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index beae58414b27d2a33bb6507ae8ab2104fde2cc0e..668d825a2469706e4de11629a0b41877de700ca6 100644 +index 5c23c28955ef0fc3168cf98cd625681bd896ea5f..c9c8e66fd044a7c75994eaf38ff14f94f9c5e3ae 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3377,5 +3377,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3378,5 +3378,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket(ClientboundCustomPayloadPacket.DEBUG_GAME_TEST_CLEAR, new FriendlyByteBuf(io.netty.buffer.Unpooled.buffer()))); } diff --git a/patches/unapplied/server/0278-Implement-ram-and-rambar-commands.patch b/patches/server/0274-Implement-ram-and-rambar-commands.patch similarity index 95% rename from patches/unapplied/server/0278-Implement-ram-and-rambar-commands.patch rename to patches/server/0274-Implement-ram-and-rambar-commands.patch index a2e8c3bcf..2de035a73 100644 --- a/patches/unapplied/server/0278-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0274-Implement-ram-and-rambar-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement ram and rambar commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 52b06c34d9d3ffb8844556e7b0eaed5a7f03da0c..5c0085589b08f199c75ceeab8d0cf25e970a0533 100644 +index 9caab6541a224dc8f729a7d720eccda7bd83ed53..2fd376789bb24b14101e289733631a9a4b68fa1c 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -230,6 +230,8 @@ public class Commands { +@@ -236,6 +236,8 @@ public class Commands { org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.CompassCommand.register(this.dispatcher); // Purpur @@ -18,17 +18,17 @@ index 52b06c34d9d3ffb8844556e7b0eaed5a7f03da0c..5c0085589b08f199c75ceeab8d0cf25e if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 2f013c3365d065325d645d43f7c5137f942b06df..0249eeb3937cf48cea13846a7e39b248947e21a4 100644 +index 3c44249e782d0e98689a58c719030dea2f007644..1b8325dfa185cf35bcb02e5e2485a78ef6f8c014 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -280,6 +280,7 @@ public class ServerPlayer extends Player { - public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event +@@ -277,6 +277,7 @@ public class ServerPlayer extends Player { public boolean purpurClient = false; // Purpur - public boolean acceptingResourcePack = false; // Purpur -+ private boolean ramBar = false; // Purpur private boolean tpsBar = false; // Purpur private boolean compassBar = false; // Purpur ++ private boolean ramBar = false; // Purpur + // Paper start - replace player chunk loader + private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); @@ -562,6 +563,7 @@ public class ServerPlayer extends Player { } } @@ -45,10 +45,11 @@ index 2f013c3365d065325d645d43f7c5137f942b06df..0249eeb3937cf48cea13846a7e39b248 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2816,6 +2819,14 @@ public class ServerPlayer extends Player { - } +@@ -2804,5 +2807,13 @@ public class ServerPlayer extends Player { + public void compassBar(boolean compassBar) { + this.compassBar = compassBar; } - ++ + public boolean ramBar() { + return this.ramBar; + } @@ -56,10 +57,8 @@ index 2f013c3365d065325d645d43f7c5137f942b06df..0249eeb3937cf48cea13846a7e39b248 + public void ramBar(boolean ramBar) { + this.ramBar = ramBar; + } -+ - public boolean tpsBar() { - return this.tpsBar; - } + // Purpur end + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index ed9b2f0b55229848894d9d6b401d050cb031b893..568bb53e91dda4804cd328a81ba12ce735c52603 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/unapplied/server/0279-Add-item-packet-serialize-event.patch b/patches/server/0275-Add-item-packet-serialize-event.patch similarity index 87% rename from patches/unapplied/server/0279-Add-item-packet-serialize-event.patch rename to patches/server/0275-Add-item-packet-serialize-event.patch index 4e84a004c..592cc1964 100644 --- a/patches/unapplied/server/0279-Add-item-packet-serialize-event.patch +++ b/patches/server/0275-Add-item-packet-serialize-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add item packet serialize event diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -index 9938bb90bef84cf784f9a1ceb02a1a45aa8b48a1..1f4b64a5f812376c499c98cb4be62469bd0b7dbe 100644 +index 2e395962b555bef0ce1a98e1d768e7738f011535..40f51062624161892c780ddae05e22859e2cd021 100644 --- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java +++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java -@@ -98,6 +98,8 @@ public class FriendlyByteBuf extends ByteBuf { +@@ -94,6 +94,8 @@ public class FriendlyByteBuf extends ByteBuf { private static final int MAX_PUBLIC_KEY_LENGTH = 512; private static final Gson GSON = new Gson(); @@ -17,7 +17,7 @@ index 9938bb90bef84cf784f9a1ceb02a1a45aa8b48a1..1f4b64a5f812376c499c98cb4be62469 public FriendlyByteBuf(ByteBuf parent) { this.source = parent; } -@@ -679,6 +681,17 @@ public class FriendlyByteBuf extends ByteBuf { +@@ -632,6 +634,17 @@ public class FriendlyByteBuf extends ByteBuf { this.writeBoolean(false); } else { this.writeBoolean(true); @@ -36,10 +36,10 @@ index 9938bb90bef84cf784f9a1ceb02a1a45aa8b48a1..1f4b64a5f812376c499c98cb4be62469 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9903d461f775701b2e01899b344c58609edd426a..e6ddf69ade7ae51640569150f7db10d1afa63691 100644 +index 94b9a2f72dbdf85a95a9b99c45a66e7044f69f2a..d20aea388a568657f233d9e8b34b208d0d2ab01e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1558,6 +1558,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop(this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, (entityvillagertrader) -> { @@ -30,7 +30,7 @@ index 970b1f6eaeeddf9928ba61239248ecd2234eda9a..0e5fae26bf89749e446050c92dc7c23d this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a4c5c469fed51b46727783ddefa293e53b9c66ca..ad8f733ded15d6db3adabccd35bd035f87b2777c 100644 +index 1a8a1a9bca5c2f92b87fb1a21bdff194718caa8e..1bec2760e6ae3022dbcef1bb40d7749cf3b0609e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -128,6 +128,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0285-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0281-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/unapplied/server/0285-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0281-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/unapplied/server/0286-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0282-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/unapplied/server/0286-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0282-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/unapplied/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/unapplied/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 6bdde9518..4655518ae 100644 --- a/patches/unapplied/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0283-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..7b99c3446b50939241d3e220d93e0564 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ad8f733ded15d6db3adabccd35bd035f87b2777c..0e7666ddae8e0dc76047fb2f0661a8e63bf2cef2 100644 +index 1bec2760e6ae3022dbcef1bb40d7749cf3b0609e..c04befc0e4d97497087bc8961daefe814e199a84 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1361,6 +1361,7 @@ public class PurpurWorldConfig { +@@ -1357,6 +1357,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index ad8f733ded15d6db3adabccd35bd035f87b2777c..0e7666ddae8e0dc76047fb2f0661a8e6 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1379,6 +1380,7 @@ public class PurpurWorldConfig { +@@ -1375,6 +1376,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/unapplied/server/0288-Fire-Immunity-API.patch b/patches/server/0284-Fire-Immunity-API.patch similarity index 86% rename from patches/unapplied/server/0288-Fire-Immunity-API.patch rename to patches/server/0284-Fire-Immunity-API.patch index b213495c8..3f05cb99d 100644 --- a/patches/unapplied/server/0288-Fire-Immunity-API.patch +++ b/patches/server/0284-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e634f9b7998979e00e4de4899214863e32f1a776..606b29a752176288234ce0082a9b58b79007e4e1 100644 +index 6e0331818ef68fa355e3c27dc3e362b82d1c6e3a..5fa044b03f0a08d1e17b9002255e2e6438fa79c8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -418,6 +418,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -417,6 +417,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean collidingWithWorldBorder; // Paper public boolean fixedPose = false; // Paper @@ -16,7 +16,7 @@ index e634f9b7998979e00e4de4899214863e32f1a776..606b29a752176288234ce0082a9b58b7 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1822,7 +1823,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1767,7 +1768,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean fireImmune() { @@ -25,7 +25,7 @@ index e634f9b7998979e00e4de4899214863e32f1a776..606b29a752176288234ce0082a9b58b7 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2492,6 +2493,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2441,6 +2442,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { nbt.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index e634f9b7998979e00e4de4899214863e32f1a776..606b29a752176288234ce0082a9b58b7 return nbt; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2660,6 +2666,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2609,6 +2615,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,11 +50,11 @@ index e634f9b7998979e00e4de4899214863e32f1a776..606b29a752176288234ce0082a9b58b7 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index feeca8d318fa0b7b22e728baa3bf3269d42bf0a6..8973c8a3bad120e55269bf1b7b810284ad0fe14c 100644 +index 431e3cedde33b33202be1d44bf066323997f21f8..236d753266943d8c64e1329336d28c50109d0886 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -224,6 +224,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - this.entityType = (type != null) ? type : EntityType.UNKNOWN; +@@ -223,6 +223,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } + @Override diff --git a/patches/unapplied/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 87% rename from patches/unapplied/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 2a8459580..e9a8bb8dd 100644 --- a/patches/unapplied/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0285-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 606b29a752176288234ce0082a9b58b79007e4e1..cf0d8da4c4b5f4aa4e4ef15897ca252a2b52ec8d 100644 +index 5fa044b03f0a08d1e17b9002255e2e6438fa79c8..84643f0dd71530a5f18557f299d7725a8f53666e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -939,6 +939,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -872,6 +872,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end @@ -17,10 +17,10 @@ index 606b29a752176288234ce0082a9b58b79007e4e1..cf0d8da4c4b5f4aa4e4ef15897ca252a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0e7666ddae8e0dc76047fb2f0661a8e63bf2cef2..059865f4aed093b0a6ee27243305462a31458ef0 100644 +index c04befc0e4d97497087bc8961daefe814e199a84..443871290764e6863509acd0847f8c4c8f8566b6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -419,6 +419,7 @@ public class PurpurWorldConfig { +@@ -417,6 +417,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index 0e7666ddae8e0dc76047fb2f0661a8e63bf2cef2..059865f4aed093b0a6ee27243305462a public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -450,6 +451,7 @@ public class PurpurWorldConfig { +@@ -446,6 +447,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/unapplied/server/0290-Added-got-ram-event.patch b/patches/server/0286-Added-got-ram-event.patch similarity index 86% rename from patches/unapplied/server/0290-Added-got-ram-event.patch rename to patches/server/0286-Added-got-ram-event.patch index bd0d587a1..f98adaa1b 100644 --- a/patches/unapplied/server/0290-Added-got-ram-event.patch +++ b/patches/server/0286-Added-got-ram-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 31cfc2c8c5188a266c9e9993e5cf322e000df397..b04af8b72357b455597d80592c8b8b0c9da744cd 100644 +index 976834b381a629b026e42ac0dcb3a8885d24b113..7e36739ce44656f859bf63d0a07f10c8090d0839 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -423,6 +423,7 @@ public class Goat extends Animal { +@@ -428,6 +428,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/patches/unapplied/server/0291-Log-skipped-entity-s-position.patch b/patches/server/0287-Log-skipped-entity-s-position.patch similarity index 86% rename from patches/unapplied/server/0291-Log-skipped-entity-s-position.patch rename to patches/server/0287-Log-skipped-entity-s-position.patch index cef4c4549..f61af3ce4 100644 --- a/patches/unapplied/server/0291-Log-skipped-entity-s-position.patch +++ b/patches/server/0287-Log-skipped-entity-s-position.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index e413aa4650297ce2109beb6319f52fb476e291fe..a8ffa403ac48041e17aa4ce057be0539e5468fd4 100644 +index 55fced3e70c7bc49306af00dcc1d92ffb83a799b..a9f69e4f880711c21ef28bd079960ef8f12da25c 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -612,6 +612,12 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -611,6 +611,12 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(nbt); }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); diff --git a/patches/unapplied/server/0292-End-Crystal-Cramming.patch b/patches/server/0288-End-Crystal-Cramming.patch similarity index 91% rename from patches/unapplied/server/0292-End-Crystal-Cramming.patch rename to patches/server/0288-End-Crystal-Cramming.patch index 41657c6c8..fc7355718 100644 --- a/patches/unapplied/server/0292-End-Crystal-Cramming.patch +++ b/patches/server/0288-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 564d17bc460e2a04947ff9676fbf4c8b1569659c..440add62fcfa62d483409e1aecfc9159 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 059865f4aed093b0a6ee27243305462a31458ef0..fa0b64f60e0e90147dd924272547695af56790a3 100644 +index 443871290764e6863509acd0847f8c4c8f8566b6..829f3a7542460ef71bd934ff3dea0321168a9fac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -881,6 +881,7 @@ public class PurpurWorldConfig { +@@ -877,6 +877,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 059865f4aed093b0a6ee27243305462a31458ef0..fa0b64f60e0e90147dd924272547695a private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -908,6 +909,7 @@ public class PurpurWorldConfig { +@@ -904,6 +905,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/unapplied/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 87% rename from patches/unapplied/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 2f8140d9a..2ff083b98 100644 --- a/patches/unapplied/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0289-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to allow beacon effects when covered by tinted glass diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index 12578b377b6e939971fb2dcba08637df60643e37..2e6220c5a6c871401ce9734adfab710dcf86ad44 100644 +index a5f9747be5503dd24abd98f11cfa8229448ca3bf..99ef8d7e3ee0ee9777d12ad825e728c38d886114 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -@@ -165,6 +165,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -174,6 +174,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name int j = pos.getY(); int k = pos.getZ(); BlockPos blockposition1; @@ -16,7 +16,7 @@ index 12578b377b6e939971fb2dcba08637df60643e37..2e6220c5a6c871401ce9734adfab710d if (blockEntity.lastCheckY < j) { blockposition1 = pos; -@@ -198,6 +199,9 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -207,6 +208,9 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name } } } else { @@ -26,7 +26,7 @@ index 12578b377b6e939971fb2dcba08637df60643e37..2e6220c5a6c871401ce9734adfab710d if (tileentitybeacon_beaconcolortracker == null || iblockdata1.getLightBlock(world, blockposition1) >= 15 && !iblockdata1.is(Blocks.BEDROCK)) { blockEntity.checkingBeamSections.clear(); blockEntity.lastCheckY = l; -@@ -217,7 +221,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -226,7 +230,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name blockEntity.levels = BeaconBlockEntity.updateBase(world, i, j, k); } @@ -36,10 +36,10 @@ index 12578b377b6e939971fb2dcba08637df60643e37..2e6220c5a6c871401ce9734adfab710d BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fa0b64f60e0e90147dd924272547695af56790a3..785e4f56c82beb993fc980b9039f184eec98a409 100644 +index 829f3a7542460ef71bd934ff3dea0321168a9fac..78e8043f85f65e81db0d4192fbe93df952849490 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -780,11 +780,13 @@ public class PurpurWorldConfig { +@@ -776,11 +776,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/unapplied/server/0294-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/unapplied/server/0294-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0290-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/unapplied/server/0295-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0291-Config-to-remove-explosion-radius-clamp.patch similarity index 86% rename from patches/unapplied/server/0295-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0291-Config-to-remove-explosion-radius-clamp.patch index 45c8be7ba..d9f022418 100644 --- a/patches/unapplied/server/0295-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0291-Config-to-remove-explosion-radius-clamp.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index a907930813b0a3176354b4b307576d9ff3b0c5ca..ec595b74a6376adb65840035cdaa7502c9a3fe50 100644 +index 82d81fd2edff9df0bb4ff116d9274887a316d0a8..823f0e36119079eb827767c08391f18d75b66610 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -109,6 +109,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -111,6 +111,7 @@ public class EnderDragon extends Mob implements Enemy { public EnderDragon(EntityType entitytypes, Level world) { super(EntityType.ENDER_DRAGON, world); @@ -17,10 +17,10 @@ index a907930813b0a3176354b4b307576d9ff3b0c5ca..ec595b74a6376adb65840035cdaa7502 this.growlTime = 100; this.nodes = new Node[24]; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index e35ebb5b923c2f63e37e5dae006bc4a030e49bb7..dcc3b333f3647631e2fb695d0854036d3bc009be 100644 +index b26cea981a876fd42c9ab91923d507b3c11a0425..b6c8f19a7d919fc56deb3518a28d725e9afbc82b 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -86,7 +86,7 @@ public class Explosion { +@@ -87,7 +87,7 @@ public class Explosion { this.hitPlayers = Maps.newHashMap(); this.level = world; this.source = entity; @@ -29,7 +29,7 @@ index e35ebb5b923c2f63e37e5dae006bc4a030e49bb7..dcc3b333f3647631e2fb695d0854036d this.x = x; this.y = y; this.z = z; -@@ -137,7 +137,7 @@ public class Explosion { +@@ -403,7 +403,7 @@ public class Explosion { public void explode() { // CraftBukkit start @@ -39,7 +39,7 @@ index e35ebb5b923c2f63e37e5dae006bc4a030e49bb7..dcc3b333f3647631e2fb695d0854036d } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 785e4f56c82beb993fc980b9039f184eec98a409..2bafe37662ee22dc9f24cf3d5dd198416b495ee7 100644 +index 78e8043f85f65e81db0d4192fbe93df952849490..ba7fa9386b494c38e44717529f20c9341e26d9c2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -213,6 +213,11 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/unapplied/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch index f3b894b65..e591dc316 100644 --- a/patches/unapplied/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0292-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index c3f500580d257e1397f2eb7c47b063a6fe6bb405..0d5c6bdfd4aeda472804b493315bf21a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2bafe37662ee22dc9f24cf3d5dd198416b495ee7..9365469584fd647dbc52176efb8c282c21dd28d6 100644 +index ba7fa9386b494c38e44717529f20c9341e26d9c2..2870a23c01ab5bdb45e355b2f1fd277395ef4771 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -834,8 +834,20 @@ public class PurpurWorldConfig { +@@ -830,8 +830,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/unapplied/server/0297-Add-PreExplodeEvents.patch b/patches/server/0293-Add-PreExplodeEvents.patch similarity index 92% rename from patches/unapplied/server/0297-Add-PreExplodeEvents.patch rename to patches/server/0293-Add-PreExplodeEvents.patch index ccc7f7b93..c99e6649a 100644 --- a/patches/unapplied/server/0297-Add-PreExplodeEvents.patch +++ b/patches/server/0293-Add-PreExplodeEvents.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index dcc3b333f3647631e2fb695d0854036d3bc009be..4932374ab9a3d8582fb0ef024d817ad896dd23c4 100644 +index b6c8f19a7d919fc56deb3518a28d725e9afbc82b..ef9b1687dd2dfda5398523140aecc678b4690642 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -141,6 +141,23 @@ public class Explosion { +@@ -407,6 +407,23 @@ public class Explosion { return; } // CraftBukkit end diff --git a/patches/unapplied/server/0298-Improve-output-of-plugins-command.patch b/patches/server/0294-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/unapplied/server/0298-Improve-output-of-plugins-command.patch rename to patches/server/0294-Improve-output-of-plugins-command.patch diff --git a/patches/unapplied/server/0299-Add-mending-multiplier.patch b/patches/server/0295-Add-mending-multiplier.patch similarity index 96% rename from patches/unapplied/server/0299-Add-mending-multiplier.patch rename to patches/server/0295-Add-mending-multiplier.patch index 24d6b6676..cf095aedc 100644 --- a/patches/unapplied/server/0299-Add-mending-multiplier.patch +++ b/patches/server/0295-Add-mending-multiplier.patch @@ -27,7 +27,7 @@ index b2233635b6acc35ea3668c36c56e57f15420ac62..724bf857bf1b89cb0947b8a82e0ce09a public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9365469584fd647dbc52176efb8c282c21dd28d6..76216ce3a481b7430bd5a3d60bb41798216fa692 100644 +index 2870a23c01ab5bdb45e355b2f1fd277395ef4771..e7a794ce230c481e39436506facdb77726f96199 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied/server/0300-Make-GUI-Great-Again.patch b/patches/server/0296-Make-GUI-Great-Again.patch similarity index 99% rename from patches/unapplied/server/0300-Make-GUI-Great-Again.patch rename to patches/server/0296-Make-GUI-Great-Again.patch index a7001817f..5ce331abb 100644 --- a/patches/unapplied/server/0300-Make-GUI-Great-Again.patch +++ b/patches/server/0296-Make-GUI-Great-Again.patch @@ -96,7 +96,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 41db72915baa4c02b11a701dfdde09b66ba72476..12124d6fbc0406bb62bd95a0f7bab68afa43377c 100644 +index 6656a3f4dd78270690479639c738fdd0ec7e588d..6e9061dd6d5fd35d74d02c25a5985ffc5bc8e5ac 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -99,6 +99,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/unapplied/server/0301-Stored-Bee-API.patch b/patches/server/0297-Stored-Bee-API.patch similarity index 100% rename from patches/unapplied/server/0301-Stored-Bee-API.patch rename to patches/server/0297-Stored-Bee-API.patch diff --git a/patches/unapplied/server/0302-Shears-can-defuse-TNT.patch b/patches/server/0298-Shears-can-defuse-TNT.patch similarity index 95% rename from patches/unapplied/server/0302-Shears-can-defuse-TNT.patch rename to patches/server/0298-Shears-can-defuse-TNT.patch index e88cf775c..2fd4164b0 100644 --- a/patches/unapplied/server/0302-Shears-can-defuse-TNT.patch +++ b/patches/server/0298-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index 4ce3e69970dd9eb251d0538a2d233ca30e9e5e47..afc65b8bb7e7f7f70a25f2d869412ed3 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 76216ce3a481b7430bd5a3d60bb41798216fa692..f9711c31fae1e27158f7323639ce279237516c91 100644 +index e7a794ce230c481e39436506facdb77726f96199..ec7c1b39a87f253c52de4d0f3b01e8329aaa723a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3223,4 +3223,11 @@ public class PurpurWorldConfig { +@@ -3219,4 +3219,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/unapplied/server/0303-Explorer-Map-API.patch b/patches/server/0299-Explorer-Map-API.patch similarity index 85% rename from patches/unapplied/server/0303-Explorer-Map-API.patch rename to patches/server/0299-Explorer-Map-API.patch index 1e1393e24..f4039b193 100644 --- a/patches/unapplied/server/0303-Explorer-Map-API.patch +++ b/patches/server/0299-Explorer-Map-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Explorer Map API diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java -index d3c29e6bf8b3c2dd628809177dac50220a7de415..735486b46581bb3b91c85f57490b560ff490787e 100644 +index c368b437597edf7e165326727ae778a69c3fcc83..fed5bfb02ab7d6c1d1d9bf993fda5b3f411b9352 100644 --- a/src/main/java/net/minecraft/world/item/MapItem.java +++ b/src/main/java/net/minecraft/world/item/MapItem.java @@ -243,6 +243,7 @@ public class MapItem extends ComplexItem { @@ -17,10 +17,10 @@ index d3c29e6bf8b3c2dd628809177dac50220a7de415..735486b46581bb3b91c85f57490b560f int i = 1 << worldmap.scale; int j = worldmap.centerX; diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index 50713f03c783c63f93710d986d94af544be0615a..e64921f454c88e2ca9e1396fcb1ca7c179ff71a7 100644 +index e4c4948e076cd64686dfd16ae0568fafc1437140..804c342783baccdc12e8ca49a362770e31596f6a 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -@@ -66,6 +66,7 @@ public class MapItemSavedData extends SavedData { +@@ -67,6 +67,7 @@ public class MapItemSavedData extends SavedData { private final Map frameMarkers = Maps.newHashMap(); private int trackedDecorationCount; private org.bukkit.craftbukkit.map.RenderData vanillaRender = new org.bukkit.craftbukkit.map.RenderData(); // Paper @@ -29,7 +29,7 @@ index 50713f03c783c63f93710d986d94af544be0615a..e64921f454c88e2ca9e1396fcb1ca7c1 // CraftBukkit start public final CraftMapView mapView; diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java -index 9683d7d103af66fffd68c11abc38fb4fd2f99482..18a4de76021ff8b500801ef0121003f8dd62a961 100644 +index 2d2bf5c37709b8e747fbfa2db5ce86f258e86224..f6413ab181208d729afb532dca5e96e4c938e83c 100644 --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java @@ -46,4 +46,10 @@ public class CraftMapRenderer extends MapRenderer { diff --git a/patches/unapplied/server/0304-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 84% rename from patches/unapplied/server/0304-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch index 801d131e2..f0ebe5b25 100644 --- a/patches/unapplied/server/0304-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0300-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option Ocelot Spawn Under Sea Level diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index c72d5e7c2a19c5690a8065c95c75f0415358c2a9..45fb438065b1db2a9baa648f4d397472847ed638 100644 +index af275fc579d66bb098c08e88e4186846a1174c02..3c5f25300d1c7800144a459cc8bf598352a62a35 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -293,7 +293,7 @@ public class Ocelot extends Animal { +@@ -295,7 +295,7 @@ public class Ocelot extends Animal { if (world.isUnobstructed(this) && !world.containsAnyLiquid(this.getBoundingBox())) { BlockPos blockposition = this.blockPosition(); @@ -18,10 +18,10 @@ index c72d5e7c2a19c5690a8065c95c75f0415358c2a9..45fb438065b1db2a9baa648f4d397472 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f9711c31fae1e27158f7323639ce279237516c91..383473859796d28a86dfd5fa5e407b6b5ea6aeb7 100644 +index ec7c1b39a87f253c52de4d0f3b01e8329aaa723a..39236dc4d7c70edff091bb1df54b2158e6dd5e2c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2040,6 +2040,7 @@ public class PurpurWorldConfig { +@@ -2036,6 +2036,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index f9711c31fae1e27158f7323639ce279237516c91..383473859796d28a86dfd5fa5e407b6b private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2053,6 +2054,7 @@ public class PurpurWorldConfig { +@@ -2049,6 +2050,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/unapplied/server/0305-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 91% rename from patches/unapplied/server/0305-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index e0789dede..584df323d 100644 --- a/patches/unapplied/server/0305-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0301-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -5,7 +5,7 @@ Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -index d98c526676202741e628d5e317b8cdd3f4d3be0a..edf9208ed49a179dc15308dd72ee47367c0a9ded 100644 +index 5c13e376dd079134da465044f1057bcce66973a3..dd91ca657eab8800458d7fdc0fa67273788a390a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java @@ -597,20 +597,33 @@ public class PiglinAi { @@ -45,10 +45,10 @@ index d98c526676202741e628d5e317b8cdd3f4d3be0a..edf9208ed49a179dc15308dd72ee4736 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 383473859796d28a86dfd5fa5e407b6b5ea6aeb7..ec6c29638935835d590823c5cc35141a7f4d32f2 100644 +index 39236dc4d7c70edff091bb1df54b2158e6dd5e2c..cd7f347e46f4fa08e291bfdbbb01ea4f3271a877 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2209,6 +2209,7 @@ public class PurpurWorldConfig { +@@ -2205,6 +2205,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -56,7 +56,7 @@ index 383473859796d28a86dfd5fa5e407b6b5ea6aeb7..ec6c29638935835d590823c5cc35141a private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2224,6 +2225,7 @@ public class PurpurWorldConfig { +@@ -2220,6 +2221,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/unapplied/server/0306-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 97% rename from patches/unapplied/server/0306-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch index c9c2a1c99..da162e380 100644 --- a/patches/unapplied/server/0306-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0302-Add-option-for-always-showing-item-in-player-death-m.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option for always showing item in player death messages diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 45e4717ba832edceeafdba575323c2527c350193..45a1cbe958c1a626df97022afe22484f2b387233 100644 +index 8c2c515f1b5f56bf1d6cf0c35d4f0fa7b593d1a0..6e8d9be28c5908fb12c44c0ecb0e02180601371a 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java @@ -59,7 +59,7 @@ public class CombatTracker { diff --git a/patches/unapplied/server/0307-place-end-crystal-on-any-block.patch b/patches/server/0303-place-end-crystal-on-any-block.patch similarity index 88% rename from patches/unapplied/server/0307-place-end-crystal-on-any-block.patch rename to patches/server/0303-place-end-crystal-on-any-block.patch index 40cf9aa56..628ad2c79 100644 --- a/patches/unapplied/server/0307-place-end-crystal-on-any-block.patch +++ b/patches/server/0303-place-end-crystal-on-any-block.patch @@ -5,7 +5,7 @@ Subject: [PATCH] place end crystal on any block diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba60be41a3b 100644 +index 5a19875cbc603acea95193d969d2e1dc1e0bfd78..a9ee4a382118294b43d0ff13ffd5fbe9463316a3 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -26,7 +26,7 @@ public class EndCrystalItem extends Item { @@ -18,10 +18,10 @@ index 3688e9f8c6c6d1239095e3a87060ccca90386d0c..34254eec36d34ae343733fa1abbaaba6 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec6c29638935835d590823c5cc35141a7f4d32f2..078102e636803f38facc049952813ff2f8b63594 100644 +index cd7f347e46f4fa08e291bfdbbb01ea4f3271a877..d4d9f748d259df8b6f4566efa21c15c470de5ba2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -903,6 +903,7 @@ public class PurpurWorldConfig { +@@ -899,6 +899,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index ec6c29638935835d590823c5cc35141a7f4d32f2..078102e636803f38facc049952813ff2 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -931,6 +932,7 @@ public class PurpurWorldConfig { +@@ -927,6 +928,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming);