From 237b71ba2142672d99397fabead4dca1ab633a23 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 9 Jun 2023 02:58:35 -0700 Subject: [PATCH] all the patches \o/ --- ...d-to-crystals-and-crystals-shoot-ph.patch} | 30 +- ... => 0070-Allow-color-codes-in-books.patch} | 2 +- ...espan.patch => 0071-Entity-lifespan.patch} | 6 +- ...eport-to-spawn-if-outside-world-bor.patch} | 2 +- ...ty.patch => 0073-Squid-EAR-immunity.patch} | 6 +- ...atch => 0074-Phantoms-burn-in-light.patch} | 20 +- ...0075-Configurable-villager-breeding.patch} | 6 +- ... 0076-Redstone-deactivates-spawners.patch} | 2 +- ...ch => 0077-Totems-work-in-inventory.patch} | 2 +- ...-Add-vindicator-johnny-spawn-chance.patch} | 6 +- ...on-to-disable-certain-block-updates.patch} | 0 ...0080-Dispensers-place-anvils-option.patch} | 2 +- ...rs.patch => 0081-Allow-anvil-colors.patch} | 2 +- ...-disable-dolphin-treasure-searching.patch} | 4 +- ...patch => 0083-Short-enderman-height.patch} | 2 +- ...top-squids-floating-on-top-of-water.patch} | 6 +- ...ng-obsidian-valid-for-portal-frames.patch} | 0 ...ities-can-use-portals-configuration.patch} | 2 +- ...087-LivingEntity-broadcastItemBreak.patch} | 0 ...tomizable-wither-health-and-healing.patch} | 8 +- ...gling-special-MobSpawners-per-world.patch} | 2 +- ...patch => 0090-Raid-cooldown-setting.patch} | 2 +- ...-config-options-per-projectile-type.patch} | 2 +- ...able-zombie-aggressiveness-towards-.patch} | 6 +- ...-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...y.patch => 0094-Flying-squids-Oh-my.patch} | 6 +- ...patch => 0095-Infinity-bow-settings.patch} | 2 +- ...=> 0096-Configurable-daylight-cycle.patch} | 2 +- ...e-and-mending-enchantments-together.patch} | 0 ...8-Furnace-uses-lava-from-underneath.patch} | 2 +- ...ws-should-not-reset-despawn-counter.patch} | 2 +- ...e-add-farmland-mechanics-from-Alpha.patch} | 2 +- ...ustable-breeding-cooldown-to-config.patch} | 2 +- ...-entity-breeding-times-configurable.patch} | 44 +- ...es-from-item-forms-of-entities-to-e.patch} | 2 +- ...when-using-a-Name-Tag-on-an-Armor-S.patch} | 2 +- ...lowing-Endermen-to-despawn-even-whi.patch} | 2 +- ...06-Add-configurable-snowball-damage.patch} | 2 +- ...7-Changeable-Mob-Left-Handed-Chance.patch} | 4 +- ...=> 0108-Add-boat-fall-damage-config.patch} | 4 +- ...0109-Snow-Golem-rate-of-fire-config.patch} | 6 +- ...-Configurable-disable-give-dropping.patch} | 0 ...ied-Piglin-death-always-counting-as.patch} | 6 +- ...le-chance-for-wolves-to-spawn-rabid.patch} | 6 +- ...3-Configurable-default-collar-color.patch} | 8 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 59 +- ...tch => 0115-Phantom-flames-on-swoop.patch} | 10 +- ...-to-open-even-with-a-solid-block-on.patch} | 2 +- ...SBar.patch => 0117-Implement-TPSBar.patch} | 6 +- ...h => 0118-Striders-give-saddle-back.patch} | 6 +- ...tch => 0119-PlayerBookTooLargeEvent.patch} | 2 +- ...herite-armor-grants-fire-resistance.patch} | 2 +- ...121-Fix-rotating-UP-DOWN-CW-and-CCW.patch} | 0 ...efing-bypass-to-everything-affected.patch} | 54 +- ...llow-Note-Block-sounds-when-blocked.patch} | 2 +- ...124-Add-EntityTeleportHinderedEvent.patch} | 2 +- ... => 0125-Farmland-trampling-changes.patch} | 2 +- ...6-Movement-options-for-armor-stands.patch} | 2 +- ....patch => 0127-Fix-stuck-in-portals.patch} | 4 +- ...ggle-for-water-sensitive-mob-damage.patch} | 144 ++-- ...9-Config-to-always-tame-in-Creative.patch} | 4 +- ... 0130-End-crystal-explosion-options.patch} | 8 +- ...ther-Ender-Dragon-can-ride-vehicles.patch} | 8 +- ...atch => 0132-Dont-run-with-scissors.patch} | 4 +- ...nch-Man.patch => 0133-One-Punch-Man.patch} | 2 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 2 +- ...to-ignore-nearby-mobs-when-sleeping.patch} | 4 +- ...d-back-player-spawned-endermite-API.patch} | 0 ...n-aggressiveness-towards-Endermites.patch} | 2 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 2 +- ...ig.patch => 0139-Tick-fluids-config.patch} | 2 +- ...40-Config-to-disable-Llama-caravans.patch} | 2 +- ...g-to-make-Creepers-explode-on-death.patch} | 2 +- ...rable-ravager-griefable-blocks-list.patch} | 6 +- ...143-Sneak-to-bulk-process-composter.patch} | 2 +- ...h => 0144-Config-for-skipping-night.patch} | 2 +- ...145-Add-config-for-villager-trading.patch} | 16 +- ...=> 0146-Allow-infinity-on-crossbows.patch} | 0 ...ngs.patch => 0147-Drowning-Settings.patch} | 2 +- ...reak-individual-slabs-when-sneaking.patch} | 2 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 2 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 4 +- ...tion-to-make-doors-require-redstone.patch} | 2 +- ...Config-to-allow-for-unsafe-enchants.patch} | 2 +- ...ch => 0153-Projectile-offset-config.patch} | 2 +- ...or-powered-rail-activation-distance.patch} | 2 +- ...> 0155-Piglin-portal-spawn-modifier.patch} | 6 +- ...Config-to-change-max-number-of-bees.patch} | 0 .../0157-Configurable-sponge-absorption.patch | 40 + ...-Config-for-wither-explosion-radius.patch} | 6 +- ... => 0159-Gamemode-extra-permissions.patch} | 0 ...ng-the-blocks-that-turn-into-dirt-p.patch} | 2 +- ...0161-Configurable-piston-push-limit.patch} | 2 +- ...162-Configurable-broadcast-settings.patch} | 2 +- ... => 0163-Configurable-mob-blindness.patch} | 2 +- ...hidden-players-from-entity-selector.patch} | 0 ...-to-impact-Creeper-explosion-radius.patch} | 6 +- ... 0166-Iron-golem-calm-anger-options.patch} | 6 +- ...ots.patch => 0167-Breedable-parrots.patch} | 6 +- ...gurable-powered-rail-boost-modifier.patch} | 2 +- ...ge-multiplier-critical-damage-value.patch} | 4 +- ...n-to-disable-dragon-egg-teleporting.patch} | 2 +- ...fig-for-unverified-username-message.patch} | 0 ...-anvil-cumulative-cost-configurable.patch} | 0 ...3-ShulkerBox-allow-oversized-stacks.patch} | 6 +- ...e-can-work-when-raining-or-at-night.patch} | 6 +- ...75-API-for-any-mob-to-burn-daylight.patch} | 16 +- ...h => 0176-Config-MobEffect-by-world.patch} | 2 +- ...eacon-Activation-Range-Configurable.patch} | 2 +- ...0178-Add-toggle-for-sand-duping-fix.patch} | 6 +- ...gle-for-end-portal-safe-teleporting.patch} | 2 +- ...ke-lightning-rod-range-configurable.patch} | 0 ...fter-eating-food-fills-hunger-bar-c.patch} | 4 +- ...ayer-join-full-server-by-permission.patch} | 2 +- ...al-waiting-option-permission-bypass.patch} | 4 +- ...4-Shulker-spawn-from-bullet-options.patch} | 6 +- ...ating-glow-berries-adds-glow-effect.patch} | 2 +- ...-Option-to-make-drowned-break-doors.patch} | 6 +- ...nfigurable-hunger-starvation-damage.patch} | 4 +- ...patch => 0188-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0189-Add-uptime-command.patch} | 2 +- ...tch => 0190-Tool-actionable-options.patch} | 2 +- ...1-Store-placer-on-Block-when-placed.patch} | 2 +- ...oner-API.patch => 0192-Summoner-API.patch} | 0 ...mizable-sleeping-actionbar-messages.patch} | 0 ...-shulker-box-items-from-dropping-co.patch} | 2 +- ...195-Silk-touchable-budding-amethyst.patch} | 4 +- ...tch => 0196-Big-dripleaf-tilt-delay.patch} | 2 +- ...0197-Player-ridable-in-water-option.patch} | 4 +- ...-Enderman-teleport-on-projectile-hi.patch} | 6 +- ...d.patch => 0199-Add-compass-command.patch} | 4 +- ...h => 0200-Toggle-for-kinetic-damage.patch} | 2 +- ...-Option-for-disable-observer-clocks.patch} | 2 +- ...zeable-Zombie-Villager-curing-times.patch} | 6 +- ...-Option-for-sponges-to-work-on-lava.patch} | 6 +- ...204-Toggle-for-Wither-s-spawn-sound.patch} | 8 +- ...-breaks-from-solid-neighbors-config.patch} | 2 +- ...move-curse-of-binding-with-weakness.patch} | 2 +- ...0207-Conduit-behavior-configuration.patch} | 4 +- ...patch => 0208-Cauldron-fill-chances.patch} | 4 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 2 +- ... 0210-Shulker-change-color-with-dye.patch} | 6 +- ... => 0211-Extended-OfflinePlayer-API.patch} | 0 ...he-ability-to-add-combustible-items.patch} | 0 ...in-and-thunder-should-stop-on-sleep.patch} | 2 +- ...-blocks-to-grow-into-trees-naturall.patch} | 2 +- ...-right-click-to-use-exp-for-mending.patch} | 2 +- ...urally-aggressive-to-players-chance.patch} | 8 +- ...urally-aggressive-to-players-chance.patch} | 8 +- ...r-beds-to-explode-on-villager-sleep.patch} | 6 +- ...Halloween-options-and-optimizations.patch} | 2 +- ...atch => 0220-Config-for-grindstones.patch} | 0 ....patch => 0221-UPnP-Port-Forwarding.patch} | 2 +- ...Campfire-option-for-lit-when-placed.patch} | 2 +- ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 6 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 4 +- ...-and-twisting-vines-configurable-ma.patch} | 0 ...=> 0227-Mobs-always-drop-experience.patch} | 280 +++---- ....patch => 0228-Potion-NamespacedKey.patch} | 0 ...ne-API.patch => 0229-Grindstone-API.patch} | 0 .../server/0230-Signs-allow-color-codes.patch | 84 ++ ...e-to-replant-crops-and-nether-warts.patch} | 2 +- ...ring-jeb-produces-random-color-wool.patch} | 6 +- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- ...=> 0234-Mob-head-visibility-percent.patch} | 18 +- ...able-valid-characters-for-usernames.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 6 +- ...Stop-bees-from-dying-after-stinging.patch} | 6 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 2 +- ...onfigurable-farmland-trample-height.patch} | 2 +- ...onfigurable-player-pickup-exp-delay.patch} | 4 +- ...ng.patch => 0241-Allow-void-trading.patch} | 2 +- ...nt-eat-blocks-in-non-ticking-chunks.patch} | 0 ...h => 0243-Configurable-phantom-size.patch} | 10 +- ...> 0244-Configurable-food-attributes.patch} | 0 ....patch => 0245-Max-joins-per-second.patch} | 0 ...figurable-minimum-demand-for-trades.patch} | 8 +- ... => 0247-Lobotomize-stuck-villagers.patch} | 8 +- ...ion-for-villager-display-trade-item.patch} | 6 +- ...wner-not-spawning-water-animals-cor.patch} | 6 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 2 +- ...=> 0251-Anvil-repair-damage-options.patch} | 2 +- ...> 0252-Fix-legacy-colors-in-console.patch} | 0 ...-turtle-egg-trampling-with-feather-.patch} | 4 +- ...d-toggle-for-enchant-level-clamping.patch} | 2 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 10 +- ...ge.patch => 0257-Stonecutter-damage.patch} | 4 +- ...le-damage-settings-for-magma-blocks.patch} | 2 +- ...259-Add-config-for-snow-on-blue-ice.patch} | 2 +- ... => 0260-Skeletons-eat-wither-roses.patch} | 6 +- ...61-Enchantment-Table-Persists-Lapis.patch} | 2 +- ...ofiler.patch => 0262-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 2 +- ...for-sculk-shrieker-can_summon-state.patch} | 4 +- ...=> 0265-Config-to-not-let-coral-die.patch} | 2 +- ...ch => 0266-Add-local-difficulty-api.patch} | 0 ...267-Add-toggle-for-RNG-manipulation.patch} | 6 +- ... 0268-Send-client-custom-name-of-BE.patch} | 0 ...Fix-exact-choice-recipe-book-clicks.patch} | 0 ...=> 0270-Allow-custom-ChatDecorators.patch} | 2 +- ...otd.patch => 0271-Cache-server-motd.patch} | 2 +- ...r-output-for-invalid-movement-kicks.patch} | 2 +- ...d-Bee-API.patch => 0273-Add-Bee-API.patch} | 0 ...-API.patch => 0274-Debug-Marker-API.patch} | 0 .../server/0275-Remove-Timings.patch | 173 ++-- ...g-option-to-ignore-creative-players.patch} | 4 +- ...77-Add-skeleton-bow-accuracy-option.patch} | 6 +- .../0278-Remove-Mojang-Profiler.patch} | 784 +++++++++--------- ...atch => 0279-Allay-respect-item-NBT.patch} | 6 +- ....patch => 0280-Add-death-screen-API.patch} | 0 ...1-Implement-ram-and-rambar-commands.patch} | 6 +- ...282-Add-item-packet-serialize-event.patch} | 6 +- ...-123848.patch => 0283-Fix-MC-123848.patch} | 2 +- ...quid-colors-for-rainglow-fabric-mod.patch} | 6 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 0 ...gurable-block-fall-damage-modifiers.patch} | 0 ...uage-API.patch => 0288-Language-API.patch} | 0 ... 0289-Milk-Keeps-Beneficial-Effects.patch} | 4 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...ransparent-Blocks-In-Enchanting-Box.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 6 +- ...API.patch => 0294-Fire-Immunity-API.patch} | 2 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 4 +- ...t.patch => 0296-Added-got-ram-event.patch} | 2 +- ... 0297-Log-skipped-entity-s-position.patch} | 0 ....patch => 0298-End-Crystal-Cramming.patch} | 8 +- ...eacon-effects-when-covered-by-tinte.patch} | 2 +- ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 4 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 2 +- ....patch => 0303-Add-PreExplodeEvents.patch} | 2 +- ...4-Improve-output-of-plugins-command.patch} | 0 ....patch => 0305-Make-GUI-Great-Again.patch} | 2 +- ...atch => 0306-Add-mending-multiplier.patch} | 2 +- .../0156-Configurable-sponge-absorption.patch | 62 -- .../server/0229-Signs-allow-color-codes.patch | 86 -- 240 files changed, 1241 insertions(+), 1331 deletions(-) rename patches/{todo/server/0068-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => server/0069-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (91%) rename patches/server/{0069-Allow-color-codes-in-books.patch => 0070-Allow-color-codes-in-books.patch} (97%) rename patches/server/{0070-Entity-lifespan.patch => 0071-Entity-lifespan.patch} (94%) rename patches/server/{0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => 0072-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (97%) rename patches/server/{0072-Squid-EAR-immunity.patch => 0073-Squid-EAR-immunity.patch} (91%) rename patches/server/{0073-Phantoms-burn-in-light.patch => 0074-Phantoms-burn-in-light.patch} (85%) rename patches/server/{0074-Configurable-villager-breeding.patch => 0075-Configurable-villager-breeding.patch} (91%) rename patches/server/{0075-Redstone-deactivates-spawners.patch => 0076-Redstone-deactivates-spawners.patch} (94%) rename patches/server/{0076-Totems-work-in-inventory.patch => 0077-Totems-work-in-inventory.patch} (96%) rename patches/server/{0077-Add-vindicator-johnny-spawn-chance.patch => 0078-Add-vindicator-johnny-spawn-chance.patch} (91%) rename patches/server/{0078-Add-option-to-disable-certain-block-updates.patch => 0079-Add-option-to-disable-certain-block-updates.patch} (100%) rename patches/server/{0079-Dispensers-place-anvils-option.patch => 0080-Dispensers-place-anvils-option.patch} (96%) rename patches/server/{0080-Allow-anvil-colors.patch => 0081-Allow-anvil-colors.patch} (98%) rename patches/server/{0081-Add-option-to-disable-dolphin-treasure-searching.patch => 0082-Add-option-to-disable-dolphin-treasure-searching.patch} (91%) rename patches/server/{0082-Short-enderman-height.patch => 0083-Short-enderman-height.patch} (97%) rename patches/server/{0083-Stop-squids-floating-on-top-of-water.patch => 0084-Stop-squids-floating-on-top-of-water.patch} (94%) rename patches/server/{0084-Crying-obsidian-valid-for-portal-frames.patch => 0085-Crying-obsidian-valid-for-portal-frames.patch} (100%) rename patches/server/{0085-Entities-can-use-portals-configuration.patch => 0086-Entities-can-use-portals-configuration.patch} (97%) rename patches/server/{0086-LivingEntity-broadcastItemBreak.patch => 0087-LivingEntity-broadcastItemBreak.patch} (100%) rename patches/server/{0087-Customizable-wither-health-and-healing.patch => 0088-Customizable-wither-health-and-healing.patch} (89%) rename patches/server/{0088-Allow-toggling-special-MobSpawners-per-world.patch => 0089-Allow-toggling-special-MobSpawners-per-world.patch} (98%) rename patches/server/{0089-Raid-cooldown-setting.patch => 0090-Raid-cooldown-setting.patch} (97%) rename patches/server/{0090-Despawn-rate-config-options-per-projectile-type.patch => 0091-Despawn-rate-config-options-per-projectile-type.patch} (96%) rename patches/server/{0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (96%) rename patches/server/{0092-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/server/{0093-Flying-squids-Oh-my.patch => 0094-Flying-squids-Oh-my.patch} (95%) rename patches/server/{0094-Infinity-bow-settings.patch => 0095-Infinity-bow-settings.patch} (97%) rename patches/server/{0095-Configurable-daylight-cycle.patch => 0096-Configurable-daylight-cycle.patch} (98%) rename patches/server/{0096-Allow-infinite-and-mending-enchantments-together.patch => 0097-Allow-infinite-and-mending-enchantments-together.patch} (100%) rename patches/server/{0097-Furnace-uses-lava-from-underneath.patch => 0098-Furnace-uses-lava-from-underneath.patch} (97%) rename patches/server/{0098-Arrows-should-not-reset-despawn-counter.patch => 0099-Arrows-should-not-reset-despawn-counter.patch} (95%) rename patches/server/{0099-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => 0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (95%) rename patches/server/{0100-Add-adjustable-breeding-cooldown-to-config.patch => 0101-Add-adjustable-breeding-cooldown-to-config.patch} (98%) rename patches/server/{0101-Make-entity-breeding-times-configurable.patch => 0102-Make-entity-breeding-times-configurable.patch} (97%) rename patches/server/{0102-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0103-Apply-display-names-from-item-forms-of-entities-to-e.patch} (99%) rename patches/server/{0103-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => 0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (96%) rename patches/server/{0104-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => 0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (96%) rename patches/server/{0105-Add-configurable-snowball-damage.patch => 0106-Add-configurable-snowball-damage.patch} (95%) rename patches/server/{0106-Changeable-Mob-Left-Handed-Chance.patch => 0107-Changeable-Mob-Left-Handed-Chance.patch} (90%) rename patches/server/{0107-Add-boat-fall-damage-config.patch => 0108-Add-boat-fall-damage-config.patch} (94%) rename patches/server/{0108-Snow-Golem-rate-of-fire-config.patch => 0109-Snow-Golem-rate-of-fire-config.patch} (94%) rename patches/server/{0109-EMC-Configurable-disable-give-dropping.patch => 0110-EMC-Configurable-disable-give-dropping.patch} (100%) rename patches/server/{0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => 0111-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (94%) rename patches/server/{0111-Configurable-chance-for-wolves-to-spawn-rabid.patch => 0112-Configurable-chance-for-wolves-to-spawn-rabid.patch} (98%) rename patches/server/{0112-Configurable-default-collar-color.patch => 0113-Configurable-default-collar-color.patch} (93%) rename patches/{todo => }/server/0114-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch (86%) rename patches/server/{0113-Phantom-flames-on-swoop.patch => 0115-Phantom-flames-on-swoop.patch} (84%) rename patches/server/{0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch => 0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (94%) rename patches/server/{0115-Implement-TPSBar.patch => 0117-Implement-TPSBar.patch} (98%) rename patches/server/{0116-Striders-give-saddle-back.patch => 0118-Striders-give-saddle-back.patch} (92%) rename patches/server/{0117-PlayerBookTooLargeEvent.patch => 0119-PlayerBookTooLargeEvent.patch} (96%) rename patches/server/{0118-Full-netherite-armor-grants-fire-resistance.patch => 0120-Full-netherite-armor-grants-fire-resistance.patch} (97%) rename patches/server/{0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch => 0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch} (100%) rename patches/server/{0120-Add-mobGriefing-bypass-to-everything-affected.patch => 0122-Add-mobGriefing-bypass-to-everything-affected.patch} (96%) rename patches/server/{0121-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0123-Config-to-allow-Note-Block-sounds-when-blocked.patch} (97%) rename patches/server/{0122-Add-EntityTeleportHinderedEvent.patch => 0124-Add-EntityTeleportHinderedEvent.patch} (99%) rename patches/server/{0123-Farmland-trampling-changes.patch => 0125-Farmland-trampling-changes.patch} (97%) rename patches/server/{0124-Movement-options-for-armor-stands.patch => 0126-Movement-options-for-armor-stands.patch} (98%) rename patches/server/{0125-Fix-stuck-in-portals.patch => 0127-Fix-stuck-in-portals.patch} (94%) rename patches/server/{0126-Toggle-for-water-sensitive-mob-damage.patch => 0128-Toggle-for-water-sensitive-mob-damage.patch} (96%) rename patches/server/{0127-Config-to-always-tame-in-Creative.patch => 0129-Config-to-always-tame-in-Creative.patch} (97%) rename patches/server/{0128-End-crystal-explosion-options.patch => 0130-End-crystal-explosion-options.patch} (95%) rename patches/server/{0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (92%) rename patches/server/{0130-Dont-run-with-scissors.patch => 0132-Dont-run-with-scissors.patch} (96%) rename patches/server/{0131-One-Punch-Man.patch => 0133-One-Punch-Man.patch} (96%) rename patches/server/{0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (98%) rename patches/server/{0133-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0135-Config-to-ignore-nearby-mobs-when-sleeping.patch} (92%) rename patches/server/{0134-Add-back-player-spawned-endermite-API.patch => 0136-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/server/{0135-Config-Enderman-aggressiveness-towards-Endermites.patch => 0137-Config-Enderman-aggressiveness-towards-Endermites.patch} (97%) rename patches/server/{0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (96%) rename patches/server/{0137-Tick-fluids-config.patch => 0139-Tick-fluids-config.patch} (97%) rename patches/server/{0138-Config-to-disable-Llama-caravans.patch => 0140-Config-to-disable-Llama-caravans.patch} (97%) rename patches/server/{0139-Config-to-make-Creepers-explode-on-death.patch => 0141-Config-to-make-Creepers-explode-on-death.patch} (97%) rename patches/server/{0140-Configurable-ravager-griefable-blocks-list.patch => 0142-Configurable-ravager-griefable-blocks-list.patch} (95%) rename patches/server/{0141-Sneak-to-bulk-process-composter.patch => 0143-Sneak-to-bulk-process-composter.patch} (98%) rename patches/server/{0142-Config-for-skipping-night.patch => 0144-Config-for-skipping-night.patch} (96%) rename patches/server/{0143-Add-config-for-villager-trading.patch => 0145-Add-config-for-villager-trading.patch} (87%) rename patches/server/{0144-Allow-infinity-on-crossbows.patch => 0146-Allow-infinity-on-crossbows.patch} (100%) rename patches/server/{0145-Drowning-Settings.patch => 0147-Drowning-Settings.patch} (97%) rename patches/server/{0146-Break-individual-slabs-when-sneaking.patch => 0148-Break-individual-slabs-when-sneaking.patch} (97%) rename patches/server/{0147-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0149-Config-to-disable-hostile-mob-spawn-on-ice.patch} (96%) rename patches/server/{0148-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0150-Config-to-show-Armor-Stand-arms-on-spawn.patch} (92%) rename patches/server/{0149-Option-to-make-doors-require-redstone.patch => 0151-Option-to-make-doors-require-redstone.patch} (98%) rename patches/server/{0150-Config-to-allow-for-unsafe-enchants.patch => 0152-Config-to-allow-for-unsafe-enchants.patch} (98%) rename patches/server/{0151-Projectile-offset-config.patch => 0153-Projectile-offset-config.patch} (99%) rename patches/server/{0152-Config-for-powered-rail-activation-distance.patch => 0154-Config-for-powered-rail-activation-distance.patch} (94%) rename patches/server/{0153-Piglin-portal-spawn-modifier.patch => 0155-Piglin-portal-spawn-modifier.patch} (93%) rename patches/server/{0154-Config-to-change-max-number-of-bees.patch => 0156-Config-to-change-max-number-of-bees.patch} (100%) create mode 100644 patches/server/0157-Configurable-sponge-absorption.patch rename patches/server/{0155-Config-for-wither-explosion-radius.patch => 0158-Config-for-wither-explosion-radius.patch} (92%) rename patches/server/{0156-Gamemode-extra-permissions.patch => 0159-Gamemode-extra-permissions.patch} (100%) rename patches/server/{0157-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch => 0160-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch} (96%) rename patches/server/{0158-Configurable-piston-push-limit.patch => 0161-Configurable-piston-push-limit.patch} (96%) rename patches/server/{0159-Configurable-broadcast-settings.patch => 0162-Configurable-broadcast-settings.patch} (97%) rename patches/server/{0160-Configurable-mob-blindness.patch => 0163-Configurable-mob-blindness.patch} (97%) rename patches/server/{0161-Hide-hidden-players-from-entity-selector.patch => 0164-Hide-hidden-players-from-entity-selector.patch} (100%) rename patches/server/{0162-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0165-Config-for-health-to-impact-Creeper-explosion-radius.patch} (92%) rename patches/server/{0163-Iron-golem-calm-anger-options.patch => 0166-Iron-golem-calm-anger-options.patch} (96%) rename patches/server/{0164-Breedable-parrots.patch => 0167-Breedable-parrots.patch} (94%) rename patches/server/{0165-Configurable-powered-rail-boost-modifier.patch => 0168-Configurable-powered-rail-boost-modifier.patch} (96%) rename patches/server/{0166-Add-config-change-multiplier-critical-damage-value.patch => 0169-Add-config-change-multiplier-critical-damage-value.patch} (92%) rename patches/server/{0167-Option-to-disable-dragon-egg-teleporting.patch => 0170-Option-to-disable-dragon-egg-teleporting.patch} (95%) rename patches/server/{0168-Config-for-unverified-username-message.patch => 0171-Config-for-unverified-username-message.patch} (100%) rename patches/server/{0169-Make-anvil-cumulative-cost-configurable.patch => 0172-Make-anvil-cumulative-cost-configurable.patch} (100%) rename patches/server/{0170-ShulkerBox-allow-oversized-stacks.patch => 0173-ShulkerBox-allow-oversized-stacks.patch} (92%) rename patches/server/{0171-Bee-can-work-when-raining-or-at-night.patch => 0174-Bee-can-work-when-raining-or-at-night.patch} (94%) rename patches/server/{0172-API-for-any-mob-to-burn-daylight.patch => 0175-API-for-any-mob-to-burn-daylight.patch} (96%) rename patches/server/{0173-Config-MobEffect-by-world.patch => 0176-Config-MobEffect-by-world.patch} (98%) rename patches/server/{0174-Beacon-Activation-Range-Configurable.patch => 0177-Beacon-Activation-Range-Configurable.patch} (96%) rename patches/server/{0175-Add-toggle-for-sand-duping-fix.patch => 0178-Add-toggle-for-sand-duping-fix.patch} (88%) rename patches/server/{0176-Add-toggle-for-end-portal-safe-teleporting.patch => 0179-Add-toggle-for-end-portal-safe-teleporting.patch} (97%) rename patches/server/{0177-Make-lightning-rod-range-configurable.patch => 0180-Make-lightning-rod-range-configurable.patch} (100%) rename patches/server/{0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0181-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (95%) rename patches/server/{0179-Allow-player-join-full-server-by-permission.patch => 0182-Allow-player-join-full-server-by-permission.patch} (93%) rename patches/server/{0180-Add-portal-waiting-option-permission-bypass.patch => 0183-Add-portal-waiting-option-permission-bypass.patch} (94%) rename patches/server/{0181-Shulker-spawn-from-bullet-options.patch => 0184-Shulker-spawn-from-bullet-options.patch} (96%) rename patches/server/{0182-Eating-glow-berries-adds-glow-effect.patch => 0185-Eating-glow-berries-adds-glow-effect.patch} (97%) rename patches/server/{0183-Option-to-make-drowned-break-doors.patch => 0186-Option-to-make-drowned-break-doors.patch} (94%) rename patches/server/{0184-Configurable-hunger-starvation-damage.patch => 0187-Configurable-hunger-starvation-damage.patch} (92%) rename patches/server/{0185-Enhance-SysoutCatcher.patch => 0188-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0186-Add-uptime-command.patch => 0189-Add-uptime-command.patch} (98%) rename patches/server/{0187-Tool-actionable-options.patch => 0190-Tool-actionable-options.patch} (99%) rename patches/server/{0188-Store-placer-on-Block-when-placed.patch => 0191-Store-placer-on-Block-when-placed.patch} (96%) rename patches/server/{0189-Summoner-API.patch => 0192-Summoner-API.patch} (100%) rename patches/server/{0190-Customizable-sleeping-actionbar-messages.patch => 0193-Customizable-sleeping-actionbar-messages.patch} (100%) rename patches/server/{0191-option-to-disable-shulker-box-items-from-dropping-co.patch => 0194-option-to-disable-shulker-box-items-from-dropping-co.patch} (96%) rename patches/server/{0192-Silk-touchable-budding-amethyst.patch => 0195-Silk-touchable-budding-amethyst.patch} (94%) rename patches/server/{0193-Big-dripleaf-tilt-delay.patch => 0196-Big-dripleaf-tilt-delay.patch} (96%) rename patches/server/{0194-Player-ridable-in-water-option.patch => 0197-Player-ridable-in-water-option.patch} (92%) rename patches/server/{0195-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0198-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (92%) rename patches/server/{0196-Add-compass-command.patch => 0199-Add-compass-command.patch} (98%) rename patches/server/{0197-Toggle-for-kinetic-damage.patch => 0200-Toggle-for-kinetic-damage.patch} (95%) rename patches/server/{0198-Add-Option-for-disable-observer-clocks.patch => 0201-Add-Option-for-disable-observer-clocks.patch} (95%) rename patches/server/{0199-Customizeable-Zombie-Villager-curing-times.patch => 0202-Customizeable-Zombie-Villager-curing-times.patch} (92%) rename patches/server/{0200-Option-for-sponges-to-work-on-lava.patch => 0203-Option-for-sponges-to-work-on-lava.patch} (88%) rename patches/server/{0201-Toggle-for-Wither-s-spawn-sound.patch => 0204-Toggle-for-Wither-s-spawn-sound.patch} (88%) rename patches/server/{0202-Cactus-breaks-from-solid-neighbors-config.patch => 0205-Cactus-breaks-from-solid-neighbors-config.patch} (95%) rename patches/server/{0203-Config-to-remove-curse-of-binding-with-weakness.patch => 0206-Config-to-remove-curse-of-binding-with-weakness.patch} (96%) rename patches/server/{0204-Conduit-behavior-configuration.patch => 0207-Conduit-behavior-configuration.patch} (97%) rename patches/server/{0205-Cauldron-fill-chances.patch => 0208-Cauldron-fill-chances.patch} (96%) rename patches/server/{0206-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0209-Config-to-allow-mobs-to-pathfind-over-rails.patch} (97%) rename patches/server/{0207-Shulker-change-color-with-dye.patch => 0210-Shulker-change-color-with-dye.patch} (94%) rename patches/server/{0208-Extended-OfflinePlayer-API.patch => 0211-Extended-OfflinePlayer-API.patch} (100%) rename patches/server/{0209-Added-the-ability-to-add-combustible-items.patch => 0212-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/server/{0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0213-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (97%) rename patches/server/{0211-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0214-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (98%) rename patches/server/{0212-Shift-right-click-to-use-exp-for-mending.patch => 0215-Shift-right-click-to-use-exp-for-mending.patch} (98%) rename patches/server/{0213-Dolphins-naturally-aggressive-to-players-chance.patch => 0216-Dolphins-naturally-aggressive-to-players-chance.patch} (93%) rename patches/server/{0214-Cows-naturally-aggressive-to-players-chance.patch => 0217-Cows-naturally-aggressive-to-players-chance.patch} (94%) rename patches/server/{0215-Option-for-beds-to-explode-on-villager-sleep.patch => 0218-Option-for-beds-to-explode-on-villager-sleep.patch} (90%) rename patches/server/{0216-Halloween-options-and-optimizations.patch => 0219-Halloween-options-and-optimizations.patch} (98%) rename patches/server/{0217-Config-for-grindstones.patch => 0220-Config-for-grindstones.patch} (100%) rename patches/server/{0218-UPnP-Port-Forwarding.patch => 0221-UPnP-Port-Forwarding.patch} (97%) rename patches/server/{0219-Campfire-option-for-lit-when-placed.patch => 0222-Campfire-option-for-lit-when-placed.patch} (96%) rename patches/server/{0220-options-to-extinguish-fire-blocks-with-snowballs.patch => 0223-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/server/{0221-Add-option-to-disable-zombie-villagers-cure.patch => 0224-Add-option-to-disable-zombie-villagers-cure.patch} (92%) rename patches/server/{0222-Persistent-BlockEntity-Lore-and-DisplayName.patch => 0225-Persistent-BlockEntity-Lore-and-DisplayName.patch} (98%) rename patches/server/{0223-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0226-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (100%) rename patches/server/{0224-Mobs-always-drop-experience.patch => 0227-Mobs-always-drop-experience.patch} (93%) rename patches/server/{0225-Potion-NamespacedKey.patch => 0228-Potion-NamespacedKey.patch} (100%) rename patches/server/{0226-Grindstone-API.patch => 0229-Grindstone-API.patch} (100%) create mode 100644 patches/server/0230-Signs-allow-color-codes.patch rename patches/server/{0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0231-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (98%) rename patches/server/{0228-Shearing-jeb-produces-random-color-wool.patch => 0232-Shearing-jeb-produces-random-color-wool.patch} (92%) rename patches/server/{0229-Turtle-eggs-random-tick-crack-chance.patch => 0233-Turtle-eggs-random-tick-crack-chance.patch} (93%) rename patches/server/{0230-Mob-head-visibility-percent.patch => 0234-Mob-head-visibility-percent.patch} (91%) rename patches/server/{0231-Configurable-valid-characters-for-usernames.patch => 0235-Configurable-valid-characters-for-usernames.patch} (100%) rename patches/server/{0232-Shears-can-have-looting-enchantment.patch => 0236-Shears-can-have-looting-enchantment.patch} (97%) rename patches/server/{0233-Stop-bees-from-dying-after-stinging.patch => 0237-Stop-bees-from-dying-after-stinging.patch} (90%) rename patches/server/{0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0238-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (98%) rename patches/server/{0235-Configurable-farmland-trample-height.patch => 0239-Configurable-farmland-trample-height.patch} (97%) rename patches/server/{0236-Configurable-player-pickup-exp-delay.patch => 0240-Configurable-player-pickup-exp-delay.patch} (95%) rename patches/server/{0237-Allow-void-trading.patch => 0241-Allow-void-trading.patch} (96%) rename patches/server/{0238-Dont-eat-blocks-in-non-ticking-chunks.patch => 0242-Dont-eat-blocks-in-non-ticking-chunks.patch} (100%) rename patches/server/{0239-Configurable-phantom-size.patch => 0243-Configurable-phantom-size.patch} (87%) rename patches/server/{0240-Configurable-food-attributes.patch => 0244-Configurable-food-attributes.patch} (100%) rename patches/server/{0241-Max-joins-per-second.patch => 0245-Max-joins-per-second.patch} (100%) rename patches/server/{0242-Configurable-minimum-demand-for-trades.patch => 0246-Configurable-minimum-demand-for-trades.patch} (91%) rename patches/server/{0243-Lobotomize-stuck-villagers.patch => 0247-Lobotomize-stuck-villagers.patch} (95%) rename patches/server/{0244-Option-for-villager-display-trade-item.patch => 0248-Option-for-villager-display-trade-item.patch} (91%) rename patches/server/{0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0249-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (91%) rename patches/server/{0246-Config-for-mob-last-hurt-by-player-time.patch => 0250-Config-for-mob-last-hurt-by-player-time.patch} (97%) rename patches/server/{0247-Anvil-repair-damage-options.patch => 0251-Anvil-repair-damage-options.patch} (98%) rename patches/server/{0248-Fix-legacy-colors-in-console.patch => 0252-Fix-legacy-colors-in-console.patch} (100%) rename patches/server/{0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0253-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (94%) rename patches/server/{0250-Add-toggle-for-enchant-level-clamping.patch => 0254-Add-toggle-for-enchant-level-clamping.patch} (97%) rename patches/server/{0251-Skip-junit-tests-for-purpur-commands.patch => 0255-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0252-Implement-configurable-search-radius-for-villagers-t.patch => 0256-Implement-configurable-search-radius-for-villagers-t.patch} (87%) rename patches/server/{0253-Stonecutter-damage.patch => 0257-Stonecutter-damage.patch} (96%) rename patches/server/{0254-Configurable-damage-settings-for-magma-blocks.patch => 0258-Configurable-damage-settings-for-magma-blocks.patch} (96%) rename patches/server/{0255-Add-config-for-snow-on-blue-ice.patch => 0259-Add-config-for-snow-on-blue-ice.patch} (95%) rename patches/server/{0256-Skeletons-eat-wither-roses.patch => 0260-Skeletons-eat-wither-roses.patch} (96%) rename patches/server/{0257-Enchantment-Table-Persists-Lapis.patch => 0261-Enchantment-Table-Persists-Lapis.patch} (98%) rename patches/server/{0258-Spark-Profiler.patch => 0262-Spark-Profiler.patch} (100%) rename patches/server/{0259-Option-to-disable-kick-for-out-of-order-chat.patch => 0263-Option-to-disable-kick-for-out-of-order-chat.patch} (95%) rename patches/server/{0260-Config-for-sculk-shrieker-can_summon-state.patch => 0264-Config-for-sculk-shrieker-can_summon-state.patch} (93%) rename patches/server/{0261-Config-to-not-let-coral-die.patch => 0265-Config-to-not-let-coral-die.patch} (96%) rename patches/server/{0262-Add-local-difficulty-api.patch => 0266-Add-local-difficulty-api.patch} (100%) rename patches/server/{0263-Add-toggle-for-RNG-manipulation.patch => 0267-Add-toggle-for-RNG-manipulation.patch} (90%) rename patches/server/{0264-Send-client-custom-name-of-BE.patch => 0268-Send-client-custom-name-of-BE.patch} (100%) rename patches/server/{0265-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch => 0269-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch} (100%) rename patches/server/{0266-Allow-custom-ChatDecorators.patch => 0270-Allow-custom-ChatDecorators.patch} (94%) rename patches/server/{0267-Cache-server-motd.patch => 0271-Cache-server-motd.patch} (95%) rename patches/server/{0268-Add-more-logger-output-for-invalid-movement-kicks.patch => 0272-Add-more-logger-output-for-invalid-movement-kicks.patch} (96%) rename patches/server/{0269-Add-Bee-API.patch => 0273-Add-Bee-API.patch} (100%) rename patches/server/{0270-Debug-Marker-API.patch => 0274-Debug-Marker-API.patch} (100%) rename patches/{todo => }/server/0275-Remove-Timings.patch (88%) rename patches/server/{0271-mob-spawning-option-to-ignore-creative-players.patch => 0276-mob-spawning-option-to-ignore-creative-players.patch} (94%) rename patches/server/{0272-Add-skeleton-bow-accuracy-option.patch => 0277-Add-skeleton-bow-accuracy-option.patch} (94%) rename patches/{todo/server/0276-Remove-Mojang-Profiler.patch => server/0278-Remove-Mojang-Profiler.patch} (73%) rename patches/server/{0273-Allay-respect-item-NBT.patch => 0279-Allay-respect-item-NBT.patch} (92%) rename patches/server/{0274-Add-death-screen-API.patch => 0280-Add-death-screen-API.patch} (100%) rename patches/server/{0275-Implement-ram-and-rambar-commands.patch => 0281-Implement-ram-and-rambar-commands.patch} (98%) rename patches/server/{0276-Add-item-packet-serialize-event.patch => 0282-Add-item-packet-serialize-event.patch} (93%) rename patches/server/{0277-Fix-MC-123848.patch => 0283-Fix-MC-123848.patch} (91%) rename patches/server/{0278-Implement-squid-colors-for-rainglow-fabric-mod.patch => 0284-Implement-squid-colors-for-rainglow-fabric-mod.patch} (96%) rename patches/server/{0279-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0285-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (98%) rename patches/server/{0280-Configurable-block-blast-resistance.patch => 0286-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0281-Configurable-block-fall-damage-modifiers.patch => 0287-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0282-Language-API.patch => 0288-Language-API.patch} (100%) rename patches/server/{0283-Milk-Keeps-Beneficial-Effects.patch => 0289-Milk-Keeps-Beneficial-Effects.patch} (95%) rename patches/server/{0284-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0290-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0285-Add-log-suppression-for-LibraryLoader.patch => 0291-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0286-Allow-Transparent-Blocks-In-Enchanting-Box.patch => 0292-Allow-Transparent-Blocks-In-Enchanting-Box.patch} (100%) rename patches/server/{0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0293-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (92%) rename patches/server/{0288-Fire-Immunity-API.patch => 0294-Fire-Immunity-API.patch} (97%) rename patches/server/{0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0295-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (94%) rename patches/server/{0290-Added-got-ram-event.patch => 0296-Added-got-ram-event.patch} (91%) rename patches/server/{0291-Log-skipped-entity-s-position.patch => 0297-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0292-End-Crystal-Cramming.patch => 0298-End-Crystal-Cramming.patch} (88%) rename patches/server/{0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0299-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (97%) rename patches/server/{0294-Add-attribute-clamping-and-armor-limit-config.patch => 0300-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0295-Config-to-remove-explosion-radius-clamp.patch => 0301-Config-to-remove-explosion-radius-clamp.patch} (91%) rename patches/server/{0296-bonemealable-sugarcane-cactus-and-netherwart.patch => 0302-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0297-Add-PreExplodeEvents.patch => 0303-Add-PreExplodeEvents.patch} (94%) rename patches/server/{0298-Improve-output-of-plugins-command.patch => 0304-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0299-Make-GUI-Great-Again.patch => 0305-Make-GUI-Great-Again.patch} (99%) rename patches/server/{0300-Add-mending-multiplier.patch => 0306-Add-mending-multiplier.patch} (96%) delete mode 100644 patches/todo/server/0156-Configurable-sponge-absorption.patch delete mode 100644 patches/todo/server/0229-Signs-allow-color-codes.patch diff --git a/patches/todo/server/0068-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0069-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 91% rename from patches/todo/server/0068-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0069-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 0e8e5d4e6..a1e074722 100644 --- a/patches/todo/server/0068-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0069-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 64f17b4a22454b59968787089253eaba0a04c1f2..b373f9e4b5a2604bcbccd36cd3de961f3a41cd32 100644 +index 5465711d486e5f265a26042031e895fb09e30608..767cd1dad6bb9857501abe04f5023ca3ffa5fdd2 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java @@ -30,6 +30,12 @@ public class EndCrystal extends Entity { @@ -73,7 +73,7 @@ index 64f17b4a22454b59968787089253eaba0a04c1f2..b373f9e4b5a2604bcbccd36cd3de961f @Override protected void addAdditionalSaveData(CompoundTag nbt) { 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 e271555ac03fcbb565a7fe08efdc9a6036164e74..fd02dfb905c71fa10e0830cf0a02d4b63b81f23f 100644 +index 2189058a752986179165fb904513796e7220438e..b0aad0632ed2c6004222a4715c2643eff13f030c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -84,9 +84,9 @@ index e271555ac03fcbb565a7fe08efdc9a6036164e74..fd02dfb905c71fa10e0830cf0a02d4b6 public Phantom(EntityType type, Level world) { super(type, world); -@@ -131,6 +132,24 @@ public class Phantom extends FlyingMob implements Enemy { - } - return value; +@@ -116,6 +117,24 @@ public class Phantom extends FlyingMob implements Enemy { + level().addFreshEntity(flames); + return true; } + + @Override @@ -109,7 +109,7 @@ index e271555ac03fcbb565a7fe08efdc9a6036164e74..fd02dfb905c71fa10e0830cf0a02d4b6 // Purpur end @Override -@@ -145,11 +164,17 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -130,11 +149,17 @@ public class Phantom extends FlyingMob implements Enemy { @Override protected void registerGoals() { @@ -258,26 +258,26 @@ index e271555ac03fcbb565a7fe08efdc9a6036164e74..fd02dfb905c71fa10e0830cf0a02d4b6 private float speed = 0.1F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d98383a21bb7fbc64525e701add25f8d32499e9a..20573f2979277aa53f5377974ad910ec4428c435 100644 +index aacee630b1f7a9c2bbcdf772df204e3d3ec4e52f..70576507db0a84b209729cdd2efa595bd0450042 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1067,6 +1067,9 @@ public class PurpurWorldConfig { +@@ -1109,6 +1109,9 @@ public class PurpurWorldConfig { public String phantomAttackDamage = "6 + size"; public Map phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); + public double phantomAttackedByCrystalRadius = 0.0D; + public float phantomAttackedByCrystalDamage = 1.0F; + public double phantomOrbitCrystalRadius = 0.0D; - private void phantomSettings() { - phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); - phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1088,6 +1091,9 @@ public class PurpurWorldConfig { + public int phantomSpawnMinSkyDarkness = 5; + public boolean phantomSpawnOnlyAboveSeaLevel = true; + public boolean phantomSpawnOnlyWithVisibleSky = true; +@@ -1136,6 +1139,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); + phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); + phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); + phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); - } - - public boolean pigRidable = false; + phantomSpawnMinSkyDarkness = getInt("mobs.phantom.spawn.min-sky-darkness", phantomSpawnMinSkyDarkness); + phantomSpawnOnlyAboveSeaLevel = getBoolean("mobs.phantom.spawn.only-above-sea-level", phantomSpawnOnlyAboveSeaLevel); + phantomSpawnOnlyWithVisibleSky = getBoolean("mobs.phantom.spawn.only-with-visible-sky", phantomSpawnOnlyWithVisibleSky); diff --git a/patches/server/0069-Allow-color-codes-in-books.patch b/patches/server/0070-Allow-color-codes-in-books.patch similarity index 97% rename from patches/server/0069-Allow-color-codes-in-books.patch rename to patches/server/0070-Allow-color-codes-in-books.patch index b6f937536..ba3a338d8 100644 --- a/patches/server/0069-Allow-color-codes-in-books.patch +++ b/patches/server/0070-Allow-color-codes-in-books.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 6ad34d0de6c5637f8c11c77ea8baee5ba040ff40..d7fbbc91dd72c0c93b973da773ca9b1bfb326677 100644 +index 19186118731d0a57359b09c726aa009495d2113d..0e616bc3a09fcab0d5d3b6243c2e1d39223a2de1 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1344,13 +1344,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic diff --git a/patches/server/0070-Entity-lifespan.patch b/patches/server/0071-Entity-lifespan.patch similarity index 94% rename from patches/server/0070-Entity-lifespan.patch rename to patches/server/0071-Entity-lifespan.patch index 2d36c210a..2a3c4a6c3 100644 --- a/patches/server/0070-Entity-lifespan.patch +++ b/patches/server/0071-Entity-lifespan.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d7fbbc91dd72c0c93b973da773ca9b1bfb326677..25f502ef6248df703b73b955a1d1395d313094a3 100644 +index 0e616bc3a09fcab0d5d3b6243c2e1d39223a2de1..00a41647b127552c511a16a88e1e8208423b645b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2856,6 +2856,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -17,7 +17,7 @@ index d7fbbc91dd72c0c93b973da773ca9b1bfb326677..25f502ef6248df703b73b955a1d1395d private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 1b18532360b9508a08ea46b48331acad3e37c049..0101b6e0df2a6651a22c84d0fae4ebfb37f8e682 100644 +index ef290c4f243e07a15a489ddd7461b4f182cb2345..9f68247ffc31b67e1eb66d3b6449c44fe8549d0d 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -133,6 +133,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -94,7 +94,7 @@ index 1b18532360b9508a08ea46b48331acad3e37c049..0101b6e0df2a6651a22c84d0fae4ebfb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fce1ffd5a1d04a2a90d6a6eecc3736c79ef515fb..f553c681956dc6d93c0bf864d054a25ce6236115 100644 +index 70576507db0a84b209729cdd2efa595bd0450042..af6cae292b86b7bfca06f869f22f1b4d40fdd81b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -127,6 +127,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0072-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 97% rename from patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0072-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 48c9a1239..e01d7ec07 100644 --- a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0072-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -48,7 +48,7 @@ index 851bffca44dce8680a34bd5e862c1c0794806021..20b3b2deae7b72cc16f5e47ad73fab4d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b3b845ba43c8f78424cd843cf3ac69dda5a5bad..082a97f808aba17b03d67e939e282781a4793cf2 100644 +index af6cae292b86b7bfca06f869f22f1b4d40fdd81b..7a6c463c91ec2de4dc118299bd3e7b3eabcd62ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -246,6 +246,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0072-Squid-EAR-immunity.patch b/patches/server/0073-Squid-EAR-immunity.patch similarity index 91% rename from patches/server/0072-Squid-EAR-immunity.patch rename to patches/server/0073-Squid-EAR-immunity.patch index a12ea6237..bca3d96ef 100644 --- a/patches/server/0072-Squid-EAR-immunity.patch +++ b/patches/server/0073-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e31a46078056a559bfbdecd8d86b974bf372273e..8c2241cd2670ff4d945d3953dcc227cc63d5b7e0 100644 +index 7a6c463c91ec2de4dc118299bd3e7b3eabcd62ee..d9696e006ecd97d01996cdd77fd151fc4c907adb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1449,6 +1449,7 @@ public class PurpurWorldConfig { +@@ -1455,6 +1455,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public boolean squidControllable = true; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index e31a46078056a559bfbdecd8d86b974bf372273e..8c2241cd2670ff4d945d3953dcc227cc private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1458,6 +1459,7 @@ public class PurpurWorldConfig { +@@ -1464,6 +1465,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0073-Phantoms-burn-in-light.patch b/patches/server/0074-Phantoms-burn-in-light.patch similarity index 85% rename from patches/server/0073-Phantoms-burn-in-light.patch rename to patches/server/0074-Phantoms-burn-in-light.patch index 49177a8f6..022b44cc4 100644 --- a/patches/server/0073-Phantoms-burn-in-light.patch +++ b/patches/server/0074-Phantoms-burn-in-light.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light 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 cd6a25bb101555d6c763a7023d1b05691e671b5f..67aa490540d264775d8a8382cb5922f365ca6913 100644 +index b0aad0632ed2c6004222a4715c2643eff13f030c..776602b545f5ee3b566787befb0f43075ce02a29 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -13,29 +13,29 @@ index cd6a25bb101555d6c763a7023d1b05691e671b5f..67aa490540d264775d8a8382cb5922f3 public BlockPos anchorPoint; Phantom.AttackPhase attackPhase; + private static final net.minecraft.world.item.crafting.Ingredient TORCH = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.item.Items.TORCH, net.minecraft.world.item.Items.SOUL_TORCH); // Purpur + Vec3 crystalPosition; // Purpur public Phantom(EntityType type, Level world) { - super(type, world); -@@ -222,7 +223,12 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -247,7 +248,12 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { - if (this.isAlive() && shouldBurnInDay && this.isSunBurnTick()) { // Paper - Configurable Burning + // Purpur start + boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight; -+ boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level.getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight; ++ boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level().getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight; + if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - Configurable Burning + if (getRider() == null || !this.isControllable()) + // Purpur end if (getRider() == null || !this.isControllable()) // Purpur this.setSecondsOnFire(8); } -@@ -514,6 +520,12 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -657,6 +663,12 @@ public class Phantom extends FlyingMob implements Enemy { return false; } else if (!entityliving.isAlive()) { return false; + // Purpur start -+ } else if (level().purpurConfig.phantomBurnInLight > 0 && level.getLightEmission(new BlockPos(Phantom.this)) >= level().purpurConfig.phantomBurnInLight) { ++ } else if (level().purpurConfig.phantomBurnInLight > 0 && level().getLightEmission(new BlockPos(Phantom.this)) >= level().purpurConfig.phantomBurnInLight) { + return false; + } else if (level().purpurConfig.phantomIgnorePlayersWithTorch && (TORCH.test(entityliving.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(entityliving.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND)))) { + return false; @@ -43,7 +43,7 @@ index cd6a25bb101555d6c763a7023d1b05691e671b5f..67aa490540d264775d8a8382cb5922f3 } else { if (entityliving instanceof Player) { Player entityhuman = (Player) entityliving; -@@ -659,6 +671,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -802,6 +814,7 @@ public class Phantom extends FlyingMob implements Enemy { this.nextScanTick = reducedTickDelay(60); List list = Phantom.this.level().getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D)); @@ -52,10 +52,10 @@ index cd6a25bb101555d6c763a7023d1b05691e671b5f..67aa490540d264775d8a8382cb5922f3 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8c2241cd2670ff4d945d3953dcc227cc63d5b7e0..93aaa9d4413e10af4cb1fca15bc9627a7ded3955 100644 +index d9696e006ecd97d01996cdd77fd151fc4c907adb..243f427b181d4b24810e6357968b2d5996873566 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1122,6 +1122,9 @@ public class PurpurWorldConfig { +@@ -1125,6 +1125,9 @@ public class PurpurWorldConfig { public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -65,7 +65,7 @@ index 8c2241cd2670ff4d945d3953dcc227cc63d5b7e0..93aaa9d4413e10af4cb1fca15bc9627a private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1149,6 +1152,9 @@ public class PurpurWorldConfig { +@@ -1155,6 +1158,9 @@ public class PurpurWorldConfig { phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0074-Configurable-villager-breeding.patch b/patches/server/0075-Configurable-villager-breeding.patch similarity index 91% rename from patches/server/0074-Configurable-villager-breeding.patch rename to patches/server/0075-Configurable-villager-breeding.patch index aab7abef5..76d76a7f8 100644 --- a/patches/server/0074-Configurable-villager-breeding.patch +++ b/patches/server/0075-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index 813b9708d218589afaaa2d0578affcc78f0c075f..52a84f354cc51b3ca875756514588b2e private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 93aaa9d4413e10af4cb1fca15bc9627a7ded3955..a5d7a2e70068b08b49e7ccddbe222ca808f693b7 100644 +index 243f427b181d4b24810e6357968b2d5996873566..769cc5910468fddab1fbe8751e9dc4d30d4647f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1607,6 +1607,7 @@ public class PurpurWorldConfig { +@@ -1613,6 +1613,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index 93aaa9d4413e10af4cb1fca15bc9627a7ded3955..a5d7a2e70068b08b49e7ccddbe222ca8 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1619,6 +1620,7 @@ public class PurpurWorldConfig { +@@ -1625,6 +1626,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0075-Redstone-deactivates-spawners.patch b/patches/server/0076-Redstone-deactivates-spawners.patch similarity index 94% rename from patches/server/0075-Redstone-deactivates-spawners.patch rename to patches/server/0076-Redstone-deactivates-spawners.patch index 7600fd511..89b51113d 100644 --- a/patches/server/0075-Redstone-deactivates-spawners.patch +++ b/patches/server/0076-Redstone-deactivates-spawners.patch @@ -17,7 +17,7 @@ index 8fdbc603486ff8a902b6327bc2acfb86a806626e..cb9acec46677048bd8ffbb0e3f2f0378 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da232210c18f9389dd51a30f4bf72b4e913513c2..bb136d077690654a8fa62a2aad73134487d07bd9 100644 +index 769cc5910468fddab1fbe8751e9dc4d30d4647f0..12db36e5496fba216863679a49ec1757ea26a349 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -358,6 +358,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0076-Totems-work-in-inventory.patch b/patches/server/0077-Totems-work-in-inventory.patch similarity index 96% rename from patches/server/0076-Totems-work-in-inventory.patch rename to patches/server/0077-Totems-work-in-inventory.patch index f1656a379..0e9e80422 100644 --- a/patches/server/0076-Totems-work-in-inventory.patch +++ b/patches/server/0077-Totems-work-in-inventory.patch @@ -28,7 +28,7 @@ index 20b3b2deae7b72cc16f5e47ad73fab4d9779d047..27df4e881e850a73947651ce7ad98df5 EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemstack == null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a880d0a1235fc223ca3a84e2695cd8c0dccfdee..e59f52a32f6300f5d2048a27bfa590f26432cdd0 100644 +index 12db36e5496fba216863679a49ec1757ea26a349..d30c6b98d394576c8eab5c298b9c731e6bd70cfa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -247,6 +247,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0078-Add-vindicator-johnny-spawn-chance.patch similarity index 91% rename from patches/server/0077-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0078-Add-vindicator-johnny-spawn-chance.patch index 5899a9c50..16aebe12b 100644 --- a/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0078-Add-vindicator-johnny-spawn-chance.patch @@ -22,10 +22,10 @@ index 40858ac2a9b58108472748d0ef2c2fd5ef5cfd98..2a5b6b94b15bf066b5722e7a4f782bc8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e59f52a32f6300f5d2048a27bfa590f26432cdd0..66162ef0ed12cd0bc4c705758dbbca19c3952d19 100644 +index d30c6b98d394576c8eab5c298b9c731e6bd70cfa..c1e72cdb13d37f82721033dc619e643bc6d6aece 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1634,6 +1634,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1640,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidableInWater = true; public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; @@ -33,7 +33,7 @@ index e59f52a32f6300f5d2048a27bfa590f26432cdd0..66162ef0ed12cd0bc4c705758dbbca19 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1644,6 +1645,7 @@ public class PurpurWorldConfig { +@@ -1650,6 +1651,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0078-Add-option-to-disable-certain-block-updates.patch b/patches/server/0079-Add-option-to-disable-certain-block-updates.patch similarity index 100% rename from patches/server/0078-Add-option-to-disable-certain-block-updates.patch rename to patches/server/0079-Add-option-to-disable-certain-block-updates.patch diff --git a/patches/server/0079-Dispensers-place-anvils-option.patch b/patches/server/0080-Dispensers-place-anvils-option.patch similarity index 96% rename from patches/server/0079-Dispensers-place-anvils-option.patch rename to patches/server/0080-Dispensers-place-anvils-option.patch index 1c8b9a743..dd0490702 100644 --- a/patches/server/0079-Dispensers-place-anvils-option.patch +++ b/patches/server/0080-Dispensers-place-anvils-option.patch @@ -41,7 +41,7 @@ index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..b52a9f05ada86f2d3767dd0d5ba8705e static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6fc8425ad4a2053fb7769e7f579d7ae226070511..93b2e578a44132c92cb8152edb49a55f048a03bf 100644 +index c1e72cdb13d37f82721033dc619e643bc6d6aece..b52a5b3cee95528be6edfcc488ab043225c81f67 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -321,8 +321,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0080-Allow-anvil-colors.patch b/patches/server/0081-Allow-anvil-colors.patch similarity index 98% rename from patches/server/0080-Allow-anvil-colors.patch rename to patches/server/0081-Allow-anvil-colors.patch index 586778c09..0063cf24e 100644 --- a/patches/server/0080-Allow-anvil-colors.patch +++ b/patches/server/0081-Allow-anvil-colors.patch @@ -64,7 +64,7 @@ index b500a04b8135604f0159a741b3d228c9e87b2a46..6fc5699ad90127dc48fa9ff5cb6ba536 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e9275427cc3337091054842558ec22c9bc34b419..2c7417affdf20fe15303d5f604530a8a3aba0060 100644 +index b52a5b3cee95528be6edfcc488ab043225c81f67..63d27e2ee263fdc8b165526f04781a1cf3e60894 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -299,6 +299,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 91% rename from patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch index 24c61808f..44bd814f0 100644 --- a/patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable dolphin treasure searching diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index b206686fe55f56b9c4d94a7b54927bf74842b46c..c9bc4eec14f40a31dbbe928f14277b12044c3089 100644 +index 08e9fd3581578195e5df079b086811c5964fd17a..7b2674233d0b8582243448c49d1c47271544d0b8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -481,6 +481,7 @@ public class Dolphin extends WaterAnimal { @@ -17,7 +17,7 @@ index b206686fe55f56b9c4d94a7b54927bf74842b46c..c9bc4eec14f40a31dbbe928f14277b12 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c76e932a3299ec84543d988d9c931f238ad1f8d..c4b7cf6f1ca34d1ef9d1d9d7c3faa658ff060a06 100644 +index 63d27e2ee263fdc8b165526f04781a1cf3e60894..a82912b348921f55962b48d052a4e492c7fbb224 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -609,6 +609,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0082-Short-enderman-height.patch b/patches/server/0083-Short-enderman-height.patch similarity index 97% rename from patches/server/0082-Short-enderman-height.patch rename to patches/server/0083-Short-enderman-height.patch index 0c5b30b01..aa38dd85d 100644 --- a/patches/server/0082-Short-enderman-height.patch +++ b/patches/server/0083-Short-enderman-height.patch @@ -19,7 +19,7 @@ index b7e3efcca0b544440f8799a3be27e9288a55ca77..b144543131bb756294e02e05f83002fe private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 945abc20319819cca2631876cb0abca07f7a730a..ba7d9d2b6927dd20e82009d57d77f713ab9be8ab 100644 +index 54b59b7faf69d54c05bdfee9b1bd2f137a5dd958..15eb4c93ddd4ea06640ff45e11c54b5c761ca89a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -267,6 +267,7 @@ public class EnderMan extends Monster implements NeutralMob { diff --git a/patches/server/0083-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch similarity index 94% rename from patches/server/0083-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0084-Stop-squids-floating-on-top-of-water.patch index e569d8dd6..9a3aed71e 100644 --- a/patches/server/0083-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -54,10 +54,10 @@ index ffc76354ead6937daf366c3d87bcb51d3e4c47f5..5b98d42b5d6bc07265fbb017e51a6281 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 45ee2548ebb5c41eccada81ffd859be2d97f4cd8..6a252d335c5040cad8180b992943dc7041840752 100644 +index a82912b348921f55962b48d052a4e492c7fbb224..506a61275a5baf285a061afb92ea8bd5fd22b541 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1474,6 +1474,7 @@ public class PurpurWorldConfig { +@@ -1480,6 +1480,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index 45ee2548ebb5c41eccada81ffd859be2d97f4cd8..6a252d335c5040cad8180b992943dc70 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1484,6 +1485,7 @@ public class PurpurWorldConfig { +@@ -1490,6 +1491,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0084-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch similarity index 100% rename from patches/server/0084-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch diff --git a/patches/server/0085-Entities-can-use-portals-configuration.patch b/patches/server/0086-Entities-can-use-portals-configuration.patch similarity index 97% rename from patches/server/0085-Entities-can-use-portals-configuration.patch rename to patches/server/0086-Entities-can-use-portals-configuration.patch index 2c6d239cd..da0049a21 100644 --- a/patches/server/0085-Entities-can-use-portals-configuration.patch +++ b/patches/server/0086-Entities-can-use-portals-configuration.patch @@ -27,7 +27,7 @@ index 0c18b2b3fcb64aa8c606e0823f365435929fe6f8..68233db015138b0a615a65eac8c11afc public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6a252d335c5040cad8180b992943dc7041840752..558562f574a31e748710e68a67baa1292d794b30 100644 +index 506a61275a5baf285a061afb92ea8bd5fd22b541..aa723588cb7209ae44bb6796c8d78c168efc6b08 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -100,6 +100,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0086-LivingEntity-broadcastItemBreak.patch b/patches/server/0087-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/server/0086-LivingEntity-broadcastItemBreak.patch rename to patches/server/0087-LivingEntity-broadcastItemBreak.patch diff --git a/patches/server/0087-Customizable-wither-health-and-healing.patch b/patches/server/0088-Customizable-wither-health-and-healing.patch similarity index 89% rename from patches/server/0087-Customizable-wither-health-and-healing.patch rename to patches/server/0088-Customizable-wither-health-and-healing.patch index 14fe219a5..89d87c31f 100644 --- a/patches/server/0087-Customizable-wither-health-and-healing.patch +++ b/patches/server/0088-Customizable-wither-health-and-healing.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Customizable wither health and healing Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often. 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 45c050f2b9cebfa629c908cb3b91a909489b8ec1..b39a7dfb910e99f04275fa8e246581f5ccc27afa 100644 +index a20017a6086421061ee13df9cf37e08eeb515a5b..c2f4ae412684cc2f8d3cc2206003be5c9e3b2769 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 @@ -529,8 +529,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -23,10 +23,10 @@ index 45c050f2b9cebfa629c908cb3b91a909489b8ec1..b39a7dfb910e99f04275fa8e246581f5 this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 558562f574a31e748710e68a67baa1292d794b30..09b253836220f0e6de3b0c804ffb34bd6480c809 100644 +index aa723588cb7209ae44bb6796c8d78c168efc6b08..1e95bf6efe93c22f135fb15c4600c181580daf0a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1713,6 +1713,8 @@ public class PurpurWorldConfig { +@@ -1719,6 +1719,8 @@ public class PurpurWorldConfig { public boolean witherControllable = true; public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index 558562f574a31e748710e68a67baa1292d794b30..09b253836220f0e6de3b0c804ffb34bd private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1728,6 +1730,8 @@ public class PurpurWorldConfig { +@@ -1734,6 +1736,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch similarity index 98% rename from patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch index e168fb74b..3065a3cca 100644 --- a/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0089-Allow-toggling-special-MobSpawners-per-world.patch @@ -59,7 +59,7 @@ index 5d199fe497bd852827d3d18fb7566a09e70331a3..6cd8a50289a6404441e9e5e08d82d2eb if (NaturalSpawner.isSpawnPositionOk(SpawnPlacements.Type.ON_GROUND, world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0c0c2745a18593ee7da491d0f1b5c0d11aa1a3c4..88f3a76e1b88d70c781eb04c4c3de627d151e3df 100644 +index 1e95bf6efe93c22f135fb15c4600c181580daf0a..82b4e05b4f4ad23bc98e81385bf0e715bf8cda50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -71,6 +71,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0089-Raid-cooldown-setting.patch b/patches/server/0090-Raid-cooldown-setting.patch similarity index 97% rename from patches/server/0089-Raid-cooldown-setting.patch rename to patches/server/0090-Raid-cooldown-setting.patch index f825075ab..f0f0b2da0 100644 --- a/patches/server/0089-Raid-cooldown-setting.patch +++ b/patches/server/0090-Raid-cooldown-setting.patch @@ -49,7 +49,7 @@ index 41457c9f27b18fa2734a6cca297ec5186470e82f..94356e0541f8f4da68211fa533347cc9 if (!this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c97375f60d10121f738f0f162b15c3f25d7d0eeb..7ae9b221c851139be2e289a5baca644b7d19a8c5 100644 +index 82b4e05b4f4ad23bc98e81385bf0e715bf8cda50..eddc7cffe43083edca3aad0696e15299e36b1a65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -111,6 +111,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch similarity index 96% rename from patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch index ba3922ec8..5573c80d4 100644 --- a/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0091-Despawn-rate-config-options-per-projectile-type.patch @@ -7,7 +7,7 @@ This patch's implementation has been removed in favor of Pufferfish's entity-tim The config remains for migration purposes. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 44af2919281fe6afc08401d68ba421e4ea963136..f6ee6a36d85531b5c39bb49c6b5a97dd7eb06444 100644 +index eddc7cffe43083edca3aad0696e15299e36b1a65..9d3f312eabca30f9012acfe575eb13bf8ec221bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -292,6 +292,39 @@ public class PurpurWorldConfig { diff --git a/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 96% rename from patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch index fadcbd84a..0ca6a76a3 100644 --- a/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0092-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -70,10 +70,10 @@ index b2b04d7b7bbc400fb66cac385fa754d4fb47c7d9..bd75aa78a7dd437d6fce79a6cb182981 this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 19ee5b742ea9cab725fd28e86917389f368e3a22..12676dd8b1e9a7de8ed5815a06e3d107ce1244a5 100644 +index 9d3f312eabca30f9012acfe575eb13bf8ec221bd..a6fac67bc5defd71d9e5ccd580047b7c5f5d779f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1846,6 +1846,7 @@ public class PurpurWorldConfig { +@@ -1852,6 +1852,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index 19ee5b742ea9cab725fd28e86917389f368e3a22..12676dd8b1e9a7de8ed5815a06e3d107 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1860,6 +1861,7 @@ public class PurpurWorldConfig { +@@ -1866,6 +1867,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0092-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/server/0092-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0093-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/server/0093-Flying-squids-Oh-my.patch b/patches/server/0094-Flying-squids-Oh-my.patch similarity index 95% rename from patches/server/0093-Flying-squids-Oh-my.patch rename to patches/server/0094-Flying-squids-Oh-my.patch index a03a8239c..0a6035fa4 100644 --- a/patches/server/0093-Flying-squids-Oh-my.patch +++ b/patches/server/0094-Flying-squids-Oh-my.patch @@ -58,7 +58,7 @@ index de0a015cc944c36358fc34a3142ecbf9d2a332b5..1431d7f295614641c1a5a5197f4bac3f float f1 = Mth.cos(f) * 0.2F; float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 12676dd8b1e9a7de8ed5815a06e3d107ce1244a5..03034444e0a0bbe680dfee0ab735cfad971e4fb5 100644 +index a6fac67bc5defd71d9e5ccd580047b7c5f5d779f..dd1eced37919d62f571b9b4a524fb08cbe0cdf41 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -901,10 +901,12 @@ public class PurpurWorldConfig { @@ -74,7 +74,7 @@ index 12676dd8b1e9a7de8ed5815a06e3d107ce1244a5..03034444e0a0bbe680dfee0ab735cfad } public boolean goatRidable = false; -@@ -1533,6 +1535,7 @@ public class PurpurWorldConfig { +@@ -1539,6 +1541,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -82,7 +82,7 @@ index 12676dd8b1e9a7de8ed5815a06e3d107ce1244a5..03034444e0a0bbe680dfee0ab735cfad private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1544,6 +1547,7 @@ public class PurpurWorldConfig { +@@ -1550,6 +1553,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0094-Infinity-bow-settings.patch b/patches/server/0095-Infinity-bow-settings.patch similarity index 97% rename from patches/server/0094-Infinity-bow-settings.patch rename to patches/server/0095-Infinity-bow-settings.patch index ce9519b38..ccd8d3973 100644 --- a/patches/server/0094-Infinity-bow-settings.patch +++ b/patches/server/0095-Infinity-bow-settings.patch @@ -27,7 +27,7 @@ index 08d597db1a5345a343777a01427655e6bf2c926b..33df0ca406dc8321b76b393f317bbd1c } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 37b6eb3ad99ffe2216bc1fe991c44cbe7b70bd40..1e92e006241e6e8d189081232d2430cfd590586d 100644 +index dd1eced37919d62f571b9b4a524fb08cbe0cdf41..8c3a81393bb2d0ff251277cf81d5d0b8276b3628 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0095-Configurable-daylight-cycle.patch b/patches/server/0096-Configurable-daylight-cycle.patch similarity index 98% rename from patches/server/0095-Configurable-daylight-cycle.patch rename to patches/server/0096-Configurable-daylight-cycle.patch index d3b7d9bb4..36fd47b2f 100644 --- a/patches/server/0095-Configurable-daylight-cycle.patch +++ b/patches/server/0096-Configurable-daylight-cycle.patch @@ -88,7 +88,7 @@ index 854e6e73a7fa9c2cd4f0b9beadbff6427c8346e5..3b512beac50bc5a2405ca3287b08e7ff public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { Iterator iterator = this.customSpawners.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 471ccc46f2e33c68e91553d6cee76be323d20aee..af8aa98460e0fe8d9265087ebc3b6627cefde08e 100644 +index 8c3a81393bb2d0ff251277cf81d5d0b8276b3628..11938cd9c6196f5cc89a13ad7a81d4e4fa8d0879 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -124,6 +124,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0096-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch similarity index 100% rename from patches/server/0096-Allow-infinite-and-mending-enchantments-together.patch rename to patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch diff --git a/patches/server/0097-Furnace-uses-lava-from-underneath.patch b/patches/server/0098-Furnace-uses-lava-from-underneath.patch similarity index 97% rename from patches/server/0097-Furnace-uses-lava-from-underneath.patch rename to patches/server/0098-Furnace-uses-lava-from-underneath.patch index 9fdfa986a..cbd3695b6 100644 --- a/patches/server/0097-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0098-Furnace-uses-lava-from-underneath.patch @@ -47,7 +47,7 @@ index 448fa4f4f200430d6ce3051763c7ceb697696146..ca2052804ad829a1528a9c5a0a792275 private static boolean canBurn(RegistryAccess registryManager, @Nullable Recipe recipe, NonNullList slots, int count) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 88567bc4f504b00bec3841da194a0bd17abf9ce7..4d14c68c3d5a5ee8070a678740283c5b2938b7bf 100644 +index 11938cd9c6196f5cc89a13ad7a81d4e4fa8d0879..ef6fe57cce6c6ef6c6820ab2bd676fbe4b30370e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -415,6 +415,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0098-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0099-Arrows-should-not-reset-despawn-counter.patch similarity index 95% rename from patches/server/0098-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0099-Arrows-should-not-reset-despawn-counter.patch index 7aaf175ea..ec77bb5fe 100644 --- a/patches/server/0098-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0099-Arrows-should-not-reset-despawn-counter.patch @@ -20,7 +20,7 @@ index 7226be19248a1ffb8ff2c89b55882529d33a6c0c..4f98d7f755ad692dd9589134524a604e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2589a64e795b69b2c9ace041202567f7959df32b..a0c82e8b354318fc2795432beb8b88f619e96dc4 100644 +index ef6fe57cce6c6ef6c6820ab2bd676fbe4b30370e..d1d51f147c91cb99ff3dc03c5e461cf6acf529d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -103,6 +103,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0099-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 95% rename from patches/server/0099-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 1576d19f7..c1e1ddf79 100644 --- a/patches/server/0099-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0100-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,7 +24,7 @@ index d446b440e2bc5b73362fc3d30a10d2e52fde68e1..d4e3a32a0f9b49bff64cb43d77727ce3 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9613301106d4f5ef9121400f8a32205428b6f4bf..90c9d40009d2e93732110915447190b81c902393 100644 +index d1d51f147c91cb99ff3dc03c5e461cf6acf529d4..78e2afcbe361e32a023a9a3b0708b9c1705138a4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -416,8 +416,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0100-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch similarity index 98% rename from patches/server/0100-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch index ad10e6876..dd30ef04c 100644 --- a/patches/server/0100-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0101-Add-adjustable-breeding-cooldown-to-config.patch @@ -104,7 +104,7 @@ index 8673d325bd866704ae90ac31eb54f78097eac952..10cff85dd4a59558dd487a3c5c7871a0 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 538055ccc9db86b41f204da91061807a637e6175..25976e5d003d61595db1292b294364c0a2f188b2 100644 +index 78e2afcbe361e32a023a9a3b0708b9c1705138a4..39c8e6f7bf012e94c653c12383d2a7cf856e1123 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,6 +117,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0101-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch similarity index 97% rename from patches/server/0101-Make-entity-breeding-times-configurable.patch rename to patches/server/0102-Make-entity-breeding-times-configurable.patch index 5b4f1affd..9327735f0 100644 --- a/patches/server/0101-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -95,7 +95,7 @@ index 0f49705e3c7adf033cee9d0746319885c830224f..86b910cbb8d0e19dc9ae53078e730495 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 e5e84c85d2b1c84c7612392bb060f713bd03ddcf..1d17a9fcf80278779703e5cdd390ef0e52f9e437 100644 +index b94ec05ffa0a6f9e7368731d360319ffe1b10e3f..371cab208ee0a31a90248272f88249eceaf9eb59 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -65,6 +65,11 @@ public class Cow extends Animal { @@ -236,7 +236,7 @@ index b2cf680e377f849a7cc17136ebca3cf33e34048c..0df9900ecf211f3a0bcfab6daa931fdd @Override public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 48864c6f720be9132840e05ff4e7eb394ce3ad1d..c21d48eb213dac6c932edfe7c4161e76510450a4 100644 +index 2f373666e982a8c4e769168b565ca26e75fe59e9..5443affd9dd8d27e32768c2df5a624b5cd7b1bec 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java @@ -142,6 +142,11 @@ public class Rabbit extends Animal implements VariantHolder { @@ -525,7 +525,7 @@ index 853fe631a7d665e2379296c89e433e761495a814..ae4d404b837da202e52d246dabfc00c8 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dabb5ac09c9 100644 +index 39c8e6f7bf012e94c653c12383d2a7cf856e1123..e0074e78a66eb425d45d1d17da6663b2b5a1681b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -502,10 +502,12 @@ public class PurpurWorldConfig { @@ -790,7 +790,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean parrotRidable = false; -@@ -1278,6 +1312,7 @@ public class PurpurWorldConfig { +@@ -1284,6 +1318,7 @@ public class PurpurWorldConfig { public boolean pigControllable = true; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -798,7 +798,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1289,6 +1324,7 @@ public class PurpurWorldConfig { +@@ -1295,6 +1330,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -806,7 +806,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean piglinRidable = false; -@@ -1345,6 +1381,7 @@ public class PurpurWorldConfig { +@@ -1351,6 +1387,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -814,7 +814,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1358,6 +1395,7 @@ public class PurpurWorldConfig { +@@ -1364,6 +1401,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -822,7 +822,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean pufferfishRidable = false; -@@ -1380,6 +1418,7 @@ public class PurpurWorldConfig { +@@ -1386,6 +1424,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -830,7 +830,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1392,6 +1431,7 @@ public class PurpurWorldConfig { +@@ -1398,6 +1437,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -838,7 +838,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean ravagerRidable = false; -@@ -1428,6 +1468,7 @@ public class PurpurWorldConfig { +@@ -1434,6 +1474,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = true; public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; @@ -846,7 +846,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1438,6 +1479,7 @@ public class PurpurWorldConfig { +@@ -1444,6 +1485,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -854,7 +854,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean shulkerRidable = false; -@@ -1561,11 +1603,13 @@ public class PurpurWorldConfig { +@@ -1567,11 +1609,13 @@ public class PurpurWorldConfig { public boolean snifferRidableInWater = true; public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; @@ -868,7 +868,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean squidRidable = false; -@@ -1624,6 +1668,7 @@ public class PurpurWorldConfig { +@@ -1630,6 +1674,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -876,7 +876,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1634,6 +1679,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1685,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -884,7 +884,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean tadpoleRidable = false; -@@ -1654,6 +1700,7 @@ public class PurpurWorldConfig { +@@ -1660,6 +1706,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -892,7 +892,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1671,6 +1718,7 @@ public class PurpurWorldConfig { +@@ -1677,6 +1724,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -900,7 +900,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean tropicalFishRidable = false; -@@ -1691,6 +1739,7 @@ public class PurpurWorldConfig { +@@ -1697,6 +1745,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = true; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -908,7 +908,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1701,6 +1750,7 @@ public class PurpurWorldConfig { +@@ -1707,6 +1756,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -916,7 +916,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean vexRidable = false; -@@ -1728,6 +1778,7 @@ public class PurpurWorldConfig { +@@ -1734,6 +1784,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -924,7 +924,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1741,6 +1792,7 @@ public class PurpurWorldConfig { +@@ -1747,6 +1798,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -932,7 +932,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab } public boolean vindicatorRidable = false; -@@ -1852,6 +1904,7 @@ public class PurpurWorldConfig { +@@ -1858,6 +1910,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -940,7 +940,7 @@ index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dab private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1862,6 +1915,7 @@ public class PurpurWorldConfig { +@@ -1868,6 +1921,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0102-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 99% rename from patches/server/0102-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch index b0118de8f..1e5c89fc3 100644 --- a/patches/server/0102-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -136,7 +136,7 @@ index b2ad6d230de2c29f371178bccde1111c7532ee70..6667926519a0f1c151e53f59cce36e74 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8223c4c0c24dc222fd4dad216c1b2b7daa98305f..88bc6cdabe0c3c0fb72bc4c88feb3cb376579784 100644 +index e0074e78a66eb425d45d1d17da6663b2b5a1681b..1fea447181f3bf032962d9cc7ff402fff1d76d2a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,8 +99,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0103-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/server/0103-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index b370d744f..1aab57146 100644 --- a/patches/server/0103-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0104-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 2941c16ef486345b57ab2dfcd26f0272285d3b5a..7cc6812bf6f2ba015f65fd1fc1eaac02 ((Mob) newEntityLiving).setPersistenceRequired(); // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 88bc6cdabe0c3c0fb72bc4c88feb3cb376579784..edf78456ecd22923503732242e2fb04c15a7a5d6 100644 +index 1fea447181f3bf032962d9cc7ff402fff1d76d2a..db4c2f00e8e1121426166ec0bf45d01e93fc3fa2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -100,9 +100,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0104-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 96% rename from patches/server/0104-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 6b2d4cd8d..bf6d0dcae 100644 --- a/patches/server/0104-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0105-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,7 +21,7 @@ index 15eb4c93ddd4ea06640ff45e11c54b5c761ca89a..47b82549b401acca5e9a5702d4167465 private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index edf78456ecd22923503732242e2fb04c15a7a5d6..5f7069b47deed8835aa91303e2c037e09e78fbc5 100644 +index db4c2f00e8e1121426166ec0bf45d01e93fc3fa2..448eaab8347dd66cf060d45783e5d4b0442a6774 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -832,6 +832,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0105-Add-configurable-snowball-damage.patch b/patches/server/0106-Add-configurable-snowball-damage.patch similarity index 95% rename from patches/server/0105-Add-configurable-snowball-damage.patch rename to patches/server/0106-Add-configurable-snowball-damage.patch index f444e0e2b..a8fbc68bc 100644 --- a/patches/server/0105-Add-configurable-snowball-damage.patch +++ b/patches/server/0106-Add-configurable-snowball-damage.patch @@ -18,7 +18,7 @@ index 718e120c9768cf716b32d3d652f53f1dda925168..b90cedad282e95a067aca176fafa9f72 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f7069b47deed8835aa91303e2c037e09e78fbc5..168da72bdbb443f8c5bebc7d2a1ed8820020cf49 100644 +index 448eaab8347dd66cf060d45783e5d4b0442a6774..f8df67b41acde045321dbfb9e2cefb008544a6dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -356,6 +356,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0106-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch similarity index 90% rename from patches/server/0106-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch index 3a55fa54f..3b3f94ae9 100644 --- a/patches/server/0106-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0107-Changeable-Mob-Left-Handed-Chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 0101b6e0df2a6651a22c84d0fae4ebfb37f8e682..4fbc1fa9d3d37129b2ef243b65844dce9fe44884 100644 +index 9f68247ffc31b67e1eb66d3b6449c44fe8549d0d..c8e394ebd6d2393ef77b95d6f20fcbf6040a1dc5 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1289,7 +1289,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -18,7 +18,7 @@ index 0101b6e0df2a6651a22c84d0fae4ebfb37f8e682..4fbc1fa9d3d37129b2ef243b65844dce } else { this.setLeftHanded(false); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index abb4fb180bc16441e294f77a3b8a1b9d5543061f..cdbf53d7c249d418d5958372b81ab9e7b3236925 100644 +index f8df67b41acde045321dbfb9e2cefb008544a6dd..136b818e867be9c327bc1e0be590716445623953 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -158,8 +158,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0107-Add-boat-fall-damage-config.patch b/patches/server/0108-Add-boat-fall-damage-config.patch similarity index 94% rename from patches/server/0107-Add-boat-fall-damage-config.patch rename to patches/server/0108-Add-boat-fall-damage-config.patch index 218342651..a229d1aab 100644 --- a/patches/server/0107-Add-boat-fall-damage-config.patch +++ b/patches/server/0108-Add-boat-fall-damage-config.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8dc74f36bcccc4b5023fafce22115778ec08bff6..344ea725ab5f4fb373542dac63761263dfe95035 100644 +index 14d5af88fb39af6bc6a8461972de3a96ad4f0de8..f71101057b89cd0393d8a64760d1ae9e7a50beb6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1112,7 +1112,16 @@ public class ServerPlayer extends Player { @@ -27,7 +27,7 @@ index 8dc74f36bcccc4b5023fafce22115778ec08bff6..344ea725ab5f4fb373542dac63761263 if (!flag && isSpawnInvulnerable() && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4af6702e967bec733bbd5ba21dc8599f7b25a7cc..9fa8f9fb1c36157f849b81ae712bed28e4a68b8f 100644 +index 136b818e867be9c327bc1e0be590716445623953..b991de8c4761f6fd82d0c8f325d90fa9e2425d9f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -114,6 +114,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0108-Snow-Golem-rate-of-fire-config.patch b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch similarity index 94% rename from patches/server/0108-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0109-Snow-Golem-rate-of-fire-config.patch index 10a265214..ca2af67e3 100644 --- a/patches/server/0108-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0109-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index 2a5ffaf5614e19305f4e08e15752364919e68a49..ecc0f221fca332b6f4d8feb72dbafc52 this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9fa8f9fb1c36157f849b81ae712bed28e4a68b8f..5aeb547458ab4a632e64189c749586bba86d20d9 100644 +index b991de8c4761f6fd82d0c8f325d90fa9e2425d9f..45654f3d541a8e66d283f044d20d2d48ee4f40a7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1601,6 +1601,10 @@ public class PurpurWorldConfig { +@@ -1607,6 +1607,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 9fa8f9fb1c36157f849b81ae712bed28e4a68b8f..5aeb547458ab4a632e64189c749586bb private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1614,6 +1618,10 @@ public class PurpurWorldConfig { +@@ -1620,6 +1624,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0109-EMC-Configurable-disable-give-dropping.patch b/patches/server/0110-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0109-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0110-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0111-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 94% rename from patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0111-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index d94e10c90..396d426e8 100644 --- a/patches/server/0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0111-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 3d61b27c23d90e87fdfc8c170eafc116716ac047..67fd554cfd6b848ca1f2cf804ad4543a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5aeb547458ab4a632e64189c749586bba86d20d9..b29c4380dc2bc7c0aab0e47b5714f14883e7a919 100644 +index 45654f3d541a8e66d283f044d20d2d48ee4f40a7..cc3cc85b7119865a622dd61acc1c84708256876b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2039,6 +2039,7 @@ public class PurpurWorldConfig { +@@ -2045,6 +2045,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 5aeb547458ab4a632e64189c749586bba86d20d9..b29c4380dc2bc7c0aab0e47b5714f148 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2053,5 +2054,6 @@ public class PurpurWorldConfig { +@@ -2059,5 +2060,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0112-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 98% rename from patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0112-Configurable-chance-for-wolves-to-spawn-rabid.patch index f42572829..750df78a5 100644 --- a/patches/server/0111-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0112-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -221,10 +221,10 @@ index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f85453 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 436e09a655f5fa7eb69d00cb4c68b6b9d9b9106d..37b6e2de8be125d2e2dc9649af6114a5fab5f66c 100644 +index cc3cc85b7119865a622dd61acc1c84708256876b..6e656c74019f44b804ea6734139b3859d2a2b1df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1929,6 +1929,8 @@ public class PurpurWorldConfig { +@@ -1935,6 +1935,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -233,7 +233,7 @@ index 436e09a655f5fa7eb69d00cb4c68b6b9d9b9106d..37b6e2de8be125d2e2dc9649af6114a5 public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1940,6 +1942,8 @@ public class PurpurWorldConfig { +@@ -1946,6 +1948,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0112-Configurable-default-collar-color.patch b/patches/server/0113-Configurable-default-collar-color.patch similarity index 93% rename from patches/server/0112-Configurable-default-collar-color.patch rename to patches/server/0113-Configurable-default-collar-color.patch index 93b310386..5c20ceada 100644 --- a/patches/server/0112-Configurable-default-collar-color.patch +++ b/patches/server/0113-Configurable-default-collar-color.patch @@ -26,7 +26,7 @@ index ffa2128b63e5e45c2a41e31a6b8b6e8df0bf9be4..956f125c9ae62537570bb9870be66872 @Override public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) { 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 563347f7b683d796f7d3575206d40656247a897c..6b270c1aa37096443701d7f4fbdab006afe2556c 100644 +index aa484d03ed31f6c60c0b4456a4047bc38a40ea4a..89627025c0b5464900a5ea818c7aaf5d676f7a5f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -203,6 +203,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -43,7 +43,7 @@ index 563347f7b683d796f7d3575206d40656247a897c..6b270c1aa37096443701d7f4fbdab006 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 37b6e2de8be125d2e2dc9649af6114a5fab5f66c..bdf02c6e7893646f91a6be926b341a4079ecc743 100644 +index 6e656c74019f44b804ea6734139b3859d2a2b1df..dfb3e53954e7247199427ba8e35a97160af25d55 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -620,6 +620,7 @@ public class PurpurWorldConfig { @@ -66,7 +66,7 @@ index 37b6e2de8be125d2e2dc9649af6114a5fab5f66c..bdf02c6e7893646f91a6be926b341a40 } public boolean caveSpiderRidable = false; -@@ -1929,6 +1935,7 @@ public class PurpurWorldConfig { +@@ -1935,6 +1941,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index 37b6e2de8be125d2e2dc9649af6114a5fab5f66c..bdf02c6e7893646f91a6be926b341a40 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1942,6 +1949,11 @@ public class PurpurWorldConfig { +@@ -1948,6 +1955,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/todo/server/0114-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0114-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 86% rename from patches/todo/server/0114-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0114-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index d154eb0d1..2db8862ca 100644 --- a/patches/todo/server/0114-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0114-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -8,10 +8,10 @@ farm Nether Wart. Reimplemented based on a feature of the carpet-extra mod. diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index 7ad71f2c139c2288b49d6b0fde3f8b8013f5e095..ed67d2adf06f7ae9c451648e30945ad289ceae38 100644 +index 5bb3db5e1f47ef56ef40c84f06a1c5ae59f84c89..f9665eaade08b6ac4f728a65acba025e783dbd08 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -34,6 +34,7 @@ public class HarvestFarmland extends Behavior { +@@ -39,6 +39,7 @@ public class HarvestFarmland extends Behavior { private long nextOkStartTime; private int timeWorkedSoFar; private final List validFarmlandAroundVillager = Lists.newArrayList(); @@ -19,7 +19,7 @@ index 7ad71f2c139c2288b49d6b0fde3f8b8013f5e095..ed67d2adf06f7ae9c451648e30945ad2 public HarvestFarmland() { super(ImmutableMap.of(MemoryModuleType.LOOK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.WALK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.SECONDARY_JOB_SITE, MemoryStatus.VALUE_PRESENT)); -@@ -42,9 +43,10 @@ public class HarvestFarmland extends Behavior { +@@ -47,9 +48,10 @@ public class HarvestFarmland extends Behavior { protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { return false; @@ -31,7 +31,7 @@ index 7ad71f2c139c2288b49d6b0fde3f8b8013f5e095..ed67d2adf06f7ae9c451648e30945ad2 BlockPos.MutableBlockPos blockposition_mutableblockposition = entity.blockPosition().mutable(); this.validFarmlandAroundVillager.clear(); -@@ -75,6 +77,7 @@ public class HarvestFarmland extends Behavior { +@@ -80,6 +82,7 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = world.getBlockState(pos.below()).getBlock(); @@ -39,7 +39,7 @@ index 7ad71f2c139c2288b49d6b0fde3f8b8013f5e095..ed67d2adf06f7ae9c451648e30945ad2 return block instanceof CropBlock && ((CropBlock) block).isMaxAge(iblockdata) || iblockdata.isAir() && block1 instanceof FarmBlock; } -@@ -100,7 +103,7 @@ public class HarvestFarmland extends Behavior { +@@ -105,7 +108,7 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = world.getBlockState(this.aboveFarmlandPos.below()).getBlock(); @@ -48,7 +48,7 @@ index 7ad71f2c139c2288b49d6b0fde3f8b8013f5e095..ed67d2adf06f7ae9c451648e30945ad2 // CraftBukkit start if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, this.aboveFarmlandPos, Blocks.AIR.defaultBlockState()).isCancelled()) { world.destroyBlock(this.aboveFarmlandPos, true, entity); -@@ -108,7 +111,7 @@ public class HarvestFarmland extends Behavior { +@@ -113,14 +116,14 @@ public class HarvestFarmland extends Behavior { // CraftBukkit end } @@ -57,20 +57,15 @@ index 7ad71f2c139c2288b49d6b0fde3f8b8013f5e095..ed67d2adf06f7ae9c451648e30945ad2 SimpleContainer inventorysubcontainer = entity.getInventory(); for (int j = 0; j < inventorysubcontainer.getContainerSize(); ++j) { -@@ -119,6 +122,12 @@ public class HarvestFarmland extends Behavior { - BlockState iblockdata1; + ItemStack itemstack = inventorysubcontainer.getItem(j); + boolean flag = false; - // CraftBukkit start -+ // Purpur start -+ if (this.clericWartFarmer && itemstack.getItem() == Items.NETHER_WART) { -+ iblockdata1 = Blocks.NETHER_WART.defaultBlockState(); -+ flag = true; -+ } else -+ // Purpur end - if (itemstack.is(Items.WHEAT_SEEDS)) { - iblockdata1 = Blocks.WHEAT.defaultBlockState(); - flag = true; -@@ -145,7 +154,7 @@ public class HarvestFarmland extends Behavior { +- if (!itemstack.isEmpty() && itemstack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS)) { ++ if (!itemstack.isEmpty() && (itemstack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS) || this.clericWartFarmer && itemstack.getItem() == net.minecraft.world.item.Items.NETHER_WART)) { + Item item = itemstack.getItem(); + + if (item instanceof BlockItem) { +@@ -138,7 +141,7 @@ public class HarvestFarmland extends Behavior { } if (flag) { @@ -143,10 +138,10 @@ index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { 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 aa95cd7e04e25dec63c172d219f1f16cd6c9c4b5..8e2015fc122a93015482a81b2bbfa1127d6a0db6 100644 +index 52a84f354cc51b3ca875756514588b2e6309fc25..0378faa19053dbcb74315e3fd6f96a37a226de4e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -222,7 +222,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -221,7 +221,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F)); } else { brain.setSchedule(Schedule.VILLAGER_DEFAULT); @@ -156,17 +151,17 @@ index aa95cd7e04e25dec63c172d219f1f16cd6c9c4b5..8e2015fc122a93015482a81b2bbfa112 brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); @@ -972,6 +972,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - } public boolean hasFarmSeeds() { -+ // Purpur start -+ if (this.level().purpurConfig.villagerClericsFarmWarts && this.getVillagerData().getProfession() == VillagerProfession.CLERIC) { -+ return this.getInventory().hasAnyOf(ImmutableSet.of(Items.NETHER_WART)); -+ } -+ // Purpur end - return this.getInventory().hasAnyOf(ImmutableSet.of(Items.WHEAT_SEEDS, Items.POTATO, Items.CARROT, Items.BEETROOT_SEEDS)); + return this.getInventory().hasAnyMatching((itemstack) -> { ++ // Purpur start ++ if (this.level().purpurConfig.villagerClericsFarmWarts && this.getVillagerData().getProfession() == VillagerProfession.CLERIC) { ++ return itemstack.is(Items.NETHER_WART); ++ } ++ // Purpur end + return itemstack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS); + }); } - diff --git a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java b/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3fcb1a907 100644 --- a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java @@ -181,10 +176,10 @@ index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3 public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 496b797910b1248662289fab16ed5fa3390d0c4d..1ffdd96306b525f217a630b4f8f05e16c0e8b7cd 100644 +index dfb3e53954e7247199427ba8e35a97160af25d55..b4c1ab716d7428d663ddcaca9bb1a12ffcea99c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1810,6 +1810,8 @@ public class PurpurWorldConfig { +@@ -1816,6 +1816,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -193,7 +188,7 @@ index 496b797910b1248662289fab16ed5fa3390d0c4d..1ffdd96306b525f217a630b4f8f05e16 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1824,6 +1826,8 @@ public class PurpurWorldConfig { +@@ -1830,6 +1832,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0113-Phantom-flames-on-swoop.patch b/patches/server/0115-Phantom-flames-on-swoop.patch similarity index 84% rename from patches/server/0113-Phantom-flames-on-swoop.patch rename to patches/server/0115-Phantom-flames-on-swoop.patch index e5054a235..d0b32b145 100644 --- a/patches/server/0113-Phantom-flames-on-swoop.patch +++ b/patches/server/0115-Phantom-flames-on-swoop.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Phantom flames on swoop 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 67aa490540d264775d8a8382cb5922f365ca6913..a9a942896dd428cd974970cac16857c27d08a7ec 100644 +index 776602b545f5ee3b566787befb0f43075ce02a29..29167ec21bc68e43c6505b6b1ee376d75a43c1ef 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -219,6 +219,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -244,6 +244,7 @@ public class Phantom extends FlyingMob implements Enemy { this.level().addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f2, this.getY() + (double) f4, this.getZ() - (double) f3, 0.0D, 0.0D, 0.0D); } @@ -17,10 +17,10 @@ index 67aa490540d264775d8a8382cb5922f365ca6913..a9a942896dd428cd974970cac16857c2 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d9a4180f3af0752a44c0829df48fc0bbb52a116..3a1c437eab3783c02e2adac370f49f016b107a27 100644 +index b4c1ab716d7428d663ddcaca9bb1a12ffcea99c9..27b506558ad224c46fb47b984129ed392398ea09 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1298,6 +1298,7 @@ public class PurpurWorldConfig { +@@ -1301,6 +1301,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index 0d9a4180f3af0752a44c0829df48fc0bbb52a116..3a1c437eab3783c02e2adac370f49f01 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1328,6 +1329,7 @@ public class PurpurWorldConfig { +@@ -1334,6 +1335,7 @@ public class PurpurWorldConfig { phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); diff --git a/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 94% rename from patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch index b2dd898b3..e0d11ab75 100644 --- a/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0116-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,7 +17,7 @@ index 5e22d175b1048a58802cdf64ac70a8b56329e915..d81946b400f208c39941128ce823ff77 return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 55ec718b1e03dec575c151336faa1a567946e8d8..481ac57133506633b776db448819e73aebfb39e8 100644 +index 27b506558ad224c46fb47b984129ed392398ea09..a2a630df5880a32ae6cc05af7a4c39c0885ccc03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -425,6 +425,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0115-Implement-TPSBar.patch b/patches/server/0117-Implement-TPSBar.patch similarity index 98% rename from patches/server/0115-Implement-TPSBar.patch rename to patches/server/0117-Implement-TPSBar.patch index 619534b14..6f8b489a3 100644 --- a/patches/server/0115-Implement-TPSBar.patch +++ b/patches/server/0117-Implement-TPSBar.patch @@ -17,7 +17,7 @@ index e5b1b6ad32c48a4ba13b4930954fad18669677ad..4e721dfca7559620d8ce65a6703f2089 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1b24b67437b1a677bbd6ea30b32c703fd7eda2a2..566f20e6c8306c6f6884b95362f82bdcffbcbbc7 100644 +index 12a5a8c06dc636fbd5008b8f71d05cfae00a52c2..7b67bc1e7891a27125db560ad18a133096bb2468 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1023,6 +1023,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); Iterator iterator = list.iterator(); diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index 5bb3db5e1f47ef56ef40c84f06a1c5ae59f84c89..841954670c5a9b400552774669e57b68b156c300 100644 +index f9665eaade08b6ac4f728a65acba025e783dbd08..5a807bce1db30cfc753caa588cd0ef632881d0dd 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -45,7 +45,7 @@ public class HarvestFarmland extends Behavior { +@@ -46,7 +46,7 @@ public class HarvestFarmland extends Behavior { } protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { - if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (!world.purpurConfig.villagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur return false; - } else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER) { + } else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER && !(world.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().getProfession() == VillagerProfession.CLERIC)) { // Purpur return false; diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java index 4253b3b1263a7ae5a2f5f3a34674dfea615a81ea..a987c94fd321f51241c405659d6a0b2327a612ae 100644 @@ -374,7 +374,7 @@ index 1942649e868fc985a488034c411a6721595ecc67..7495e0e8beedad59fff24ebf189b58b3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c62039ae7 100644 +index 2d521598a6c02f8c64bf64e5abb0a23b65efb73a..dfe8c4e6c904e0153e7874392098b207abcc5e38 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,8 +117,11 @@ public class PurpurWorldConfig { @@ -518,7 +518,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c } public boolean frogRidable = false; -@@ -1374,6 +1399,7 @@ public class PurpurWorldConfig { +@@ -1380,6 +1405,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = true; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -526,7 +526,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1384,6 +1410,7 @@ public class PurpurWorldConfig { +@@ -1390,6 +1416,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -534,7 +534,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c } public boolean piglinBruteRidable = false; -@@ -1406,6 +1433,7 @@ public class PurpurWorldConfig { +@@ -1412,6 +1439,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = true; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -542,7 +542,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1416,6 +1444,7 @@ public class PurpurWorldConfig { +@@ -1422,6 +1450,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -550,7 +550,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c } public boolean polarBearRidable = false; -@@ -1462,6 +1491,7 @@ public class PurpurWorldConfig { +@@ -1468,6 +1497,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -558,7 +558,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1475,12 +1505,14 @@ public class PurpurWorldConfig { +@@ -1481,12 +1511,14 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -573,7 +573,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1491,6 +1523,7 @@ public class PurpurWorldConfig { +@@ -1497,6 +1529,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -581,7 +581,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c } public boolean salmonRidable = false; -@@ -1512,6 +1545,7 @@ public class PurpurWorldConfig { +@@ -1518,6 +1551,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -589,7 +589,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1523,6 +1557,7 @@ public class PurpurWorldConfig { +@@ -1529,6 +1563,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -597,7 +597,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c } public boolean shulkerRidable = false; -@@ -1545,6 +1580,7 @@ public class PurpurWorldConfig { +@@ -1551,6 +1586,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = true; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -605,7 +605,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1555,6 +1591,7 @@ public class PurpurWorldConfig { +@@ -1561,6 +1597,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -613,7 +613,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c } public boolean skeletonRidable = false; -@@ -1631,6 +1668,7 @@ public class PurpurWorldConfig { +@@ -1637,6 +1674,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -621,7 +621,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1648,6 +1686,7 @@ public class PurpurWorldConfig { +@@ -1654,6 +1692,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -629,23 +629,23 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c } public boolean snifferRidable = false; -@@ -1832,6 +1871,7 @@ public class PurpurWorldConfig { - public boolean villagerCanBeLeashed = false; - public boolean villagerCanBreed = true; +@@ -1840,6 +1879,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; + public boolean villagerClericsFarmWarts = false; + public boolean villagerClericFarmersThrowWarts = true; + public boolean villagerBypassMobGriefing = false; private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1846,6 +1886,7 @@ public class PurpurWorldConfig { - villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); - villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); +@@ -1856,6 +1896,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); + villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); + villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); + villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); } public boolean vindicatorRidable = false; -@@ -1918,6 +1959,7 @@ public class PurpurWorldConfig { +@@ -1928,6 +1969,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -653,7 +653,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1935,6 +1977,7 @@ public class PurpurWorldConfig { +@@ -1945,6 +1987,7 @@ public class PurpurWorldConfig { witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -661,7 +661,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c } public boolean witherSkeletonRidable = false; -@@ -2006,6 +2049,7 @@ public class PurpurWorldConfig { +@@ -2016,6 +2059,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -669,7 +669,7 @@ index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2021,6 +2065,7 @@ public class PurpurWorldConfig { +@@ -2031,6 +2075,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 97% rename from patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch index 2189b1125..573c2f6bf 100644 --- a/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,7 +22,7 @@ index 6bc29eeb5771a3dc9aa23c7d184c895717797b36..244857755f269eedd57d1c8d4657b4b4 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 86ad2600050ad695942ed3fdd5af910d5d6d8db0..3e09fc10c8fdad548f183e624dc46264ba4236ca 100644 +index dfe8c4e6c904e0153e7874392098b207abcc5e38..4cc37f929b9875e52e029be163f4725f289d1aa9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -120,6 +120,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch similarity index 99% rename from patches/server/0122-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0124-Add-EntityTeleportHinderedEvent.patch index 7c1bc2e90..d9abd45fd 100644 --- a/patches/server/0122-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0124-Add-EntityTeleportHinderedEvent.patch @@ -104,7 +104,7 @@ index cf82afb7949a0031c1b656149e583c4075362211..d65147f864dc75475cbb893fdcc9b391 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3e09fc10c8fdad548f183e624dc46264ba4236ca..a354a971ab9fcbd644e3673e0e6464a53cb02f6e 100644 +index 4cc37f929b9875e52e029be163f4725f289d1aa9..f0ac7b1e9157870c396f7abdbc66363e6c609029 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/server/0123-Farmland-trampling-changes.patch b/patches/server/0125-Farmland-trampling-changes.patch similarity index 97% rename from patches/server/0123-Farmland-trampling-changes.patch rename to patches/server/0125-Farmland-trampling-changes.patch index aa8ff2709..54e0f5cfe 100644 --- a/patches/server/0123-Farmland-trampling-changes.patch +++ b/patches/server/0125-Farmland-trampling-changes.patch @@ -37,7 +37,7 @@ index 090d232af0183c9c9ffeb4e75125514d827648f2..1064a13f37b991e60213b052e252a183 if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a354a971ab9fcbd644e3673e0e6464a53cb02f6e..f09bf510749064c34d4fb1401a68090529bb6d6b 100644 +index f0ac7b1e9157870c396f7abdbc66363e6c609029..56049d177f9e483bc68b694cb4c4d1031269eb91 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -463,10 +463,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0124-Movement-options-for-armor-stands.patch b/patches/server/0126-Movement-options-for-armor-stands.patch similarity index 98% rename from patches/server/0124-Movement-options-for-armor-stands.patch rename to patches/server/0126-Movement-options-for-armor-stands.patch index d8c498113..fbfa9dccd 100644 --- a/patches/server/0124-Movement-options-for-armor-stands.patch +++ b/patches/server/0126-Movement-options-for-armor-stands.patch @@ -66,7 +66,7 @@ index 9eb196ee4061bb4c5713f33e8b16d91ec52711cd..ffb3ae1d36dda5f521cf3b292d819cb3 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2ce13a7437dd7e879bb237e012c15159703b472a..b7c72e3cf37c99ca991138eef07479ac06a731b3 100644 +index 56049d177f9e483bc68b694cb4c4d1031269eb91..8fa017d79fc5f061baec537fe1666636615e15d5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -101,10 +101,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0125-Fix-stuck-in-portals.patch b/patches/server/0127-Fix-stuck-in-portals.patch similarity index 94% rename from patches/server/0125-Fix-stuck-in-portals.patch rename to patches/server/0127-Fix-stuck-in-portals.patch index 0c572af7b..1dfeb7fdb 100644 --- a/patches/server/0125-Fix-stuck-in-portals.patch +++ b/patches/server/0127-Fix-stuck-in-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index faab60eb03989338f5376c22148c98a0407a36a5..0ecd8b6bf8696b6aac50b91f16450ba5925c0115 100644 +index 81947e1dc48b91600f9b6417c13d153a41a9d502..026e3035167d41c18735cf57c63025bdadbb4ca0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1271,6 +1271,7 @@ public class ServerPlayer extends Player { @@ -37,7 +37,7 @@ index 8c2327fa0af4c2148cf6bab7f5960f81660c6259..10dca8fdfea6c4c98bd36684598fab42 this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b8514a938a9029ab9b1af8698beb12e1b33e039..705c6b3ae0db79d0ef0a9eaea504381145b4af21 100644 +index 8fa017d79fc5f061baec537fe1666636615e15d5..eb25f0210f8466430ed3bdc377ea6eb42edc78f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -337,6 +337,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch similarity index 96% rename from patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch index 0db3ef0b5..811ab4b8c 100644 --- a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch @@ -823,10 +823,10 @@ index b472309f97b24f1d7b97d8b6d464c479c2d602d5..e0ebc4c2d8dd718ce78d981a1d099e74 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); } 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 f1dfda45fc0e44a4e92b3e2f01718e9ef5c7fc06..c2d708f4f7b0fa340dc159c50fc9883b7c49ff67 100644 +index 29167ec21bc68e43c6505b6b1ee376d75a43c1ef..0894335fd9057184bb4f3ba5765ceec9d02828f7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -119,6 +119,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -138,6 +138,11 @@ public class Phantom extends FlyingMob implements Enemy { } // Purpur end @@ -1165,7 +1165,7 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e 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 52a84f354cc51b3ca875756514588b2e6309fc25..2936b4856c92dcbe6034f9ace2cb8b94887a4dd8 100644 +index 0378faa19053dbcb74315e3fd6f96a37a226de4e..7efc2d1c7fb65b17bdad0d212e660d71d5528cc9 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -187,6 +187,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1197,7 +1197,7 @@ index 41ddf073ecb8ea97cca8021390500d65866488a5..e2a9179bb7a5ecbc31d98a2410a09f5e 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 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e7bf35a14 100644 +index eb25f0210f8466430ed3bdc377ea6eb42edc78f1..1853fb621d58bb93c0c1f350325c43ca2d863351 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -569,11 +569,13 @@ public class PurpurWorldConfig { @@ -1762,7 +1762,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean phantomRidable = false; -@@ -1360,6 +1432,7 @@ public class PurpurWorldConfig { +@@ -1363,6 +1435,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1770,7 +1770,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1391,6 +1464,7 @@ public class PurpurWorldConfig { +@@ -1397,6 +1470,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1778,7 +1778,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean pigRidable = false; -@@ -1399,6 +1473,7 @@ public class PurpurWorldConfig { +@@ -1405,6 +1479,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1786,7 +1786,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1411,6 +1486,7 @@ public class PurpurWorldConfig { +@@ -1417,6 +1492,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1794,7 +1794,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean piglinRidable = false; -@@ -1418,6 +1494,7 @@ public class PurpurWorldConfig { +@@ -1424,6 +1500,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1802,7 +1802,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1429,12 +1506,14 @@ public class PurpurWorldConfig { +@@ -1435,12 +1512,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1817,7 +1817,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1445,6 +1524,7 @@ public class PurpurWorldConfig { +@@ -1451,6 +1530,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1825,7 +1825,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean pillagerRidable = false; -@@ -1452,6 +1532,7 @@ public class PurpurWorldConfig { +@@ -1458,6 +1538,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1833,7 +1833,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1463,6 +1544,7 @@ public class PurpurWorldConfig { +@@ -1469,6 +1550,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1841,7 +1841,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean polarBearRidable = false; -@@ -1472,6 +1554,7 @@ public class PurpurWorldConfig { +@@ -1478,6 +1560,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1849,7 +1849,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1486,11 +1569,13 @@ public class PurpurWorldConfig { +@@ -1492,11 +1575,13 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1863,7 +1863,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1500,6 +1585,7 @@ public class PurpurWorldConfig { +@@ -1506,6 +1591,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1871,7 +1871,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean rabbitRidable = false; -@@ -1510,6 +1596,7 @@ public class PurpurWorldConfig { +@@ -1516,6 +1602,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1879,7 +1879,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1524,6 +1611,7 @@ public class PurpurWorldConfig { +@@ -1530,6 +1617,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1887,7 +1887,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean ravagerRidable = false; -@@ -1531,6 +1619,7 @@ public class PurpurWorldConfig { +@@ -1537,6 +1625,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1895,7 +1895,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1542,11 +1631,13 @@ public class PurpurWorldConfig { +@@ -1548,11 +1637,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1909,7 +1909,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1556,6 +1647,7 @@ public class PurpurWorldConfig { +@@ -1562,6 +1653,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1917,7 +1917,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean sheepRidable = false; -@@ -1564,6 +1656,7 @@ public class PurpurWorldConfig { +@@ -1570,6 +1662,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1925,7 +1925,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1576,12 +1669,14 @@ public class PurpurWorldConfig { +@@ -1582,12 +1675,14 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1940,7 +1940,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1592,6 +1687,7 @@ public class PurpurWorldConfig { +@@ -1598,6 +1693,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1948,7 +1948,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean silverfishRidable = false; -@@ -1599,6 +1695,7 @@ public class PurpurWorldConfig { +@@ -1605,6 +1701,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1956,7 +1956,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1610,12 +1707,14 @@ public class PurpurWorldConfig { +@@ -1616,12 +1713,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1971,7 +1971,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1626,6 +1725,7 @@ public class PurpurWorldConfig { +@@ -1632,6 +1731,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1979,7 +1979,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean skeletonHorseRidableInWater = true; -@@ -1636,6 +1736,7 @@ public class PurpurWorldConfig { +@@ -1642,6 +1742,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1987,7 +1987,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -1651,6 +1752,7 @@ public class PurpurWorldConfig { +@@ -1657,6 +1758,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -1995,7 +1995,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean slimeRidable = false; -@@ -1660,6 +1762,7 @@ public class PurpurWorldConfig { +@@ -1666,6 +1768,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2003,7 +2003,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1673,6 +1776,7 @@ public class PurpurWorldConfig { +@@ -1679,6 +1782,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2011,7 +2011,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean snowGolemRidable = false; -@@ -1687,6 +1791,7 @@ public class PurpurWorldConfig { +@@ -1693,6 +1797,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2019,7 +2019,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1705,6 +1810,7 @@ public class PurpurWorldConfig { +@@ -1711,6 +1816,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2027,7 +2027,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean snifferRidable = false; -@@ -1726,6 +1832,7 @@ public class PurpurWorldConfig { +@@ -1732,6 +1838,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2035,7 +2035,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1738,12 +1845,14 @@ public class PurpurWorldConfig { +@@ -1744,12 +1851,14 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2050,7 +2050,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1754,12 +1863,14 @@ public class PurpurWorldConfig { +@@ -1760,12 +1869,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2065,7 +2065,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1770,6 +1881,7 @@ public class PurpurWorldConfig { +@@ -1776,6 +1887,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2073,7 +2073,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean striderRidable = false; -@@ -1778,6 +1890,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1896,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2081,7 +2081,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1790,6 +1903,7 @@ public class PurpurWorldConfig { +@@ -1796,6 +1909,7 @@ public class PurpurWorldConfig { striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2089,7 +2089,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean tadpoleRidable = false; -@@ -1811,6 +1925,7 @@ public class PurpurWorldConfig { +@@ -1817,6 +1931,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2097,7 +2097,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1829,11 +1944,13 @@ public class PurpurWorldConfig { +@@ -1835,11 +1950,13 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2111,7 +2111,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1843,6 +1960,7 @@ public class PurpurWorldConfig { +@@ -1849,6 +1966,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2119,7 +2119,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean turtleRidable = false; -@@ -1850,6 +1968,7 @@ public class PurpurWorldConfig { +@@ -1856,6 +1974,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2127,7 +2127,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1861,6 +1980,7 @@ public class PurpurWorldConfig { +@@ -1867,6 +1986,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2135,7 +2135,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean vexRidable = false; -@@ -1868,6 +1988,7 @@ public class PurpurWorldConfig { +@@ -1874,6 +1994,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2143,7 +2143,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1879,6 +2000,7 @@ public class PurpurWorldConfig { +@@ -1885,6 +2006,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2151,23 +2151,23 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean villagerRidable = false; -@@ -1890,6 +2012,7 @@ public class PurpurWorldConfig { - public boolean villagerCanBreed = true; - public int villagerBreedingTicks = 6000; +@@ -1898,6 +2020,7 @@ public class PurpurWorldConfig { + public boolean villagerClericsFarmWarts = false; + public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; + public boolean villagerTakeDamageFromWater = false; private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1905,6 +2028,7 @@ public class PurpurWorldConfig { - villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); - villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); +@@ -1915,6 +2038,7 @@ public class PurpurWorldConfig { + villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); + villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); + villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); } public boolean vindicatorRidable = false; -@@ -1912,6 +2036,7 @@ public class PurpurWorldConfig { +@@ -1922,6 +2046,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2175,7 +2175,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1923,6 +2048,7 @@ public class PurpurWorldConfig { +@@ -1933,6 +2058,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2183,7 +2183,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean wanderingTraderRidable = false; -@@ -1931,6 +2057,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +2067,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2191,7 +2191,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1943,6 +2070,7 @@ public class PurpurWorldConfig { +@@ -1953,6 +2080,7 @@ public class PurpurWorldConfig { wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2199,7 +2199,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean wardenRidable = false; -@@ -1958,6 +2086,7 @@ public class PurpurWorldConfig { +@@ -1968,6 +2096,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = true; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2207,7 +2207,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1968,6 +2097,7 @@ public class PurpurWorldConfig { +@@ -1978,6 +2107,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2215,7 +2215,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean witherRidable = false; -@@ -1978,6 +2108,7 @@ public class PurpurWorldConfig { +@@ -1988,6 +2118,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2223,7 +2223,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1996,12 +2127,14 @@ public class PurpurWorldConfig { +@@ -2006,12 +2137,14 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2238,7 +2238,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2012,6 +2145,7 @@ public class PurpurWorldConfig { +@@ -2022,6 +2155,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2246,7 +2246,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean wolfRidable = false; -@@ -2022,6 +2156,7 @@ public class PurpurWorldConfig { +@@ -2032,6 +2166,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2254,7 +2254,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2040,12 +2175,14 @@ public class PurpurWorldConfig { +@@ -2050,12 +2185,14 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2269,7 +2269,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2056,6 +2193,7 @@ public class PurpurWorldConfig { +@@ -2066,6 +2203,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2277,7 +2277,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean zombieRidable = false; -@@ -2068,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2078,6 +2216,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2285,7 +2285,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2084,6 +2223,7 @@ public class PurpurWorldConfig { +@@ -2094,6 +2233,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2293,7 +2293,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean zombieHorseRidableInWater = false; -@@ -2095,6 +2235,7 @@ public class PurpurWorldConfig { +@@ -2105,6 +2245,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2301,7 +2301,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2111,6 +2252,7 @@ public class PurpurWorldConfig { +@@ -2121,6 +2262,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2309,7 +2309,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean zombieVillagerRidable = false; -@@ -2121,6 +2263,7 @@ public class PurpurWorldConfig { +@@ -2131,6 +2273,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2317,7 +2317,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2130,6 +2273,7 @@ public class PurpurWorldConfig { +@@ -2140,6 +2283,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2325,7 +2325,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e } public boolean zombifiedPiglinRidable = false; -@@ -2141,6 +2285,7 @@ public class PurpurWorldConfig { +@@ -2151,6 +2295,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2333,7 +2333,7 @@ index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2156,5 +2301,6 @@ public class PurpurWorldConfig { +@@ -2166,5 +2311,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0127-Config-to-always-tame-in-Creative.patch b/patches/server/0129-Config-to-always-tame-in-Creative.patch similarity index 97% rename from patches/server/0127-Config-to-always-tame-in-Creative.patch rename to patches/server/0129-Config-to-always-tame-in-Creative.patch index c588f9d0b..6a89f74d0 100644 --- a/patches/server/0127-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0129-Config-to-always-tame-in-Creative.patch @@ -46,7 +46,7 @@ index a2dafa064697219fcfe7824ba3ca81396063ecb2..08935a1f2c4a3f43483719686e5baab5 this.level().broadcastEntityEvent(this, (byte) 7); } else { 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 4cd58a67c0af8019e802812c1e2ff893591d4c5f..79e67987f8077133f447ba5c7e1d5edb676e18e8 100644 +index 0ab3e4a854fd1c5369fc734981d16fa6b844807f..b2902e01ff2e9add8258bfd0b32d000209208f52 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -543,7 +543,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -59,7 +59,7 @@ index 4cd58a67c0af8019e802812c1e2ff893591d4c5f..79e67987f8077133f447ba5c7e1d5edb this.navigation.stop(); this.setTarget((LivingEntity) null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a902a1fff34382032fd56a6672b2c7225378527c..908f7d4193e987550fb6ecf9b132fc35deb389b1 100644 +index 1853fb621d58bb93c0c1f350325c43ca2d863351..8ba4b14265597e5433825dddae108a9bfc9e408a 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/server/0128-End-crystal-explosion-options.patch b/patches/server/0130-End-crystal-explosion-options.patch similarity index 95% rename from patches/server/0128-End-crystal-explosion-options.patch rename to patches/server/0130-End-crystal-explosion-options.patch index 53eef5f97..d581898cf 100644 --- a/patches/server/0128-End-crystal-explosion-options.patch +++ b/patches/server/0130-End-crystal-explosion-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] End crystal explosion options diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 5465711d486e5f265a26042031e895fb09e30608..ada7eba2beca5b0897fa2eb3567a639573f4e18d 100644 +index 767cd1dad6bb9857501abe04f5023ca3ffa5fdd2..ee5ba341d481d5a0fa874c3c707398c9c1eb1ed4 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -42,6 +42,22 @@ public class EndCrystal extends Entity { +@@ -48,6 +48,22 @@ public class EndCrystal extends Entity { this.setPos(x, y, z); } @@ -31,7 +31,7 @@ index 5465711d486e5f265a26042031e895fb09e30608..ada7eba2beca5b0897fa2eb3567a6395 @Override protected Entity.MovementEmission getMovementEmission() { return Entity.MovementEmission.NONE; -@@ -124,17 +140,19 @@ public class EndCrystal extends Entity { +@@ -173,17 +189,19 @@ public class EndCrystal extends Entity { // CraftBukkit end this.remove(Entity.RemovalReason.KILLED); if (!source.is(DamageTypeTags.IS_EXPLOSION)) { @@ -54,7 +54,7 @@ index 5465711d486e5f265a26042031e895fb09e30608..ada7eba2beca5b0897fa2eb3567a6395 this.onDestroyedBy(source); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9d25a55c797d3ed36a0fd6f1d1fd62c7c6647fa9..1aee23f75e0ab74909c853a288c481376b8a8e2a 100644 +index 8ba4b14265597e5433825dddae108a9bfc9e408a..81d720ae34e0daa6b55c46dd2f65464abe9e87a5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -470,6 +470,43 @@ public class PurpurWorldConfig { diff --git a/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 92% rename from patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index a3ab5ddf1..ff577deb7 100644 --- a/patches/server/0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -17,7 +17,7 @@ index f90b0ae4678da2ffa7d0a693003e05191d07f4bf..8a8895abe609b3be02aa896c40e4a2a2 } 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 17e44da8b4419ae19f0205e7208b450e68607c79..faa77256f116d2b9c9ad931238d10a994c63c484 100644 +index 94027ef3f833c7170a99a8437740b7f99f30ab81..1f9a57c4fd251e2969b49a883ee12d3cf8ac5914 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 @@ -742,6 +742,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -29,7 +29,7 @@ index 17e44da8b4419ae19f0205e7208b450e68607c79..faa77256f116d2b9c9ad931238d10a99 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2a8338e4ddb765349e373f9de0f6c82ba44a1c89..b40c2439ec48255d6d46db4af4d0df2b2e5a3a7b 100644 +index 81d720ae34e0daa6b55c46dd2f65464abe9e87a5..d0f08bd9028bdc1720a3bc47e82a1fd8103f2ffe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -946,6 +946,7 @@ public class PurpurWorldConfig { @@ -48,7 +48,7 @@ index 2a8338e4ddb765349e373f9de0f6c82ba44a1c89..b40c2439ec48255d6d46db4af4d0df2b } public boolean endermanRidable = false; -@@ -2148,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2158,6 +2160,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index 2a8338e4ddb765349e373f9de0f6c82ba44a1c89..b40c2439ec48255d6d46db4af4d0df2b private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2167,6 +2170,7 @@ public class PurpurWorldConfig { +@@ -2177,6 +2180,7 @@ public class PurpurWorldConfig { witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); diff --git a/patches/server/0130-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch similarity index 96% rename from patches/server/0130-Dont-run-with-scissors.patch rename to patches/server/0132-Dont-run-with-scissors.patch index da07733a8..177cb8c20 100644 --- a/patches/server/0130-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index bfd743a780ee88971a2283ef829ca790faaffd32..4e093e54c3feec6a46a97c24e68c1ee49dac29ca 100644 +index 85c9a892dd15e8bafc65146e1dcb33e508e9fc05..4ac0941974e6e8aeaea88ce0fc589381f3c0eaad 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1693,6 +1693,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -62,7 +62,7 @@ index 70db296b80b98b378917f68037420ae150e14adb..3fc967279daaf6eb2b2d80fcad57b5b6 public static String serverModName = "Purpur"; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7c0279f34f380e42c8f0f1dbb8806266655aa6f7..7d0feb23c572580eaeb31bc6e150181f06581d45 100644 +index d0f08bd9028bdc1720a3bc47e82a1fd8103f2ffe..b2bbf47108df2d1cefa888674ae62d59dd1df6c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -199,6 +199,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0131-One-Punch-Man.patch b/patches/server/0133-One-Punch-Man.patch similarity index 96% rename from patches/server/0131-One-Punch-Man.patch rename to patches/server/0133-One-Punch-Man.patch index 5dbb9452c..b0454013e 100644 --- a/patches/server/0131-One-Punch-Man.patch +++ b/patches/server/0133-One-Punch-Man.patch @@ -30,7 +30,7 @@ index 182436020d2376101f5863f80b4b6d3d9ebd6a2e..234b92b189e921768ea83ef4f0c12826 if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 56843046b160360e14847322a9d2f5186577eaf8..502333b443d5c8b5a2f21b8c60f651a640eb83c7 100644 +index b2bbf47108df2d1cefa888674ae62d59dd1df6c1..99df4cbc3317bc6223e70e7f53439557bf4447b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -348,6 +348,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 98% rename from patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 74e07cc9d..ea4361c05 100644 --- a/patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,7 +43,7 @@ index 749ab72edc0d2e9c6f1161415ab8d59d3d6ca976..897c202c0905040072a06fdfa2032a7f // Paper end if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 502333b443d5c8b5a2f21b8c60f651a640eb83c7..4ca7563d46d96b2591e9f90338070c031c087b1d 100644 +index 99df4cbc3317bc6223e70e7f53439557bf4447b7..c957ff745cf466b0bb9e3a00bf811349b56a4188 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -203,6 +203,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 92% rename from patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch index eb1695f0d..44abc59a3 100644 --- a/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0ecd8b6bf8696b6aac50b91f16450ba5925c0115..af916fb00a9112231327abc641fa2bf5897dbde8 100644 +index 026e3035167d41c18735cf57c63025bdadbb4ca0..0c22824240c260c86237a47680c1c2492a2201e2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1429,7 +1429,7 @@ public class ServerPlayer extends Player { @@ -18,7 +18,7 @@ index 0ecd8b6bf8696b6aac50b91f16450ba5925c0115..af916fb00a9112231327abc641fa2bf5 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4ca7563d46d96b2591e9f90338070c031c087b1d..9e5e3d2b14569d15fc3994494889aea416f252a9 100644 +index c957ff745cf466b0bb9e3a00bf811349b56a4188..5829cd48c964ead93500a31b145ddf0370287ee4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -357,6 +357,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0134-Add-back-player-spawned-endermite-API.patch b/patches/server/0136-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/server/0134-Add-back-player-spawned-endermite-API.patch rename to patches/server/0136-Add-back-player-spawned-endermite-API.patch diff --git a/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 97% rename from patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch index 153792db0..ec6f0b74c 100644 --- a/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,7 +18,7 @@ index 002ea677568e4d4a13509bb5c880341a742dac83..1e544c8fa21d028f7c3ac66d66c2362c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9e5e3d2b14569d15fc3994494889aea416f252a9..217e5cf9ea0fde511170cd6522ec9605dff9ac78 100644 +index 5829cd48c964ead93500a31b145ddf0370287ee4..387ffc7265eb312a938f9ea5a8bd34048da9985b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -996,6 +996,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 96% rename from patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index bf5a9bc43..dbc309a84 100644 --- a/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,7 +20,7 @@ index 1e544c8fa21d028f7c3ac66d66c2362c01326a54..6f7dc1f55d52a0957dc0f3b19644e3dc } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 217e5cf9ea0fde511170cd6522ec9605dff9ac78..45cb176b9ab23b9451d68fbb9165cdbcf84ad5b3 100644 +index 387ffc7265eb312a938f9ea5a8bd34048da9985b..ef805260ea5ea8e4ada93be50abc43b8f6ab277c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -998,6 +998,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0137-Tick-fluids-config.patch b/patches/server/0139-Tick-fluids-config.patch similarity index 97% rename from patches/server/0137-Tick-fluids-config.patch rename to patches/server/0139-Tick-fluids-config.patch index 0a1877ac8..a38797216 100644 --- a/patches/server/0137-Tick-fluids-config.patch +++ b/patches/server/0139-Tick-fluids-config.patch @@ -36,7 +36,7 @@ index bbabe4ad8afcc3a2069f6e9d4a9adcb643266894..55419bd653f7f5391fa13cd15a0b00fb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7786ff6e4adb8180090eb17298fa7147d4b1848f..0b6c9ed87baf5f81c9a4b43355ad81825f40c5f8 100644 +index ef805260ea5ea8e4ada93be50abc43b8f6ab277c..998947e5f110e00af1dfcc5043be936ef460ef71 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -131,6 +131,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0138-Config-to-disable-Llama-caravans.patch b/patches/server/0140-Config-to-disable-Llama-caravans.patch similarity index 97% rename from patches/server/0138-Config-to-disable-Llama-caravans.patch rename to patches/server/0140-Config-to-disable-Llama-caravans.patch index 28c9d71b2..408919ab4 100644 --- a/patches/server/0138-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0140-Config-to-disable-Llama-caravans.patch @@ -32,7 +32,7 @@ index 2c5f4ead1141269a029176140c4df848c75b9620..26ed1eef3b38e643dfc6738e4b7880c9 this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 62df1c335f8c6923938768db59f56fec3e1bf939..eb698e1443f0abc3827b08840674d0e92cbb6dd3 100644 +index 998947e5f110e00af1dfcc5043be936ef460ef71..40f19ca373028a84e46d4ad9bc2b836968d677d5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1330,6 +1330,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0139-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch similarity index 97% rename from patches/server/0139-Config-to-make-Creepers-explode-on-death.patch rename to patches/server/0141-Config-to-make-Creepers-explode-on-death.patch index 0d4b7f995..c6629f6fa 100644 --- a/patches/server/0139-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0141-Config-to-make-Creepers-explode-on-death.patch @@ -50,7 +50,7 @@ index 6e80ea775596c5804b674234b7d59f4c941a49dc..56aaf99a94944de42f437e18806381e3 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 513b98b48e23f1773818f03a0c12d1c997c001b4..432f6e6a4e25086eaa7be0865ac1de54a0994cf0 100644 +index 40f19ca373028a84e46d4ad9bc2b836968d677d5..f6f374858a16135347da30d86ba051569062c7d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -850,6 +850,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0140-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0142-Configurable-ravager-griefable-blocks-list.patch similarity index 95% rename from patches/server/0140-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0142-Configurable-ravager-griefable-blocks-list.patch index abd71f448..e7eaa1d1a 100644 --- a/patches/server/0140-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0142-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index cf7007cabe4ba7505f2728e79e4c56e2d1bc878b..c431ec19212821ba7722c073e5ee6ad7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 336fdbe44d9d0dfbfd88dcbcd51d4c82ad66df03..339038dcf393653de973b55c090672b2f2f8fa26 100644 +index f6f374858a16135347da30d86ba051569062c7d4..29d0653160a3035e0a7dfea906cf2ab7fc67205e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1699,6 +1699,7 @@ public class PurpurWorldConfig { +@@ -1705,6 +1705,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 336fdbe44d9d0dfbfd88dcbcd51d4c82ad66df03..339038dcf393653de973b55c090672b2 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1711,6 +1712,23 @@ public class PurpurWorldConfig { +@@ -1717,6 +1718,23 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); diff --git a/patches/server/0141-Sneak-to-bulk-process-composter.patch b/patches/server/0143-Sneak-to-bulk-process-composter.patch similarity index 98% rename from patches/server/0141-Sneak-to-bulk-process-composter.patch rename to patches/server/0143-Sneak-to-bulk-process-composter.patch index a02f6f5fe..2c1cac0f2 100644 --- a/patches/server/0141-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0143-Sneak-to-bulk-process-composter.patch @@ -90,7 +90,7 @@ index 87153b5576fed05103183a9860d804c2c8cfbe1c..e8ee608aa5e352d741694f50cdf77f06 int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 339038dcf393653de973b55c090672b2f2f8fa26..167258202d385cce9567c0cc6c0d2ff9d5b226f5 100644 +index 29d0653160a3035e0a7dfea906cf2ab7fc67205e..d221ad77f0dee2a8cd7f08f368679183038a88ec 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -485,6 +485,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0142-Config-for-skipping-night.patch b/patches/server/0144-Config-for-skipping-night.patch similarity index 96% rename from patches/server/0142-Config-for-skipping-night.patch rename to patches/server/0144-Config-for-skipping-night.patch index 790e3fb70..9b768eb79 100644 --- a/patches/server/0142-Config-for-skipping-night.patch +++ b/patches/server/0144-Config-for-skipping-night.patch @@ -18,7 +18,7 @@ index 3b512beac50bc5a2405ca3287b08e7ffcb620313..a7faa7e1cc78e900ec09889e2a683a3e j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4531d6d54eab78c87961641a0b023117e685aa5b..9c35e7cadb723553bd21851d391b0297e5382b61 100644 +index d221ad77f0dee2a8cd7f08f368679183038a88ec..80b76a20848321e982e8b542aa9f5295cfd7e3dd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -360,6 +360,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0143-Add-config-for-villager-trading.patch b/patches/server/0145-Add-config-for-villager-trading.patch similarity index 87% rename from patches/server/0143-Add-config-for-villager-trading.patch rename to patches/server/0145-Add-config-for-villager-trading.patch index 538d5ae35..667bcabfe 100644 --- a/patches/server/0143-Add-config-for-villager-trading.patch +++ b/patches/server/0145-Add-config-for-villager-trading.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config for villager trading 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 2936b4856c92dcbe6034f9ace2cb8b94887a4dd8..b71013a6dd5a713543c042199273ddae1feda4b9 100644 +index 7efc2d1c7fb65b17bdad0d212e660d71d5528cc9..d78240487b934921509a26b7fca0bce0aaaa40b8 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -365,7 +365,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -31,26 +31,26 @@ index e2a9179bb7a5ecbc31d98a2410a09f5e2107234b..8fd8778e918566504666213a102a7ee2 this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1625368c842497a0acd650dfaa0d284edc661548..6632e1e48483b512a7af0f1308116d852ac2a900 100644 +index 80b76a20848321e982e8b542aa9f5295cfd7e3dd..f2efffa40204c658375f3ebba8ab710bf3cacb80 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2117,6 +2117,7 @@ public class PurpurWorldConfig { - public int villagerBreedingTicks = 6000; +@@ -2125,6 +2125,7 @@ public class PurpurWorldConfig { + public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; + public boolean villagerAllowTrading = true; private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2133,6 +2134,7 @@ public class PurpurWorldConfig { - villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); +@@ -2143,6 +2144,7 @@ public class PurpurWorldConfig { + villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); + villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); } public boolean vindicatorRidable = false; -@@ -2162,6 +2164,7 @@ public class PurpurWorldConfig { +@@ -2172,6 +2174,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -58,7 +58,7 @@ index 1625368c842497a0acd650dfaa0d284edc661548..6632e1e48483b512a7af0f1308116d85 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2175,6 +2178,7 @@ public class PurpurWorldConfig { +@@ -2185,6 +2188,7 @@ public class PurpurWorldConfig { wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); diff --git a/patches/server/0144-Allow-infinity-on-crossbows.patch b/patches/server/0146-Allow-infinity-on-crossbows.patch similarity index 100% rename from patches/server/0144-Allow-infinity-on-crossbows.patch rename to patches/server/0146-Allow-infinity-on-crossbows.patch diff --git a/patches/server/0145-Drowning-Settings.patch b/patches/server/0147-Drowning-Settings.patch similarity index 97% rename from patches/server/0145-Drowning-Settings.patch rename to patches/server/0147-Drowning-Settings.patch index 2c178f2fa..2fa422410 100644 --- a/patches/server/0145-Drowning-Settings.patch +++ b/patches/server/0147-Drowning-Settings.patch @@ -40,7 +40,7 @@ index 234b92b189e921768ea83ef4f0c128266735cc6e..2f48ddb7d2731bd05d149d6286ae8292 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6632e1e48483b512a7af0f1308116d852ac2a900..60841d2da5b3ad0912fb7931d238afa4a574dfc3 100644 +index f2efffa40204c658375f3ebba8ab710bf3cacb80..40cc8ba677500053e3e2e95b83ba88527ebd21e5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -166,6 +166,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0146-Break-individual-slabs-when-sneaking.patch b/patches/server/0148-Break-individual-slabs-when-sneaking.patch similarity index 97% rename from patches/server/0146-Break-individual-slabs-when-sneaking.patch rename to patches/server/0148-Break-individual-slabs-when-sneaking.patch index 8f98d4b54..e12059ac0 100644 --- a/patches/server/0146-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0148-Break-individual-slabs-when-sneaking.patch @@ -47,7 +47,7 @@ index 18b603d646081926343dea108b55d641df1c2c34..370772b1297b78bcc7419684015830a8 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0b3c5a3bf1b9d784b20a5a0fa2cefda22b92dab5..99e1b77a0160507022af41168853fd993fcd2ba4 100644 +index 40cc8ba677500053e3e2e95b83ba88527ebd21e5..cd2de2f0a6aeda4b87f18e97e2c5999e1fd3246e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -606,6 +606,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 96% rename from patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch index 0ded95e9f..7980fffad 100644 --- a/patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0149-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,7 +24,7 @@ index 55c245d0dfa369dc6de2197ae37335fba4fae4ae..c9b40515f4c2ff1eedfc9510930c3bae return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 25d224c38469e82957e924125153d8dc4fef1db3..d3e8c6c7e7088685cadf693e49d797234245c50f 100644 +index cd2de2f0a6aeda4b87f18e97e2c5999e1fd3246e..d3f930cc1892e6d2853e8d2e938534c69d10e3a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -571,6 +571,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 92% rename from patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch index b864ce141..f8e966382 100644 --- a/patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0150-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to show Armor Stand arms on spawn diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index cfe4c6f3316a9bcb3fb77bbb839525bed5527b17..d3bb4bb75e00a3f9507ce3699e55edbd6027d89b 100644 +index ffb3ae1d36dda5f521cf3b292d819cb354844806..8ba5701ebec928ba52d88a6671332c80e07f384c 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -114,6 +114,7 @@ public class ArmorStand extends LivingEntity { @@ -17,7 +17,7 @@ index cfe4c6f3316a9bcb3fb77bbb839525bed5527b17..d3bb4bb75e00a3f9507ce3699e55edbd public ArmorStand(Level world, double x, double y, double z) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d3e8c6c7e7088685cadf693e49d797234245c50f..7fd0f37cfb1abf85adf84f5b7f1ed0769eb49208 100644 +index d3f930cc1892e6d2853e8d2e938534c69d10e3a2..f675a120cb0e41880b277db60974f2d016fcc4fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -104,6 +104,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0149-Option-to-make-doors-require-redstone.patch b/patches/server/0151-Option-to-make-doors-require-redstone.patch similarity index 98% rename from patches/server/0149-Option-to-make-doors-require-redstone.patch rename to patches/server/0151-Option-to-make-doors-require-redstone.patch index 8b11ee7fb..344c2bc1f 100644 --- a/patches/server/0149-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0151-Option-to-make-doors-require-redstone.patch @@ -67,7 +67,7 @@ index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a30 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 76a7627d45da058437aa397161a3a6d2276bb631..e6a80597801bd0633c880b4470cda6bbec788646 100644 +index f675a120cb0e41880b277db60974f2d016fcc4fb..5c53c323296fc264f6a436b78c7def11deb742d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -510,6 +510,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch similarity index 98% rename from patches/server/0150-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0152-Config-to-allow-for-unsafe-enchants.patch index f7775f43a..365c52cd7 100644 --- a/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0152-Config-to-allow-for-unsafe-enchants.patch @@ -70,7 +70,7 @@ index 6fc5699ad90127dc48fa9ff5cb6ba5367031ce83..c179fd1ee55116e1bbdd8f8fadd18825 ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index b70e57a78bbe9084746ba9a4bc896ad2b1636e8f..20aed640cf6afd6d6a24f42adbedc99a044f236f 100644 +index 961aca57888de6fe7ea249c2a7596c9863c1effe..4f8fa99211257930adb2ae13505ba5d32c1999ba 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -1198,6 +1198,12 @@ public final class ItemStack { diff --git a/patches/server/0151-Projectile-offset-config.patch b/patches/server/0153-Projectile-offset-config.patch similarity index 99% rename from patches/server/0151-Projectile-offset-config.patch rename to patches/server/0153-Projectile-offset-config.patch index 5b8832804..0baae161e 100644 --- a/patches/server/0151-Projectile-offset-config.patch +++ b/patches/server/0153-Projectile-offset-config.patch @@ -96,7 +96,7 @@ index 06c2f30b77a2c8aecc65e0c305f643d53798f364..6d1573161f0d8c7999f84925ba7bbf53 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 65f6616737e8936e71160b71d410b1a177be1405..e119419b4ac261a439afc605ef26d450101a3fd3 100644 +index 5c53c323296fc264f6a436b78c7def11deb742d2..bf2dc4fe37df03728d711952eeabf3882b61c22e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -428,6 +428,23 @@ public class PurpurWorldConfig { diff --git a/patches/server/0152-Config-for-powered-rail-activation-distance.patch b/patches/server/0154-Config-for-powered-rail-activation-distance.patch similarity index 94% rename from patches/server/0152-Config-for-powered-rail-activation-distance.patch rename to patches/server/0154-Config-for-powered-rail-activation-distance.patch index 42df2052c..5e6d958de 100644 --- a/patches/server/0152-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0154-Config-for-powered-rail-activation-distance.patch @@ -18,7 +18,7 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e119419b4ac261a439afc605ef26d450101a3fd3..7206fa9f4fff69068015f2b4801f33836a48e035 100644 +index bf2dc4fe37df03728d711952eeabf3882b61c22e..d2305b276252c76ed90aeef0a0e245261b6be348 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -621,6 +621,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0153-Piglin-portal-spawn-modifier.patch b/patches/server/0155-Piglin-portal-spawn-modifier.patch similarity index 93% rename from patches/server/0153-Piglin-portal-spawn-modifier.patch rename to patches/server/0155-Piglin-portal-spawn-modifier.patch index 1c35a02c6..6b71c4980 100644 --- a/patches/server/0153-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0155-Piglin-portal-spawn-modifier.patch @@ -31,10 +31,10 @@ index 2c085c4a154cb0f8a1d38453f43474a764398784..589b437e7c97c846410f293e2f014bdc pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 75cea7300dee21af13cf448f75361b69ae9d5517..7833464a3c8e4ec96abf5da8728024b3677a2d38 100644 +index d2305b276252c76ed90aeef0a0e245261b6be348..a0fd04f892e39805a655216e029bb077847f809c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1636,6 +1636,7 @@ public class PurpurWorldConfig { +@@ -1642,6 +1642,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 75cea7300dee21af13cf448f75361b69ae9d5517..7833464a3c8e4ec96abf5da8728024b3 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1648,6 +1649,7 @@ public class PurpurWorldConfig { +@@ -1654,6 +1655,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); diff --git a/patches/server/0154-Config-to-change-max-number-of-bees.patch b/patches/server/0156-Config-to-change-max-number-of-bees.patch similarity index 100% rename from patches/server/0154-Config-to-change-max-number-of-bees.patch rename to patches/server/0156-Config-to-change-max-number-of-bees.patch diff --git a/patches/server/0157-Configurable-sponge-absorption.patch b/patches/server/0157-Configurable-sponge-absorption.patch new file mode 100644 index 000000000..73b2582bf --- /dev/null +++ b/patches/server/0157-Configurable-sponge-absorption.patch @@ -0,0 +1,40 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Encode42 +Date: Wed, 24 Mar 2021 20:30:37 -0400 +Subject: [PATCH] Configurable sponge absorption + +Allows the total area and radius of water blocks the sponge can absorb to be changed. + +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 4bce895268542531598a01a1bccd8ac1ed703b7d..e4e926dc89f843886d0df5da31e00053284f5dae 100644 +--- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +@@ -48,7 +48,7 @@ public class SpongeBlock extends Block { + + private boolean removeWaterBreadthFirstSearch(Level world, BlockPos pos) { + BlockStateListPopulator blockList = new BlockStateListPopulator(world); // CraftBukkit - Use BlockStateListPopulator +- BlockPos.breadthFirstTraversal(pos, 6, 65, (blockposition1, consumer) -> { ++ BlockPos.breadthFirstTraversal(pos, world.purpurConfig.spongeAbsorptionRadius, 65, (blockposition1, consumer) -> { // Purpur + Direction[] aenumdirection = SpongeBlock.ALL_DIRECTIONS; + 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 a0fd04f892e39805a655216e029bb077847f809c..644652189ca1b173776537fa9d17aa31b38cdfe1 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -657,6 +657,13 @@ public class PurpurWorldConfig { + spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); + } + ++ public int spongeAbsorptionArea = 64; ++ public int spongeAbsorptionRadius = 6; ++ private void spongeSettings() { ++ spongeAbsorptionArea = getInt("blocks.sponge.absorption.area", spongeAbsorptionArea); ++ spongeAbsorptionRadius = getInt("blocks.sponge.absorption.radius", spongeAbsorptionRadius); ++ } ++ + public boolean turtleEggsBreakFromExpOrbs = true; + public boolean turtleEggsBreakFromItems = true; + public boolean turtleEggsBreakFromMinecarts = true; diff --git a/patches/server/0155-Config-for-wither-explosion-radius.patch b/patches/server/0158-Config-for-wither-explosion-radius.patch similarity index 92% rename from patches/server/0155-Config-for-wither-explosion-radius.patch rename to patches/server/0158-Config-for-wither-explosion-radius.patch index a2731f0d7..193929858 100644 --- a/patches/server/0155-Config-for-wither-explosion-radius.patch +++ b/patches/server/0158-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index 80b86d5dd68c3d288a1a61ea8aa1cba9d899aa1c..7847915fb90e45e44ba514957193fa7b if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7833464a3c8e4ec96abf5da8728024b3677a2d38..dbfe6549a0fcc6acd7b1ffb6385dc228b834ab8b 100644 +index 644652189ca1b173776537fa9d17aa31b38cdfe1..3ff04b2071b6a8d52fd122a39f215ff816eed393 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2275,6 +2275,7 @@ public class PurpurWorldConfig { +@@ -2292,6 +2292,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 7833464a3c8e4ec96abf5da8728024b3677a2d38..dbfe6549a0fcc6acd7b1ffb6385dc228 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2295,6 +2296,7 @@ public class PurpurWorldConfig { +@@ -2312,6 +2313,7 @@ public class PurpurWorldConfig { witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); diff --git a/patches/server/0156-Gamemode-extra-permissions.patch b/patches/server/0159-Gamemode-extra-permissions.patch similarity index 100% rename from patches/server/0156-Gamemode-extra-permissions.patch rename to patches/server/0159-Gamemode-extra-permissions.patch diff --git a/patches/server/0157-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch b/patches/server/0160-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch similarity index 96% rename from patches/server/0157-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch rename to patches/server/0160-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch index e93da4f79..288e649f2 100644 --- a/patches/server/0157-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch +++ b/patches/server/0160-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch @@ -18,7 +18,7 @@ index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..5e730bc9c8ff94b16ac2bf8567dda8ae Runnable afterAction = null; // Paper if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3243cf715d7f8a7d871d61a1308d09e8c543f8a3..6cb6d57c374cc11c9624d721e7309004852e1a6a 100644 +index 3ff04b2071b6a8d52fd122a39f215ff816eed393..40b7de2a34f835fab827f884384029a14b76e632 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -450,6 +450,21 @@ public class PurpurWorldConfig { diff --git a/patches/server/0158-Configurable-piston-push-limit.patch b/patches/server/0161-Configurable-piston-push-limit.patch similarity index 96% rename from patches/server/0158-Configurable-piston-push-limit.patch rename to patches/server/0161-Configurable-piston-push-limit.patch index 0f4494141..96f48d80c 100644 --- a/patches/server/0158-Configurable-piston-push-limit.patch +++ b/patches/server/0161-Configurable-piston-push-limit.patch @@ -36,7 +36,7 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6cb6d57c374cc11c9624d721e7309004852e1a6a..9c2c7ea17baa08165c9683853ebc7877d02c7464 100644 +index 40b7de2a34f835fab827f884384029a14b76e632..d6d023d6742abcbe4cfacf0ea2b12c8780015261 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -631,6 +631,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0159-Configurable-broadcast-settings.patch b/patches/server/0162-Configurable-broadcast-settings.patch similarity index 97% rename from patches/server/0159-Configurable-broadcast-settings.patch rename to patches/server/0162-Configurable-broadcast-settings.patch index 07e2e1e13..77e689836 100644 --- a/patches/server/0159-Configurable-broadcast-settings.patch +++ b/patches/server/0162-Configurable-broadcast-settings.patch @@ -17,7 +17,7 @@ index 52891c4a4260d1938f2f4565b5219ad303555638..69d349613f01ab0ac1890734657da529 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 7583d43ad95586ca584e44eaca52d9b1ee33e2be..6da83551f77354bd40a4fe8ace331eb24208f057 100644 +index 0c22824240c260c86237a47680c1c2492a2201e2..2f7edbf425ebf2985fdcd3f347cdf211b64d15ec 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1003,6 +1003,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0160-Configurable-mob-blindness.patch b/patches/server/0163-Configurable-mob-blindness.patch similarity index 97% rename from patches/server/0160-Configurable-mob-blindness.patch rename to patches/server/0163-Configurable-mob-blindness.patch index 29fb8e15c..dc2e853d6 100644 --- a/patches/server/0160-Configurable-mob-blindness.patch +++ b/patches/server/0163-Configurable-mob-blindness.patch @@ -28,7 +28,7 @@ index 2f48ddb7d2731bd05d149d6286ae8292dfbec94b..9cf87d4009e8d71d844cf1583a1457b4 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a8f5a3c7a756cb74cf065f1797b4a1e47b595236..1d30ead160227a6b6b0459c92aaf2134317f5538 100644 +index d6d023d6742abcbe4cfacf0ea2b12c8780015261..5fcbfa39b9a22e9ceae21bab71c7686ca7722c1d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -134,6 +134,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0161-Hide-hidden-players-from-entity-selector.patch b/patches/server/0164-Hide-hidden-players-from-entity-selector.patch similarity index 100% rename from patches/server/0161-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0164-Hide-hidden-players-from-entity-selector.patch diff --git a/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 92% rename from patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch index 30f0f1fc9..71c820358 100644 --- a/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0165-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index 56aaf99a94944de42f437e18806381e3978c305a..e2fba88438835f63605b81eeeff5345b if (!event.isCancelled()) { this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d521ca080cde008ae9da4737bfe94ea116154480..8bcba18465ca8257cf76a4bcd1110beb1c621243 100644 +index 5fcbfa39b9a22e9ceae21bab71c7686ca7722c1d..55b1a959eafccbdfcb812ab28dfb5e38d173e660 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -935,6 +935,7 @@ public class PurpurWorldConfig { +@@ -942,6 +942,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index d521ca080cde008ae9da4737bfe94ea116154480..8bcba18465ca8257cf76a4bcd1110beb private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -950,6 +951,7 @@ public class PurpurWorldConfig { +@@ -957,6 +958,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/server/0163-Iron-golem-calm-anger-options.patch b/patches/server/0166-Iron-golem-calm-anger-options.patch similarity index 96% rename from patches/server/0163-Iron-golem-calm-anger-options.patch rename to patches/server/0166-Iron-golem-calm-anger-options.patch index f01a97fbe..2e7469d0e 100644 --- a/patches/server/0163-Iron-golem-calm-anger-options.patch +++ b/patches/server/0166-Iron-golem-calm-anger-options.patch @@ -25,10 +25,10 @@ index 58539d29b8e2a8c0676cc574f64e7d61613e1451..1ffb8e1c386fc85796432281ac407a93 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a2cceab5518a48d87a6bbeb5bc9b87c96611c336..14a1150bb860af3e99ab67f5bbb44c791c80f0df 100644 +index 55b1a959eafccbdfcb812ab28dfb5e38d173e660..8116edb1eab9da68d86c33633f4558a474b25388 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1393,6 +1393,8 @@ public class PurpurWorldConfig { +@@ -1400,6 +1400,8 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public boolean ironGolemTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index a2cceab5518a48d87a6bbeb5bc9b87c96611c336..14a1150bb860af3e99ab67f5bbb44c79 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1405,6 +1407,8 @@ public class PurpurWorldConfig { +@@ -1412,6 +1414,8 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); diff --git a/patches/server/0164-Breedable-parrots.patch b/patches/server/0167-Breedable-parrots.patch similarity index 94% rename from patches/server/0164-Breedable-parrots.patch rename to patches/server/0167-Breedable-parrots.patch index 5a3b248b3..492f8a14a 100644 --- a/patches/server/0164-Breedable-parrots.patch +++ b/patches/server/0167-Breedable-parrots.patch @@ -50,10 +50,10 @@ index 08935a1f2c4a3f43483719686e5baab5063cdfce..bfae3b94ab035e1c27c988cfcc3b449c @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 14a1150bb860af3e99ab67f5bbb44c791c80f0df..eafba18eb4b52a571af814e82aee09710146ba88 100644 +index 8116edb1eab9da68d86c33633f4558a474b25388..460a9d7191caa63a896b39e6e4b72239bfd3d967 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1566,6 +1566,7 @@ public class PurpurWorldConfig { +@@ -1573,6 +1573,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index 14a1150bb860af3e99ab67f5bbb44c791c80f0df..eafba18eb4b52a571af814e82aee0971 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1578,6 +1579,7 @@ public class PurpurWorldConfig { +@@ -1585,6 +1586,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); diff --git a/patches/server/0165-Configurable-powered-rail-boost-modifier.patch b/patches/server/0168-Configurable-powered-rail-boost-modifier.patch similarity index 96% rename from patches/server/0165-Configurable-powered-rail-boost-modifier.patch rename to patches/server/0168-Configurable-powered-rail-boost-modifier.patch index a460e8f19..4b74523a2 100644 --- a/patches/server/0165-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0168-Configurable-powered-rail-boost-modifier.patch @@ -18,7 +18,7 @@ index 5cdcc5792f19766d2d55d16859f8e0f68bd6479b..b99b94c6ec4767aba16d82eaca8b2761 Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eafba18eb4b52a571af814e82aee09710146ba88..f59b3a99e460859f1744e9360a4a7dd31e1aeec5 100644 +index 460a9d7191caa63a896b39e6e4b72239bfd3d967..afc59c56d8d60a51ddd6ce1a9f9f937d2398b381 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -277,6 +277,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0169-Add-config-change-multiplier-critical-damage-value.patch similarity index 92% rename from patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0169-Add-config-change-multiplier-critical-damage-value.patch index a59ad6201..94ff86b58 100644 --- a/patches/server/0166-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0169-Add-config-change-multiplier-critical-damage-value.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config change multiplier critical damage value diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index ca16f896ede5cfb957849ef3ad1f90f6518659dc..bb1cda93ae9e754acf20193100ce0de56bf47843 100644 +index 04e816f01db7d2de7ffa9bbaaa72daadaab34831..81ba8875f0077ac1be80533061bcb0e632c13ded 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -1313,7 +1313,7 @@ public abstract class Player extends LivingEntity { @@ -18,7 +18,7 @@ index ca16f896ede5cfb957849ef3ad1f90f6518659dc..bb1cda93ae9e754acf20193100ce0de5 f += f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f59b3a99e460859f1744e9360a4a7dd31e1aeec5..756517c6257bfb037b325fe6d53354a28156162b 100644 +index afc59c56d8d60a51ddd6ce1a9f9f937d2398b381..7b7a97a2cea5b4e6567a96e3b23366e8dd446171 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -376,6 +376,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0170-Option-to-disable-dragon-egg-teleporting.patch similarity index 95% rename from patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0170-Option-to-disable-dragon-egg-teleporting.patch index bc2d6fecf..b3daafa92 100644 --- a/patches/server/0167-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0170-Option-to-disable-dragon-egg-teleporting.patch @@ -19,7 +19,7 @@ index 7e1edcc7b9f170b7c649437c2f0dd78c0bab9be4..5f8ac1fdac2c334951261f2b9702f5e7 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b03653f7de9eb7c48ca998d51cd4982332f2c741..98a9088368f25eb7541a523b47a4c5cb033b0f53 100644 +index 7b7a97a2cea5b4e6567a96e3b23366e8dd446171..5660dacaa679b41e0a72daf09f6b2ae948377eef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -558,6 +558,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0168-Config-for-unverified-username-message.patch b/patches/server/0171-Config-for-unverified-username-message.patch similarity index 100% rename from patches/server/0168-Config-for-unverified-username-message.patch rename to patches/server/0171-Config-for-unverified-username-message.patch diff --git a/patches/server/0169-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0172-Make-anvil-cumulative-cost-configurable.patch similarity index 100% rename from patches/server/0169-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0172-Make-anvil-cumulative-cost-configurable.patch diff --git a/patches/server/0170-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0173-ShulkerBox-allow-oversized-stacks.patch similarity index 92% rename from patches/server/0170-ShulkerBox-allow-oversized-stacks.patch rename to patches/server/0173-ShulkerBox-allow-oversized-stacks.patch index df2c9ae17..c88b8efd7 100644 --- a/patches/server/0170-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0173-ShulkerBox-allow-oversized-stacks.patch @@ -35,11 +35,11 @@ index b51155ad12515b2d0dd0f202580b9f455c114d9a..dd6c82a418ee299d7a5614cb0260949c blockEntity.saveToItem(itemStack); if (shulkerBoxBlockEntity.hasCustomName()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2fe9231fbc7f21cc6c6724c075916292bc31b68a..f5ab6850362f00dd44472ad42bd06ee112cc6647 100644 +index 5660dacaa679b41e0a72daf09f6b2ae948377eef..f6c4d1cbccc7213d322426588f815064eebc5512 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -688,6 +688,11 @@ public class PurpurWorldConfig { - spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); +@@ -695,6 +695,11 @@ public class PurpurWorldConfig { + spongeAbsorptionRadius = getInt("blocks.sponge.absorption.radius", spongeAbsorptionRadius); } + public boolean shulkerBoxAllowOversizedStacks = false; diff --git a/patches/server/0171-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0174-Bee-can-work-when-raining-or-at-night.patch similarity index 94% rename from patches/server/0171-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0174-Bee-can-work-when-raining-or-at-night.patch index a3fbd2485..8b58810d8 100644 --- a/patches/server/0171-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0174-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 38f619bb9570fae9a2ded41db262a1e087c6f615..fdd0a35b722a9056840edbac3bcb391bc062e499 100644 +index f6c4d1cbccc7213d322426588f815064eebc5512..d7486913a8077c591a0f3969c517dd0a73b5b0b2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -778,6 +778,8 @@ public class PurpurWorldConfig { +@@ -785,6 +785,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 38f619bb9570fae9a2ded41db262a1e087c6f615..fdd0a35b722a9056840edbac3bcb391b private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -791,6 +793,8 @@ public class PurpurWorldConfig { +@@ -798,6 +800,8 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0172-API-for-any-mob-to-burn-daylight.patch b/patches/server/0175-API-for-any-mob-to-burn-daylight.patch similarity index 96% rename from patches/server/0172-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0175-API-for-any-mob-to-burn-daylight.patch index 49263646e..9a7eebcc0 100644 --- a/patches/server/0172-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0175-API-for-any-mob-to-burn-daylight.patch @@ -92,7 +92,7 @@ index 9cf87d4009e8d71d844cf1583a1457b45a523fff..75e994b0da981190083c8cda27a25311 public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index b0ce2885a304cb15964a1d3bf047c49f95ab594d..6810c5af5c27acadb28b8a1e88c7c1cdf773835f 100644 +index 16bb50d154622073d017fa350ec4610c1de7046e..e3634d7dfd2558173a5c9d05e4ab285c80237684 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1733,17 +1733,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -212,10 +212,10 @@ index 31706620960f5f153565f3cf64e32d0f4d10feb8..1df39e11d4fe3146fba9a0605c623384 @Override 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 6ae67916366ebdc5eed859c4c821e852781c5441..7897d72dacc787b027306911eea4d59e31d06142 100644 +index 0894335fd9057184bb4f3ba5765ceec9d02828f7..85026b498f25c38653bf3b52061497419c9512d0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -59,6 +59,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy { this.xpReward = 5; this.moveControl = new Phantom.PhantomMoveControl(this); this.lookControl = new Phantom.PhantomLookControl(this); @@ -223,13 +223,13 @@ index 6ae67916366ebdc5eed859c4c821e852781c5441..7897d72dacc787b027306911eea4d59e } // Purpur start -@@ -229,16 +230,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -254,16 +255,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { - // Purpur start - boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight; -- boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level.getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight; +- boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level().getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight; - if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - Configurable Burning - if (getRider() == null || !this.isControllable()) - // Purpur end @@ -241,7 +241,7 @@ index 6ae67916366ebdc5eed859c4c821e852781c5441..7897d72dacc787b027306911eea4d59e super.aiStep(); } -@@ -266,7 +258,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -291,7 +283,7 @@ public class Phantom extends FlyingMob implements Enemy { if (nbt.hasUUID("Paper.SpawningEntity")) { this.spawningEntity = nbt.getUUID("Paper.SpawningEntity"); } @@ -250,7 +250,7 @@ index 6ae67916366ebdc5eed859c4c821e852781c5441..7897d72dacc787b027306911eea4d59e this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); } // Paper end -@@ -283,7 +275,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -308,7 +300,7 @@ public class Phantom extends FlyingMob implements Enemy { if (this.spawningEntity != null) { nbt.putUUID("Paper.SpawningEntity", this.spawningEntity); } @@ -259,7 +259,7 @@ index 6ae67916366ebdc5eed859c4c821e852781c5441..7897d72dacc787b027306911eea4d59e // Paper end } -@@ -349,8 +341,14 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -374,8 +366,14 @@ public class Phantom extends FlyingMob implements Enemy { } public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; } diff --git a/patches/server/0173-Config-MobEffect-by-world.patch b/patches/server/0176-Config-MobEffect-by-world.patch similarity index 98% rename from patches/server/0173-Config-MobEffect-by-world.patch rename to patches/server/0176-Config-MobEffect-by-world.patch index c5de36312..59c541679 100644 --- a/patches/server/0173-Config-MobEffect-by-world.patch +++ b/patches/server/0176-Config-MobEffect-by-world.patch @@ -40,7 +40,7 @@ index bcce17f884b57e619749351b7b2047f0a5f9be71..878f3da0067f89f47141f41c733bef67 ((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fdd0a35b722a9056840edbac3bcb391bc062e499..9102c90bbc52bd5323cce4cfb5eb40e7e8b086ed 100644 +index d7486913a8077c591a0f3969c517dd0a73b5b0b2..aea7982a0e507bd33b53fb0569acb6da3a270835 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -333,6 +333,21 @@ public class PurpurWorldConfig { diff --git a/patches/server/0174-Beacon-Activation-Range-Configurable.patch b/patches/server/0177-Beacon-Activation-Range-Configurable.patch similarity index 96% rename from patches/server/0174-Beacon-Activation-Range-Configurable.patch rename to patches/server/0177-Beacon-Activation-Range-Configurable.patch index 07bc2cf16..c43c9ee2c 100644 --- a/patches/server/0174-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0177-Beacon-Activation-Range-Configurable.patch @@ -26,7 +26,7 @@ index 59246e24558569f7f50b4d4d508616798091c888..cc03c02f290ee8d58a2fea54b1f977f4 } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1510dea6daa49e0bb83a27cec965f2a0cf186274..4a5551dbf79870876b3a8d18284e4fa317ef1837 100644 +index aea7982a0e507bd33b53fb0569acb6da3a270835..5ab074818ee68a1d41e4bddd0e04e652d343eabd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -525,6 +525,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0175-Add-toggle-for-sand-duping-fix.patch b/patches/server/0178-Add-toggle-for-sand-duping-fix.patch similarity index 88% rename from patches/server/0175-Add-toggle-for-sand-duping-fix.patch rename to patches/server/0178-Add-toggle-for-sand-duping-fix.patch index 7e488c088..083d69c18 100644 --- a/patches/server/0175-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0178-Add-toggle-for-sand-duping-fix.patch @@ -27,11 +27,11 @@ index eff81e846f696349b3bd3d26c02442f157b169f0..bdadc6bb8c0ddcbf4ec1a9d2b4267c9e } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a2474db319cd9b2a1ecc3cd87d48aed156a773f..1b9ac5dd28472b4726afc34c4ecbd1cf8478c817 100644 +index 5ab074818ee68a1d41e4bddd0e04e652d343eabd..911b30143e7807a432ac793352bb9be6866823d8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -714,6 +714,11 @@ public class PurpurWorldConfig { - spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); +@@ -721,6 +721,11 @@ public class PurpurWorldConfig { + spongeAbsorptionRadius = getInt("blocks.sponge.absorption.radius", spongeAbsorptionRadius); } + public boolean fixSandDuping = true; diff --git a/patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0179-Add-toggle-for-end-portal-safe-teleporting.patch similarity index 97% rename from patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch rename to patches/server/0179-Add-toggle-for-end-portal-safe-teleporting.patch index 907a77b0c..dcda44032 100644 --- a/patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0179-Add-toggle-for-end-portal-safe-teleporting.patch @@ -45,7 +45,7 @@ index f80f6da484f4144e743079e5104bf503419074b2..2deddc746e43896584bd65ba8e7971a8 entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b9ac5dd28472b4726afc34c4ecbd1cf8478c817..08e4e58a8633ff420db668b6e735afc15b6bca5c 100644 +index 911b30143e7807a432ac793352bb9be6866823d8..08a62eed5b50b216ea4ef1884501c33faa996723 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -652,6 +652,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0177-Make-lightning-rod-range-configurable.patch b/patches/server/0180-Make-lightning-rod-range-configurable.patch similarity index 100% rename from patches/server/0177-Make-lightning-rod-range-configurable.patch rename to patches/server/0180-Make-lightning-rod-range-configurable.patch diff --git a/patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0181-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 95% rename from patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0181-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index a3863a1b8..d8ca98511 100644 --- a/patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0181-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Burp delay, burp after eating food fills hunger bar diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index bb1cda93ae9e754acf20193100ce0de56bf47843..c4270c9c188137e634064386363c19811422d5bb 100644 +index 81ba8875f0077ac1be80533061bcb0e632c13ded..bea9f52a6240794d45128659a62487f48f9f03dd 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -188,6 +188,7 @@ public abstract class Player extends LivingEntity { @@ -55,7 +55,7 @@ index 2038df72f8d7d33d4105de8129628daf21de6f0f..31ec6022b305df0ae02364c916ecf184 public void eat(Item item, ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 08e4e58a8633ff420db668b6e735afc15b6bca5c..da263ecf74c2da4d7b75bf612987289724c82968 100644 +index 08a62eed5b50b216ea4ef1884501c33faa996723..3f55bbf871336c1bedee4a1f867101dc1ae1242c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -392,6 +392,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0179-Allow-player-join-full-server-by-permission.patch b/patches/server/0182-Allow-player-join-full-server-by-permission.patch similarity index 93% rename from patches/server/0179-Allow-player-join-full-server-by-permission.patch rename to patches/server/0182-Allow-player-join-full-server-by-permission.patch index bf001f472..73cc3d46b 100644 --- a/patches/server/0179-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0182-Allow-player-join-full-server-by-permission.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 15a04d24f511425aee392a2fa4e333071ca5c582..0273f390d3df438b88b02ad9c43dc6a477cda974 100644 +index 3e40080c6b1e74c80e762b385a7534bb1b8ee894..64a1fd3316f7b0b6e7feafc1be4649a4084d61a3 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -740,7 +740,7 @@ public abstract class PlayerList { diff --git a/patches/server/0180-Add-portal-waiting-option-permission-bypass.patch b/patches/server/0183-Add-portal-waiting-option-permission-bypass.patch similarity index 94% rename from patches/server/0180-Add-portal-waiting-option-permission-bypass.patch rename to patches/server/0183-Add-portal-waiting-option-permission-bypass.patch index 310d569de..ffa6fac47 100644 --- a/patches/server/0180-Add-portal-waiting-option-permission-bypass.patch +++ b/patches/server/0183-Add-portal-waiting-option-permission-bypass.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add portal waiting option & permission bypass diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 1a409a4df5feacb24f5a46255ffd7226baf09ade..398b1a33ac3be17136a7d38bc35190db1364d10d 100644 +index bea9f52a6240794d45128659a62487f48f9f03dd..528aeec3f322ee2094098093e6016e41ff382cf3 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -189,6 +189,7 @@ public abstract class Player extends LivingEntity { @@ -38,7 +38,7 @@ index cba6ead3f937f2b3d59c15a864e07e5cb2f2330c..ab75c82b96d0aea1ba1ba1065c8a16e5 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3b085bc3cf1aac1da85a0042a1f24345e00c3779..7eeb5e81daf436a365ffcd3c2bebae5f7d10b7fc 100644 +index 3f55bbf871336c1bedee4a1f867101dc1ae1242c..77f776dc1ce999a135d539e8b478f2eb87e89d1f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -394,6 +394,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0181-Shulker-spawn-from-bullet-options.patch b/patches/server/0184-Shulker-spawn-from-bullet-options.patch similarity index 96% rename from patches/server/0181-Shulker-spawn-from-bullet-options.patch rename to patches/server/0184-Shulker-spawn-from-bullet-options.patch index 07a6e9679..e47d5dbd4 100644 --- a/patches/server/0181-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0184-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 726563fc0c847030a4d25f3d6285340040fb618f..6751b12798c304c845812113fd4b88ed0958c1f7 100644 +index 77f776dc1ce999a135d539e8b478f2eb87e89d1f..06065f28353e210bcacc4a578bc8d55587937a74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1930,6 +1930,11 @@ public class PurpurWorldConfig { +@@ -1943,6 +1943,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 726563fc0c847030a4d25f3d6285340040fb618f..6751b12798c304c845812113fd4b88ed private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1941,6 +1946,11 @@ public class PurpurWorldConfig { +@@ -1954,6 +1959,11 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0182-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0185-Eating-glow-berries-adds-glow-effect.patch similarity index 97% rename from patches/server/0182-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0185-Eating-glow-berries-adds-glow-effect.patch index 28bee49c0..a0faaf6d9 100644 --- a/patches/server/0182-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0185-Eating-glow-berries-adds-glow-effect.patch @@ -18,7 +18,7 @@ index e6f8cb165f7e3da5f0edfc952d14059516de8acf..31f5ed9dd1727eee24804a384817d2b7 public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE); public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b30ffbeea1cc18a86d417bb0a522d1a4d940bff..d98a504cae736f913fbde7e8b4c367af9af8cabc 100644 +index 06065f28353e210bcacc4a578bc8d55587937a74..51f23d32fdaafe2edf83c1620023276fb96cc9d3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -222,6 +222,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0183-Option-to-make-drowned-break-doors.patch b/patches/server/0186-Option-to-make-drowned-break-doors.patch similarity index 94% rename from patches/server/0183-Option-to-make-drowned-break-doors.patch rename to patches/server/0186-Option-to-make-drowned-break-doors.patch index 371c1c897..3f7681cfb 100644 --- a/patches/server/0183-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0186-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index 902f831ea001145f73691b96f2fca8245a4fc05a..9346d634dd2b8cb3d89aa7ccf12fec6f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1df4755bedec746c87cd072ee24a909cde8d4c23..b607adcd5d6948d327d2ca11f36dceab4da24a56 100644 +index 51f23d32fdaafe2edf83c1620023276fb96cc9d3..cad1bcf613b9b1e8feb7ca33b10dc46cf4ea015d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1079,6 +1079,7 @@ public class PurpurWorldConfig { +@@ -1086,6 +1086,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,7 +45,7 @@ index 1df4755bedec746c87cd072ee24a909cde8d4c23..b607adcd5d6948d327d2ca11f36dceab private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1094,6 +1095,7 @@ public class PurpurWorldConfig { +@@ -1101,6 +1102,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0184-Configurable-hunger-starvation-damage.patch b/patches/server/0187-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/server/0184-Configurable-hunger-starvation-damage.patch rename to patches/server/0187-Configurable-hunger-starvation-damage.patch index cc8d7820a..3a954c3bf 100644 --- a/patches/server/0184-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0187-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 31ec6022b305df0ae02364c916ecf18425a0bc36..e54af9ff2a786e919b8261aa27509be9 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97c8b4c4ede3edf04319d3b9d4f5ebc36dc1f80e..6683a4fc4746b28d9b3d898258265874ed3e54e1 100644 +index cad1bcf613b9b1e8feb7ca33b10dc46cf4ea015d..6bc005d6680df416c3ee2cf88dd20abe87f20475 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -750,6 +750,11 @@ public class PurpurWorldConfig { +@@ -757,6 +757,11 @@ public class PurpurWorldConfig { turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); } diff --git a/patches/server/0185-Enhance-SysoutCatcher.patch b/patches/server/0188-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0185-Enhance-SysoutCatcher.patch rename to patches/server/0188-Enhance-SysoutCatcher.patch diff --git a/patches/server/0186-Add-uptime-command.patch b/patches/server/0189-Add-uptime-command.patch similarity index 98% rename from patches/server/0186-Add-uptime-command.patch rename to patches/server/0189-Add-uptime-command.patch index be01058d7..7b76a0de1 100644 --- a/patches/server/0186-Add-uptime-command.patch +++ b/patches/server/0189-Add-uptime-command.patch @@ -17,7 +17,7 @@ index 4e721dfca7559620d8ce65a6703f2089a839f4a0..7aae9e3c60ba15b8dcd8174a4d70866e } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 566f20e6c8306c6f6884b95362f82bdcffbcbbc7..4789affbe91dcd0bd0bbf2cbf0c79bc01173e3d1 100644 +index 7b67bc1e7891a27125db560ad18a133096bb2468..f5e9a56f6f478e241a9ffcf703e4a54e8270eac9 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -296,6 +296,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1832,6 +1891,7 @@ public class PurpurWorldConfig { +@@ -1839,6 +1898,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean mooshroomRidable = false; -@@ -1840,6 +1900,7 @@ public class PurpurWorldConfig { +@@ -1847,6 +1907,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1852,6 +1913,7 @@ public class PurpurWorldConfig { +@@ -1859,6 +1920,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean muleRidableInWater = false; -@@ -1863,6 +1925,7 @@ public class PurpurWorldConfig { +@@ -1870,6 +1932,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1880,6 +1943,7 @@ public class PurpurWorldConfig { +@@ -1887,6 +1950,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean ocelotRidable = false; -@@ -1888,6 +1952,7 @@ public class PurpurWorldConfig { +@@ -1895,6 +1959,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1900,6 +1965,7 @@ public class PurpurWorldConfig { +@@ -1907,6 +1972,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean pandaRidable = false; -@@ -1908,6 +1974,7 @@ public class PurpurWorldConfig { +@@ -1915,6 +1981,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1920,6 +1987,7 @@ public class PurpurWorldConfig { +@@ -1927,6 +1994,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean parrotRidable = false; -@@ -1929,6 +1997,7 @@ public class PurpurWorldConfig { +@@ -1936,6 +2004,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1942,6 +2011,7 @@ public class PurpurWorldConfig { +@@ -1949,6 +2018,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean phantomRidable = false; -@@ -1966,6 +2036,7 @@ public class PurpurWorldConfig { +@@ -1976,6 +2046,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1998,6 +2069,7 @@ public class PurpurWorldConfig { +@@ -2011,6 +2082,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean pigRidable = false; -@@ -2007,6 +2079,7 @@ public class PurpurWorldConfig { +@@ -2020,6 +2092,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2020,6 +2093,7 @@ public class PurpurWorldConfig { +@@ -2033,6 +2106,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean piglinRidable = false; -@@ -2029,6 +2103,7 @@ public class PurpurWorldConfig { +@@ -2042,6 +2116,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2042,6 +2117,7 @@ public class PurpurWorldConfig { +@@ -2055,6 +2130,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean piglinBruteRidable = false; -@@ -2049,6 +2125,7 @@ public class PurpurWorldConfig { +@@ -2062,6 +2138,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2060,6 +2137,7 @@ public class PurpurWorldConfig { +@@ -2073,6 +2150,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean pillagerRidable = false; -@@ -2068,6 +2146,7 @@ public class PurpurWorldConfig { +@@ -2081,6 +2159,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2080,6 +2159,7 @@ public class PurpurWorldConfig { +@@ -2093,6 +2172,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean polarBearRidable = false; -@@ -2090,6 +2170,7 @@ public class PurpurWorldConfig { +@@ -2103,6 +2183,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2105,12 +2186,14 @@ public class PurpurWorldConfig { +@@ -2118,12 +2199,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2121,6 +2204,7 @@ public class PurpurWorldConfig { +@@ -2134,6 +2217,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean rabbitRidable = false; -@@ -2132,6 +2216,7 @@ public class PurpurWorldConfig { +@@ -2145,6 +2229,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2147,6 +2232,7 @@ public class PurpurWorldConfig { +@@ -2160,6 +2245,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean ravagerRidable = false; -@@ -2156,6 +2242,7 @@ public class PurpurWorldConfig { +@@ -2169,6 +2255,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2185,12 +2272,14 @@ public class PurpurWorldConfig { +@@ -2198,12 +2285,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2201,6 +2290,7 @@ public class PurpurWorldConfig { +@@ -2214,6 +2303,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean sheepRidable = false; -@@ -2210,6 +2300,7 @@ public class PurpurWorldConfig { +@@ -2223,6 +2313,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2223,6 +2314,7 @@ public class PurpurWorldConfig { +@@ -2236,6 +2327,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean shulkerRidable = false; -@@ -2236,6 +2328,7 @@ public class PurpurWorldConfig { +@@ -2249,6 +2341,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2253,6 +2346,7 @@ public class PurpurWorldConfig { +@@ -2266,6 +2359,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean silverfishRidable = false; -@@ -2261,6 +2355,7 @@ public class PurpurWorldConfig { +@@ -2274,6 +2368,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2273,6 +2368,7 @@ public class PurpurWorldConfig { +@@ -2286,6 +2381,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean skeletonRidable = false; -@@ -2280,6 +2376,7 @@ public class PurpurWorldConfig { +@@ -2293,6 +2389,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2291,6 +2388,7 @@ public class PurpurWorldConfig { +@@ -2304,6 +2401,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean skeletonHorseRidableInWater = true; -@@ -2302,6 +2400,7 @@ public class PurpurWorldConfig { +@@ -2315,6 +2413,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void skeletonHorseSettings() { skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); -@@ -2318,6 +2417,7 @@ public class PurpurWorldConfig { +@@ -2331,6 +2430,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean slimeRidable = false; -@@ -2328,6 +2428,7 @@ public class PurpurWorldConfig { +@@ -2341,6 +2441,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2342,6 +2443,7 @@ public class PurpurWorldConfig { +@@ -2355,6 +2456,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean snowGolemRidable = false; -@@ -2357,6 +2459,7 @@ public class PurpurWorldConfig { +@@ -2370,6 +2472,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2376,6 +2479,7 @@ public class PurpurWorldConfig { +@@ -2389,6 +2492,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean snifferRidable = false; -@@ -2398,6 +2502,7 @@ public class PurpurWorldConfig { +@@ -2411,6 +2515,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2411,6 +2516,7 @@ public class PurpurWorldConfig { +@@ -2424,6 +2529,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean spiderRidable = false; -@@ -2418,6 +2524,7 @@ public class PurpurWorldConfig { +@@ -2431,6 +2537,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2429,6 +2536,7 @@ public class PurpurWorldConfig { +@@ -2442,6 +2549,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean strayRidable = false; -@@ -2436,6 +2544,7 @@ public class PurpurWorldConfig { +@@ -2449,6 +2557,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2447,6 +2556,7 @@ public class PurpurWorldConfig { +@@ -2460,6 +2569,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean striderRidable = false; -@@ -2456,6 +2566,7 @@ public class PurpurWorldConfig { +@@ -2469,6 +2579,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2469,6 +2580,7 @@ public class PurpurWorldConfig { +@@ -2482,6 +2593,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean tadpoleRidable = false; -@@ -2491,6 +2603,7 @@ public class PurpurWorldConfig { +@@ -2504,6 +2616,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2510,12 +2623,14 @@ public class PurpurWorldConfig { +@@ -2523,12 +2636,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2526,6 +2641,7 @@ public class PurpurWorldConfig { +@@ -2539,6 +2654,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean turtleRidable = false; -@@ -2534,6 +2650,7 @@ public class PurpurWorldConfig { +@@ -2547,6 +2663,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2546,6 +2663,7 @@ public class PurpurWorldConfig { +@@ -2559,6 +2676,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean vexRidable = false; -@@ -2554,6 +2672,7 @@ public class PurpurWorldConfig { +@@ -2567,6 +2685,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2566,6 +2685,7 @@ public class PurpurWorldConfig { +@@ -2579,6 +2698,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean villagerRidable = false; -@@ -2579,6 +2699,7 @@ public class PurpurWorldConfig { +@@ -2594,6 +2714,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2596,6 +2717,7 @@ public class PurpurWorldConfig { +@@ -2613,6 +2734,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean vindicatorRidable = false; -@@ -2604,6 +2726,7 @@ public class PurpurWorldConfig { +@@ -2621,6 +2743,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2616,6 +2739,7 @@ public class PurpurWorldConfig { +@@ -2633,6 +2756,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean wanderingTraderRidable = false; -@@ -2626,6 +2750,7 @@ public class PurpurWorldConfig { +@@ -2643,6 +2767,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2640,6 +2765,7 @@ public class PurpurWorldConfig { +@@ -2657,6 +2782,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean wardenRidable = false; -@@ -2656,6 +2782,7 @@ public class PurpurWorldConfig { +@@ -2673,6 +2799,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2667,6 +2794,7 @@ public class PurpurWorldConfig { +@@ -2684,6 +2811,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean witherRidable = false; -@@ -2681,6 +2809,7 @@ public class PurpurWorldConfig { +@@ -2698,6 +2826,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2703,6 +2832,7 @@ public class PurpurWorldConfig { +@@ -2720,6 +2849,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean witherSkeletonRidable = false; -@@ -2710,6 +2840,7 @@ public class PurpurWorldConfig { +@@ -2727,6 +2857,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2721,6 +2852,7 @@ public class PurpurWorldConfig { +@@ -2738,6 +2869,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean wolfRidable = false; -@@ -2732,6 +2864,7 @@ public class PurpurWorldConfig { +@@ -2749,6 +2881,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2751,6 +2884,7 @@ public class PurpurWorldConfig { +@@ -2768,6 +2901,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean zoglinRidable = false; -@@ -2758,6 +2892,7 @@ public class PurpurWorldConfig { +@@ -2775,6 +2909,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2769,6 +2904,7 @@ public class PurpurWorldConfig { +@@ -2786,6 +2921,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean zombieRidable = false; -@@ -2782,6 +2918,7 @@ public class PurpurWorldConfig { +@@ -2799,6 +2935,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2799,6 +2936,7 @@ public class PurpurWorldConfig { +@@ -2816,6 +2953,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean zombieHorseRidableInWater = false; -@@ -2811,6 +2949,7 @@ public class PurpurWorldConfig { +@@ -2828,6 +2966,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2828,6 +2967,7 @@ public class PurpurWorldConfig { +@@ -2845,6 +2984,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean zombieVillagerRidable = false; -@@ -2842,6 +2982,7 @@ public class PurpurWorldConfig { +@@ -2859,6 +2999,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2855,6 +2996,7 @@ public class PurpurWorldConfig { +@@ -2872,6 +3013,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 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a } public boolean zombifiedPiglinRidable = false; -@@ -2867,6 +3009,7 @@ public class PurpurWorldConfig { +@@ -2884,6 +3026,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8a private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2883,6 +3026,7 @@ public class PurpurWorldConfig { +@@ -2900,6 +3043,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/server/0225-Potion-NamespacedKey.patch b/patches/server/0228-Potion-NamespacedKey.patch similarity index 100% rename from patches/server/0225-Potion-NamespacedKey.patch rename to patches/server/0228-Potion-NamespacedKey.patch diff --git a/patches/server/0226-Grindstone-API.patch b/patches/server/0229-Grindstone-API.patch similarity index 100% rename from patches/server/0226-Grindstone-API.patch rename to patches/server/0229-Grindstone-API.patch diff --git a/patches/server/0230-Signs-allow-color-codes.patch b/patches/server/0230-Signs-allow-color-codes.patch new file mode 100644 index 000000000..2b7bda75c --- /dev/null +++ b/patches/server/0230-Signs-allow-color-codes.patch @@ -0,0 +1,84 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: granny +Date: Fri, 9 Jun 2023 02:26:42 -0700 +Subject: [PATCH] Signs allow color codes + + +diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java +index 68d9ba56c15ce68edd773d2309eca428dadffe83..a155e61a95c0fe4fc16d6d18a02a83b6d5b2a930 100644 +--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java ++++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +@@ -1570,6 +1570,7 @@ public class ServerPlayer extends Player { + + @Override + public void openTextEdit(SignBlockEntity sign, boolean front) { ++ if (level().purpurConfig.signAllowColors) this.connection.send(sign.getTranslatedUpdatePacket(textFilteringEnabled, front)); // Purpur + this.connection.send(new ClientboundBlockUpdatePacket(this.level(), sign.getBlockPos())); + this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); + } +diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +index 80695b2698d2904cec2c54ebe0ef880d95ed9583..c884b119fd956c3543864f06c1b1cd60cbd0eb88 100644 +--- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java ++++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +@@ -203,11 +203,18 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C + FilteredText filteredtext = (FilteredText) list.get(i); + Style chatmodifier = signtext.getMessage(i, entityhuman.isTextFilteringEnabled()).getStyle(); + +- if (entityhuman.isTextFilteringEnabled()) { +- signtext = signtext.setMessage(i, Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only ++ // Purpur start TODO: This is probably wrong but we'll see what happens ++ org.bukkit.entity.Player player = (org.bukkit.craftbukkit.entity.CraftPlayer) entityhuman.getBukkitEntity(); ++ String line = net.minecraft.SharedConstants.filterText(entityhuman.isTextFilteringEnabled() ? filteredtext.filteredOrEmpty() : filteredtext.raw()); ++ if (level.purpurConfig.signAllowColors) { ++ if (player.hasPermission("purpur.sign.color")) line = line.replaceAll("(?i)&([0-9a-fr])", "\u00a7$1"); ++ if (player.hasPermission("purpur.sign.style")) line = line.replaceAll("(?i)&([l-or])", "\u00a7$1"); ++ if (player.hasPermission("purpur.sign.magic")) line = line.replaceAll("(?i)&([kr])", "\u00a7$1"); ++ signtext = signtext.setMessage(i, io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(line)).copy().setStyle(chatmodifier)); + } else { +- signtext = signtext.setMessage(i, Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.raw())).setStyle(chatmodifier), Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only ++ signtext = signtext.setMessage(i, io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.Component.text(line)).copy().setStyle(chatmodifier)); + } ++ // Purpur end + } + + // CraftBukkit start +@@ -345,6 +352,23 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C + return ClientboundBlockEntityDataPacket.create(this); + } + ++ // Purpur start ++ public ClientboundBlockEntityDataPacket getTranslatedUpdatePacket(boolean filtered, boolean front) { ++ final CompoundTag nbt = new CompoundTag(); ++ this.saveAdditional(nbt); ++ final Component[] lines = front ? frontText.getMessages(filtered) : backText.getMessages(filtered); ++ for (int i = 0; i < 4; i++) { ++ final var component = io.papermc.paper.adventure.PaperAdventure.asAdventure(lines[i]); ++ final String line = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().serialize(component); ++ final var text = net.kyori.adventure.text.Component.text(line); ++ final String json = net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().serialize(text); ++ nbt.putString("Text" + (i + 1), json); ++ } ++ nbt.putString("PurpurEditor", "true"); ++ return ClientboundBlockEntityDataPacket.create(this, entity -> nbt); ++ } ++ // Purpur end ++ + @Override + public CompoundTag getUpdateTag() { + return this.saveWithoutMetadata(); +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index c70fc012709293fd01d996a55a49d500cd148d33..f00d995a35fe7c33f2c5d1fffeb5d46b12b26e6f 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -958,6 +958,11 @@ public class PurpurWorldConfig { + } + } + ++ public boolean signAllowColors = false; ++ private void signSettings() { ++ signAllowColors = getBoolean("blocks.sign.allow-colors", signAllowColors); ++ } ++ + public boolean slabHalfBreak = false; + private void slabSettings() { + slabHalfBreak = getBoolean("blocks.slab.break-individual-slabs-when-sneaking", slabHalfBreak); diff --git a/patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0231-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 98% rename from patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0231-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 518eab237..bb6161255 100644 --- a/patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0231-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,7 +74,7 @@ index e55720c4d2fbdf6aae526910e87a67c29cf906fd..0e4026e9d39735b840f12e59f84469b9 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b2693eaaca09da316fa06a4a901f1b16ecbb5f89..2e3f957d2c056ce1b43e8b2b39e0eaece3d6da9b 100644 +index f00d995a35fe7c33f2c5d1fffeb5d46b12b26e6f..f81c1cd9bcbb78b6a91b1ab6b8f83a1ac448ca0d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -567,6 +567,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0228-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0232-Shearing-jeb-produces-random-color-wool.patch similarity index 92% rename from patches/server/0228-Shearing-jeb-produces-random-color-wool.patch rename to patches/server/0232-Shearing-jeb-produces-random-color-wool.patch index 440ff6a81..17e0f7a22 100644 --- a/patches/server/0228-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0232-Shearing-jeb-produces-random-color-wool.patch @@ -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 cbfac77db19cda4c34ddd8ae353bdea9be2a6407..96b7a1e4573d7ee989a0cc95c6527bf5b9211028 100644 +index f81c1cd9bcbb78b6a91b1ab6b8f83a1ac448ca0d..7a8c32a9b4f6ffcf186920c4b6afa9d3fd34120a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2305,6 +2305,7 @@ public class PurpurWorldConfig { +@@ -2323,6 +2323,7 @@ public class PurpurWorldConfig { public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; @@ -29,7 +29,7 @@ index cbfac77db19cda4c34ddd8ae353bdea9be2a6407..96b7a1e4573d7ee989a0cc95c6527bf5 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2319,6 +2320,7 @@ public class PurpurWorldConfig { +@@ -2337,6 +2338,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/server/0229-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0233-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0233-Turtle-eggs-random-tick-crack-chance.patch index 434b1c5d0..3e9ba9b0f 100644 --- a/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0233-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 7495e0e8beedad59fff24ebf189b58b307f7d796..70997b83fd7631ebf3c5bda67ef77bef @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b49b6b2558d18565d5a222360c7865a09c1ab026..a054dd54797af8190b09d2d9975edbf323496dd8 100644 +index 7a8c32a9b4f6ffcf186920c4b6afa9d3fd34120a..d01bbdd7d5d5b96a505d4bd4db599c98b0b1f403 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -991,11 +991,13 @@ public class PurpurWorldConfig { +@@ -1003,11 +1003,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0230-Mob-head-visibility-percent.patch b/patches/server/0234-Mob-head-visibility-percent.patch similarity index 91% rename from patches/server/0230-Mob-head-visibility-percent.patch rename to patches/server/0234-Mob-head-visibility-percent.patch index 59a7448e2..100e5a213 100644 --- a/patches/server/0230-Mob-head-visibility-percent.patch +++ b/patches/server/0234-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 7a35d45f8449a8399cb417357f0f0a6419bfbe3a..39ee6fbc6ce17b61abf88deba69b0ade // 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 7e5d23397c05a82c4a52bb493e992b6110d4c98e..69c2e49bcb3419222879f383e3042eae7bc1df8a 100644 +index d01bbdd7d5d5b96a505d4bd4db599c98b0b1f403..86c71f100800655605dc160944edfffcab097d15 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1317,6 +1317,7 @@ public class PurpurWorldConfig { +@@ -1329,6 +1329,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 7e5d23397c05a82c4a52bb493e992b6110d4c98e..69c2e49bcb3419222879f383e3042eae private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1334,6 +1335,7 @@ public class PurpurWorldConfig { +@@ -1346,6 +1347,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 7e5d23397c05a82c4a52bb493e992b6110d4c98e..69c2e49bcb3419222879f383e3042eae } public boolean dolphinRidable = false; -@@ -2110,6 +2112,7 @@ public class PurpurWorldConfig { +@@ -2128,6 +2130,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 7e5d23397c05a82c4a52bb493e992b6110d4c98e..69c2e49bcb3419222879f383e3042eae private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2124,6 +2127,7 @@ public class PurpurWorldConfig { +@@ -2142,6 +2145,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 7e5d23397c05a82c4a52bb493e992b6110d4c98e..69c2e49bcb3419222879f383e3042eae } public boolean piglinBruteRidable = false; -@@ -2385,6 +2389,7 @@ public class PurpurWorldConfig { +@@ -2403,6 +2407,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 7e5d23397c05a82c4a52bb493e992b6110d4c98e..69c2e49bcb3419222879f383e3042eae private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2397,6 +2402,7 @@ public class PurpurWorldConfig { +@@ -2415,6 +2420,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 7e5d23397c05a82c4a52bb493e992b6110d4c98e..69c2e49bcb3419222879f383e3042eae } public boolean skeletonHorseRidableInWater = true; -@@ -2927,6 +2933,7 @@ public class PurpurWorldConfig { +@@ -2949,6 +2955,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 7e5d23397c05a82c4a52bb493e992b6110d4c98e..69c2e49bcb3419222879f383e3042eae private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2945,6 +2952,7 @@ public class PurpurWorldConfig { +@@ -2967,6 +2974,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/server/0231-Configurable-valid-characters-for-usernames.patch b/patches/server/0235-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0231-Configurable-valid-characters-for-usernames.patch rename to patches/server/0235-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0232-Shears-can-have-looting-enchantment.patch b/patches/server/0236-Shears-can-have-looting-enchantment.patch similarity index 97% rename from patches/server/0232-Shears-can-have-looting-enchantment.patch rename to patches/server/0236-Shears-can-have-looting-enchantment.patch index f3a8ff605..7e20f5169 100644 --- a/patches/server/0232-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0236-Shears-can-have-looting-enchantment.patch @@ -37,7 +37,7 @@ 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 7c36938ba56b1fd3381db00ef862f9b7488b2b80..f425c2a681f6e0645ff48ed109f76057a4b2fbe5 100644 +index 1b0a0e36baa0f664f06b2d166aa907b320066b6e..e462b81aa1276a8f1222b74459359f6c6d57f739 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 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 b8b4fbedb349857ac72c0fadd6d560a140f92527..e0cfd29988ec58e0f1328b9b2d131ff6f5f5fa8c 100644 +index cd6aca9278283f919879873edd4abdfc196237fc..48e3757a3d71ac6c13189369df47053bf3145e62 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2745,6 +2745,8 @@ public class PurpurWorldConfig { +@@ -2765,6 +2765,8 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index b8b4fbedb349857ac72c0fadd6d560a140f92527..e0cfd29988ec58e0f1328b9b2d131ff6 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2776,6 +2778,8 @@ public class PurpurWorldConfig { +@@ -2798,6 +2800,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/server/0253-Stonecutter-damage.patch b/patches/server/0257-Stonecutter-damage.patch similarity index 96% rename from patches/server/0253-Stonecutter-damage.patch rename to patches/server/0257-Stonecutter-damage.patch index bf7667288..28c3f93de 100644 --- a/patches/server/0253-Stonecutter-damage.patch +++ b/patches/server/0257-Stonecutter-damage.patch @@ -63,10 +63,10 @@ index 3de2e7a17e1234367e4ec6d944b1145781aefeba..15ed564a579237dd1f5d6ce56ccb473f 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 8b24a35bbf003bac3615acd80d7a08751f6f0036..ec1220d874cec48fc538348865b80c27d37ac300 100644 +index 48e3757a3d71ac6c13189369df47053bf3145e62..998397ff5b395b41ac540f72a0d58b3b53d038a1 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 { +@@ -1013,6 +1013,11 @@ public class PurpurWorldConfig { spongeAbsorbsLava = getBoolean("blocks.sponge.absorbs-lava", spongeAbsorbsLava); } diff --git a/patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0258-Configurable-damage-settings-for-magma-blocks.patch similarity index 96% rename from patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0258-Configurable-damage-settings-for-magma-blocks.patch index 990cac971..6fcb0a9a4 100644 --- a/patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0258-Configurable-damage-settings-for-magma-blocks.patch @@ -18,7 +18,7 @@ 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 269f22938ef0d34a9169e2249771ffaa308c3636..1c8554d1bc778e9d998e494e892dd48597f6f5e6 100644 +index 998397ff5b395b41ac540f72a0d58b3b53d038a1..9e8356a41258fb8d739d43af0ba8cbe590fe235b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -943,6 +943,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0255-Add-config-for-snow-on-blue-ice.patch b/patches/server/0259-Add-config-for-snow-on-blue-ice.patch similarity index 95% rename from patches/server/0255-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0259-Add-config-for-snow-on-blue-ice.patch index 488c2a4c2..9bdb767c9 100644 --- a/patches/server/0255-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0259-Add-config-for-snow-on-blue-ice.patch @@ -22,7 +22,7 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c8554d1bc778e9d998e494e892dd48597f6f5e6..3b2c8c0d98eac2fd02db468d13eed35643df6a84 100644 +index 9e8356a41258fb8d739d43af0ba8cbe590fe235b..4a2e02d6c877ad163c310328aa6389adf6a89f2b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -924,9 +924,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0256-Skeletons-eat-wither-roses.patch b/patches/server/0260-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0256-Skeletons-eat-wither-roses.patch rename to patches/server/0260-Skeletons-eat-wither-roses.patch index e05e1a257..eeed8aeb9 100644 --- a/patches/server/0256-Skeletons-eat-wither-roses.patch +++ b/patches/server/0260-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 1f56cddafaca20b8a4f173bc6e60ddd03cdf87e3..96db7651b416e0654586ddd6bdc46222466accf9 100644 +index 4a2e02d6c877ad163c310328aa6389adf6a89f2b..2b0eb7a01e6b8280af443a0cdfe7a9e78e0c3a7d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2431,6 +2431,7 @@ public class PurpurWorldConfig { +@@ -2449,6 +2449,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index 1f56cddafaca20b8a4f173bc6e60ddd03cdf87e3..96db7651b416e0654586ddd6bdc46222 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2444,6 +2445,7 @@ public class PurpurWorldConfig { +@@ -2462,6 +2463,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/server/0257-Enchantment-Table-Persists-Lapis.patch b/patches/server/0261-Enchantment-Table-Persists-Lapis.patch similarity index 98% rename from patches/server/0257-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0261-Enchantment-Table-Persists-Lapis.patch index 199de6695..81c6dba8a 100644 --- a/patches/server/0257-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0261-Enchantment-Table-Persists-Lapis.patch @@ -146,7 +146,7 @@ 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 96db7651b416e0654586ddd6bdc46222466accf9..e6da680bca4b9a1ace5229f4c7cd08abb90c4364 100644 +index 2b0eb7a01e6b8280af443a0cdfe7a9e78e0c3a7d..0498cbf9740c66842ab4a7d5150a54f1290bccb6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -745,6 +745,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0258-Spark-Profiler.patch b/patches/server/0262-Spark-Profiler.patch similarity index 100% rename from patches/server/0258-Spark-Profiler.patch rename to patches/server/0262-Spark-Profiler.patch diff --git a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0263-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 95% rename from patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0263-Option-to-disable-kick-for-out-of-order-chat.patch index 05393ff99..4fa7c9aa9 100644 --- a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0263-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,7 +5,7 @@ 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 cc0736e7eb1f5227093507fdb3586ae0bb58d738..c5dea1e871246e6a0e03ee3e509aa3a26753051f 100644 +index f3210aa312af48a77129962fe483e65eec36a342..d3158d0bea38780463e7fcc4cf2a27f96eef3331 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2448,7 +2448,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic diff --git a/patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0264-Config-for-sculk-shrieker-can_summon-state.patch similarity index 93% rename from patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0264-Config-for-sculk-shrieker-can_summon-state.patch index d6b06d1b5..c5ddc1dd0 100644 --- a/patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0264-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 17045e05b0ea705ff9dba8cce68ab34d498cb556..5d997564e936d4e624f9fb2de5967153d054fb68 100644 +index 0498cbf9740c66842ab4a7d5150a54f1290bccb6..d18a8d8ce7bdf43847a81765481ed5570fb39e09 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1005,6 +1005,11 @@ public class PurpurWorldConfig { +@@ -1017,6 +1017,11 @@ public class PurpurWorldConfig { fixSandDuping = getBoolean("blocks.sand.fix-duping", fixSandDuping); } diff --git a/patches/server/0261-Config-to-not-let-coral-die.patch b/patches/server/0265-Config-to-not-let-coral-die.patch similarity index 96% rename from patches/server/0261-Config-to-not-let-coral-die.patch rename to patches/server/0265-Config-to-not-let-coral-die.patch index 3e29c3b79..9289fbfc3 100644 --- a/patches/server/0261-Config-to-not-let-coral-die.patch +++ b/patches/server/0265-Config-to-not-let-coral-die.patch @@ -29,7 +29,7 @@ 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 5d997564e936d4e624f9fb2de5967153d054fb68..13ce8dc958298b0830162945d8c8631a2f08dfc5 100644 +index d18a8d8ce7bdf43847a81765481ed5570fb39e09..ee7de1ff4f672562f371630c284c9eecda5a9d94 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -830,6 +830,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0262-Add-local-difficulty-api.patch b/patches/server/0266-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0262-Add-local-difficulty-api.patch rename to patches/server/0266-Add-local-difficulty-api.patch diff --git a/patches/server/0263-Add-toggle-for-RNG-manipulation.patch b/patches/server/0267-Add-toggle-for-RNG-manipulation.patch similarity index 90% rename from patches/server/0263-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0267-Add-toggle-for-RNG-manipulation.patch index 1fb4a033d..351b5f360 100644 --- a/patches/server/0263-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0267-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ 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 c897bb42c708bb1f899469b56a3545d02cd24ca9..672beed9786369669412f2700063356b2e8eeaa8 100644 +index 23280c8183285e3570d0d08b6af7fa1d03a57d35..3a5ca6953a28c13b2f6ba0f38d7fa3a46df7947b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -542,7 +542,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -20,7 +20,7 @@ index c897bb42c708bb1f899469b56a3545d02cd24ca9..672beed9786369669412f2700063356b this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 0e63a011dfcbdec6e6880175f6f1e96c0d45f724..7d3f7eef7616a7d53a2c8491cdc935be61e6fd3e 100644 +index beef2f6a42eebeaf5761bac841300f780bfdf4f2..41797940d89fec55cb7de4c63eb3ea5cdb4be967 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -46,7 +46,7 @@ public class Squid extends WaterAnimal { @@ -33,7 +33,7 @@ index 0e63a011dfcbdec6e6880175f6f1e96c0d45f724..7d3f7eef7616a7d53a2c8491cdc935be } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13ce8dc958298b0830162945d8c8631a2f08dfc5..320476c23459b0e73b5a6de7ff2d50e1bbd38491 100644 +index ee7de1ff4f672562f371630c284c9eecda5a9d94..829c1062efed4429964c8f4ef9da977c0961aa44 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -210,9 +210,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0264-Send-client-custom-name-of-BE.patch b/patches/server/0268-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/server/0264-Send-client-custom-name-of-BE.patch rename to patches/server/0268-Send-client-custom-name-of-BE.patch diff --git a/patches/server/0265-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch b/patches/server/0269-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch similarity index 100% rename from patches/server/0265-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch rename to patches/server/0269-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch diff --git a/patches/server/0266-Allow-custom-ChatDecorators.patch b/patches/server/0270-Allow-custom-ChatDecorators.patch similarity index 94% rename from patches/server/0266-Allow-custom-ChatDecorators.patch rename to patches/server/0270-Allow-custom-ChatDecorators.patch index 04dd1934e..0a89f0825 100644 --- a/patches/server/0266-Allow-custom-ChatDecorators.patch +++ b/patches/server/0270-Allow-custom-ChatDecorators.patch @@ -6,7 +6,7 @@ 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 4ac38c65a23ca4a99e45247287494e3f16b1b2a6..f5d7e5b10c5c39f64409909c96268e24782c2a6b 100644 +index 1041e8e24e03ce46824f6b0f4fca6fc0e2264a98..b0e0ff457c695aba58c208a678492a650a3834c8 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2657,6 +2657,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 8013dd333e27aa5fd0beb431fa32491eec9f5246..e42eb93fd9f6f51ff5bb4b14a2304d4ffcdd8441 100644 +index cfd97d48ae77d33b68e11de3140a00f3faca34a4..fc51147c8e38d0057444eaea712b4f44a1e50e74 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 -@@ -1750,7 +1750,7 @@ public final class NewChunkHolder { +@@ -1774,7 +1774,7 @@ public final class NewChunkHolder { boolean canSavePOI = !(chunk instanceof LevelChunk levelChunk && levelChunk.mustNotSave) && (poi != null && poi.isDirty()); boolean canSaveEntities = entities != null; @@ -33,7 +33,7 @@ index 8013dd333e27aa5fd0beb431fa32491eec9f5246..e42eb93fd9f6f51ff5bb4b14a2304d4f if (canSaveChunk) { canSaveChunk = this.saveChunk(chunk, unloading); } -@@ -1764,7 +1764,7 @@ public final class NewChunkHolder { +@@ -1788,7 +1788,7 @@ public final class NewChunkHolder { this.lastEntityUnload = null; } } @@ -56,10 +56,10 @@ index d2f0a0755317f5fa9a1ccf7db346aa77fd287d80..03852e7d21d9470a4469676367463fef } catch (Exception exception) { if (listener.shouldPropagateHandlingExceptions()) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0decdb4687734ed901929115d176e5128db4d390..68552716b7ed7f93cb84b1951af85344dc2e83b0 100644 +index 6e63763205627a923563bf625b39e04ab436fea6..7f25760aed007435f8a6728323cc566ad1da146e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1408,15 +1408,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -305,7 +276,7 @@ index 364d899f4fba65f0ecae522c7dde4f1ef8ee632e..eaef5f9119cd2e5eab2476f4126daff9 ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1310,17 +1310,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1211,17 +1211,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -327,10 +298,10 @@ index 364d899f4fba65f0ecae522c7dde4f1ef8ee632e..eaef5f9119cd2e5eab2476f4126daff9 } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index c6f5d6756fa0e068a462d9c0ded12e0771abba37..2c23321c826d929981df51f2cc60cdcdb649a43f 100644 +index 1409db8d73a2ed43efbba7f0932bd6d497d9009e..a616c9a2532beb67960259bf1910da1759cfe698 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -450,10 +450,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -447,10 +447,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 @@ -343,7 +314,7 @@ index c6f5d6756fa0e068a462d9c0ded12e0771abba37..2c23321c826d929981df51f2cc60cdcd } // Paper ichunkaccess = (ChunkAccess) ((Either) completablefuture.join()).map((ichunkaccess1) -> { return ichunkaccess1; -@@ -601,17 +601,17 @@ public class ServerChunkCache extends ChunkSource { +@@ -599,17 +599,17 @@ public class ServerChunkCache extends ChunkSource { public void save(boolean flush) { this.runDistanceManagerUpdates(); @@ -365,7 +336,7 @@ index c6f5d6756fa0e068a462d9c0ded12e0771abba37..2c23321c826d929981df51f2cc60cdcd } // Paper end -@@ -641,22 +641,22 @@ public class ServerChunkCache extends ChunkSource { +@@ -639,22 +639,22 @@ public class ServerChunkCache extends ChunkSource { @Override public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { this.level.getProfiler().push("purge"); @@ -379,7 +350,7 @@ index c6f5d6756fa0e068a462d9c0ded12e0771abba37..2c23321c826d929981df51f2cc60cdcd if (tickChunks) { - this.level.timings.chunks.startTiming(); // Paper - timings + //this.level.timings.chunks.startTiming(); // Paper - timings // Purpur - this.chunkMap.playerChunkManager.tick(); // Paper - this is mostly is to account for view distance changes + this.chunkMap.level.playerChunkLoader.tick(); // Paper - replace player chunk loader - this is mostly required to account for view distance changes this.tickChunks(); - this.level.timings.chunks.stopTiming(); // Paper - timings + //this.level.timings.chunks.stopTiming(); // Paper - timings // Purpur @@ -394,7 +365,7 @@ index c6f5d6756fa0e068a462d9c0ded12e0771abba37..2c23321c826d929981df51f2cc60cdcd this.level.getProfiler().pop(); this.clearCache(); } -@@ -711,7 +711,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -708,7 +708,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"); @@ -403,14 +374,14 @@ index c6f5d6756fa0e068a462d9c0ded12e0771abba37..2c23321c826d929981df51f2cc60cdcd int l = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - per player mob spawning NaturalSpawner.SpawnState spawnercreature_d; // moved down -@@ -732,12 +732,12 @@ public class ServerChunkCache extends ChunkSource { - // Pufferfish end +@@ -722,12 +722,12 @@ 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 - this.level.timings.chunkTicks.startTiming(); // Paper @@ -418,7 +389,7 @@ index c6f5d6756fa0e068a462d9c0ded12e0771abba37..2c23321c826d929981df51f2cc60cdcd // Paper - moved down -@@ -791,17 +791,17 @@ public class ServerChunkCache extends ChunkSource { +@@ -782,17 +782,17 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -440,7 +411,7 @@ index c6f5d6756fa0e068a462d9c0ded12e0771abba37..2c23321c826d929981df51f2cc60cdcd if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); this.chunkMap.needsChangeBroadcasting.clear(); -@@ -813,7 +813,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -804,7 +804,7 @@ public class ServerChunkCache extends ChunkSource { } } } @@ -450,10 +421,10 @@ index c6f5d6756fa0e068a462d9c0ded12e0771abba37..2c23321c826d929981df51f2cc60cdcd // 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 a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87807b55a4 100644 +index c490c88fd7798c0ac186b1de22a0dfc433adc431..48e259562bd46075e4d64ed1a291e32c33fbefca 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -687,7 +687,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -747,7 +747,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); gameprofilerfiller.popPush("tickPending"); @@ -462,7 +433,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 if (!this.isDebug()) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -696,20 +696,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -756,20 +756,20 @@ public class ServerLevel extends Level implements WorldGenLevel { this.fluidTicks.tick(j, 65536, this::tickFluid); gameprofilerfiller.pop(); } @@ -490,7 +461,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 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 -@@ -720,7 +720,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -780,7 +780,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (flag || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -499,16 +470,16 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 if (this.dragonFight != null) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -728,7 +728,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -788,7 +788,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()) { -@@ -769,8 +769,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 +@@ -815,8 +815,8 @@ public class ServerLevel extends Level implements WorldGenLevel { } } }); @@ -519,7 +490,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -951,7 +951,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -996,7 +996,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper start - optimise random block ticking gameprofilerfiller.popPush("randomTick"); @@ -528,7 +499,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this); -@@ -985,7 +985,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1030,7 +1030,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper end - optimise random block ticking @@ -537,7 +508,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 gameprofilerfiller.pop(); } -@@ -1278,8 +1278,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1323,8 +1323,8 @@ public class ServerLevel extends Level implements WorldGenLevel { // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -548,7 +519,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1295,7 +1295,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1340,7 +1340,7 @@ public class ServerLevel extends Level implements WorldGenLevel { entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -557,7 +528,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1318,8 +1318,8 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1363,8 +1363,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); @@ -568,7 +539,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1349,7 +1349,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1394,7 +1394,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.tickPassenger(passenger, entity2); } @@ -577,7 +548,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 } } else { passenger.stopRiding(); -@@ -1369,14 +1369,14 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1414,14 +1414,14 @@ public class ServerLevel extends Level implements WorldGenLevel { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); } @@ -595,7 +566,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 // Copied from save() // CraftBukkit start - moved from MinecraftServer.saveChunks -@@ -1388,7 +1388,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1433,7 +1433,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData()); } // CraftBukkit end @@ -604,7 +575,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 } // Paper end -@@ -1402,7 +1402,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1447,7 +1447,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit @@ -613,7 +584,7 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1412,11 +1412,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1457,11 +1457,11 @@ public class ServerLevel extends Level implements WorldGenLevel { progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -629,10 +600,10 @@ index a3c316997605e4e5747e60dba5e2337316779339..e7e762bbc096c0e87c3d2513d67fec87 } 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 b5ff4750b669ffd60d7f3c926691fdce11dd52e4..5af28dcdd37d1bbe4d5873957e390016a9961fbb 100644 +index c38f235b069b85e6ad6ebd0bdd528a109b310350..9440d259e3dd5f9b47186980c44e2ac4b54dfcd0 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2589,7 +2589,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2594,7 +2594,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic } } // Paper End @@ -641,7 +612,7 @@ index b5ff4750b669ffd60d7f3c926691fdce11dd52e4..5af28dcdd37d1bbe4d5873957e390016 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2599,7 +2599,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2604,7 +2604,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -650,7 +621,7 @@ index b5ff4750b669ffd60d7f3c926691fdce11dd52e4..5af28dcdd37d1bbe4d5873957e390016 return; } -@@ -2612,7 +2612,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2617,7 +2617,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -660,10 +631,10 @@ index b5ff4750b669ffd60d7f3c926691fdce11dd52e4..5af28dcdd37d1bbe4d5873957e390016 } // 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 2e404f8ef0f0f2f9de1356cf7f353b55ee1e9c45..c27e455321951e76e4818fec0e64301f5620dbf6 100644 +index 64a1fd3316f7b0b6e7feafc1be4649a4084d61a3..1327e5d045c672e121ae57f1cfcbeb46be6c00ab 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1242,7 +1242,7 @@ public abstract class PlayerList { +@@ -1248,7 +1248,7 @@ public abstract class PlayerList { public void saveAll(int interval) { io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main @@ -672,7 +643,7 @@ index 2e404f8ef0f0f2f9de1356cf7f353b55ee1e9c45..c27e455321951e76e4818fec0e64301f int numSaved = 0; long now = MinecraftServer.currentTick; for (int i = 0; i < this.players.size(); ++i) { -@@ -1253,7 +1253,7 @@ public abstract class PlayerList { +@@ -1259,7 +1259,7 @@ public abstract class PlayerList { } // Paper end } @@ -731,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 52d2fa575a29ec36280bb4dbcab6954ac468d2a1..547f51eeaab3555559d0bf8456753df471725de1 100644 +index 10cff85dd4a59558dd487a3c5c7871a026835ceb..b4bfddb406fce51d1100976d9445db161dcb3f22 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1022,15 +1022,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -909,15 +909,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -753,7 +724,7 @@ index 52d2fa575a29ec36280bb4dbcab6954ac468d2a1..547f51eeaab3555559d0bf8456753df4 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); int tilesThisCycle = 0; -@@ -1063,7 +1063,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -950,7 +950,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); @@ -763,7 +734,7 @@ index 52d2fa575a29ec36280bb4dbcab6954ac468d2a1..547f51eeaab3555559d0bf8456753df4 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 6180679d922ea61d05d452971ec2d506a724d3c3..54467e5ab4a4629f88fe48bd4b7f0db821e4553f 100644 +index 089dd93d4cd4c1f72e63c4944b3b82c1e2ba732d..4e2611c9a7df8343f76e3be3f01f2f828cdf8a1d 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 { @@ -785,10 +756,10 @@ index 6180679d922ea61d05d452971ec2d506a724d3c3..54467e5ab4a4629f88fe48bd4b7f0db8 } 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 96394bc930a8dab04cd7f5b6e0e9d457b11f58e3..4b71677a145918854cfc6aff40f0bc71933864f7 100644 +index 17398a48ff84ba1b21bd64f7857e3a326fcc54cf..c4b4091a52cc08c33ab73bc1ed725477aae26982 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -925,7 +925,7 @@ public class LevelChunk extends ChunkAccess { +@@ -881,7 +881,7 @@ public class LevelChunk extends ChunkAccess { this.chunkHolder.getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -797,7 +768,7 @@ index 96394bc930a8dab04cd7f5b6e0e9d457b11f58e3..4b71677a145918854cfc6aff40f0bc71 this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -945,7 +945,7 @@ public class LevelChunk extends ChunkAccess { +@@ -901,7 +901,7 @@ public class LevelChunk extends ChunkAccess { } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -806,7 +777,7 @@ index 96394bc930a8dab04cd7f5b6e0e9d457b11f58e3..4b71677a145918854cfc6aff40f0bc71 } } } -@@ -1318,7 +1318,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1259,7 +1259,7 @@ public class LevelChunk extends ChunkAccess { ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); gameprofilerfiller.push(this::getType); @@ -815,7 +786,7 @@ index 96394bc930a8dab04cd7f5b6e0e9d457b11f58e3..4b71677a145918854cfc6aff40f0bc71 BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1340,7 +1340,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1281,7 +1281,7 @@ public class LevelChunk extends ChunkAccess { // Paper end // Spigot start } finally { @@ -902,10 +873,10 @@ index 138407c2d4b0bc55ddb9aac5d2aa3edadda090fb..a6e9e503a496c18e2501b03ec84f4600 // 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 d9448a222bbe2cbd09debfb93f339b175ed44c92..ee64ddb0da23ea1e54d0295324aca5b46a438111 100644 +index 17f99670d7e3dfb4a2863722eedc60dcfd73729d..683232547a7c85b5d79c3739eac01086dd5aa5c8 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) { @@ -914,7 +885,7 @@ index d9448a222bbe2cbd09debfb93f339b175ed44c92..ee64ddb0da23ea1e54d0295324aca5b4 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 +@@ -222,7 +222,7 @@ public class ActivationRange } // Paper end } diff --git a/patches/server/0271-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0276-mob-spawning-option-to-ignore-creative-players.patch similarity index 94% rename from patches/server/0271-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0276-mob-spawning-option-to-ignore-creative-players.patch index e3ccccd82..fcdb4c764 100644 --- a/patches/server/0271-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0276-mob-spawning-option-to-ignore-creative-players.patch @@ -5,7 +5,7 @@ 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 089dd93d4cd4c1f72e63c4944b3b82c1e2ba732d..87e9bde78e4e90d17a02c1ed227c07fbe8c24f24 100644 +index 4e2611c9a7df8343f76e3be3f01f2f828cdf8a1d..dc20ef09fd47f95639ca3de237efe41765fb4cb9 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 { @@ -18,7 +18,7 @@ index 089dd93d4cd4c1f72e63c4944b3b82c1e2ba732d..87e9bde78e4e90d17a02c1ed227c07fb 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 320476c23459b0e73b5a6de7ff2d50e1bbd38491..e138d1fa48346e0f523da8c74750383604e69b39 100644 +index 829c1062efed4429964c8f4ef9da977c0961aa44..5caf5461e921144e8a170e267757ef3101a059d8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -383,6 +383,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0272-Add-skeleton-bow-accuracy-option.patch b/patches/server/0277-Add-skeleton-bow-accuracy-option.patch similarity index 94% rename from patches/server/0272-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0277-Add-skeleton-bow-accuracy-option.patch index 1ca03bbeb..8b3f26c75 100644 --- a/patches/server/0272-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0277-Add-skeleton-bow-accuracy-option.patch @@ -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 d740cdf24fde59376c32eb2bd59d95fca0d71fe2..513ae5170af015928b8ce472fcf70256a611a5df 100644 +index 5caf5461e921144e8a170e267757ef3101a059d8..5c26ea9b1bb8efe9bd213e24e3371ab7cc017077 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2451,6 +2451,8 @@ public class PurpurWorldConfig { +@@ -2469,6 +2469,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index d740cdf24fde59376c32eb2bd59d95fca0d71fe2..513ae5170af015928b8ce472fcf70256 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2465,6 +2467,18 @@ public class PurpurWorldConfig { +@@ -2483,6 +2485,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/todo/server/0276-Remove-Mojang-Profiler.patch b/patches/server/0278-Remove-Mojang-Profiler.patch similarity index 73% rename from patches/todo/server/0276-Remove-Mojang-Profiler.patch rename to patches/server/0278-Remove-Mojang-Profiler.patch index 300a77d05..c2b823a48 100644 --- a/patches/todo/server/0276-Remove-Mojang-Profiler.patch +++ b/patches/server/0278-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 314ab6183e31b4bac6a40c1f8007d48e9cab1760..6b05907bfec377e72a8858534d001bda10a1c88a 100644 +index 5f6cc8b16af6dce3b74f0c2c662b0ecf84ae8d36..52b06c34d9d3ffb8844556e7b0eaed5a7f03da0c 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -149,7 +149,7 @@ public class Commands { +@@ -150,7 +150,7 @@ public class Commands { DamageCommand.register(this.dispatcher, commandRegistryAccess); DataCommands.register(this.dispatcher); DataPackCommand.register(this.dispatcher); @@ -17,7 +17,7 @@ index 314ab6183e31b4bac6a40c1f8007d48e9cab1760..6b05907bfec377e72a8858534d001bda DefaultGameModeCommands.register(this.dispatcher); DifficultyCommand.register(this.dispatcher); EffectCommands.register(this.dispatcher, commandRegistryAccess); -@@ -315,9 +315,9 @@ public class Commands { +@@ -317,9 +317,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 314ab6183e31b4bac6a40c1f8007d48e9cab1760..6b05907bfec377e72a8858534d001bda byte b0; -@@ -400,7 +400,7 @@ public class Commands { +@@ -402,7 +402,7 @@ public class Commands { b0 = 0; } } finally { @@ -39,10 +39,10 @@ index 314ab6183e31b4bac6a40c1f8007d48e9cab1760..6b05907bfec377e72a8858534d001bda return b0; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 68552716b7ed7f93cb84b1951af85344dc2e83b0..2bd58d13d4c48fdddee56e2b417b68fe15072386 100644 +index 7f25760aed007435f8a6728323cc566ad1da146e..af3ab7bebc69f0485ec2eb5550ad52171cca6de3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -343,13 +343,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1447,7 +1447,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 68552716b7ed7f93cb84b1951af85344dc2e83b0..2bd58d13d4c48fdddee56e2b417b68fe try { //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1593,17 +1593,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2540,40 +2540,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop functions, ResourceLocation label) { @@ -357,7 +356,7 @@ index f662278d302661e57c850529ede81ea2889a82cb..8645313e646e6d5278e285f744944776 Iterator iterator = functions.iterator(); while (iterator.hasNext()) { -@@ -69,7 +69,7 @@ public class ServerFunctionManager { +@@ -70,7 +70,7 @@ public class ServerFunctionManager { this.execute(customfunction, this.getGameLoopSender()); } @@ -366,22 +365,22 @@ index f662278d302661e57c850529ede81ea2889a82cb..8645313e646e6d5278e285f744944776 } public int execute(CommandFunction function, CommandSourceStack source) { -@@ -177,10 +177,10 @@ public class ServerFunctionManager { +@@ -187,10 +187,10 @@ public class ServerFunctionManager { try { - ServerFunctionManager.QueuedCommand customfunctiondata_b = (ServerFunctionManager.QueuedCommand) this.commandQueue.removeFirst(); + ServerFunctionManager.QueuedCommand customfunctiondata_queuedcommand = (ServerFunctionManager.QueuedCommand) this.commandQueue.removeFirst(); - ProfilerFiller gameprofilerfiller = ServerFunctionManager.this.server.getProfiler(); + //ProfilerFiller gameprofilerfiller = ServerFunctionManager.this.server.getProfiler(); // Purpur - Objects.requireNonNull(customfunctiondata_b); -- gameprofilerfiller.push(customfunctiondata_b::toString); -+ //gameprofilerfiller.push(customfunctiondata_b::toString); // Purpur - this.depth = customfunctiondata_b.depth; - customfunctiondata_b.execute(ServerFunctionManager.this, this.commandQueue, i, this.tracer); - if (!this.nestedCalls.isEmpty()) { -@@ -192,7 +192,7 @@ public class ServerFunctionManager { - this.nestedCalls.clear(); - } + Objects.requireNonNull(customfunctiondata_queuedcommand); +- gameprofilerfiller.push(customfunctiondata_queuedcommand::toString); ++ //gameprofilerfiller.push(customfunctiondata_queuedcommand::toString); // Purpur + 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 { + + this.nestedCalls.clear(); } finally { - ServerFunctionManager.this.server.getProfiler().pop(); + //ServerFunctionManager.this.server.getProfiler().pop(); // Purpur @@ -389,10 +388,10 @@ index f662278d302661e57c850529ede81ea2889a82cb..8645313e646e6d5278e285f744944776 ++j; diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index eaef5f9119cd2e5eab2476f4126daff912eeaeb2..57fdef8b16e1ed9a4693356144b4685bbcea285c 100644 +index 89aebe46deff84ab458b6e2302a98a42103b7195..530ce9950b83420d5a033e6c552dafb388945c05 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -621,20 +621,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -542,20 +542,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } protected void tick(BooleanSupplier shouldKeepTicking) { @@ -418,10 +417,10 @@ index eaef5f9119cd2e5eab2476f4126daff912eeaeb2..57fdef8b16e1ed9a4693356144b4685b 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 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe608b4eb1c1 100644 +index a616c9a2532beb67960259bf1910da1759cfe698..e2bab8e845e7ac940ab690dcb2db25cdf92b6dcf 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -431,16 +431,16 @@ public class ServerChunkCache extends ChunkSource { +@@ -428,16 +428,16 @@ public class ServerChunkCache extends ChunkSource { return ifLoaded; } // Paper end @@ -441,7 +440,7 @@ index 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe60 CompletableFuture> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create, true); // Paper ServerChunkCache.MainThreadExecutor chunkproviderserver_b = this.mainThreadProcessor; -@@ -628,24 +628,24 @@ public class ServerChunkCache extends ChunkSource { +@@ -626,24 +626,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 @@ -470,8 +469,8 @@ index 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe60 + //this.level.getProfiler().popPush("chunks"); // Purpur if (tickChunks) { //this.level.timings.chunks.startTiming(); // Paper - timings // Purpur - this.chunkMap.playerChunkManager.tick(); // Paper - this is mostly is to account for view distance changes -@@ -654,10 +654,10 @@ public class ServerChunkCache extends ChunkSource { + this.chunkMap.level.playerChunkLoader.tick(); // Paper - replace player chunk loader - this is mostly required to account for view distance changes +@@ -652,10 +652,10 @@ public class ServerChunkCache extends ChunkSource { } //this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur @@ -484,7 +483,7 @@ index 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe60 this.clearCache(); } -@@ -703,14 +703,14 @@ public class ServerChunkCache extends ChunkSource { +@@ -701,13 +701,13 @@ public class ServerChunkCache extends ChunkSource { } // Paper end - optimize isOutisdeRange LevelData worlddata = this.level.getLevelData(); @@ -493,7 +492,6 @@ index 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe60 - 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,10 +500,10 @@ index 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe60 //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int l = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - per player mob spawning -@@ -735,13 +735,13 @@ public class ServerChunkCache extends ChunkSource { +@@ -725,13 +725,13 @@ 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 @@ -518,7 +516,7 @@ index 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe60 boolean flag2 = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit // Paper - only shuffle if per-player mob spawning is disabled -@@ -792,15 +792,15 @@ public class ServerChunkCache extends ChunkSource { +@@ -783,15 +783,15 @@ public class ServerChunkCache extends ChunkSource { } // Paper end - optimise chunk tick iteration //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur @@ -537,7 +535,7 @@ index 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe60 //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); -@@ -814,7 +814,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -805,7 +805,7 @@ public class ServerChunkCache extends ChunkSource { } } //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur @@ -546,7 +544,7 @@ index 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe60 // 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()); -@@ -1029,7 +1029,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -996,7 +996,7 @@ public class ServerChunkCache extends ChunkSource { @Override protected void doRunTask(Runnable task) { @@ -556,10 +554,10 @@ index 2c23321c826d929981df51f2cc60cdcdb649a43f..0ae45cf5a084fd412305e8b2f5dabe60 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc74459822a48 100644 +index 48e259562bd46075e4d64ed1a291e32c33fbefca..bfa949be7bb08b0d7c3ec5611181151a1c294ff7 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -654,12 +654,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -714,12 +714,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } } // Paper end - optimise checkDespawn @@ -575,7 +573,7 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 this.advanceWeatherCycle(); int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; -@@ -686,32 +686,32 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -746,32 +746,32 @@ public class ServerLevel extends Level implements WorldGenLevel { this.updateSkyBrightness(); this.tickTime(); @@ -616,7 +614,7 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players if (flag) { -@@ -719,12 +719,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -779,12 +779,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } if (flag || this.emptyTime++ < 300) { @@ -632,7 +630,7 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -735,9 +735,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -794,9 +794,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 +642,13 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list Entity entity1 = entity.getVehicle(); -@@ -749,7 +749,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -808,22 +808,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 -@@ -764,20 +764,19 @@ public class ServerLevel extends Level implements WorldGenLevel { - // Paper end - } - // Pufferfish end + this.guardEntityTick(this::tickNonPassenger, entity); - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } @@ -677,7 +669,7 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 } @Override -@@ -859,9 +858,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -903,9 +902,9 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -688,17 +680,17 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 + //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 -@@ -899,7 +898,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 +@@ -943,7 +942,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } } - gameprofilerfiller.popPush("iceandsnow"); + //gameprofilerfiller.popPush("iceandsnow"); // Purpur int l; + int i1; - if (!this.paperConfig().environment.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking // Pufferfish - optimize further random ticking -@@ -950,7 +949,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -995,7 +994,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking @@ -707,7 +699,7 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { LevelChunkSection[] sections = chunk.getSections(); -@@ -986,7 +985,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1031,7 +1030,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise random block ticking //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur @@ -716,7 +708,7 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 } public Optional findLightningRod(BlockPos pos) { -@@ -1282,19 +1281,19 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1327,19 +1326,19 @@ public class ServerLevel extends Level implements WorldGenLevel { //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -741,7 +733,7 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1323,12 +1322,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1368,12 +1367,12 @@ public class ServerLevel extends Level implements WorldGenLevel { // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -758,7 +750,7 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1340,7 +1339,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1385,7 +1384,7 @@ public class ServerLevel extends Level implements WorldGenLevel { vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -768,10 +760,10 @@ index e7e762bbc096c0e87c3d2513d67fec87807b55a4..86b8485c0fb1dc5cd79c9e24546dc744 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 dd21804bb62ad7ae2a086600d9cec7e6ca05f3e8..b425542bfe40f9e621cc5139eafc8266f1c118bf 100644 +index a155e61a95c0fe4fc16d6d18a02a83b6d5b2a930..c3bb1f0d4ea44d88f2f5453e9fc8b109bcd9fa24 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1199,7 +1199,7 @@ public class ServerPlayer extends Player { +@@ -1240,7 +1240,7 @@ public class ServerPlayer extends Player { PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); if (shapedetectorshape != null) { @@ -780,7 +772,7 @@ index dd21804bb62ad7ae2a086600d9cec7e6ca05f3e8..b425542bfe40f9e621cc5139eafc8266 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 -@@ -1222,8 +1222,8 @@ public class ServerPlayer extends Player { +@@ -1263,8 +1263,8 @@ public class ServerPlayer extends Player { worldserver = ((CraftWorld) exit.getWorld()).getHandle(); // CraftBukkit end @@ -791,7 +783,7 @@ index dd21804bb62ad7ae2a086600d9cec7e6ca05f3e8..b425542bfe40f9e621cc5139eafc8266 if (true) { // CraftBukkit this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds -@@ -1242,7 +1242,7 @@ public class ServerPlayer extends Player { +@@ -1282,7 +1282,7 @@ public class ServerPlayer extends Player { this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringPortalTeleport(this); @@ -801,7 +793,7 @@ index dd21804bb62ad7ae2a086600d9cec7e6ca05f3e8..b425542bfe40f9e621cc5139eafc8266 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 5af28dcdd37d1bbe4d5873957e390016a9961fbb..f3ce7a1b5af187f281e0a3da03494ed323a585f9 100644 +index 9440d259e3dd5f9b47186980c44e2ac4b54dfcd0..bf9635072d4ffc298a5221309bdf329c67e0451a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -410,7 +410,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -1027,37 +1019,37 @@ 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 fe0b002a8ebf2f8495bab456854483c341e6a14e..889db414e3442f51f77be097806e52b4941362d5 100644 +index 3a5ca6953a28c13b2f6ba0f38d7fa3a46df7947b..b2853cdac60ff1497423078e907530c446a499fb 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -825,7 +825,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - return; - } - // Pufferfish end - entity TTL -- this.level.getProfiler().push("entityBaseTick"); -+ //this.level.getProfiler().push("entityBaseTick"); // Purpur +@@ -783,7 +783,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { + // CraftBukkit end + + public void baseTick() { +- this.level().getProfiler().push("entityBaseTick"); ++ //this.level().getProfiler().push("entityBaseTick"); // Purpur 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()) { -@@ -886,7 +886,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -844,7 +844,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.firstTick = false; -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur } public void setSharedFlagOnFire(boolean onFire) { -@@ -1060,7 +1060,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1063,7 +1063,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } } -- this.level.getProfiler().push("move"); -+ //this.level.getProfiler().push("move"); // Purpur +- this.level().getProfiler().push("move"); ++ //this.level().getProfiler().push("move"); // Purpur if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1069,7 +1069,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1072,7 +1072,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); @@ -1066,23 +1058,23 @@ index fe0b002a8ebf2f8495bab456854483c341e6a14e..889db414e3442f51f77be097806e52b4 return; } // Paper end -@@ -1090,8 +1090,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1093,8 +1093,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("rest"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("rest"); // Purpur +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("rest"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("rest"); // Purpur boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1110,7 +1110,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -1113,7 +1113,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - this.checkFallDamage(vec3d1.y, this.onGround, iblockdata, blockposition); + this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); @@ -1090,290 +1082,285 @@ index fe0b002a8ebf2f8495bab456854483c341e6a14e..889db414e3442f51f77be097806e52b4 this.setRemainingFireTicks(-this.getFireImmuneTicks()); } -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur } } // Paper start - detailed watchdog information -@@ -2965,7 +2965,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3037,7 +3037,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit -- this.level.getProfiler().push("portal"); -+ //this.level.getProfiler().push("portal"); // Purpur +- this.level().getProfiler().push("portal"); ++ //this.level().getProfiler().push("portal"); // Purpur 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); -@@ -2983,7 +2983,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3055,7 +3055,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } } // Paper // CraftBukkit end -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur } this.isInsidePortal = false; -@@ -3450,14 +3450,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3526,14 +3526,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } // Paper end - if (this.level instanceof ServerLevel && !this.isRemoved()) { -- this.level.getProfiler().push("changeDimension"); -+ //this.level.getProfiler().push("changeDimension"); // Purpur + if (this.level() instanceof ServerLevel && !this.isRemoved()) { +- this.level().getProfiler().push("changeDimension"); ++ //this.level().getProfiler().push("changeDimension"); // Purpur // CraftBukkit start - // this.decouple(); + // this.unRide(); if (worldserver == null) { return null; } // CraftBukkit end -- this.level.getProfiler().push("reposition"); -+ //this.level.getProfiler().push("reposition"); // Purpur +- this.level().getProfiler().push("reposition"); ++ //this.level().getProfiler().push("reposition"); // Purpur 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) { -@@ -3491,7 +3491,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3567,7 +3567,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.unRide(); // CraftBukkit end -- this.level.getProfiler().popPush("reloading"); -+ //this.level.getProfiler().popPush("reloading"); // Purpur +- this.level().getProfiler().popPush("reloading"); ++ //this.level().getProfiler().popPush("reloading"); // Purpur // Paper start - Change lead drop timing to prevent dupe if (this instanceof Mob) { ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3514,10 +3514,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3590,10 +3590,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.removeAfterChangingDimensions(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - ((ServerLevel) this.level).resetEmptyTime(); +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur + ((ServerLevel) this.level()).resetEmptyTime(); worldserver.resetEmptyTime(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur return entity; } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d96de1ee220465cb268819f9683d52a1251ff36a..ac323afc8491749969e53aa3841bc684d79c48d3 100644 +index b8fbc726f1f73a4c20ea7eeca2846c864b9e67bc..3084ea26a9364a58a78a4f75df40aa509124ac44 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -393,7 +393,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -412,7 +412,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } super.baseTick(); -- this.level.getProfiler().push("livingEntityBaseTick"); -+ //this.level.getProfiler().push("livingEntityBaseTick"); // Purpur - if (this.fireImmune() || this.level.isClientSide) { +- this.level().getProfiler().push("livingEntityBaseTick"); ++ //this.level().getProfiler().push("livingEntityBaseTick"); // Purpur + if (this.fireImmune() || this.level().isClientSide) { this.clearFire(); } -@@ -496,7 +496,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -515,7 +515,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur } public boolean canSpawnSoulSpeedParticle() { -@@ -3092,10 +3092,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3108,10 +3108,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; -- this.level.getProfiler().push("headTurn"); -+ //this.level.getProfiler().push("headTurn"); // Purpur +- this.level().getProfiler().push("headTurn"); ++ //this.level().getProfiler().push("headTurn"); // Purpur f2 = this.tickHeadTurn(f1, f2); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("rangeChecks"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("rangeChecks"); // Purpur +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("rangeChecks"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("rangeChecks"); // Purpur // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3107,7 +3107,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3123,7 +3123,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3396,19 +3396,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3412,19 +3412,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d4, d5, d6); -- this.level.getProfiler().push("ai"); -+ //this.level.getProfiler().push("ai"); // Purpur +- this.level().getProfiler().push("ai"); ++ //this.level().getProfiler().push("ai"); // Purpur if (this.isImmobile()) { this.jumping = false; this.xxa = 0.0F; this.zza = 0.0F; } else if (this.isEffectiveAi()) { -- this.level.getProfiler().push("newAi"); -+ //this.level.getProfiler().push("newAi"); // Purpur +- this.level().getProfiler().push("newAi"); ++ //this.level().getProfiler().push("newAi"); // Purpur this.serverAiStep(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur } -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("jump"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("jump"); // Purpur +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("jump"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("jump"); // Purpur if (this.jumping && this.isAffectedByFluids()) { double d7; -@@ -3435,8 +3435,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3451,8 +3451,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("travel"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("travel"); // Purpur +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("travel"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("travel"); // Purpur this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3452,8 +3452,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3479,8 +3479,8 @@ public abstract class LivingEntity extends Entity implements Attackable { + this.travel(vec3d1); } - //SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot // Paper -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("freezing"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("freezing"); // Purpur - if (!this.level.isClientSide && !this.isDeadOrDying() && !freezeLocked) { // Paper - Freeze Tick Lock API +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("freezing"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("freezing"); // Purpur + if (!this.level().isClientSide && !this.isDeadOrDying() && !freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3470,15 +3470,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3497,15 +3497,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("push"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("push"); // Purpur +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("push"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("push"); // Purpur if (this.autoSpinAttackTicks > 0) { --this.autoSpinAttackTicks; this.checkAutoSpinAttack(axisalignedbb, this.getBoundingBox()); } this.pushEntities(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur // Paper start // 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 bf5705551720d338ee0b790504727685b1f8f026..8e2274f7dce34e0997356205cf96e46f8d41cca1 100644 +index e3634d7dfd2558173a5c9d05e4ab285c80237684..3162c27ee305f5280a326b953288c846d0b6cae0 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -362,14 +362,14 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -363,13 +363,13 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void baseTick() { super.baseTick(); -- this.level.getProfiler().push("mobBaseTick"); -+ //this.level.getProfiler().push("mobBaseTick"); // Purpur +- this.level().getProfiler().push("mobBaseTick"); ++ //this.level().getProfiler().push("mobBaseTick"); // Purpur if (this.isAlive() && this.random.nextInt(1000) < this.ambientSoundTime++) { this.resetAmbientSoundTime(); this.playAmbientSound(); } +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur incrementTicksSinceLastInteraction(); // Purpur -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur } - // Purpur start -@@ -699,7 +699,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -700,7 +700,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @Override public void aiStep() { super.aiStep(); -- this.level.getProfiler().push("looting"); -+ //this.level.getProfiler().push("looting"); // Purpur - if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level().purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { +- this.level().getProfiler().push("looting"); ++ //this.level().getProfiler().push("looting"); // Purpur + 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())); -@@ -719,7 +719,7 @@ public abstract class Mob extends LivingEntity implements Targeting { + List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); +@@ -720,7 +720,7 @@ public abstract class Mob extends LivingEntity implements Targeting { } } -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur } protected Vec3i getPickupReach() { -@@ -931,46 +931,46 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -932,42 +932,42 @@ public abstract class Mob extends LivingEntity implements Targeting { return; } // Paper end -- this.level.getProfiler().push("sensing"); -+ //this.level.getProfiler().push("sensing"); // Purpur +- this.level().getProfiler().push("sensing"); ++ //this.level().getProfiler().push("sensing"); // Purpur this.sensing.tick(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur - int i = this.level.getServer().getTickCount() + this.getId(); +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur + int i = this.level().getServer().getTickCount() + this.getId(); 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.level().getProfiler().push("targetSelector"); ++ //this.level().getProfiler().push("targetSelector"); // Purpur 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.level().getProfiler().pop(); +- this.level().getProfiler().push("goalSelector"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("goalSelector"); // Purpur this.goalSelector.tickRunningGoals(false); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur } else { -- 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.level().getProfiler().push("targetSelector"); ++ //this.level().getProfiler().push("targetSelector"); // Purpur 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.level().getProfiler().pop(); +- this.level().getProfiler().push("goalSelector"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("goalSelector"); // Purpur this.goalSelector.tick(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur } -- this.level.getProfiler().push("navigation"); -+ //this.level.getProfiler().push("navigation"); // Purpur +- this.level().getProfiler().push("navigation"); ++ //this.level().getProfiler().push("navigation"); // Purpur this.navigation.tick(); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("mob tick"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("mob tick"); // Purpur +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("mob tick"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("mob tick"); // Purpur this.customServerAiStep(); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("controls"); -- this.level.getProfiler().push("move"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("controls"); // Purpur -+ //this.level.getProfiler().push("move"); // Purpur +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("controls"); +- this.level().getProfiler().push("move"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("controls"); // Purpur ++ //this.level().getProfiler().push("move"); // Purpur this.moveControl.tick(); -- this.level.getProfiler().popPush("look"); -+ //this.level.getProfiler().popPush("look"); // Purpur +- this.level().getProfiler().popPush("look"); ++ //this.level().getProfiler().popPush("look"); // Purpur this.lookControl.tick(); -- this.level.getProfiler().popPush("jump"); -+ //this.level.getProfiler().popPush("jump"); // Purpur +- this.level().getProfiler().popPush("jump"); ++ //this.level().getProfiler().popPush("jump"); // Purpur this.jumpControl.tick(); -- this.level.getProfiler().pop(); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().pop(); // Purpur this.sendDebugPackets(); } 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() { @@ -1384,7 +1371,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 { } } @@ -1395,7 +1382,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 { } } @@ -1412,7 +1399,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 { } } @@ -1422,7 +1409,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 7ffe5bef3778d5971ea4ceadf3102725fd0d08cd..6d127ed3da899851ca95b2be6792e2abca1aca12 100644 +index b376670d11088e524ce246f667e580e90cd119a3..fdb08ecc19bc4a1bc93cf6b18adcea2bc5573965 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 { @@ -1441,282 +1428,276 @@ index 7ffe5bef3778d5971ea4ceadf3102725fd0d08cd..6d127ed3da899851ca95b2be6792e2ab this.targetPos = path.getTarget(); this.reachRange = distance; diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java -index 288c6627906d07c0d223eacd84ae4eb31a349998..9babe636176da3c40598eb5bdac0919a1704eaa0 100644 +index 51772f03a3469b11e7166ec6f3a1b9c64a606221..02f2f46ccc48bb4d9bd08555818b0489f60d9f13 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java @@ -26,9 +26,9 @@ public class Sensing { } else if (this.unseen.contains(i)) { return false; } else { -- this.mob.level.getProfiler().push("hasLineOfSight"); -+ //this.mob.level.getProfiler().push("hasLineOfSight"); // Purpur +- this.mob.level().getProfiler().push("hasLineOfSight"); ++ //this.mob.level().getProfiler().push("hasLineOfSight"); // Purpur boolean bl = this.mob.hasLineOfSight(entity); -- this.mob.level.getProfiler().pop(); -+ //this.mob.level.getProfiler().pop(); // Purpur +- this.mob.level().getProfiler().pop(); ++ //this.mob.level().getProfiler().pop(); // Purpur if (bl) { 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 c743f487b7a327ee66cffc86cbe5d13c81fd2cab..1c136aa0d6dcad18b5e6e2084d2c166105d54a3a 100644 +index 9588f9adad23aa6f2240d1ddb2f92aa82e8e740b..15c4531865d829ea90d060ee83122a80ab39028b 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 -@@ -261,13 +261,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier { - private int behaviorTick = 0; // Pufferfish +@@ -259,12 +259,12 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS + @Override protected void customServerAiStep() { -- this.level.getProfiler().push("allayBrain"); -+ //this.level.getProfiler().push("allayBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("allayActivityUpdate"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("allayActivityUpdate"); // Purpur +- this.level().getProfiler().push("allayBrain"); ++ //this.level().getProfiler().push("allayBrain"); // Purpur + this.getBrain().tick((ServerLevel) this.level(), this); +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("allayActivityUpdate"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("allayActivityUpdate"); // Purpur AllayAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur super.customServerAiStep(); } 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 ca559f1871abaee97fe488a2c57b5247f5a161fb..18ce5389040b516a7061d2d8e104f400183fdeec 100644 +index ec49c2af2fb09b8ead5529d0ec5cf59d2ab70e6b..a8cb79c25d49ef4f99de2b290ef5e60f3f175c34 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 a66f77ec5cb5a2b9f6944c2a747b22d8f89e9cb7..31922ac1139f34e0da61a719e3645c1aaa188890 100644 +index d560bb344fefdfb2e8393dc1c5d96ef6d9dbf0e5..42c571c154ebdd24fabc5354618e6be064d17f05 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 -@@ -156,13 +156,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider +@@ -157,13 +157,13 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider @Override protected void customServerAiStep() { -- this.level.getProfiler().push("camelBrain"); -+ //this.level.getProfiler().push("camelBrain"); // Purpur +- this.level().getProfiler().push("camelBrain"); ++ //this.level().getProfiler().push("camelBrain"); // Purpur Brain brain = (Brain) this.getBrain(); // Paper - decompile fix - brain.tick((ServerLevel)this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("camelActivityUpdate"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("camelActivityUpdate"); // Purpur + brain.tick((ServerLevel)this.level(), this); +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("camelActivityUpdate"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("camelActivityUpdate"); // Purpur CamelAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur super.customServerAiStep(); } 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 84de3dc9695eb857874cb60940049a978222c9ad..c355aaed76663d37a5da8b2f49f9808828b4ef9b 100644 +index e60f530f78feebf851382f30b035ec9bcacf22b4..4eb091a1cd9c803bfc0a2258099f03404be7d82b 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 -@@ -223,13 +223,13 @@ public class Frog extends Animal implements VariantHolder { - private int behaviorTick = 0; // Pufferfish +@@ -217,12 +217,12 @@ public class Frog extends Animal implements VariantHolder { + @Override protected void customServerAiStep() { -- this.level.getProfiler().push("frogBrain"); -+ //this.level.getProfiler().push("frogBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel)this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("frogActivityUpdate"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("frogActivityUpdate"); // Purpur +- this.level().getProfiler().push("frogBrain"); ++ //this.level().getProfiler().push("frogBrain"); // Purpur + this.getBrain().tick((ServerLevel)this.level(), this); +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("frogActivityUpdate"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("frogActivityUpdate"); // Purpur FrogAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur super.customServerAiStep(); } 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 63553436193cc3063cd4c4e9f50695fb5209ff9d..aadc6743deb195ac3368548a75be641ffd3da404 100644 +index 955e112f52898ffde28e1b49b6e91d3e33e057b5..9db4817cf503c361a6bcb9a4174d8c4319c664b2 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,12 +116,12 @@ public class Tadpole extends AbstractFish { + @Override protected void customServerAiStep() { -- this.level.getProfiler().push("tadpoleBrain"); -+ //this.level.getProfiler().push("tadpoleBrain"); // Purpur - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("tadpoleActivityUpdate"); -+ //this.level.getProfiler().pop(); // Purpur -+ //this.level.getProfiler().push("tadpoleActivityUpdate"); // Purpur +- this.level().getProfiler().push("tadpoleBrain"); ++ //this.level().getProfiler().push("tadpoleBrain"); // Purpur + this.getBrain().tick((ServerLevel) this.level(), this); +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("tadpoleActivityUpdate"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("tadpoleActivityUpdate"); // Purpur TadpoleAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur super.customServerAiStep(); } 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 cb55b8479f8874ff2fa0941e277c4891cf3fe8d9..8129ad2ca6e0b4c6ca586dc221dcce1e883def9b 100644 +index 0ebb9ac9d951741eb9dea8475380cfcc68becae3..a707954d8e5b88ed37c2640437a10781ab7e56ce 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 -@@ -223,13 +223,14 @@ public class Goat extends Animal { - private int behaviorTick = 0; // Pufferfish +@@ -222,13 +222,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 - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().pop(); -- this.level.getProfiler().push("goatActivityUpdate"); -+ //this.level.getProfiler().pop -+ // (); // Purpur -+ //this.level.getProfiler().push("goatActivityUpdate"); // Purpur +- 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 + this.getBrain().tick((ServerLevel) this.level(), this); +- this.level().getProfiler().pop(); +- this.level().getProfiler().push("goatActivityUpdate"); ++ //this.level().getProfiler().pop(); // Purpur ++ //this.level().getProfiler().push("goatActivityUpdate"); // Purpur GoatAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur super.customServerAiStep(); } 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 a34f41878bffa7bbe01310be95bf4bc6711cc0ef..adae992ade60e0fce7ca0cc10192720025a574fe 100644 +index ac84a3812fa8d5b61b69cc29cf0a756f5ac8a886..479b041711134ea2eaa0e00f8ef4858a84de30d2 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 -@@ -470,11 +470,11 @@ public class Sniffer extends Animal { +@@ -514,11 +514,11 @@ public class Sniffer extends Animal { @Override protected void customServerAiStep() { -- this.level.getProfiler().push("snifferBrain"); -+ //this.level.getProfiler().push("snifferBrain"); // Purpur - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().popPush("snifferActivityUpdate"); -+ //this.level.getProfiler().popPush("snifferActivityUpdate"); // Purpur +- this.level().getProfiler().push("snifferBrain"); ++ //this.level().getProfiler().push("snifferBrain"); // Purpur + this.getBrain().tick((ServerLevel) this.level(), this); +- this.level().getProfiler().popPush("snifferActivityUpdate"); ++ //this.level().getProfiler().popPush("snifferActivityUpdate"); // Purpur SnifferAi.updateActivity(this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur super.customServerAiStep(); } 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 d7b76ae05754e0ccbddb4bfd5f545b9e0ca6c3a1..052eac2c63ecaa052c9fe6ea3d3d1000da8a33fa 100644 +index fc5272e8671ff4bda3bd17abe5c31cc0ff4114f8..399e9baedaf37597c539aa5432a513365df83b5e 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 { @Override protected void customServerAiStep() { -- this.level.getProfiler().push("zoglinBrain"); -+ //this.level.getProfiler().push("zoglinBrain"); // Purpur +- this.level().getProfiler().push("zoglinBrain"); ++ //this.level().getProfiler().push("zoglinBrain"); // Purpur if (getRider() == null || !this.isControllable()) // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel)this.level, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur + this.getBrain().tick((ServerLevel)this.level(), this); +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur this.updateActivity(); } 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 f03b8721991810c50887e24171a45d8f37fea446..63ffb8c04f1408d028af086ba907551a05b96e72 100644 +index 5bc0bf6486b146ecefe747f029f79ab504dc6423..13beaa4b701b75a4387c96a63c6021632ebad479 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 +@@ -165,10 +165,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 - this.getBrain().tick((ServerLevel)this.level, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- 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 // Purpur - TODO: Uncomment when pufferfish patch + this.getBrain().tick((ServerLevel)this.level(), this); +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur HoglinAi.updateActivity(this); 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 5ad6b780a0f8e27eb49c2606fed6dc3e73a30aaa..c8db72dbdaedddb712f20cf0e3a9c731312307a0 100644 +index 18879b75aeedf8df321c2cf93ee8b94e0d321333..257bb62ee42d119cbc6e75aaa6b973507e20dc12 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 -@@ -343,10 +343,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento - private int behaviorTick; // Pufferfish +@@ -339,10 +339,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 - this.getBrain().tick((ServerLevel) this.level, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- 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 // Purpur - TODO: Uncomment when pufferfish patch + this.getBrain().tick((ServerLevel) this.level(), this); +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur PiglinAi.updateActivity(this); super.customServerAiStep(); } diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 85592cffdd04bdab9b2d39cf168a5c920471ba7b..df4d1745c4957e564bab11d68a37178fdb398543 100644 +index 61e8f2d030fc50840c3f80dfb6fc810797ec440f..856e6e02c9424a6c06e310262cb4f5bdd34da516 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -117,10 +117,10 @@ public class PiglinBrute extends AbstractPiglin { @Override protected void customServerAiStep() { -- this.level.getProfiler().push("piglinBruteBrain"); -+ //this.level.getProfiler().push("piglinBruteBrain"); // Purpur +- this.level().getProfiler().push("piglinBruteBrain"); ++ //this.level().getProfiler().push("piglinBruteBrain"); // Purpur if (getRider() == null || this.isControllable()) // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel)this.level, this); -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur + this.getBrain().tick((ServerLevel)this.level(), this); +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur PiglinBruteAi.updateActivity(this); 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 f40806e7d9c08cf7b85215fbf0c66169eb4dc6ae..69e5b4b6c8d5725bc2fb7cd819219e4ff9df45bd 100644 +index 9f5e44d3d44a7ca546c410a40c9397a4e3b27b79..22553da189370405f6f97ceff5e66596e1e12f5f 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 -@@ -299,10 +299,10 @@ public class Warden extends Monster implements VibrationListener.VibrationListen +@@ -299,9 +299,9 @@ public class Warden extends Monster implements VibrationSystem { protected void customServerAiStep() { - ServerLevel worldserver = (ServerLevel) this.level; + 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 +- this.level().getProfiler().pop(); ++ //this.level().getProfiler().pop(); // Purpur super.customServerAiStep(); 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 6f47f6c785dc8da6b211ac87630a3d83c42d1576..73cdb6b1793b264e1ec8ff51c4f8274366a7d4d7 100644 +index 25bf930258065b6cc6d6c3a790835ddf1a0aba36..a372d34d195a2a419215f109eb36654df1cb04a2 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -335,7 +335,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - @Override - protected void customServerAiStep() { mobTick(false); } - protected void mobTick(boolean inactive) { -- this.level.getProfiler().push("villagerBrain"); -+ //this.level.getProfiler().push("villagerBrain"); // Purpur +@@ -338,7 +338,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + } + protected void customServerAiStep(boolean inactive) { // Purpur - not final + // Paper end +- this.level().getProfiler().push("villagerBrain"); ++ //this.level().getProfiler().push("villagerBrain"); // Purpur // Purpur start if (this.level().purpurConfig.villagerLobotomizeEnabled) { // treat as inactive if lobotomized -@@ -357,7 +357,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - restock(); - } +@@ -351,7 +351,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Uncomment when pufferfish patch + else if (this.isLobotomized && shouldRestock()) restock(); // Purpur end -- this.level.getProfiler().pop(); -+ //this.level.getProfiler().pop(); // Purpur +- 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 185f7b1d4df59f5db7b85b529a2de6402630bf35..735fe36f35330adb10bb097dd011216c864e9584 100644 +index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..e35ebb5b923c2f63e37e5dae006bc4a030e49bb7 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 { @@ -1738,22 +1719,10 @@ index 185f7b1d4df59f5db7b85b529a2de6402630bf35..735fe36f35330adb10bb097dd011216c } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 547f51eeaab3555559d0bf8456753df471725de1..b8001bca2a33ec1e60566948a651400418a6e9e7 100644 +index b4bfddb406fce51d1100976d9445db161dcb3f22..57fceb21ca6bc536a6faf04dbc8ddc782a52db8e 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -718,9 +718,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - BlockState iblockdata2 = this.getBlockState(pos); - - if ((flags & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.getLightBlock(this, pos) != iblockdata1.getLightBlock(this, pos) || iblockdata2.getLightEmission() != iblockdata1.getLightEmission() || iblockdata2.useShapeForLightOcclusion() || iblockdata1.useShapeForLightOcclusion())) { -- this.getProfiler().push("queueCheckLight"); -+ //this.getProfiler().push("queueCheckLight"); // Purpur - this.getChunkSource().getLightEngine().checkBlock(pos); -- this.getProfiler().pop(); -+ //this.getProfiler().pop(); // Purpur - } - - /* -@@ -1019,9 +1019,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -906,9 +906,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1765,7 +1734,7 @@ index 547f51eeaab3555559d0bf8456753df471725de1..b8001bca2a33ec1e60566948a6514004 //timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1066,7 +1066,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -953,7 +953,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 @@ -1774,7 +1743,7 @@ index 547f51eeaab3555559d0bf8456753df471725de1..b8001bca2a33ec1e60566948a6514004 spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1259,7 +1259,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1146,7 +1146,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1783,7 +1752,7 @@ index 547f51eeaab3555559d0bf8456753df471725de1..b8001bca2a33ec1e60566948a6514004 List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1278,7 +1278,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1165,7 +1165,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1792,17 +1761,16 @@ index 547f51eeaab3555559d0bf8456753df471725de1..b8001bca2a33ec1e60566948a6514004 // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1603,7 +1603,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1422,6 +1422,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 ++ // if (true || gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish // Purpur - TODO: Uncomment when pufferfish patch 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 54467e5ab4a4629f88fe48bd4b7f0db821e4553f..ba4f51e081f4352530998a9a7fbf025216e2f503 100644 +index dc20ef09fd47f95639ca3de237efe41765fb4cb9..029cceb339c86abe05d9eee944b60c081bffd804 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 { @@ -1824,10 +1792,10 @@ index 54467e5ab4a4629f88fe48bd4b7f0db821e4553f..ba4f51e081f4352530998a9a7fbf0252 // 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 4b71677a145918854cfc6aff40f0bc71933864f7..e9d92bf484fb0d2fcb66a7c424eced109bfa031d 100644 +index c4b4091a52cc08c33ab73bc1ed725477aae26982..590cb3c8fe3061e861aa3c792a2898d4e9f971bd 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -1315,9 +1315,9 @@ public class LevelChunk extends ChunkAccess { +@@ -1256,9 +1256,9 @@ public class LevelChunk extends ChunkAccess { if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1839,7 +1807,7 @@ index 4b71677a145918854cfc6aff40f0bc71933864f7..e9d92bf484fb0d2fcb66a7c424eced10 //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1329,7 +1329,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1270,7 +1270,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}); } diff --git a/patches/server/0273-Allay-respect-item-NBT.patch b/patches/server/0279-Allay-respect-item-NBT.patch similarity index 92% rename from patches/server/0273-Allay-respect-item-NBT.patch rename to patches/server/0279-Allay-respect-item-NBT.patch index 3e521537c..7a89479bf 100644 --- a/patches/server/0273-Allay-respect-item-NBT.patch +++ b/patches/server/0279-Allay-respect-item-NBT.patch @@ -5,7 +5,7 @@ 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 9588f9adad23aa6f2240d1ddb2f92aa82e8e740b..6b99ab10dc99375c56dd5c5c8f4acdec1b59f3a5 100644 +index 15c4531865d829ea90d060ee83122a80ab39028b..379d168eb4ba958622398efa79fa43d5340ca0f2 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 @@ -405,9 +405,31 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @@ -44,10 +44,10 @@ index 9588f9adad23aa6f2240d1ddb2f92aa82e8e740b..6b99ab10dc99375c56dd5c5c8f4acdec 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 513ae5170af015928b8ce472fcf70256a611a5df..179896e32591d028c3e35ec9f868e3768d82bfa6 100644 +index 5c26ea9b1bb8efe9bd213e24e3371ab7cc017077..dacb06c132f90493d4c402e73a56bf3bc709cedf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1102,10 +1102,13 @@ public class PurpurWorldConfig { +@@ -1114,10 +1114,13 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = true; public boolean allayControllable = true; diff --git a/patches/server/0274-Add-death-screen-API.patch b/patches/server/0280-Add-death-screen-API.patch similarity index 100% rename from patches/server/0274-Add-death-screen-API.patch rename to patches/server/0280-Add-death-screen-API.patch diff --git a/patches/server/0275-Implement-ram-and-rambar-commands.patch b/patches/server/0281-Implement-ram-and-rambar-commands.patch similarity index 98% rename from patches/server/0275-Implement-ram-and-rambar-commands.patch rename to patches/server/0281-Implement-ram-and-rambar-commands.patch index 341bbe6cf..312f0f4ed 100644 --- a/patches/server/0275-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0281-Implement-ram-and-rambar-commands.patch @@ -5,7 +5,7 @@ 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 5f6cc8b16af6dce3b74f0c2c662b0ecf84ae8d36..022516a4d43cb5205a0b9ede2f5774414e3a47ed 100644 +index 52b06c34d9d3ffb8844556e7b0eaed5a7f03da0c..5c0085589b08f199c75ceeab8d0cf25e970a0533 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 { @@ -18,7 +18,7 @@ index 5f6cc8b16af6dce3b74f0c2c662b0ecf84ae8d36..022516a4d43cb5205a0b9ede2f577441 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 1192920ec3461aee0c992284567d80edc1cb90c5..971719975b1407b9340720d5190a6883ae95673a 100644 +index c3bb1f0d4ea44d88f2f5453e9fc8b109bcd9fa24..e59c6495c0e846bc4a7f73c4880568b7f47f92d7 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -279,6 +279,7 @@ public class ServerPlayer extends Player { @@ -45,7 +45,7 @@ index 1192920ec3461aee0c992284567d80edc1cb90c5..971719975b1407b9340720d5190a6883 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -2797,6 +2800,14 @@ public class ServerPlayer extends Player { +@@ -2798,6 +2801,14 @@ public class ServerPlayer extends Player { } } diff --git a/patches/server/0276-Add-item-packet-serialize-event.patch b/patches/server/0282-Add-item-packet-serialize-event.patch similarity index 93% rename from patches/server/0276-Add-item-packet-serialize-event.patch rename to patches/server/0282-Add-item-packet-serialize-event.patch index 663fc0fc3..50763cc7f 100644 --- a/patches/server/0276-Add-item-packet-serialize-event.patch +++ b/patches/server/0282-Add-item-packet-serialize-event.patch @@ -36,11 +36,11 @@ 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 cb7853568c2453811fd62b9cef70912b8e4ff04e..f66cf2f945dbff54bbdb2ad4fbccff7c3d6f2048 100644 +index af3ab7bebc69f0485ec2eb5550ad52171cca6de3..77b84d49ab7c9d64dc44df5310dca789e4f2cb63 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1545,6 +1545,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur @@ -48,7 +48,7 @@ index cb7853568c2453811fd62b9cef70912b8e4ff04e..f66cf2f945dbff54bbdb2ad4fbccff7c while (iterator.hasNext()) { ServerLevel worldserver = (ServerLevel) iterator.next(); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b8d7b98a7f8ddff5a9679d29b00c56fa9f3924ad..1a258615448e8000f398d2a0515a4e0b89b82707 100644 +index bf9635072d4ffc298a5221309bdf329c67e0451a..51267c07f4ec562c5a2f0ec932539d77581fd66f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3451,6 +3451,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic diff --git a/patches/server/0277-Fix-MC-123848.patch b/patches/server/0283-Fix-MC-123848.patch similarity index 91% rename from patches/server/0277-Fix-MC-123848.patch rename to patches/server/0283-Fix-MC-123848.patch index 52ae9474f..7fc2bd212 100644 --- a/patches/server/0277-Fix-MC-123848.patch +++ b/patches/server/0283-Fix-MC-123848.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix MC-123848 diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -index 43f9733d4cc180b3103173d86bf2e8742f87de2a..5dcd53d1a8665ed2a63f87e1ab788a64c3e38b71 100644 +index 19fa9b30768e1d3d095b5efdde1399d5ac7df821..d578541f0ecb146899acc09de992d481c14dbf7b 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java @@ -293,6 +293,13 @@ public class ItemFrame extends HangingEntity { diff --git a/patches/server/0278-Implement-squid-colors-for-rainglow-fabric-mod.patch b/patches/server/0284-Implement-squid-colors-for-rainglow-fabric-mod.patch similarity index 96% rename from patches/server/0278-Implement-squid-colors-for-rainglow-fabric-mod.patch rename to patches/server/0284-Implement-squid-colors-for-rainglow-fabric-mod.patch index 53cf0afc1..b836e5ffd 100644 --- a/patches/server/0278-Implement-squid-colors-for-rainglow-fabric-mod.patch +++ b/patches/server/0284-Implement-squid-colors-for-rainglow-fabric-mod.patch @@ -40,10 +40,10 @@ index 43cdda0cb26c5d5cc9025199eb71673d71c2abea..83660fad1e4c0ce5800f6e62f915ccd8 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 179896e32591d028c3e35ec9f868e3768d82bfa6..80651ef3f4cd8d92a2b0d399d9620dc6a8968ea5 100644 +index dacb06c132f90493d4c402e73a56bf3bc709cedf..cfeb1ac47735a4bb933d9f92adbf2ab3df3584f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1713,6 +1713,7 @@ public class PurpurWorldConfig { +@@ -1725,6 +1725,7 @@ public class PurpurWorldConfig { public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; public boolean glowSquidAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 179896e32591d028c3e35ec9f868e3768d82bfa6..80651ef3f4cd8d92a2b0d399d9620dc6 private void glowSquidSettings() { glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable); glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable); -@@ -1720,6 +1721,7 @@ public class PurpurWorldConfig { +@@ -1732,6 +1733,7 @@ public class PurpurWorldConfig { glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly); glowSquidTakeDamageFromWater = getBoolean("mobs.glow_squid.takes-damage-from-water", glowSquidTakeDamageFromWater); glowSquidAlwaysDropExp = getBoolean("mobs.glow_squid.always-drop-exp", glowSquidAlwaysDropExp); diff --git a/patches/server/0279-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0285-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 98% rename from patches/server/0279-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0285-Add-an-option-to-fix-MC-3304-projectile-looting.patch index b4736a7ad..08d1044ff 100644 --- a/patches/server/0279-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0285-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting) diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 57f89ff7ddcd738100f296ae7a21b3240ab374de..3d036c2a62262522d3b87554ee33c83169c4d123 100644 +index 4f98d7f755ad692dd9589134524a604ec747d5d9..51033a8071a3c9bb527a552ff6a87dcef1bf2bd4 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -72,6 +72,7 @@ public abstract class AbstractArrow extends Projectile { diff --git a/patches/server/0280-Configurable-block-blast-resistance.patch b/patches/server/0286-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0280-Configurable-block-blast-resistance.patch rename to patches/server/0286-Configurable-block-blast-resistance.patch diff --git a/patches/server/0281-Configurable-block-fall-damage-modifiers.patch b/patches/server/0287-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0281-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0287-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0282-Language-API.patch b/patches/server/0288-Language-API.patch similarity index 100% rename from patches/server/0282-Language-API.patch rename to patches/server/0288-Language-API.patch diff --git a/patches/server/0283-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0289-Milk-Keeps-Beneficial-Effects.patch similarity index 95% rename from patches/server/0283-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0289-Milk-Keeps-Beneficial-Effects.patch index 6f34df2f0..0ee48e745 100644 --- a/patches/server/0283-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0289-Milk-Keeps-Beneficial-Effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b8fbc726f1f73a4c20ea7eeca2846c864b9e67bc..dfc226aec69fe0bed2681005a6fdd05f27219819 100644 +index 3084ea26a9364a58a78a4f75df40aa509124ac44..809eea9e5418d613ff43024f14f84c7a90956e98 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1126,6 +1126,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -30,7 +30,7 @@ index 7fa248b2d1b73e20085f0d3cdfead38547e4e924..ecfb5d8b47c461ae661149f1c7b9bace 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 80651ef3f4cd8d92a2b0d399d9620dc6a8968ea5..68d57972e86ad8ad12cf4b3e597f4ced044a278b 100644 +index cfeb1ac47735a4bb933d9f92adbf2ab3df3584f0..c4057abdd8fb96adf981e233159e121f1e4f7c4f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -130,6 +130,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0284-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0290-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0284-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0290-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0285-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0291-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0285-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0291-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0286-Allow-Transparent-Blocks-In-Enchanting-Box.patch b/patches/server/0292-Allow-Transparent-Blocks-In-Enchanting-Box.patch similarity index 100% rename from patches/server/0286-Allow-Transparent-Blocks-In-Enchanting-Box.patch rename to patches/server/0292-Allow-Transparent-Blocks-In-Enchanting-Box.patch diff --git a/patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0293-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0293-Add-option-to-allow-creeper-to-encircle-target-when-.patch index b67d4a062..147f2f013 100644 --- a/patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0293-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 ddef5a993321baf19971331592a875888b3363e6..44750edc6e90600bd2df28169c105cfbb2789793 100644 +index c4057abdd8fb96adf981e233159e121f1e4f7c4f..690c08d633446ac7dfccae860f1c23f39cb4f939 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1374,6 +1374,7 @@ public class PurpurWorldConfig { +@@ -1386,6 +1386,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index ddef5a993321baf19971331592a875888b3363e6..44750edc6e90600bd2df28169c105cfb private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1392,6 +1393,7 @@ public class PurpurWorldConfig { +@@ -1404,6 +1405,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/server/0288-Fire-Immunity-API.patch b/patches/server/0294-Fire-Immunity-API.patch similarity index 97% rename from patches/server/0288-Fire-Immunity-API.patch rename to patches/server/0294-Fire-Immunity-API.patch index b7005aff9..2f45acc04 100644 --- a/patches/server/0288-Fire-Immunity-API.patch +++ b/patches/server/0294-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ 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 672beed9786369669412f2700063356b2e8eeaa8..98684d5f05e1d9deff5b5edc923c27110277eda0 100644 +index b2853cdac60ff1497423078e907530c446a499fb..a04a75bd1fb673fe6182694d730daae41f184763 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -404,6 +404,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0295-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 94% rename from patches/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0295-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index ab3ad9199..509e9d6be 100644 --- a/patches/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0295-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ 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 d66e16cd770fce8788d78a95193e65ac1ce7a56a..ffb95077a63bbe9855d6a458633d36f437a5efab 100644 +index a04a75bd1fb673fe6182694d730daae41f184763..9b8bed645a78c213d5c15c53094d0d2369211d36 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -7,6 +7,7 @@ import com.google.common.collect.Lists; @@ -25,7 +25,7 @@ index d66e16cd770fce8788d78a95193e65ac1ce7a56a..ffb95077a63bbe9855d6a458633d36f4 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0f9cb1fb0e4afbd79d331585c350b1092ef2e963..4c359f653e7beb0c1e162ebb53dcf1332e334bd6 100644 +index 690c08d633446ac7dfccae860f1c23f39cb4f939..e69b0f4d54103fde67f9ae4c9bec686d2c949563 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 { diff --git a/patches/server/0290-Added-got-ram-event.patch b/patches/server/0296-Added-got-ram-event.patch similarity index 91% rename from patches/server/0290-Added-got-ram-event.patch rename to patches/server/0296-Added-got-ram-event.patch index 410f284c1..20d3279ca 100644 --- a/patches/server/0290-Added-got-ram-event.patch +++ b/patches/server/0296-Added-got-ram-event.patch @@ -5,7 +5,7 @@ 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 6fa5737295f23d90c2aa6d6a235f31aac8944eae..3d43fcb8ba26276cb4a7a9fa9880ca58c7c78d58 100644 +index a707954d8e5b88ed37c2640437a10781ab7e56ce..2c185cdc21534a9b50fa5c3be10be9c17485ff5d 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 @@ -420,6 +420,7 @@ public class Goat extends Animal { diff --git a/patches/server/0291-Log-skipped-entity-s-position.patch b/patches/server/0297-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0291-Log-skipped-entity-s-position.patch rename to patches/server/0297-Log-skipped-entity-s-position.patch diff --git a/patches/server/0292-End-Crystal-Cramming.patch b/patches/server/0298-End-Crystal-Cramming.patch similarity index 88% rename from patches/server/0292-End-Crystal-Cramming.patch rename to patches/server/0298-End-Crystal-Cramming.patch index d26503dca..752c8601f 100644 --- a/patches/server/0292-End-Crystal-Cramming.patch +++ b/patches/server/0298-End-Crystal-Cramming.patch @@ -5,19 +5,19 @@ Subject: [PATCH] End Crystal Cramming diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index ada7eba2beca5b0897fa2eb3567a639573f4e18d..dac59bb206f197f8c51535f8c0bd7b98c9f34235 100644 +index ee5ba341d481d5a0fa874c3c707398c9c1eb1ed4..47b6c362f41ea86eb99c49de4814062a2f8d2f24 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -93,6 +93,7 @@ public class EndCrystal extends Entity { +@@ -99,6 +99,7 @@ public class EndCrystal extends Entity { } } // Paper end + if (this.level().purpurConfig.endCrystalCramming > 0 && this.level().getEntitiesOfClass(EndCrystal.class, getBoundingBox()).size() > this.level().purpurConfig.endCrystalCramming) this.hurt(this.damageSources().cramming(), 6.0F); // Purpur } - } + // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 84a14af05556296f40d188bc77b973884681cad6..5bbf2ad0fe37a6f5211fec9dbc854546776482aa 100644 +index e69b0f4d54103fde67f9ae4c9bec686d2c949563..bdf174fafd9827e16ef4f12ce51991f2392411ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -873,6 +873,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0299-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 97% rename from patches/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0299-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 679ba89e4..d25235fb9 100644 --- a/patches/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0299-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,7 +36,7 @@ index cc03c02f290ee8d58a2fea54b1f977f49a2cec6e..49a2308832b24dc1eb839af786dbec9f 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 dced4230ce8e68fe74b67a1446078fda1a6f8d64..fd3131de66a09f7be3e4dc9e4a033f82a0cb25ea 100644 +index bdf174fafd9827e16ef4f12ce51991f2392411ea..c26e06d7dccce653e597117db9a4496d32a5e8d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -767,11 +767,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0294-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0300-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0294-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0300-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0295-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0301-Config-to-remove-explosion-radius-clamp.patch similarity index 91% rename from patches/server/0295-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0301-Config-to-remove-explosion-radius-clamp.patch index df22b90d5..1dc1dc688 100644 --- a/patches/server/0295-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0301-Config-to-remove-explosion-radius-clamp.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..93e7e2fe1f4184719736e698563f493b1d31e8c0 100644 +index e35ebb5b923c2f63e37e5dae006bc4a030e49bb7..dcc3b333f3647631e2fb695d0854036d3bc009be 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 { @@ -27,7 +27,7 @@ index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..93e7e2fe1f4184719736e698563f493b } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15b35bac4264d436c6226d5868fa4a9eab51dbe4..44532abb382a0536204d6d561ea39c1b46b178b3 100644 +index c26e06d7dccce653e597117db9a4496d32a5e8d9..13608504bf7e277b124b11baa69419c067057b5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -219,6 +219,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0302-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0302-bonemealable-sugarcane-cactus-and-netherwart.patch index 68ca3e544..59cecaaf8 100644 --- a/patches/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0302-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,7 +137,7 @@ 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 b88f5f93c54f72927601337c5a5d418c384ac8d3..72ba806e5922bc39eb566475c921851799cfb25a 100644 +index 13608504bf7e277b124b11baa69419c067057b5c..03de8bc1bebf24b804a14ff063c4c49709e9e775 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -826,8 +826,20 @@ public class PurpurWorldConfig { diff --git a/patches/server/0297-Add-PreExplodeEvents.patch b/patches/server/0303-Add-PreExplodeEvents.patch similarity index 94% rename from patches/server/0297-Add-PreExplodeEvents.patch rename to patches/server/0303-Add-PreExplodeEvents.patch index 95155509d..6f4cf8adc 100644 --- a/patches/server/0297-Add-PreExplodeEvents.patch +++ b/patches/server/0303-Add-PreExplodeEvents.patch @@ -5,7 +5,7 @@ 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 93e7e2fe1f4184719736e698563f493b1d31e8c0..845c94a398fddc35731a36a792f4a95435bd1fb8 100644 +index dcc3b333f3647631e2fb695d0854036d3bc009be..6772c4584f1d243df76b42a730376247c8f04e3b 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 { diff --git a/patches/server/0298-Improve-output-of-plugins-command.patch b/patches/server/0304-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0298-Improve-output-of-plugins-command.patch rename to patches/server/0304-Improve-output-of-plugins-command.patch diff --git a/patches/server/0299-Make-GUI-Great-Again.patch b/patches/server/0305-Make-GUI-Great-Again.patch similarity index 99% rename from patches/server/0299-Make-GUI-Great-Again.patch rename to patches/server/0305-Make-GUI-Great-Again.patch index fa4e0d6ae..198055307 100644 --- a/patches/server/0299-Make-GUI-Great-Again.patch +++ b/patches/server/0305-Make-GUI-Great-Again.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make GUI Great Again diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 9eeda0276b4a6f444e7fd2afee7a2c62ad58e0cd..af77803ab75fd7ace62fc2781b4de7287ff0974b 100644 +index 15edbb226bd42af3a33e4150eec50236ff5af5d9..e288a054b8510fabc9c72c5ec6d14d389c8502fd 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/server/0300-Add-mending-multiplier.patch b/patches/server/0306-Add-mending-multiplier.patch similarity index 96% rename from patches/server/0300-Add-mending-multiplier.patch rename to patches/server/0306-Add-mending-multiplier.patch index b25fffe60..d458c99a1 100644 --- a/patches/server/0300-Add-mending-multiplier.patch +++ b/patches/server/0306-Add-mending-multiplier.patch @@ -27,7 +27,7 @@ index 7ccf214d376771814b27aa8e1f34d5a73f1b61f5..3e42b12804f37c4b0ab083273a105939 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 ef30d6b5ef973508cce4279ae2a0240ab3161ec2..7d449621c0c40464bfb64fa2615e9c96ab95c188 100644 +index 03de8bc1bebf24b804a14ff063c4c49709e9e775..778894adf1da0ee80f00c4c02b7b9ec3aaeaebdc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -121,6 +121,7 @@ public class PurpurWorldConfig { diff --git a/patches/todo/server/0156-Configurable-sponge-absorption.patch b/patches/todo/server/0156-Configurable-sponge-absorption.patch deleted file mode 100644 index 175ae69e2..000000000 --- a/patches/todo/server/0156-Configurable-sponge-absorption.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Encode42 -Date: Wed, 24 Mar 2021 20:30:37 -0400 -Subject: [PATCH] Configurable sponge absorption - -Allows the total area and radius of water blocks the sponge can absorb to be changed. - -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 7304b2659eb45bc4bc9fa7c43e6ca07221d0fc73..d96e3fbc0fd4275c29e7e6154ef66e9ed1a5d829 100644 ---- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -@@ -76,13 +76,13 @@ public class SpongeBlock extends Block { - if (fluid.is(FluidTags.WATER)) { - if (iblockdata.getBlock() instanceof BucketPickup && !((BucketPickup) iblockdata.getBlock()).pickupBlock(blockList, blockposition2, iblockdata).isEmpty()) { // CraftBukkit - ++i; -- if (j < 6) { -+ if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur - queue.add(new Tuple<>(blockposition2, j + 1)); - } - } else if (iblockdata.getBlock() instanceof LiquidBlock) { - blockList.setBlock(blockposition2, Blocks.AIR.defaultBlockState(), 3); // CraftBukkit - ++i; -- if (j < 6) { -+ if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur - queue.add(new Tuple<>(blockposition2, j + 1)); - } - } else if (material == Material.WATER_PLANT || material == Material.REPLACEABLE_WATER_PLANT) { -@@ -93,14 +93,14 @@ public class SpongeBlock extends Block { - blockList.setBlock(blockposition2, Blocks.AIR.defaultBlockState(), 3); - // CraftBukkit end - ++i; -- if (j < 6) { -+ if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur - queue.add(new Tuple<>(blockposition2, j + 1)); - } - } - } - } - -- if (i > 64) { -+ if (i > world.purpurConfig.spongeAbsorptionArea) { // Purpur - break; - } - } -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4c71694a1daea330af2713a493a7779cd630b02c..12b96c2fd28817023f41651e3aceafc086b24f4d 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -640,6 +640,13 @@ public class PurpurWorldConfig { - spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); - } - -+ public int spongeAbsorptionArea = 64; -+ public int spongeAbsorptionRadius = 6; -+ private void spongeSettings() { -+ spongeAbsorptionArea = getInt("blocks.sponge.absorption.area", spongeAbsorptionArea); -+ spongeAbsorptionRadius = getInt("blocks.sponge.absorption.radius", spongeAbsorptionRadius); -+ } -+ - public boolean turtleEggsBreakFromExpOrbs = true; - public boolean turtleEggsBreakFromItems = true; - public boolean turtleEggsBreakFromMinecarts = true; diff --git a/patches/todo/server/0229-Signs-allow-color-codes.patch b/patches/todo/server/0229-Signs-allow-color-codes.patch deleted file mode 100644 index a19dfca3a..000000000 --- a/patches/todo/server/0229-Signs-allow-color-codes.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Thu, 6 Jun 2019 17:40:30 -0500 -Subject: [PATCH] Signs allow color codes - - -diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a7cd9d4f83a6e0df28818c55788cdc2db369dfac..dd21804bb62ad7ae2a086600d9cec7e6ca05f3e8 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayer.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1529,6 +1529,7 @@ public class ServerPlayer extends Player { - - @Override - public void openTextEdit(SignBlockEntity sign) { -+ if (level().purpurConfig.signAllowColors) this.connection.send(sign.getTranslatedUpdatePacket(textFilteringEnabled)); // Purpur - sign.setAllowedPlayerEditor(this.getUUID()); - this.connection.send(new ClientboundBlockUpdatePacket(this.level, sign.getBlockPos())); - this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos())); -diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d65e562202557019bc941552b15476c99d6fd3ba..565ae94ff218e18e38a5502c06d0caca407293e3 100644 ---- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3551,11 +3551,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic - for (int i = 0; i < signText.size(); ++i) { - FilteredText filteredtext = (FilteredText) signText.get(i); - -- if (this.player.isTextFilteringEnabled()) { -- lines.add(net.kyori.adventure.text.Component.text(SharedConstants.filterText(filteredtext.filteredOrEmpty()))); // Paper - adventure -+ // Purpur start -+ String line = SharedConstants.filterText(this.player.isTextFilteringEnabled() ? filteredtext.filteredOrEmpty() : filteredtext.raw()); -+ if (worldserver.purpurConfig.signAllowColors) { -+ if (player.hasPermission("purpur.sign.color")) line = line.replaceAll("(?i)&([0-9a-fr])", "\u00a7$1"); -+ if (player.hasPermission("purpur.sign.style")) line = line.replaceAll("(?i)&([l-or])", "\u00a7$1"); -+ if (player.hasPermission("purpur.sign.magic")) line = line.replaceAll("(?i)&([kr])", "\u00a7$1"); -+ lines.add(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(line)); - } else { -- lines.add(net.kyori.adventure.text.Component.text(SharedConstants.filterText(filteredtext.raw()))); // Paper - adventure -+ lines.add(net.kyori.adventure.text.Component.text(line)); - } -+ // Purpur end - } - SignChangeEvent event = new SignChangeEvent((org.bukkit.craftbukkit.block.CraftBlock) player.getWorld().getBlockAt(x, y, z), this.player.getBukkitEntity(), lines); - this.cserver.getPluginManager().callEvent(event); -diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -index 4da4edae517a0efec6e03a719ec47b700509dab1..9e760a8e8244b15daaf0abdfc5f8a51d5c663e12 100644 ---- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -+++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -203,6 +203,23 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C - return ClientboundBlockEntityDataPacket.create(this); - } - -+ // Purpur start -+ public ClientboundBlockEntityDataPacket getTranslatedUpdatePacket(boolean filtered) { -+ final CompoundTag nbt = new CompoundTag(); -+ this.saveAdditional(nbt); -+ final Component[] lines = getMessages(filtered); -+ for (int i = 0; i < 4; i++) { -+ final var component = io.papermc.paper.adventure.PaperAdventure.asAdventure(lines[i]); -+ final String line = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().serialize(component); -+ final var text = net.kyori.adventure.text.Component.text(line); -+ final String json = net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().serialize(text); -+ nbt.putString("Text" + (i + 1), json); -+ } -+ nbt.putString("PurpurEditor", "true"); -+ return ClientboundBlockEntityDataPacket.create(this, entity -> nbt); -+ } -+ // Purpur end -+ - @Override - public CompoundTag getUpdateTag() { - return this.saveWithoutMetadata(); -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0f16621231f97bb757edb59cc73169bccc60937a..b9346bfeaab87363f88738be6d6f35d9515c3186 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -965,8 +965,10 @@ public class PurpurWorldConfig { - } - - public boolean signRightClickEdit = false; -+ public boolean signAllowColors = false; - private void signSettings() { - signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); -+ signAllowColors = getBoolean("blocks.sign.allow-colors", signAllowColors); - } - - public boolean slabHalfBreak = false;