From 45774b4d0e245322eee764327baad54fc4d6fdb1 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 17 Jun 2024 20:04:21 -0700 Subject: [PATCH] apply the rest of the unapplied patches --- ...hould-check-if-entity-can-use-portal.patch | 0 .../0092-Infinity-bow-settings.patch | 69 ----- .../server/0090-Infinity-bow-settings.patch | 35 +++ ...=> 0091-Configurable-daylight-cycle.patch} | 2 +- ...2-Furnace-uses-lava-from-underneath.patch} | 4 +- ...ws-should-not-reset-despawn-counter.patch} | 2 +- ...e-add-farmland-mechanics-from-Alpha.patch} | 4 +- ...ustable-breeding-cooldown-to-config.patch} | 2 +- ...-entity-breeding-times-configurable.patch} | 96 +++--- ...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} | 6 +- ...00-Add-configurable-snowball-damage.patch} | 4 +- ...1-Changeable-Mob-Left-Handed-Chance.patch} | 4 +- ...=> 0102-Add-boat-fall-damage-config.patch} | 4 +- ...0103-Snow-Golem-rate-of-fire-config.patch} | 6 +- ...-Configurable-disable-give-dropping.patch} | 0 ...illager-Clerics-to-farm-Nether-Wart.patch} | 6 +- ...ied-Piglin-death-always-counting-as.patch} | 6 +- ...le-chance-for-wolves-to-spawn-rabid.patch} | 6 +- ...8-Configurable-default-collar-color.patch} | 10 +- ...tch => 0109-Phantom-flames-on-swoop.patch} | 6 +- ...-to-open-even-with-a-solid-block-on.patch} | 4 +- ...SBar.patch => 0111-Implement-TPSBar.patch} | 0 ...h => 0112-Striders-give-saddle-back.patch} | 6 +- ...tch => 0113-PlayerBookTooLargeEvent.patch} | 2 +- ...herite-armor-grants-fire-resistance.patch} | 4 +- ...efing-bypass-to-everything-affected.patch} | 66 ++--- ...llow-Note-Block-sounds-when-blocked.patch} | 2 +- ...0117-Add-EntityTeleportHinderedEvent.patch | 116 ++++++++ ... => 0118-Farmland-trampling-changes.patch} | 4 +- ...9-Movement-options-for-armor-stands.patch} | 4 +- ....patch => 0120-Fix-stuck-in-portals.patch} | 8 +- ...ggle-for-water-sensitive-mob-damage.patch} | 256 ++++++++-------- ...2-Config-to-always-tame-in-Creative.patch} | 4 +- ... 0123-End-crystal-explosion-options.patch} | 4 +- ...ther-Ender-Dragon-can-ride-vehicles.patch} | 10 +- ...atch => 0125-Dont-run-with-scissors.patch} | 6 +- ...nch-Man.patch => 0126-One-Punch-Man.patch} | 6 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 6 +- ...to-ignore-nearby-mobs-when-sleeping.patch} | 8 +- ...d-back-player-spawned-endermite-API.patch} | 0 ...n-aggressiveness-towards-Endermites.patch} | 6 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 6 +- ...ig.patch => 0132-Tick-fluids-config.patch} | 6 +- ...33-Config-to-disable-Llama-caravans.patch} | 6 +- ...g-to-make-Creepers-explode-on-death.patch} | 6 +- ...rable-ravager-griefable-blocks-list.patch} | 6 +- ...136-Sneak-to-bulk-process-composter.patch} | 4 +- ...h => 0137-Config-for-skipping-night.patch} | 6 +- ...138-Add-config-for-villager-trading.patch} | 10 +- ...ngs.patch => 0139-Drowning-Settings.patch} | 4 +- ...reak-individual-slabs-when-sneaking.patch} | 4 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 4 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 2 +- ...tion-to-make-doors-require-redstone.patch} | 4 +- ...144-Config-to-allow-unsafe-enchants.patch} | 0 ...0145-Configurable-sponge-absorption.patch} | 4 +- ...ch => 0146-Projectile-offset-config.patch} | 4 +- ...or-powered-rail-activation-distance.patch} | 4 +- ...> 0148-Piglin-portal-spawn-modifier.patch} | 8 +- ...Config-to-change-max-number-of-bees.patch} | 0 ...-Config-for-wither-explosion-radius.patch} | 6 +- ... => 0151-Gamemode-extra-permissions.patch} | 2 +- ...0152-Configurable-piston-push-limit.patch} | 4 +- ...153-Configurable-broadcast-settings.patch} | 2 +- ... => 0154-Configurable-mob-blindness.patch} | 8 +- ...hidden-players-from-entity-selector.patch} | 0 ...-to-impact-Creeper-explosion-radius.patch} | 6 +- ... 0157-Iron-golem-calm-anger-options.patch} | 6 +- ...ots.patch => 0158-Breedable-parrots.patch} | 6 +- ...gurable-powered-rail-boost-modifier.patch} | 6 +- ...ge-multiplier-critical-damage-value.patch} | 6 +- ...n-to-disable-dragon-egg-teleporting.patch} | 4 +- ...fig-for-unverified-username-message.patch} | 0 ...-anvil-cumulative-cost-configurable.patch} | 0 ...e-can-work-when-raining-or-at-night.patch} | 6 +- ...65-API-for-any-mob-to-burn-daylight.patch} | 4 +- ...h => 0166-Config-MobEffect-by-world.patch} | 4 +- ...eacon-Activation-Range-Configurable.patch} | 4 +- ...ke-lightning-rod-range-configurable.patch} | 0 ...fter-eating-food-fills-hunger-bar-c.patch} | 6 +- ...ayer-join-full-server-by-permission.patch} | 2 +- ...> 0171-Add-portal-permission-bypass.patch} | 4 +- ...2-Shulker-spawn-from-bullet-options.patch} | 6 +- ...ating-glow-berries-adds-glow-effect.patch} | 6 +- ...-Option-to-make-drowned-break-doors.patch} | 6 +- ...nfigurable-hunger-starvation-damage.patch} | 4 +- ...patch => 0176-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0177-Add-uptime-command.patch} | 0 ...tch => 0178-Tool-actionable-options.patch} | 4 +- ...9-Store-placer-on-Block-when-placed.patch} | 2 +- ...oner-API.patch => 0180-Summoner-API.patch} | 2 +- ...mizable-sleeping-actionbar-messages.patch} | 2 +- ...-shulker-box-items-from-dropping-co.patch} | 6 +- ...tch => 0183-Big-dripleaf-tilt-delay.patch} | 4 +- ...0184-Player-ridable-in-water-option.patch} | 6 +- ...-Enderman-teleport-on-projectile-hi.patch} | 6 +- ...d.patch => 0186-Add-compass-command.patch} | 6 +- ...h => 0187-Toggle-for-kinetic-damage.patch} | 4 +- ...-Option-for-disable-observer-clocks.patch} | 4 +- ...zeable-Zombie-Villager-curing-times.patch} | 6 +- ...for-sponges-to-work-on-lava-and-mud.patch} | 4 +- ...191-Toggle-for-Wither-s-spawn-sound.patch} | 6 +- ...-breaks-from-solid-neighbors-config.patch} | 4 +- ...move-curse-of-binding-with-weakness.patch} | 6 +- ...0194-Conduit-behavior-configuration.patch} | 4 +- ...patch => 0195-Cauldron-fill-chances.patch} | 4 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 6 +- ... 0197-Shulker-change-color-with-dye.patch} | 6 +- ... => 0198-Extended-OfflinePlayer-API.patch} | 4 +- ...he-ability-to-add-combustible-items.patch} | 0 ...in-and-thunder-should-stop-on-sleep.patch} | 6 +- ...-blocks-to-grow-into-trees-naturall.patch} | 6 +- ...-right-click-to-use-exp-for-mending.patch} | 6 +- ...urally-aggressive-to-players-chance.patch} | 6 +- ...urally-aggressive-to-players-chance.patch} | 6 +- ...r-beds-to-explode-on-villager-sleep.patch} | 6 +- ...Halloween-options-and-optimizations.patch} | 4 +- ...atch => 0207-Config-for-grindstones.patch} | 0 ....patch => 0208-UPnP-Port-Forwarding.patch} | 0 ...Campfire-option-for-lit-when-placed.patch} | 4 +- ...tinguish-fire-blocks-with-snowballs.patch} | 6 +- ...on-to-disable-zombie-villagers-cure.patch} | 6 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 8 +- ...tch => 0213-Signs-allow-color-codes.patch} | 6 +- ...-and-twisting-vines-configurable-ma.patch} | 0 ...=> 0215-Mobs-always-drop-experience.patch} | 274 +++++++++--------- ...ne-API.patch => 0216-Grindstone-API.patch} | 0 ...e-to-replant-crops-and-nether-warts.patch} | 6 +- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- ...=> 0219-Mob-head-visibility-percent.patch} | 18 +- ...able-valid-characters-for-usernames.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 0 ...Stop-bees-from-dying-after-stinging.patch} | 6 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 0 ...onfigurable-farmland-trample-height.patch} | 6 +- ...onfigurable-player-pickup-exp-delay.patch} | 6 +- ...ng.patch => 0226-Allow-void-trading.patch} | 6 +- ...h => 0227-Configurable-phantom-size.patch} | 6 +- ....patch => 0228-Max-joins-per-second.patch} | 0 ...figurable-minimum-demand-for-trades.patch} | 6 +- ... => 0230-Lobotomize-stuck-villagers.patch} | 6 +- ...ion-for-villager-display-trade-item.patch} | 6 +- ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 8 +- ...=> 0234-Anvil-repair-damage-options.patch} | 4 +- ...-turtle-egg-trampling-with-feather-.patch} | 4 +- ...d-toggle-for-enchant-level-clamping.patch} | 0 ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 6 +- ...ge.patch => 0239-Stonecutter-damage.patch} | 4 +- ...le-damage-settings-for-magma-blocks.patch} | 4 +- ...241-Add-config-for-snow-on-blue-ice.patch} | 4 +- ... => 0242-Skeletons-eat-wither-roses.patch} | 6 +- ...43-Enchantment-Table-Persists-Lapis.patch} | 4 +- ...ofiler.patch => 0244-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 2 +- ...for-sculk-shrieker-can_summon-state.patch} | 4 +- ...=> 0247-Config-to-not-let-coral-die.patch} | 4 +- ...ch => 0248-Add-local-difficulty-api.patch} | 0 ...249-Add-toggle-for-RNG-manipulation.patch} | 6 +- ...imings.patch => 0250-Remove-Timings.patch} | 0 ...atch => 0251-Remove-Mojang-Profiler.patch} | 2 +- ...r-output-for-invalid-movement-kicks.patch} | 2 +- ...d-Bee-API.patch => 0253-Add-Bee-API.patch} | 0 ...-API.patch => 0254-Debug-Marker-API.patch} | 4 +- ...g-option-to-ignore-creative-players.patch} | 6 +- ...56-Add-skeleton-bow-accuracy-option.patch} | 6 +- ....patch => 0257-Add-death-screen-API.patch} | 4 +- ...8-Implement-ram-and-rambar-commands.patch} | 0 ...Configurable-block-blast-resistance.patch} | 0 ...gurable-block-fall-damage-modifiers.patch} | 0 ...uage-API.patch => 0261-Language-API.patch} | 0 ... 0262-Milk-Keeps-Beneficial-Effects.patch} | 12 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...n-to-fix-MC-3304-projectile-looting.patch} | 2 +- ...ow-creeper-to-encircle-target-when-.patch} | 6 +- ...API.patch => 0267-Fire-Immunity-API.patch} | 4 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 6 +- ...t.patch => 0269-Added-got-ram-event.patch} | 0 ... 0270-Log-skipped-entity-s-position.patch} | 0 ....patch => 0271-End-Crystal-Cramming.patch} | 6 +- ...eacon-effects-when-covered-by-tinte.patch} | 4 +- ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 6 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 4 +- ....patch => 0276-Add-PreExplodeEvents.patch} | 0 ...7-Improve-output-of-plugins-command.patch} | 0 ....patch => 0278-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0279-Stored-Bee-API.patch} | 0 ...patch => 0280-Shears-can-defuse-TNT.patch} | 4 +- ...-API.patch => 0281-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 6 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 6 +- ...ways-showing-item-in-player-death-m.patch} | 0 ...0285-place-end-crystal-on-any-block.patch} | 6 +- ...able-the-copper-oxidation-proximity.patch} | 6 +- ...7-register-minecraft-debug-commands.patch} | 0 ...Configurable-villager-search-radius.patch} | 6 +- ...-to-make-ravagers-afraid-of-rabbits.patch} | 6 +- ...=> 0290-config-for-startup-commands.patch} | 0 ...onfig-to-reverse-bubble-column-flow.patch} | 0 ...tch => 0292-Adopt-MaterialRerouting.patch} | 0 ...0120-Add-EntityTeleportHinderedEvent.patch | 125 -------- 206 files changed, 885 insertions(+), 928 deletions(-) rename patches/{unapplied-server => dropped-server}/0040-End-gateway-should-check-if-entity-can-use-portal.patch (100%) delete mode 100644 patches/dropped-server/0092-Infinity-bow-settings.patch create mode 100644 patches/server/0090-Infinity-bow-settings.patch rename patches/server/{0090-Configurable-daylight-cycle.patch => 0091-Configurable-daylight-cycle.patch} (98%) rename patches/server/{0091-Furnace-uses-lava-from-underneath.patch => 0092-Furnace-uses-lava-from-underneath.patch} (95%) rename patches/server/{0092-Arrows-should-not-reset-despawn-counter.patch => 0093-Arrows-should-not-reset-despawn-counter.patch} (95%) rename patches/server/{0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => 0094-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (92%) rename patches/server/{0094-Add-adjustable-breeding-cooldown-to-config.patch => 0095-Add-adjustable-breeding-cooldown-to-config.patch} (98%) rename patches/server/{0095-Make-entity-breeding-times-configurable.patch => 0096-Make-entity-breeding-times-configurable.patch} (94%) rename patches/server/{0096-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0097-Apply-display-names-from-item-forms-of-entities-to-e.patch} (99%) rename patches/server/{0097-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => 0098-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (96%) rename patches/server/{0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => 0099-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (91%) rename patches/server/{0099-Add-configurable-snowball-damage.patch => 0100-Add-configurable-snowball-damage.patch} (92%) rename patches/server/{0100-Changeable-Mob-Left-Handed-Chance.patch => 0101-Changeable-Mob-Left-Handed-Chance.patch} (91%) rename patches/server/{0101-Add-boat-fall-damage-config.patch => 0102-Add-boat-fall-damage-config.patch} (94%) rename patches/server/{0102-Snow-Golem-rate-of-fire-config.patch => 0103-Snow-Golem-rate-of-fire-config.patch} (94%) rename patches/server/{0103-EMC-Configurable-disable-give-dropping.patch => 0104-EMC-Configurable-disable-give-dropping.patch} (100%) rename patches/server/{0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => 0105-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (98%) rename patches/server/{0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => 0106-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (94%) rename patches/server/{0106-Configurable-chance-for-wolves-to-spawn-rabid.patch => 0107-Configurable-chance-for-wolves-to-spawn-rabid.patch} (98%) rename patches/server/{0107-Configurable-default-collar-color.patch => 0108-Configurable-default-collar-color.patch} (93%) rename patches/server/{0108-Phantom-flames-on-swoop.patch => 0109-Phantom-flames-on-swoop.patch} (91%) rename patches/server/{0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch => 0110-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (91%) rename patches/server/{0110-Implement-TPSBar.patch => 0111-Implement-TPSBar.patch} (100%) rename patches/server/{0111-Striders-give-saddle-back.patch => 0112-Striders-give-saddle-back.patch} (92%) rename patches/server/{0112-PlayerBookTooLargeEvent.patch => 0113-PlayerBookTooLargeEvent.patch} (96%) rename patches/server/{0113-Full-netherite-armor-grants-fire-resistance.patch => 0114-Full-netherite-armor-grants-fire-resistance.patch} (96%) rename patches/server/{0114-Add-mobGriefing-bypass-to-everything-affected.patch => 0115-Add-mobGriefing-bypass-to-everything-affected.patch} (96%) rename patches/server/{0115-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0116-Config-to-allow-Note-Block-sounds-when-blocked.patch} (97%) create mode 100644 patches/server/0117-Add-EntityTeleportHinderedEvent.patch rename patches/server/{0116-Farmland-trampling-changes.patch => 0118-Farmland-trampling-changes.patch} (95%) rename patches/server/{0117-Movement-options-for-armor-stands.patch => 0119-Movement-options-for-armor-stands.patch} (96%) rename patches/server/{0118-Fix-stuck-in-portals.patch => 0120-Fix-stuck-in-portals.patch} (92%) rename patches/server/{0119-Toggle-for-water-sensitive-mob-damage.patch => 0121-Toggle-for-water-sensitive-mob-damage.patch} (94%) rename patches/server/{0120-Config-to-always-tame-in-Creative.patch => 0122-Config-to-always-tame-in-Creative.patch} (97%) rename patches/server/{0121-End-crystal-explosion-options.patch => 0123-End-crystal-explosion-options.patch} (97%) rename patches/server/{0122-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0124-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (92%) rename patches/server/{0123-Dont-run-with-scissors.patch => 0125-Dont-run-with-scissors.patch} (98%) rename patches/server/{0124-One-Punch-Man.patch => 0126-One-Punch-Man.patch} (94%) rename patches/server/{0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0127-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (96%) rename patches/server/{0126-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0128-Config-to-ignore-nearby-mobs-when-sleeping.patch} (88%) rename patches/server/{0127-Add-back-player-spawned-endermite-API.patch => 0129-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/server/{0128-Config-Enderman-aggressiveness-towards-Endermites.patch => 0130-Config-Enderman-aggressiveness-towards-Endermites.patch} (94%) rename patches/server/{0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0131-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (93%) rename patches/server/{0130-Tick-fluids-config.patch => 0132-Tick-fluids-config.patch} (94%) rename patches/server/{0131-Config-to-disable-Llama-caravans.patch => 0133-Config-to-disable-Llama-caravans.patch} (94%) rename patches/server/{0132-Config-to-make-Creepers-explode-on-death.patch => 0134-Config-to-make-Creepers-explode-on-death.patch} (94%) rename patches/server/{0133-Configurable-ravager-griefable-blocks-list.patch => 0135-Configurable-ravager-griefable-blocks-list.patch} (95%) rename patches/server/{0134-Sneak-to-bulk-process-composter.patch => 0136-Sneak-to-bulk-process-composter.patch} (97%) rename patches/server/{0135-Config-for-skipping-night.patch => 0137-Config-for-skipping-night.patch} (92%) rename patches/server/{0136-Add-config-for-villager-trading.patch => 0138-Add-config-for-villager-trading.patch} (93%) rename patches/server/{0137-Drowning-Settings.patch => 0139-Drowning-Settings.patch} (95%) rename patches/server/{0138-Break-individual-slabs-when-sneaking.patch => 0140-Break-individual-slabs-when-sneaking.patch} (95%) rename patches/server/{0139-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0141-Config-to-disable-hostile-mob-spawn-on-ice.patch} (94%) rename patches/server/{0140-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0142-Config-to-show-Armor-Stand-arms-on-spawn.patch} (96%) rename patches/server/{0141-Option-to-make-doors-require-redstone.patch => 0143-Option-to-make-doors-require-redstone.patch} (97%) rename patches/server/{0142-Config-to-allow-unsafe-enchants.patch => 0144-Config-to-allow-unsafe-enchants.patch} (100%) rename patches/server/{0143-Configurable-sponge-absorption.patch => 0145-Configurable-sponge-absorption.patch} (93%) rename patches/server/{0144-Projectile-offset-config.patch => 0146-Projectile-offset-config.patch} (98%) rename patches/server/{0145-Config-for-powered-rail-activation-distance.patch => 0147-Config-for-powered-rail-activation-distance.patch} (91%) rename patches/server/{0146-Piglin-portal-spawn-modifier.patch => 0148-Piglin-portal-spawn-modifier.patch} (90%) rename patches/server/{0147-Config-to-change-max-number-of-bees.patch => 0149-Config-to-change-max-number-of-bees.patch} (100%) rename patches/server/{0148-Config-for-wither-explosion-radius.patch => 0150-Config-for-wither-explosion-radius.patch} (92%) rename patches/server/{0149-Gamemode-extra-permissions.patch => 0151-Gamemode-extra-permissions.patch} (98%) rename patches/server/{0150-Configurable-piston-push-limit.patch => 0152-Configurable-piston-push-limit.patch} (94%) rename patches/server/{0151-Configurable-broadcast-settings.patch => 0153-Configurable-broadcast-settings.patch} (97%) rename patches/server/{0152-Configurable-mob-blindness.patch => 0154-Configurable-mob-blindness.patch} (90%) rename patches/server/{0153-Hide-hidden-players-from-entity-selector.patch => 0155-Hide-hidden-players-from-entity-selector.patch} (100%) rename patches/server/{0154-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0156-Config-for-health-to-impact-Creeper-explosion-radius.patch} (92%) rename patches/server/{0155-Iron-golem-calm-anger-options.patch => 0157-Iron-golem-calm-anger-options.patch} (96%) rename patches/server/{0156-Breedable-parrots.patch => 0158-Breedable-parrots.patch} (94%) rename patches/server/{0157-Configurable-powered-rail-boost-modifier.patch => 0159-Configurable-powered-rail-boost-modifier.patch} (91%) rename patches/server/{0158-Add-config-change-multiplier-critical-damage-value.patch => 0160-Add-config-change-multiplier-critical-damage-value.patch} (92%) rename patches/server/{0159-Option-to-disable-dragon-egg-teleporting.patch => 0161-Option-to-disable-dragon-egg-teleporting.patch} (92%) rename patches/server/{0160-Config-for-unverified-username-message.patch => 0162-Config-for-unverified-username-message.patch} (100%) rename patches/server/{0161-Make-anvil-cumulative-cost-configurable.patch => 0163-Make-anvil-cumulative-cost-configurable.patch} (100%) rename patches/server/{0162-Bee-can-work-when-raining-or-at-night.patch => 0164-Bee-can-work-when-raining-or-at-night.patch} (94%) rename patches/server/{0163-API-for-any-mob-to-burn-daylight.patch => 0165-API-for-any-mob-to-burn-daylight.patch} (99%) rename patches/server/{0164-Config-MobEffect-by-world.patch => 0166-Config-MobEffect-by-world.patch} (97%) rename patches/server/{0165-Beacon-Activation-Range-Configurable.patch => 0167-Beacon-Activation-Range-Configurable.patch} (94%) rename patches/server/{0166-Make-lightning-rod-range-configurable.patch => 0168-Make-lightning-rod-range-configurable.patch} (100%) rename patches/server/{0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0169-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (95%) rename patches/server/{0168-Allow-player-join-full-server-by-permission.patch => 0170-Allow-player-join-full-server-by-permission.patch} (93%) rename patches/server/{0169-Add-portal-permission-bypass.patch => 0171-Add-portal-permission-bypass.patch} (94%) rename patches/server/{0170-Shulker-spawn-from-bullet-options.patch => 0172-Shulker-spawn-from-bullet-options.patch} (96%) rename patches/server/{0171-Eating-glow-berries-adds-glow-effect.patch => 0173-Eating-glow-berries-adds-glow-effect.patch} (95%) rename patches/server/{0172-Option-to-make-drowned-break-doors.patch => 0174-Option-to-make-drowned-break-doors.patch} (93%) rename patches/server/{0173-Configurable-hunger-starvation-damage.patch => 0175-Configurable-hunger-starvation-damage.patch} (92%) rename patches/server/{0174-Enhance-SysoutCatcher.patch => 0176-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0175-Add-uptime-command.patch => 0177-Add-uptime-command.patch} (100%) rename patches/server/{0176-Tool-actionable-options.patch => 0178-Tool-actionable-options.patch} (99%) rename patches/server/{0177-Store-placer-on-Block-when-placed.patch => 0179-Store-placer-on-Block-when-placed.patch} (96%) rename patches/server/{0178-Summoner-API.patch => 0180-Summoner-API.patch} (99%) rename patches/server/{0179-Customizable-sleeping-actionbar-messages.patch => 0181-Customizable-sleeping-actionbar-messages.patch} (98%) rename patches/server/{0180-option-to-disable-shulker-box-items-from-dropping-co.patch => 0182-option-to-disable-shulker-box-items-from-dropping-co.patch} (92%) rename patches/server/{0181-Big-dripleaf-tilt-delay.patch => 0183-Big-dripleaf-tilt-delay.patch} (94%) rename patches/server/{0182-Player-ridable-in-water-option.patch => 0184-Player-ridable-in-water-option.patch} (91%) rename patches/server/{0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0185-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (92%) rename patches/server/{0184-Add-compass-command.patch => 0186-Add-compass-command.patch} (98%) rename patches/server/{0185-Toggle-for-kinetic-damage.patch => 0187-Toggle-for-kinetic-damage.patch} (93%) rename patches/server/{0186-Add-Option-for-disable-observer-clocks.patch => 0188-Add-Option-for-disable-observer-clocks.patch} (93%) rename patches/server/{0187-Customizeable-Zombie-Villager-curing-times.patch => 0189-Customizeable-Zombie-Villager-curing-times.patch} (93%) rename patches/server/{0188-Option-for-sponges-to-work-on-lava-and-mud.patch => 0190-Option-for-sponges-to-work-on-lava-and-mud.patch} (95%) rename patches/server/{0189-Toggle-for-Wither-s-spawn-sound.patch => 0191-Toggle-for-Wither-s-spawn-sound.patch} (91%) rename patches/server/{0190-Cactus-breaks-from-solid-neighbors-config.patch => 0192-Cactus-breaks-from-solid-neighbors-config.patch} (92%) rename patches/server/{0191-Config-to-remove-curse-of-binding-with-weakness.patch => 0193-Config-to-remove-curse-of-binding-with-weakness.patch} (92%) rename patches/server/{0192-Conduit-behavior-configuration.patch => 0194-Conduit-behavior-configuration.patch} (98%) rename patches/server/{0193-Cauldron-fill-chances.patch => 0195-Cauldron-fill-chances.patch} (96%) rename patches/server/{0194-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0196-Config-to-allow-mobs-to-pathfind-over-rails.patch} (92%) rename patches/server/{0195-Shulker-change-color-with-dye.patch => 0197-Shulker-change-color-with-dye.patch} (93%) rename patches/server/{0196-Extended-OfflinePlayer-API.patch => 0198-Extended-OfflinePlayer-API.patch} (98%) rename patches/server/{0197-Added-the-ability-to-add-combustible-items.patch => 0199-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/server/{0198-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (93%) rename patches/server/{0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0201-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (94%) rename patches/server/{0200-Shift-right-click-to-use-exp-for-mending.patch => 0202-Shift-right-click-to-use-exp-for-mending.patch} (95%) rename patches/server/{0201-Dolphins-naturally-aggressive-to-players-chance.patch => 0203-Dolphins-naturally-aggressive-to-players-chance.patch} (95%) rename patches/server/{0202-Cows-naturally-aggressive-to-players-chance.patch => 0204-Cows-naturally-aggressive-to-players-chance.patch} (96%) rename patches/server/{0203-Option-for-beds-to-explode-on-villager-sleep.patch => 0205-Option-for-beds-to-explode-on-villager-sleep.patch} (92%) rename patches/server/{0204-Halloween-options-and-optimizations.patch => 0206-Halloween-options-and-optimizations.patch} (97%) rename patches/server/{0205-Config-for-grindstones.patch => 0207-Config-for-grindstones.patch} (100%) rename patches/server/{0206-UPnP-Port-Forwarding.patch => 0208-UPnP-Port-Forwarding.patch} (100%) rename patches/server/{0207-Campfire-option-for-lit-when-placed.patch => 0209-Campfire-option-for-lit-when-placed.patch} (94%) rename patches/server/{0208-options-to-extinguish-fire-blocks-with-snowballs.patch => 0210-options-to-extinguish-fire-blocks-with-snowballs.patch} (96%) rename patches/server/{0209-Add-option-to-disable-zombie-villagers-cure.patch => 0211-Add-option-to-disable-zombie-villagers-cure.patch} (92%) rename patches/server/{0210-Persistent-BlockEntity-Lore-and-DisplayName.patch => 0212-Persistent-BlockEntity-Lore-and-DisplayName.patch} (96%) rename patches/server/{0211-Signs-allow-color-codes.patch => 0213-Signs-allow-color-codes.patch} (96%) rename patches/server/{0212-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (100%) rename patches/server/{0213-Mobs-always-drop-experience.patch => 0215-Mobs-always-drop-experience.patch} (94%) rename patches/server/{0214-Grindstone-API.patch => 0216-Grindstone-API.patch} (100%) rename patches/server/{0215-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (96%) rename patches/server/{0216-Turtle-eggs-random-tick-crack-chance.patch => 0218-Turtle-eggs-random-tick-crack-chance.patch} (93%) rename patches/server/{0217-Mob-head-visibility-percent.patch => 0219-Mob-head-visibility-percent.patch} (91%) rename patches/server/{0218-Configurable-valid-characters-for-usernames.patch => 0220-Configurable-valid-characters-for-usernames.patch} (100%) rename patches/server/{0219-Shears-can-have-looting-enchantment.patch => 0221-Shears-can-have-looting-enchantment.patch} (100%) rename patches/server/{0220-Stop-bees-from-dying-after-stinging.patch => 0222-Stop-bees-from-dying-after-stinging.patch} (90%) rename patches/server/{0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (100%) rename patches/server/{0222-Configurable-farmland-trample-height.patch => 0224-Configurable-farmland-trample-height.patch} (94%) rename patches/server/{0223-Configurable-player-pickup-exp-delay.patch => 0225-Configurable-player-pickup-exp-delay.patch} (95%) rename patches/server/{0224-Allow-void-trading.patch => 0226-Allow-void-trading.patch} (93%) rename patches/server/{0225-Configurable-phantom-size.patch => 0227-Configurable-phantom-size.patch} (93%) rename patches/server/{0226-Max-joins-per-second.patch => 0228-Max-joins-per-second.patch} (100%) rename patches/server/{0227-Configurable-minimum-demand-for-trades.patch => 0229-Configurable-minimum-demand-for-trades.patch} (94%) rename patches/server/{0228-Lobotomize-stuck-villagers.patch => 0230-Lobotomize-stuck-villagers.patch} (97%) rename patches/server/{0229-Option-for-villager-display-trade-item.patch => 0231-Option-for-villager-display-trade-item.patch} (92%) rename patches/server/{0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (93%) rename patches/server/{0231-Config-for-mob-last-hurt-by-player-time.patch => 0233-Config-for-mob-last-hurt-by-player-time.patch} (92%) rename patches/server/{0232-Anvil-repair-damage-options.patch => 0234-Anvil-repair-damage-options.patch} (97%) rename patches/server/{0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (94%) rename patches/server/{0234-Add-toggle-for-enchant-level-clamping.patch => 0236-Add-toggle-for-enchant-level-clamping.patch} (100%) rename patches/server/{0235-Skip-junit-tests-for-purpur-commands.patch => 0237-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0236-Implement-configurable-search-radius-for-villagers-t.patch => 0238-Implement-configurable-search-radius-for-villagers-t.patch} (93%) rename patches/server/{0237-Stonecutter-damage.patch => 0239-Stonecutter-damage.patch} (98%) rename patches/server/{0238-Configurable-damage-settings-for-magma-blocks.patch => 0240-Configurable-damage-settings-for-magma-blocks.patch} (92%) rename patches/server/{0239-Add-config-for-snow-on-blue-ice.patch => 0241-Add-config-for-snow-on-blue-ice.patch} (93%) rename patches/server/{0240-Skeletons-eat-wither-roses.patch => 0242-Skeletons-eat-wither-roses.patch} (96%) rename patches/server/{0241-Enchantment-Table-Persists-Lapis.patch => 0243-Enchantment-Table-Persists-Lapis.patch} (97%) rename patches/server/{0242-Spark-Profiler.patch => 0244-Spark-Profiler.patch} (100%) rename patches/server/{0243-Option-to-disable-kick-for-out-of-order-chat.patch => 0245-Option-to-disable-kick-for-out-of-order-chat.patch} (95%) rename patches/server/{0244-Config-for-sculk-shrieker-can_summon-state.patch => 0246-Config-for-sculk-shrieker-can_summon-state.patch} (92%) rename patches/server/{0245-Config-to-not-let-coral-die.patch => 0247-Config-to-not-let-coral-die.patch} (94%) rename patches/server/{0246-Add-local-difficulty-api.patch => 0248-Add-local-difficulty-api.patch} (100%) rename patches/server/{0247-Add-toggle-for-RNG-manipulation.patch => 0249-Add-toggle-for-RNG-manipulation.patch} (93%) rename patches/server/{0248-Remove-Timings.patch => 0250-Remove-Timings.patch} (100%) rename patches/server/{0249-Remove-Mojang-Profiler.patch => 0251-Remove-Mojang-Profiler.patch} (99%) rename patches/server/{0250-Add-more-logger-output-for-invalid-movement-kicks.patch => 0252-Add-more-logger-output-for-invalid-movement-kicks.patch} (96%) rename patches/server/{0251-Add-Bee-API.patch => 0253-Add-Bee-API.patch} (100%) rename patches/server/{0252-Debug-Marker-API.patch => 0254-Debug-Marker-API.patch} (97%) rename patches/server/{0253-mob-spawning-option-to-ignore-creative-players.patch => 0255-mob-spawning-option-to-ignore-creative-players.patch} (92%) rename patches/server/{0254-Add-skeleton-bow-accuracy-option.patch => 0256-Add-skeleton-bow-accuracy-option.patch} (94%) rename patches/server/{0255-Add-death-screen-API.patch => 0257-Add-death-screen-API.patch} (87%) rename patches/server/{0256-Implement-ram-and-rambar-commands.patch => 0258-Implement-ram-and-rambar-commands.patch} (100%) rename patches/server/{0257-Configurable-block-blast-resistance.patch => 0259-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0258-Configurable-block-fall-damage-modifiers.patch => 0260-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0259-Language-API.patch => 0261-Language-API.patch} (100%) rename patches/server/{0260-Milk-Keeps-Beneficial-Effects.patch => 0262-Milk-Keeps-Beneficial-Effects.patch} (87%) rename patches/server/{0261-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0262-Add-log-suppression-for-LibraryLoader.patch => 0264-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (98%) rename patches/server/{0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (92%) rename patches/server/{0265-Fire-Immunity-API.patch => 0267-Fire-Immunity-API.patch} (95%) rename patches/server/{0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (93%) rename patches/server/{0267-Added-got-ram-event.patch => 0269-Added-got-ram-event.patch} (100%) rename patches/server/{0268-Log-skipped-entity-s-position.patch => 0270-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0269-End-Crystal-Cramming.patch => 0271-End-Crystal-Cramming.patch} (91%) rename patches/server/{0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (95%) rename patches/server/{0271-Add-attribute-clamping-and-armor-limit-config.patch => 0273-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0272-Config-to-remove-explosion-radius-clamp.patch => 0274-Config-to-remove-explosion-radius-clamp.patch} (87%) rename patches/server/{0273-bonemealable-sugarcane-cactus-and-netherwart.patch => 0275-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0274-Add-PreExplodeEvents.patch => 0276-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0275-Improve-output-of-plugins-command.patch => 0277-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0276-Make-GUI-Great-Again.patch => 0278-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0277-Stored-Bee-API.patch => 0279-Stored-Bee-API.patch} (100%) rename patches/server/{0278-Shears-can-defuse-TNT.patch => 0280-Shears-can-defuse-TNT.patch} (96%) rename patches/server/{0279-Explorer-Map-API.patch => 0281-Explorer-Map-API.patch} (100%) rename patches/server/{0280-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0282-Option-Ocelot-Spawn-Under-Sea-Level.patch} (91%) rename patches/server/{0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (93%) rename patches/server/{0282-Add-option-for-always-showing-item-in-player-death-m.patch => 0284-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0283-place-end-crystal-on-any-block.patch => 0285-place-end-crystal-on-any-block.patch} (92%) rename patches/server/{0284-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0286-Add-option-to-disable-the-copper-oxidation-proximity.patch} (92%) rename patches/server/{0285-register-minecraft-debug-commands.patch => 0287-register-minecraft-debug-commands.patch} (100%) rename patches/server/{0286-Configurable-villager-search-radius.patch => 0288-Configurable-villager-search-radius.patch} (94%) rename patches/server/{0287-option-to-make-ravagers-afraid-of-rabbits.patch => 0289-option-to-make-ravagers-afraid-of-rabbits.patch} (91%) rename patches/server/{0288-config-for-startup-commands.patch => 0290-config-for-startup-commands.patch} (100%) rename patches/server/{0289-Config-to-reverse-bubble-column-flow.patch => 0291-Config-to-reverse-bubble-column-flow.patch} (100%) rename patches/server/{0290-Adopt-MaterialRerouting.patch => 0292-Adopt-MaterialRerouting.patch} (100%) delete mode 100644 patches/unapplied-server/0120-Add-EntityTeleportHinderedEvent.patch diff --git a/patches/unapplied-server/0040-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/dropped-server/0040-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/unapplied-server/0040-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/dropped-server/0040-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/dropped-server/0092-Infinity-bow-settings.patch b/patches/dropped-server/0092-Infinity-bow-settings.patch deleted file mode 100644 index 7db648e38..000000000 --- a/patches/dropped-server/0092-Infinity-bow-settings.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sun, 4 Oct 2020 19:08:53 -0500 -Subject: [PATCH] Infinity bow settings - - -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 d98f5e4323859f9eae0caac04865a78719f5befc..55fd190274fed733a7049b03e56fa7a3b454b63a 100644 ---- a/src/main/java/net/minecraft/world/entity/player/Player.java -+++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2343,7 +2343,7 @@ public abstract class Player extends LivingEntity { - } - } - -- return this.abilities.instabuild ? new ItemStack(Items.ARROW) : ItemStack.EMPTY; -+ return this.abilities.instabuild || (level().purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, stack) > 0) ? new ItemStack(Items.ARROW) : ItemStack.EMPTY; // Purpur - } - } - } -diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java -index d27e83c08c45b8514207f26e48ceb1a91ded94be..d6d91de1639a180eb39bb85ac825e992c477d0f9 100644 ---- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java -+++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java -@@ -135,7 +135,13 @@ public abstract class ProjectileWeaponItem extends Item { - } - - protected static boolean hasInfiniteArrows(ItemStack weaponStack, ItemStack projectileStack, boolean creative) { -- return creative || projectileStack.is(Items.ARROW) && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY, weaponStack) > 0; -+ // Purpur start -+ return hasInfiniteArrows(weaponStack, projectileStack, creative, null); -+ } -+ protected static boolean hasInfiniteArrows(ItemStack weaponStack, ItemStack projectileStack, boolean creative, @javax.annotation.Nullable Level level) { -+ boolean canBeInfinity = level == null ? projectileStack.is(Items.ARROW) : ((projectileStack.is(Items.ARROW) && level.purpurConfig.infinityWorksWithNormalArrows) || (projectileStack.is(Items.TIPPED_ARROW) && level.purpurConfig.infinityWorksWithTippedArrows) || (projectileStack.is(Items.SPECTRAL_ARROW) && level.purpurConfig.infinityWorksWithSpectralArrows)); -+ return creative || canBeInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY, weaponStack) > 0; -+ // Purpur end - } - - protected static List draw(ItemStack weaponStack, ItemStack projectileStack, LivingEntity shooter) { -@@ -161,7 +167,7 @@ public abstract class ProjectileWeaponItem extends Item { - } - - protected static ItemStack useAmmo(ItemStack weaponStack, ItemStack projectileStack, LivingEntity shooter, boolean multishot) { -- boolean flag1 = !multishot && !ProjectileWeaponItem.hasInfiniteArrows(weaponStack, projectileStack, shooter.hasInfiniteMaterials()); -+ boolean flag1 = !multishot && !ProjectileWeaponItem.hasInfiniteArrows(weaponStack, projectileStack, shooter.hasInfiniteMaterials(), shooter.level()); // Purpur - ItemStack itemstack2; - - if (!flag1) { -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 636f1a2962ee48a42a644b241569f08e7d57097c..b66182a7b52d16aac78b61cd9c077236a2abbe33 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -140,6 +140,17 @@ public class PurpurWorldConfig { - entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); - } - -+ public boolean infinityWorksWithoutArrows = false; -+ public boolean infinityWorksWithNormalArrows = true; -+ public boolean infinityWorksWithSpectralArrows = false; -+ public boolean infinityWorksWithTippedArrows = false; -+ private void infinityArrowsSettings() { -+ infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); -+ infinityWorksWithNormalArrows = getBoolean("gameplay-mechanics.infinity-bow.normal-arrows", infinityWorksWithNormalArrows); -+ infinityWorksWithSpectralArrows = getBoolean("gameplay-mechanics.infinity-bow.spectral-arrows", infinityWorksWithSpectralArrows); -+ infinityWorksWithTippedArrows = getBoolean("gameplay-mechanics.infinity-bow.tipped-arrows", infinityWorksWithTippedArrows); -+ } -+ - public List itemImmuneToCactus = new ArrayList<>(); - public List itemImmuneToExplosion = new ArrayList<>(); - public List itemImmuneToFire = new ArrayList<>(); diff --git a/patches/server/0090-Infinity-bow-settings.patch b/patches/server/0090-Infinity-bow-settings.patch new file mode 100644 index 000000000..a85e670dd --- /dev/null +++ b/patches/server/0090-Infinity-bow-settings.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sun, 4 Oct 2020 19:08:53 -0500 +Subject: [PATCH] Infinity bow settings + + +diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +index 32dd0b13a0819f597d8a93c6bc3a155781067544..7ae7626c82969ea5a6fc5aa4a0c7ec43cea73adb 100644 +--- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java ++++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +@@ -153,7 +153,7 @@ public abstract class ProjectileWeaponItem extends Item { + int i; + label28: + { +- if (!multishot && !shooter.hasInfiniteMaterials()) { ++ if (!multishot && !shooter.hasInfiniteMaterials() && !shooter.level().purpurConfig.infinityWorksWithoutArrows) { + Level world = shooter.level(); + + if (world instanceof ServerLevel) { +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 658978a0087c15a54259143704ee608d88807250..6a391de29ec045b34cfe456b5fbf03612b22d21b 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -136,6 +136,11 @@ public class PurpurWorldConfig { + entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); + } + ++ public boolean infinityWorksWithoutArrows = false; ++ private void infinityArrowsSettings() { ++ infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); ++ } ++ + public List itemImmuneToCactus = new ArrayList<>(); + public List itemImmuneToExplosion = new ArrayList<>(); + public List itemImmuneToFire = new ArrayList<>(); diff --git a/patches/server/0090-Configurable-daylight-cycle.patch b/patches/server/0091-Configurable-daylight-cycle.patch similarity index 98% rename from patches/server/0090-Configurable-daylight-cycle.patch rename to patches/server/0091-Configurable-daylight-cycle.patch index fd209b77b..9e507fb70 100644 --- a/patches/server/0090-Configurable-daylight-cycle.patch +++ b/patches/server/0091-Configurable-daylight-cycle.patch @@ -88,7 +88,7 @@ index 6a010ebf844a37d3dc767e4a828e0a525d66aa9f..613cf0562d2a82e2a7b9bf1d3143e9c4 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 658978a0087c15a54259143704ee608d88807250..dcb002d0f292c36133293776c4783707028a0a0c 100644 +index 6a391de29ec045b34cfe456b5fbf03612b22d21b..8792f2ed140c32d77ea13cc17d6e80b04ddd95eb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -120,6 +120,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0091-Furnace-uses-lava-from-underneath.patch b/patches/server/0092-Furnace-uses-lava-from-underneath.patch similarity index 95% rename from patches/server/0091-Furnace-uses-lava-from-underneath.patch rename to patches/server/0092-Furnace-uses-lava-from-underneath.patch index 70d88c4f8..e793e4efa 100644 --- a/patches/server/0091-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0092-Furnace-uses-lava-from-underneath.patch @@ -39,10 +39,10 @@ index 730aca233f6e7564d4cb85b5b628d23c4f01d2f4..699bdc1f01a95ecdfe899493c8d81ec3 private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder 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 dcb002d0f292c36133293776c4783707028a0a0c..cf21fb4a964f3b42061fc5c5ed47af0cb115cd06 100644 +index 8792f2ed140c32d77ea13cc17d6e80b04ddd95eb..f9d8ae294558fbfb2b9b4b1e04221937ab45365b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -395,6 +395,17 @@ public class PurpurWorldConfig { +@@ -400,6 +400,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0092-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0093-Arrows-should-not-reset-despawn-counter.patch similarity index 95% rename from patches/server/0092-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0093-Arrows-should-not-reset-despawn-counter.patch index 73a1e7ff5..a173b8ef3 100644 --- a/patches/server/0092-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0093-Arrows-should-not-reset-despawn-counter.patch @@ -20,7 +20,7 @@ index ddf47dab1ab92c45e3eea09239d418a9798ed59e..8d8944a0455b3401d84cab636d61447e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 47c3cd2dcf3b2afbf30a9a4e89a83a6ad728a614..5f4801b9e8fa7a6e34a818eadac6d59473b7696e 100644 +index f9d8ae294558fbfb2b9b4b1e04221937ab45365b..e3e019d5891c5bb95e70b78792e9f052ec40c877 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -101,6 +101,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0094-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 92% rename from patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0094-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index de04f5278..ebf7f1826 100644 --- a/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0094-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 96080c6cc54495e7f85cbc2a410be0a946adc0f3..c5e81842eb5cd47c7cf33cec54335a31d6d891e9 100644 +index e3e019d5891c5bb95e70b78792e9f052ec40c877..f82da70b833c4565af07e7f4565ebdcf0042c918 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -396,8 +396,10 @@ public class PurpurWorldConfig { +@@ -401,8 +401,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0095-Add-adjustable-breeding-cooldown-to-config.patch similarity index 98% rename from patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0095-Add-adjustable-breeding-cooldown-to-config.patch index 2a5d53bcf..6d8f9dd3a 100644 --- a/patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0095-Add-adjustable-breeding-cooldown-to-config.patch @@ -104,7 +104,7 @@ index 1da37b076fbbbd4b756fc30c5995995528653ddf..6b1dc40787e53723ff48b1ed4d408bb9 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 3f4a2f169e8e0437fccc7c6c8d577a84ce50d7b4..5009e08e818e69b814e67a40bdc129f3ec64c183 100644 +index f82da70b833c4565af07e7f4565ebdcf0042c918..b63d7a198cea09970aae77d3e7ab44695a9f2e2d 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/0095-Make-entity-breeding-times-configurable.patch b/patches/server/0096-Make-entity-breeding-times-configurable.patch similarity index 94% rename from patches/server/0095-Make-entity-breeding-times-configurable.patch rename to patches/server/0096-Make-entity-breeding-times-configurable.patch index 004b3f9f2..646c483b3 100644 --- a/patches/server/0095-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0096-Make-entity-breeding-times-configurable.patch @@ -538,10 +538,10 @@ index 373bf138f8b77413e6c29724e01572f64e0bc005..d43e26af79be5078124d8013167f452b public boolean canBeLeashed() { return true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f5917a6d8 100644 +index b63d7a198cea09970aae77d3e7ab44695a9f2e2d..a7f60a530528cfbbefb618c5d787261f00239a52 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -488,20 +488,24 @@ public class PurpurWorldConfig { +@@ -493,20 +493,24 @@ public class PurpurWorldConfig { public boolean armadilloRidableInWater = true; public boolean armadilloControllable = true; public double armadilloMaxHealth = 12.0D; @@ -566,7 +566,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean batRidable = false; -@@ -541,6 +545,7 @@ public class PurpurWorldConfig { +@@ -546,6 +550,7 @@ public class PurpurWorldConfig { public boolean beeControllable = true; public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; @@ -574,7 +574,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -552,6 +557,7 @@ public class PurpurWorldConfig { +@@ -557,6 +562,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -582,7 +582,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean blazeRidable = false; -@@ -590,6 +596,7 @@ public class PurpurWorldConfig { +@@ -595,6 +601,7 @@ public class PurpurWorldConfig { public double camelJumpStrengthMax = 0.42D; public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; @@ -590,7 +590,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -@@ -598,6 +605,7 @@ public class PurpurWorldConfig { +@@ -603,6 +610,7 @@ public class PurpurWorldConfig { camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); @@ -598,7 +598,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean catRidable = false; -@@ -607,6 +615,7 @@ public class PurpurWorldConfig { +@@ -612,6 +620,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -606,7 +606,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -620,6 +629,7 @@ public class PurpurWorldConfig { +@@ -625,6 +634,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -614,7 +614,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean caveSpiderRidable = false; -@@ -643,6 +653,7 @@ public class PurpurWorldConfig { +@@ -648,6 +658,7 @@ public class PurpurWorldConfig { public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -622,7 +622,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -654,6 +665,7 @@ public class PurpurWorldConfig { +@@ -659,6 +670,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -630,7 +630,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean codRidable = false; -@@ -675,6 +687,7 @@ public class PurpurWorldConfig { +@@ -680,6 +692,7 @@ public class PurpurWorldConfig { public boolean cowControllable = true; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -638,7 +638,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -686,6 +699,7 @@ public class PurpurWorldConfig { +@@ -691,6 +704,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -646,7 +646,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean creeperRidable = false; -@@ -737,6 +751,7 @@ public class PurpurWorldConfig { +@@ -742,6 +756,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -654,7 +654,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -752,6 +767,7 @@ public class PurpurWorldConfig { +@@ -757,6 +772,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -662,7 +662,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean drownedRidable = false; -@@ -871,6 +887,7 @@ public class PurpurWorldConfig { +@@ -876,6 +892,7 @@ public class PurpurWorldConfig { public boolean foxControllable = true; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -670,7 +670,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -882,17 +899,20 @@ public class PurpurWorldConfig { +@@ -887,17 +904,20 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -691,7 +691,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean ghastRidable = false; -@@ -960,11 +980,13 @@ public class PurpurWorldConfig { +@@ -965,11 +985,13 @@ public class PurpurWorldConfig { public boolean goatRidableInWater = true; public boolean goatControllable = true; public double goatMaxHealth = 10.0D; @@ -705,7 +705,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean guardianRidable = false; -@@ -985,6 +1007,7 @@ public class PurpurWorldConfig { +@@ -990,6 +1012,7 @@ public class PurpurWorldConfig { public boolean hoglinRidableInWater = true; public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; @@ -713,7 +713,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -995,6 +1018,7 @@ public class PurpurWorldConfig { +@@ -1000,6 +1023,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -721,7 +721,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean horseRidableInWater = false; -@@ -1004,6 +1028,7 @@ public class PurpurWorldConfig { +@@ -1009,6 +1033,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -729,7 +729,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1019,6 +1044,7 @@ public class PurpurWorldConfig { +@@ -1024,6 +1049,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -737,7 +737,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean huskRidable = false; -@@ -1096,6 +1122,7 @@ public class PurpurWorldConfig { +@@ -1101,6 +1127,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -745,7 +745,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1113,6 +1140,7 @@ public class PurpurWorldConfig { +@@ -1118,6 +1145,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -753,7 +753,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean magmaCubeRidable = false; -@@ -1141,6 +1169,7 @@ public class PurpurWorldConfig { +@@ -1146,6 +1174,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidableInWater = true; public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; @@ -761,7 +761,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1151,6 +1180,7 @@ public class PurpurWorldConfig { +@@ -1156,6 +1185,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -769,7 +769,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean muleRidableInWater = false; -@@ -1160,6 +1190,7 @@ public class PurpurWorldConfig { +@@ -1165,6 +1195,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -777,7 +777,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1175,12 +1206,14 @@ public class PurpurWorldConfig { +@@ -1180,12 +1211,14 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -792,7 +792,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1191,12 +1224,14 @@ public class PurpurWorldConfig { +@@ -1196,12 +1229,14 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -807,7 +807,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1207,6 +1242,7 @@ public class PurpurWorldConfig { +@@ -1212,6 +1247,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -815,7 +815,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean parrotRidable = false; -@@ -1290,6 +1326,7 @@ public class PurpurWorldConfig { +@@ -1295,6 +1331,7 @@ public class PurpurWorldConfig { public boolean pigControllable = true; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -823,7 +823,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1301,6 +1338,7 @@ public class PurpurWorldConfig { +@@ -1306,6 +1343,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -831,7 +831,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean piglinRidable = false; -@@ -1357,6 +1395,7 @@ public class PurpurWorldConfig { +@@ -1362,6 +1400,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -839,7 +839,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1370,6 +1409,7 @@ public class PurpurWorldConfig { +@@ -1375,6 +1414,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -847,7 +847,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean pufferfishRidable = false; -@@ -1392,6 +1432,7 @@ public class PurpurWorldConfig { +@@ -1397,6 +1437,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -855,7 +855,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1404,6 +1445,7 @@ public class PurpurWorldConfig { +@@ -1409,6 +1450,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); @@ -863,7 +863,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean ravagerRidable = false; -@@ -1440,6 +1482,7 @@ public class PurpurWorldConfig { +@@ -1445,6 +1487,7 @@ public class PurpurWorldConfig { public boolean sheepRidableInWater = true; public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; @@ -871,7 +871,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1450,6 +1493,7 @@ public class PurpurWorldConfig { +@@ -1455,6 +1498,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -879,7 +879,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean shulkerRidable = false; -@@ -1573,11 +1617,13 @@ public class PurpurWorldConfig { +@@ -1578,11 +1622,13 @@ public class PurpurWorldConfig { public boolean snifferRidableInWater = true; public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; @@ -893,7 +893,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean squidRidable = false; -@@ -1636,6 +1682,7 @@ public class PurpurWorldConfig { +@@ -1641,6 +1687,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public boolean striderControllable = true; public double striderMaxHealth = 20.0D; @@ -901,7 +901,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1646,6 +1693,7 @@ public class PurpurWorldConfig { +@@ -1651,6 +1698,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -909,7 +909,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean tadpoleRidable = false; -@@ -1666,6 +1714,7 @@ public class PurpurWorldConfig { +@@ -1671,6 +1719,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -917,7 +917,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1683,6 +1732,7 @@ public class PurpurWorldConfig { +@@ -1688,6 +1737,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); @@ -925,7 +925,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean tropicalFishRidable = false; -@@ -1703,6 +1753,7 @@ public class PurpurWorldConfig { +@@ -1708,6 +1758,7 @@ public class PurpurWorldConfig { public boolean turtleRidableInWater = true; public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; @@ -933,7 +933,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1713,6 +1764,7 @@ public class PurpurWorldConfig { +@@ -1718,6 +1769,7 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); @@ -941,7 +941,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean vexRidable = false; -@@ -1740,6 +1792,7 @@ public class PurpurWorldConfig { +@@ -1745,6 +1797,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -949,7 +949,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1753,6 +1806,7 @@ public class PurpurWorldConfig { +@@ -1758,6 +1811,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); @@ -957,7 +957,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f } public boolean vindicatorRidable = false; -@@ -1864,6 +1918,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1923,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -965,7 +965,7 @@ index cef828b38e7f312bc55475fad5d2338e2ee04b6e..7891e4e05ca911741e6cc5021c7a757f private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1874,6 +1929,7 @@ public class PurpurWorldConfig { +@@ -1879,6 +1934,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0096-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0097-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 99% rename from patches/server/0096-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0097-Apply-display-names-from-item-forms-of-entities-to-e.patch index cfad59a15..7604e3836 100644 --- a/patches/server/0096-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0097-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -126,7 +126,7 @@ index d8a63ac5444eff8e3decb2f4addc2decb8a5d648..41cc9229108aa8e4f5655dfe590ff414 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 3067e5b0704fe2018fbb846fdae927960f3893d3..9e15581b78ffb5d00b5a43b82bb6cc5e08549b33 100644 +index a7f60a530528cfbbefb618c5d787261f00239a52..b78cddab8a9b66f92bca5f215228481e2b9fca69 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,8 +97,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0097-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0098-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/server/0097-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0098-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 76984a6d2..db833451a 100644 --- a/patches/server/0097-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0098-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 774c982f28b4f127fc3f036c19dfb47fb9ae3264..d49b60e7e643498b49c03593dc0da2f8 // Paper end - Add PlayerNameEntityEvent mob.setPersistenceRequired(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9e15581b78ffb5d00b5a43b82bb6cc5e08549b33..8e963e38b1e1f070877082fcefc2ebd0ffcda7da 100644 +index b78cddab8a9b66f92bca5f215228481e2b9fca69..25845de5d604de1c19302b3b0bf8792bf323564d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,9 +98,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0099-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 91% rename from patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0099-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 3793d9f66..112300a09 100644 --- a/patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0099-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index 8604db61d2c8042d0399262cb60b98457e4f894c..ada2403856aeb7cb50c0b00fb1dad18b 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 05107bdd7b8c28d413287166c9b764e1ff3b9f10..9aa3b20d592a20eb4ba6e3b51847464a4b455fcb 100644 +index 25845de5d604de1c19302b3b0bf8792bf323564d..9e492e98a14dffd74099bdf289ab70d2ccf9e9cd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -843,6 +843,7 @@ public class PurpurWorldConfig { +@@ -848,6 +848,7 @@ public class PurpurWorldConfig { public boolean endermanControllable = true; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 05107bdd7b8c28d413287166c9b764e1ff3b9f10..9aa3b20d592a20eb4ba6e3b51847464a private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -854,6 +855,7 @@ public class PurpurWorldConfig { +@@ -859,6 +860,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0099-Add-configurable-snowball-damage.patch b/patches/server/0100-Add-configurable-snowball-damage.patch similarity index 92% rename from patches/server/0099-Add-configurable-snowball-damage.patch rename to patches/server/0100-Add-configurable-snowball-damage.patch index 4dadf1ffe..6ee6f666c 100644 --- a/patches/server/0099-Add-configurable-snowball-damage.patch +++ b/patches/server/0100-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caa entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9aa3b20d592a20eb4ba6e3b51847464a4b455fcb..a455d0cfbcb26dfa5f664a81b8cff5b01c8555bf 100644 +index 9e492e98a14dffd74099bdf289ab70d2ccf9e9cd..a2fc0a19927d9999fa1530c83164a545e58e88c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -368,6 +368,11 @@ public class PurpurWorldConfig { +@@ -373,6 +373,11 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0101-Changeable-Mob-Left-Handed-Chance.patch similarity index 91% rename from patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0101-Changeable-Mob-Left-Handed-Chance.patch index 8705ef361..dd6612414 100644 --- a/patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0101-Changeable-Mob-Left-Handed-Chance.patch @@ -18,7 +18,7 @@ index 149d272775783aab243f0707ee11f702b35fa075..8103f13155ad66bbd077a38ae4697ad1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a455d0cfbcb26dfa5f664a81b8cff5b01c8555bf..272fbbc7b11c73ea38b80e9ee35c92c474dc161b 100644 +index a2fc0a19927d9999fa1530c83164a545e58e88c8..3520ce3fba42f02c5c46f1cce1263c23a1087bc3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -152,8 +152,10 @@ public class PurpurWorldConfig { @@ -31,4 +31,4 @@ index a455d0cfbcb26dfa5f664a81b8cff5b01c8555bf..272fbbc7b11c73ea38b80e9ee35c92c4 + entityLeftHandedChance = (float) getDouble("gameplay-mechanics.entity-left-handed-chance", entityLeftHandedChance); } - public List itemImmuneToCactus = new ArrayList<>(); + public boolean infinityWorksWithoutArrows = false; diff --git a/patches/server/0101-Add-boat-fall-damage-config.patch b/patches/server/0102-Add-boat-fall-damage-config.patch similarity index 94% rename from patches/server/0101-Add-boat-fall-damage-config.patch rename to patches/server/0102-Add-boat-fall-damage-config.patch index 9683d162a..f60f80644 100644 --- a/patches/server/0101-Add-boat-fall-damage-config.patch +++ b/patches/server/0102-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 3833be24c44c0da3ffcfc1929e2c4a4b2ef40a1b..98c4acedee3521f115cbc51cbc594e6af28a1912 100644 +index 128c0daae941cda386417dfa452e97a9b056441d..7737c2b5aaa8ad8367915991b75aff00d041efab 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1181,7 +1181,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -27,7 +27,7 @@ index 3833be24c44c0da3ffcfc1929e2c4a4b2ef40a1b..98c4acedee3521f115cbc51cbc594e6a if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c17a99a7f700d996dfcd81e47f1981726843f509..9796cc9969840e92a3376f0ceef58e297e2b4f8e 100644 +index 3520ce3fba42f02c5c46f1cce1263c23a1087bc3..b1dbb9c7b5c04725ad3529e5af1cc9f75f6ef1d5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0102-Snow-Golem-rate-of-fire-config.patch b/patches/server/0103-Snow-Golem-rate-of-fire-config.patch similarity index 94% rename from patches/server/0102-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0103-Snow-Golem-rate-of-fire-config.patch index 5c7952431..ed70568d9 100644 --- a/patches/server/0102-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0103-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index 0060414b1d5afde56372ce121e9d37a1668cd03b..ee4d4a4fe314ee9bce69c96dd65d84ed 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 31aeaac5010b862f69dec712a491a8007e2dfd2d..e6ab055185074eb8829681163079304c6b1681f5 100644 +index b1dbb9c7b5c04725ad3529e5af1cc9f75f6ef1d5..927ebe3515d61e0030849d701a08e702318b7759 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1616,6 +1616,10 @@ public class PurpurWorldConfig { +@@ -1621,6 +1621,10 @@ public class PurpurWorldConfig { public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 31aeaac5010b862f69dec712a491a8007e2dfd2d..e6ab055185074eb8829681163079304c private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1628,6 +1632,10 @@ public class PurpurWorldConfig { +@@ -1633,6 +1637,10 @@ public class PurpurWorldConfig { } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0103-EMC-Configurable-disable-give-dropping.patch b/patches/server/0104-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0103-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0104-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0105-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0105-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 4e2537539..c47cf652d 100644 --- a/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0105-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -174,10 +174,10 @@ index 8734ab1bd8299bbf43906d81a349c2a13e0981a7..3ca83269311cbc18c9ef3ce62cff6a2d "farmer", PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e6ab055185074eb8829681163079304c6b1681f5..454ccd0a9aebb9b6f20515fa8dda4656ec767035 100644 +index 927ebe3515d61e0030849d701a08e702318b7759..5ad2f0ccf9f90d94d8c07ab30751689397943a98 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1818,6 +1818,8 @@ public class PurpurWorldConfig { +@@ -1823,6 +1823,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index e6ab055185074eb8829681163079304c6b1681f5..454ccd0a9aebb9b6f20515fa8dda4656 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1832,6 +1834,8 @@ public class PurpurWorldConfig { +@@ -1837,6 +1839,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/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0106-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 94% rename from patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0106-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index 7cd50e4a6..0683968a1 100644 --- a/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0106-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 0dcf5638e12c7670e6a5e577210e2542de1fd38b..47419219d4f435a17344361f4a60d5aa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 454ccd0a9aebb9b6f20515fa8dda4656ec767035..d7fe88655b6546d04e8dc08ae72f6108a57e58ac 100644 +index 5ad2f0ccf9f90d94d8c07ab30751689397943a98..ef775f10d537b75d369e724614f875370d64a0fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2064,6 +2064,7 @@ public class PurpurWorldConfig { +@@ -2069,6 +2069,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 454ccd0a9aebb9b6f20515fa8dda4656ec767035..d7fe88655b6546d04e8dc08ae72f6108 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2078,5 +2079,6 @@ public class PurpurWorldConfig { +@@ -2083,5 +2084,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/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0107-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 98% rename from patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0107-Configurable-chance-for-wolves-to-spawn-rabid.patch index b70e2f940..206272278 100644 --- a/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0107-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -182,10 +182,10 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d7fe88655b6546d04e8dc08ae72f6108a57e58ac..184521c910d514db613bca0e2f25ba89aae4e4bd 100644 +index ef775f10d537b75d369e724614f875370d64a0fe..31d82c183607aff9b3642881b6a1463de341410d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1947,6 +1947,8 @@ public class PurpurWorldConfig { +@@ -1952,6 +1952,8 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -194,7 +194,7 @@ index d7fe88655b6546d04e8dc08ae72f6108a57e58ac..184521c910d514db613bca0e2f25ba89 public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1958,6 +1960,8 @@ public class PurpurWorldConfig { +@@ -1963,6 +1965,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0107-Configurable-default-collar-color.patch b/patches/server/0108-Configurable-default-collar-color.patch similarity index 93% rename from patches/server/0107-Configurable-default-collar-color.patch rename to patches/server/0108-Configurable-default-collar-color.patch index 82994b050..b5907f75a 100644 --- a/patches/server/0107-Configurable-default-collar-color.patch +++ b/patches/server/0108-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index 04d7e4bc6cc1deda5f53f6ae5f46d2402e0d0c10..5dd146d318851ce581a0d7841bd87ae9 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 184521c910d514db613bca0e2f25ba89aae4e4bd..15bc020c51b23afaf1aedc685231f069933f7e1b 100644 +index 31d82c183607aff9b3642881b6a1463de341410d..7dabd7a3e68aa56f4557b45143a72d7c667dd023 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -631,6 +631,7 @@ public class PurpurWorldConfig { +@@ -636,6 +636,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index 184521c910d514db613bca0e2f25ba89aae4e4bd..15bc020c51b23afaf1aedc685231f069 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -645,6 +646,11 @@ public class PurpurWorldConfig { +@@ -650,6 +651,11 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); @@ -66,7 +66,7 @@ index 184521c910d514db613bca0e2f25ba89aae4e4bd..15bc020c51b23afaf1aedc685231f069 } public boolean caveSpiderRidable = false; -@@ -1947,6 +1953,7 @@ public class PurpurWorldConfig { +@@ -1952,6 +1958,7 @@ public class PurpurWorldConfig { public boolean wolfRidableInWater = true; public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; @@ -74,7 +74,7 @@ index 184521c910d514db613bca0e2f25ba89aae4e4bd..15bc020c51b23afaf1aedc685231f069 public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1960,6 +1967,11 @@ public class PurpurWorldConfig { +@@ -1965,6 +1972,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0108-Phantom-flames-on-swoop.patch b/patches/server/0109-Phantom-flames-on-swoop.patch similarity index 91% rename from patches/server/0108-Phantom-flames-on-swoop.patch rename to patches/server/0109-Phantom-flames-on-swoop.patch index b98f0d908..7b48351a8 100644 --- a/patches/server/0108-Phantom-flames-on-swoop.patch +++ b/patches/server/0109-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 8f221fe016ea7221eb3a2116a2213139cf961797..88725e6f8c6490253e110485f5a62e9d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15bc020c51b23afaf1aedc685231f069933f7e1b..ab5cb0ccb086d8dddfbfe585e4ecca7360420c89 100644 +index 7dabd7a3e68aa56f4557b45143a72d7c667dd023..1266122b9113338c6b07616ea40eb0d3fbf1ca6e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1309,6 +1309,7 @@ public class PurpurWorldConfig { +@@ -1314,6 +1314,7 @@ public class PurpurWorldConfig { public int phantomBurnInLight = 0; public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; @@ -28,7 +28,7 @@ index 15bc020c51b23afaf1aedc685231f069933f7e1b..ab5cb0ccb086d8dddfbfe585e4ecca73 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1342,6 +1343,7 @@ public class PurpurWorldConfig { +@@ -1347,6 +1348,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/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0110-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 91% rename from patches/server/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0110-Option-for-chests-to-open-even-with-a-solid-block-on.patch index b9b64a84b..95df32346 100644 --- a/patches/server/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0110-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index 8fbfd18b3caeed769396b3ffb1b1778b2f38edc0..dbfe8f5d4df244cb694b73ea8763628c 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 ab5cb0ccb086d8dddfbfe585e4ecca7360420c89..6f0ec1857cc88acc0de63ad8ed07695ad6116182 100644 +index 1266122b9113338c6b07616ea40eb0d3fbf1ca6e..9b6c63beb9bf3e170a8d16f357d0985aa2c56fad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -405,6 +405,11 @@ public class PurpurWorldConfig { +@@ -410,6 +410,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0110-Implement-TPSBar.patch b/patches/server/0111-Implement-TPSBar.patch similarity index 100% rename from patches/server/0110-Implement-TPSBar.patch rename to patches/server/0111-Implement-TPSBar.patch diff --git a/patches/server/0111-Striders-give-saddle-back.patch b/patches/server/0112-Striders-give-saddle-back.patch similarity index 92% rename from patches/server/0111-Striders-give-saddle-back.patch rename to patches/server/0112-Striders-give-saddle-back.patch index 5d77f8fd1..4e9879658 100644 --- a/patches/server/0111-Striders-give-saddle-back.patch +++ b/patches/server/0112-Striders-give-saddle-back.patch @@ -29,10 +29,10 @@ index 0a297368678cafb92eb0374d1d410271c0d10033..13d40773ff8272ca081e852d4ae3dc09 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6f0ec1857cc88acc0de63ad8ed07695ad6116182..77c93c43575e4578b6638823bab71fce8da1c628 100644 +index 9b6c63beb9bf3e170a8d16f357d0985aa2c56fad..a9579bd890f95485665592a64470c6ff5b6d0ab5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1721,6 +1721,7 @@ public class PurpurWorldConfig { +@@ -1726,6 +1726,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -40,7 +40,7 @@ index 6f0ec1857cc88acc0de63ad8ed07695ad6116182..77c93c43575e4578b6638823bab71fce private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1732,6 +1733,7 @@ public class PurpurWorldConfig { +@@ -1737,6 +1738,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0112-PlayerBookTooLargeEvent.patch b/patches/server/0113-PlayerBookTooLargeEvent.patch similarity index 96% rename from patches/server/0112-PlayerBookTooLargeEvent.patch rename to patches/server/0113-PlayerBookTooLargeEvent.patch index 6c981c556..350a1e740 100644 --- a/patches/server/0112-PlayerBookTooLargeEvent.patch +++ b/patches/server/0113-PlayerBookTooLargeEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 94f8e4c9f44b2cd82108eb1c213cc33497cc200d..9279ba2572afd5ea62c52fae6e24b642f957def2 100644 +index ce1901c683c44893780342f7a3914613abc44b0b..aba962f4e706f2698f3729a304816965d788d7e3 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1152,10 +1152,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0114-Full-netherite-armor-grants-fire-resistance.patch similarity index 96% rename from patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0114-Full-netherite-armor-grants-fire-resistance.patch index 11cc7ebeb..62dc51b81 100644 --- a/patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0114-Full-netherite-armor-grants-fire-resistance.patch @@ -26,10 +26,10 @@ index 025309a47e9683ec29cd94f997663b7faec1acb4..2dafba96353c208b89da7b65c0d56a51 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 77c93c43575e4578b6638823bab71fce8da1c628..15b79e86bc58b7cbc916d9b48887e015eef58928 100644 +index a9579bd890f95485665592a64470c6ff5b6d0ab5..70b1c8041d4fabb73b41bed97f150b6444688c30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -280,6 +280,19 @@ public class PurpurWorldConfig { +@@ -285,6 +285,19 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0115-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 96% rename from patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0115-Add-mobGriefing-bypass-to-everything-affected.patch index 43143c92b..9a5a089e0 100644 --- a/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0115-Add-mobGriefing-bypass-to-everything-affected.patch @@ -375,7 +375,7 @@ index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f24661526151958b 100644 +index 70b1c8041d4fabb73b41bed97f150b6444688c30..e183f7f2e513c5b79997db783df6d3f9ad411f2d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -114,8 +114,11 @@ public class PurpurWorldConfig { @@ -402,7 +402,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); -@@ -430,9 +436,11 @@ public class PurpurWorldConfig { +@@ -435,9 +441,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -414,7 +414,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -457,6 +465,11 @@ public class PurpurWorldConfig { +@@ -462,6 +470,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -426,7 +426,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -486,10 +499,12 @@ public class PurpurWorldConfig { +@@ -491,10 +504,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; @@ -439,7 +439,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public int waterInfiniteRequiredSources = 2; -@@ -747,6 +762,7 @@ public class PurpurWorldConfig { +@@ -752,6 +767,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -447,7 +447,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -759,6 +775,7 @@ public class PurpurWorldConfig { +@@ -764,6 +780,7 @@ public class PurpurWorldConfig { creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -455,7 +455,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean dolphinRidable = false; -@@ -853,6 +870,7 @@ public class PurpurWorldConfig { +@@ -858,6 +875,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -463,7 +463,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -869,6 +887,7 @@ public class PurpurWorldConfig { +@@ -874,6 +892,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -471,7 +471,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean endermanRidable = false; -@@ -877,6 +896,7 @@ public class PurpurWorldConfig { +@@ -882,6 +901,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -479,7 +479,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -889,6 +909,7 @@ public class PurpurWorldConfig { +@@ -894,6 +914,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -487,7 +487,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean endermiteRidable = false; -@@ -911,6 +932,7 @@ public class PurpurWorldConfig { +@@ -916,6 +937,7 @@ public class PurpurWorldConfig { public boolean evokerRidableInWater = true; public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; @@ -495,7 +495,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -921,6 +943,7 @@ public class PurpurWorldConfig { +@@ -926,6 +948,7 @@ public class PurpurWorldConfig { set("mobs.evoker.attributes.max_health", oldValue); } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); @@ -503,7 +503,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean foxRidable = false; -@@ -929,6 +952,7 @@ public class PurpurWorldConfig { +@@ -934,6 +957,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -511,7 +511,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -941,6 +965,7 @@ public class PurpurWorldConfig { +@@ -946,6 +970,7 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -519,7 +519,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean frogRidable = false; -@@ -1388,6 +1413,7 @@ public class PurpurWorldConfig { +@@ -1393,6 +1418,7 @@ public class PurpurWorldConfig { public boolean piglinRidableInWater = true; public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; @@ -527,7 +527,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1398,6 +1424,7 @@ public class PurpurWorldConfig { +@@ -1403,6 +1429,7 @@ public class PurpurWorldConfig { set("mobs.piglin.attributes.max_health", oldValue); } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); @@ -535,7 +535,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean piglinBruteRidable = false; -@@ -1420,6 +1447,7 @@ public class PurpurWorldConfig { +@@ -1425,6 +1452,7 @@ public class PurpurWorldConfig { public boolean pillagerRidableInWater = true; public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; @@ -543,7 +543,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1430,6 +1458,7 @@ public class PurpurWorldConfig { +@@ -1435,6 +1463,7 @@ public class PurpurWorldConfig { set("mobs.pillager.attributes.max_health", oldValue); } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); @@ -551,7 +551,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean polarBearRidable = false; -@@ -1476,6 +1505,7 @@ public class PurpurWorldConfig { +@@ -1481,6 +1510,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -559,7 +559,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1489,12 +1519,14 @@ public class PurpurWorldConfig { +@@ -1494,12 +1524,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); @@ -574,7 +574,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1505,6 +1537,7 @@ public class PurpurWorldConfig { +@@ -1510,6 +1542,7 @@ public class PurpurWorldConfig { set("mobs.ravager.attributes.max_health", oldValue); } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); @@ -582,7 +582,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean salmonRidable = false; -@@ -1526,6 +1559,7 @@ public class PurpurWorldConfig { +@@ -1531,6 +1564,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; @@ -590,7 +590,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1537,6 +1571,7 @@ public class PurpurWorldConfig { +@@ -1542,6 +1576,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -598,7 +598,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean shulkerRidable = false; -@@ -1559,6 +1594,7 @@ public class PurpurWorldConfig { +@@ -1564,6 +1599,7 @@ public class PurpurWorldConfig { public boolean silverfishRidableInWater = true; public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; @@ -606,7 +606,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1569,6 +1605,7 @@ public class PurpurWorldConfig { +@@ -1574,6 +1610,7 @@ public class PurpurWorldConfig { set("mobs.silverfish.attributes.max_health", oldValue); } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); @@ -614,7 +614,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean skeletonRidable = false; -@@ -1646,6 +1683,7 @@ public class PurpurWorldConfig { +@@ -1651,6 +1688,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -622,7 +622,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1662,6 +1700,7 @@ public class PurpurWorldConfig { +@@ -1667,6 +1705,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); @@ -630,7 +630,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean snifferRidable = false; -@@ -1848,6 +1887,7 @@ public class PurpurWorldConfig { +@@ -1853,6 +1892,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -638,7 +638,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1864,6 +1904,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1909,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); @@ -646,7 +646,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean vindicatorRidable = false; -@@ -1936,6 +1977,7 @@ public class PurpurWorldConfig { +@@ -1941,6 +1982,7 @@ public class PurpurWorldConfig { public double witherMaxHealth = 300.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -654,7 +654,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1953,6 +1995,7 @@ public class PurpurWorldConfig { +@@ -1958,6 +2000,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); @@ -662,7 +662,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 } public boolean witherSkeletonRidable = false; -@@ -2024,6 +2067,7 @@ public class PurpurWorldConfig { +@@ -2029,6 +2072,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -670,7 +670,7 @@ index 15b79e86bc58b7cbc916d9b48887e015eef58928..a4bc71a9986a2ca6c05d0b50f2466152 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2039,6 +2083,7 @@ public class PurpurWorldConfig { +@@ -2044,6 +2088,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/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0116-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 97% rename from patches/server/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0116-Config-to-allow-Note-Block-sounds-when-blocked.patch index 59fe950b9..a2f582e33 100644 --- a/patches/server/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0116-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,7 +22,7 @@ index 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..43dd972b374daa1072608f3a68e812e7 // 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 866e2f625472c6dac1305b84b3cb8ce96b1d36a1..dbcc1ba3b0fe58cc8b78b57c71bdde23163c0aef 100644 +index e183f7f2e513c5b79997db783df6d3f9ad411f2d..159a7a7d907fdef1254f64268c7fe1bcee5878df 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/0117-Add-EntityTeleportHinderedEvent.patch b/patches/server/0117-Add-EntityTeleportHinderedEvent.patch new file mode 100644 index 000000000..1589b7607 --- /dev/null +++ b/patches/server/0117-Add-EntityTeleportHinderedEvent.patch @@ -0,0 +1,116 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Mariell Hoversholm +Date: Sat, 9 Jan 2021 15:27:46 +0100 +Subject: [PATCH] Add EntityTeleportHinderedEvent + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +diff --git a/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java b/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java +index 11486419dd98a013c7387d3d73f322a95a18c574..b1444e8605282a05c3d030330b92213ad8341fda 100644 +--- a/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java +@@ -98,6 +98,13 @@ public class EndGatewayBlock extends BaseEntityBlock implements Portal { + TheEndGatewayBlockEntity tileentityendgateway = (TheEndGatewayBlockEntity) tileentity; + + if (!tileentityendgateway.isCoolingDown()) { ++ // Purpur start ++ if (world.purpurConfig.imposeTeleportRestrictionsOnGateways && (entity.isVehicle() || entity.isPassenger())) { ++ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_GATEWAY).callEvent()) { ++ return; ++ } ++ } ++ // Purpur end + entity.setAsInsidePortal(this, pos); + TheEndGatewayBlockEntity.triggerCooldown(world, pos, state, tileentityendgateway); + } +diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +index cff3e9869340f1ffb7093431cbe1ac5e67792a4e..dfe27fc9b2cbc824e8d2a5fd759409d939bd9c71 100644 +--- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +@@ -65,6 +65,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { + protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent + if (entity.canUsePortal(false) && Shapes.joinIsNotEmpty(Shapes.create(entity.getBoundingBox().move((double) (-pos.getX()), (double) (-pos.getY()), (double) (-pos.getZ()))), state.getShape(world, pos), BooleanOp.AND)) { ++ // Purpur start ++ if (entity.isPassenger() || entity.isVehicle()) { ++ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_PORTAL).callEvent()) { ++ return; ++ } ++ } ++ // Purpur end + // CraftBukkit start - Entity in portal + EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); + world.getCraftServer().getPluginManager().callEvent(event); +diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +index a530276b0123dee5680d7e09ad3d2f0414909c91..730ef910afa911f264cf842a53281cda845ffac7 100644 +--- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +@@ -109,6 +109,13 @@ public class NetherPortalBlock extends Block implements Portal { + protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent + if (entity.canUsePortal(false)) { ++ // Purpur start ++ if (entity.isPassenger() || entity.isVehicle()) { ++ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.NETHER_PORTAL).callEvent()) { ++ return; ++ } ++ } ++ // Purpur end + // CraftBukkit start - Entity in portal + EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); + world.getCraftServer().getPluginManager().callEvent(event); +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +index 84479dad6078a2a12e6b977185bdbbe7f6b36576..4be205b10229b238039e4221df043e47cba68511 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +@@ -245,6 +245,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + boolean ignorePassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); + // Don't allow teleporting between worlds while keeping passengers + if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { ++ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur + return false; + } + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +index 745e57d58966dbe60b2301818c23d25eecdb6dc2..33425cdcde10f6446f059b290d4c372debcb9c0b 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +@@ -1436,6 +1436,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + // Paper start - Teleport passenger API + // Don't allow teleporting between worlds while keeping passengers + if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { ++ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur start + return false; + } + +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 159a7a7d907fdef1254f64268c7fe1bcee5878df..9f1d4930e08ef5d358e178e26d28f033e0e41d08 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -116,6 +116,7 @@ public class PurpurWorldConfig { + public boolean disableDropsOnCrammingDeath = false; + public boolean entitiesPickUpLootBypassMobGriefing = false; + public boolean fireballsBypassMobGriefing = false; ++ public boolean imposeTeleportRestrictionsOnGateways = false; + public boolean milkCuresBadOmen = true; + public boolean noteBlockIgnoreAbove = false; + public boolean persistentDroppableEntityDisplayNames = true; +@@ -132,6 +133,7 @@ public class PurpurWorldConfig { + disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); + fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); ++ imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); + persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); diff --git a/patches/server/0116-Farmland-trampling-changes.patch b/patches/server/0118-Farmland-trampling-changes.patch similarity index 95% rename from patches/server/0116-Farmland-trampling-changes.patch rename to patches/server/0118-Farmland-trampling-changes.patch index 4592dfa5f..bae189dec 100644 --- a/patches/server/0116-Farmland-trampling-changes.patch +++ b/patches/server/0118-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bb if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9ce8392b1140d7300335d87e106b2643abbc8797..9789835b47df82bc55f429aa3ac481bbc75c198c 100644 +index 9f1d4930e08ef5d358e178e26d28f033e0e41d08..ec2a1fc7179bc3819a2d227fef4f9c36e789545b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -441,10 +441,16 @@ public class PurpurWorldConfig { +@@ -448,10 +448,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0117-Movement-options-for-armor-stands.patch b/patches/server/0119-Movement-options-for-armor-stands.patch similarity index 96% rename from patches/server/0117-Movement-options-for-armor-stands.patch rename to patches/server/0119-Movement-options-for-armor-stands.patch index 212392336..1c2a4e6d6 100644 --- a/patches/server/0117-Movement-options-for-armor-stands.patch +++ b/patches/server/0119-Movement-options-for-armor-stands.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 20df35377d21e6db7e0f1ca03e531a44129702e7..020f42105e2fd04b109932dbd04d4d3d0274e2c9 100644 +index f23e932e86a92a796e56d1e994d3d631ad39c8ff..295acb77be8a2219e1f6cfe6e215695d763cfbd9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1822,7 +1822,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -66,7 +66,7 @@ index a37054d39ee142e5f3ca3c5e1e3a15c150a3ba32..ea3cad6c9cc561b225cd41f04bd204c9 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 87945b9d75d95ad18ac28f459d4a57dd0c8fbe99..8d3b7626e5f60eb3356bc8b9dead1b72b15e441b 100644 +index ec2a1fc7179bc3819a2d227fef4f9c36e789545b..7d057cb9e8abf43200121b200746e630641c9420 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,10 +99,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0118-Fix-stuck-in-portals.patch b/patches/server/0120-Fix-stuck-in-portals.patch similarity index 92% rename from patches/server/0118-Fix-stuck-in-portals.patch rename to patches/server/0120-Fix-stuck-in-portals.patch index b1c425f75..f4a4fe620 100644 --- a/patches/server/0118-Fix-stuck-in-portals.patch +++ b/patches/server/0120-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 c23fed2780098e87dd74e7d4cb099678d3bd989a..dbfc8585340c8ddb8c706773b02346ca97663e3b 100644 +index a1ef38422631b3856160e054daa14eacb8f13c57..794f5ccc2147ad101e06576a704bb153e83550f7 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1424,6 +1424,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -38,10 +38,10 @@ index 295acb77be8a2219e1f6cfe6e215695d763cfbd9..3e9bb7916e6440b3831871e2b8bcffbf this.portalProcess = new PortalProcessor(portal, pos.immutable()); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 026e34b409c67f30931cf2ec37ad3e4e948e7702..ff95bb88a394821018c3be3638a0da9c5ebaa35f 100644 +index 7d057cb9e8abf43200121b200746e630641c9420..57e00aabe89a8f03994bd6923dccf75e082a9031 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -316,6 +316,7 @@ public class PurpurWorldConfig { +@@ -323,6 +323,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -49,7 +49,7 @@ index 026e34b409c67f30931cf2ec37ad3e4e948e7702..ff95bb88a394821018c3be3638a0da9c private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -331,6 +332,7 @@ public class PurpurWorldConfig { +@@ -338,6 +339,7 @@ public class PurpurWorldConfig { playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); diff --git a/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch similarity index 94% rename from patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch index 0c7c0a137..311422a4f 100644 --- a/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch @@ -1199,10 +1199,10 @@ index 0d5e828a7fb6fd6facc04a27175541ac463c918e..05c63eb6cf8a7067105c58d244c7cc27 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 ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb62fa25b07 100644 +index 57e00aabe89a8f03994bd6923dccf75e082a9031..71d34560516a1953167d2ad787d442602abc5226 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -565,11 +565,13 @@ public class PurpurWorldConfig { +@@ -572,11 +572,13 @@ public class PurpurWorldConfig { public boolean axolotlControllable = true; public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; @@ -1216,7 +1216,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean batRidable = false; -@@ -584,6 +586,7 @@ public class PurpurWorldConfig { +@@ -591,6 +593,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1224,7 +1224,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -602,6 +605,7 @@ public class PurpurWorldConfig { +@@ -609,6 +612,7 @@ public class PurpurWorldConfig { batArmor = getDouble("mobs.bat.attributes.armor", batArmor); batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); @@ -1232,7 +1232,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean beeRidable = false; -@@ -610,6 +614,7 @@ public class PurpurWorldConfig { +@@ -617,6 +621,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; @@ -1240,7 +1240,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -622,6 +627,7 @@ public class PurpurWorldConfig { +@@ -629,6 +634,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1248,7 +1248,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean blazeRidable = false; -@@ -629,6 +635,7 @@ public class PurpurWorldConfig { +@@ -636,6 +642,7 @@ public class PurpurWorldConfig { public boolean blazeControllable = true; public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; @@ -1256,7 +1256,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -640,6 +647,7 @@ public class PurpurWorldConfig { +@@ -647,6 +654,7 @@ public class PurpurWorldConfig { set("mobs.blaze.attributes.max_health", oldValue); } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); @@ -1264,7 +1264,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean boggedRidable = false; -@@ -681,6 +689,7 @@ public class PurpurWorldConfig { +@@ -688,6 +696,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1272,7 +1272,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -700,12 +709,14 @@ public class PurpurWorldConfig { +@@ -707,12 +716,14 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1287,7 +1287,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -716,6 +727,7 @@ public class PurpurWorldConfig { +@@ -723,6 +734,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1295,7 +1295,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean chickenRidable = false; -@@ -724,6 +736,7 @@ public class PurpurWorldConfig { +@@ -731,6 +743,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1303,7 +1303,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -736,11 +749,13 @@ public class PurpurWorldConfig { +@@ -743,11 +756,13 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1317,7 +1317,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -750,6 +765,7 @@ public class PurpurWorldConfig { +@@ -757,6 +772,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1325,7 +1325,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean cowRidable = false; -@@ -758,6 +774,7 @@ public class PurpurWorldConfig { +@@ -765,6 +781,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1333,7 +1333,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -770,6 +787,7 @@ public class PurpurWorldConfig { +@@ -777,6 +794,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1341,7 +1341,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean creeperRidable = false; -@@ -779,6 +797,7 @@ public class PurpurWorldConfig { +@@ -786,6 +804,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1349,7 +1349,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -792,6 +811,7 @@ public class PurpurWorldConfig { +@@ -799,6 +818,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1357,7 +1357,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean dolphinRidable = false; -@@ -801,6 +821,7 @@ public class PurpurWorldConfig { +@@ -808,6 +828,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1365,7 +1365,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -814,6 +835,7 @@ public class PurpurWorldConfig { +@@ -821,6 +842,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1373,7 +1373,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean donkeyRidableInWater = false; -@@ -824,6 +846,7 @@ public class PurpurWorldConfig { +@@ -831,6 +853,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1381,7 +1381,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -840,6 +863,7 @@ public class PurpurWorldConfig { +@@ -847,6 +870,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1389,7 +1389,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean drownedRidable = false; -@@ -850,6 +874,7 @@ public class PurpurWorldConfig { +@@ -857,6 +881,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1397,7 +1397,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -864,11 +889,13 @@ public class PurpurWorldConfig { +@@ -871,11 +896,13 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1411,7 +1411,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -878,6 +905,7 @@ public class PurpurWorldConfig { +@@ -885,6 +912,7 @@ public class PurpurWorldConfig { set("mobs.elder_guardian.attributes.max_health", oldValue); } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); @@ -1419,7 +1419,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean enderDragonRidable = false; -@@ -887,6 +915,7 @@ public class PurpurWorldConfig { +@@ -894,6 +922,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1427,7 +1427,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -904,6 +933,7 @@ public class PurpurWorldConfig { +@@ -911,6 +940,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1435,7 +1435,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean endermanRidable = false; -@@ -913,6 +943,7 @@ public class PurpurWorldConfig { +@@ -920,6 +950,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1443,7 +1443,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -926,12 +957,14 @@ public class PurpurWorldConfig { +@@ -933,12 +964,14 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1458,7 +1458,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -942,6 +975,7 @@ public class PurpurWorldConfig { +@@ -949,6 +982,7 @@ public class PurpurWorldConfig { set("mobs.endermite.attributes.max_health", oldValue); } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); @@ -1466,7 +1466,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean evokerRidable = false; -@@ -949,6 +983,7 @@ public class PurpurWorldConfig { +@@ -956,6 +990,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; @@ -1474,7 +1474,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -960,6 +995,7 @@ public class PurpurWorldConfig { +@@ -967,6 +1002,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1482,7 +1482,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean foxRidable = false; -@@ -969,6 +1005,7 @@ public class PurpurWorldConfig { +@@ -976,6 +1012,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1490,7 +1490,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -982,6 +1019,7 @@ public class PurpurWorldConfig { +@@ -989,6 +1026,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1498,7 +1498,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean frogRidable = false; -@@ -1002,6 +1040,7 @@ public class PurpurWorldConfig { +@@ -1009,6 +1047,7 @@ public class PurpurWorldConfig { public boolean ghastControllable = true; public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; @@ -1506,7 +1506,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1013,6 +1052,7 @@ public class PurpurWorldConfig { +@@ -1020,6 +1059,7 @@ public class PurpurWorldConfig { set("mobs.ghast.attributes.max_health", oldValue); } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); @@ -1514,7 +1514,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean giantRidable = false; -@@ -1025,6 +1065,7 @@ public class PurpurWorldConfig { +@@ -1032,6 +1072,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1522,7 +1522,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1045,17 +1086,20 @@ public class PurpurWorldConfig { +@@ -1052,17 +1093,20 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1543,7 +1543,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean goatRidable = false; -@@ -1063,17 +1107,20 @@ public class PurpurWorldConfig { +@@ -1070,17 +1114,20 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; @@ -1564,7 +1564,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1083,6 +1130,7 @@ public class PurpurWorldConfig { +@@ -1090,6 +1137,7 @@ public class PurpurWorldConfig { set("mobs.guardian.attributes.max_health", oldValue); } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); @@ -1572,7 +1572,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean hoglinRidable = false; -@@ -1090,6 +1138,7 @@ public class PurpurWorldConfig { +@@ -1097,6 +1145,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; @@ -1580,7 +1580,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1101,6 +1150,7 @@ public class PurpurWorldConfig { +@@ -1108,6 +1157,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1588,7 +1588,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean horseRidableInWater = false; -@@ -1111,6 +1161,7 @@ public class PurpurWorldConfig { +@@ -1118,6 +1168,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1596,7 +1596,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1127,6 +1178,7 @@ public class PurpurWorldConfig { +@@ -1134,6 +1185,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1604,7 +1604,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean huskRidable = false; -@@ -1137,6 +1189,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1196,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1612,7 +1612,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1151,6 +1204,7 @@ public class PurpurWorldConfig { +@@ -1158,6 +1211,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1620,7 +1620,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean illusionerRidable = false; -@@ -1159,6 +1213,7 @@ public class PurpurWorldConfig { +@@ -1166,6 +1220,7 @@ public class PurpurWorldConfig { public double illusionerMovementSpeed = 0.5D; public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; @@ -1628,7 +1628,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1175,6 +1230,7 @@ public class PurpurWorldConfig { +@@ -1182,6 +1237,7 @@ public class PurpurWorldConfig { set("mobs.illusioner.attributes.max_health", oldValue); } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); @@ -1636,7 +1636,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean ironGolemRidable = false; -@@ -1182,6 +1238,7 @@ public class PurpurWorldConfig { +@@ -1189,6 +1245,7 @@ public class PurpurWorldConfig { public boolean ironGolemControllable = true; public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; @@ -1644,7 +1644,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1193,6 +1250,7 @@ public class PurpurWorldConfig { +@@ -1200,6 +1257,7 @@ public class PurpurWorldConfig { set("mobs.iron_golem.attributes.max_health", oldValue); } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); @@ -1652,7 +1652,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean llamaRidable = false; -@@ -1205,6 +1263,7 @@ public class PurpurWorldConfig { +@@ -1212,6 +1270,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1660,7 +1660,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1223,6 +1282,7 @@ public class PurpurWorldConfig { +@@ -1230,6 +1289,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1668,7 +1668,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean magmaCubeRidable = false; -@@ -1232,6 +1292,7 @@ public class PurpurWorldConfig { +@@ -1239,6 +1299,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1676,7 +1676,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1245,6 +1306,7 @@ public class PurpurWorldConfig { +@@ -1252,6 +1313,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1684,7 +1684,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean mooshroomRidable = false; -@@ -1252,6 +1314,7 @@ public class PurpurWorldConfig { +@@ -1259,6 +1321,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; @@ -1692,7 +1692,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1263,6 +1326,7 @@ public class PurpurWorldConfig { +@@ -1270,6 +1333,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1700,7 +1700,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean muleRidableInWater = false; -@@ -1273,6 +1337,7 @@ public class PurpurWorldConfig { +@@ -1280,6 +1344,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1708,7 +1708,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1289,6 +1354,7 @@ public class PurpurWorldConfig { +@@ -1296,6 +1361,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1716,7 +1716,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean ocelotRidable = false; -@@ -1296,6 +1362,7 @@ public class PurpurWorldConfig { +@@ -1303,6 +1369,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; @@ -1724,7 +1724,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1307,6 +1374,7 @@ public class PurpurWorldConfig { +@@ -1314,6 +1381,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1732,7 +1732,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean pandaRidable = false; -@@ -1314,6 +1382,7 @@ public class PurpurWorldConfig { +@@ -1321,6 +1389,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; @@ -1740,7 +1740,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1325,6 +1394,7 @@ public class PurpurWorldConfig { +@@ -1332,6 +1401,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1748,7 +1748,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean parrotRidable = false; -@@ -1332,6 +1402,7 @@ public class PurpurWorldConfig { +@@ -1339,6 +1409,7 @@ public class PurpurWorldConfig { public boolean parrotControllable = true; public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; @@ -1756,7 +1756,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1343,6 +1414,7 @@ public class PurpurWorldConfig { +@@ -1350,6 +1421,7 @@ public class PurpurWorldConfig { set("mobs.parrot.attributes.max_health", oldValue); } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); @@ -1764,7 +1764,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean phantomRidable = false; -@@ -1369,6 +1441,7 @@ public class PurpurWorldConfig { +@@ -1376,6 +1448,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1772,7 +1772,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1403,6 +1476,7 @@ public class PurpurWorldConfig { +@@ -1410,6 +1483,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); @@ -1780,7 +1780,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean pigRidable = false; -@@ -1411,6 +1485,7 @@ public class PurpurWorldConfig { +@@ -1418,6 +1492,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1788,7 +1788,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1423,6 +1498,7 @@ public class PurpurWorldConfig { +@@ -1430,6 +1505,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); @@ -1796,7 +1796,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean piglinRidable = false; -@@ -1430,6 +1506,7 @@ public class PurpurWorldConfig { +@@ -1437,6 +1513,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; @@ -1804,7 +1804,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1441,12 +1518,14 @@ public class PurpurWorldConfig { +@@ -1448,12 +1525,14 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1819,7 +1819,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1457,6 +1536,7 @@ public class PurpurWorldConfig { +@@ -1464,6 +1543,7 @@ public class PurpurWorldConfig { set("mobs.piglin_brute.attributes.max_health", oldValue); } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); @@ -1827,7 +1827,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean pillagerRidable = false; -@@ -1464,6 +1544,7 @@ public class PurpurWorldConfig { +@@ -1471,6 +1551,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; @@ -1835,7 +1835,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1475,6 +1556,7 @@ public class PurpurWorldConfig { +@@ -1482,6 +1563,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1843,7 +1843,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean polarBearRidable = false; -@@ -1484,6 +1566,7 @@ public class PurpurWorldConfig { +@@ -1491,6 +1573,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1851,7 +1851,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1498,11 +1581,13 @@ public class PurpurWorldConfig { +@@ -1505,11 +1588,13 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1865,7 +1865,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1512,6 +1597,7 @@ public class PurpurWorldConfig { +@@ -1519,6 +1604,7 @@ public class PurpurWorldConfig { set("mobs.pufferfish.attributes.max_health", oldValue); } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); @@ -1873,7 +1873,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean rabbitRidable = false; -@@ -1522,6 +1608,7 @@ public class PurpurWorldConfig { +@@ -1529,6 +1615,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1881,7 +1881,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1536,6 +1623,7 @@ public class PurpurWorldConfig { +@@ -1543,6 +1630,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); @@ -1889,7 +1889,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean ravagerRidable = false; -@@ -1543,6 +1631,7 @@ public class PurpurWorldConfig { +@@ -1550,6 +1638,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; @@ -1897,7 +1897,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1554,11 +1643,13 @@ public class PurpurWorldConfig { +@@ -1561,11 +1650,13 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1911,7 +1911,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1568,6 +1659,7 @@ public class PurpurWorldConfig { +@@ -1575,6 +1666,7 @@ public class PurpurWorldConfig { set("mobs.salmon.attributes.max_health", oldValue); } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); @@ -1919,7 +1919,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean sheepRidable = false; -@@ -1576,6 +1668,7 @@ public class PurpurWorldConfig { +@@ -1583,6 +1675,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1927,7 +1927,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1588,12 +1681,14 @@ public class PurpurWorldConfig { +@@ -1595,12 +1688,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); @@ -1942,7 +1942,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1604,6 +1699,7 @@ public class PurpurWorldConfig { +@@ -1611,6 +1706,7 @@ public class PurpurWorldConfig { set("mobs.shulker.attributes.max_health", oldValue); } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); @@ -1950,7 +1950,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean silverfishRidable = false; -@@ -1611,6 +1707,7 @@ public class PurpurWorldConfig { +@@ -1618,6 +1714,7 @@ public class PurpurWorldConfig { public boolean silverfishControllable = true; public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; @@ -1958,7 +1958,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1622,12 +1719,14 @@ public class PurpurWorldConfig { +@@ -1629,12 +1726,14 @@ public class PurpurWorldConfig { } silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1973,7 +1973,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1638,6 +1737,7 @@ public class PurpurWorldConfig { +@@ -1645,6 +1744,7 @@ public class PurpurWorldConfig { set("mobs.skeleton.attributes.max_health", oldValue); } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); @@ -1981,7 +1981,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean skeletonHorseRidable = false; -@@ -1649,6 +1749,7 @@ public class PurpurWorldConfig { +@@ -1656,6 +1756,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -1989,7 +1989,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -1665,6 +1766,7 @@ public class PurpurWorldConfig { +@@ -1672,6 +1773,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); @@ -1997,7 +1997,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean slimeRidable = false; -@@ -1674,6 +1776,7 @@ public class PurpurWorldConfig { +@@ -1681,6 +1783,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2005,7 +2005,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1687,6 +1790,7 @@ public class PurpurWorldConfig { +@@ -1694,6 +1797,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2013,7 +2013,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean snowGolemRidable = false; -@@ -1700,6 +1804,7 @@ public class PurpurWorldConfig { +@@ -1707,6 +1811,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2021,7 +2021,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1717,6 +1822,7 @@ public class PurpurWorldConfig { +@@ -1724,6 +1829,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); @@ -2029,7 +2029,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean snifferRidable = false; -@@ -1738,6 +1844,7 @@ public class PurpurWorldConfig { +@@ -1745,6 +1851,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2037,7 +2037,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1750,12 +1857,14 @@ public class PurpurWorldConfig { +@@ -1757,12 +1864,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); @@ -2052,7 +2052,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1766,12 +1875,14 @@ public class PurpurWorldConfig { +@@ -1773,12 +1882,14 @@ public class PurpurWorldConfig { set("mobs.spider.attributes.max_health", oldValue); } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); @@ -2067,7 +2067,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1782,6 +1893,7 @@ public class PurpurWorldConfig { +@@ -1789,6 +1900,7 @@ public class PurpurWorldConfig { set("mobs.stray.attributes.max_health", oldValue); } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); @@ -2075,7 +2075,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean striderRidable = false; -@@ -1790,6 +1902,7 @@ public class PurpurWorldConfig { +@@ -1797,6 +1909,7 @@ public class PurpurWorldConfig { public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2083,7 +2083,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1802,6 +1915,7 @@ public class PurpurWorldConfig { +@@ -1809,6 +1922,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); @@ -2091,7 +2091,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean tadpoleRidable = false; -@@ -1823,6 +1937,7 @@ public class PurpurWorldConfig { +@@ -1830,6 +1944,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2099,7 +2099,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1841,11 +1956,13 @@ public class PurpurWorldConfig { +@@ -1848,11 +1963,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); @@ -2113,7 +2113,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1855,6 +1972,7 @@ public class PurpurWorldConfig { +@@ -1862,6 +1979,7 @@ public class PurpurWorldConfig { set("mobs.tropical_fish.attributes.max_health", oldValue); } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); @@ -2121,7 +2121,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean turtleRidable = false; -@@ -1862,6 +1980,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1987,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; @@ -2129,7 +2129,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1873,6 +1992,7 @@ public class PurpurWorldConfig { +@@ -1880,6 +1999,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2137,7 +2137,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean vexRidable = false; -@@ -1880,6 +2000,7 @@ public class PurpurWorldConfig { +@@ -1887,6 +2007,7 @@ public class PurpurWorldConfig { public boolean vexControllable = true; public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; @@ -2145,7 +2145,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1891,6 +2012,7 @@ public class PurpurWorldConfig { +@@ -1898,6 +2019,7 @@ public class PurpurWorldConfig { set("mobs.vex.attributes.max_health", oldValue); } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); @@ -2153,7 +2153,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean villagerRidable = false; -@@ -1904,6 +2026,7 @@ public class PurpurWorldConfig { +@@ -1911,6 +2033,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2161,7 +2161,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1921,6 +2044,7 @@ public class PurpurWorldConfig { +@@ -1928,6 +2051,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); @@ -2169,7 +2169,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean vindicatorRidable = false; -@@ -1928,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -1935,6 +2059,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2177,7 +2177,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1939,6 +2064,7 @@ public class PurpurWorldConfig { +@@ -1946,6 +2071,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2185,7 +2185,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean wanderingTraderRidable = false; -@@ -1947,6 +2073,7 @@ public class PurpurWorldConfig { +@@ -1954,6 +2080,7 @@ public class PurpurWorldConfig { public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2193,7 +2193,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1959,6 +2086,7 @@ public class PurpurWorldConfig { +@@ -1966,6 +2093,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); @@ -2201,7 +2201,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean wardenRidable = false; -@@ -1974,6 +2102,7 @@ public class PurpurWorldConfig { +@@ -1981,6 +2109,7 @@ public class PurpurWorldConfig { public boolean witchRidableInWater = true; public boolean witchControllable = true; public double witchMaxHealth = 26.0D; @@ -2209,7 +2209,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -1984,6 +2113,7 @@ public class PurpurWorldConfig { +@@ -1991,6 +2120,7 @@ public class PurpurWorldConfig { set("mobs.witch.attributes.max_health", oldValue); } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); @@ -2217,7 +2217,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean witherRidable = false; -@@ -1994,6 +2124,7 @@ public class PurpurWorldConfig { +@@ -2001,6 +2131,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2225,7 +2225,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2012,12 +2143,14 @@ public class PurpurWorldConfig { +@@ -2019,12 +2150,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); @@ -2240,7 +2240,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2028,6 +2161,7 @@ public class PurpurWorldConfig { +@@ -2035,6 +2168,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); @@ -2248,7 +2248,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean wolfRidable = false; -@@ -2038,6 +2172,7 @@ public class PurpurWorldConfig { +@@ -2045,6 +2179,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2256,7 +2256,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2056,12 +2191,14 @@ public class PurpurWorldConfig { +@@ -2063,12 +2198,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); @@ -2271,7 +2271,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2072,6 +2209,7 @@ public class PurpurWorldConfig { +@@ -2079,6 +2216,7 @@ public class PurpurWorldConfig { set("mobs.zoglin.attributes.max_health", oldValue); } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); @@ -2279,7 +2279,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean zombieRidable = false; -@@ -2084,6 +2222,7 @@ public class PurpurWorldConfig { +@@ -2091,6 +2229,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2287,7 +2287,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2100,6 +2239,7 @@ public class PurpurWorldConfig { +@@ -2107,6 +2246,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); @@ -2295,7 +2295,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean zombieHorseRidable = false; -@@ -2112,6 +2252,7 @@ public class PurpurWorldConfig { +@@ -2119,6 +2259,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2303,7 +2303,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2129,6 +2270,7 @@ public class PurpurWorldConfig { +@@ -2136,6 +2277,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); @@ -2311,7 +2311,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean zombieVillagerRidable = false; -@@ -2139,6 +2281,7 @@ public class PurpurWorldConfig { +@@ -2146,6 +2288,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2319,7 +2319,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2153,6 +2296,7 @@ public class PurpurWorldConfig { +@@ -2160,6 +2303,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); @@ -2327,7 +2327,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 } public boolean zombifiedPiglinRidable = false; -@@ -2164,6 +2308,7 @@ public class PurpurWorldConfig { +@@ -2171,6 +2315,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2335,7 +2335,7 @@ index ff95bb88a394821018c3be3638a0da9c5ebaa35f..166153166cc4860b9361f7452c4d1eb6 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2179,5 +2324,6 @@ public class PurpurWorldConfig { +@@ -2186,5 +2331,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/0120-Config-to-always-tame-in-Creative.patch b/patches/server/0122-Config-to-always-tame-in-Creative.patch similarity index 97% rename from patches/server/0120-Config-to-always-tame-in-Creative.patch rename to patches/server/0122-Config-to-always-tame-in-Creative.patch index 70c7de8c4..82adc4dc9 100644 --- a/patches/server/0120-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0122-Config-to-always-tame-in-Creative.patch @@ -59,7 +59,7 @@ index 5802d5a43c5f2dc569130cc70c4ba519c471abc0..ca8b7dcd2a93b41dfd22f6f112dcac1b 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 35ca19ea233e262c1931747ce0b998a1e78e23ac..1aeaa84d66221ce560fea71bbc39f7d9a9587711 100644 +index 71d34560516a1953167d2ad787d442602abc5226..ba01bf6bdf6ca9425ea55caeae4a09f322ec86fc 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 { @@ -70,7 +70,7 @@ index 35ca19ea233e262c1931747ce0b998a1e78e23ac..1aeaa84d66221ce560fea71bbc39f7d9 public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = false; public boolean disableDropsOnCrammingDeath = false; -@@ -133,6 +134,7 @@ public class PurpurWorldConfig { +@@ -134,6 +135,7 @@ public class PurpurWorldConfig { public int animalBreedingCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/patches/server/0121-End-crystal-explosion-options.patch b/patches/server/0123-End-crystal-explosion-options.patch similarity index 97% rename from patches/server/0121-End-crystal-explosion-options.patch rename to patches/server/0123-End-crystal-explosion-options.patch index eb4f2b013..9a2589cc8 100644 --- a/patches/server/0121-End-crystal-explosion-options.patch +++ b/patches/server/0123-End-crystal-explosion-options.patch @@ -53,10 +53,10 @@ index 72122333cf0247e4a8511ac633487f170b89586c..02f1d0418395b100cabfad7294466aaa this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 904c7d1c4ab545c0dc18d7fbd3902dde4820497f..51a164f0f5075240b3fe266fc378c7c4ff57b2ab 100644 +index ba01bf6bdf6ca9425ea55caeae4a09f322ec86fc..1751dc86fbb1192f516e02d10d9fc8b735744d0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -448,6 +448,43 @@ public class PurpurWorldConfig { +@@ -455,6 +455,43 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0122-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0124-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch similarity index 92% rename from patches/server/0122-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch rename to patches/server/0124-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 731f7effb..eeb416a76 100644 --- a/patches/server/0122-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0124-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -29,10 +29,10 @@ index 73d5027234cca5a9d0dfd60f455fe67ba5174558..ab0ed16663ac72924d2a4f139705e551 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51a164f0f5075240b3fe266fc378c7c4ff57b2ab..e9e59acd426d0fc756b2d9307ea984f0cb4abce0 100644 +index 1751dc86fbb1192f516e02d10d9fc8b735744d0f..227066a721c215d0a635ab2303e6a034d82c8da8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -955,6 +955,7 @@ public class PurpurWorldConfig { +@@ -962,6 +962,7 @@ public class PurpurWorldConfig { public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonTakeDamageFromWater = false; @@ -40,7 +40,7 @@ index 51a164f0f5075240b3fe266fc378c7c4ff57b2ab..e9e59acd426d0fc756b2d9307ea984f0 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -973,6 +974,7 @@ public class PurpurWorldConfig { +@@ -980,6 +981,7 @@ public class PurpurWorldConfig { enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); @@ -48,7 +48,7 @@ index 51a164f0f5075240b3fe266fc378c7c4ff57b2ab..e9e59acd426d0fc756b2d9307ea984f0 } public boolean endermanRidable = false; -@@ -2164,6 +2166,7 @@ public class PurpurWorldConfig { +@@ -2171,6 +2173,7 @@ public class PurpurWorldConfig { public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; @@ -56,7 +56,7 @@ index 51a164f0f5075240b3fe266fc378c7c4ff57b2ab..e9e59acd426d0fc756b2d9307ea984f0 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2183,6 +2186,7 @@ public class PurpurWorldConfig { +@@ -2190,6 +2193,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/0123-Dont-run-with-scissors.patch b/patches/server/0125-Dont-run-with-scissors.patch similarity index 98% rename from patches/server/0123-Dont-run-with-scissors.patch rename to patches/server/0125-Dont-run-with-scissors.patch index ed5303479..9790d74bd 100644 --- a/patches/server/0123-Dont-run-with-scissors.patch +++ b/patches/server/0125-Dont-run-with-scissors.patch @@ -149,10 +149,10 @@ index f9d5718193f4b886a118d5a8b9191a3a4469d6d8..3c1b41f0ae58669d6fae640e8763c43e public static String serverModName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e9e59acd426d0fc756b2d9307ea984f0cb4abce0..7ace30d634600be4e2a71dce12645db48b22e67d 100644 +index 227066a721c215d0a635ab2303e6a034d82c8da8..d1e22ae6ab92055162ec8b36198ea697ccf5caf7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -180,6 +180,10 @@ public class PurpurWorldConfig { +@@ -187,6 +187,10 @@ public class PurpurWorldConfig { public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -163,7 +163,7 @@ index e9e59acd426d0fc756b2d9307ea984f0cb4abce0..7ace30d634600be4e2a71dce12645db4 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -217,6 +221,10 @@ public class PurpurWorldConfig { +@@ -224,6 +228,10 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); diff --git a/patches/server/0124-One-Punch-Man.patch b/patches/server/0126-One-Punch-Man.patch similarity index 94% rename from patches/server/0124-One-Punch-Man.patch rename to patches/server/0126-One-Punch-Man.patch index 9fde54fe9..3ac725073 100644 --- a/patches/server/0124-One-Punch-Man.patch +++ b/patches/server/0126-One-Punch-Man.patch @@ -35,10 +35,10 @@ index fc560ddef3542f9bf566917c3af9072857f1bd04..d76e8cf2a2d48548b0ad33c78dbf435b float f1 = amount; boolean flag = amount > 0.0F && this.isDamageSourceBlocked(source); // Copied from below diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7ace30d634600be4e2a71dce12645db48b22e67d..74829c202ab6c44da26d025635e6a429777ab69c 100644 +index d1e22ae6ab92055162ec8b36198ea697ccf5caf7..a5a550f8dd3732e1841e37d7f90aa83afa945877 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -327,6 +327,7 @@ public class PurpurWorldConfig { +@@ -334,6 +334,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -46,7 +46,7 @@ index 7ace30d634600be4e2a71dce12645db48b22e67d..74829c202ab6c44da26d025635e6a429 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -343,6 +344,7 @@ public class PurpurWorldConfig { +@@ -350,6 +351,7 @@ public class PurpurWorldConfig { teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); diff --git a/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0127-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 96% rename from patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0127-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index c0b46ebf0..f1dd54595 100644 --- a/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0127-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,10 +43,10 @@ index 20a91d798d31a71b3c05efa2cc5bda55494e26cc..fc62754f93bd11a10c28b8b7b116e9ff // Paper end - PlayerLaunchProjectileEvent 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 74829c202ab6c44da26d025635e6a429777ab69c..11ab08b642af112452d6afc0b2ad7f61e5380420 100644 +index a5a550f8dd3732e1841e37d7f90aa83afa945877..01168bd1312c303e37e9f46dd0a8d92c526cc1f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -184,6 +184,10 @@ public class PurpurWorldConfig { +@@ -191,6 +191,10 @@ public class PurpurWorldConfig { public boolean ignoreScissorsInWater = false; public boolean ignoreScissorsInLava = false; public double scissorsRunningDamage = 1D; @@ -57,7 +57,7 @@ index 74829c202ab6c44da26d025635e6a429777ab69c..11ab08b642af112452d6afc0b2ad7f61 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -225,6 +229,10 @@ public class PurpurWorldConfig { +@@ -232,6 +236,10 @@ public class PurpurWorldConfig { ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater); ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava); scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); diff --git a/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0128-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 88% rename from patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0128-Config-to-ignore-nearby-mobs-when-sleeping.patch index 593fa4706..577e32d3d 100644 --- a/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0128-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 dbfc8585340c8ddb8c706773b02346ca97663e3b..8bb9692f37f2f0cfa7964963aacbc57b67a2708b 100644 +index 794f5ccc2147ad101e06576a704bb153e83550f7..27acdaa3d72198c822b92f6a0d27b7b1c118b539 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1529,7 +1529,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -18,10 +18,10 @@ index dbfc8585340c8ddb8c706773b02346ca97663e3b..8bb9692f37f2f0cfa7964963aacbc57b } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 11ab08b642af112452d6afc0b2ad7f61e5380420..d3af2b98c3aa8daca20f4b39ae90d867f0708de8 100644 +index 01168bd1312c303e37e9f46dd0a8d92c526cc1f4..ec5c9e404996b42e8fd48872ff1efa6c0b6c912b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -336,6 +336,7 @@ public class PurpurWorldConfig { +@@ -343,6 +343,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index 11ab08b642af112452d6afc0b2ad7f61e5380420..d3af2b98c3aa8daca20f4b39ae90d867 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -353,6 +354,7 @@ public class PurpurWorldConfig { +@@ -360,6 +361,7 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); diff --git a/patches/server/0127-Add-back-player-spawned-endermite-API.patch b/patches/server/0129-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/server/0127-Add-back-player-spawned-endermite-API.patch rename to patches/server/0129-Add-back-player-spawned-endermite-API.patch diff --git a/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0130-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 94% rename from patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0130-Config-Enderman-aggressiveness-towards-Endermites.patch index df6b0350d..c43401283 100644 --- a/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0130-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 75d462d7f55dedfa62844549fa6690a4a652bd1f..cc9da5134ece550e8a1902e90282090f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d3af2b98c3aa8daca20f4b39ae90d867f0708de8..1d35264437b77bc3d7467743b760f8ee4cb53588 100644 +index ec5c9e404996b42e8fd48872ff1efa6c0b6c912b..7c9c09d53c6ede2f302d0d35c981218895520335 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1005,6 +1005,8 @@ public class PurpurWorldConfig { +@@ -1012,6 +1012,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index d3af2b98c3aa8daca20f4b39ae90d867f0708de8..1d35264437b77bc3d7467743b760f8ee private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1014,11 +1016,17 @@ public class PurpurWorldConfig { +@@ -1021,11 +1023,17 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0131-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 93% rename from patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0131-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index a131b3d92..6a7215206 100644 --- a/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0131-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,10 +20,10 @@ index cc9da5134ece550e8a1902e90282090f05818fd8..f2e21c9d3cefb635c4eb583ac9355b46 } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d35264437b77bc3d7467743b760f8ee4cb53588..a2db9a7eabbc660368cc50d7c1f216df444f3b93 100644 +index 7c9c09d53c6ede2f302d0d35c981218895520335..84fb3a8d8527c63787bf40f14519290f4d3fbe79 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1007,6 +1007,8 @@ public class PurpurWorldConfig { +@@ -1014,6 +1014,8 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -32,7 +32,7 @@ index 1d35264437b77bc3d7467743b760f8ee4cb53588..a2db9a7eabbc660368cc50d7c1f216df private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1027,6 +1029,8 @@ public class PurpurWorldConfig { +@@ -1034,6 +1036,8 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0130-Tick-fluids-config.patch b/patches/server/0132-Tick-fluids-config.patch similarity index 94% rename from patches/server/0130-Tick-fluids-config.patch rename to patches/server/0132-Tick-fluids-config.patch index 058be67d7..079f2c980 100644 --- a/patches/server/0130-Tick-fluids-config.patch +++ b/patches/server/0132-Tick-fluids-config.patch @@ -36,10 +36,10 @@ index 84623c632d8c2f0fa7ec939c711316d757117d23..1851035b9fdcc076442d0699567a3b02 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 23762b5df538e8e2b042495e20381a94dd910cc0..a3559e01d93872750af81881295bcb12538dc33e 100644 +index 84fb3a8d8527c63787bf40f14519290f4d3fbe79..80fd1104b5d13e592db5b61b1978bac8e9d284bb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -127,6 +127,7 @@ public class PurpurWorldConfig { +@@ -128,6 +128,7 @@ public class PurpurWorldConfig { public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; public boolean projectilesBypassMobGriefing = false; @@ -47,7 +47,7 @@ index 23762b5df538e8e2b042495e20381a94dd910cc0..a3559e01d93872750af81881295bcb12 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -144,6 +145,7 @@ public class PurpurWorldConfig { +@@ -146,6 +147,7 @@ public class PurpurWorldConfig { noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); diff --git a/patches/server/0131-Config-to-disable-Llama-caravans.patch b/patches/server/0133-Config-to-disable-Llama-caravans.patch similarity index 94% rename from patches/server/0131-Config-to-disable-Llama-caravans.patch rename to patches/server/0133-Config-to-disable-Llama-caravans.patch index f1eefe2e4..4975bb12c 100644 --- a/patches/server/0131-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0133-Config-to-disable-Llama-caravans.patch @@ -32,10 +32,10 @@ index 96f1eba4a356e131a8f3c689bedc9eb8821e1a72..8edfc34a17d8c05cfa2928738306c1ab 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 f18b0c8ef31159d09137506bcf77658b901e5e49..7579875230cd0e6bafd911ff234cb5ad47d2dcb3 100644 +index 80fd1104b5d13e592db5b61b1978bac8e9d284bb..587fbe633da9ffcb52afa8b62d618c02f8a5818f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1339,6 +1339,7 @@ public class PurpurWorldConfig { +@@ -1346,6 +1346,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index f18b0c8ef31159d09137506bcf77658b901e5e49..7579875230cd0e6bafd911ff234cb5ad private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1358,6 +1359,7 @@ public class PurpurWorldConfig { +@@ -1365,6 +1366,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); diff --git a/patches/server/0132-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0134-Config-to-make-Creepers-explode-on-death.patch similarity index 94% rename from patches/server/0132-Config-to-make-Creepers-explode-on-death.patch rename to patches/server/0134-Config-to-make-Creepers-explode-on-death.patch index 93e97a2ed..7009ba30b 100644 --- a/patches/server/0132-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0134-Config-to-make-Creepers-explode-on-death.patch @@ -52,10 +52,10 @@ index d68897b167918ba1e28b083b665ce70aaec437df..2834994506948d02abf228cfb9ffbb3b private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7579875230cd0e6bafd911ff234cb5ad47d2dcb3..0ccca4eb96b36eb952f6fd2f25c5ab8da6114c74 100644 +index 587fbe633da9ffcb52afa8b62d618c02f8a5818f..e4004e6167392c8eba0746b61321fc1bc54c1e09 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -859,6 +859,7 @@ public class PurpurWorldConfig { +@@ -866,6 +866,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -63,7 +63,7 @@ index 7579875230cd0e6bafd911ff234cb5ad47d2dcb3..0ccca4eb96b36eb952f6fd2f25c5ab8d private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -873,6 +874,7 @@ public class PurpurWorldConfig { +@@ -880,6 +881,7 @@ public class PurpurWorldConfig { creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); diff --git a/patches/server/0133-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0135-Configurable-ravager-griefable-blocks-list.patch similarity index 95% rename from patches/server/0133-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0135-Configurable-ravager-griefable-blocks-list.patch index 8532201e3..86adf8b02 100644 --- a/patches/server/0133-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0135-Configurable-ravager-griefable-blocks-list.patch @@ -31,10 +31,10 @@ index 2af4c365743b2956939335512f74e0a1d84298f7..a69e7e8da81bd13578d230cc1e3f0f90 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ccca4eb96b36eb952f6fd2f25c5ab8da6114c74..e50419fc621848791a1952b2a885b5286eca702b 100644 +index e4004e6167392c8eba0746b61321fc1bc54c1e09..1081ac687fbf92aaca0d64703969b11b29e5fb41 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1711,6 +1711,7 @@ public class PurpurWorldConfig { +@@ -1718,6 +1718,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index 0ccca4eb96b36eb952f6fd2f25c5ab8da6114c74..e50419fc621848791a1952b2a885b528 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1723,6 +1724,23 @@ public class PurpurWorldConfig { +@@ -1730,6 +1731,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/0134-Sneak-to-bulk-process-composter.patch b/patches/server/0136-Sneak-to-bulk-process-composter.patch similarity index 97% rename from patches/server/0134-Sneak-to-bulk-process-composter.patch rename to patches/server/0136-Sneak-to-bulk-process-composter.patch index a29888d83..eae0fb19d 100644 --- a/patches/server/0134-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0136-Sneak-to-bulk-process-composter.patch @@ -87,10 +87,10 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0 protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { 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 e50419fc621848791a1952b2a885b5286eca702b..9fc737aafa6cc2dfd6da0b52dff732977a3b36a6 100644 +index 1081ac687fbf92aaca0d64703969b11b29e5fb41..77d785534e8186c3b930efe27469a9223b30f6c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -463,6 +463,11 @@ public class PurpurWorldConfig { +@@ -470,6 +470,11 @@ public class PurpurWorldConfig { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); } diff --git a/patches/server/0135-Config-for-skipping-night.patch b/patches/server/0137-Config-for-skipping-night.patch similarity index 92% rename from patches/server/0135-Config-for-skipping-night.patch rename to patches/server/0137-Config-for-skipping-night.patch index a849648b6..08aea6228 100644 --- a/patches/server/0135-Config-for-skipping-night.patch +++ b/patches/server/0137-Config-for-skipping-night.patch @@ -18,10 +18,10 @@ index 613cf0562d2a82e2a7b9bf1d3143e9c4e4a75bea..97e18801ae774d4e7b5154912a1a8281 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 9fc737aafa6cc2dfd6da0b52dff732977a3b36a6..f27b40a7e1a77fbdb34f10fe95cf6cfa638c56fd 100644 +index 77d785534e8186c3b930efe27469a9223b30f6c6..52ac15501519a85f71690889182b47d867bb4714 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -339,6 +339,7 @@ public class PurpurWorldConfig { +@@ -346,6 +346,7 @@ public class PurpurWorldConfig { public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; @@ -29,7 +29,7 @@ index 9fc737aafa6cc2dfd6da0b52dff732977a3b36a6..f27b40a7e1a77fbdb34f10fe95cf6cfa private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -357,6 +358,7 @@ public class PurpurWorldConfig { +@@ -364,6 +365,7 @@ public class PurpurWorldConfig { playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); diff --git a/patches/server/0136-Add-config-for-villager-trading.patch b/patches/server/0138-Add-config-for-villager-trading.patch similarity index 93% rename from patches/server/0136-Add-config-for-villager-trading.patch rename to patches/server/0138-Add-config-for-villager-trading.patch index 1c7232ee1..bd368d04b 100644 --- a/patches/server/0136-Add-config-for-villager-trading.patch +++ b/patches/server/0138-Add-config-for-villager-trading.patch @@ -32,10 +32,10 @@ index 05c63eb6cf8a7067105c58d244c7cc27d6bf1125..7c2d5d28f8c2aba2cd8255a4aef22247 return InteractionResult.sidedSuccess(this.level().isClientSide); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f27b40a7e1a77fbdb34f10fe95cf6cfa638c56fd..80c708ac9fc2e03c2e3ec7aa8f57a8ec0f2ea9ce 100644 +index 52ac15501519a85f71690889182b47d867bb4714..8c8ae2059c91e75a60063383f320c38e98b0c37b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2131,6 +2131,7 @@ public class PurpurWorldConfig { +@@ -2138,6 +2138,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index f27b40a7e1a77fbdb34f10fe95cf6cfa638c56fd..80c708ac9fc2e03c2e3ec7aa8f57a8ec private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2149,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2156,6 +2157,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); @@ -51,7 +51,7 @@ index f27b40a7e1a77fbdb34f10fe95cf6cfa638c56fd..80c708ac9fc2e03c2e3ec7aa8f57a8ec } public boolean vindicatorRidable = false; -@@ -2178,6 +2180,7 @@ public class PurpurWorldConfig { +@@ -2185,6 +2187,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index f27b40a7e1a77fbdb34f10fe95cf6cfa638c56fd..80c708ac9fc2e03c2e3ec7aa8f57a8ec private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2191,6 +2194,7 @@ public class PurpurWorldConfig { +@@ -2198,6 +2201,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/0137-Drowning-Settings.patch b/patches/server/0139-Drowning-Settings.patch similarity index 95% rename from patches/server/0137-Drowning-Settings.patch rename to patches/server/0139-Drowning-Settings.patch index 150bea34d..08b2edd76 100644 --- a/patches/server/0137-Drowning-Settings.patch +++ b/patches/server/0139-Drowning-Settings.patch @@ -40,10 +40,10 @@ index d76e8cf2a2d48548b0ad33c78dbf435b61bf91c4..da28941d9a374be39cf7c1620f48ddaa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 80c708ac9fc2e03c2e3ec7aa8f57a8ec0f2ea9ce..bf34483e7cf04422113c2861750cb670e2f93629 100644 +index 8c8ae2059c91e75a60063383f320c38e98b0c37b..23eec811728847c5c36199aecf6426c7cc7b1ab9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -160,6 +160,15 @@ public class PurpurWorldConfig { +@@ -162,6 +162,15 @@ public class PurpurWorldConfig { nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); } diff --git a/patches/server/0138-Break-individual-slabs-when-sneaking.patch b/patches/server/0140-Break-individual-slabs-when-sneaking.patch similarity index 95% rename from patches/server/0138-Break-individual-slabs-when-sneaking.patch rename to patches/server/0140-Break-individual-slabs-when-sneaking.patch index ea6e8592d..34aa93344 100644 --- a/patches/server/0138-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0140-Break-individual-slabs-when-sneaking.patch @@ -47,10 +47,10 @@ index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bf34483e7cf04422113c2861750cb670e2f93629..c4e5061002166f1d7cbc1a5ff27ca34e0d7ab34b 100644 +index 23eec811728847c5c36199aecf6426c7cc7b1ab9..639dcf8b0d1c2f83165846a3c00b3c62bc30f6d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -584,6 +584,11 @@ public class PurpurWorldConfig { +@@ -591,6 +591,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0141-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 94% rename from patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0141-Config-to-disable-hostile-mob-spawn-on-ice.patch index d2c7d4744..8374de97c 100644 --- a/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0141-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,10 +24,10 @@ index 759839e912c54598b257ad738481364940f88a18..e60e6b3e5ae5a468cfe649ed2222412f return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4e5061002166f1d7cbc1a5ff27ca34e0d7ab34b..aecdcac966ce3773b9dd305255109cd3625e976d 100644 +index 639dcf8b0d1c2f83165846a3c00b3c62bc30f6d6..9971450420af92adba111d6df5811e34f4bc0d56 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -549,6 +549,13 @@ public class PurpurWorldConfig { +@@ -556,6 +556,13 @@ public class PurpurWorldConfig { furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath); } diff --git a/patches/server/0140-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0142-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 96% rename from patches/server/0140-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0142-Config-to-show-Armor-Stand-arms-on-spawn.patch index cf4139c51..f7c94b383 100644 --- a/patches/server/0140-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0142-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -17,7 +17,7 @@ index ea3cad6c9cc561b225cd41f04bd204c99ecd66ec..ad1ec2578fa428baa6b172c44b6c17e5 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 d59dad166be3503f32a03d82850d3da686678dff..d5b5cf30aede8615b19f11c3d874c5fb24aa7f29 100644 +index 9971450420af92adba111d6df5811e34f4bc0d56..da6d0c8698b7de4d6dcb9c73bc1fc39ddf02062d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -102,6 +102,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0141-Option-to-make-doors-require-redstone.patch b/patches/server/0143-Option-to-make-doors-require-redstone.patch similarity index 97% rename from patches/server/0141-Option-to-make-doors-require-redstone.patch rename to patches/server/0143-Option-to-make-doors-require-redstone.patch index 567320c50..8b2f09019 100644 --- a/patches/server/0141-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0143-Option-to-make-doors-require-redstone.patch @@ -82,10 +82,10 @@ index 6dd75bc722f9c20b4869e6353115c3b02dd79f99..dfaf82f5b0180cf08c4125347867d37a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a53b1833a861de5c90012c242715a1183057bfa..37b90b32ebbdc5e8a9fa51816093800409795ed4 100644 +index da6d0c8698b7de4d6dcb9c73bc1fc39ddf02062d..df2a32fab545069b8657ae51697e89748588d05b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -488,6 +488,16 @@ public class PurpurWorldConfig { +@@ -495,6 +495,16 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } diff --git a/patches/server/0142-Config-to-allow-unsafe-enchants.patch b/patches/server/0144-Config-to-allow-unsafe-enchants.patch similarity index 100% rename from patches/server/0142-Config-to-allow-unsafe-enchants.patch rename to patches/server/0144-Config-to-allow-unsafe-enchants.patch diff --git a/patches/server/0143-Configurable-sponge-absorption.patch b/patches/server/0145-Configurable-sponge-absorption.patch similarity index 93% rename from patches/server/0143-Configurable-sponge-absorption.patch rename to patches/server/0145-Configurable-sponge-absorption.patch index bded090f0..ae2433f85 100644 --- a/patches/server/0143-Configurable-sponge-absorption.patch +++ b/patches/server/0145-Configurable-sponge-absorption.patch @@ -21,10 +21,10 @@ index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06 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 37b90b32ebbdc5e8a9fa51816093800409795ed4..59b94038806ad2da6cd5212035a43b3625792287 100644 +index df2a32fab545069b8657ae51697e89748588d05b..f8f417643dd098420a8bf18252a1db3ea8841d35 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -613,6 +613,13 @@ public class PurpurWorldConfig { +@@ -620,6 +620,13 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0144-Projectile-offset-config.patch b/patches/server/0146-Projectile-offset-config.patch similarity index 98% rename from patches/server/0144-Projectile-offset-config.patch rename to patches/server/0146-Projectile-offset-config.patch index 2fcc3f791..05fbb2b6f 100644 --- a/patches/server/0144-Projectile-offset-config.patch +++ b/patches/server/0146-Projectile-offset-config.patch @@ -96,10 +96,10 @@ index 4934bae61114b49a9f8d0ed044fbb881210df32a..1be074074283f12543ac771ac9201580 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 59b94038806ad2da6cd5212035a43b3625792287..cd3a2509678e9bbb2bc0df02bb3de3188c874825 100644 +index f8f417643dd098420a8bf18252a1db3ea8841d35..1305f506efc0e5d87fe2e5ae6857cba486fed4bc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -438,6 +438,23 @@ public class PurpurWorldConfig { +@@ -445,6 +445,23 @@ public class PurpurWorldConfig { //} } diff --git a/patches/server/0145-Config-for-powered-rail-activation-distance.patch b/patches/server/0147-Config-for-powered-rail-activation-distance.patch similarity index 91% rename from patches/server/0145-Config-for-powered-rail-activation-distance.patch rename to patches/server/0147-Config-for-powered-rail-activation-distance.patch index c6c6c94a5..bf1118d5d 100644 --- a/patches/server/0145-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0147-Config-for-powered-rail-activation-distance.patch @@ -18,10 +18,10 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2 } 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 cd3a2509678e9bbb2bc0df02bb3de3188c874825..fac9d008fde9c49ce5c61fbd10682feac5a7680a 100644 +index 1305f506efc0e5d87fe2e5ae6857cba486fed4bc..7d70d8ca6f3881ceca395f7b6e83ba6b08c7f55a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -599,6 +599,11 @@ public class PurpurWorldConfig { +@@ -606,6 +606,11 @@ public class PurpurWorldConfig { powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); } diff --git a/patches/server/0146-Piglin-portal-spawn-modifier.patch b/patches/server/0148-Piglin-portal-spawn-modifier.patch similarity index 90% rename from patches/server/0146-Piglin-portal-spawn-modifier.patch rename to patches/server/0148-Piglin-portal-spawn-modifier.patch index fb76a2784..8508f7054 100644 --- a/patches/server/0146-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0148-Piglin-portal-spawn-modifier.patch @@ -18,7 +18,7 @@ Difficulties: 3 - hard diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index a530276b0123dee5680d7e09ad3d2f0414909c91..8d5be486adc9b523d3b7067ee4573d83b095d01c 100644 +index 730ef910afa911f264cf842a53281cda845ffac7..1e036ac5bca4c4c69e7f99390a48daf248364ed3 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -77,7 +77,7 @@ public class NetherPortalBlock extends Block implements Portal { @@ -31,10 +31,10 @@ index a530276b0123dee5680d7e09ad3d2f0414909c91..8d5be486adc9b523d3b7067ee4573d83 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fac9d008fde9c49ce5c61fbd10682feac5a7680a..3c52d1f90f73a3692e98a5e0c54177aabd0d97fe 100644 +index 7d70d8ca6f3881ceca395f7b6e83ba6b08c7f55a..44e81b1da9414acbb15f1bf3a16d6702bb549a8e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1655,6 +1655,7 @@ public class PurpurWorldConfig { +@@ -1662,6 +1662,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; @@ -42,7 +42,7 @@ index fac9d008fde9c49ce5c61fbd10682feac5a7680a..3c52d1f90f73a3692e98a5e0c54177aa private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1667,6 +1668,7 @@ public class PurpurWorldConfig { +@@ -1674,6 +1675,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/0147-Config-to-change-max-number-of-bees.patch b/patches/server/0149-Config-to-change-max-number-of-bees.patch similarity index 100% rename from patches/server/0147-Config-to-change-max-number-of-bees.patch rename to patches/server/0149-Config-to-change-max-number-of-bees.patch diff --git a/patches/server/0148-Config-for-wither-explosion-radius.patch b/patches/server/0150-Config-for-wither-explosion-radius.patch similarity index 92% rename from patches/server/0148-Config-for-wither-explosion-radius.patch rename to patches/server/0150-Config-for-wither-explosion-radius.patch index 17f829193..f80735cb7 100644 --- a/patches/server/0148-Config-for-wither-explosion-radius.patch +++ b/patches/server/0150-Config-for-wither-explosion-radius.patch @@ -18,10 +18,10 @@ index e472df057d087fe46bd40b798c050ed6e38a283c..999453409c19abf7f5b5c2dc39969985 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c52d1f90f73a3692e98a5e0c54177aabd0d97fe..5f7ea922b88c94895b9632589cab503e5d4a5bfa 100644 +index 44e81b1da9414acbb15f1bf3a16d6702bb549a8e..9dc4524ce6ae3ef8dade80a7ddbfa462d6f88d9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2298,6 +2298,7 @@ public class PurpurWorldConfig { +@@ -2305,6 +2305,7 @@ public class PurpurWorldConfig { public boolean witherBypassMobGriefing = false; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; @@ -29,7 +29,7 @@ index 3c52d1f90f73a3692e98a5e0c54177aabd0d97fe..5f7ea922b88c94895b9632589cab503e private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2318,6 +2319,7 @@ public class PurpurWorldConfig { +@@ -2325,6 +2326,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/0149-Gamemode-extra-permissions.patch b/patches/server/0151-Gamemode-extra-permissions.patch similarity index 98% rename from patches/server/0149-Gamemode-extra-permissions.patch rename to patches/server/0151-Gamemode-extra-permissions.patch index a5dc61d08..cb0923208 100644 --- a/patches/server/0149-Gamemode-extra-permissions.patch +++ b/patches/server/0151-Gamemode-extra-permissions.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index b51850c0368b0fa2c9eb4ca44b9c931eb46478fc..684536f600cca94ea346129a139ec4aac4d9f979 100644 +index 2f7ed5b38e8930b3a615f160cdf4c5b0ec932a8d..08e783882d0b2ef3ebf88e664f1a3d8bf65f49f2 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -209,6 +209,19 @@ public class CommandSourceStack implements ExecutionCommandSource minecartControllableBlockSpeeds = new HashMap<>(); @@ -29,7 +29,7 @@ index dc979b3226badc663b1ff919c069219d51f5eb95..953e8035dbd209bfd6c5bfdf548aec4e private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -310,6 +311,7 @@ public class PurpurWorldConfig { +@@ -317,6 +318,7 @@ public class PurpurWorldConfig { set("gameplay-mechanics.minecart.controllable.block-speed.grass_block", 0.3D); set("gameplay-mechanics.minecart.controllable.block-speed.stone", 0.5D); } diff --git a/patches/server/0158-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0160-Add-config-change-multiplier-critical-damage-value.patch similarity index 92% rename from patches/server/0158-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0160-Add-config-change-multiplier-critical-damage-value.patch index e0a49b127..8029a7b6e 100644 --- a/patches/server/0158-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0160-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index 2dafba96353c208b89da7b65c0d56a51e00547c3..c582b5be87e93a0ea231bb6ce47bd10c float f3 = f + f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 953e8035dbd209bfd6c5bfdf548aec4e4ae1aa86..cd4e433316fe3d70babdea395093a2b071e38219 100644 +index d2a14c952aadeb60eabe6013b9a7668967a40a74..25ce21184691d0a30fb4c9fc858f95c5471e5c85 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -355,6 +355,7 @@ public class PurpurWorldConfig { +@@ -362,6 +362,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index 953e8035dbd209bfd6c5bfdf548aec4e4ae1aa86..cd4e433316fe3d70babdea395093a2b0 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -374,6 +375,7 @@ public class PurpurWorldConfig { +@@ -381,6 +382,7 @@ public class PurpurWorldConfig { creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); diff --git a/patches/server/0159-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0161-Option-to-disable-dragon-egg-teleporting.patch similarity index 92% rename from patches/server/0159-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0161-Option-to-disable-dragon-egg-teleporting.patch index 472840a13..094c4b160 100644 --- a/patches/server/0159-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0161-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index fbe15cdd5b9bca2ab4b1e871abbbdbff49ade8a4..23d113842bf774bdc74e0dffcc97b642 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 cd4e433316fe3d70babdea395093a2b071e38219..71128e30a7ce6753aeb51c94db631f448349a06c 100644 +index 25ce21184691d0a30fb4c9fc858f95c5471e5c85..d375c9ee4cb303ae98683b870b0582340bac269c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -521,6 +521,11 @@ public class PurpurWorldConfig { +@@ -528,6 +528,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0160-Config-for-unverified-username-message.patch b/patches/server/0162-Config-for-unverified-username-message.patch similarity index 100% rename from patches/server/0160-Config-for-unverified-username-message.patch rename to patches/server/0162-Config-for-unverified-username-message.patch diff --git a/patches/server/0161-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0163-Make-anvil-cumulative-cost-configurable.patch similarity index 100% rename from patches/server/0161-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0163-Make-anvil-cumulative-cost-configurable.patch diff --git a/patches/server/0162-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0164-Bee-can-work-when-raining-or-at-night.patch similarity index 94% rename from patches/server/0162-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0164-Bee-can-work-when-raining-or-at-night.patch index 0911ba37e..77f0fb8ca 100644 --- a/patches/server/0162-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0164-Bee-can-work-when-raining-or-at-night.patch @@ -31,10 +31,10 @@ index f52823146944d333f2d050e90261b570ba66f5dd..d8efb00c325448d566c59418fe22268c return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 71128e30a7ce6753aeb51c94db631f448349a06c..ee7d79848974e5b8eafb7ac0627ea0da5eb7493b 100644 +index d375c9ee4cb303ae98683b870b0582340bac269c..831323fcdbeb9b3c434023b3433690a6a040012d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -761,6 +761,8 @@ public class PurpurWorldConfig { +@@ -768,6 +768,8 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -43,7 +43,7 @@ index 71128e30a7ce6753aeb51c94db631f448349a06c..ee7d79848974e5b8eafb7ac0627ea0da private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -774,6 +776,8 @@ public class PurpurWorldConfig { +@@ -781,6 +783,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/0163-API-for-any-mob-to-burn-daylight.patch b/patches/server/0165-API-for-any-mob-to-burn-daylight.patch similarity index 99% rename from patches/server/0163-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0165-API-for-any-mob-to-burn-daylight.patch index cd8d33457..e8703df25 100644 --- a/patches/server/0163-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0165-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b0db81b3ebf17f6834716b09d6c30c8d19dc1dec..7b3b76cb9dd8b7f6254baffcd0f94aa70918ff04 100644 +index 62a3086a980685c8210bb6b3ec987ce125a99116..313f3430af520613cebbf890ff8d7f70d30dd518 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -536,6 +536,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -357,7 +357,7 @@ index 1c2291c8a20541cc1e306efdd5263e5d8b3e0b16..dd3890d405c9eb5ad2630fc555f7c74f } // Paper end - Add more Zombie API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 84479dad6078a2a12e6b977185bdbbe7f6b36576..ef550741b2173a1a6f24c3bc532bb530eccd6217 100644 +index 4be205b10229b238039e4221df043e47cba68511..d4fc45d4f419309ba11830accdc3cdafe739ab15 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -86,6 +86,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0164-Config-MobEffect-by-world.patch b/patches/server/0166-Config-MobEffect-by-world.patch similarity index 97% rename from patches/server/0164-Config-MobEffect-by-world.patch rename to patches/server/0166-Config-MobEffect-by-world.patch index 9896af9c4..f2058e6db 100644 --- a/patches/server/0164-Config-MobEffect-by-world.patch +++ b/patches/server/0166-Config-MobEffect-by-world.patch @@ -72,10 +72,10 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ee7d79848974e5b8eafb7ac0627ea0da5eb7493b..8c8544fb888eda28171a675371b5002b3f96125e 100644 +index 831323fcdbeb9b3c434023b3433690a6a040012d..1fde73b2a6a939a7f6c489375fb6937ac8173e90 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -314,6 +314,21 @@ public class PurpurWorldConfig { +@@ -321,6 +321,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0165-Beacon-Activation-Range-Configurable.patch b/patches/server/0167-Beacon-Activation-Range-Configurable.patch similarity index 94% rename from patches/server/0165-Beacon-Activation-Range-Configurable.patch rename to patches/server/0167-Beacon-Activation-Range-Configurable.patch index 1a0508815..5d5aefce4 100644 --- a/patches/server/0165-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0167-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index 814e70f558d7a6186233da0ff86c94c95d390e09..d1fb77d83d48183a9a37dbeec7bb0fda } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8c8544fb888eda28171a675371b5002b3f96125e..2b4efa8b00ea9eedfd94d48e6433c2af4ad0cf85 100644 +index 1fde73b2a6a939a7f6c489375fb6937ac8173e90..c8b1f744142559bee03b1adeeb92ba36ea1fda77 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -488,6 +488,17 @@ public class PurpurWorldConfig { +@@ -495,6 +495,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0166-Make-lightning-rod-range-configurable.patch b/patches/server/0168-Make-lightning-rod-range-configurable.patch similarity index 100% rename from patches/server/0166-Make-lightning-rod-range-configurable.patch rename to patches/server/0168-Make-lightning-rod-range-configurable.patch diff --git a/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0169-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 95% rename from patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0169-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index ceb0d5b92..e53887269 100644 --- a/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0169-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -54,10 +54,10 @@ index bd3f78e6453cfe18aa3da38176b04d734d83bb4b..515dd3b769917c4aa60ce180ef24f38c public void eat(FoodProperties foodComponent) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2b4efa8b00ea9eedfd94d48e6433c2af4ad0cf85..92224cab3535e0bc98ed6000843633b1871303ef 100644 +index c8b1f744142559bee03b1adeeb92ba36ea1fda77..8c26fe212cb26ea8ede237256da8c8806c8c047b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -371,6 +371,8 @@ public class PurpurWorldConfig { +@@ -378,6 +378,8 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -66,7 +66,7 @@ index 2b4efa8b00ea9eedfd94d48e6433c2af4ad0cf85..92224cab3535e0bc98ed6000843633b1 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -391,6 +393,8 @@ public class PurpurWorldConfig { +@@ -398,6 +400,8 @@ public class PurpurWorldConfig { playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); diff --git a/patches/server/0168-Allow-player-join-full-server-by-permission.patch b/patches/server/0170-Allow-player-join-full-server-by-permission.patch similarity index 93% rename from patches/server/0168-Allow-player-join-full-server-by-permission.patch rename to patches/server/0170-Allow-player-join-full-server-by-permission.patch index a0433e26d..a1f41ec33 100644 --- a/patches/server/0168-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0170-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 a8f8b3da5d1fe661f4c6a2487e81dd6b01653960..f4f965a51628a096f6697f4008ec9dba04d30fd2 100644 +index ffab1dd057ce003c0c7e6ffd9203833a9d5ffd0e..b9c48dfa9c1e091cd674d6168b230ad25b66e94d 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -747,7 +747,7 @@ public abstract class PlayerList { diff --git a/patches/server/0169-Add-portal-permission-bypass.patch b/patches/server/0171-Add-portal-permission-bypass.patch similarity index 94% rename from patches/server/0169-Add-portal-permission-bypass.patch rename to patches/server/0171-Add-portal-permission-bypass.patch index 45e24d107..726d8b07c 100644 --- a/patches/server/0169-Add-portal-permission-bypass.patch +++ b/patches/server/0171-Add-portal-permission-bypass.patch @@ -17,10 +17,10 @@ index 68f414c421458a38e5db8225524c1bf87c2627f3..2fe3af832a228b1352b9b85dec061150 // CraftBukkit start public boolean fauxSleeping; diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index 259f7e162968714e2959b199c7b1ab847dd624ef..901674b1d2e616beec4782258ffb923818513db6 100644 +index 1e036ac5bca4c4c69e7f99390a48daf248364ed3..b3179c9537ba528379c2b0f6e166f850332e18c3 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -121,7 +121,7 @@ public class NetherPortalBlock extends Block implements Portal { +@@ -128,7 +128,7 @@ public class NetherPortalBlock extends Block implements Portal { @Override public int getPortalTransitionTime(ServerLevel world, Entity entity) { if (entity instanceof Player entityhuman) { diff --git a/patches/server/0170-Shulker-spawn-from-bullet-options.patch b/patches/server/0172-Shulker-spawn-from-bullet-options.patch similarity index 96% rename from patches/server/0170-Shulker-spawn-from-bullet-options.patch rename to patches/server/0172-Shulker-spawn-from-bullet-options.patch index 8b31bda5d..60d6a08dd 100644 --- a/patches/server/0170-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0172-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 0d04a0107bd1a8a2b9aeb4be55025cd554e8fb79..a050d76233e179a1456b83ccc02bb9a5 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 92224cab3535e0bc98ed6000843633b1871303ef..c42d392047de05a108b12aa0a5d511259e707722 100644 +index 8c26fe212cb26ea8ede237256da8c8806c8c047b..a60498402a5c065a04410e7b35f462fa2116585a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1915,6 +1915,11 @@ public class PurpurWorldConfig { +@@ -1922,6 +1922,11 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index 92224cab3535e0bc98ed6000843633b1871303ef..c42d392047de05a108b12aa0a5d51125 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1926,6 +1931,11 @@ public class PurpurWorldConfig { +@@ -1933,6 +1938,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/0171-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0173-Eating-glow-berries-adds-glow-effect.patch similarity index 95% rename from patches/server/0171-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0173-Eating-glow-berries-adds-glow-effect.patch index 137e3df9b..13149c601 100644 --- a/patches/server/0171-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0173-Eating-glow-berries-adds-glow-effect.patch @@ -18,10 +18,10 @@ index 4eef61323ba54f513e6f251ef7c804b2c91ff477..6b2235281dca67a80cb651e9f8e9bf25 public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c42d392047de05a108b12aa0a5d511259e707722..86846ad7459d96ad27c6d7f55f414022f0d62507 100644 +index a60498402a5c065a04410e7b35f462fa2116585a..f94a3d7f3d1e3fb5ba1a439aac7c51af9eda53b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -203,6 +203,7 @@ public class PurpurWorldConfig { +@@ -210,6 +210,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index c42d392047de05a108b12aa0a5d511259e707722..86846ad7459d96ad27c6d7f55f414022 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -248,6 +249,7 @@ public class PurpurWorldConfig { +@@ -255,6 +256,7 @@ public class PurpurWorldConfig { enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown); enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); diff --git a/patches/server/0172-Option-to-make-drowned-break-doors.patch b/patches/server/0174-Option-to-make-drowned-break-doors.patch similarity index 93% rename from patches/server/0172-Option-to-make-drowned-break-doors.patch rename to patches/server/0174-Option-to-make-drowned-break-doors.patch index b47e5944f..6afde6841 100644 --- a/patches/server/0172-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0174-Option-to-make-drowned-break-doors.patch @@ -26,10 +26,10 @@ index f037d50f26f7532f11a71790448de7a71644b6ca..b3a79dc4357ad4392101353fbc99aac1 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 86846ad7459d96ad27c6d7f55f414022f0d62507..f72c0e9ac75e4e564ec953414248529c185c134f 100644 +index f94a3d7f3d1e3fb5ba1a439aac7c51af9eda53b0..36b51a71b18a033af6054ecb3bb8102c2f3dc7f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1061,6 +1061,7 @@ public class PurpurWorldConfig { +@@ -1068,6 +1068,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -37,7 +37,7 @@ index 86846ad7459d96ad27c6d7f55f414022f0d62507..f72c0e9ac75e4e564ec953414248529c private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1076,6 +1077,7 @@ public class PurpurWorldConfig { +@@ -1083,6 +1084,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/0173-Configurable-hunger-starvation-damage.patch b/patches/server/0175-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/server/0173-Configurable-hunger-starvation-damage.patch rename to patches/server/0175-Configurable-hunger-starvation-damage.patch index 611386464..10b3c1a92 100644 --- a/patches/server/0173-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0175-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 515dd3b769917c4aa60ce180ef24f38ca12e6848..c7ad716f607afe382436d088a2b2e622 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f72c0e9ac75e4e564ec953414248529c185c134f..03db186c6799e3b64e1995d62e11963600773ffb 100644 +index 36b51a71b18a033af6054ecb3bb8102c2f3dc7f7..853793856eb7944b4194eec5247cd13bc50b6bc3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2574,4 +2574,9 @@ public class PurpurWorldConfig { +@@ -2581,4 +2581,9 @@ public class PurpurWorldConfig { 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/0174-Enhance-SysoutCatcher.patch b/patches/server/0176-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0174-Enhance-SysoutCatcher.patch rename to patches/server/0176-Enhance-SysoutCatcher.patch diff --git a/patches/server/0175-Add-uptime-command.patch b/patches/server/0177-Add-uptime-command.patch similarity index 100% rename from patches/server/0175-Add-uptime-command.patch rename to patches/server/0177-Add-uptime-command.patch diff --git a/patches/server/0176-Tool-actionable-options.patch b/patches/server/0178-Tool-actionable-options.patch similarity index 99% rename from patches/server/0176-Tool-actionable-options.patch rename to patches/server/0178-Tool-actionable-options.patch index 01557ba31..f9d08a140 100644 --- a/patches/server/0176-Tool-actionable-options.patch +++ b/patches/server/0178-Tool-actionable-options.patch @@ -157,10 +157,10 @@ index 24f6a158e4759aac3be8da4cf5e0d40bd295355b..6b7dbb570f8a698c87c6bce992d84d87 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 03db186c6799e3b64e1995d62e11963600773ffb..4520df0b1ecc6e9c8f382bda2a70fc2a0ad64f50 100644 +index 853793856eb7944b4194eec5247cd13bc50b6bc3..1950a3dcb678ab8185477631a7d8b06f3e246e7b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -487,6 +487,280 @@ public class PurpurWorldConfig { +@@ -494,6 +494,280 @@ public class PurpurWorldConfig { snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } diff --git a/patches/server/0177-Store-placer-on-Block-when-placed.patch b/patches/server/0179-Store-placer-on-Block-when-placed.patch similarity index 96% rename from patches/server/0177-Store-placer-on-Block-when-placed.patch rename to patches/server/0179-Store-placer-on-Block-when-placed.patch index c9953ea65..1346a1922 100644 --- a/patches/server/0177-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0179-Store-placer-on-Block-when-placed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index a9a4ba95b21af47e770f9daecc2f099c1d113bd8..68b9d2d8121091dadfdd54416b1a3a047b603b8d 100644 +index 293771fd6e86447b219d0936b67cdcdf2bc5f0ee..11f4711f149f56adaa67774d1d2595487580436a 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -497,6 +497,7 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0178-Summoner-API.patch b/patches/server/0180-Summoner-API.patch similarity index 99% rename from patches/server/0178-Summoner-API.patch rename to patches/server/0180-Summoner-API.patch index ce7c32b34..3fb9993f9 100644 --- a/patches/server/0178-Summoner-API.patch +++ b/patches/server/0180-Summoner-API.patch @@ -232,7 +232,7 @@ index 4ce2373ff71c3c1b8951646e057587a3ab09e145..4f7f6cf6ca24406570d2d29dc63dc894 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java -index 955948f6ec096304671a98f7241930fa91565711..14ffecadeeebd65207799f1dcc189e5ac0261c2a 100644 +index 7881c6253c1d652c0c0d54a9a8accdf0a1ff0f3e..da6ccb2a38df76770821a1a2203e54e722f541ca 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java @@ -99,4 +99,17 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok diff --git a/patches/server/0179-Customizable-sleeping-actionbar-messages.patch b/patches/server/0181-Customizable-sleeping-actionbar-messages.patch similarity index 98% rename from patches/server/0179-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0181-Customizable-sleeping-actionbar-messages.patch index 2525ce27a..364bfad03 100644 --- a/patches/server/0179-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0181-Customizable-sleeping-actionbar-messages.patch @@ -38,7 +38,7 @@ index b2f066db2ac90ba53e0cc3c995316f49f7bc62ea..d1c98dcf2acb0a25f2537ee7f5cc183a } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f3255cdfe9ff77be2b781056e39f35d506aafeb2..136635fa74c099e74d75f1d3ca093514329bf3dc 100644 +index 11c8f5d0849ebdcda80d7298726179f698c71c7a..70103438f70a970dedf5bd4d5e42ae42e310ccea 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1570,7 +1570,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple diff --git a/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0182-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 92% rename from patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0182-option-to-disable-shulker-box-items-from-dropping-co.patch index f62aad121..7cb313842 100644 --- a/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0182-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -18,10 +18,10 @@ index 3253361d91e2a2e68d354eaf3dd3e3cd486e191d..2649188930653610b8aaaeb18797c808 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4520df0b1ecc6e9c8f382bda2a70fc2a0ad64f50..f8632e9e4da31d963890d600587414599ac2eff8 100644 +index 1950a3dcb678ab8185477631a7d8b06f3e246e7b..ec81757be249a03de5d3cfedefb20470c76154ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -204,6 +204,7 @@ public class PurpurWorldConfig { +@@ -211,6 +211,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -29,7 +29,7 @@ index 4520df0b1ecc6e9c8f382bda2a70fc2a0ad64f50..f8632e9e4da31d963890d60058741459 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -250,6 +251,7 @@ public class PurpurWorldConfig { +@@ -257,6 +258,7 @@ public class PurpurWorldConfig { enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); diff --git a/patches/server/0181-Big-dripleaf-tilt-delay.patch b/patches/server/0183-Big-dripleaf-tilt-delay.patch similarity index 94% rename from patches/server/0181-Big-dripleaf-tilt-delay.patch rename to patches/server/0183-Big-dripleaf-tilt-delay.patch index 1d5a542b9..4ec551861 100644 --- a/patches/server/0181-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0183-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae0 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f8632e9e4da31d963890d600587414599ac2eff8..dc384130f18debadd5cf9d4bf00404754dd2b015 100644 +index ec81757be249a03de5d3cfedefb20470c76154ee..2b5ba2e7e953d99220d7c01160e4f93a1ebde6ff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -802,6 +802,22 @@ public class PurpurWorldConfig { +@@ -809,6 +809,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0182-Player-ridable-in-water-option.patch b/patches/server/0184-Player-ridable-in-water-option.patch similarity index 91% rename from patches/server/0182-Player-ridable-in-water-option.patch rename to patches/server/0184-Player-ridable-in-water-option.patch index 9f29b4093..636f12e2f 100644 --- a/patches/server/0182-Player-ridable-in-water-option.patch +++ b/patches/server/0184-Player-ridable-in-water-option.patch @@ -23,10 +23,10 @@ index 2fe3af832a228b1352b9b85dec06115009ef658f..cb6f161d32fe9642e9e9b1efc47d8861 if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc384130f18debadd5cf9d4bf00404754dd2b015..49abcdb2448af0625e134181cb10c3d4d13a8006 100644 +index 2b5ba2e7e953d99220d7c01160e4f93a1ebde6ff..102420987c7b87458af888e733722b467a48b961 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -377,6 +377,7 @@ public class PurpurWorldConfig { +@@ -384,6 +384,7 @@ public class PurpurWorldConfig { public double playerCriticalDamageMultiplier = 1.5D; public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; @@ -34,7 +34,7 @@ index dc384130f18debadd5cf9d4bf00404754dd2b015..49abcdb2448af0625e134181cb10c3d4 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -399,6 +400,7 @@ public class PurpurWorldConfig { +@@ -406,6 +407,7 @@ public class PurpurWorldConfig { playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); diff --git a/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0185-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 92% rename from patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0185-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index c3526eeba..8af54edb3 100644 --- a/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0185-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index f2e21c9d3cefb635c4eb583ac9355b46675c94e7..2855efc4670c58219ca1e78770ac289a for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 49abcdb2448af0625e134181cb10c3d4d13a8006..c4173598759f0c64817ff60bbd00dbab736ca073 100644 +index 102420987c7b87458af888e733722b467a48b961..843e585a5f1aa9ece6fc69afba8be3294d22dcc4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1432,6 +1432,7 @@ public class PurpurWorldConfig { +@@ -1439,6 +1439,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index 49abcdb2448af0625e134181cb10c3d4d13a8006..c4173598759f0c64817ff60bbd00dbab private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1454,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1461,6 +1462,7 @@ public class PurpurWorldConfig { endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0184-Add-compass-command.patch b/patches/server/0186-Add-compass-command.patch similarity index 98% rename from patches/server/0184-Add-compass-command.patch rename to patches/server/0186-Add-compass-command.patch index 32c61bd2b..d3ecd4b0f 100644 --- a/patches/server/0184-Add-compass-command.patch +++ b/patches/server/0186-Add-compass-command.patch @@ -89,10 +89,10 @@ index e61adb459d148390851607c6ea7cf710344b26e8..21dff6a902b3c4e0fb40e61b4974ead7 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4173598759f0c64817ff60bbd00dbab736ca073..7b7a6488f2baadd77a1247b64b46d5589c882514 100644 +index 843e585a5f1aa9ece6fc69afba8be3294d22dcc4..be454562746a16362290b935ac63848a8da82ad0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -205,6 +205,7 @@ public class PurpurWorldConfig { +@@ -212,6 +212,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index c4173598759f0c64817ff60bbd00dbab736ca073..7b7a6488f2baadd77a1247b64b46d558 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -252,6 +253,7 @@ public class PurpurWorldConfig { +@@ -259,6 +260,7 @@ public class PurpurWorldConfig { enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); diff --git a/patches/server/0185-Toggle-for-kinetic-damage.patch b/patches/server/0187-Toggle-for-kinetic-damage.patch similarity index 93% rename from patches/server/0185-Toggle-for-kinetic-damage.patch rename to patches/server/0187-Toggle-for-kinetic-damage.patch index 219e23f23..03a0f524b 100644 --- a/patches/server/0185-Toggle-for-kinetic-damage.patch +++ b/patches/server/0187-Toggle-for-kinetic-damage.patch @@ -17,10 +17,10 @@ index 9367e0f148d3aa9a60dfd8881a3c337630a53129..6b76ca326d08853a8a508ec22d7bc6cf } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b7a6488f2baadd77a1247b64b46d5589c882514..c2e2fd46eb79727fec1f2083effcccc132a784c8 100644 +index be454562746a16362290b935ac63848a8da82ad0..c997897c481aa8e18fca9aac7b2f441506b4629e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -177,11 +177,13 @@ public class PurpurWorldConfig { +@@ -179,11 +179,13 @@ public class PurpurWorldConfig { public double elytraDamageMultiplyBySpeed = 0; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; diff --git a/patches/server/0186-Add-Option-for-disable-observer-clocks.patch b/patches/server/0188-Add-Option-for-disable-observer-clocks.patch similarity index 93% rename from patches/server/0186-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0188-Add-Option-for-disable-observer-clocks.patch index 70fc1a243..9880a75a1 100644 --- a/patches/server/0186-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0188-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index b38fbe5121f293f425d7673a6ce49b11d0ced0d9..2a74f42672b92393b52a61c27c5b8af7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2e2fd46eb79727fec1f2083effcccc132a784c8..6df0f31600623ada9ea8207feeaa0de8368be8fd 100644 +index c997897c481aa8e18fca9aac7b2f441506b4629e..c0633e1df4eed679638c027d8b899705ac0bf2f5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -352,6 +352,11 @@ public class PurpurWorldConfig { +@@ -359,6 +359,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0189-Customizeable-Zombie-Villager-curing-times.patch similarity index 93% rename from patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0189-Customizeable-Zombie-Villager-curing-times.patch index f8d84bb99..a11a2f2d8 100644 --- a/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0189-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 3c4cff3f095cdf2dd74df7bf4bb8f3d5600b342d..9bb75b49ea2d0bd8aafbe537b65f86eb return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6df0f31600623ada9ea8207feeaa0de8368be8fd..e6101274efffc8a51d9ce8bd9245c33fa09041d4 100644 +index c0633e1df4eed679638c027d8b899705ac0bf2f5..465d47e7feced83e08a9508d469e2de351e6afd1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2835,6 +2835,8 @@ public class PurpurWorldConfig { +@@ -2842,6 +2842,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 6df0f31600623ada9ea8207feeaa0de8368be8fd..e6101274efffc8a51d9ce8bd9245c33f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2850,6 +2852,8 @@ public class PurpurWorldConfig { +@@ -2857,6 +2859,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0190-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 95% rename from patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0190-Option-for-sponges-to-work-on-lava-and-mud.patch index 9f8e9c109..1324997e8 100644 --- a/patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0190-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff..6fe44572e34ad3e3a1851e73138bd8b7 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e6101274efffc8a51d9ce8bd9245c33fa09041d4..9a21a85a8d0bdd1a953c55d1cf9c17537939d7f2 100644 +index 465d47e7feced83e08a9508d469e2de351e6afd1..4f96968c9878001104a2704fc799e6a1d81f20d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -988,9 +988,13 @@ public class PurpurWorldConfig { +@@ -995,9 +995,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0191-Toggle-for-Wither-s-spawn-sound.patch similarity index 91% rename from patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0191-Toggle-for-Wither-s-spawn-sound.patch index 7ca70904f..fea40b10c 100644 --- a/patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0191-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 15c9321763ad9f3bb31d7a05cb7ed9cb64e9a8a4..c37c27eec9d0b293063fc8841ac85810 // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9a21a85a8d0bdd1a953c55d1cf9c17537939d7f2..cb5e0cccb4e812db5e7c1713c9ff2a01d02cf817 100644 +index 4f96968c9878001104a2704fc799e6a1d81f20d4..6a303055543ee5942bd80f032b39c5fd60f7c2ce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2680,6 +2680,7 @@ public class PurpurWorldConfig { +@@ -2687,6 +2687,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index 9a21a85a8d0bdd1a953c55d1cf9c17537939d7f2..cb5e0cccb4e812db5e7c1713c9ff2a01 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2701,6 +2702,7 @@ public class PurpurWorldConfig { +@@ -2708,6 +2709,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0192-Cactus-breaks-from-solid-neighbors-config.patch similarity index 92% rename from patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0192-Cactus-breaks-from-solid-neighbors-config.patch index 525c0b871..9b98ca247 100644 --- a/patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0192-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index ff4dda48116a2969704b355ff96407ba869b466e..9200d75b05ce535f7b7f5c1572cd8f62 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cb5e0cccb4e812db5e7c1713c9ff2a01d02cf817..9fa9cc62d9f8f3cb1eec8c5738ce04bb8cdda9b7 100644 +index 6a303055543ee5942bd80f032b39c5fd60f7c2ce..b89a103d0aa0b16dcaf3ea870975a8ede5fc9915 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -829,6 +829,11 @@ public class PurpurWorldConfig { +@@ -836,6 +836,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0193-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 92% rename from patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0193-Config-to-remove-curse-of-binding-with-weakness.patch index 6e2e50267..18f3bc1f1 100644 --- a/patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0193-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,10 +18,10 @@ index 6c0b6abb1698fac9bb902f695b725d4ab783ee90..091e3c3514fcb378b68098114106d09f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9fa9cc62d9f8f3cb1eec8c5738ce04bb8cdda9b7..329954562a9c66c7fd33c9f816ff09a7739fc854 100644 +index b89a103d0aa0b16dcaf3ea870975a8ede5fc9915..a7c50e1ca69c834209c6fc8e586d35f246bec731 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -387,6 +387,7 @@ public class PurpurWorldConfig { +@@ -394,6 +394,7 @@ public class PurpurWorldConfig { public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; @@ -29,7 +29,7 @@ index 9fa9cc62d9f8f3cb1eec8c5738ce04bb8cdda9b7..329954562a9c66c7fd33c9f816ff09a7 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -410,6 +411,7 @@ public class PurpurWorldConfig { +@@ -417,6 +418,7 @@ public class PurpurWorldConfig { playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); diff --git a/patches/server/0192-Conduit-behavior-configuration.patch b/patches/server/0194-Conduit-behavior-configuration.patch similarity index 98% rename from patches/server/0192-Conduit-behavior-configuration.patch rename to patches/server/0194-Conduit-behavior-configuration.patch index 9c7fdecbc..3b84358d6 100644 --- a/patches/server/0192-Conduit-behavior-configuration.patch +++ b/patches/server/0194-Conduit-behavior-configuration.patch @@ -97,10 +97,10 @@ index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b36 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 329954562a9c66c7fd33c9f816ff09a7739fc854..27860fcde1f1decdce9c1f54f92ea6097700ee50 100644 +index a7c50e1ca69c834209c6fc8e586d35f246bec731..13d40005684b33c7dd15a94bff5e5ff62da4a228 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2901,4 +2901,27 @@ public class PurpurWorldConfig { +@@ -2908,4 +2908,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0193-Cauldron-fill-chances.patch b/patches/server/0195-Cauldron-fill-chances.patch similarity index 96% rename from patches/server/0193-Cauldron-fill-chances.patch rename to patches/server/0195-Cauldron-fill-chances.patch index 306364519..f045f7f2c 100644 --- a/patches/server/0193-Cauldron-fill-chances.patch +++ b/patches/server/0195-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb3 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 27860fcde1f1decdce9c1f54f92ea6097700ee50..7cc3ff173bb97b720b69b3b82a621868849fc443 100644 +index 13d40005684b33c7dd15a94bff5e5ff62da4a228..7513119e68909267ab634705bb3d9923a22a41b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2924,4 +2924,15 @@ public class PurpurWorldConfig { +@@ -2931,4 +2931,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0194-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0196-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 92% rename from patches/server/0194-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0196-Config-to-allow-mobs-to-pathfind-over-rails.patch index ba48b3343..8ab85b261 100644 --- a/patches/server/0194-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0196-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,10 +18,10 @@ index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b2669 && pathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc98e302cbe5ad2f016913d2b41c6d68d94b589e..b953cf6ff70684ef4735ea4f328f647649ea9ce4 100644 +index 7513119e68909267ab634705bb3d9923a22a41b4..996c8941c8ad196a17a70a3771f716c674e02cdd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -136,6 +136,7 @@ public class PurpurWorldConfig { +@@ -137,6 +137,7 @@ public class PurpurWorldConfig { public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; @@ -29,7 +29,7 @@ index dc98e302cbe5ad2f016913d2b41c6d68d94b589e..b953cf6ff70684ef4735ea4f328f6476 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -155,6 +156,7 @@ public class PurpurWorldConfig { +@@ -157,6 +158,7 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); diff --git a/patches/server/0195-Shulker-change-color-with-dye.patch b/patches/server/0197-Shulker-change-color-with-dye.patch similarity index 93% rename from patches/server/0195-Shulker-change-color-with-dye.patch rename to patches/server/0197-Shulker-change-color-with-dye.patch index 7420ca1d3..fd2711377 100644 --- a/patches/server/0195-Shulker-change-color-with-dye.patch +++ b/patches/server/0197-Shulker-change-color-with-dye.patch @@ -29,10 +29,10 @@ index fde6bae8a5d9eba7ec87c73047a6e3f91629828e..0e9a4e473b1f1887804507cfadfdeeed protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 250d455cc9c723bd83f9d7617b73014aa55759aa..7fefcc2bba871c821172264810e373278a92caa0 100644 +index 996c8941c8ad196a17a70a3771f716c674e02cdd..e100fe93d4320f8cc1a2b4b5bb4dcd6a111a6406 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2242,6 +2242,7 @@ public class PurpurWorldConfig { +@@ -2249,6 +2249,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -40,7 +40,7 @@ index 250d455cc9c723bd83f9d7617b73014aa55759aa..7fefcc2bba871c821172264810e37327 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2258,6 +2259,7 @@ public class PurpurWorldConfig { +@@ -2265,6 +2266,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0196-Extended-OfflinePlayer-API.patch b/patches/server/0198-Extended-OfflinePlayer-API.patch similarity index 98% rename from patches/server/0196-Extended-OfflinePlayer-API.patch rename to patches/server/0198-Extended-OfflinePlayer-API.patch index 9bae0caaf..46a0e8d0c 100644 --- a/patches/server/0196-Extended-OfflinePlayer-API.patch +++ b/patches/server/0198-Extended-OfflinePlayer-API.patch @@ -243,10 +243,10 @@ index 9d93130f23addb18b97d7f5ec013faef17a74529..29d2fb87a65778926aea2cfc7a5b486c + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2fba6458aa097d9375df7d2f38efd10049a35b7d..cf355d3c0c4ca62640a0750a82cd661b2e7af65b 100644 +index 33425cdcde10f6446f059b290d4c372debcb9c0b..e71ac12c107f2cb1b89277605b08884bc3ad27d7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2757,6 +2757,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2758,6 +2758,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0197-Added-the-ability-to-add-combustible-items.patch b/patches/server/0199-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/server/0197-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0199-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/server/0198-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 93% rename from patches/server/0198-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index b2751b1a2..dea4d9cba 100644 --- a/patches/server/0198-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -25,10 +25,10 @@ index d1c98dcf2acb0a25f2537ee7f5cc183a0db2e64e..31642e0667b4086fdc05626806da6d5c // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index faf2b37977bb0b3d1b8a95f31159ab4b142bf56a..3a8c99464eaff70be5695cafd83caa3d1c6f7a03 100644 +index e100fe93d4320f8cc1a2b4b5bb4dcd6a111a6406..b89da45ba086c68201ce79d628eec77321e3ab0b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -137,6 +137,8 @@ public class PurpurWorldConfig { +@@ -138,6 +138,8 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean mobsIgnoreRails = false; @@ -37,7 +37,7 @@ index faf2b37977bb0b3d1b8a95f31159ab4b142bf56a..3a8c99464eaff70be5695cafd83caa3d private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -157,6 +159,8 @@ public class PurpurWorldConfig { +@@ -159,6 +161,8 @@ public class PurpurWorldConfig { raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); diff --git a/patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0201-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 94% rename from patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0201-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 2280956d6..225090d99 100644 --- a/patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0201-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,10 +50,10 @@ index 223259e7a09ada681b6181c898f6857888594f85..7d58a95f7ae8983b466b275f4f82597d .sound(SoundType.FLOWERING_AZALEA) .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 02770064c5569a20aeb3ee167254d4214455a9e2..cb754bc007f543b72651c6e744c1691ad8ce3f95 100644 +index b89da45ba086c68201ce79d628eec77321e3ab0b..f11ffa60f8a7c8266b6975dadfd98437d9889a77 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -789,6 +789,11 @@ public class PurpurWorldConfig { +@@ -796,6 +796,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -65,7 +65,7 @@ index 02770064c5569a20aeb3ee167254d4214455a9e2..cb754bc007f543b72651c6e744c1691a public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -926,6 +931,11 @@ public class PurpurWorldConfig { +@@ -933,6 +938,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0202-Shift-right-click-to-use-exp-for-mending.patch similarity index 95% rename from patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0202-Shift-right-click-to-use-exp-for-mending.patch index 3365b164b..5b927dc44 100644 --- a/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0202-Shift-right-click-to-use-exp-for-mending.patch @@ -48,10 +48,10 @@ index e81820761689801c3ca267c500818ff0f48bb858..efb72ae3ce609117258dfc9f09b53add cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cb754bc007f543b72651c6e744c1691ad8ce3f95..d1ff92b87cfb3c251080047104277abde2fdcd4e 100644 +index f11ffa60f8a7c8266b6975dadfd98437d9889a77..9056d9eaa14882fee895938e7d47225aaa81e098 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -394,6 +394,7 @@ public class PurpurWorldConfig { +@@ -401,6 +401,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index cb754bc007f543b72651c6e744c1691ad8ce3f95..d1ff92b87cfb3c251080047104277abd private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -418,6 +419,7 @@ public class PurpurWorldConfig { +@@ -425,6 +426,7 @@ public class PurpurWorldConfig { playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); diff --git a/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0203-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 95% rename from patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0203-Dolphins-naturally-aggressive-to-players-chance.patch index 9cb3297d4..ac955f067 100644 --- a/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0203-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index 439fa9a5070889a4dee48786509940c4d56b6806..f2e1954a1e80862ec3818af448cf4096 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d1ff92b87cfb3c251080047104277abde2fdcd4e..06dbb44d3f1ceab48f9d00398197c0150b49615a 100644 +index 9056d9eaa14882fee895938e7d47225aaa81e098..0300ecea68d82365a1faf2a9246bf7746cd94b83 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1340,6 +1340,7 @@ public class PurpurWorldConfig { +@@ -1347,6 +1347,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index d1ff92b87cfb3c251080047104277abde2fdcd4e..06dbb44d3f1ceab48f9d00398197c015 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1354,6 +1355,7 @@ public class PurpurWorldConfig { +@@ -1361,6 +1362,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0204-Cows-naturally-aggressive-to-players-chance.patch similarity index 96% rename from patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0204-Cows-naturally-aggressive-to-players-chance.patch index d2a8085d6..42a44959f 100644 --- a/patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0204-Cows-naturally-aggressive-to-players-chance.patch @@ -61,10 +61,10 @@ index dfb8bc50ceb8eab6752fab62cb81efda569d2fbb..dd66868e9b9f807a5e20420987336b4d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06dbb44d3f1ceab48f9d00398197c0150b49615a..26961725e53785977cfdad845fb7ea844b70422f 100644 +index 0300ecea68d82365a1faf2a9246bf7746cd94b83..cc3b450ca00ff645cf19d61e7b28e3fc7f579304 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1289,7 +1289,14 @@ public class PurpurWorldConfig { +@@ -1296,7 +1296,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -79,7 +79,7 @@ index 06dbb44d3f1ceab48f9d00398197c0150b49615a..26961725e53785977cfdad845fb7ea84 cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1302,6 +1309,8 @@ public class PurpurWorldConfig { +@@ -1309,6 +1316,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0205-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 92% rename from patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0205-Option-for-beds-to-explode-on-villager-sleep.patch index 5229d1db2..6f3282f0f 100644 --- a/patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0205-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 1e100de8d30777e83907c523ffc1a3a54c670205..a9f6016b76dce5ca63b3a1093241c9e6 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 26961725e53785977cfdad845fb7ea844b70422f..b333904c6081d79e64ee5cf576bffc15ebc24211 100644 +index cc3b450ca00ff645cf19d61e7b28e3fc7f579304..2f4b4c74fce9ca03ae431a7ebff5389ffd21cba8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -808,6 +808,7 @@ public class PurpurWorldConfig { +@@ -815,6 +815,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 26961725e53785977cfdad845fb7ea844b70422f..b333904c6081d79e64ee5cf576bffc15 public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -818,6 +819,7 @@ public class PurpurWorldConfig { +@@ -825,6 +826,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0204-Halloween-options-and-optimizations.patch b/patches/server/0206-Halloween-options-and-optimizations.patch similarity index 97% rename from patches/server/0204-Halloween-options-and-optimizations.patch rename to patches/server/0206-Halloween-options-and-optimizations.patch index 40d544705..af92d659e 100644 --- a/patches/server/0204-Halloween-options-and-optimizations.patch +++ b/patches/server/0206-Halloween-options-and-optimizations.patch @@ -60,10 +60,10 @@ index dd3890d405c9eb5ad2630fc555f7c74fd3d76f6e..bd4c70ac65ec372ce5a385a7c77ebeda this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b333904c6081d79e64ee5cf576bffc15ebc24211..7c1245846c8df14dd88bfba1282c2d2abf1e0c82 100644 +index 2f4b4c74fce9ca03ae431a7ebff5389ffd21cba8..d1d72a463b1530ef5253f7ba2884548830e4dc4e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1682,6 +1682,13 @@ public class PurpurWorldConfig { +@@ -1689,6 +1689,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0205-Config-for-grindstones.patch b/patches/server/0207-Config-for-grindstones.patch similarity index 100% rename from patches/server/0205-Config-for-grindstones.patch rename to patches/server/0207-Config-for-grindstones.patch diff --git a/patches/server/0206-UPnP-Port-Forwarding.patch b/patches/server/0208-UPnP-Port-Forwarding.patch similarity index 100% rename from patches/server/0206-UPnP-Port-Forwarding.patch rename to patches/server/0208-UPnP-Port-Forwarding.patch diff --git a/patches/server/0207-Campfire-option-for-lit-when-placed.patch b/patches/server/0209-Campfire-option-for-lit-when-placed.patch similarity index 94% rename from patches/server/0207-Campfire-option-for-lit-when-placed.patch rename to patches/server/0209-Campfire-option-for-lit-when-placed.patch index f87280bc1..355df4c40 100644 --- a/patches/server/0207-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0209-Campfire-option-for-lit-when-placed.patch @@ -18,10 +18,10 @@ index 7f6058f4def83867971121751acd51c398583651..5a49daf7b6bf9e0ec3d50494287a620d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7c1245846c8df14dd88bfba1282c2d2abf1e0c82..9a7d59f27029bce9bf4a382d431f18057b19771a 100644 +index d1d72a463b1530ef5253f7ba2884548830e4dc4e..2e759b83d68f11f29ed545c44f1b72f8f67d0424 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -851,6 +851,11 @@ public class PurpurWorldConfig { +@@ -858,6 +858,11 @@ public class PurpurWorldConfig { cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors); } diff --git a/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0210-options-to-extinguish-fire-blocks-with-snowballs.patch similarity index 96% rename from patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch rename to patches/server/0210-options-to-extinguish-fire-blocks-with-snowballs.patch index 210970d47..a76c0a46c 100644 --- a/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0210-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,10 +46,10 @@ index f59a2903bfb8ae591a638ea5bb387caaa93ce664..1b9d0e28e518c501b4b93ae385ddd64a protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9a7d59f27029bce9bf4a382d431f18057b19771a..c270fb9b6e7178015e8c6608b17fb1dd1b02b545 100644 +index 2e759b83d68f11f29ed545c44f1b72f8f67d0424..c7fdfbfdccb3acac1f6ad2fb6c660d810ca39d5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -214,6 +214,9 @@ public class PurpurWorldConfig { +@@ -221,6 +221,9 @@ public class PurpurWorldConfig { public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; public boolean compassItemShowsBossBar = false; @@ -59,7 +59,7 @@ index 9a7d59f27029bce9bf4a382d431f18057b19771a..c270fb9b6e7178015e8c6608b17fb1dd private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -262,6 +265,9 @@ public class PurpurWorldConfig { +@@ -269,6 +272,9 @@ public class PurpurWorldConfig { glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); compassItemShowsBossBar = getBoolean("gameplay-mechanics.item.compass.holding-shows-bossbar", compassItemShowsBossBar); diff --git a/patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0211-Add-option-to-disable-zombie-villagers-cure.patch similarity index 92% rename from patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch rename to patches/server/0211-Add-option-to-disable-zombie-villagers-cure.patch index 3a515bb20..a2b58ca6f 100644 --- a/patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0211-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 9bb75b49ea2d0bd8aafbe537b65f86eb04f6cfe2..612907fe87e46b5b13ed80635f203fa9 if (!this.level().isClientSide) { this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c270fb9b6e7178015e8c6608b17fb1dd1b02b545..0a288488c4f94f305ae195a0c6691fc72c969add 100644 +index c7fdfbfdccb3acac1f6ad2fb6c660d810ca39d5c..3c2f3e5441da0dea12d6ff9746e0fe8935b7bc4f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2901,6 +2901,7 @@ public class PurpurWorldConfig { +@@ -2908,6 +2908,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index c270fb9b6e7178015e8c6608b17fb1dd1b02b545..0a288488c4f94f305ae195a0c6691fc7 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2918,6 +2919,7 @@ public class PurpurWorldConfig { +@@ -2925,6 +2926,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0210-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0212-Persistent-BlockEntity-Lore-and-DisplayName.patch similarity index 96% rename from patches/server/0210-Persistent-BlockEntity-Lore-and-DisplayName.patch rename to patches/server/0212-Persistent-BlockEntity-Lore-and-DisplayName.patch index 34524424e..ed9ac3917 100644 --- a/patches/server/0210-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0212-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -135,10 +135,10 @@ index c0563260277f9f4bd9ff08993b2efb4bca9a0c60..cd0e43f4c53a746dd6183a8406269f9b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f4b85e6a22243f208f677289e13aae3f08f4f4c..aa36fb820d30bca238c5842817593267d475534f 100644 +index 3c2f3e5441da0dea12d6ff9746e0fe8935b7bc4f..0030c1806d022b9fe2665c7819859ad56fb53548 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -128,6 +128,8 @@ public class PurpurWorldConfig { +@@ -129,6 +129,8 @@ public class PurpurWorldConfig { public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; @@ -147,8 +147,8 @@ index 5f4b85e6a22243f208f677289e13aae3f08f4f4c..aa36fb820d30bca238c5842817593267 public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; -@@ -149,6 +151,14 @@ public class PurpurWorldConfig { - fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); +@@ -151,6 +153,14 @@ public class PurpurWorldConfig { + imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); + if (PurpurConfig.version < 35) { diff --git a/patches/server/0211-Signs-allow-color-codes.patch b/patches/server/0213-Signs-allow-color-codes.patch similarity index 96% rename from patches/server/0211-Signs-allow-color-codes.patch rename to patches/server/0213-Signs-allow-color-codes.patch index e3f9dded3..ed7672ce7 100644 --- a/patches/server/0211-Signs-allow-color-codes.patch +++ b/patches/server/0213-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ 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 4af01ae458e5a79c20725b22b532710a66ba8f43..a7dced47c7946152740e906882d79b5910c5d9d5 100644 +index 8d5be2bad86ccec94338b0135d46e5132a824413..69dc4f01f7156b70c51cd5facc2dd31d10a7aea7 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1707,6 +1707,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -84,10 +84,10 @@ index a28be7a332659be655f419d969e0c64e659b6c21..8cd812a25b1cc05ea14675658bf9c150 public ClientboundBlockEntityDataPacket getUpdatePacket() { return ClientboundBlockEntityDataPacket.create(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b8fcc5d413baa3f058a8bc3590b7782c54ca257c..deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1 100644 +index 0030c1806d022b9fe2665c7819859ad56fb53548..5c70c1d9efd106a5d3e389edd017a14c52ab6b50 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1024,6 +1024,11 @@ public class PurpurWorldConfig { +@@ -1031,6 +1031,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0212-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 100% rename from patches/server/0212-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0214-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch diff --git a/patches/server/0213-Mobs-always-drop-experience.patch b/patches/server/0215-Mobs-always-drop-experience.patch similarity index 94% rename from patches/server/0213-Mobs-always-drop-experience.patch rename to patches/server/0215-Mobs-always-drop-experience.patch index ec89580ed..c229f103b 100644 --- a/patches/server/0213-Mobs-always-drop-experience.patch +++ b/patches/server/0215-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 6250bc28db4bbac0f101cdc93c90ec4d7ec6b2ba..d342752271c76b447bb8cde50d574072 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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549ffb8dd4f8 100644 +index 5c70c1d9efd106a5d3e389edd017a14c52ab6b50..3e537be0ef13cf6ee2018bf9cb11bd580fef6cd0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1104,12 +1104,14 @@ public class PurpurWorldConfig { +@@ -1111,12 +1111,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean batRidable = false; -@@ -1125,6 +1127,7 @@ public class PurpurWorldConfig { +@@ -1132,6 +1134,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1144,6 +1147,7 @@ public class PurpurWorldConfig { +@@ -1151,6 +1154,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean beeRidable = false; -@@ -1155,6 +1159,7 @@ public class PurpurWorldConfig { +@@ -1162,6 +1166,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1170,6 +1175,7 @@ public class PurpurWorldConfig { +@@ -1177,6 +1182,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1207,7 +1207,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean blazeRidable = false; -@@ -1178,6 +1184,7 @@ public class PurpurWorldConfig { +@@ -1185,6 +1191,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1190,6 +1197,7 @@ public class PurpurWorldConfig { +@@ -1197,6 +1204,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean boggedRidable = false; -@@ -1232,6 +1240,7 @@ public class PurpurWorldConfig { +@@ -1239,6 +1247,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1252,6 +1261,7 @@ public class PurpurWorldConfig { +@@ -1259,6 +1268,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean caveSpiderRidable = false; -@@ -1259,6 +1269,7 @@ public class PurpurWorldConfig { +@@ -1266,6 +1276,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1270,6 +1281,7 @@ public class PurpurWorldConfig { +@@ -1277,6 +1288,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean chickenRidable = false; -@@ -1279,6 +1291,7 @@ public class PurpurWorldConfig { +@@ -1286,6 +1298,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1292,12 +1305,14 @@ public class PurpurWorldConfig { +@@ -1299,12 +1312,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1308,6 +1323,7 @@ public class PurpurWorldConfig { +@@ -1315,6 +1330,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean cowRidable = false; -@@ -1319,6 +1335,7 @@ public class PurpurWorldConfig { +@@ -1326,6 +1342,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1339,6 +1356,7 @@ public class PurpurWorldConfig { +@@ -1346,6 +1363,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean creeperRidable = false; -@@ -1351,6 +1369,7 @@ public class PurpurWorldConfig { +@@ -1358,6 +1376,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1367,6 +1386,7 @@ public class PurpurWorldConfig { +@@ -1374,6 +1393,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean dolphinRidable = false; -@@ -1378,6 +1398,7 @@ public class PurpurWorldConfig { +@@ -1385,6 +1405,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1393,6 +1414,7 @@ public class PurpurWorldConfig { +@@ -1400,6 +1421,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean donkeyRidableInWater = false; -@@ -1404,6 +1426,7 @@ public class PurpurWorldConfig { +@@ -1411,6 +1433,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1421,6 +1444,7 @@ public class PurpurWorldConfig { +@@ -1428,6 +1451,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean drownedRidable = false; -@@ -1433,6 +1457,7 @@ public class PurpurWorldConfig { +@@ -1440,6 +1464,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1449,12 +1474,14 @@ public class PurpurWorldConfig { +@@ -1456,12 +1481,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1373,7 +1373,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1465,6 +1492,7 @@ public class PurpurWorldConfig { +@@ -1472,6 +1499,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean enderDragonRidable = false; -@@ -1510,6 +1538,7 @@ public class PurpurWorldConfig { +@@ -1517,6 +1545,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1533,6 +1562,7 @@ public class PurpurWorldConfig { +@@ -1540,6 +1569,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1397,7 +1397,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean endermiteRidable = false; -@@ -1540,6 +1570,7 @@ public class PurpurWorldConfig { +@@ -1547,6 +1577,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1551,6 +1582,7 @@ public class PurpurWorldConfig { +@@ -1558,6 +1589,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean evokerRidable = false; -@@ -1559,6 +1591,7 @@ public class PurpurWorldConfig { +@@ -1566,6 +1598,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1571,6 +1604,7 @@ public class PurpurWorldConfig { +@@ -1578,6 +1611,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1429,7 +1429,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean foxRidable = false; -@@ -1581,6 +1615,7 @@ public class PurpurWorldConfig { +@@ -1588,6 +1622,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1595,6 +1630,7 @@ public class PurpurWorldConfig { +@@ -1602,6 +1637,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1445,7 +1445,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean frogRidable = false; -@@ -1616,6 +1652,7 @@ public class PurpurWorldConfig { +@@ -1623,6 +1659,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1628,6 +1665,7 @@ public class PurpurWorldConfig { +@@ -1635,6 +1672,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean giantRidable = false; -@@ -1641,6 +1679,7 @@ public class PurpurWorldConfig { +@@ -1648,6 +1686,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1662,6 +1701,7 @@ public class PurpurWorldConfig { +@@ -1669,6 +1708,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean glowSquidRidable = false; -@@ -1669,12 +1709,14 @@ public class PurpurWorldConfig { +@@ -1676,12 +1716,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean goatRidable = false; -@@ -1683,6 +1725,7 @@ public class PurpurWorldConfig { +@@ -1690,6 +1732,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1690,12 +1733,14 @@ public class PurpurWorldConfig { +@@ -1697,12 +1740,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1706,6 +1751,7 @@ public class PurpurWorldConfig { +@@ -1713,6 +1758,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean forceHalloweenSeason = false; -@@ -1721,6 +1767,7 @@ public class PurpurWorldConfig { +@@ -1728,6 +1774,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1733,6 +1780,7 @@ public class PurpurWorldConfig { +@@ -1740,6 +1787,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1539,7 +1539,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean horseRidableInWater = false; -@@ -1744,6 +1792,7 @@ public class PurpurWorldConfig { +@@ -1751,6 +1799,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1761,6 +1810,7 @@ public class PurpurWorldConfig { +@@ -1768,6 +1817,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1555,7 +1555,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean huskRidable = false; -@@ -1772,6 +1822,7 @@ public class PurpurWorldConfig { +@@ -1779,6 +1829,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1787,6 +1838,7 @@ public class PurpurWorldConfig { +@@ -1794,6 +1845,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1571,7 +1571,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean illusionerRidable = false; -@@ -1796,6 +1848,7 @@ public class PurpurWorldConfig { +@@ -1803,6 +1855,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1813,6 +1866,7 @@ public class PurpurWorldConfig { +@@ -1820,6 +1873,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean ironGolemRidable = false; -@@ -1823,6 +1877,7 @@ public class PurpurWorldConfig { +@@ -1830,6 +1884,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1837,6 +1892,7 @@ public class PurpurWorldConfig { +@@ -1844,6 +1899,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1603,7 +1603,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean llamaRidable = false; -@@ -1851,6 +1907,7 @@ public class PurpurWorldConfig { +@@ -1858,6 +1914,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1871,6 +1928,7 @@ public class PurpurWorldConfig { +@@ -1878,6 +1935,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1619,7 +1619,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean magmaCubeRidable = false; -@@ -1881,6 +1939,7 @@ public class PurpurWorldConfig { +@@ -1888,6 +1946,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1895,6 +1954,7 @@ public class PurpurWorldConfig { +@@ -1902,6 +1961,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean mooshroomRidable = false; -@@ -1903,6 +1963,7 @@ public class PurpurWorldConfig { +@@ -1910,6 +1970,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1915,6 +1976,7 @@ public class PurpurWorldConfig { +@@ -1922,6 +1983,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean muleRidableInWater = false; -@@ -1926,6 +1988,7 @@ public class PurpurWorldConfig { +@@ -1933,6 +1995,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1943,6 +2006,7 @@ public class PurpurWorldConfig { +@@ -1950,6 +2013,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean ocelotRidable = false; -@@ -1951,6 +2015,7 @@ public class PurpurWorldConfig { +@@ -1958,6 +2022,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1963,6 +2028,7 @@ public class PurpurWorldConfig { +@@ -1970,6 +2035,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean pandaRidable = false; -@@ -1971,6 +2037,7 @@ public class PurpurWorldConfig { +@@ -1978,6 +2044,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1983,6 +2050,7 @@ public class PurpurWorldConfig { +@@ -1990,6 +2057,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean parrotRidable = false; -@@ -1992,6 +2060,7 @@ public class PurpurWorldConfig { +@@ -1999,6 +2067,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -2005,6 +2074,7 @@ public class PurpurWorldConfig { +@@ -2012,6 +2081,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean phantomRidable = false; -@@ -2032,6 +2102,7 @@ public class PurpurWorldConfig { +@@ -2039,6 +2109,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2067,6 +2138,7 @@ public class PurpurWorldConfig { +@@ -2074,6 +2145,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean pigRidable = false; -@@ -2076,6 +2148,7 @@ public class PurpurWorldConfig { +@@ -2083,6 +2155,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2089,6 +2162,7 @@ public class PurpurWorldConfig { +@@ -2096,6 +2169,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean piglinRidable = false; -@@ -2098,6 +2172,7 @@ public class PurpurWorldConfig { +@@ -2105,6 +2179,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2111,6 +2186,7 @@ public class PurpurWorldConfig { +@@ -2118,6 +2193,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean piglinBruteRidable = false; -@@ -2118,6 +2194,7 @@ public class PurpurWorldConfig { +@@ -2125,6 +2201,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2129,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2136,6 +2213,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean pillagerRidable = false; -@@ -2137,6 +2215,7 @@ public class PurpurWorldConfig { +@@ -2144,6 +2222,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2149,6 +2228,7 @@ public class PurpurWorldConfig { +@@ -2156,6 +2235,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean polarBearRidable = false; -@@ -2159,6 +2239,7 @@ public class PurpurWorldConfig { +@@ -2166,6 +2246,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2174,12 +2255,14 @@ public class PurpurWorldConfig { +@@ -2181,12 +2262,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2190,6 +2273,7 @@ public class PurpurWorldConfig { +@@ -2197,6 +2280,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean rabbitRidable = false; -@@ -2201,6 +2285,7 @@ public class PurpurWorldConfig { +@@ -2208,6 +2292,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2216,6 +2301,7 @@ public class PurpurWorldConfig { +@@ -2223,6 +2308,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean ravagerRidable = false; -@@ -2225,6 +2311,7 @@ public class PurpurWorldConfig { +@@ -2232,6 +2318,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2254,12 +2341,14 @@ public class PurpurWorldConfig { +@@ -2261,12 +2348,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2270,6 +2359,7 @@ public class PurpurWorldConfig { +@@ -2277,6 +2366,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean sheepRidable = false; -@@ -2279,6 +2369,7 @@ public class PurpurWorldConfig { +@@ -2286,6 +2376,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2292,6 +2383,7 @@ public class PurpurWorldConfig { +@@ -2299,6 +2390,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean shulkerRidable = false; -@@ -2305,6 +2397,7 @@ public class PurpurWorldConfig { +@@ -2312,6 +2404,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2322,6 +2415,7 @@ public class PurpurWorldConfig { +@@ -2329,6 +2422,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean silverfishRidable = false; -@@ -2330,6 +2424,7 @@ public class PurpurWorldConfig { +@@ -2337,6 +2431,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2342,6 +2437,7 @@ public class PurpurWorldConfig { +@@ -2349,6 +2444,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean skeletonRidable = false; -@@ -2349,6 +2445,7 @@ public class PurpurWorldConfig { +@@ -2356,6 +2452,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2360,6 +2457,7 @@ public class PurpurWorldConfig { +@@ -2367,6 +2464,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean skeletonHorseRidable = false; -@@ -2372,6 +2470,7 @@ public class PurpurWorldConfig { +@@ -2379,6 +2477,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2389,6 +2488,7 @@ public class PurpurWorldConfig { +@@ -2396,6 +2495,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean slimeRidable = false; -@@ -2399,6 +2499,7 @@ public class PurpurWorldConfig { +@@ -2406,6 +2506,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2413,6 +2514,7 @@ public class PurpurWorldConfig { +@@ -2420,6 +2521,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean snowGolemRidable = false; -@@ -2427,6 +2529,7 @@ public class PurpurWorldConfig { +@@ -2434,6 +2536,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2445,6 +2548,7 @@ public class PurpurWorldConfig { +@@ -2452,6 +2555,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean snifferRidable = false; -@@ -2467,6 +2571,7 @@ public class PurpurWorldConfig { +@@ -2474,6 +2578,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2480,6 +2585,7 @@ public class PurpurWorldConfig { +@@ -2487,6 +2592,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean spiderRidable = false; -@@ -2487,6 +2593,7 @@ public class PurpurWorldConfig { +@@ -2494,6 +2600,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2498,6 +2605,7 @@ public class PurpurWorldConfig { +@@ -2505,6 +2612,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean strayRidable = false; -@@ -2505,6 +2613,7 @@ public class PurpurWorldConfig { +@@ -2512,6 +2620,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2516,6 +2625,7 @@ public class PurpurWorldConfig { +@@ -2523,6 +2632,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean striderRidable = false; -@@ -2525,6 +2635,7 @@ public class PurpurWorldConfig { +@@ -2532,6 +2642,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2538,6 +2649,7 @@ public class PurpurWorldConfig { +@@ -2545,6 +2656,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean tadpoleRidable = false; -@@ -2560,6 +2672,7 @@ public class PurpurWorldConfig { +@@ -2567,6 +2679,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2579,12 +2692,14 @@ public class PurpurWorldConfig { +@@ -2586,12 +2699,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2595,6 +2710,7 @@ public class PurpurWorldConfig { +@@ -2602,6 +2717,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean turtleRidable = false; -@@ -2603,6 +2719,7 @@ public class PurpurWorldConfig { +@@ -2610,6 +2726,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2615,6 +2732,7 @@ public class PurpurWorldConfig { +@@ -2622,6 +2739,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean vexRidable = false; -@@ -2623,6 +2741,7 @@ public class PurpurWorldConfig { +@@ -2630,6 +2748,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2635,6 +2754,7 @@ public class PurpurWorldConfig { +@@ -2642,6 +2761,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean villagerRidable = false; -@@ -2650,6 +2770,7 @@ public class PurpurWorldConfig { +@@ -2657,6 +2777,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2669,6 +2790,7 @@ public class PurpurWorldConfig { +@@ -2676,6 +2797,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean vindicatorRidable = false; -@@ -2677,6 +2799,7 @@ public class PurpurWorldConfig { +@@ -2684,6 +2806,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2689,6 +2812,7 @@ public class PurpurWorldConfig { +@@ -2696,6 +2819,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean wanderingTraderRidable = false; -@@ -2699,6 +2823,7 @@ public class PurpurWorldConfig { +@@ -2706,6 +2830,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2713,6 +2838,7 @@ public class PurpurWorldConfig { +@@ -2720,6 +2845,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean wardenRidable = false; -@@ -2729,6 +2855,7 @@ public class PurpurWorldConfig { +@@ -2736,6 +2862,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2740,6 +2867,7 @@ public class PurpurWorldConfig { +@@ -2747,6 +2874,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean witherRidable = false; -@@ -2754,6 +2882,7 @@ public class PurpurWorldConfig { +@@ -2761,6 +2889,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2776,6 +2905,7 @@ public class PurpurWorldConfig { +@@ -2783,6 +2912,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean witherSkeletonRidable = false; -@@ -2783,6 +2913,7 @@ public class PurpurWorldConfig { +@@ -2790,6 +2920,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2794,6 +2925,7 @@ public class PurpurWorldConfig { +@@ -2801,6 +2932,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean wolfRidable = false; -@@ -2805,6 +2937,7 @@ public class PurpurWorldConfig { +@@ -2812,6 +2944,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2824,6 +2957,7 @@ public class PurpurWorldConfig { +@@ -2831,6 +2964,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean zoglinRidable = false; -@@ -2831,6 +2965,7 @@ public class PurpurWorldConfig { +@@ -2838,6 +2972,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2842,6 +2977,7 @@ public class PurpurWorldConfig { +@@ -2849,6 +2984,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean zombieRidable = false; -@@ -2855,6 +2991,7 @@ public class PurpurWorldConfig { +@@ -2862,6 +2998,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2872,6 +3009,7 @@ public class PurpurWorldConfig { +@@ -2879,6 +3016,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean zombieHorseRidable = false; -@@ -2885,6 +3023,7 @@ public class PurpurWorldConfig { +@@ -2892,6 +3030,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2903,6 +3042,7 @@ public class PurpurWorldConfig { +@@ -2910,6 +3049,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean zombieVillagerRidable = false; -@@ -2917,6 +3057,7 @@ public class PurpurWorldConfig { +@@ -2924,6 +3064,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2935,6 +3076,7 @@ public class PurpurWorldConfig { +@@ -2942,6 +3083,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 deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f } public boolean zombifiedPiglinRidable = false; -@@ -2947,6 +3089,7 @@ public class PurpurWorldConfig { +@@ -2954,6 +3096,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index deeae7bc2a1ad1255ee48e5956d5d64b8aab1be1..9b1291728f0ebaadbe5d902654bf549f private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2963,6 +3106,7 @@ public class PurpurWorldConfig { +@@ -2970,6 +3113,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/0214-Grindstone-API.patch b/patches/server/0216-Grindstone-API.patch similarity index 100% rename from patches/server/0214-Grindstone-API.patch rename to patches/server/0216-Grindstone-API.patch diff --git a/patches/server/0215-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 96% rename from patches/server/0215-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index e40102b5e..20faf0b16 100644 --- a/patches/server/0215-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0217-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9b1291728f0ebaadbe5d902654bf549ffb8dd4f8..b1630fa0c619231a702ff51aa69267fb9d9e675e 100644 +index 3e537be0ef13cf6ee2018bf9cb11bd580fef6cd0..7fa642a81d7b479bf5a1472972f6505528d6b6b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -531,6 +531,8 @@ public class PurpurWorldConfig { +@@ -538,6 +538,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index 9b1291728f0ebaadbe5d902654bf549ffb8dd4f8..b1630fa0c619231a702ff51aa69267fb private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -798,6 +800,8 @@ public class PurpurWorldConfig { +@@ -805,6 +807,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0216-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/server/0216-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch index 43c9adef9..4260a0342 100644 --- a/patches/server/0216-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0218-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d5181 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b1630fa0c619231a702ff51aa69267fb9d9e675e..29e9aad79b6c0b58375e617ca78d522e99728ed2 100644 +index 7fa642a81d7b479bf5a1472972f6505528d6b6b0..0ef3bc0c256ab2ec99b85fcb26de8b2b0ece5c1f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1058,11 +1058,13 @@ public class PurpurWorldConfig { +@@ -1065,11 +1065,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0217-Mob-head-visibility-percent.patch b/patches/server/0219-Mob-head-visibility-percent.patch similarity index 91% rename from patches/server/0217-Mob-head-visibility-percent.patch rename to patches/server/0219-Mob-head-visibility-percent.patch index 0046c2327..c186c90f5 100644 --- a/patches/server/0217-Mob-head-visibility-percent.patch +++ b/patches/server/0219-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 6b76ca326d08853a8a508ec22d7bc6cf370223dd..07068e5f93289534f10c0b876dbf884a // 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 29e9aad79b6c0b58375e617ca78d522e99728ed2..8e56444379e20aa68226e279eaa8a086ba90b704 100644 +index 0ef3bc0c256ab2ec99b85fcb26de8b2b0ece5c1f..b63b86e463710007234381f2a6189c359a5d5e92 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1376,6 +1376,7 @@ public class PurpurWorldConfig { +@@ -1383,6 +1383,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index 29e9aad79b6c0b58375e617ca78d522e99728ed2..8e56444379e20aa68226e279eaa8a086 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1393,6 +1394,7 @@ public class PurpurWorldConfig { +@@ -1400,6 +1401,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 29e9aad79b6c0b58375e617ca78d522e99728ed2..8e56444379e20aa68226e279eaa8a086 } public boolean dolphinRidable = false; -@@ -2179,6 +2181,7 @@ public class PurpurWorldConfig { +@@ -2186,6 +2188,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index 29e9aad79b6c0b58375e617ca78d522e99728ed2..8e56444379e20aa68226e279eaa8a086 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2193,6 +2196,7 @@ public class PurpurWorldConfig { +@@ -2200,6 +2203,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 29e9aad79b6c0b58375e617ca78d522e99728ed2..8e56444379e20aa68226e279eaa8a086 } public boolean piglinBruteRidable = false; -@@ -2452,6 +2456,7 @@ public class PurpurWorldConfig { +@@ -2459,6 +2463,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index 29e9aad79b6c0b58375e617ca78d522e99728ed2..8e56444379e20aa68226e279eaa8a086 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2464,6 +2469,7 @@ public class PurpurWorldConfig { +@@ -2471,6 +2476,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 29e9aad79b6c0b58375e617ca78d522e99728ed2..8e56444379e20aa68226e279eaa8a086 } public boolean skeletonHorseRidable = false; -@@ -2998,6 +3004,7 @@ public class PurpurWorldConfig { +@@ -3005,6 +3011,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index 29e9aad79b6c0b58375e617ca78d522e99728ed2..8e56444379e20aa68226e279eaa8a086 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3016,6 +3023,7 @@ public class PurpurWorldConfig { +@@ -3023,6 +3030,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/0218-Configurable-valid-characters-for-usernames.patch b/patches/server/0220-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0218-Configurable-valid-characters-for-usernames.patch rename to patches/server/0220-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0219-Shears-can-have-looting-enchantment.patch b/patches/server/0221-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/server/0219-Shears-can-have-looting-enchantment.patch rename to patches/server/0221-Shears-can-have-looting-enchantment.patch diff --git a/patches/server/0220-Stop-bees-from-dying-after-stinging.patch b/patches/server/0222-Stop-bees-from-dying-after-stinging.patch similarity index 90% rename from patches/server/0220-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0222-Stop-bees-from-dying-after-stinging.patch index e571d7414..ecaf7c74d 100644 --- a/patches/server/0220-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0222-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index ca56f5781c1c02e40179a4dd359c5d167d3160dc..0dfdecff129a6b34833eb3fb7d7d967b ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e56444379e20aa68226e279eaa8a086ba90b704..3e20191efbe41d996f3842865070aae6faefb75a 100644 +index b63b86e463710007234381f2a6189c359a5d5e92..e8ee63a9640d59c95b6e6f2e12db207080e27914 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1166,6 +1166,7 @@ public class PurpurWorldConfig { +@@ -1173,6 +1173,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 8e56444379e20aa68226e279eaa8a086ba90b704..3e20191efbe41d996f3842865070aae6 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1182,6 +1183,7 @@ public class PurpurWorldConfig { +@@ -1189,6 +1190,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 100% rename from patches/server/0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch diff --git a/patches/server/0222-Configurable-farmland-trample-height.patch b/patches/server/0224-Configurable-farmland-trample-height.patch similarity index 94% rename from patches/server/0222-Configurable-farmland-trample-height.patch rename to patches/server/0224-Configurable-farmland-trample-height.patch index 2457612cc..e891c6c06 100644 --- a/patches/server/0222-Configurable-farmland-trample-height.patch +++ b/patches/server/0224-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3e20191efbe41d996f3842865070aae6faefb75a..3a1c9f9a83115393d83c6646dea07cc842bd7220 100644 +index e8ee63a9640d59c95b6e6f2e12db207080e27914..952f468ce759ff80f23869ae18784f6b50e5c3f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -951,6 +951,7 @@ public class PurpurWorldConfig { +@@ -958,6 +958,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 3e20191efbe41d996f3842865070aae6faefb75a..3a1c9f9a83115393d83c6646dea07cc8 private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -958,6 +959,7 @@ public class PurpurWorldConfig { +@@ -965,6 +966,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0223-Configurable-player-pickup-exp-delay.patch b/patches/server/0225-Configurable-player-pickup-exp-delay.patch similarity index 95% rename from patches/server/0223-Configurable-player-pickup-exp-delay.patch rename to patches/server/0225-Configurable-player-pickup-exp-delay.patch index 78cd333de..95facd4e3 100644 --- a/patches/server/0223-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0225-Configurable-player-pickup-exp-delay.patch @@ -35,10 +35,10 @@ index cb6f161d32fe9642e9e9b1efc47d88612041ea15..92df67d9e1d32c8a7aaeaaa46c7641af } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a1c9f9a83115393d83c6646dea07cc842bd7220..fb88b7e916f0ea3fb5fbe440f84cb28fc69e2740 100644 +index 952f468ce759ff80f23869ae18784f6b50e5c3f2..3dd5ce6fb7d14a5df52453612922ae4b01c6e1e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -411,6 +411,7 @@ public class PurpurWorldConfig { +@@ -418,6 +418,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index 3a1c9f9a83115393d83c6646dea07cc842bd7220..fb88b7e916f0ea3fb5fbe440f84cb28f private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -436,6 +437,7 @@ public class PurpurWorldConfig { +@@ -443,6 +444,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0224-Allow-void-trading.patch b/patches/server/0226-Allow-void-trading.patch similarity index 93% rename from patches/server/0224-Allow-void-trading.patch rename to patches/server/0226-Allow-void-trading.patch index d975f5c45..2fb94007c 100644 --- a/patches/server/0224-Allow-void-trading.patch +++ b/patches/server/0226-Allow-void-trading.patch @@ -18,10 +18,10 @@ index 31642e0667b4086fdc05626806da6d5c5c24baeb..fda301c5bb53bc04d9cb133c45d791fa } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fb88b7e916f0ea3fb5fbe440f84cb28fc69e2740..ffdaadbf3d92464de99f22d95e4141c24d919c1d 100644 +index 3dd5ce6fb7d14a5df52453612922ae4b01c6e1e3..267cc30436acda72fb241329d50663a9addcc23b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -412,6 +412,7 @@ public class PurpurWorldConfig { +@@ -419,6 +419,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index fb88b7e916f0ea3fb5fbe440f84cb28fc69e2740..ffdaadbf3d92464de99f22d95e4141c2 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -438,6 +439,7 @@ public class PurpurWorldConfig { +@@ -445,6 +446,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0225-Configurable-phantom-size.patch b/patches/server/0227-Configurable-phantom-size.patch similarity index 93% rename from patches/server/0225-Configurable-phantom-size.patch rename to patches/server/0227-Configurable-phantom-size.patch index 3fb54f5c3..26b226c29 100644 --- a/patches/server/0225-Configurable-phantom-size.patch +++ b/patches/server/0227-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 718311ba402fbc5b05fd480395d29578d1f3fd71..493e9ee0585ae419caffaa163f4975ab } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ffdaadbf3d92464de99f22d95e4141c24d919c1d..40f2f88ef4c4e4f793cecd09274321ffd87288cf 100644 +index 267cc30436acda72fb241329d50663a9addcc23b..bbe5aac6d11ed14f99692c0e7280b7e4914e7e4e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2119,6 +2119,8 @@ public class PurpurWorldConfig { +@@ -2126,6 +2126,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index ffdaadbf3d92464de99f22d95e4141c24d919c1d..40f2f88ef4c4e4f793cecd09274321ff private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2155,6 +2157,13 @@ public class PurpurWorldConfig { +@@ -2162,6 +2164,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0226-Max-joins-per-second.patch b/patches/server/0228-Max-joins-per-second.patch similarity index 100% rename from patches/server/0226-Max-joins-per-second.patch rename to patches/server/0228-Max-joins-per-second.patch diff --git a/patches/server/0227-Configurable-minimum-demand-for-trades.patch b/patches/server/0229-Configurable-minimum-demand-for-trades.patch similarity index 94% rename from patches/server/0227-Configurable-minimum-demand-for-trades.patch rename to patches/server/0229-Configurable-minimum-demand-for-trades.patch index 4392057cc..8fbc7f66f 100644 --- a/patches/server/0227-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0229-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 40f2f88ef4c4e4f793cecd09274321ffd87288cf..4334594e5f61ca86fbf6cc749ad31bba6d02602d 100644 +index bbe5aac6d11ed14f99692c0e7280b7e4914e7e4e..816646ad26234f2a36eb8a36f6c2e79e03baa9ca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2800,6 +2800,7 @@ public class PurpurWorldConfig { +@@ -2807,6 +2807,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index 40f2f88ef4c4e4f793cecd09274321ffd87288cf..4334594e5f61ca86fbf6cc749ad31bba private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2820,6 +2821,7 @@ public class PurpurWorldConfig { +@@ -2827,6 +2828,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0228-Lobotomize-stuck-villagers.patch b/patches/server/0230-Lobotomize-stuck-villagers.patch similarity index 97% rename from patches/server/0228-Lobotomize-stuck-villagers.patch rename to patches/server/0230-Lobotomize-stuck-villagers.patch index ea5db7f09..3f8ef0274 100644 --- a/patches/server/0228-Lobotomize-stuck-villagers.patch +++ b/patches/server/0230-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4334594e5f61ca86fbf6cc749ad31bba6d02602d..ad3cea327b541b2363cf759510089f704e54bd78 100644 +index 816646ad26234f2a36eb8a36f6c2e79e03baa9ca..b2a343441a80d62f4716e311d3808e2dfe801ef1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2801,6 +2801,9 @@ public class PurpurWorldConfig { +@@ -2808,6 +2808,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 4334594e5f61ca86fbf6cc749ad31bba6d02602d..ad3cea327b541b2363cf759510089f70 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2822,6 +2825,18 @@ public class PurpurWorldConfig { +@@ -2829,6 +2832,18 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0229-Option-for-villager-display-trade-item.patch b/patches/server/0231-Option-for-villager-display-trade-item.patch similarity index 92% rename from patches/server/0229-Option-for-villager-display-trade-item.patch rename to patches/server/0231-Option-for-villager-display-trade-item.patch index 18f9441af..f8a0057ea 100644 --- a/patches/server/0229-Option-for-villager-display-trade-item.patch +++ b/patches/server/0231-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ad3cea327b541b2363cf759510089f704e54bd78..a2999fc6dd327bae29d896c454e3e0eca508ef5f 100644 +index b2a343441a80d62f4716e311d3808e2dfe801ef1..fc0aba2d9d558674db4d37d8c355f7bcdfea48ff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2804,6 +2804,7 @@ public class PurpurWorldConfig { +@@ -2811,6 +2811,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index ad3cea327b541b2363cf759510089f704e54bd78..a2999fc6dd327bae29d896c454e3e0ec private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2837,6 +2838,7 @@ public class PurpurWorldConfig { +@@ -2844,6 +2845,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 93% rename from patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index dfd469e00..0fd928c91 100644 --- a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index c9cabb061ebc9172647304431cc3fb2593dd47ba..565408c03849fb3011fb708478a99ec6 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a2999fc6dd327bae29d896c454e3e0eca508ef5f..0288f0fa64e1e2b6d3efd5a057d2ae56c8f66497 100644 +index fc0aba2d9d558674db4d37d8c355f7bcdfea48ff..5c40c2195f8ab90afc9352ce91e6e746e247c7cb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1045,8 +1045,10 @@ public class PurpurWorldConfig { +@@ -1052,8 +1052,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch similarity index 92% rename from patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch index d34e278e1..b6554cf7f 100644 --- a/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index aa8997468c50810c3c9713c98a7786f2f0ab7a72..0c89b32f868bfdeb995c9652f15de7b1816e7bfe 100644 +index 07068e5f93289534f10c0b876dbf884afd9f9b59..a9833d805aa51755a15fd98ca546c119e7e4bdf9 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1550,13 +1550,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -38,10 +38,10 @@ index 26eaf4d9b931bfe51482e1f5d2350fc591778acc..db9962ef89829bb14d84cc8495117ff4 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c8cd6f76e2ea7c2d6650a97901daadde155320f4..3dd9a6585012e52ed9eab0b7c4b0ccf3661f6666 100644 +index 5c40c2195f8ab90afc9352ce91e6e746e247c7cb..d761a02f0337ec623bee8738fb61b37647edf3c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -141,6 +141,7 @@ public class PurpurWorldConfig { +@@ -142,6 +142,7 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -49,7 +49,7 @@ index c8cd6f76e2ea7c2d6650a97901daadde155320f4..3dd9a6585012e52ed9eab0b7c4b0ccf3 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -171,6 +172,7 @@ public class PurpurWorldConfig { +@@ -173,6 +174,7 @@ public class PurpurWorldConfig { mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); diff --git a/patches/server/0232-Anvil-repair-damage-options.patch b/patches/server/0234-Anvil-repair-damage-options.patch similarity index 97% rename from patches/server/0232-Anvil-repair-damage-options.patch rename to patches/server/0234-Anvil-repair-damage-options.patch index e8fcdb25f..a7211c2e1 100644 --- a/patches/server/0232-Anvil-repair-damage-options.patch +++ b/patches/server/0234-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 076ffa6aa20c4c1199c8b8a01d7c30cdab0b5c01..58c490f046dccccdf267be25f5bd065f2c5d3cf0 100644 +index d761a02f0337ec623bee8738fb61b37647edf3c9..f04529dce7a054a41ba2efb4381691fc3d42d991 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -812,9 +812,13 @@ public class PurpurWorldConfig { +@@ -819,9 +819,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 94% rename from patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 1620a31b2..88a6c79ea 100644 --- a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 58c490f046dccccdf267be25f5bd065f2c5d3cf0..bb045d1152f406b22b2b99ad41449c19913b56b7 100644 +index f04529dce7a054a41ba2efb4381691fc3d42d991..91b054b158c574460ed2b6e8314556d8469fde9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1073,12 +1073,14 @@ public class PurpurWorldConfig { +@@ -1080,12 +1080,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0236-Add-toggle-for-enchant-level-clamping.patch similarity index 100% rename from patches/server/0234-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0236-Add-toggle-for-enchant-level-clamping.patch diff --git a/patches/server/0235-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0237-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0235-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0237-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch similarity index 93% rename from patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch index 2bb4268f4..8ffcde983 100644 --- a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 1f1d6fcdf89051761715f2422efe74e432a8d27a..2b55f05b727f862ea79ab2c200a756f6 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bb045d1152f406b22b2b99ad41449c19913b56b7..c0cf0fb24ffae56401d755e601eaab02f1b2137c 100644 +index 91b054b158c574460ed2b6e8314556d8469fde9b..27d2b82fa5e5458d31229a96445bb05d63a93da1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2815,6 +2815,8 @@ public class PurpurWorldConfig { +@@ -2822,6 +2822,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index bb045d1152f406b22b2b99ad41449c19913b56b7..c0cf0fb24ffae56401d755e601eaab02 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2849,6 +2851,8 @@ public class PurpurWorldConfig { +@@ -2856,6 +2858,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0237-Stonecutter-damage.patch b/patches/server/0239-Stonecutter-damage.patch similarity index 98% rename from patches/server/0237-Stonecutter-damage.patch rename to patches/server/0239-Stonecutter-damage.patch index d401115f6..88eba3b8e 100644 --- a/patches/server/0237-Stonecutter-damage.patch +++ b/patches/server/0239-Stonecutter-damage.patch @@ -143,10 +143,10 @@ index 8569054673f43a339694dec3bc02eb05019a5571..a78dcf4e4298a02b8bef3519eecbfb1c 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 c0cf0fb24ffae56401d755e601eaab02f1b2137c..da43cb66b694f561d0a0072d3a3dcb9029cfdbb1 100644 +index 27d2b82fa5e5458d31229a96445bb05d63a93da1..7ab142aacd78afb2ada328ee81ce42bfc0a2622f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1068,6 +1068,11 @@ public class PurpurWorldConfig { +@@ -1075,6 +1075,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch similarity index 92% rename from patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch index 35753a7bd..1f847a1f4 100644 --- a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 02d59789c09f58045fea302ea6f2ee3856114de3..8072713da7ed8b7a44b63c241050c3a9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index da43cb66b694f561d0a0072d3a3dcb9029cfdbb1..a276573c276188225139d730acfb84efb5529caa 100644 +index 7ab142aacd78afb2ada328ee81ce42bfc0a2622f..fda0391ebbbedf2e530955c5e450c3c28fca742e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1009,6 +1009,11 @@ public class PurpurWorldConfig { +@@ -1016,6 +1016,11 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch b/patches/server/0241-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/server/0239-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0241-Add-config-for-snow-on-blue-ice.patch index f9eca755c..3c178d6e5 100644 --- a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0241-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a276573c276188225139d730acfb84efb5529caa..4edd2cab7962137d51c2d5dca2ca7743a689a60e 100644 +index fda0391ebbbedf2e530955c5e450c3c28fca742e..4ed3d03cfee38e98820cf6f6e83dd644482e2fac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -990,9 +990,11 @@ public class PurpurWorldConfig { +@@ -997,9 +997,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0240-Skeletons-eat-wither-roses.patch b/patches/server/0242-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0240-Skeletons-eat-wither-roses.patch rename to patches/server/0242-Skeletons-eat-wither-roses.patch index 252ff3cfe..6dc5772fb 100644 --- a/patches/server/0240-Skeletons-eat-wither-roses.patch +++ b/patches/server/0242-Skeletons-eat-wither-roses.patch @@ -90,10 +90,10 @@ index 3f81faffc1a54ab1148c410ef80964d9876e4b77..cb714f78ad73f709967d7449c411c5b1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4edd2cab7962137d51c2d5dca2ca7743a689a60e..acb9d5d5199cc9a1f40d6bbb00f3ff58c77dd8dc 100644 +index 4ed3d03cfee38e98820cf6f6e83dd644482e2fac..2ff93723e4b35ef6315c29b6a3ea8899f1d629a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2496,6 +2496,7 @@ public class PurpurWorldConfig { +@@ -2503,6 +2503,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -101,7 +101,7 @@ index 4edd2cab7962137d51c2d5dca2ca7743a689a60e..acb9d5d5199cc9a1f40d6bbb00f3ff58 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2509,6 +2510,7 @@ public class PurpurWorldConfig { +@@ -2516,6 +2517,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/0241-Enchantment-Table-Persists-Lapis.patch b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch similarity index 97% rename from patches/server/0241-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0243-Enchantment-Table-Persists-Lapis.patch index 4c3674cc1..67ff7f732 100644 --- a/patches/server/0241-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch @@ -137,10 +137,10 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index acb9d5d5199cc9a1f40d6bbb00f3ff58c77dd8dc..1d30c89c6490484c555935e794645067a3e05a30 100644 +index 2ff93723e4b35ef6315c29b6a3ea8899f1d629a1..697c61dd215f9f425c7d27fbd091a6db9ffe9e72 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1533,6 +1533,11 @@ public class PurpurWorldConfig { +@@ -1540,6 +1540,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0242-Spark-Profiler.patch b/patches/server/0244-Spark-Profiler.patch similarity index 100% rename from patches/server/0242-Spark-Profiler.patch rename to patches/server/0244-Spark-Profiler.patch diff --git a/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0245-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 95% rename from patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0245-Option-to-disable-kick-for-out-of-order-chat.patch index 90c669fc6..a16f9f8c1 100644 --- a/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0245-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 d0672ed5abf3488fc3ec6ea8b153e2d22ff3e9ab..86ee80021010b5cbae088aff73eb53d0195b4443 100644 +index efb72ae3ce609117258dfc9f09b53add4ef0fd8e..3f388240694709c198c7d16be56127101f5e6df3 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1662,7 +1662,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch similarity index 92% rename from patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch index 759015fc7..8c1f3d035 100644 --- a/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0246-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d30c89c6490484c555935e794645067a3e05a30..cd7b1e706f1a306cec5b4ece0621272e9f24a142 100644 +index 697c61dd215f9f425c7d27fbd091a6db9ffe9e72..8117da30d525c8e950c815cebc07d515517cfdbc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1047,6 +1047,11 @@ public class PurpurWorldConfig { +@@ -1054,6 +1054,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0245-Config-to-not-let-coral-die.patch b/patches/server/0247-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/server/0245-Config-to-not-let-coral-die.patch rename to patches/server/0247-Config-to-not-let-coral-die.patch index 6480f4374..7bd41c398 100644 --- a/patches/server/0245-Config-to-not-let-coral-die.patch +++ b/patches/server/0247-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374 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 cd7b1e706f1a306cec5b4ece0621272e9f24a142..642ab24c1827a58ca32b1a90b89d63f3c35c6c21 100644 +index 8117da30d525c8e950c815cebc07d515517cfdbc..3954a5a69fe050f1c249e572b4b1e9b161b641d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -896,6 +896,11 @@ public class PurpurWorldConfig { +@@ -903,6 +903,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0246-Add-local-difficulty-api.patch b/patches/server/0248-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0246-Add-local-difficulty-api.patch rename to patches/server/0248-Add-local-difficulty-api.patch diff --git a/patches/server/0247-Add-toggle-for-RNG-manipulation.patch b/patches/server/0249-Add-toggle-for-RNG-manipulation.patch similarity index 93% rename from patches/server/0247-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0249-Add-toggle-for-RNG-manipulation.patch index 39056587d..1060ee92f 100644 --- a/patches/server/0247-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0249-Add-toggle-for-RNG-manipulation.patch @@ -33,10 +33,10 @@ index 4874d51405ce43e570ffcbf8eba4bf4aef185e50..e6244d8c7745570099638d96fafa6b49 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 642ab24c1827a58ca32b1a90b89d63f3c35c6c21..cd7fe2bbbfaadda901a241268164800e5f112b12 100644 +index 3954a5a69fe050f1c249e572b4b1e9b161b641d9..95f076cb30d3b21596ff77f70e27452bc5887e80 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -206,9 +206,11 @@ public class PurpurWorldConfig { +@@ -208,9 +208,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; @@ -47,4 +47,4 @@ index 642ab24c1827a58ca32b1a90b89d63f3c35c6c21..cd7fe2bbbfaadda901a241268164800e + entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); } - public List itemImmuneToCactus = new ArrayList<>(); + public boolean infinityWorksWithoutArrows = false; diff --git a/patches/server/0248-Remove-Timings.patch b/patches/server/0250-Remove-Timings.patch similarity index 100% rename from patches/server/0248-Remove-Timings.patch rename to patches/server/0250-Remove-Timings.patch diff --git a/patches/server/0249-Remove-Mojang-Profiler.patch b/patches/server/0251-Remove-Mojang-Profiler.patch similarity index 99% rename from patches/server/0249-Remove-Mojang-Profiler.patch rename to patches/server/0251-Remove-Mojang-Profiler.patch index e64569415..7be12cf0a 100644 --- a/patches/server/0249-Remove-Mojang-Profiler.patch +++ b/patches/server/0251-Remove-Mojang-Profiler.patch @@ -819,7 +819,7 @@ index 55446501a3bc42e4881eb38b13d1de5d03d22c0d..500a735113f9f16f9d336c2bb1cad144 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 a7dced47c7946152740e906882d79b5910c5d9d5..b95044ac3db41f3c4f9404b139ec58eb59d8139e 100644 +index 69dc4f01f7156b70c51cd5facc2dd31d10a7aea7..09982bd8a4953b35be059084f8db5a7e581fdc43 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1398,7 +1398,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple diff --git a/patches/server/0250-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 96% rename from patches/server/0250-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch index 4b3048a45..a3ff71edc 100644 --- a/patches/server/0250-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0252-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 86ee80021010b5cbae088aff73eb53d0195b4443..0df2b762429a32343fae7838afa4f4971e8ba3c3 100644 +index 3f388240694709c198c7d16be56127101f5e6df3..1c41ad915ad5f1ef63fea96fefe53fd037174ac3 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -721,6 +721,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0251-Add-Bee-API.patch b/patches/server/0253-Add-Bee-API.patch similarity index 100% rename from patches/server/0251-Add-Bee-API.patch rename to patches/server/0253-Add-Bee-API.patch diff --git a/patches/server/0252-Debug-Marker-API.patch b/patches/server/0254-Debug-Marker-API.patch similarity index 97% rename from patches/server/0252-Debug-Marker-API.patch rename to patches/server/0254-Debug-Marker-API.patch index de9da5c4b..5a146bc57 100644 --- a/patches/server/0252-Debug-Marker-API.patch +++ b/patches/server/0254-Debug-Marker-API.patch @@ -99,10 +99,10 @@ index 8e0d67f4e6e1195663fbc8c4fa850d92021cbb16..00ad22ce430d1c866b254a4eb1f3a242 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index cf355d3c0c4ca62640a0750a82cd661b2e7af65b..ad83b250ff9a34179f4b84622f9cf45206faefee 100644 +index e71ac12c107f2cb1b89277605b08884bc3ad27d7..162034040a72bb392ba9b36e4469abfc32c46ca8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3601,5 +3601,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3602,5 +3602,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch similarity index 92% rename from patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch index a26ff428e..c88c7cced 100644 --- a/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0255-mob-spawning-option-to-ignore-creative-players.patch @@ -18,10 +18,10 @@ index 35e94c06361795d032f995e8282f8b35c075dae7..0f90a6803851eba51e164772c984b1cd 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 cd7fe2bbbfaadda901a241268164800e5f112b12..16a42027168b524066d9636b9d95124584a4ccda 100644 +index 95f076cb30d3b21596ff77f70e27452bc5887e80..0c97e7929d13333d18e8e017d7cf5b3525f66a75 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -368,6 +368,7 @@ public class PurpurWorldConfig { +@@ -375,6 +375,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index cd7fe2bbbfaadda901a241268164800e5f112b12..16a42027168b524066d9636b9d951245 private void mobSpawnerSettings() { // values of "default" or null will default to true only if the world environment is normal (aka overworld) Predicate predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL); -@@ -376,6 +377,7 @@ public class PurpurWorldConfig { +@@ -383,6 +384,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/server/0254-Add-skeleton-bow-accuracy-option.patch b/patches/server/0256-Add-skeleton-bow-accuracy-option.patch similarity index 94% rename from patches/server/0254-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0256-Add-skeleton-bow-accuracy-option.patch index a7cb46e50..330748114 100644 --- a/patches/server/0254-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0256-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 4aeb23de31e826d5cf27f8c91bd60c911f769a17..f9532a45419699585d1f20d27d5857a3 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 16a42027168b524066d9636b9d95124584a4ccda..b1534efca6354890037a08697f1a29a5742cdee2 100644 +index 0c97e7929d13333d18e8e017d7cf5b3525f66a75..5c5ecba9be89b94bf98eda74292eeb0dd41299c0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2516,6 +2516,8 @@ public class PurpurWorldConfig { +@@ -2523,6 +2523,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 16a42027168b524066d9636b9d95124584a4ccda..b1534efca6354890037a08697f1a29a5 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2530,6 +2532,18 @@ public class PurpurWorldConfig { +@@ -2537,6 +2539,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/server/0255-Add-death-screen-API.patch b/patches/server/0257-Add-death-screen-API.patch similarity index 87% rename from patches/server/0255-Add-death-screen-API.patch rename to patches/server/0257-Add-death-screen-API.patch index 277def93d..b30cd235c 100644 --- a/patches/server/0255-Add-death-screen-API.patch +++ b/patches/server/0257-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ad83b250ff9a34179f4b84622f9cf45206faefee..23a2191087346f5cd56378407e327d0e41095a7f 100644 +index 162034040a72bb392ba9b36e4469abfc32c46ca8..41863584c3a85068b807a5aeb93c3da70f133b47 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3639,5 +3639,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3640,5 +3640,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0256-Implement-ram-and-rambar-commands.patch b/patches/server/0258-Implement-ram-and-rambar-commands.patch similarity index 100% rename from patches/server/0256-Implement-ram-and-rambar-commands.patch rename to patches/server/0258-Implement-ram-and-rambar-commands.patch diff --git a/patches/server/0257-Configurable-block-blast-resistance.patch b/patches/server/0259-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0257-Configurable-block-blast-resistance.patch rename to patches/server/0259-Configurable-block-blast-resistance.patch diff --git a/patches/server/0258-Configurable-block-fall-damage-modifiers.patch b/patches/server/0260-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0258-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0260-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0259-Language-API.patch b/patches/server/0261-Language-API.patch similarity index 100% rename from patches/server/0259-Language-API.patch rename to patches/server/0261-Language-API.patch diff --git a/patches/server/0260-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch similarity index 87% rename from patches/server/0260-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0262-Milk-Keeps-Beneficial-Effects.patch index ddaf4a2d6..88d405470 100644 --- a/patches/server/0260-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0262-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 3f0d3229ec4727c0d176a2e603c3f9e933f3395e..bfa8ad069e7632863fffe20442c56d21f1da51d7 100644 +index c8c931135133ef3d1d491034d578d9af47d9a9bd..392381dde4e188cdf2c75bcf2109158d6cf0f330 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1129,6 +1129,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -30,20 +30,20 @@ index d342752271c76b447bb8cde50d57407259b93c43..360514d5afcafcf6dd83335938bfa09b 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 33c41bf3b4e1462c34fa9210dbdcee81503b6b97..dda5640ed69277965356d2efdcd571fd4c22b55f 100644 +index 5c5ecba9be89b94bf98eda74292eeb0dd41299c0..0503c850d76bf8908635864926047261e62eb6eb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -126,6 +126,7 @@ public class PurpurWorldConfig { - public boolean entitiesPickUpLootBypassMobGriefing = false; +@@ -127,6 +127,7 @@ public class PurpurWorldConfig { public boolean fireballsBypassMobGriefing = false; + public boolean imposeTeleportRestrictionsOnGateways = false; public boolean milkCuresBadOmen = true; + public boolean milkClearsBeneficialEffects = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; public boolean persistentTileEntityLore = false; -@@ -151,6 +152,7 @@ public class PurpurWorldConfig { - entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); +@@ -153,6 +154,7 @@ public class PurpurWorldConfig { fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); + imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + milkClearsBeneficialEffects = getBoolean("gameplay-mechanics.milk-clears-beneficial-effects", milkClearsBeneficialEffects); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/server/0261-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0261-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0262-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0264-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0262-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0264-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 98% rename from patches/server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 31fd7fcae..010328f8e 100644 --- a/patches/server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -30,7 +30,7 @@ index 8d8944a0455b3401d84cab636d61447e7d51ab19..0a7aa715674e5577e7f2327f6d0d253e return SoundEvents.ARROW_HIT; } diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java -index 32dd0b13a0819f597d8a93c6bc3a155781067544..9751eea2d8aa3a45da34f09377d2fc81fe9a90d8 100644 +index 7ae7626c82969ea5a6fc5aa4a0c7ec43cea73adb..ffbc56290eb8e36339e29f6084bb207366506c39 100644 --- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java @@ -110,6 +110,8 @@ public abstract class ProjectileWeaponItem extends Item { diff --git a/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch index c211be667..5375066cf 100644 --- a/patches/server/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f375de5acd01061d60e7eca09627a22ede930a4..01fa14950dd0801b235062d803732a09cffbfeb9 100644 +index 0503c850d76bf8908635864926047261e62eb6eb..7d3044df261d8c1ece42a90ca3e803497dc65c1d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1423,6 +1423,7 @@ public class PurpurWorldConfig { +@@ -1430,6 +1430,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 7f375de5acd01061d60e7eca09627a22ede930a4..01fa14950dd0801b235062d803732a09 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1441,6 +1442,7 @@ public class PurpurWorldConfig { +@@ -1448,6 +1449,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/0265-Fire-Immunity-API.patch b/patches/server/0267-Fire-Immunity-API.patch similarity index 95% rename from patches/server/0265-Fire-Immunity-API.patch rename to patches/server/0267-Fire-Immunity-API.patch index 89e213dad..6f8b9942c 100644 --- a/patches/server/0265-Fire-Immunity-API.patch +++ b/patches/server/0267-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 5763b9536b85371ed74906df6a13938fd46bd815..6d12da56f191c2889418200397a84b2467b60f17 100644 +index 99c01f0328fab0a71a888dd57c74e9771e9e6bb8..9d44ca469e658005b5379eb07c483fc4983b3273 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -430,6 +430,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -50,7 +50,7 @@ index 5763b9536b85371ed74906df6a13938fd46bd815..6d12da56f191c2889418200397a84b24 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index ef550741b2173a1a6f24c3bc532bb530eccd6217..becc6768857e0968b76988deb8a42b32eb3a6190 100644 +index d4fc45d4f419309ba11830accdc3cdafe739ab15..4b7d38a5ac6247c6e9d71ac7f3b65765ed3cf3ee 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -87,6 +87,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 93% rename from patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 38094d647..bcc77746f 100644 --- a/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -17,10 +17,10 @@ index 9d44ca469e658005b5379eb07c483fc4983b3273..c1d6b00c2e74cd19df9dd074a021024e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 01fa14950dd0801b235062d803732a09cffbfeb9..00e0b60c2bf30983ad62cec70bb42ec58ab9ef8c 100644 +index 7d3044df261d8c1ece42a90ca3e803497dc65c1d..92e1d887d3de48003d3d34b307248443f5e03e60 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -408,6 +408,7 @@ public class PurpurWorldConfig { +@@ -415,6 +415,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index 01fa14950dd0801b235062d803732a09cffbfeb9..00e0b60c2bf30983ad62cec70bb42ec5 public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -435,6 +436,7 @@ public class PurpurWorldConfig { +@@ -442,6 +443,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0267-Added-got-ram-event.patch b/patches/server/0269-Added-got-ram-event.patch similarity index 100% rename from patches/server/0267-Added-got-ram-event.patch rename to patches/server/0269-Added-got-ram-event.patch diff --git a/patches/server/0268-Log-skipped-entity-s-position.patch b/patches/server/0270-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0268-Log-skipped-entity-s-position.patch rename to patches/server/0270-Log-skipped-entity-s-position.patch diff --git a/patches/server/0269-End-Crystal-Cramming.patch b/patches/server/0271-End-Crystal-Cramming.patch similarity index 91% rename from patches/server/0269-End-Crystal-Cramming.patch rename to patches/server/0271-End-Crystal-Cramming.patch index 7b0b83c76..379095503 100644 --- a/patches/server/0269-End-Crystal-Cramming.patch +++ b/patches/server/0271-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 02f1d0418395b100cabfad7294466aaad34ac7c6..c0275197cc9aab2a49d88476e072a94f // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 00e0b60c2bf30983ad62cec70bb42ec58ab9ef8c..0fffad74083adf816377820e0093c957d79c18b3 100644 +index 92e1d887d3de48003d3d34b307248443f5e03e60..e7da2581c6924b19cfe85e3b074c455e37bc4de6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -939,6 +939,7 @@ public class PurpurWorldConfig { +@@ -946,6 +946,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 00e0b60c2bf30983ad62cec70bb42ec58ab9ef8c..0fffad74083adf816377820e0093c957 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -966,6 +967,7 @@ public class PurpurWorldConfig { +@@ -973,6 +974,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 95% rename from patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index d0d11aafb..d06dc1b8c 100644 --- a/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc9 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 0fffad74083adf816377820e0093c957d79c18b3..f097ba6b3294251e2d0b648ebfb4ca3180644639 100644 +index e7da2581c6924b19cfe85e3b074c455e37bc4de6..0238b085dce23aeb2d7e7edc457512e00fb2e3af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -838,11 +838,13 @@ public class PurpurWorldConfig { +@@ -845,11 +845,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch similarity index 87% rename from patches/server/0272-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0274-Config-to-remove-explosion-radius-clamp.patch index 36c41a67b..3de26eef0 100644 --- a/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch @@ -27,11 +27,11 @@ index 3ee7bf7e10f8120258baaae8f77cdcbb6a781f78..754373da9a5246c11f3c33a8907d387e } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f097ba6b3294251e2d0b648ebfb4ca3180644639..636a27993cc82c30c3e80d7131be5d6fa1a6d7e3 100644 +index 0238b085dce23aeb2d7e7edc457512e00fb2e3af..c00b4014bf1d28fdfbed3541ac8764011d9234e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -215,6 +215,11 @@ public class PurpurWorldConfig { - entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); +@@ -222,6 +222,11 @@ public class PurpurWorldConfig { + infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); } + public boolean explosionClampRadius = true; diff --git a/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch index 0e666a35b..0f9d01620 100644 --- a/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 636a27993cc82c30c3e80d7131be5d6fa1a6d7e3..c70bf79d1a267afd49897d097f3e6d111cb75642 100644 +index c00b4014bf1d28fdfbed3541ac8764011d9234e0..38e46e0e83749d1889ae9eef22f2386c354b08c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -892,8 +892,20 @@ public class PurpurWorldConfig { +@@ -899,8 +899,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0274-Add-PreExplodeEvents.patch b/patches/server/0276-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0274-Add-PreExplodeEvents.patch rename to patches/server/0276-Add-PreExplodeEvents.patch diff --git a/patches/server/0275-Improve-output-of-plugins-command.patch b/patches/server/0277-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0275-Improve-output-of-plugins-command.patch rename to patches/server/0277-Improve-output-of-plugins-command.patch diff --git a/patches/server/0276-Make-GUI-Great-Again.patch b/patches/server/0278-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0276-Make-GUI-Great-Again.patch rename to patches/server/0278-Make-GUI-Great-Again.patch diff --git a/patches/server/0277-Stored-Bee-API.patch b/patches/server/0279-Stored-Bee-API.patch similarity index 100% rename from patches/server/0277-Stored-Bee-API.patch rename to patches/server/0279-Stored-Bee-API.patch diff --git a/patches/server/0278-Shears-can-defuse-TNT.patch b/patches/server/0280-Shears-can-defuse-TNT.patch similarity index 96% rename from patches/server/0278-Shears-can-defuse-TNT.patch rename to patches/server/0280-Shears-can-defuse-TNT.patch index 2bee56f97..0f808e1cc 100644 --- a/patches/server/0278-Shears-can-defuse-TNT.patch +++ b/patches/server/0280-Shears-can-defuse-TNT.patch @@ -42,10 +42,10 @@ index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..2a4425d04917b32c7ae5af3e7422c0ba + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c70bf79d1a267afd49897d097f3e6d111cb75642..6232671f420a59d8f471ff3d0fe9bb90dbdb6e7f 100644 +index 38e46e0e83749d1889ae9eef22f2386c354b08c1..52d6171cd6ae831a5dae404a98b08e1e16deff6e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3285,4 +3285,11 @@ public class PurpurWorldConfig { +@@ -3292,4 +3292,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0279-Explorer-Map-API.patch b/patches/server/0281-Explorer-Map-API.patch similarity index 100% rename from patches/server/0279-Explorer-Map-API.patch rename to patches/server/0281-Explorer-Map-API.patch diff --git a/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 91% rename from patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch index db882b78e..f95c0ad6e 100644 --- a/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index e09ca4aa99f2e58f97159a40e33ed863fa2ae7df..6e866ec44a83ec9064ac3228bd96eb25 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6232671f420a59d8f471ff3d0fe9bb90dbdb6e7f..e9e74f3701f7d9804386156b3ad4d236ffaed5db 100644 +index 52d6171cd6ae831a5dae404a98b08e1e16deff6e..195e09d01ade84a0f8c27a903bbd26e853ddee83 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2100,6 +2100,7 @@ public class PurpurWorldConfig { +@@ -2107,6 +2107,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 6232671f420a59d8f471ff3d0fe9bb90dbdb6e7f..e9e74f3701f7d9804386156b3ad4d236 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2113,6 +2114,7 @@ public class PurpurWorldConfig { +@@ -2120,6 +2121,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 93% rename from patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index ed9e9640b..3de7fffc7 100644 --- a/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,10 +29,10 @@ index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e9e74f3701f7d9804386156b3ad4d236ffaed5db..7023755a23dd5436563e8884ab1249824ca7c609 100644 +index 195e09d01ade84a0f8c27a903bbd26e853ddee83..f757cbc816538302747bdb027062a7b6f76963c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2269,6 +2269,7 @@ public class PurpurWorldConfig { +@@ -2276,6 +2276,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index e9e74f3701f7d9804386156b3ad4d236ffaed5db..7023755a23dd5436563e8884ab124982 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2284,6 +2285,7 @@ public class PurpurWorldConfig { +@@ -2291,6 +2292,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0283-place-end-crystal-on-any-block.patch b/patches/server/0285-place-end-crystal-on-any-block.patch similarity index 92% rename from patches/server/0283-place-end-crystal-on-any-block.patch rename to patches/server/0285-place-end-crystal-on-any-block.patch index 34c25608f..f9b7744d0 100644 --- a/patches/server/0283-place-end-crystal-on-any-block.patch +++ b/patches/server/0285-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index 5f51e64cb0611a4ba6bdcdcacbcba1063a7f3a5c..8fb564f43e2f1194d2ad68d35c4df6b9 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7023755a23dd5436563e8884ab1249824ca7c609..b1c5db356bb352f7f2dfa5b37c1f3bc617d35827 100644 +index f757cbc816538302747bdb027062a7b6f76963c7..522e9bd25c2a6fea0d0d78d3c8898de4ccfe4f4a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -959,6 +959,7 @@ public class PurpurWorldConfig { +@@ -966,6 +966,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index 7023755a23dd5436563e8884ab1249824ca7c609..b1c5db356bb352f7f2dfa5b37c1f3bc6 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -987,6 +988,7 @@ public class PurpurWorldConfig { +@@ -994,6 +995,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 92% rename from patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch index 293a24d5e..f7a42fb3a 100644 --- a/patches/server/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,10 +18,10 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5143da56ec64eaa44f3d88387455762d62740508..762c75c68ab51e7cb09ffdeceeb24f79c508d5b7 100644 +index 522e9bd25c2a6fea0d0d78d3c8898de4ccfe4f4a..23cb825a5730f3a65ac299c6e1d4307b400e1ab7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -143,6 +143,7 @@ public class PurpurWorldConfig { +@@ -144,6 +144,7 @@ public class PurpurWorldConfig { public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; public int mobLastHurtByPlayerTime = 100; @@ -29,7 +29,7 @@ index 5143da56ec64eaa44f3d88387455762d62740508..762c75c68ab51e7cb09ffdeceeb24f79 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -175,6 +176,7 @@ public class PurpurWorldConfig { +@@ -177,6 +178,7 @@ public class PurpurWorldConfig { rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); diff --git a/patches/server/0285-register-minecraft-debug-commands.patch b/patches/server/0287-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0285-register-minecraft-debug-commands.patch rename to patches/server/0287-register-minecraft-debug-commands.patch diff --git a/patches/server/0286-Configurable-villager-search-radius.patch b/patches/server/0288-Configurable-villager-search-radius.patch similarity index 94% rename from patches/server/0286-Configurable-villager-search-radius.patch rename to patches/server/0288-Configurable-villager-search-radius.patch index a36d6d8dc..8efea0586 100644 --- a/patches/server/0286-Configurable-villager-search-radius.patch +++ b/patches/server/0288-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index d5a549f08b98c80a5cf0eef02cb8a389c32dfecb..222c87e80cb089867ce9a7d2dceebe21 .collect(Collectors.toSet()); Path path = AcquirePoi.findPathToPois(entity, set); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3548ad6bb4e53a0fd1bfcd1ef616d0e638048d93..3f2ee361427c8bd7c15b58a5803efe2d2cfb7394 100644 +index 23cb825a5730f3a65ac299c6e1d4307b400e1ab7..352a1f1c56174424c2418e926dfeee136a94c687 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2899,6 +2899,8 @@ public class PurpurWorldConfig { +@@ -2906,6 +2906,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 3548ad6bb4e53a0fd1bfcd1ef616d0e638048d93..3f2ee361427c8bd7c15b58a5803efe2d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2935,6 +2937,8 @@ public class PurpurWorldConfig { +@@ -2942,6 +2944,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0287-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch similarity index 91% rename from patches/server/0287-option-to-make-ravagers-afraid-of-rabbits.patch rename to patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch index 376115cfe..b4b1d87de 100644 --- a/patches/server/0287-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch @@ -18,10 +18,10 @@ index 714a37974e3256913c15193f2bd292fe45072c7f..0c494a8c71e316307af2c0e256ccfd23 this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3f2ee361427c8bd7c15b58a5803efe2d2cfb7394..618f7a1e659748c8de1deb27e82dbe6ce8f83812 100644 +index 352a1f1c56174424c2418e926dfeee136a94c687..551508a524c56f0b4f4bc7df9862d30d77053b56 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2415,6 +2415,7 @@ public class PurpurWorldConfig { +@@ -2422,6 +2422,7 @@ public class PurpurWorldConfig { public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 3f2ee361427c8bd7c15b58a5803efe2d2cfb7394..618f7a1e659748c8de1deb27e82dbe6c private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2445,6 +2446,7 @@ public class PurpurWorldConfig { +@@ -2452,6 +2453,7 @@ public class PurpurWorldConfig { } }); ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp); diff --git a/patches/server/0288-config-for-startup-commands.patch b/patches/server/0290-config-for-startup-commands.patch similarity index 100% rename from patches/server/0288-config-for-startup-commands.patch rename to patches/server/0290-config-for-startup-commands.patch diff --git a/patches/server/0289-Config-to-reverse-bubble-column-flow.patch b/patches/server/0291-Config-to-reverse-bubble-column-flow.patch similarity index 100% rename from patches/server/0289-Config-to-reverse-bubble-column-flow.patch rename to patches/server/0291-Config-to-reverse-bubble-column-flow.patch diff --git a/patches/server/0290-Adopt-MaterialRerouting.patch b/patches/server/0292-Adopt-MaterialRerouting.patch similarity index 100% rename from patches/server/0290-Adopt-MaterialRerouting.patch rename to patches/server/0292-Adopt-MaterialRerouting.patch diff --git a/patches/unapplied-server/0120-Add-EntityTeleportHinderedEvent.patch b/patches/unapplied-server/0120-Add-EntityTeleportHinderedEvent.patch deleted file mode 100644 index c3a3264a8..000000000 --- a/patches/unapplied-server/0120-Add-EntityTeleportHinderedEvent.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Mariell Hoversholm -Date: Sat, 9 Jan 2021 15:27:46 +0100 -Subject: [PATCH] Add EntityTeleportHinderedEvent - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index 7272d70c672b54dcf595beafd7a2ed33c96e35cb..d7f33c676bba279661583d908d3a58c86d853545 100644 ---- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -@@ -54,6 +54,14 @@ public class EndPortalBlock extends BaseEntityBlock { - protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { - if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent - if (world instanceof ServerLevel && entity.canChangeDimensions() && Shapes.joinIsNotEmpty(Shapes.create(entity.getBoundingBox().move((double) (-pos.getX()), (double) (-pos.getY()), (double) (-pos.getZ()))), state.getShape(world, pos), BooleanOp.AND)) { -+ // Purpur start -+ if (entity.isPassenger() || entity.isVehicle()) { -+ if (new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_PORTAL).callEvent()) { -+ this.entityInside(state, world, pos, entity); -+ } -+ return; -+ } -+ // Purpur end - ResourceKey resourcekey = world.getTypeKey() == LevelStem.END ? Level.OVERWORLD : Level.END; // CraftBukkit - SPIGOT-6152: send back to main overworld in custom ends - ServerLevel worldserver = ((ServerLevel) world).getServer().getLevel(resourcekey); - -diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index a9e3078cefcae8cc4672d514a7add162590d48df..67060b7446535fc352d221d9fe3928d1d6ffcf54 100644 ---- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -92,6 +92,14 @@ public class NetherPortalBlock extends Block { - protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { - if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent - if (entity.canChangeDimensions()) { -+ // Purpur start -+ if (entity.isPassenger() || entity.isVehicle()) { -+ if (new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.NETHER_PORTAL).callEvent()) { -+ this.entityInside(state, world, pos, entity); -+ } -+ return; -+ } -+ // Purpur end - // CraftBukkit start - Entity in portal - EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); - world.getCraftServer().getPluginManager().callEvent(event); -diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index 60b343edc4383c8bc450f106f483349850432fa3..fb9611866671880fc7a1a969da928b8f2ad15269 100644 ---- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -+++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -168,6 +168,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { - public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { - if (world instanceof ServerLevel worldserver && !blockEntity.isCoolingDown()) { - if (!entity.canChangeDimensions()) return; // Purpur -+ // Purpur start -+ if (world.purpurConfig.imposeTeleportRestrictionsOnGateways && (entity.isVehicle() || entity.isPassenger())) { -+ if (new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_GATEWAY).callEvent()) { -+ teleportEntity(world, pos, state, entity, blockEntity); -+ } -+ return; -+ } -+ // Purpur end - blockEntity.teleportCooldown = 100; - BlockPos blockposition1; - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index a6268b3df9691278606501284b5504da718703c2..befe3372d5f1550b7bde3b63b5e7aef9035c5379 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -253,6 +253,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - // Paper end - - if ((!ignorePassengers && this.entity.isVehicle()) || this.entity.isRemoved()) { // Paper - Teleport passenger API -+ // Purpur start -+ if (!entity.isRemoved() && new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) -+ return teleport(location, cause); -+ // Purpur end - return false; - } - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a4e4babedbf5bbf09bfbabd4f55ecd6301dae302..925b8260bb2b1c94e544d6e082ea3b02e613d224 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1443,6 +1443,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - } - - if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API -+ // Purpur start -+ if (new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) -+ return teleport(location, cause); -+ // Purpur end - return false; - } - -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 30a95d4b18964c6b25beb4dbec84f03effc2145b..bed0ee3cac8d2acda872f5f3fcbd2b75a6ca3a0d 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 { - public boolean entitiesCanUsePortals = true; - public boolean entitiesPickUpLootBypassMobGriefing = false; - public boolean fireballsBypassMobGriefing = false; -+ public boolean imposeTeleportRestrictionsOnGateways = false; - public boolean milkCuresBadOmen = true; - public boolean noteBlockIgnoreAbove = false; - public boolean persistentDroppableEntityDisplayNames = true; -@@ -134,6 +135,7 @@ public class PurpurWorldConfig { - entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); - entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); - fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); -+ imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); - milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); - noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); - persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);