From 0b3c94c72da6651462b236cd3cd570829f3d4269 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 8 Jun 2023 19:58:32 -0700 Subject: [PATCH] we can ride mobs again! --- .../0009-Ridables.patch} | 1036 +++++++++-------- ...{0009-AFK-API.patch => 0010-AFK-API.patch} | 12 +- ...atch => 0011-Bring-back-server-name.patch} | 0 ...> 0012-Configurable-server-mod-name.patch} | 6 +- ... 0013-LivingEntity-safeFallDistance.patch} | 14 +- ...old.patch => 0014-Lagging-threshold.patch} | 4 +- ...15-PlayerSetSpawnerTypeWithEggEvent.patch} | 0 ...ch => 0016-Player-invulnerabilities.patch} | 18 +- ...6-Anvil-API.patch => 0017-Anvil-API.patch} | 0 ...0018-Alternative-Keepalive-Handling.patch} | 6 +- ...s.patch => 0019-Silk-touch-spawners.patch} | 2 +- ...> 0020-Add-turtle-egg-block-options.patch} | 2 +- ...settings-suppressing-pointless-logs.patch} | 27 +- ...> 0022-Disable-outdated-build-check.patch} | 0 ...gs.patch => 0023-Giants-AI-settings.patch} | 10 +- ...> 0024-Zombie-horse-naturally-spawn.patch} | 6 +- ...025-Charged-creeper-naturally-spawn.patch} | 6 +- ...it-naturally-spawn-toast-and-killer.patch} | 6 +- ...er-showing-in-ping-before-server-fu.patch} | 0 ...atch => 0028-Tulips-change-fox-type.patch} | 10 +- ...patch => 0029-Breedable-Polar-Bears.patch} | 37 +- ...atch => 0030-Chickens-can-retaliate.patch} | 12 +- ...ption-to-set-armorstand-step-height.patch} | 4 +- ....patch => 0032-Cat-spawning-options.patch} | 2 +- ...ms.patch => 0033-Cows-eat-mushrooms.patch} | 12 +- ...ow-rotation-when-shearing-mooshroom.patch} | 4 +- ...patch => 0035-Pigs-give-saddle-back.patch} | 6 +- ...6-Snowman-drop-and-put-back-pumpkin.patch} | 10 +- ...7-Ender-dragon-always-drop-full-exp.patch} | 6 +- ...oisten-from-water-directly-under-it.patch} | 2 +- ...Minecart-settings-and-WASD-controls.patch} | 6 +- ...ble-loot-drops-on-death-by-cramming.patch} | 8 +- ...tion-to-toggle-milk-curing-bad-omen.patch} | 2 +- ...ould-check-if-entity-can-use-portal.patch} | 0 ...Skip-events-if-there-s-no-listeners.patch} | 0 ... 0044-Add-permission-for-F3-N-debug.patch} | 2 +- ...ch => 0045-Configurable-TPS-Catchup.patch} | 6 +- ...ow-loyalty-on-tridents-to-work-in-t.patch} | 2 +- ...erman-and-creeper-griefing-controls.patch} | 12 +- ...048-Villagers-follow-emerald-blocks.patch} | 8 +- ...ch => 0049-Allow-leashing-villagers.patch} | 16 +- ... => 0050-Implement-infinite-liquids.patch} | 2 +- ...1-Make-lava-flow-speed-configurable.patch} | 2 +- ...dd-player-death-exp-control-options.patch} | 6 +- ...rable-void-damage-height-and-damage.patch} | 8 +- ...=> 0054-Add-canSaveToDisk-to-Entity.patch} | 6 +- ...spenser-curse-of-binding-protection.patch} | 4 +- ...-for-boats-to-eject-players-on-land.patch} | 2 +- ...-mends-most-damages-equipment-first.patch} | 2 +- ...058-Add-5-second-tps-average-in-tps.patch} | 2 +- ...h => 0059-Implement-elytra-settings.patch} | 6 +- ...atch => 0060-Item-entity-immunities.patch} | 2 +- ...mand.patch => 0061-Add-ping-command.patch} | 7 +- ...mand.patch => 0062-Add-demo-command.patch} | 8 +- ...d.patch => 0063-Add-credits-command.patch} | 6 +- ...=> 0064-Configurable-jockey-options.patch} | 47 +- ...> 0065-Add-phantom-spawning-options.patch} | 2 +- ...066-Implement-bed-explosion-options.patch} | 2 +- ...nt-respawn-anchor-explosion-options.patch} | 2 +- ...Add-allow-water-in-end-world-option.patch} | 4 +- ... => 0069-Allow-color-codes-in-books.patch} | 2 +- ...espan.patch => 0070-Entity-lifespan.patch} | 6 +- ...eport-to-spawn-if-outside-world-bor.patch} | 10 +- ...ty.patch => 0072-Squid-EAR-immunity.patch} | 2 +- ...atch => 0073-Phantoms-burn-in-light.patch} | 12 +- ...0074-Configurable-villager-breeding.patch} | 6 +- ... 0075-Redstone-deactivates-spawners.patch} | 2 +- ...ch => 0076-Totems-work-in-inventory.patch} | 6 +- ...-Add-vindicator-johnny-spawn-chance.patch} | 6 +- ...on-to-disable-certain-block-updates.patch} | 4 +- ...0079-Dispensers-place-anvils-option.patch} | 2 +- ...rs.patch => 0080-Allow-anvil-colors.patch} | 2 +- ...-disable-dolphin-treasure-searching.patch} | 6 +- ...patch => 0082-Short-enderman-height.patch} | 16 +- ...top-squids-floating-on-top-of-water.patch} | 12 +- ...ng-obsidian-valid-for-portal-frames.patch} | 6 +- ...ities-can-use-portals-configuration.patch} | 8 +- ...086-LivingEntity-broadcastItemBreak.patch} | 0 ...tomizable-wither-health-and-healing.patch} | 6 +- ...gling-special-MobSpawners-per-world.patch} | 6 +- ...patch => 0089-Raid-cooldown-setting.patch} | 2 +- ...-config-options-per-projectile-type.patch} | 2 +- ...able-zombie-aggressiveness-towards-.patch} | 11 +- ...-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...y.patch => 0093-Flying-squids-Oh-my.patch} | 16 +- ...patch => 0094-Infinity-bow-settings.patch} | 2 +- ...=> 0095-Configurable-daylight-cycle.patch} | 12 +- ...e-and-mending-enchantments-together.patch} | 4 +- ...7-Furnace-uses-lava-from-underneath.patch} | 2 +- ...ws-should-not-reset-despawn-counter.patch} | 2 +- ...e-add-farmland-mechanics-from-Alpha.patch} | 2 +- ...ustable-breeding-cooldown-to-config.patch} | 2 +- ...-entity-breeding-times-configurable.patch} | 168 +-- ...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 +- ...05-Add-configurable-snowball-damage.patch} | 2 +- ...6-Changeable-Mob-Left-Handed-Chance.patch} | 4 +- ...=> 0107-Add-boat-fall-damage-config.patch} | 6 +- ...0108-Snow-Golem-rate-of-fire-config.patch} | 8 +- ...-Configurable-disable-give-dropping.patch} | 4 +- ...ied-Piglin-death-always-counting-as.patch} | 13 +- ...le-chance-for-wolves-to-spawn-rabid.patch} | 17 +- ...2-Configurable-default-collar-color.patch} | 10 +- ...tch => 0113-Phantom-flames-on-swoop.patch} | 6 +- ...-to-open-even-with-a-solid-block-on.patch} | 2 +- ...SBar.patch => 0115-Implement-TPSBar.patch} | 16 +- ...h => 0116-Striders-give-saddle-back.patch} | 6 +- ...tch => 0117-PlayerBookTooLargeEvent.patch} | 2 +- ...herite-armor-grants-fire-resistance.patch} | 6 +- ...119-Fix-rotating-UP-DOWN-CW-and-CCW.patch} | 0 ...efing-bypass-to-everything-affected.patch} | 52 +- ...llow-Note-Block-sounds-when-blocked.patch} | 2 +- ...122-Add-EntityTeleportHinderedEvent.patch} | 4 +- ... => 0123-Farmland-trampling-changes.patch} | 2 +- ...4-Movement-options-for-armor-stands.patch} | 4 +- ....patch => 0125-Fix-stuck-in-portals.patch} | 10 +- ...ggle-for-water-sensitive-mob-damage.patch} | 387 +++--- ...7-Config-to-always-tame-in-Creative.patch} | 14 +- ... 0128-End-crystal-explosion-options.patch} | 2 +- ...ther-Ender-Dragon-can-ride-vehicles.patch} | 10 +- ...atch => 0130-Dont-run-with-scissors.patch} | 12 +- ...nch-Man.patch => 0131-One-Punch-Man.patch} | 6 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 2 +- ...to-ignore-nearby-mobs-when-sleeping.patch} | 6 +- ...d-back-player-spawned-endermite-API.patch} | 6 +- ...n-aggressiveness-towards-Endermites.patch} | 8 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 8 +- ...ig.patch => 0137-Tick-fluids-config.patch} | 2 +- ...38-Config-to-disable-Llama-caravans.patch} | 6 +- ...g-to-make-Creepers-explode-on-death.patch} | 22 +- ...rable-ravager-griefable-blocks-list.patch} | 6 +- ...141-Sneak-to-bulk-process-composter.patch} | 2 +- ...h => 0142-Config-for-skipping-night.patch} | 6 +- ...143-Add-config-for-villager-trading.patch} | 18 +- ...=> 0144-Allow-infinity-on-crossbows.patch} | 6 +- ...ngs.patch => 0145-Drowning-Settings.patch} | 12 +- ...reak-individual-slabs-when-sneaking.patch} | 2 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 2 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 2 +- ...tion-to-make-doors-require-redstone.patch} | 2 +- ...Config-to-allow-for-unsafe-enchants.patch} | 4 +- ...ch => 0151-Projectile-offset-config.patch} | 2 +- ...or-powered-rail-activation-distance.patch} | 2 +- ...> 0153-Piglin-portal-spawn-modifier.patch} | 2 +- ...Config-to-change-max-number-of-bees.patch} | 6 +- ...-Config-for-wither-explosion-radius.patch} | 2 +- ... => 0156-Gamemode-extra-permissions.patch} | 6 +- ...ng-the-blocks-that-turn-into-dirt-p.patch} | 2 +- ...0158-Configurable-piston-push-limit.patch} | 2 +- ...159-Configurable-broadcast-settings.patch} | 8 +- ... => 0160-Configurable-mob-blindness.patch} | 6 +- ...hidden-players-from-entity-selector.patch} | 6 +- ...-to-impact-Creeper-explosion-radius.patch} | 6 +- ... 0163-Iron-golem-calm-anger-options.patch} | 12 +- ...ots.patch => 0164-Breedable-parrots.patch} | 18 +- ...gurable-powered-rail-boost-modifier.patch} | 2 +- ...ge-multiplier-critical-damage-value.patch} | 6 +- ...n-to-disable-dragon-egg-teleporting.patch} | 2 +- ...fig-for-unverified-username-message.patch} | 8 +- ...-anvil-cumulative-cost-configurable.patch} | 6 +- ...0-ShulkerBox-allow-oversized-stacks.patch} | 2 +- ...e-can-work-when-raining-or-at-night.patch} | 6 +- ...72-API-for-any-mob-to-burn-daylight.patch} | 51 +- ...h => 0173-Config-MobEffect-by-world.patch} | 2 +- ...eacon-Activation-Range-Configurable.patch} | 2 +- ...0175-Add-toggle-for-sand-duping-fix.patch} | 2 +- ...gle-for-end-portal-safe-teleporting.patch} | 6 +- ...ke-lightning-rod-range-configurable.patch} | 10 +- ...fter-eating-food-fills-hunger-bar-c.patch} | 8 +- ...ayer-join-full-server-by-permission.patch} | 0 ...al-waiting-option-permission-bypass.patch} | 6 +- ...1-Shulker-spawn-from-bullet-options.patch} | 8 +- ...ating-glow-berries-adds-glow-effect.patch} | 2 +- ...-Option-to-make-drowned-break-doors.patch} | 12 +- ...nfigurable-hunger-starvation-damage.patch} | 12 +- ...patch => 0185-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0186-Add-uptime-command.patch} | 14 +- ...tch => 0187-Tool-actionable-options.patch} | 2 +- ...8-Store-placer-on-Block-when-placed.patch} | 0 ...oner-API.patch => 0189-Summoner-API.patch} | 30 +- ...mizable-sleeping-actionbar-messages.patch} | 12 +- ...-shulker-box-items-from-dropping-co.patch} | 2 +- ...192-Silk-touchable-budding-amethyst.patch} | 6 +- ...tch => 0193-Big-dripleaf-tilt-delay.patch} | 2 +- ...0194-Player-ridable-in-water-option.patch} | 6 +- ...-Enderman-teleport-on-projectile-hi.patch} | 6 +- ...d.patch => 0196-Add-compass-command.patch} | 12 +- ...h => 0197-Toggle-for-kinetic-damage.patch} | 6 +- ...-Option-for-disable-observer-clocks.patch} | 2 +- ...zeable-Zombie-Villager-curing-times.patch} | 6 +- ...-Option-for-sponges-to-work-on-lava.patch} | 2 +- ...201-Toggle-for-Wither-s-spawn-sound.patch} | 6 +- ...-breaks-from-solid-neighbors-config.patch} | 2 +- ...move-curse-of-binding-with-weakness.patch} | 2 +- ...0204-Conduit-behavior-configuration.patch} | 13 +- ...patch => 0205-Cauldron-fill-chances.patch} | 13 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 2 +- ... 0207-Shulker-change-color-with-dye.patch} | 8 +- ... => 0208-Extended-OfflinePlayer-API.patch} | 0 ...he-ability-to-add-combustible-items.patch} | 0 ...in-and-thunder-should-stop-on-sleep.patch} | 8 +- ...-blocks-to-grow-into-trees-naturall.patch} | 2 +- ...-right-click-to-use-exp-for-mending.patch} | 4 +- ...urally-aggressive-to-players-chance.patch} | 14 +- ...urally-aggressive-to-players-chance.patch} | 11 +- ...r-beds-to-explode-on-villager-sleep.patch} | 6 +- ...Halloween-options-and-optimizations.patch} | 16 +- ...atch => 0217-Config-for-grindstones.patch} | 6 +- ....patch => 0218-UPnP-Port-Forwarding.patch} | 6 +- ...Campfire-option-for-lit-when-placed.patch} | 2 +- ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 6 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 2 +- ...-and-twisting-vines-configurable-ma.patch} | 6 +- ...=> 0224-Mobs-always-drop-experience.patch} | 310 ++--- ....patch => 0225-Potion-NamespacedKey.patch} | 0 ...ne-API.patch => 0226-Grindstone-API.patch} | 0 ...e-to-replant-crops-and-nether-warts.patch} | 2 +- ...ring-jeb-produces-random-color-wool.patch} | 6 +- ...urtle-eggs-random-tick-crack-chance.patch} | 2 +- ...=> 0230-Mob-head-visibility-percent.patch} | 6 +- ...able-valid-characters-for-usernames.patch} | 4 +- ...Shears-can-have-looting-enchantment.patch} | 30 +- ...Stop-bees-from-dying-after-stinging.patch} | 6 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 2 +- ...onfigurable-farmland-trample-height.patch} | 2 +- ...onfigurable-player-pickup-exp-delay.patch} | 6 +- ...ng.patch => 0237-Allow-void-trading.patch} | 6 +- ...nt-eat-blocks-in-non-ticking-chunks.patch} | 0 ...h => 0239-Configurable-phantom-size.patch} | 6 +- ...> 0240-Configurable-food-attributes.patch} | 4 +- ....patch => 0241-Max-joins-per-second.patch} | 4 +- ...figurable-minimum-demand-for-trades.patch} | 6 +- ... => 0243-Lobotomize-stuck-villagers.patch} | 9 +- ...ion-for-villager-display-trade-item.patch} | 2 +- ...wner-not-spawning-water-animals-cor.patch} | 2 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 6 +- ...=> 0247-Anvil-repair-damage-options.patch} | 2 +- ...> 0248-Fix-legacy-colors-in-console.patch} | 0 ...-turtle-egg-trampling-with-feather-.patch} | 2 +- ...d-toggle-for-enchant-level-clamping.patch} | 6 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 6 +- ...ge.patch => 0253-Stonecutter-damage.patch} | 6 +- ...le-damage-settings-for-magma-blocks.patch} | 2 +- ...255-Add-config-for-snow-on-blue-ice.patch} | 2 +- ... => 0256-Skeletons-eat-wither-roses.patch} | 6 +- ...57-Enchantment-Table-Persists-Lapis.patch} | 2 +- ...ofiler.patch => 0258-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 6 +- ...for-sculk-shrieker-can_summon-state.patch} | 2 +- ...=> 0261-Config-to-not-let-coral-die.patch} | 2 +- ...ch => 0262-Add-local-difficulty-api.patch} | 0 ...263-Add-toggle-for-RNG-manipulation.patch} | 6 +- ... 0264-Send-client-custom-name-of-BE.patch} | 0 ...Fix-exact-choice-recipe-book-clicks.patch} | 0 ...=> 0266-Allow-custom-ChatDecorators.patch} | 4 +- ...otd.patch => 0267-Cache-server-motd.patch} | 4 +- ...r-output-for-invalid-movement-kicks.patch} | 2 +- ...d-Bee-API.patch => 0269-Add-Bee-API.patch} | 8 +- ...-API.patch => 0270-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 2 +- ...72-Add-skeleton-bow-accuracy-option.patch} | 6 +- ...atch => 0273-Allay-respect-item-NBT.patch} | 6 +- ....patch => 0274-Add-death-screen-API.patch} | 0 ...5-Implement-ram-and-rambar-commands.patch} | 14 +- ...276-Add-item-packet-serialize-event.patch} | 10 +- ...-123848.patch => 0277-Fix-MC-123848.patch} | 0 ...quid-colors-for-rainglow-fabric-mod.patch} | 8 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 4 +- ...Configurable-block-blast-resistance.patch} | 4 +- ...gurable-block-fall-damage-modifiers.patch} | 4 +- ...uage-API.patch => 0282-Language-API.patch} | 0 ... 0283-Milk-Keeps-Beneficial-Effects.patch} | 10 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 4 +- ...ransparent-Blocks-In-Enchanting-Box.patch} | 6 +- ...ow-creeper-to-encircle-target-when-.patch} | 2 +- ...API.patch => 0288-Fire-Immunity-API.patch} | 4 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 4 +- ...t.patch => 0290-Added-got-ram-event.patch} | 4 +- ... 0291-Log-skipped-entity-s-position.patch} | 0 ....patch => 0292-End-Crystal-Cramming.patch} | 2 +- ...eacon-effects-when-covered-by-tinte.patch} | 2 +- ...ute-clamping-and-armor-limit-config.patch} | 4 +- ...ig-to-remove-explosion-radius-clamp.patch} | 2 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 2 +- ....patch => 0297-Add-PreExplodeEvents.patch} | 0 ...8-Improve-output-of-plugins-command.patch} | 0 ....patch => 0299-Make-GUI-Great-Again.patch} | 0 ...atch => 0300-Add-mending-multiplier.patch} | 2 +- 292 files changed, 1843 insertions(+), 1756 deletions(-) rename patches/{todo/server/0008-Ridables.patch => server/0009-Ridables.patch} (86%) rename patches/server/{0009-AFK-API.patch => 0010-AFK-API.patch} (97%) rename patches/server/{0010-Bring-back-server-name.patch => 0011-Bring-back-server-name.patch} (100%) rename patches/server/{0011-Configurable-server-mod-name.patch => 0012-Configurable-server-mod-name.patch} (87%) rename patches/server/{0012-LivingEntity-safeFallDistance.patch => 0013-LivingEntity-safeFallDistance.patch} (88%) rename patches/server/{0013-Lagging-threshold.patch => 0014-Lagging-threshold.patch} (93%) rename patches/server/{0014-PlayerSetSpawnerTypeWithEggEvent.patch => 0015-PlayerSetSpawnerTypeWithEggEvent.patch} (100%) rename patches/server/{0015-Player-invulnerabilities.patch => 0016-Player-invulnerabilities.patch} (92%) rename patches/server/{0016-Anvil-API.patch => 0017-Anvil-API.patch} (100%) rename patches/server/{0017-Alternative-Keepalive-Handling.patch => 0018-Alternative-Keepalive-Handling.patch} (94%) rename patches/server/{0018-Silk-touch-spawners.patch => 0019-Silk-touch-spawners.patch} (99%) rename patches/server/{0019-Add-turtle-egg-block-options.patch => 0020-Add-turtle-egg-block-options.patch} (96%) rename patches/server/{0020-Logger-settings-suppressing-pointless-logs.patch => 0021-Logger-settings-suppressing-pointless-logs.patch} (79%) rename patches/server/{0021-Disable-outdated-build-check.patch => 0022-Disable-outdated-build-check.patch} (100%) rename patches/server/{0022-Giants-AI-settings.patch => 0023-Giants-AI-settings.patch} (94%) rename patches/server/{0023-Zombie-horse-naturally-spawn.patch => 0024-Zombie-horse-naturally-spawn.patch} (93%) rename patches/server/{0024-Charged-creeper-naturally-spawn.patch => 0025-Charged-creeper-naturally-spawn.patch} (90%) rename patches/server/{0025-Rabbit-naturally-spawn-toast-and-killer.patch => 0026-Rabbit-naturally-spawn-toast-and-killer.patch} (91%) rename patches/server/{0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch => 0027-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (100%) rename patches/server/{0027-Tulips-change-fox-type.patch => 0028-Tulips-change-fox-type.patch} (91%) rename patches/server/{0028-Breedable-Polar-Bears.patch => 0029-Breedable-Polar-Bears.patch} (71%) rename patches/server/{0029-Chickens-can-retaliate.patch => 0030-Chickens-can-retaliate.patch} (87%) rename patches/server/{0030-Add-option-to-set-armorstand-step-height.patch => 0031-Add-option-to-set-armorstand-step-height.patch} (92%) rename patches/server/{0031-Cat-spawning-options.patch => 0032-Cat-spawning-options.patch} (97%) rename patches/server/{0032-Cows-eat-mushrooms.patch => 0033-Cows-eat-mushrooms.patch} (93%) rename patches/server/{0033-Fix-cow-rotation-when-shearing-mooshroom.patch => 0034-Fix-cow-rotation-when-shearing-mooshroom.patch} (88%) rename patches/server/{0034-Pigs-give-saddle-back.patch => 0035-Pigs-give-saddle-back.patch} (89%) rename patches/server/{0035-Snowman-drop-and-put-back-pumpkin.patch => 0036-Snowman-drop-and-put-back-pumpkin.patch} (87%) rename patches/server/{0036-Ender-dragon-always-drop-full-exp.patch => 0037-Ender-dragon-always-drop-full-exp.patch} (88%) rename patches/server/{0037-Allow-soil-to-moisten-from-water-directly-under-it.patch => 0038-Allow-soil-to-moisten-from-water-directly-under-it.patch} (94%) rename patches/server/{0038-Minecart-settings-and-WASD-controls.patch => 0039-Minecart-settings-and-WASD-controls.patch} (98%) rename patches/server/{0039-Disable-loot-drops-on-death-by-cramming.patch => 0040-Disable-loot-drops-on-death-by-cramming.patch} (87%) rename patches/server/{0040-Option-to-toggle-milk-curing-bad-omen.patch => 0041-Option-to-toggle-milk-curing-bad-omen.patch} (95%) rename patches/server/{0041-End-gateway-should-check-if-entity-can-use-portal.patch => 0042-End-gateway-should-check-if-entity-can-use-portal.patch} (100%) rename patches/server/{0042-Skip-events-if-there-s-no-listeners.patch => 0043-Skip-events-if-there-s-no-listeners.patch} (100%) rename patches/server/{0043-Add-permission-for-F3-N-debug.patch => 0044-Add-permission-for-F3-N-debug.patch} (89%) rename patches/server/{0044-Configurable-TPS-Catchup.patch => 0045-Configurable-TPS-Catchup.patch} (89%) rename patches/server/{0045-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch => 0046-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch} (96%) rename patches/server/{0046-Add-enderman-and-creeper-griefing-controls.patch => 0047-Add-enderman-and-creeper-griefing-controls.patch} (89%) rename patches/server/{0047-Villagers-follow-emerald-blocks.patch => 0048-Villagers-follow-emerald-blocks.patch} (93%) rename patches/server/{0048-Allow-leashing-villagers.patch => 0049-Allow-leashing-villagers.patch} (85%) rename patches/server/{0049-Implement-infinite-liquids.patch => 0050-Implement-infinite-liquids.patch} (97%) rename patches/server/{0050-Make-lava-flow-speed-configurable.patch => 0051-Make-lava-flow-speed-configurable.patch} (95%) rename patches/server/{0051-Add-player-death-exp-control-options.patch => 0052-Add-player-death-exp-control-options.patch} (92%) rename patches/server/{0052-Configurable-void-damage-height-and-damage.patch => 0053-Configurable-void-damage-height-and-damage.patch} (89%) rename patches/server/{0053-Add-canSaveToDisk-to-Entity.patch => 0054-Add-canSaveToDisk-to-Entity.patch} (89%) rename patches/server/{0054-Dispenser-curse-of-binding-protection.patch => 0055-Dispenser-curse-of-binding-protection.patch} (94%) rename patches/server/{0055-Add-option-for-boats-to-eject-players-on-land.patch => 0056-Add-option-for-boats-to-eject-players-on-land.patch} (95%) rename patches/server/{0056-Mending-mends-most-damages-equipment-first.patch => 0057-Mending-mends-most-damages-equipment-first.patch} (98%) rename patches/server/{0057-Add-5-second-tps-average-in-tps.patch => 0058-Add-5-second-tps-average-in-tps.patch} (98%) rename patches/server/{0058-Implement-elytra-settings.patch => 0059-Implement-elytra-settings.patch} (96%) rename patches/server/{0059-Item-entity-immunities.patch => 0060-Item-entity-immunities.patch} (98%) rename patches/server/{0060-Add-ping-command.patch => 0061-Add-ping-command.patch} (93%) rename patches/server/{0061-Add-demo-command.patch => 0062-Add-demo-command.patch} (93%) rename patches/server/{0062-Add-credits-command.patch => 0063-Add-credits-command.patch} (95%) rename patches/server/{0063-Configurable-jockey-options.patch => 0064-Configurable-jockey-options.patch} (85%) rename patches/server/{0064-Add-phantom-spawning-options.patch => 0065-Add-phantom-spawning-options.patch} (98%) rename patches/server/{0065-Implement-bed-explosion-options.patch => 0066-Implement-bed-explosion-options.patch} (97%) rename patches/server/{0066-Implement-respawn-anchor-explosion-options.patch => 0067-Implement-respawn-anchor-explosion-options.patch} (97%) rename patches/server/{0067-Add-allow-water-in-end-world-option.patch => 0068-Add-allow-water-in-end-world-option.patch} (97%) rename patches/server/{0068-Allow-color-codes-in-books.patch => 0069-Allow-color-codes-in-books.patch} (97%) rename patches/server/{0069-Entity-lifespan.patch => 0070-Entity-lifespan.patch} (94%) rename patches/server/{0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => 0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (90%) rename patches/server/{0071-Squid-EAR-immunity.patch => 0072-Squid-EAR-immunity.patch} (95%) rename patches/server/{0072-Phantoms-burn-in-light.patch => 0073-Phantoms-burn-in-light.patch} (91%) rename patches/server/{0073-Configurable-villager-breeding.patch => 0074-Configurable-villager-breeding.patch} (89%) rename patches/server/{0074-Redstone-deactivates-spawners.patch => 0075-Redstone-deactivates-spawners.patch} (94%) rename patches/server/{0075-Totems-work-in-inventory.patch => 0076-Totems-work-in-inventory.patch} (91%) rename patches/server/{0076-Add-vindicator-johnny-spawn-chance.patch => 0077-Add-vindicator-johnny-spawn-chance.patch} (89%) rename patches/server/{0077-Add-option-to-disable-certain-block-updates.patch => 0078-Add-option-to-disable-certain-block-updates.patch} (98%) rename patches/server/{0078-Dispensers-place-anvils-option.patch => 0079-Dispensers-place-anvils-option.patch} (96%) rename patches/server/{0079-Allow-anvil-colors.patch => 0080-Allow-anvil-colors.patch} (98%) rename patches/server/{0080-Add-option-to-disable-dolphin-treasure-searching.patch => 0081-Add-option-to-disable-dolphin-treasure-searching.patch} (88%) rename patches/server/{0081-Short-enderman-height.patch => 0082-Short-enderman-height.patch} (82%) rename patches/server/{0082-Stop-squids-floating-on-top-of-water.patch => 0083-Stop-squids-floating-on-top-of-water.patch} (86%) rename patches/server/{0083-Crying-obsidian-valid-for-portal-frames.patch => 0084-Crying-obsidian-valid-for-portal-frames.patch} (92%) rename patches/server/{0084-Entities-can-use-portals-configuration.patch => 0085-Entities-can-use-portals-configuration.patch} (90%) rename patches/server/{0085-LivingEntity-broadcastItemBreak.patch => 0086-LivingEntity-broadcastItemBreak.patch} (100%) rename patches/server/{0086-Customizable-wither-health-and-healing.patch => 0087-Customizable-wither-health-and-healing.patch} (90%) rename patches/server/{0087-Allow-toggling-special-MobSpawners-per-world.patch => 0088-Allow-toggling-special-MobSpawners-per-world.patch} (95%) rename patches/server/{0088-Raid-cooldown-setting.patch => 0089-Raid-cooldown-setting.patch} (97%) rename patches/server/{0089-Despawn-rate-config-options-per-projectile-type.patch => 0090-Despawn-rate-config-options-per-projectile-type.patch} (96%) rename patches/server/{0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (93%) rename patches/server/{0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0092-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/server/{0092-Flying-squids-Oh-my.patch => 0093-Flying-squids-Oh-my.patch} (84%) rename patches/server/{0093-Infinity-bow-settings.patch => 0094-Infinity-bow-settings.patch} (97%) rename patches/server/{0094-Configurable-daylight-cycle.patch => 0095-Configurable-daylight-cycle.patch} (91%) rename patches/server/{0095-Allow-infinite-and-mending-enchantments-together.patch => 0096-Allow-infinite-and-mending-enchantments-together.patch} (93%) rename patches/server/{0096-Furnace-uses-lava-from-underneath.patch => 0097-Furnace-uses-lava-from-underneath.patch} (97%) rename patches/server/{0097-Arrows-should-not-reset-despawn-counter.patch => 0098-Arrows-should-not-reset-despawn-counter.patch} (95%) rename patches/server/{0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => 0099-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (95%) rename patches/server/{0099-Add-adjustable-breeding-cooldown-to-config.patch => 0100-Add-adjustable-breeding-cooldown-to-config.patch} (98%) rename patches/server/{0100-Make-entity-breeding-times-configurable.patch => 0101-Make-entity-breeding-times-configurable.patch} (84%) rename patches/server/{0101-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0102-Apply-display-names-from-item-forms-of-entities-to-e.patch} (99%) rename patches/server/{0102-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => 0103-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (96%) rename patches/server/{0103-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => 0104-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (89%) rename patches/server/{0104-Add-configurable-snowball-damage.patch => 0105-Add-configurable-snowball-damage.patch} (95%) rename patches/server/{0105-Changeable-Mob-Left-Handed-Chance.patch => 0106-Changeable-Mob-Left-Handed-Chance.patch} (90%) rename patches/server/{0106-Add-boat-fall-damage-config.patch => 0107-Add-boat-fall-damage-config.patch} (92%) rename patches/server/{0107-Snow-Golem-rate-of-fire-config.patch => 0108-Snow-Golem-rate-of-fire-config.patch} (90%) rename patches/server/{0108-EMC-Configurable-disable-give-dropping.patch => 0109-EMC-Configurable-disable-give-dropping.patch} (93%) rename patches/server/{0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => 0110-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (87%) rename patches/server/{0110-Configurable-chance-for-wolves-to-spawn-rabid.patch => 0111-Configurable-chance-for-wolves-to-spawn-rabid.patch} (94%) rename patches/server/{0111-Configurable-default-collar-color.patch => 0112-Configurable-default-collar-color.patch} (90%) rename patches/server/{0112-Phantom-flames-on-swoop.patch => 0113-Phantom-flames-on-swoop.patch} (88%) rename patches/server/{0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch => 0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (94%) rename patches/server/{0114-Implement-TPSBar.patch => 0115-Implement-TPSBar.patch} (97%) rename patches/server/{0115-Striders-give-saddle-back.patch => 0116-Striders-give-saddle-back.patch} (90%) rename patches/server/{0116-PlayerBookTooLargeEvent.patch => 0117-PlayerBookTooLargeEvent.patch} (96%) rename patches/server/{0117-Full-netherite-armor-grants-fire-resistance.patch => 0118-Full-netherite-armor-grants-fire-resistance.patch} (93%) rename patches/server/{0118-Fix-rotating-UP-DOWN-CW-and-CCW.patch => 0119-Fix-rotating-UP-DOWN-CW-and-CCW.patch} (100%) rename patches/server/{0119-Add-mobGriefing-bypass-to-everything-affected.patch => 0120-Add-mobGriefing-bypass-to-everything-affected.patch} (95%) rename patches/server/{0120-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0121-Config-to-allow-Note-Block-sounds-when-blocked.patch} (97%) rename patches/server/{0121-Add-EntityTeleportHinderedEvent.patch => 0122-Add-EntityTeleportHinderedEvent.patch} (98%) rename patches/server/{0122-Farmland-trampling-changes.patch => 0123-Farmland-trampling-changes.patch} (97%) rename patches/server/{0123-Movement-options-for-armor-stands.patch => 0124-Movement-options-for-armor-stands.patch} (96%) rename patches/server/{0124-Fix-stuck-in-portals.patch => 0125-Fix-stuck-in-portals.patch} (88%) rename patches/server/{0125-Toggle-for-water-sensitive-mob-damage.patch => 0126-Toggle-for-water-sensitive-mob-damage.patch} (86%) rename patches/server/{0126-Config-to-always-tame-in-Creative.patch => 0127-Config-to-always-tame-in-Creative.patch} (91%) rename patches/server/{0127-End-crystal-explosion-options.patch => 0128-End-crystal-explosion-options.patch} (98%) rename patches/server/{0128-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0129-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (89%) rename patches/server/{0129-Dont-run-with-scissors.patch => 0130-Dont-run-with-scissors.patch} (92%) rename patches/server/{0130-One-Punch-Man.patch => 0131-One-Punch-Man.patch} (91%) rename patches/server/{0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (98%) rename patches/server/{0132-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0133-Config-to-ignore-nearby-mobs-when-sleeping.patch} (89%) rename patches/server/{0133-Add-back-player-spawned-endermite-API.patch => 0134-Add-back-player-spawned-endermite-API.patch} (94%) rename patches/server/{0134-Config-Enderman-aggressiveness-towards-Endermites.patch => 0135-Config-Enderman-aggressiveness-towards-Endermites.patch} (90%) rename patches/server/{0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (85%) rename patches/server/{0136-Tick-fluids-config.patch => 0137-Tick-fluids-config.patch} (97%) rename patches/server/{0137-Config-to-disable-Llama-caravans.patch => 0138-Config-to-disable-Llama-caravans.patch} (93%) rename patches/server/{0138-Config-to-make-Creepers-explode-on-death.patch => 0139-Config-to-make-Creepers-explode-on-death.patch} (82%) rename patches/server/{0139-Configurable-ravager-griefable-blocks-list.patch => 0140-Configurable-ravager-griefable-blocks-list.patch} (94%) rename patches/server/{0140-Sneak-to-bulk-process-composter.patch => 0141-Sneak-to-bulk-process-composter.patch} (98%) rename patches/server/{0141-Config-for-skipping-night.patch => 0142-Config-for-skipping-night.patch} (90%) rename patches/server/{0142-Add-config-for-villager-trading.patch => 0143-Add-config-for-villager-trading.patch} (80%) rename patches/server/{0143-Allow-infinity-on-crossbows.patch => 0144-Allow-infinity-on-crossbows.patch} (96%) rename patches/server/{0144-Drowning-Settings.patch => 0145-Drowning-Settings.patch} (86%) rename patches/server/{0145-Break-individual-slabs-when-sneaking.patch => 0146-Break-individual-slabs-when-sneaking.patch} (97%) rename patches/server/{0146-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0147-Config-to-disable-hostile-mob-spawn-on-ice.patch} (96%) rename patches/server/{0147-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0148-Config-to-show-Armor-Stand-arms-on-spawn.patch} (96%) rename patches/server/{0148-Option-to-make-doors-require-redstone.patch => 0149-Option-to-make-doors-require-redstone.patch} (98%) rename patches/server/{0149-Config-to-allow-for-unsafe-enchants.patch => 0150-Config-to-allow-for-unsafe-enchants.patch} (98%) rename patches/server/{0150-Projectile-offset-config.patch => 0151-Projectile-offset-config.patch} (99%) rename patches/server/{0151-Config-for-powered-rail-activation-distance.patch => 0152-Config-for-powered-rail-activation-distance.patch} (94%) rename patches/server/{0152-Piglin-portal-spawn-modifier.patch => 0153-Piglin-portal-spawn-modifier.patch} (96%) rename patches/server/{0153-Config-to-change-max-number-of-bees.patch => 0154-Config-to-change-max-number-of-bees.patch} (92%) rename patches/server/{0154-Config-for-wither-explosion-radius.patch => 0155-Config-for-wither-explosion-radius.patch} (96%) rename patches/server/{0155-Gamemode-extra-permissions.patch => 0156-Gamemode-extra-permissions.patch} (97%) rename patches/server/{0156-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch => 0157-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch} (96%) rename patches/server/{0157-Configurable-piston-push-limit.patch => 0158-Configurable-piston-push-limit.patch} (96%) rename patches/server/{0158-Configurable-broadcast-settings.patch => 0159-Configurable-broadcast-settings.patch} (91%) rename patches/server/{0159-Configurable-mob-blindness.patch => 0160-Configurable-mob-blindness.patch} (92%) rename patches/server/{0160-Hide-hidden-players-from-entity-selector.patch => 0161-Hide-hidden-players-from-entity-selector.patch} (96%) rename patches/server/{0161-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0162-Config-for-health-to-impact-Creeper-explosion-radius.patch} (90%) rename patches/server/{0162-Iron-golem-calm-anger-options.patch => 0163-Iron-golem-calm-anger-options.patch} (90%) rename patches/server/{0163-Breedable-parrots.patch => 0164-Breedable-parrots.patch} (81%) rename patches/server/{0164-Configurable-powered-rail-boost-modifier.patch => 0165-Configurable-powered-rail-boost-modifier.patch} (96%) rename patches/server/{0165-Add-config-change-multiplier-critical-damage-value.patch => 0166-Add-config-change-multiplier-critical-damage-value.patch} (89%) rename patches/server/{0166-Option-to-disable-dragon-egg-teleporting.patch => 0167-Option-to-disable-dragon-egg-teleporting.patch} (95%) rename patches/server/{0167-Config-for-unverified-username-message.patch => 0168-Config-for-unverified-username-message.patch} (91%) rename patches/server/{0168-Make-anvil-cumulative-cost-configurable.patch => 0169-Make-anvil-cumulative-cost-configurable.patch} (91%) rename patches/server/{0169-ShulkerBox-allow-oversized-stacks.patch => 0170-ShulkerBox-allow-oversized-stacks.patch} (97%) rename patches/server/{0170-Bee-can-work-when-raining-or-at-night.patch => 0171-Bee-can-work-when-raining-or-at-night.patch} (93%) rename patches/server/{0171-API-for-any-mob-to-burn-daylight.patch => 0172-API-for-any-mob-to-burn-daylight.patch} (89%) rename patches/server/{0172-Config-MobEffect-by-world.patch => 0173-Config-MobEffect-by-world.patch} (98%) rename patches/server/{0173-Beacon-Activation-Range-Configurable.patch => 0174-Beacon-Activation-Range-Configurable.patch} (96%) rename patches/server/{0174-Add-toggle-for-sand-duping-fix.patch => 0175-Add-toggle-for-sand-duping-fix.patch} (95%) rename patches/server/{0175-Add-toggle-for-end-portal-safe-teleporting.patch => 0176-Add-toggle-for-end-portal-safe-teleporting.patch} (92%) rename patches/server/{0176-Make-lightning-rod-range-configurable.patch => 0177-Make-lightning-rod-range-configurable.patch} (85%) rename patches/server/{0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (93%) rename patches/server/{0178-Allow-player-join-full-server-by-permission.patch => 0179-Allow-player-join-full-server-by-permission.patch} (100%) rename patches/server/{0179-Add-portal-waiting-option-permission-bypass.patch => 0180-Add-portal-waiting-option-permission-bypass.patch} (92%) rename patches/server/{0180-Shulker-spawn-from-bullet-options.patch => 0181-Shulker-spawn-from-bullet-options.patch} (94%) rename patches/server/{0181-Eating-glow-berries-adds-glow-effect.patch => 0182-Eating-glow-berries-adds-glow-effect.patch} (97%) rename patches/server/{0182-Option-to-make-drowned-break-doors.patch => 0183-Option-to-make-drowned-break-doors.patch} (84%) rename patches/server/{0183-Configurable-hunger-starvation-damage.patch => 0184-Configurable-hunger-starvation-damage.patch} (84%) rename patches/server/{0184-Enhance-SysoutCatcher.patch => 0185-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0185-Add-uptime-command.patch => 0186-Add-uptime-command.patch} (94%) rename patches/server/{0186-Tool-actionable-options.patch => 0187-Tool-actionable-options.patch} (99%) rename patches/server/{0187-Store-placer-on-Block-when-placed.patch => 0188-Store-placer-on-Block-when-placed.patch} (100%) rename patches/server/{0188-Summoner-API.patch => 0189-Summoner-API.patch} (90%) rename patches/server/{0189-Customizable-sleeping-actionbar-messages.patch => 0190-Customizable-sleeping-actionbar-messages.patch} (89%) rename patches/server/{0190-option-to-disable-shulker-box-items-from-dropping-co.patch => 0191-option-to-disable-shulker-box-items-from-dropping-co.patch} (96%) rename patches/server/{0191-Silk-touchable-budding-amethyst.patch => 0192-Silk-touchable-budding-amethyst.patch} (89%) rename patches/server/{0192-Big-dripleaf-tilt-delay.patch => 0193-Big-dripleaf-tilt-delay.patch} (96%) rename patches/server/{0193-Player-ridable-in-water-option.patch => 0194-Player-ridable-in-water-option.patch} (89%) rename patches/server/{0194-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0195-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (90%) rename patches/server/{0195-Add-compass-command.patch => 0196-Add-compass-command.patch} (96%) rename patches/server/{0196-Toggle-for-kinetic-damage.patch => 0197-Toggle-for-kinetic-damage.patch} (89%) rename patches/server/{0197-Add-Option-for-disable-observer-clocks.patch => 0198-Add-Option-for-disable-observer-clocks.patch} (95%) rename patches/server/{0198-Customizeable-Zombie-Villager-curing-times.patch => 0199-Customizeable-Zombie-Villager-curing-times.patch} (90%) rename patches/server/{0199-Option-for-sponges-to-work-on-lava.patch => 0200-Option-for-sponges-to-work-on-lava.patch} (95%) rename patches/server/{0200-Toggle-for-Wither-s-spawn-sound.patch => 0201-Toggle-for-Wither-s-spawn-sound.patch} (89%) rename patches/server/{0201-Cactus-breaks-from-solid-neighbors-config.patch => 0202-Cactus-breaks-from-solid-neighbors-config.patch} (95%) rename patches/server/{0202-Config-to-remove-curse-of-binding-with-weakness.patch => 0203-Config-to-remove-curse-of-binding-with-weakness.patch} (96%) rename patches/server/{0203-Conduit-behavior-configuration.patch => 0204-Conduit-behavior-configuration.patch} (95%) rename patches/server/{0204-Cauldron-fill-chances.patch => 0205-Cauldron-fill-chances.patch} (93%) rename patches/server/{0205-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0206-Config-to-allow-mobs-to-pathfind-over-rails.patch} (97%) rename patches/server/{0206-Shulker-change-color-with-dye.patch => 0207-Shulker-change-color-with-dye.patch} (90%) rename patches/server/{0207-Extended-OfflinePlayer-API.patch => 0208-Extended-OfflinePlayer-API.patch} (100%) rename patches/server/{0208-Added-the-ability-to-add-combustible-items.patch => 0209-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/server/{0209-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0210-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (90%) rename patches/server/{0210-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0211-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (98%) rename patches/server/{0211-Shift-right-click-to-use-exp-for-mending.patch => 0212-Shift-right-click-to-use-exp-for-mending.patch} (96%) rename patches/server/{0212-Dolphins-naturally-aggressive-to-players-chance.patch => 0213-Dolphins-naturally-aggressive-to-players-chance.patch} (87%) rename patches/server/{0213-Cows-naturally-aggressive-to-players-chance.patch => 0214-Cows-naturally-aggressive-to-players-chance.patch} (92%) rename patches/server/{0214-Option-for-beds-to-explode-on-villager-sleep.patch => 0215-Option-for-beds-to-explode-on-villager-sleep.patch} (90%) rename patches/server/{0215-Halloween-options-and-optimizations.patch => 0216-Halloween-options-and-optimizations.patch} (88%) rename patches/server/{0216-Config-for-grindstones.patch => 0217-Config-for-grindstones.patch} (96%) rename patches/server/{0217-UPnP-Port-Forwarding.patch => 0218-UPnP-Port-Forwarding.patch} (94%) rename patches/server/{0218-Campfire-option-for-lit-when-placed.patch => 0219-Campfire-option-for-lit-when-placed.patch} (96%) rename patches/server/{0219-options-to-extinguish-fire-blocks-with-snowballs.patch => 0220-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/server/{0220-Add-option-to-disable-zombie-villagers-cure.patch => 0221-Add-option-to-disable-zombie-villagers-cure.patch} (89%) rename patches/server/{0221-Persistent-BlockEntity-Lore-and-DisplayName.patch => 0222-Persistent-BlockEntity-Lore-and-DisplayName.patch} (99%) rename patches/server/{0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0223-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (98%) rename patches/server/{0223-Mobs-always-drop-experience.patch => 0224-Mobs-always-drop-experience.patch} (89%) rename patches/server/{0224-Potion-NamespacedKey.patch => 0225-Potion-NamespacedKey.patch} (100%) rename patches/server/{0225-Grindstone-API.patch => 0226-Grindstone-API.patch} (100%) rename patches/server/{0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (98%) rename patches/server/{0227-Shearing-jeb-produces-random-color-wool.patch => 0228-Shearing-jeb-produces-random-color-wool.patch} (89%) rename patches/server/{0228-Turtle-eggs-random-tick-crack-chance.patch => 0229-Turtle-eggs-random-tick-crack-chance.patch} (95%) rename patches/server/{0229-Mob-head-visibility-percent.patch => 0230-Mob-head-visibility-percent.patch} (96%) rename patches/server/{0230-Configurable-valid-characters-for-usernames.patch => 0231-Configurable-valid-characters-for-usernames.patch} (92%) rename patches/server/{0231-Shears-can-have-looting-enchantment.patch => 0232-Shears-can-have-looting-enchantment.patch} (90%) rename patches/server/{0232-Stop-bees-from-dying-after-stinging.patch => 0233-Stop-bees-from-dying-after-stinging.patch} (88%) rename patches/server/{0233-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (98%) rename patches/server/{0234-Configurable-farmland-trample-height.patch => 0235-Configurable-farmland-trample-height.patch} (97%) rename patches/server/{0235-Configurable-player-pickup-exp-delay.patch => 0236-Configurable-player-pickup-exp-delay.patch} (93%) rename patches/server/{0236-Allow-void-trading.patch => 0237-Allow-void-trading.patch} (91%) rename patches/server/{0237-Dont-eat-blocks-in-non-ticking-chunks.patch => 0238-Dont-eat-blocks-in-non-ticking-chunks.patch} (100%) rename patches/server/{0238-Configurable-phantom-size.patch => 0239-Configurable-phantom-size.patch} (91%) rename patches/server/{0239-Configurable-food-attributes.patch => 0240-Configurable-food-attributes.patch} (98%) rename patches/server/{0240-Max-joins-per-second.patch => 0241-Max-joins-per-second.patch} (94%) rename patches/server/{0241-Configurable-minimum-demand-for-trades.patch => 0242-Configurable-minimum-demand-for-trades.patch} (92%) rename patches/server/{0242-Lobotomize-stuck-villagers.patch => 0243-Lobotomize-stuck-villagers.patch} (92%) rename patches/server/{0243-Option-for-villager-display-trade-item.patch => 0244-Option-for-villager-display-trade-item.patch} (95%) rename patches/server/{0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (95%) rename patches/server/{0245-Config-for-mob-last-hurt-by-player-time.patch => 0246-Config-for-mob-last-hurt-by-player-time.patch} (93%) rename patches/server/{0246-Anvil-repair-damage-options.patch => 0247-Anvil-repair-damage-options.patch} (98%) rename patches/server/{0247-Fix-legacy-colors-in-console.patch => 0248-Fix-legacy-colors-in-console.patch} (100%) rename patches/server/{0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (96%) rename patches/server/{0249-Add-toggle-for-enchant-level-clamping.patch => 0250-Add-toggle-for-enchant-level-clamping.patch} (94%) rename patches/server/{0250-Skip-junit-tests-for-purpur-commands.patch => 0251-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0251-Implement-configurable-search-radius-for-villagers-t.patch => 0252-Implement-configurable-search-radius-for-villagers-t.patch} (91%) rename patches/server/{0252-Stonecutter-damage.patch => 0253-Stonecutter-damage.patch} (95%) rename patches/server/{0253-Configurable-damage-settings-for-magma-blocks.patch => 0254-Configurable-damage-settings-for-magma-blocks.patch} (96%) rename patches/server/{0254-Add-config-for-snow-on-blue-ice.patch => 0255-Add-config-for-snow-on-blue-ice.patch} (95%) rename patches/server/{0255-Skeletons-eat-wither-roses.patch => 0256-Skeletons-eat-wither-roses.patch} (95%) rename patches/server/{0256-Enchantment-Table-Persists-Lapis.patch => 0257-Enchantment-Table-Persists-Lapis.patch} (98%) rename patches/server/{0257-Spark-Profiler.patch => 0258-Spark-Profiler.patch} (100%) rename patches/server/{0258-Option-to-disable-kick-for-out-of-order-chat.patch => 0259-Option-to-disable-kick-for-out-of-order-chat.patch} (88%) rename patches/server/{0259-Config-for-sculk-shrieker-can_summon-state.patch => 0260-Config-for-sculk-shrieker-can_summon-state.patch} (95%) rename patches/server/{0260-Config-to-not-let-coral-die.patch => 0261-Config-to-not-let-coral-die.patch} (96%) rename patches/server/{0261-Add-local-difficulty-api.patch => 0262-Add-local-difficulty-api.patch} (100%) rename patches/server/{0262-Add-toggle-for-RNG-manipulation.patch => 0263-Add-toggle-for-RNG-manipulation.patch} (90%) rename patches/server/{0263-Send-client-custom-name-of-BE.patch => 0264-Send-client-custom-name-of-BE.patch} (100%) rename patches/server/{0264-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch => 0265-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch} (100%) rename patches/server/{0265-Allow-custom-ChatDecorators.patch => 0266-Allow-custom-ChatDecorators.patch} (90%) rename patches/server/{0266-Cache-server-motd.patch => 0267-Cache-server-motd.patch} (92%) rename patches/server/{0267-Add-more-logger-output-for-invalid-movement-kicks.patch => 0268-Add-more-logger-output-for-invalid-movement-kicks.patch} (96%) rename patches/server/{0268-Add-Bee-API.patch => 0269-Add-Bee-API.patch} (89%) rename patches/server/{0269-Debug-Marker-API.patch => 0270-Debug-Marker-API.patch} (100%) rename patches/server/{0270-mob-spawning-option-to-ignore-creative-players.patch => 0271-mob-spawning-option-to-ignore-creative-players.patch} (97%) rename patches/server/{0271-Add-skeleton-bow-accuracy-option.patch => 0272-Add-skeleton-bow-accuracy-option.patch} (92%) rename patches/server/{0272-Allay-respect-item-NBT.patch => 0273-Allay-respect-item-NBT.patch} (91%) rename patches/server/{0273-Add-death-screen-API.patch => 0274-Add-death-screen-API.patch} (100%) rename patches/server/{0274-Implement-ram-and-rambar-commands.patch => 0275-Implement-ram-and-rambar-commands.patch} (97%) rename patches/server/{0275-Add-item-packet-serialize-event.patch => 0276-Add-item-packet-serialize-event.patch} (91%) rename patches/server/{0276-Fix-MC-123848.patch => 0277-Fix-MC-123848.patch} (100%) rename patches/server/{0277-Implement-squid-colors-for-rainglow-fabric-mod.patch => 0278-Implement-squid-colors-for-rainglow-fabric-mod.patch} (94%) rename patches/server/{0278-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0279-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (97%) rename patches/server/{0279-Configurable-block-blast-resistance.patch => 0280-Configurable-block-blast-resistance.patch} (96%) rename patches/server/{0280-Configurable-block-fall-damage-modifiers.patch => 0281-Configurable-block-fall-damage-modifiers.patch} (97%) rename patches/server/{0281-Language-API.patch => 0282-Language-API.patch} (100%) rename patches/server/{0282-Milk-Keeps-Beneficial-Effects.patch => 0283-Milk-Keeps-Beneficial-Effects.patch} (89%) rename patches/server/{0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0284-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0284-Add-log-suppression-for-LibraryLoader.patch => 0285-Add-log-suppression-for-LibraryLoader.patch} (91%) rename patches/server/{0285-Allow-Transparent-Blocks-In-Enchanting-Box.patch => 0286-Allow-Transparent-Blocks-In-Enchanting-Box.patch} (94%) rename patches/server/{0286-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (96%) rename patches/server/{0287-Fire-Immunity-API.patch => 0288-Fire-Immunity-API.patch} (95%) rename patches/server/{0288-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (94%) rename patches/server/{0289-Added-got-ram-event.patch => 0290-Added-got-ram-event.patch} (86%) rename patches/server/{0290-Log-skipped-entity-s-position.patch => 0291-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0291-End-Crystal-Cramming.patch => 0292-End-Crystal-Cramming.patch} (95%) rename patches/server/{0292-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (97%) rename patches/server/{0293-Add-attribute-clamping-and-armor-limit-config.patch => 0294-Add-attribute-clamping-and-armor-limit-config.patch} (95%) rename patches/server/{0294-Config-to-remove-explosion-radius-clamp.patch => 0295-Config-to-remove-explosion-radius-clamp.patch} (95%) rename patches/server/{0295-bonemealable-sugarcane-cactus-and-netherwart.patch => 0296-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0296-Add-PreExplodeEvents.patch => 0297-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0297-Improve-output-of-plugins-command.patch => 0298-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0298-Make-GUI-Great-Again.patch => 0299-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0299-Add-mending-multiplier.patch => 0300-Add-mending-multiplier.patch} (96%) diff --git a/patches/todo/server/0008-Ridables.patch b/patches/server/0009-Ridables.patch similarity index 86% rename from patches/todo/server/0008-Ridables.patch rename to patches/server/0009-Ridables.patch index 5b1f4a48b..eae7b5d02 100644 --- a/patches/todo/server/0008-Ridables.patch +++ b/patches/server/0009-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/net/minecraft/core/BlockPos.java b/src/main/java/net/minecraft/core/BlockPos.java -index b37e0ff164a894d2033fb94bbbc2f630a0e66bcd..ac335ec4f70830c7687ac4e0aa2a6cba9cb04ae1 100644 +index 83cab746d1d6fe25c043c8aee28c39412b90c127..ec6b58dae525c81bbb1c0e2d96fbded6f00a45b5 100644 --- a/src/main/java/net/minecraft/core/BlockPos.java +++ b/src/main/java/net/minecraft/core/BlockPos.java -@@ -41,6 +41,12 @@ public class BlockPos extends Vec3i { +@@ -48,6 +48,12 @@ public class BlockPos extends Vec3i { private static final int X_OFFSET = 38; // Paper end @@ -22,10 +22,10 @@ index b37e0ff164a894d2033fb94bbbc2f630a0e66bcd..ac335ec4f70830c7687ac4e0aa2a6cba super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0f6d1c56efbab0f9b84f09f7dc27eb705f4006a9..7f37231b33d6cfbd3d10c6c5d0b3e0b96ba0ceb3 100644 +index 7fe5d22b4c9eac832646780d4b5326edaca2979e..1f08b8e81fd6dfa850ead13f2d45adb823a447ab 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1529,6 +1529,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper @@ -34,10 +34,10 @@ index 0f6d1c56efbab0f9b84f09f7dc27eb705f4006a9..7f37231b33d6cfbd3d10c6c5d0b3e0b9 this.profiler.push(() -> { return worldserver + " " + worldserver.dimension().location(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index de2d7bdd7c6f38f4d9c943162846c816bc814bd4..4ea1b4eb5e843753f02b7f683c82c82ba8a134ef 100644 +index 42d5b4ffc51da90a8f3bbec84e44ac2b0cb7b5ee..9168a02ede5b2fc924dbcf0063109f8e72d94d61 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -220,6 +220,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -223,6 +223,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public boolean hasPhysicsEvent = true; // Paper public boolean hasEntityMoveEvent = false; // Paper private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) @@ -46,10 +46,10 @@ index de2d7bdd7c6f38f4d9c943162846c816bc814bd4..4ea1b4eb5e843753f02b7f683c82c82b final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 74e2731c614e0387de8eee93af005c7c1bf109f1..055915f609d1181bbcfa2ce72e1282ace71cb45c 100644 +index 15539499b5a0f16ad2d44c39c5b824876fdf0951..dfdc50093e5d4b60438acfc12ab9f14255fa7a99 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -710,6 +710,15 @@ public class ServerPlayer extends Player { +@@ -751,6 +751,15 @@ public class ServerPlayer extends Player { this.trackStartFallingPosition(); this.trackEnteredOrExitedLavaOnVehicle(); this.advancements.flushDirty(this); @@ -66,10 +66,10 @@ index 74e2731c614e0387de8eee93af005c7c1bf109f1..055915f609d1181bbcfa2ce72e1282ac public void doTick() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 299d43f714637beb6cdce186368c4171cac74c4c..ec4891a736c5c91af7589071f87fa664983f7f72 100644 +index 67a71b0d04cc3c8239dce26c7022b18a6ff3a58c..a419308c2d71bf0e228aa7c591deb76c77eda894 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2809,6 +2809,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2804,6 +2804,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -79,10 +79,10 @@ index 299d43f714637beb6cdce186368c4171cac74c4c..ec4891a736c5c91af7589071f87fa664 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3576c00873127e9d22916156bee620ca4ad00b74..15429602894741c420cea12a0afa979ca28e5d34 100644 +index 05c3985cddae94e26fb70657c1add2f87bff8080..9b692140796eb5296a0478fd18d9b33278be6f5d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -362,7 +362,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -363,7 +363,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { private final Set tags; private final double[] pistonDeltas; private long pistonDeltasGameTime; @@ -91,7 +91,7 @@ index 3576c00873127e9d22916156bee620ca4ad00b74..15429602894741c420cea12a0afa979c private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2824,6 +2824,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2877,6 +2877,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index 3576c00873127e9d22916156bee620ca4ad00b74..15429602894741c420cea12a0afa979c this.gameEvent(GameEvent.ENTITY_MOUNT, entity); } return true; // CraftBukkit -@@ -2865,6 +2872,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2918,6 +2925,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return false; } // Spigot end @@ -120,7 +120,7 @@ index 3576c00873127e9d22916156bee620ca4ad00b74..15429602894741c420cea12a0afa979c if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4739,4 +4754,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4757,4 +4772,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -167,11 +167,11 @@ index 3576c00873127e9d22916156bee620ca4ad00b74..15429602894741c420cea12a0afa979c + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index c1e9b40a4a0f9cdc650caa88b5ea132e06ee2496..7b1ca8fd2908b8a02ec2cd1966a31e06eaa2dd1f 100644 +index 213f89b22650f43daaec01e7c301e3e8a7e98684..aa155ec559e748c9bbb6ccddaa278ea6bba7ac63 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java -@@ -23,6 +23,19 @@ public class GlowSquid extends Squid { - super(type, world); +@@ -28,6 +28,19 @@ public class GlowSquid extends Squid { + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.glowSquidMaxHealth); } + // Purpur start @@ -191,10 +191,10 @@ index c1e9b40a4a0f9cdc650caa88b5ea132e06ee2496..7b1ca8fd2908b8a02ec2cd1966a31e06 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f3d96caa83ef4a8083b78e3265282d4723e37d28..9b430f8624ba6326f54ca6e18a49f97cc9221b10 100644 +index 91309d12ae4a1157d507062b27147cdcc4053658..9d9cb6e697c4f09badc3ca121f2ef987900d65a8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -216,9 +216,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -220,9 +220,9 @@ public abstract class LivingEntity extends Entity implements Attackable { protected int deathScore; public float lastHurt; public boolean jumping; @@ -207,16 +207,16 @@ index f3d96caa83ef4a8083b78e3265282d4723e37d28..9b430f8624ba6326f54ca6e18a49f97c protected int lerpSteps; protected double lerpX; protected double lerpY; -@@ -284,7 +284,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -288,7 +288,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.effectsDirty = true; this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); - this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type)); + this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur + this.initAttributes(); // Purpur this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor - this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -335,6 +335,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -342,6 +342,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public static AttributeSupplier.Builder createLivingAttributes() { return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS); } @@ -224,38 +224,38 @@ index f3d96caa83ef4a8083b78e3265282d4723e37d28..9b430f8624ba6326f54ca6e18a49f97c @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -2652,7 +2653,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2674,7 +2675,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected long lastJumpTime = 0L; // Paper - protected void jumpFromGround() { + public void jumpFromGround() { // Purpur - protected -> public - double d0 = (double) this.getJumpPower() + this.getJumpBoostPower(); Vec3 vec3d = this.getDeltaMovement(); // Paper start -@@ -3416,8 +3417,10 @@ public abstract class LivingEntity extends Entity implements Attackable { + long time = System.nanoTime(); +@@ -3446,8 +3447,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); - this.level.getProfiler().pop(); + this.level().getProfiler().pop(); // Paper start -- if (((ServerLevel) this.level).hasEntityMoveEvent && !(this instanceof net.minecraft.world.entity.player.Player)) { -- if (this.xo != getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { +- if (((ServerLevel) this.level()).hasEntityMoveEvent && !(this instanceof net.minecraft.world.entity.player.Player)) { +- if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { + // Purpur start + if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { -+ if (((ServerLevel) this.level).hasEntityMoveEvent && !(this instanceof net.minecraft.world.entity.player.Player)) { ++ if (((ServerLevel) this.level()).hasEntityMoveEvent && !(this instanceof net.minecraft.world.entity.player.Player)) { + // Purpur end - Location from = new Location(this.level.getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); - Location to = new Location (this.level.getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); + Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); + Location to = new Location (this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3427,6 +3430,21 @@ public abstract class LivingEntity extends Entity implements Attackable { - absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); +@@ -3457,6 +3460,21 @@ public abstract class LivingEntity extends Entity implements Attackable { + this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } + // Purpur start + if (getRider() != null) { + getRider().resetLastActionTime(); -+ if (((ServerLevel) level).hasRidableMoveEvent && this instanceof Mob) { -+ Location from = new Location(level.getWorld(), xo, yo, zo, this.yRotO, this.xRotO); -+ Location to = new Location(level.getWorld(), getX(), getY(), getZ(), this.getYRot(), this.getXRot()); ++ if (((ServerLevel) level()).hasRidableMoveEvent && this instanceof Mob) { ++ Location from = new Location(level().getWorld(), xo, yo, zo, this.yRotO, this.xRotO); ++ Location to = new Location(level().getWorld(), getX(), getY(), getZ(), this.getYRot(), this.getXRot()); + org.purpurmc.purpur.event.entity.RidableMoveEvent event = new org.purpurmc.purpur.event.entity.RidableMoveEvent((org.bukkit.entity.Mob) getBukkitLivingEntity(), (Player) getRider().getBukkitEntity(), from, to.clone()); + if (!event.callEvent()) { + absMoveTo(from.getX(), from.getY(), from.getZ(), from.getYaw(), from.getPitch()); @@ -267,12 +267,12 @@ index f3d96caa83ef4a8083b78e3265282d4723e37d28..9b430f8624ba6326f54ca6e18a49f97c + // Purpur end } // Paper end - if (!this.level.isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { + if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 636e601b004a412d02e5be86e97d489b52c28e1b..f6ec6a249b4559e681382c9690ddc7b9e17c9efb 100644 +index e2a25c29ec74147b3e66aa0b3deb85a8f6ee53a5..d8fc6216067cd03e10ec0bb5c13abc85215ac822 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -146,8 +146,8 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -145,8 +145,8 @@ public abstract class Mob extends LivingEntity implements Targeting { this.restrictRadius = -1.0F; this.goalSelector = new GoalSelector(world.getProfilerSupplier()); this.targetSelector = new GoalSelector(world.getProfilerSupplier()); @@ -283,7 +283,7 @@ index 636e601b004a412d02e5be86e97d489b52c28e1b..f6ec6a249b4559e681382c9690ddc7b9 this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(world); -@@ -1378,7 +1378,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1375,7 +1375,7 @@ public abstract class Mob extends LivingEntity implements Targeting { protected void onOffspringSpawnedFromEgg(Player player, Mob child) {} protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -292,7 +292,7 @@ index 636e601b004a412d02e5be86e97d489b52c28e1b..f6ec6a249b4559e681382c9690ddc7b9 } public boolean isWithinRestriction() { -@@ -1754,4 +1754,56 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1753,4 +1753,56 @@ public abstract class Mob extends LivingEntity implements Targeting { return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg); } @@ -350,13 +350,13 @@ index 636e601b004a412d02e5be86e97d489b52c28e1b..f6ec6a249b4559e681382c9690ddc7b9 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index e283eb57c25f7de222f9d09dca851169f5f6e488..210a0bee1227e4671909dd553ab22027cfc868fb 100644 +index dd1102d5291ef6f18e82400a6d8a0a376cc071e9..9932a801be1bde1c57697396c097fb47a6b26ede 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -@@ -24,14 +24,21 @@ public class AttributeMap { +@@ -23,13 +23,20 @@ public class AttributeMap { + private final Map attributes = Maps.newHashMap(); private final Set dirtyAttributes = Sets.newHashSet(); private final AttributeSupplier supplier; - private final java.util.function.Function createInstance; // Pufferfish + private final net.minecraft.world.entity.LivingEntity entity; // Purpur public AttributeMap(AttributeSupplier defaultAttributes) { @@ -367,7 +367,6 @@ index e283eb57c25f7de222f9d09dca851169f5f6e488..210a0bee1227e4671909dd553ab22027 + this.entity = entity; + // Purpur end this.supplier = defaultAttributes; - this.createInstance = attribute -> this.supplier.createInstance(this::onAttributeModified, attribute); // Pufferfish } private void onAttributeModified(AttributeInstance instance) { @@ -376,7 +375,7 @@ index e283eb57c25f7de222f9d09dca851169f5f6e488..210a0bee1227e4671909dd553ab22027 this.dirtyAttributes.add(instance); } -@@ -43,7 +50,7 @@ public class AttributeMap { +@@ -41,7 +48,7 @@ public class AttributeMap { public Collection getSyncableAttributes() { return this.attributes.values().stream().filter((attribute) -> { @@ -480,7 +479,7 @@ index 8a720f9ae81d7ea856e28cb27a66adcf04bcb0eb..e0b70d9732a2b7d96999b7e4a497ffa1 public static AttributeSupplier getSupplier(EntityType type) { return SUPPLIERS.get(type); diff --git a/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java b/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java -index 3d7586142aa5116964e4fffc6198f55fc6da324b..b4fb0af5bffffb9f0de3a2452c22b09fe92d7129 100644 +index 03d77c6d4697d4934ca65e3329982f0efe089820..ce7e3e90993b76225dc820a21e04267e488f5f7b 100644 --- a/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java +++ b/src/main/java/net/minecraft/world/entity/ai/control/MoveControl.java @@ -29,6 +29,20 @@ public class MoveControl implements Control { @@ -505,7 +504,7 @@ index 3d7586142aa5116964e4fffc6198f55fc6da324b..b4fb0af5bffffb9f0de3a2452c22b09f return this.operation == MoveControl.Operation.MOVE_TO; } diff --git a/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java b/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java -index 7df56705a4a0de2dc4ff7ab133fc26612c219162..60d21d6171b9af20a4c6fcc0d564a31aaa4ecdba 100644 +index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e56f24563f 100644 --- a/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java +++ b/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java @@ -3,7 +3,7 @@ package net.minecraft.world.entity.ai.control; @@ -526,20 +525,8 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..60d21d6171b9af20a4c6fcc0d564a31a if (this.lookAtCooldown > 0) { --this.lookAtCooldown; this.getYRotD().ifPresent((yaw) -> { -@@ -32,9 +32,9 @@ public class SmoothSwimmingLookControl extends LookControl { - } - - float f = Mth.wrapDegrees(this.mob.yHeadRot - this.mob.yBodyRot); -- if (f < (float)(-this.maxYRotFromCenter)) { -+ if (f < (float) (-this.maxYRotFromCenter)) { - this.mob.yBodyRot -= 4.0F; -- } else if (f > (float)this.maxYRotFromCenter) { -+ } else if (f > (float) this.maxYRotFromCenter) { - this.mob.yBodyRot += 4.0F; - } - diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 59338d739b6130f667d151bc27646c4a346886a2..29bfea3c4f92033aed1de1cf159d61b38708a281 100644 +index eb6ced824d024a6402772e4df56e867e18fae988..052304db93aa2996d292df6b5d1e8593351239e4 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -18,6 +18,7 @@ import net.minecraft.world.entity.EntityDimensions; @@ -635,7 +622,7 @@ index 59338d739b6130f667d151bc27646c4a346886a2..29bfea3c4f92033aed1de1cf159d61b3 BlockPos blockposition = this.blockPosition(); BlockPos blockposition1 = blockposition.above(); diff --git a/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java b/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java -index 1f85f34c1e50f34fb270d2fac7d307c82a550bfa..324f52edd95b5f9a498e46def8c14435cfd00abb 100644 +index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a9852e10d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java @@ -94,7 +94,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @@ -691,7 +678,7 @@ index 1f85f34c1e50f34fb270d2fac7d307c82a550bfa..324f52edd95b5f9a498e46def8c14435 double d = this.wantedX - this.fish.getX(); double e = this.wantedY - this.fish.getY(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index c33e5c51839c8e6ec04c1b302127d2bf0f48664c..9881c77aca7a0b25d1dda9c5a89c367df516743f 100644 +index cd960eaeb3b86177b962db69173112f746bc52e1..5c1d0546c014c3a739311c8a8432e5cd1d8cacbc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -43,6 +43,7 @@ import net.minecraft.world.entity.EntityType; @@ -702,7 +689,7 @@ index c33e5c51839c8e6ec04c1b302127d2bf0f48664c..9881c77aca7a0b25d1dda9c5a89c367d import net.minecraft.world.entity.NeutralMob; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.Pose; -@@ -143,6 +144,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -142,6 +143,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public Bee(EntityType type, Level world) { super(type, world); this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(this.random, 20, 60); @@ -710,7 +697,7 @@ index c33e5c51839c8e6ec04c1b302127d2bf0f48664c..9881c77aca7a0b25d1dda9c5a89c367d // Paper start - apply gravity to bees when they get stuck in the void, fixes MC-167279 class BeeFlyingMoveControl extends FlyingMoveControl { public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) { -@@ -151,11 +153,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -150,11 +152,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override public void tick() { @@ -720,7 +707,7 @@ index c33e5c51839c8e6ec04c1b302127d2bf0f48664c..9881c77aca7a0b25d1dda9c5a89c367d + return; + } + // Purpur end - if (this.mob.getY() <= Bee.this.level.getMinBuildHeight()) { + if (this.mob.getY() <= Bee.this.level().getMinBuildHeight()) { this.mob.setNoGravity(false); } super.tick(); @@ -735,29 +722,29 @@ index c33e5c51839c8e6ec04c1b302127d2bf0f48664c..9881c77aca7a0b25d1dda9c5a89c367d } this.moveControl = new BeeFlyingMoveControl(this, 20, true); // Paper end -@@ -167,6 +182,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -166,6 +181,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); } + // Purpur start + @Override + public boolean isRidable() { -+ return level.purpurConfig.beeRidable; ++ return level().purpurConfig.beeRidable; + } + + @Override + public boolean dismountsUnderwater() { -+ return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.beeRidableInWater; ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.beeRidableInWater; + } + + @Override + public boolean isControllable() { -+ return level.purpurConfig.beeControllable; ++ return level().purpurConfig.beeControllable; + } + + @Override + public double getMaxY() { -+ return level.purpurConfig.beeMaxY; ++ return level().purpurConfig.beeMaxY; + } + + @Override @@ -776,7 +763,7 @@ index c33e5c51839c8e6ec04c1b302127d2bf0f48664c..9881c77aca7a0b25d1dda9c5a89c367d @Override protected void defineSynchedData() { super.defineSynchedData(); -@@ -181,6 +230,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -180,6 +229,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override protected void registerGoals() { @@ -784,7 +771,7 @@ index c33e5c51839c8e6ec04c1b302127d2bf0f48664c..9881c77aca7a0b25d1dda9c5a89c367d this.goalSelector.addGoal(0, new Bee.BeeAttackGoal(this, 1.399999976158142D, true)); this.goalSelector.addGoal(1, new Bee.BeeEnterHiveGoal()); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); -@@ -196,6 +246,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -195,6 +245,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.goalSelector.addGoal(7, new Bee.BeeGrowCropGoal()); this.goalSelector.addGoal(8, new Bee.BeeWanderGoal()); this.goalSelector.addGoal(9, new FloatGoal(this)); @@ -792,7 +779,7 @@ index c33e5c51839c8e6ec04c1b302127d2bf0f48664c..9881c77aca7a0b25d1dda9c5a89c367d this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0])); this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this)); this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -878,16 +929,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -882,16 +933,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -813,11 +800,11 @@ index c33e5c51839c8e6ec04c1b302127d2bf0f48664c..9881c77aca7a0b25d1dda9c5a89c367d } diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 72b30a5cdeb8a43702d9ab5f198311929761fad1..a708cacf755ce82042452558bef3140361b945c2 100644 +index 3981a2b7501ceb62562785b2ace5990473919fa0..845781610102d2ef89522619b8059073cc48b75d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -97,6 +97,31 @@ public class Cat extends TamableAnimal implements VariantHolder { - super(type, world); +@@ -102,6 +102,31 @@ public class Cat extends TamableAnimal implements VariantHolder { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.catMaxHealth); } + // Purpur start @@ -848,7 +835,7 @@ index 72b30a5cdeb8a43702d9ab5f198311929761fad1..a708cacf755ce82042452558bef31403 public ResourceLocation getResourceLocation() { return this.getVariant().texture(); } -@@ -105,6 +130,7 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -110,6 +135,7 @@ public class Cat extends TamableAnimal implements VariantHolder { protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6D, Cat.TEMPT_INGREDIENT, true); this.goalSelector.addGoal(1, new FloatGoal(this)); @@ -856,7 +843,7 @@ index 72b30a5cdeb8a43702d9ab5f198311929761fad1..a708cacf755ce82042452558bef31403 this.goalSelector.addGoal(1, new PanicGoal(this, 1.5D)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Cat.CatRelaxOnOwnerGoal(this)); -@@ -117,6 +143,7 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -122,6 +148,7 @@ public class Cat extends TamableAnimal implements VariantHolder { this.goalSelector.addGoal(10, new BreedGoal(this, 0.8D)); this.goalSelector.addGoal(11, new WaterAvoidingRandomStrollGoal(this, 0.8D, 1.0000001E-5F)); this.goalSelector.addGoal(12, new LookAtPlayerGoal(this, Player.class, 10.0F)); @@ -864,7 +851,7 @@ index 72b30a5cdeb8a43702d9ab5f198311929761fad1..a708cacf755ce82042452558bef31403 this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Rabbit.class, false, (Predicate) null)); this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -373,6 +400,7 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -378,6 +405,7 @@ public class Cat extends TamableAnimal implements VariantHolder { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -873,11 +860,11 @@ index 72b30a5cdeb8a43702d9ab5f198311929761fad1..a708cacf755ce82042452558bef31403 Item item = itemstack.getItem(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index b4dc621cb1be7cb4bf1cb31f921d4e9f6cffef88..a2c72f9c90aa95d50ee9fb0e278171a6a0cee2a5 100644 +index c7ff22ee963e3d7ca3c5b819b38cca466c5d78c5..cbaf7993adb03cdb61c8e0cb29a7362b63ae3914 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -54,9 +54,27 @@ public class Chicken extends Animal { - this.setPathfindingMalus(BlockPathTypes.WATER, 0.0F); +@@ -59,9 +59,27 @@ public class Chicken extends Animal { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.chickenMaxHealth); } + // Purpur start @@ -905,11 +892,11 @@ index b4dc621cb1be7cb4bf1cb31f921d4e9f6cffef88..a2c72f9c90aa95d50ee9fb0e278171a6 this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, Chicken.FOOD_ITEMS, false)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cod.java b/src/main/java/net/minecraft/world/entity/animal/Cod.java -index 824e5e4fe7619ae46061c3c978c9a044db8c84ab..718b064fa3fb3d1a00f786ff839c91ce88ae4f70 100644 +index 3e213264f5991ccfcb5c207621334b8e9d6cc9bc..d6a9281208f6462628e5e9547c40590a42be89d0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cod.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cod.java -@@ -13,6 +13,18 @@ public class Cod extends AbstractSchoolingFish { - super(type, world); +@@ -18,6 +18,18 @@ public class Cod extends AbstractSchoolingFish { + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.codMaxHealth); } + // Purpur start @@ -928,11 +915,11 @@ index 824e5e4fe7619ae46061c3c978c9a044db8c84ab..718b064fa3fb3d1a00f786ff839c91ce public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index abae850f5babfd75c7547e88fb7637e9775991d3..2424ff760fc7dd91962e070f373ebf8e21f41b7d 100644 +index 2f45444ad13e5ef3619788b19ec9c16be1f87950..9a973e2dc94aa1c8928eea87a6a12789381d15d8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -41,9 +41,27 @@ public class Cow extends Animal { - super(type, world); +@@ -46,9 +46,27 @@ public class Cow extends Animal { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.cowMaxHealth); } + // Purpur start @@ -959,7 +946,7 @@ index abae850f5babfd75c7547e88fb7637e9775991d3..2424ff760fc7dd91962e070f373ebf8e this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); -@@ -84,6 +102,7 @@ public class Cow extends Animal { +@@ -89,6 +107,7 @@ public class Cow extends Animal { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -967,8 +954,8 @@ index abae850f5babfd75c7547e88fb7637e9775991d3..2424ff760fc7dd91962e070f373ebf8e ItemStack itemstack = player.getItemInHand(hand); if (itemstack.is(Items.BUCKET) && !this.isBaby()) { -@@ -91,7 +110,7 @@ public class Cow extends Animal { - org.bukkit.event.player.PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent((ServerLevel) player.level, player, this.blockPosition(), this.blockPosition(), null, itemstack, Items.MILK_BUCKET, hand); +@@ -96,7 +115,7 @@ public class Cow extends Animal { + org.bukkit.event.player.PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent((ServerLevel) player.level(), player, this.blockPosition(), this.blockPosition(), null, itemstack, Items.MILK_BUCKET, hand); if (event.isCancelled()) { - return InteractionResult.PASS; @@ -977,10 +964,10 @@ index abae850f5babfd75c7547e88fb7637e9775991d3..2424ff760fc7dd91962e070f373ebf8e // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index e93abb02744b5cd8db88e01b6ccf145498903b11..106caca10bdd8dd546b6de24594afe236c8f7ce8 100644 +index 376fe57c3518d42c887726338b15f59d072d8d87..d8395f47cdf5ceffc1c65442e9d632847d22cca6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -78,14 +78,82 @@ public class Dolphin extends WaterAnimal { +@@ -78,10 +78,42 @@ public class Dolphin extends WaterAnimal { public static final Predicate ALLOWED_ITEMS = (entityitem) -> { return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); }; @@ -1024,6 +1011,9 @@ index e93abb02744b5cd8db88e01b6ccf145498903b11..106caca10bdd8dd546b6de24594afe23 this.lookControl = new SmoothSwimmingLookControl(this, 10); this.setCanPickUpLoot(true); } +@@ -91,6 +123,42 @@ public class Dolphin extends WaterAnimal { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.dolphinMaxHealth); + } + // Purpur start + @Override @@ -1064,7 +1054,7 @@ index e93abb02744b5cd8db88e01b6ccf145498903b11..106caca10bdd8dd546b6de24594afe23 @Nullable @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -@@ -160,6 +228,7 @@ public class Dolphin extends WaterAnimal { +@@ -165,6 +233,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -1072,7 +1062,7 @@ index e93abb02744b5cd8db88e01b6ccf145498903b11..106caca10bdd8dd546b6de24594afe23 this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0D, 10)); -@@ -170,6 +239,7 @@ public class Dolphin extends WaterAnimal { +@@ -175,6 +244,7 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal()); this.goalSelector.addGoal(8, new FollowBoatGoal(this)); this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D)); @@ -1080,7 +1070,7 @@ index e93abb02744b5cd8db88e01b6ccf145498903b11..106caca10bdd8dd546b6de24594afe23 this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers()); } -@@ -221,7 +291,7 @@ public class Dolphin extends WaterAnimal { +@@ -226,7 +296,7 @@ public class Dolphin extends WaterAnimal { @Override protected boolean canRide(Entity entity) { @@ -1089,7 +1079,7 @@ index e93abb02744b5cd8db88e01b6ccf145498903b11..106caca10bdd8dd546b6de24594afe23 } @Override -@@ -256,6 +326,11 @@ public class Dolphin extends WaterAnimal { +@@ -261,6 +331,11 @@ public class Dolphin extends WaterAnimal { @Override public void tick() { super.tick(); @@ -1102,27 +1092,27 @@ index e93abb02744b5cd8db88e01b6ccf145498903b11..106caca10bdd8dd546b6de24594afe23 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 89894bc6a55bc7e456a9d49ac48f6a8192b890ae..eb7f96f7b1583dfeb8e57a1984ed8cabeac0a2fe 100644 +index b75c942e212e6659723c4fea3f06f85a627096f0..b143032e87ecd74203e6486eea1248a3f6ce13f1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -141,6 +141,44 @@ public class Fox extends Animal implements VariantHolder { - this.setCanPickUpLoot(true); +@@ -146,6 +146,44 @@ public class Fox extends Animal implements VariantHolder { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.foxMaxHealth); } + // Purpur start + @Override + public boolean isRidable() { -+ return level.purpurConfig.foxRidable; ++ return level().purpurConfig.foxRidable; + } + + @Override + public boolean dismountsUnderwater() { -+ return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.foxRidableInWater; ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.foxRidableInWater; + } + + @Override + public boolean isControllable() { -+ return level.purpurConfig.foxControllable; ++ return level().purpurConfig.foxControllable; + } + + @Override @@ -1150,15 +1140,15 @@ index 89894bc6a55bc7e456a9d49ac48f6a8192b890ae..eb7f96f7b1583dfeb8e57a1984ed8cab @Override protected void defineSynchedData() { super.defineSynchedData(); -@@ -160,6 +198,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -165,6 +203,7 @@ public class Fox extends Animal implements VariantHolder { return entityliving instanceof AbstractSchoolingFish; }); this.goalSelector.addGoal(0, new Fox.FoxFloatGoal()); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(0, new ClimbOnTopOfPowderSnowGoal(this, this.level)); + this.goalSelector.addGoal(0, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Fox.FaceplantGoal()); this.goalSelector.addGoal(2, new Fox.FoxPanicGoal(2.2D)); -@@ -186,6 +225,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -191,6 +230,7 @@ public class Fox extends Animal implements VariantHolder { this.goalSelector.addGoal(11, new Fox.FoxSearchForItemsGoal()); this.goalSelector.addGoal(12, new Fox.FoxLookAtPlayerGoal(this, Player.class, 24.0F)); this.goalSelector.addGoal(13, new Fox.PerchAndSearchGoal()); @@ -1166,7 +1156,7 @@ index 89894bc6a55bc7e456a9d49ac48f6a8192b890ae..eb7f96f7b1583dfeb8e57a1984ed8cab this.targetSelector.addGoal(3, new Fox.DefendTrustedTargetGoal(LivingEntity.class, false, false, (entityliving) -> { return Fox.TRUSTED_TARGET_SELECTOR.test(entityliving) && !this.trusts(entityliving.getUUID()); })); -@@ -758,16 +798,16 @@ public class Fox extends Animal implements VariantHolder { +@@ -763,16 +803,16 @@ public class Fox extends Animal implements VariantHolder { return new Vec3(0.0D, (double) (0.55F * this.getEyeHeight()), (double) (this.getBbWidth() * 0.4F)); } @@ -1186,7 +1176,7 @@ index 89894bc6a55bc7e456a9d49ac48f6a8192b890ae..eb7f96f7b1583dfeb8e57a1984ed8cab } } -@@ -778,16 +818,16 @@ public class Fox extends Animal implements VariantHolder { +@@ -783,16 +823,16 @@ public class Fox extends Animal implements VariantHolder { } } @@ -1207,10 +1197,10 @@ index 89894bc6a55bc7e456a9d49ac48f6a8192b890ae..eb7f96f7b1583dfeb8e57a1984ed8cab } diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 4fbbd74cda7e4f2c623db46c2c94d9697ca5df05..44db31b9f93970a65735eab4850dc799e6bdf002 100644 +index 4bdef5dd01b69ff64f632a71096c1a87b2fc1195..1a4992dbe62b908b21f6b44b39a55237e7127cde 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -69,8 +69,27 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -66,6 +66,23 @@ public class IronGolem extends AbstractGolem implements NeutralMob { this.setMaxUpStep(1.0F); } @@ -1231,6 +1221,11 @@ index 4fbbd74cda7e4f2c623db46c2c94d9697ca5df05..44db31b9f93970a65735eab4850dc799 + } + // Purpur end + + @Override + public void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ironGolemMaxHealth); +@@ -73,6 +90,8 @@ public class IronGolem extends AbstractGolem implements NeutralMob { + @Override protected void registerGoals() { + if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur @@ -1238,7 +1233,7 @@ index 4fbbd74cda7e4f2c623db46c2c94d9697ca5df05..44db31b9f93970a65735eab4850dc799 this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false)); -@@ -78,6 +97,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -80,6 +99,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { this.goalSelector.addGoal(5, new OfferFlowerGoal(this)); this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); @@ -1246,7 +1241,7 @@ index 4fbbd74cda7e4f2c623db46c2c94d9697ca5df05..44db31b9f93970a65735eab4850dc799 this.targetSelector.addGoal(1, new DefendVillageTargetGoal(this)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); -@@ -279,13 +299,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -275,13 +295,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { ItemStack itemstack = player.getItemInHand(hand); if (!itemstack.is(Items.IRON_INGOT)) { @@ -1263,11 +1258,11 @@ index 4fbbd74cda7e4f2c623db46c2c94d9697ca5df05..44db31b9f93970a65735eab4850dc799 float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 68a5ee85e64802e4509ba0d184fc0ceb3cbe2d11..b27e7381db833f4583a32b4276caddf277f5d25c 100644 +index 9e5a1d8a406ad43d762f421a2589f649402b6f7d..2eac9d3c1069f79c3fcbfb87518b5d5d1e17c6dd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -63,6 +63,23 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder> optional = this.getEffectFromItemStack(itemstack); if (!optional.isPresent()) { @@ -1309,11 +1304,11 @@ index 68a5ee85e64802e4509ba0d184fc0ceb3cbe2d11..b27e7381db833f4583a32b4276caddf2 Pair pair = (Pair) optional.get(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index f889e86bd6355ed72b85bf322d09ac2be4fb4954..04bb867096f6d8203ec5058f9958704f8efada71 100644 +index 68b5a8c608fea6fa110313a6353471e758655e27..1561ee4f27f05adfbb4a0a838615ce47e4bf84c8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -68,6 +68,23 @@ public class Ocelot extends Animal { - this.reassessTrustingGoals(); +@@ -73,6 +73,23 @@ public class Ocelot extends Animal { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ocelotMaxHealth); } + // Purpur start @@ -1336,7 +1331,7 @@ index f889e86bd6355ed72b85bf322d09ac2be4fb4954..04bb867096f6d8203ec5058f9958704f public boolean isTrusting() { return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } -@@ -99,12 +116,14 @@ public class Ocelot extends Animal { +@@ -104,12 +121,14 @@ public class Ocelot extends Animal { protected void registerGoals() { this.temptGoal = new Ocelot.OcelotTemptGoal(this, 0.6D, Ocelot.TEMPT_INGREDIENT, true); this.goalSelector.addGoal(1, new FloatGoal(this)); @@ -1352,11 +1347,11 @@ index f889e86bd6355ed72b85bf322d09ac2be4fb4954..04bb867096f6d8203ec5058f9958704f this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 9c1e02c3a990cd0f8bba1c84c170b438278c02a7..5212e531d500fa7272561fea4fc62d15a077c7d6 100644 +index 1ce3b2d3b69b702155ac344482d588be738edf8d..e1b4092d245c4e30f8a028378b16f480a710d274 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java -@@ -108,6 +108,32 @@ public class Panda extends Animal { - +@@ -114,6 +114,32 @@ public class Panda extends Animal { + setAttributes(); } + // Purpur start @@ -1388,7 +1383,7 @@ index 9c1e02c3a990cd0f8bba1c84c170b438278c02a7..5212e531d500fa7272561fea4fc62d15 @Override public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); -@@ -269,6 +295,7 @@ public class Panda extends Animal { +@@ -275,6 +301,7 @@ public class Panda extends Animal { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1396,7 +1391,7 @@ index 9c1e02c3a990cd0f8bba1c84c170b438278c02a7..5212e531d500fa7272561fea4fc62d15 this.goalSelector.addGoal(2, new Panda.PandaPanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new Panda.PandaBreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new Panda.PandaAttackGoal(this, 1.2000000476837158D, true)); -@@ -284,6 +311,7 @@ public class Panda extends Animal { +@@ -290,6 +317,7 @@ public class Panda extends Animal { this.goalSelector.addGoal(12, new Panda.PandaRollGoal(this)); this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0D)); @@ -1404,7 +1399,7 @@ index 9c1e02c3a990cd0f8bba1c84c170b438278c02a7..5212e531d500fa7272561fea4fc62d15 this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0])); } -@@ -630,7 +658,7 @@ public class Panda extends Animal { +@@ -639,7 +667,7 @@ public class Panda extends Animal { ItemStack itemstack = player.getItemInHand(hand); if (this.isScared()) { @@ -1412,17 +1407,17 @@ index 9c1e02c3a990cd0f8bba1c84c170b438278c02a7..5212e531d500fa7272561fea4fc62d15 + return tryRide(player, hand); // Purpur } else if (this.isOnBack()) { this.setOnBack(false); - return InteractionResult.sidedSuccess(this.level.isClientSide); -@@ -647,7 +675,7 @@ public class Panda extends Animal { + return InteractionResult.sidedSuccess(this.level().isClientSide); +@@ -656,7 +684,7 @@ public class Panda extends Animal { this.setInLove(player); } else { - if (this.level.isClientSide || this.isSitting() || this.isInWater()) { + if (this.level().isClientSide || this.isSitting() || this.isInWater()) { - return InteractionResult.PASS; + return tryRide(player, hand); // Purpur } this.tryToSit(); -@@ -666,7 +694,7 @@ public class Panda extends Animal { +@@ -675,7 +703,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS; } else { @@ -1431,7 +1426,7 @@ index 9c1e02c3a990cd0f8bba1c84c170b438278c02a7..5212e531d500fa7272561fea4fc62d15 } } -@@ -706,7 +734,7 @@ public class Panda extends Animal { +@@ -715,7 +743,7 @@ public class Panda extends Animal { return !this.isOnBack() && !this.isScared() && !this.isEating() && !this.isRolling() && !this.isSitting(); } @@ -1440,7 +1435,7 @@ index 9c1e02c3a990cd0f8bba1c84c170b438278c02a7..5212e531d500fa7272561fea4fc62d15 private final Panda panda; -@@ -716,9 +744,9 @@ public class Panda extends Animal { +@@ -725,9 +753,9 @@ public class Panda extends Animal { } @Override @@ -1453,10 +1448,10 @@ index 9c1e02c3a990cd0f8bba1c84c170b438278c02a7..5212e531d500fa7272561fea4fc62d15 } } diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index e6e40770acf71b9079e8f6ac07025319dd8e2e4e..644324e05f5bc82beb911a65085a1b8dbf7259ab 100644 +index 55fd983a41714a6cf8af950d0222bb70ab38ced4..d32fdd557fff9b99835c97967a49455da7872237 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -129,12 +129,68 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder type, Level world) { super(type, world); @@ -1487,6 +1482,8 @@ index e6e40770acf71b9079e8f6ac07025319dd8e2e4e..644324e05f5bc82beb911a65085a1b8d this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, -1.0F); this.setPathfindingMalus(BlockPathTypes.COCOA, -1.0F); +@@ -140,6 +162,40 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder type, Level world) { super(type, world); +@@ -70,6 +71,34 @@ public class PolarBear extends Animal implements NeutralMob { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.polarBearMaxHealth); } + // Purpur start @@ -1615,7 +1614,7 @@ index 41123a1ec1b410428d804c6f80fa969c4946608f..16ee121aa80656d33ffdf82dc81679ab @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { -@@ -80,12 +109,14 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -85,12 +114,14 @@ public class PolarBear extends Animal implements NeutralMob { protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1630,8 +1629,8 @@ index 41123a1ec1b410428d804c6f80fa969c4946608f..16ee121aa80656d33ffdf82dc81679ab this.targetSelector.addGoal(1, new PolarBear.PolarBearHurtByTargetGoal()); this.targetSelector.addGoal(2, new PolarBear.PolarBearAttackPlayersGoal()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); -@@ -202,6 +233,11 @@ public class PolarBear extends Animal implements NeutralMob { - this.updatePersistentAnger((ServerLevel)this.level, true); +@@ -207,6 +238,11 @@ public class PolarBear extends Animal implements NeutralMob { + this.updatePersistentAnger((ServerLevel)this.level(), true); } + // Purpur start @@ -1642,7 +1641,7 @@ index 41123a1ec1b410428d804c6f80fa969c4946608f..16ee121aa80656d33ffdf82dc81679ab } @Override -@@ -231,6 +267,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -236,6 +272,7 @@ public class PolarBear extends Animal implements NeutralMob { public void setStanding(boolean warning) { this.entityData.set(DATA_STANDING_ID, warning); @@ -1651,11 +1650,11 @@ index 41123a1ec1b410428d804c6f80fa969c4946608f..16ee121aa80656d33ffdf82dc81679ab public float getStandingAnimationScale(float tickDelta) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java -index 9aa5aa0d66257bf1413a904c516293aea30d2ca8..1190a22f03aaf7f2c3b53bdfd9afac00200f77f4 100644 +index 86270f51c69836ba88c08de6ad36bacf2c433b3f..5ee99fcf9201187dd2083ca9ab63832e6c58b7a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java -@@ -45,6 +45,18 @@ public class Pufferfish extends AbstractFish { - this.refreshDimensions(); +@@ -50,6 +50,18 @@ public class Pufferfish extends AbstractFish { + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.pufferfishMaxHealth); } + // Purpur start @@ -1674,7 +1673,7 @@ index 9aa5aa0d66257bf1413a904c516293aea30d2ca8..1190a22f03aaf7f2c3b53bdfd9afac00 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 2e75066db6cf4903f04428b73c4e868988776920..a465925fdef618110bbf997b8ab43ed4e601cb6d 100644 +index 1cb36eb937084c6dbc72d33e51c52af6f14c885d..c43bb09caa560e9ea4596b5bb167e1273e599ed7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java @@ -83,6 +83,7 @@ public class Rabbit extends Animal implements VariantHolder { @@ -1685,24 +1684,24 @@ index 2e75066db6cf4903f04428b73c4e868988776920..a465925fdef618110bbf997b8ab43ed4 public Rabbit(EntityType type, Level world) { super(type, world); -@@ -91,6 +92,51 @@ public class Rabbit extends Animal implements VariantHolder { - this.initializePathFinderGoals(); // CraftBukkit - moved code +@@ -96,6 +97,51 @@ public class Rabbit extends Animal implements VariantHolder { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.rabbitMaxHealth); } + // Purpur start + @Override + public boolean isRidable() { -+ return level.purpurConfig.rabbitRidable; ++ return level().purpurConfig.rabbitRidable; + } + + @Override + public boolean dismountsUnderwater() { -+ return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.rabbitRidableInWater; ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.rabbitRidableInWater; + } + + @Override + public boolean isControllable() { -+ return level.purpurConfig.rabbitControllable; ++ return level().purpurConfig.rabbitControllable; + } + + @Override @@ -1737,18 +1736,19 @@ index 2e75066db6cf4903f04428b73c4e868988776920..a465925fdef618110bbf997b8ab43ed4 // CraftBukkit start - code from constructor public void initializePathFinderGoals(){ this.setSpeedModifier(0.0D); -@@ -100,6 +146,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -105,6 +151,7 @@ public class Rabbit extends Animal implements VariantHolder { @Override public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level)); + this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Rabbit.RabbitPanicGoal(this, 2.2D)); this.goalSelector.addGoal(2, new BreedGoal(this, 0.8D)); -@@ -114,6 +161,13 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -119,6 +166,14 @@ public class Rabbit extends Animal implements VariantHolder { @Override protected float getJumpPower() { ++ // Purpur start + if (getRider() != null && this.isControllable()) { + if (getForwardMot() < 0) { + setSpeed(getForwardMot() * 2F); @@ -1756,10 +1756,10 @@ index 2e75066db6cf4903f04428b73c4e868988776920..a465925fdef618110bbf997b8ab43ed4 + return actualJump ? 0.5F : 0.3F; + } + // Purpur end - if (!this.horizontalCollision && (!this.moveControl.hasWanted() || this.moveControl.getWantedY() <= this.getY() + 0.5D)) { - Path pathentity = this.navigation.getPath(); + float f = 0.3F; -@@ -132,7 +186,7 @@ public class Rabbit extends Animal implements VariantHolder { + if (this.horizontalCollision || this.moveControl.hasWanted() && this.moveControl.getWantedY() > this.getY() + 0.5D) { +@@ -143,7 +198,7 @@ public class Rabbit extends Animal implements VariantHolder { } @Override @@ -1768,7 +1768,7 @@ index 2e75066db6cf4903f04428b73c4e868988776920..a465925fdef618110bbf997b8ab43ed4 super.jumpFromGround(); double d0 = this.moveControl.getSpeedModifier(); -@@ -182,6 +236,13 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -193,6 +248,13 @@ public class Rabbit extends Animal implements VariantHolder { @Override public void customServerAiStep() { @@ -1782,7 +1782,7 @@ index 2e75066db6cf4903f04428b73c4e868988776920..a465925fdef618110bbf997b8ab43ed4 if (this.jumpDelayTicks > 0) { --this.jumpDelayTicks; } -@@ -466,7 +527,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -477,7 +539,7 @@ public class Rabbit extends Animal implements VariantHolder { } } @@ -1791,13 +1791,13 @@ index 2e75066db6cf4903f04428b73c4e868988776920..a465925fdef618110bbf997b8ab43ed4 private final Rabbit rabbit; private double nextJumpSpeed; -@@ -477,14 +538,14 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -488,14 +550,14 @@ public class Rabbit extends Animal implements VariantHolder { } @Override - public void tick() { + public void vanillaTick() { // Purpur - if (this.rabbit.onGround && !this.rabbit.jumping && !((Rabbit.RabbitJumpControl) this.rabbit.jumpControl).wantJump()) { + if (this.rabbit.onGround() && !this.rabbit.jumping && !((Rabbit.RabbitJumpControl) this.rabbit.jumpControl).wantJump()) { this.rabbit.setSpeedModifier(0.0D); } else if (this.hasWanted()) { this.rabbit.setSpeedModifier(this.nextJumpSpeed); @@ -1809,11 +1809,11 @@ index 2e75066db6cf4903f04428b73c4e868988776920..a465925fdef618110bbf997b8ab43ed4 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Salmon.java b/src/main/java/net/minecraft/world/entity/animal/Salmon.java -index 0af79daa357f53a8871e293b57e16c099e5d3f64..cc1e6f9d0ee241f32878ed96820f17ccb72396ba 100644 +index 40196aa0f8abc8be68dffd397f706a0c2c0fc320..a1ad0c0eb4c7b6d39bc24be24b8d511697a5b628 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Salmon.java +++ b/src/main/java/net/minecraft/world/entity/animal/Salmon.java -@@ -13,6 +13,18 @@ public class Salmon extends AbstractSchoolingFish { - super(type, world); +@@ -18,6 +18,18 @@ public class Salmon extends AbstractSchoolingFish { + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.salmonMaxHealth); } + // Purpur start @@ -1832,11 +1832,11 @@ index 0af79daa357f53a8871e293b57e16c099e5d3f64..cc1e6f9d0ee241f32878ed96820f17cc public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index fb3777e158065a6ce306a2a6e66bec053da2aeb4..99c55d6bae08d75ae19c5dc004ca577e44b589a4 100644 +index 5886a9a40cbac1a97d4213d4a806802359953d18..99ed0cf1bb04df94f3ac3b9acd2076a26d43ab1e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -116,10 +116,28 @@ public class Sheep extends Animal implements Shearable { - super(type, world); +@@ -122,10 +122,28 @@ public class Sheep extends Animal implements Shearable { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.sheepMaxHealth); } + // Purpur start @@ -1865,10 +1865,10 @@ index fb3777e158065a6ce306a2a6e66bec053da2aeb4..99c55d6bae08d75ae19c5dc004ca577e this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.1D, Ingredient.of(Items.WHEAT), false)); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 5437571ce76c62e9cae841e99127867fffb39f43..383302ab11d2e62cc4ca135fda9c1ebe566491e5 100644 +index 64919b11f1b73f63a44e5f395687704e50e76c9a..f95a472f3696061d5c1b0ac3bf281ae099871084 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -54,12 +54,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -54,6 +54,23 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM super(type, world); } @@ -1889,6 +1889,11 @@ index 5437571ce76c62e9cae841e99127867fffb39f43..383302ab11d2e62cc4ca135fda9c1ebe + } + // Purpur end + + @Override + public void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.snowGolemMaxHealth); +@@ -61,10 +78,12 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM + @Override protected void registerGoals() { + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur @@ -1900,7 +1905,7 @@ index 5437571ce76c62e9cae841e99127867fffb39f43..383302ab11d2e62cc4ca135fda9c1ebe this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entityliving) -> { return entityliving instanceof Enemy; })); -@@ -107,6 +126,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -112,6 +131,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM return; } @@ -1908,7 +1913,7 @@ index 5437571ce76c62e9cae841e99127867fffb39f43..383302ab11d2e62cc4ca135fda9c1ebe BlockState iblockdata = Blocks.SNOW.defaultBlockState(); for (int i = 0; i < 4; ++i) { -@@ -154,7 +174,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -159,7 +179,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM if (itemstack.is(Items.SHEARS) && this.readyForShearing()) { // CraftBukkit start if (!CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand)) { @@ -1917,9 +1922,9 @@ index 5437571ce76c62e9cae841e99127867fffb39f43..383302ab11d2e62cc4ca135fda9c1ebe } // CraftBukkit end this.shear(SoundSource.PLAYERS); -@@ -167,7 +187,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -172,7 +192,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM - return InteractionResult.sidedSuccess(this.level.isClientSide); + return InteractionResult.sidedSuccess(this.level().isClientSide); } else { - return InteractionResult.PASS; + return tryRide(player, hand); // Purpur @@ -1927,11 +1932,11 @@ index 5437571ce76c62e9cae841e99127867fffb39f43..383302ab11d2e62cc4ca135fda9c1ebe } diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 72eea6e512060fc622ca79ca87437f19a64604cc..aa19d10f44aebed8fb174479b72da2a1601c2e38 100644 +index 55ca4f5e136cd902b2df425c8e65b12bfb45b28e..47842db438bac4c571a11306b0621f30832bbd68 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -50,9 +50,32 @@ public class Squid extends WaterAnimal { - this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; +@@ -55,9 +55,32 @@ public class Squid extends WaterAnimal { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.squidMaxHealth); } + // Purpur start @@ -1963,7 +1968,7 @@ index 72eea6e512060fc622ca79ca87437f19a64604cc..aa19d10f44aebed8fb174479b72da2a1 this.goalSelector.addGoal(1, new Squid.SquidFleeGoal()); } -@@ -244,6 +267,38 @@ public class Squid extends WaterAnimal { +@@ -249,6 +272,38 @@ public class Squid extends WaterAnimal { @Override public void tick() { @@ -2003,11 +2008,11 @@ index 72eea6e512060fc622ca79ca87437f19a64604cc..aa19d10f44aebed8fb174479b72da2a1 if (i > 100) { diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index b05b560b7570e97bc234b75f26233909fcf575b3..7c90f91685845329845a8c81f87ad9f6fdf4d973 100644 +index c0605ccfd050417189595cdcb68eb9d56e9fc4ee..1904e78ad39d2dd8e4dfbc64d187065a860b2103 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -42,6 +42,18 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder - super(type, world); +@@ -47,6 +47,18 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.tropicalFishMaxHealth); } + // Purpur start @@ -2026,11 +2031,11 @@ index b05b560b7570e97bc234b75f26233909fcf575b3..7c90f91685845329845a8c81f87ad9f6 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 81dab77f525ae667614f940c4ff5ec308a9579a2..ea66c2976401752688fdf9ee44802c79ea8545a1 100644 +index fc98554897f009352f1869d3e5a42d209a8d520c..68b50ffd17e4061c0dba0fb3452cb86014c88e89 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -83,6 +83,23 @@ public class Turtle extends Animal { - this.setMaxUpStep(1.0F); +@@ -88,6 +88,23 @@ public class Turtle extends Animal { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.turtleMaxHealth); } + // Purpur start @@ -2053,7 +2058,7 @@ index 81dab77f525ae667614f940c4ff5ec308a9579a2..ea66c2976401752688fdf9ee44802c79 public void setHomePos(BlockPos pos) { this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } -@@ -185,6 +202,7 @@ public class Turtle extends Animal { +@@ -190,6 +207,7 @@ public class Turtle extends Animal { @Override protected void registerGoals() { @@ -2061,7 +2066,7 @@ index 81dab77f525ae667614f940c4ff5ec308a9579a2..ea66c2976401752688fdf9ee44802c79 this.goalSelector.addGoal(0, new Turtle.TurtlePanicGoal(this, 1.2D)); this.goalSelector.addGoal(1, new Turtle.TurtleBreedGoal(this, 1.0D)); this.goalSelector.addGoal(1, new Turtle.TurtleLayEggGoal(this, 1.0D)); -@@ -342,13 +360,15 @@ public class Turtle extends Animal { +@@ -347,13 +365,15 @@ public class Turtle extends Animal { org.bukkit.craftbukkit.event.CraftEventFactory.entityDamage = null; // CraftBukkit } @@ -2078,7 +2083,7 @@ index 81dab77f525ae667614f940c4ff5ec308a9579a2..ea66c2976401752688fdf9ee44802c79 } private void updateSpeed() { -@@ -367,8 +387,18 @@ public class Turtle extends Animal { +@@ -372,8 +392,18 @@ public class Turtle extends Animal { } @@ -2098,7 +2103,7 @@ index 81dab77f525ae667614f940c4ff5ec308a9579a2..ea66c2976401752688fdf9ee44802c79 this.updateSpeed(); if (this.operation == MoveControl.Operation.MOVE_TO && !this.turtle.getNavigation().isDone()) { double d0 = this.wantedX - this.turtle.getX(); -@@ -384,7 +414,7 @@ public class Turtle extends Animal { +@@ -389,7 +419,7 @@ public class Turtle extends Animal { this.turtle.setYRot(this.rotlerp(this.turtle.getYRot(), f, 90.0F)); this.turtle.yBodyRot = this.turtle.getYRot(); @@ -2108,11 +2113,11 @@ index 81dab77f525ae667614f940c4ff5ec308a9579a2..ea66c2976401752688fdf9ee44802c79 this.turtle.setSpeed(Mth.lerp(0.125F, this.turtle.getSpeed(), f1)); this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0D, (double) this.turtle.getSpeed() * d1 * 0.1D, 0.0D)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 612601b2536dc522356d4dd2c2ea1192f6435f72..c8a18ecd36393747a95ad9026c5a7b1d62ff727a 100644 +index 123bb0b0a8437935ae5dafbe93b44eb268d1b4c0..d74b9426116770ad42b5ceb85ce9a19fe11db74a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -102,9 +102,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { - this.setPathfindingMalus(BlockPathTypes.DANGER_POWDER_SNOW, -1.0F); +@@ -107,9 +107,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.wolfMaxHealth); } + // Purpur start @@ -2144,7 +2149,7 @@ index 612601b2536dc522356d4dd2c2ea1192f6435f72..c8a18ecd36393747a95ad9026c5a7b1d this.goalSelector.addGoal(1, new Wolf.WolfPanicGoal(1.5D)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D)); -@@ -116,6 +139,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -121,6 +144,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.goalSelector.addGoal(9, new BegGoal(this, 8.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(10, new RandomLookAroundGoal(this)); @@ -2153,10 +2158,10 @@ index 612601b2536dc522356d4dd2c2ea1192f6435f72..c8a18ecd36393747a95ad9026c5a7b1d this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index a41d8101c960163803179d3717889aee6182d0bb..c743f487b7a327ee66cffc86cbe5d13c81fd2cab 100644 +index 339c70f101d026a100a801e66cf514b3329a89d2..81c10577b176b8325092457d0b543ed098ca54f2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -101,10 +101,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier { +@@ -101,10 +101,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS private float spinningAnimationTicks; private float spinningAnimationTicks0; public boolean forceDancing = false; // CraftBukkit @@ -2179,9 +2184,9 @@ index a41d8101c960163803179d3717889aee6182d0bb..c743f487b7a327ee66cffc86cbe5d13c + }; + // Purpur end this.setCanPickUpLoot(this.canPickUpLoot()); - EntityPositionSource entitypositionsource = new EntityPositionSource(this, this.getEyeHeight()); - -@@ -119,6 +132,28 @@ public class Allay extends PathfinderMob implements InventoryCarrier { + this.vibrationUser = new Allay.VibrationUser(); + this.vibrationData = new VibrationSystem.Data(); +@@ -118,6 +131,28 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS } // CraftBukkit end @@ -2211,11 +2216,11 @@ index a41d8101c960163803179d3717889aee6182d0bb..c743f487b7a327ee66cffc86cbe5d13c protected Brain.Provider brainProvider() { return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 38d21943fb2940f53c2d0ac2c3b94a6f0e46e700..2c5aa1fe81a2411de81c233092bbe3841ed627ea 100644 +index d90bf5a45466525c9a04d54b02d366861423be8f..11f24bf5886ffccd05b8f78ce960fa3c1ad76856 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -98,6 +98,23 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; -@@ -521,14 +538,22 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder { +@@ -77,16 +77,65 @@ public class Frog extends Animal implements VariantHolder { public final AnimationState croakAnimationState = new AnimationState(); public final AnimationState tongueAnimationState = new AnimationState(); public final AnimationState swimIdleAnimationState = new AnimationState(); @@ -2344,7 +2349,7 @@ index be44667b8205cd3bb1cefddf8e0e743535414e14..24419e78976cabc7f14a4cff0f273c95 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -376,7 +425,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -340,7 +389,7 @@ public class Frog extends Animal implements VariantHolder { return world.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(world, pos); } @@ -2354,7 +2359,7 @@ index be44667b8205cd3bb1cefddf8e0e743535414e14..24419e78976cabc7f14a4cff0f273c95 super(entity); } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index e591b0a09f5a8475b3ec9cd28bd5d5b69809ed73..63553436193cc3063cd4c4e9f50695fb5209ff9d 100644 +index 4aeab90e778629c355189dfe79c39c4b21f5f5ac..80cace56286c3969f306737faefe2d851a458edd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -45,13 +45,50 @@ public class Tadpole extends AbstractFish { @@ -2410,7 +2415,7 @@ index e591b0a09f5a8475b3ec9cd28bd5d5b69809ed73..63553436193cc3063cd4c4e9f50695fb protected PathNavigation createNavigation(Level world) { return new WaterBoundPathNavigation(this, world); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 4fdc3bd591b6df4c28901e4571aa23baf034d885..81790ac38ef67682053751a9e6813eed8d744337 100644 +index 528e7ba29dcd38726b2c1bbc1d8ac208c64ba9df..b1d78fd5674826b021b9f300647b1957daa8ba08 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -89,6 +89,23 @@ public class Goat extends Animal { @@ -2437,20 +2442,19 @@ index 4fdc3bd591b6df4c28901e4571aa23baf034d885..81790ac38ef67682053751a9e6813eed @Override protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); -@@ -192,7 +209,7 @@ public class Goat extends Animal { +@@ -191,6 +208,7 @@ public class Goat extends Animal { @Override protected void customServerAiStep() { - this.level.getProfiler().push("goatBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel) this.level, this); - this.level.getProfiler().pop(); - this.level.getProfiler().push("goatActivityUpdate"); + this.level().getProfiler().push("goatBrain"); ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Uncomment when pufferfish patch + this.getBrain().tick((ServerLevel) this.level(), this); + this.level().getProfiler().pop(); + this.level().getProfiler().push("goatActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 47cd69f91bbc2e2be9ec970674adc522e21593c8..2d298960afe61ed2b73ca72908849879408738b9 100644 +index 7827187afa738776908d1c2151556af95affcbe8..05405f22fa9001560eb3a6701f3bb0179a584fae 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -144,12 +144,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -144,10 +144,19 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, protected AbstractHorse(EntityType type, Level world) { super(type, world); @@ -2467,13 +2471,18 @@ index 47cd69f91bbc2e2be9ec970674adc522e21593c8..2d298960afe61ed2b73ca72908849879 + } + // Purpur end + + @Override + public void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.generateMaxHealth(random)); +@@ -188,6 +197,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, + @Override protected void registerGoals() { + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.2D)); this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D, AbstractHorse.class)); -@@ -160,6 +170,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -198,6 +208,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, if (this.canPerformRearing()) { this.goalSelector.addGoal(9, new RandomStandGoal(this)); } @@ -2482,11 +2491,11 @@ index 47cd69f91bbc2e2be9ec970674adc522e21593c8..2d298960afe61ed2b73ca72908849879 this.addBehaviourGoals(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index e0dfee0e0ce091d5ae0ec740e939c2c50915c104..6ed4ef1c628b77448629388bfc4a8575dd4afefd 100644 +index d3e8b9ddc42c506f8a0b696becc2ca63414db76f..e0568b3401f42ffd5cfd35da52c0a20d8626776e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -@@ -15,6 +15,13 @@ public class Donkey extends AbstractChestedHorse { - super(type, world); +@@ -30,6 +30,13 @@ public class Donkey extends AbstractChestedHorse { + return generateSpeed(this.level.purpurConfig.donkeyMovementSpeedMin, this.level.purpurConfig.donkeyMovementSpeedMax); } + // Purpur start @@ -2500,11 +2509,11 @@ index e0dfee0e0ce091d5ae0ec740e939c2c50915c104..6ed4ef1c628b77448629388bfc4a8575 protected SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 79a2b3c8df70a9a73ad44560a4a6129f91db8e16..9d8879fc2f7afafdd42cd8ee471c698b31159209 100644 +index 62f7cdc02e7eb15a96f20ff48470d9869ec82d59..508111fef316d765d284af31263d5c0dda751774 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -40,6 +40,13 @@ public class Horse extends AbstractHorse implements VariantHolder { - super(type, world); +@@ -55,6 +55,13 @@ public class Horse extends AbstractHorse implements VariantHolder { + return generateSpeed(this.level.purpurConfig.horseMovementSpeedMin, this.level.purpurConfig.horseMovementSpeedMax); } + // Purpur start @@ -2518,10 +2527,10 @@ index 79a2b3c8df70a9a73ad44560a4a6129f91db8e16..9d8879fc2f7afafdd42cd8ee471c698b protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 7ae0e4b3aa8e861500ddc7b38aa671258b532fcd..42861ddab4397187eb6a5d4a729bc58e6fc7ddeb 100644 +index fbcd47e656a8d33da08d1d852a959bc7cf3a2394..9dbfefa7311d4c0f6805fce24429bec2739c6c49 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -76,7 +76,51 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); @@ -2563,17 +2572,23 @@ index 7ae0e4b3aa8e861500ddc7b38aa671258b532fcd..42861ddab4397187eb6a5d4a729bc58e + @Override + public boolean isControllable() { + return level.purpurConfig.llamaControllable; -+ } -+ + } + + @Override +@@ -94,6 +132,12 @@ public class Llama extends AbstractChestedHorse implements VariantHolder entitytypes, Level world) { super(EntityType.ENDER_DRAGON, world); -@@ -118,9 +119,50 @@ public class EnderDragon extends Mob implements Enemy { - } - +@@ -126,7 +127,37 @@ public class EnderDragon extends Mob implements Enemy { + this.noPhysics = true; + this.noCulling = true; this.phaseManager = new EnderDragonPhaseManager(this); - this.explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY); // CraftBukkit + @@ -2793,29 +2808,34 @@ index 3f66986948d0b43a75454389b7ec8517e2d50899..165f3a058caf6ce5fd346b7f46969b67 + // Purpur start + @Override + public boolean isRidable() { -+ return level.purpurConfig.enderDragonRidable; ++ return level().purpurConfig.enderDragonRidable; + } + + @Override + public boolean dismountsUnderwater() { -+ return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.enderDragonRidableInWater; ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.enderDragonRidableInWater; + } + + public void setDragonFight(EndDragonFight fight) { +@@ -146,6 +177,17 @@ public class EnderDragon extends Mob implements Enemy { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.enderDragonMaxHealth); } + @Override + public boolean isControllable() { -+ return level.purpurConfig.enderDragonControllable; ++ return level().purpurConfig.enderDragonControllable; + } + + @Override + public double getMaxY() { -+ return level.purpurConfig.enderDragonMaxY; ++ return level().purpurConfig.enderDragonMaxY; + } + // Purpur end + public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } -@@ -182,6 +224,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -207,6 +249,37 @@ public class EnderDragon extends Mob implements Enemy { @Override public void aiStep() { @@ -2851,9 +2871,9 @@ index 3f66986948d0b43a75454389b7ec8517e2d50899..165f3a058caf6ce5fd346b7f46969b67 + // Purpur end + this.processFlappingMovement(); - if (this.level.isClientSide) { + if (this.level().isClientSide) { this.setHealth(this.getHealth()); -@@ -195,6 +268,8 @@ public class EnderDragon extends Mob implements Enemy { +@@ -233,6 +306,8 @@ public class EnderDragon extends Mob implements Enemy { float f; if (this.isDeadOrDying()) { @@ -2862,7 +2882,7 @@ index 3f66986948d0b43a75454389b7ec8517e2d50899..165f3a058caf6ce5fd346b7f46969b67 float f1 = (this.random.nextFloat() - 0.5F) * 8.0F; f = (this.random.nextFloat() - 0.5F) * 4.0F; -@@ -207,9 +282,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -245,9 +320,9 @@ public class EnderDragon extends Mob implements Enemy { f = 0.2F / ((float) vec3d.horizontalDistance() * 10.0F + 1.0F); f *= (float) Math.pow(2.0D, vec3d.y); @@ -2874,7 +2894,7 @@ index 3f66986948d0b43a75454389b7ec8517e2d50899..165f3a058caf6ce5fd346b7f46969b67 this.flapTime += f * 0.5F; } else { this.flapTime += f; -@@ -254,7 +329,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -292,7 +367,7 @@ public class EnderDragon extends Mob implements Enemy { } this.phaseManager.getCurrentPhase().doClientTick(); @@ -2883,26 +2903,26 @@ index 3f66986948d0b43a75454389b7ec8517e2d50899..165f3a058caf6ce5fd346b7f46969b67 DragonPhaseInstance idragoncontroller = this.phaseManager.getCurrentPhase(); idragoncontroller.doServerTick(); -@@ -323,7 +398,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -361,7 +436,7 @@ public class EnderDragon extends Mob implements Enemy { this.tickPart(this.body, (double) (f11 * 0.5F), 0.0D, (double) (-f12 * 0.5F)); this.tickPart(this.wing1, (double) (f12 * 4.5F), 2.0D, (double) (f11 * 4.5F)); this.tickPart(this.wing2, (double) (f12 * -4.5F), 2.0D, (double) (f11 * -4.5F)); -- if (!this.level.isClientSide && this.hurtTime == 0) { -+ if (!hasRider && !this.level.isClientSide && this.hurtTime == 0) { // Purpur - this.knockBack(this.level.getEntities((Entity) this, this.wing1.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); - this.knockBack(this.level.getEntities((Entity) this, this.wing2.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); - this.hurt(this.level.getEntities((Entity) this, this.head.getBoundingBox().inflate(1.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); -@@ -367,7 +442,7 @@ public class EnderDragon extends Mob implements Enemy { +- if (!this.level().isClientSide && this.hurtTime == 0) { ++ if (!hasRider && !this.level().isClientSide && this.hurtTime == 0) { // Purpur + this.knockBack(this.level().getEntities((Entity) this, this.wing1.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); + this.knockBack(this.level().getEntities((Entity) this, this.wing2.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); + this.hurt(this.level().getEntities((Entity) this, this.head.getBoundingBox().inflate(1.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); +@@ -405,7 +480,7 @@ public class EnderDragon extends Mob implements Enemy { } - if (!this.level.isClientSide) { + if (!this.level().isClientSide) { - this.inWall = this.checkWalls(this.head.getBoundingBox()) | this.checkWalls(this.neck.getBoundingBox()) | this.checkWalls(this.body.getBoundingBox()); + this.inWall = !hasRider && this.checkWalls(this.head.getBoundingBox()) | this.checkWalls(this.neck.getBoundingBox()) | this.checkWalls(this.body.getBoundingBox()); // Purpur if (this.dragonFight != null) { this.dragonFight.updateDragon(this); } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index e81e8f050bd9df34b6a64c741428503b434f03a3..1001ef99f28a4f4f29e48d6ae9e3cb1bcfa27686 100644 +index 29c3ae08cdd9b5516f4ae783e6ac0458ba3d3a6d..1fcf73cfe789bfe89c5ac01d4bd260e8d7dc0fc0 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -2937,7 +2957,7 @@ index e81e8f050bd9df34b6a64c741428503b434f03a3..1001ef99f28a4f4f29e48d6ae9e3cb1b this.setHealth(this.getMaxHealth()); this.xpReward = 50; } -@@ -108,13 +122,119 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -113,13 +127,119 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return navigationflying; } @@ -3057,7 +3077,7 @@ index e81e8f050bd9df34b6a64c741428503b434f03a3..1001ef99f28a4f4f29e48d6ae9e3cb1b this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } -@@ -256,6 +376,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -261,6 +381,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected void customServerAiStep() { @@ -3074,7 +3094,7 @@ index e81e8f050bd9df34b6a64c741428503b434f03a3..1001ef99f28a4f4f29e48d6ae9e3cb1b int i; if (this.getInvulnerableTicks() > 0) { -@@ -576,11 +706,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -581,11 +711,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } public int getAlternativeTarget(int headIndex) { @@ -3089,7 +3109,7 @@ index e81e8f050bd9df34b6a64c741428503b434f03a3..1001ef99f28a4f4f29e48d6ae9e3cb1b @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index f2094c52196b45adfd51d8aebcc4c46b779b0925..8fad4a642e2d430ad4b195f77422ba6855be1d63 100644 +index 9ca1e9d95e62929c0015d5ca2c2f9c70e421842e..93443238b77c04f6a9da3c25427d200ccf4699f8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -70,12 +70,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -3108,7 +3128,7 @@ index f2094c52196b45adfd51d8aebcc4c46b779b0925..8fad4a642e2d430ad4b195f77422ba68 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 5ae34ded698e501dc5cb97b1d7028863e95742a1..4fe550dc61b64b6c16731a5bf21d4144f3e257c0 100644 +index f91fd938ac941a780e1dc72d766985d865cfcb76..f1432703511aee491744c06c1dbfaf2f21b11785 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -32,6 +32,7 @@ public class Blaze extends Monster { @@ -3119,7 +3139,7 @@ index 5ae34ded698e501dc5cb97b1d7028863e95742a1..4fe550dc61b64b6c16731a5bf21d4144 this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); -@@ -39,19 +40,55 @@ public class Blaze extends Monster { +@@ -39,6 +40,40 @@ public class Blaze extends Monster { this.xpReward = 10; } @@ -3157,6 +3177,11 @@ index 5ae34ded698e501dc5cb97b1d7028863e95742a1..4fe550dc61b64b6c16731a5bf21d4144 + } + // Purpur end + + @Override + public void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.blazeMaxHealth); +@@ -46,17 +81,19 @@ public class Blaze extends Monster { + @Override protected void registerGoals() { + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur @@ -3176,7 +3201,7 @@ index 5ae34ded698e501dc5cb97b1d7028863e95742a1..4fe550dc61b64b6c16731a5bf21d4144 } @Override -@@ -106,6 +143,14 @@ public class Blaze extends Monster { +@@ -111,6 +148,14 @@ public class Blaze extends Monster { @Override protected void customServerAiStep() { @@ -3192,11 +3217,11 @@ index 5ae34ded698e501dc5cb97b1d7028863e95742a1..4fe550dc61b64b6c16731a5bf21d4144 if (this.nextHeightOffsetChangeTick <= 0) { this.nextHeightOffsetChangeTick = 100; diff --git a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java -index d980b906d9206560741576fa4153c57212f307a0..2795153f9f27ab0017dd29dc6d90737e890d6a6e 100644 +index 4367d14654aa3e85b821d72ca8243d3976fda072..c232cdd7cde6bcbb2302ff609206f6be8ccf99b3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java +++ b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java -@@ -28,6 +28,23 @@ public class CaveSpider extends Spider { - return Spider.createAttributes().add(Attributes.MAX_HEALTH, 12.0D); +@@ -33,6 +33,23 @@ public class CaveSpider extends Spider { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.caveSpiderMaxHealth); } + // Purpur start @@ -3220,7 +3245,7 @@ index d980b906d9206560741576fa4153c57212f307a0..2795153f9f27ab0017dd29dc6d90737e public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 29c62525241e2e03686d1bceee740d4f54f33c54..a3b52b0aa442a2c69f8bec7004db5ea913919d30 100644 +index d2d7ca4666d4cfd43dfcc8697e0957921bc48e61..e208a743d161f53944cb5756041522658c3c9ce6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -59,21 +59,98 @@ public class Creeper extends Monster implements PowerableMob { @@ -3322,7 +3347,7 @@ index 29c62525241e2e03686d1bceee740d4f54f33c54..a3b52b0aa442a2c69f8bec7004db5ea9 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); } -@@ -322,6 +399,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -327,6 +404,7 @@ public class Creeper extends Monster implements PowerableMob { com.destroystokyo.paper.event.entity.CreeperIgniteEvent event = new com.destroystokyo.paper.event.entity.CreeperIgniteEvent((org.bukkit.entity.Creeper) getBukkitEntity(), ignited); if (event.callEvent()) { this.entityData.set(Creeper.DATA_IS_IGNITED, event.isIgnited()); @@ -3331,11 +3356,11 @@ index 29c62525241e2e03686d1bceee740d4f54f33c54..a3b52b0aa442a2c69f8bec7004db5ea9 } // Paper end diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index f00773e05654bdeb5463f448293aac99d2208813..4d1d5a7608e20d684c1942c9c241c84cd7097d96 100644 +index c379b5396de408724ccab41d2255a8ce8bcd892a..8fcda30fd2ae9882d7101b24cff70e832db1eee0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -68,6 +68,23 @@ public class Drowned extends Zombie implements RangedAttackMob { - this.groundNavigation = new GroundPathNavigation(this, world); +@@ -78,6 +78,23 @@ public class Drowned extends Zombie implements RangedAttackMob { + this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level.purpurConfig.drownedSpawnReinforcements); } + // Purpur start @@ -3358,7 +3383,7 @@ index f00773e05654bdeb5463f448293aac99d2208813..4d1d5a7608e20d684c1942c9c241c84c @Override protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); -@@ -259,8 +276,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -269,8 +286,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.searchingForLand = targetingUnderwater; } @@ -3368,7 +3393,7 @@ index f00773e05654bdeb5463f448293aac99d2208813..4d1d5a7608e20d684c1942c9c241c84c private final Drowned drowned; public DrownedMoveControl(Drowned drowned) { -@@ -269,7 +285,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -279,7 +295,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } @Override @@ -3377,7 +3402,7 @@ index f00773e05654bdeb5463f448293aac99d2208813..4d1d5a7608e20d684c1942c9c241c84c LivingEntity entityliving = this.drowned.getTarget(); if (this.drowned.wantsToSwim() && this.drowned.isInWater()) { -@@ -292,7 +308,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -302,7 +318,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.drowned.setYRot(this.rotlerp(this.drowned.getYRot(), f, 90.0F)); this.drowned.yBodyRot = this.drowned.getYRot(); @@ -3386,7 +3411,7 @@ index f00773e05654bdeb5463f448293aac99d2208813..4d1d5a7608e20d684c1942c9c241c84c float f2 = Mth.lerp(0.125F, this.drowned.getSpeed(), f1); this.drowned.setSpeed(f2); -@@ -302,7 +318,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -312,7 +328,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add(0.0D, -0.008D, 0.0D)); } @@ -3396,11 +3421,11 @@ index f00773e05654bdeb5463f448293aac99d2208813..4d1d5a7608e20d684c1942c9c241c84c } diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -index d02286d553c600fe7e75f48e278e380d21c5b868..4fbae6e88daaabfce22bb9d6e60e02a109e5178a 100644 +index 61fa65292c75661a48012e215368055708560360..63a02ce34b3cf1cd6bfb61cef7488aea67da9046 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -@@ -33,6 +33,18 @@ public class ElderGuardian extends Guardian { - +@@ -38,6 +38,18 @@ public class ElderGuardian extends Guardian { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.elderGuardianMaxHealth); } + // Purpur start @@ -3419,27 +3444,27 @@ index d02286d553c600fe7e75f48e278e380d21c5b868..4fbae6e88daaabfce22bb9d6e60e02a1 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index c2f5dabb41b172547864decc06aa632d89dff3e1..d1e6b930fe393c4e3c52749819373cc98092aa20 100644 +index 81b3f96b1fe8d592cac95e2deff8395edb6d589c..50925ae443a52833d34304dec30be899dbdaee14 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -92,9 +92,27 @@ public class EnderMan extends Monster implements NeutralMob { - this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); +@@ -97,9 +97,27 @@ public class EnderMan extends Monster implements NeutralMob { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.endermanMaxHealth); } + // Purpur start + @Override + public boolean isRidable() { -+ return level.purpurConfig.endermanRidable; ++ return level().purpurConfig.endermanRidable; + } + + @Override + public boolean dismountsUnderwater() { -+ return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.endermanRidableInWater; ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.endermanRidableInWater; + } + + @Override + public boolean isControllable() { -+ return level.purpurConfig.endermanControllable; ++ return level().purpurConfig.endermanControllable; + } + // Purpur end + @@ -3450,7 +3475,7 @@ index c2f5dabb41b172547864decc06aa632d89dff3e1..d1e6b930fe393c4e3c52749819373cc9 this.goalSelector.addGoal(1, new EnderMan.EndermanFreezeWhenLookedAt(this)); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D, 0.0F)); -@@ -102,6 +120,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -107,6 +125,7 @@ public class EnderMan extends Monster implements NeutralMob { this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(10, new EnderMan.EndermanLeaveBlockGoal(this)); this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); @@ -3458,16 +3483,16 @@ index c2f5dabb41b172547864decc06aa632d89dff3e1..d1e6b930fe393c4e3c52749819373cc9 this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false)); -@@ -283,7 +302,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -288,7 +307,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override protected void customServerAiStep() { -- if (this.level.isDay() && this.tickCount >= this.targetChangeTime + 600) { -+ if ((getRider() == null || !this.isControllable()) && this.level.isDay() && this.tickCount >= this.targetChangeTime + 600) { // Purpur - no random teleporting +- if (this.level().isDay() && this.tickCount >= this.targetChangeTime + 600) { ++ if ((getRider() == null || !this.isControllable()) && this.level().isDay() && this.tickCount >= this.targetChangeTime + 600) { // Purpur - no random teleporting float f = this.getLightLevelDependentMagicValue(); - if (f > 0.5F && this.level.canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper -@@ -404,6 +423,7 @@ public class EnderMan extends Monster implements NeutralMob { + if (f > 0.5F && this.level().canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper +@@ -403,6 +422,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { return false; @@ -3476,11 +3501,11 @@ index c2f5dabb41b172547864decc06aa632d89dff3e1..d1e6b930fe393c4e3c52749819373cc9 boolean flag = source.getDirectEntity() instanceof ThrownPotion; boolean flag1; diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index e8c3972b889fd6b348a5b0d18444d28faa813879..4b24821b3161e448da76b6484df7bcb66cfc0acc 100644 +index 07e709f886bd182511d92e27a2f77f8a0c93500f..a3bf2e2d629b7db3c66e684460e79f73857f0f84 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -37,14 +37,33 @@ public class Endermite extends Monster { - this.xpReward = 3; +@@ -42,14 +42,33 @@ public class Endermite extends Monster { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.endermiteMaxHealth); } + // Purpur start @@ -3504,7 +3529,7 @@ index e8c3972b889fd6b348a5b0d18444d28faa813879..4b24821b3161e448da76b6484df7bcb6 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level)); + this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(3, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 8.0F)); @@ -3514,11 +3539,11 @@ index e8c3972b889fd6b348a5b0d18444d28faa813879..4b24821b3161e448da76b6484df7bcb6 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index 1935f1eb28724d8f03a9612a9b4ddefbbc557157..1482bddc996df22e9542e7934d99bfe29a325af0 100644 +index a2dc53d9ce6c3bc2278fa389a98f1506bbcccefa..f113c96af07eeceef2e51cd310d46b2763c8224b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -48,10 +48,28 @@ public class Evoker extends SpellcasterIllager { - this.xpReward = 10; +@@ -53,10 +53,28 @@ public class Evoker extends SpellcasterIllager { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.evokerMaxHealth); } + // Purpur start @@ -3546,7 +3571,7 @@ index 1935f1eb28724d8f03a9612a9b4ddefbbc557157..1482bddc996df22e9542e7934d99bfe2 this.goalSelector.addGoal(1, new Evoker.EvokerCastingSpellGoal()); this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 0.6D, 1.0D)); this.goalSelector.addGoal(4, new Evoker.EvokerSummonSpellGoal()); -@@ -60,6 +78,7 @@ public class Evoker extends SpellcasterIllager { +@@ -65,6 +83,7 @@ public class Evoker extends SpellcasterIllager { this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); @@ -3555,7 +3580,7 @@ index 1935f1eb28724d8f03a9612a9b4ddefbbc557157..1482bddc996df22e9542e7934d99bfe2 this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -index bb2cb17e4e5ce142eeec18951c8948e3d6b3209c..3a3dbf3721cae13b5e5cbc98aaf74b7ecd9e2263 100644 +index 2cb35b9b35f1c449784226caf200e8e19dccc64a..20d6c7b352ce13812205ae021f52837647076fe0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java @@ -44,11 +44,47 @@ public class Ghast extends FlyingMob implements Enemy { @@ -3606,7 +3631,7 @@ index bb2cb17e4e5ce142eeec18951c8948e3d6b3209c..3a3dbf3721cae13b5e5cbc98aaf74b7e this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entityliving) -> { return Math.abs(entityliving.getY() - this.getY()) <= 4.0D; })); -@@ -103,7 +139,7 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -108,7 +144,7 @@ public class Ghast extends FlyingMob implements Enemy { } public static AttributeSupplier.Builder createAttributes() { @@ -3615,7 +3640,7 @@ index bb2cb17e4e5ce142eeec18951c8948e3d6b3209c..3a3dbf3721cae13b5e5cbc98aaf74b7e } @Override -@@ -160,7 +196,7 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -165,7 +201,7 @@ public class Ghast extends FlyingMob implements Enemy { return 2.6F; } @@ -3624,7 +3649,7 @@ index bb2cb17e4e5ce142eeec18951c8948e3d6b3209c..3a3dbf3721cae13b5e5cbc98aaf74b7e private final Ghast ghast; private int floatDuration; -@@ -171,7 +207,7 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -176,7 +212,7 @@ public class Ghast extends FlyingMob implements Enemy { } @Override @@ -3634,11 +3659,11 @@ index bb2cb17e4e5ce142eeec18951c8948e3d6b3209c..3a3dbf3721cae13b5e5cbc98aaf74b7e if (this.floatDuration-- <= 0) { this.floatDuration += this.ghast.getRandom().nextInt(5) + 2; diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 41004c28edb748e12c4f868aa07b4672891197c1..6971cb46087aabcda66cd04c494a822886104b04 100644 +index 4a38296843048d3fff255370f980d81d0808bbef..e7e85c830d2a4804c625884010c5fec33008b014 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java -@@ -14,6 +14,29 @@ public class Giant extends Monster { - super(type, world); +@@ -21,6 +21,29 @@ public class Giant extends Monster { + this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level.purpurConfig.giantAttackDamage); } + // Purpur start @@ -3668,10 +3693,10 @@ index 41004c28edb748e12c4f868aa07b4672891197c1..6971cb46087aabcda66cd04c494a8228 protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return 10.440001F; diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index cf7e9c1db229f9e2cc05ce3046540db1d4fc4ec4..bf269b310e5b9554f36cf1d1188e20d3b195cb60 100644 +index afae01e4bf1c22eafe06243a23dd21cd6894ca92..773ba2ff81a97f046e795c52bfa534b3cb44cfb9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -@@ -69,15 +69,36 @@ public class Guardian extends Monster { +@@ -69,6 +69,14 @@ public class Guardian extends Monster { this.xpReward = 10; this.setPathfindingMalus(BlockPathTypes.WATER, 0.0F); this.moveControl = new Guardian.GuardianMoveControl(this); @@ -3686,6 +3711,9 @@ index cf7e9c1db229f9e2cc05ce3046540db1d4fc4ec4..bf269b310e5b9554f36cf1d1188e20d3 this.clientSideTailAnimation = this.random.nextFloat(); this.clientSideTailAnimationO = this.clientSideTailAnimation; } +@@ -78,11 +86,24 @@ public class Guardian extends Monster { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.guardianMaxHealth); + } + // Purpur start + @Override @@ -3708,7 +3736,7 @@ index cf7e9c1db229f9e2cc05ce3046540db1d4fc4ec4..bf269b310e5b9554f36cf1d1188e20d3 this.goalSelector.addGoal(4, this.guardianAttackGoal = new Guardian.GuardianAttackGoal(this)); // CraftBukkit - assign field this.goalSelector.addGoal(5, pathfindergoalmovetowardsrestriction); this.goalSelector.addGoal(7, this.randomStrollGoal); -@@ -86,6 +107,7 @@ public class Guardian extends Monster { +@@ -91,6 +112,7 @@ public class Guardian extends Monster { this.goalSelector.addGoal(9, new RandomLookAroundGoal(this)); this.randomStrollGoal.setFlags(EnumSet.of(Goal.Flag.MOVE, Goal.Flag.LOOK)); pathfindergoalmovetowardsrestriction.setFlags(EnumSet.of(Goal.Flag.MOVE, Goal.Flag.LOOK)); @@ -3716,7 +3744,7 @@ index cf7e9c1db229f9e2cc05ce3046540db1d4fc4ec4..bf269b310e5b9554f36cf1d1188e20d3 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 10, true, false, new Guardian.GuardianAttackSelector(this))); } -@@ -351,7 +373,7 @@ public class Guardian extends Monster { +@@ -356,7 +378,7 @@ public class Guardian extends Monster { @Override public void travel(Vec3 movementInput) { if (this.isControlledByLocalInstance() && this.isInWater()) { @@ -3725,7 +3753,7 @@ index cf7e9c1db229f9e2cc05ce3046540db1d4fc4ec4..bf269b310e5b9554f36cf1d1188e20d3 this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.9D)); if (!this.isMoving() && this.getTarget() == null) { -@@ -363,7 +385,7 @@ public class Guardian extends Monster { +@@ -368,7 +390,7 @@ public class Guardian extends Monster { } @@ -3734,7 +3762,7 @@ index cf7e9c1db229f9e2cc05ce3046540db1d4fc4ec4..bf269b310e5b9554f36cf1d1188e20d3 private final Guardian guardian; -@@ -372,8 +394,17 @@ public class Guardian extends Monster { +@@ -377,8 +399,17 @@ public class Guardian extends Monster { this.guardian = guardian; } @@ -3753,7 +3781,7 @@ index cf7e9c1db229f9e2cc05ce3046540db1d4fc4ec4..bf269b310e5b9554f36cf1d1188e20d3 if (this.operation == MoveControl.Operation.MOVE_TO && !this.guardian.getNavigation().isDone()) { Vec3 vec3d = new Vec3(this.wantedX - this.guardian.getX(), this.wantedY - this.guardian.getY(), this.wantedZ - this.guardian.getZ()); double d0 = vec3d.length(); -@@ -384,7 +415,7 @@ public class Guardian extends Monster { +@@ -389,7 +420,7 @@ public class Guardian extends Monster { this.guardian.setYRot(this.rotlerp(this.guardian.getYRot(), f, 90.0F)); this.guardian.yBodyRot = this.guardian.getYRot(); @@ -3763,11 +3791,11 @@ index cf7e9c1db229f9e2cc05ce3046540db1d4fc4ec4..bf269b310e5b9554f36cf1d1188e20d3 this.guardian.setSpeed(f2); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 4996347c6dde85a2dc9aa37fdf495160093fac64..1e2bc8b2c90599134d513e9062a2fb81c7c046b1 100644 +index 9e84a90f42c4a526ef067b7aff457c9dcda571ef..83fba266721f17efb92f62cc61dbecf4024fb5d6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java -@@ -22,6 +22,23 @@ public class Husk extends Zombie { - super(type, world); +@@ -32,6 +32,23 @@ public class Husk extends Zombie { + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level.purpurConfig.huskSpawnReinforcements); } + // Purpur start @@ -3791,11 +3819,11 @@ index 4996347c6dde85a2dc9aa37fdf495160093fac64..1e2bc8b2c90599134d513e9062a2fb81 return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -index 10573602c9bc73713cbd6989762d3dbb6f6fcf8c..91e048a14366aec2142ca36c3a8081eea6af0052 100644 +index 03646f5ffa43b19679241999877da1e93b293744..d85f8e126832193d6080328d474312d30a81c301 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -@@ -59,10 +59,28 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { - +@@ -66,10 +66,28 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.illusionerMaxHealth); } + // Purpur start @@ -3823,7 +3851,7 @@ index 10573602c9bc73713cbd6989762d3dbb6f6fcf8c..91e048a14366aec2142ca36c3a8081ee this.goalSelector.addGoal(1, new SpellcasterIllager.SpellcasterCastingSpellGoal()); this.goalSelector.addGoal(4, new Illusioner.IllusionerMirrorSpellGoal()); this.goalSelector.addGoal(5, new Illusioner.IllusionerBlindnessSpellGoal()); -@@ -70,6 +88,7 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { +@@ -77,6 +95,7 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); @@ -3832,11 +3860,11 @@ index 10573602c9bc73713cbd6989762d3dbb6f6fcf8c..91e048a14366aec2142ca36c3a8081ee this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index f23d8796aec3e02a3bb23f338903f39b6ef9dcf1..b51f11fe8366ba15e02083a50ee401e1f335fbb6 100644 +index 0f375ed5073435f6826c4d946e50a2d24ae54be0..291e7a1331aade8a413d132d215bc494440b9f51 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -@@ -25,6 +25,28 @@ public class MagmaCube extends Slime { - super(type, world); +@@ -45,6 +45,28 @@ public class MagmaCube extends Slime { + return level.purpurConfig.magmaCubeAttackDamageCache; } + // Purpur start @@ -3864,21 +3892,22 @@ index f23d8796aec3e02a3bb23f338903f39b6ef9dcf1..b51f11fe8366ba15e02083a50ee401e1 public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); } -@@ -70,10 +92,11 @@ public class MagmaCube extends Slime { +@@ -90,11 +112,12 @@ public class MagmaCube extends Slime { } @Override - protected void jumpFromGround() { + public void jumpFromGround() { // Purpur - protected -> public Vec3 vec3 = this.getDeltaMovement(); - this.setDeltaMovement(vec3.x, (double)(this.getJumpPower() + (float)this.getSize() * 0.1F), vec3.z); + float f = (float)this.getSize() * 0.1F; + this.setDeltaMovement(vec3.x, (double)(this.getJumpPower() + f), vec3.z); this.hasImpulse = true; + this.actualJump = false; // Purpur } @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 97fb1d2110a51498f6419841081b500b3f190370..736610f5d1e180b4df68a9355adce9b8135268ff 100644 +index 07070846057b80eb24e6afa4ddcf39221df0c7b3..5a44bead0ad10deb4ec7d90c86305ae178632e6c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -60,6 +60,64 @@ public class Phantom extends FlyingMob implements Enemy { @@ -3958,7 +3987,7 @@ index 97fb1d2110a51498f6419841081b500b3f190370..736610f5d1e180b4df68a9355adce9b8 this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -145,6 +205,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -163,6 +223,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { if (this.isAlive() && shouldBurnInDay && this.isSunBurnTick()) { // Paper - Configurable Burning @@ -3966,7 +3995,7 @@ index 97fb1d2110a51498f6419841081b500b3f190370..736610f5d1e180b4df68a9355adce9b8 this.setSecondsOnFire(8); } -@@ -269,7 +330,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -287,7 +348,7 @@ public class Phantom extends FlyingMob implements Enemy { private AttackPhase() {} } @@ -3975,7 +4004,7 @@ index 97fb1d2110a51498f6419841081b500b3f190370..736610f5d1e180b4df68a9355adce9b8 private float speed = 0.1F; -@@ -277,8 +338,19 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -295,8 +356,19 @@ public class Phantom extends FlyingMob implements Enemy { super(entity); } @@ -3996,7 +4025,7 @@ index 97fb1d2110a51498f6419841081b500b3f190370..736610f5d1e180b4df68a9355adce9b8 if (Phantom.this.horizontalCollision) { Phantom.this.setYRot(Phantom.this.getYRot() + 180.0F); this.speed = 0.1F; -@@ -324,14 +396,20 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -342,14 +414,20 @@ public class Phantom extends FlyingMob implements Enemy { } } @@ -4020,11 +4049,11 @@ index 97fb1d2110a51498f6419841081b500b3f190370..736610f5d1e180b4df68a9355adce9b8 private class PhantomBodyRotationControl extends BodyRotationControl { diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -index cec545c3baa6599d47b9cf1a4b97de8771062a22..f2a8dffecc27ec45e3f7341cb67a2bd783400f4a 100644 +index 508d76f5120ec614092669af7d7c61f7216c8dc3..594573c2e1f27617dc11e72b97eaf4b6de12e8ed 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -@@ -62,15 +62,34 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve - super(type, world); +@@ -67,15 +67,34 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.pillagerMaxHealth); } + // Purpur start @@ -4059,11 +4088,11 @@ index cec545c3baa6599d47b9cf1a4b97de8771062a22..f2a8dffecc27ec45e3f7341cb67a2bd7 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 9258d0f7c5c27b6d3d8f99db947169d6800d8ea9..78bd5a76f105ff1ebf005ccb2590b4a04934ebb2 100644 +index 45ac92467b5cdadcc692c8867a52277e1754a934..c35266d89bfacf193662738366a8c91943b29250 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -65,14 +65,39 @@ public class Ravager extends Raider { - this.setPathfindingMalus(BlockPathTypes.LEAVES, 0.0F); +@@ -70,14 +70,39 @@ public class Ravager extends Raider { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ravagerMaxHealth); } + // Purpur start @@ -4102,7 +4131,7 @@ index 9258d0f7c5c27b6d3d8f99db947169d6800d8ea9..78bd5a76f105ff1ebf005ccb2590b4a0 this.targetSelector.addGoal(2, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true, (entityliving) -> { -@@ -150,7 +175,7 @@ public class Ravager extends Raider { +@@ -155,7 +180,7 @@ public class Ravager extends Raider { @Override public void aiStep() { super.aiStep(); @@ -4112,10 +4141,10 @@ index 9258d0f7c5c27b6d3d8f99db947169d6800d8ea9..78bd5a76f105ff1ebf005ccb2590b4a0 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D); } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 8cb910da17d75a9d9c7dbeb3c9e24b6de657a2f7..6f652413d5375e0e6ddf82b3be682560ea6f5d67 100644 +index b7900691214fabe130f163253879c38952b9a20b..ba3246b099ae13f83b4aa94903192018518c2b6e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -98,12 +98,31 @@ public class Shulker extends AbstractGolem implements VariantHolder(this, Player.class, true)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index badde621357a567965f0ef203e402e21bed09059..7a2e0b0e30ef1155061ecad4a517a19078b71984 100644 +index f0bbfa0317b56a7ddb829ba55879d371632c9320..a0e73a09ce443d5ce0031acd2d5bf4559b48893f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -@@ -26,6 +26,23 @@ public class Skeleton extends AbstractSkeleton { - super(type, world); +@@ -31,6 +31,23 @@ public class Skeleton extends AbstractSkeleton { + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.skeletonMaxHealth); } + // Purpur start @@ -4223,7 +4257,7 @@ index badde621357a567965f0ef203e402e21bed09059..7a2e0b0e30ef1155061ecad4a517a190 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index c41c1c2712920c6b7d822cd0f37a5d8d725e4054..0e0f82403add7912f512a675fc1c9328d61b4ff3 100644 +index ccbe63cae3a719e73013dd3da1c5179bdf9ccc75..18a7257de4fffd9d4edebbad8eb0f64546284748 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java @@ -64,6 +64,7 @@ public class Slime extends Mob implements Enemy { @@ -4234,8 +4268,8 @@ index c41c1c2712920c6b7d822cd0f37a5d8d725e4054..0e0f82403add7912f512a675fc1c9328 public Slime(EntityType type, Level world) { super(type, world); -@@ -71,12 +72,48 @@ public class Slime extends Mob implements Enemy { - this.moveControl = new Slime.SlimeMoveControl(this); +@@ -102,12 +103,48 @@ public class Slime extends Mob implements Enemy { + return value; } + // Purpur start @@ -4283,7 +4317,7 @@ index c41c1c2712920c6b7d822cd0f37a5d8d725e4054..0e0f82403add7912f512a675fc1c9328 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entityliving) -> { return Math.abs(entityliving.getY() - this.getY()) <= 4.0D; })); -@@ -368,11 +405,12 @@ public class Slime extends Mob implements Enemy { +@@ -399,11 +436,12 @@ public class Slime extends Mob implements Enemy { } @Override @@ -4297,7 +4331,7 @@ index c41c1c2712920c6b7d822cd0f37a5d8d725e4054..0e0f82403add7912f512a675fc1c9328 } @Nullable -@@ -406,7 +444,7 @@ public class Slime extends Mob implements Enemy { +@@ -437,7 +475,7 @@ public class Slime extends Mob implements Enemy { return super.getDimensions(pose).scale(0.255F * (float) this.getSize()); } @@ -4306,7 +4340,7 @@ index c41c1c2712920c6b7d822cd0f37a5d8d725e4054..0e0f82403add7912f512a675fc1c9328 private float yRot; private int jumpDelay; -@@ -425,21 +463,33 @@ public class Slime extends Mob implements Enemy { +@@ -456,21 +494,33 @@ public class Slime extends Mob implements Enemy { } public void setWantedMovement(double speed) { @@ -4337,13 +4371,13 @@ index c41c1c2712920c6b7d822cd0f37a5d8d725e4054..0e0f82403add7912f512a675fc1c9328 this.mob.setZza(0.0F); } else { this.operation = MoveControl.Operation.WAIT; - if (this.mob.isOnGround()) { + if (this.mob.onGround()) { - this.mob.setSpeed((float) (this.speedModifier * this.mob.getAttributeValue(Attributes.MOVEMENT_SPEED))); + this.mob.setSpeed((float) (this.getSpeedModifier() * this.mob.getAttributeValue(Attributes.MOVEMENT_SPEED) * (slime.getRider() != null && slime.isControllable() && (slime.getRider().getForwardMot() != 0 || slime.getRider().getStrafeMot() != 0) ? 2.0D : 1.0D))); // Purpur if (this.jumpDelay-- <= 0) { this.jumpDelay = this.slime.getJumpDelay(); if (this.isAggressive) { -@@ -456,7 +506,7 @@ public class Slime extends Mob implements Enemy { +@@ -487,7 +537,7 @@ public class Slime extends Mob implements Enemy { this.mob.setSpeed(0.0F); } } else { @@ -4353,11 +4387,11 @@ index c41c1c2712920c6b7d822cd0f37a5d8d725e4054..0e0f82403add7912f512a675fc1c9328 } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 0c36bb47bd7040f1544817810e1c87157cdaff96..ca13dbeea191b7508abbf7a89c3cf182ce0cfa09 100644 +index 4d9be4599d7181bc891bf86c01299b8ed460d916..9ae41d3baf305baed2642af1d2935e36aa312516 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java -@@ -51,14 +51,33 @@ public class Spider extends Monster { - super(type, world); +@@ -56,14 +56,33 @@ public class Spider extends Monster { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.spiderMaxHealth); } + // Purpur start @@ -4391,11 +4425,11 @@ index 0c36bb47bd7040f1544817810e1c87157cdaff96..ca13dbeea191b7508abbf7a89c3cf182 this.targetSelector.addGoal(2, new Spider.SpiderTargetGoal<>(this, Player.class)); this.targetSelector.addGoal(3, new Spider.SpiderTargetGoal<>(this, IronGolem.class)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Stray.java b/src/main/java/net/minecraft/world/entity/monster/Stray.java -index 118b636a44e4b062e812e433f603b039276337da..03a0dc6594b423191ec5c54252c37081a12a19a9 100644 +index 36ae65cb4510f8706f55fb851d37b121ca431ace..05b52df61a8c4c939f687e3988f25ab215a29632 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java -@@ -21,6 +21,23 @@ public class Stray extends AbstractSkeleton { - super(type, world); +@@ -26,6 +26,23 @@ public class Stray extends AbstractSkeleton { + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.strayMaxHealth); } + // Purpur start @@ -4419,11 +4453,11 @@ index 118b636a44e4b062e812e433f603b039276337da..03a0dc6594b423191ec5c54252c37081 BlockPos blockPos = pos; diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index 66755efc54059dfb8625f028bf0548d188a57aa2..da652fdb3afbdae1a26d76a2669b57affbfecd84 100644 +index bf44fc59eb4f2d18c728a7c24fd8b5c518208f09..abefdf6679a4e15ccec4b67147d85bfc6271ac4b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java -@@ -100,6 +100,23 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { - this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); +@@ -105,6 +105,23 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.striderMaxHealth); } + // Purpur start @@ -4446,7 +4480,7 @@ index 66755efc54059dfb8625f028bf0548d188a57aa2..da652fdb3afbdae1a26d76a2669b57af public static boolean checkStriderSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable(); -@@ -161,6 +178,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -166,6 +183,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @Override protected void registerGoals() { this.panicGoal = new PanicGoal(this, 1.65D); @@ -4454,7 +4488,7 @@ index 66755efc54059dfb8625f028bf0548d188a57aa2..da652fdb3afbdae1a26d76a2669b57af this.goalSelector.addGoal(1, this.panicGoal); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.temptGoal = new TemptGoal(this, 1.4D, Strider.TEMPT_ITEMS, false); -@@ -470,7 +488,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -475,7 +493,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { if (!enuminteractionresult.consumesAction()) { ItemStack itemstack = player.getItemInHand(hand); @@ -4462,13 +4496,13 @@ index 66755efc54059dfb8625f028bf0548d188a57aa2..da652fdb3afbdae1a26d76a2669b57af + return itemstack.is(Items.SADDLE) ? itemstack.interactLivingEntity(player, this, hand) : tryRide(player, hand); // Purpur } else { if (flag && !this.isSilent()) { - this.level.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.STRIDER_EAT, this.getSoundSource(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); + this.level().playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.STRIDER_EAT, this.getSoundSource(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index bb5c2f90bef5e3c57ffde996853e122d108b2789..38f7e1e41816721f332f548887d69c5eb98bad6a 100644 +index 41b6c2d33121144e062f0733db55ec6a40603020..f63b6c2a61af9b518a59aba4152a76afbf8df592 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java -@@ -63,6 +63,50 @@ public class Vex extends Monster implements TraceableEntity { - this.xpReward = 3; +@@ -68,6 +68,50 @@ public class Vex extends Monster implements TraceableEntity { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.vexMaxHealth); } + // Purpur start @@ -4518,7 +4552,7 @@ index bb5c2f90bef5e3c57ffde996853e122d108b2789..38f7e1e41816721f332f548887d69c5e @Override protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return dimensions.height - 0.28125F; -@@ -81,7 +125,7 @@ public class Vex extends Monster implements TraceableEntity { +@@ -86,7 +130,7 @@ public class Vex extends Monster implements TraceableEntity { @Override public void tick() { @@ -4527,7 +4561,7 @@ index bb5c2f90bef5e3c57ffde996853e122d108b2789..38f7e1e41816721f332f548887d69c5e super.tick(); this.noPhysics = false; this.setNoGravity(true); -@@ -96,17 +140,19 @@ public class Vex extends Monster implements TraceableEntity { +@@ -101,17 +145,19 @@ public class Vex extends Monster implements TraceableEntity { protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -4548,7 +4582,7 @@ index bb5c2f90bef5e3c57ffde996853e122d108b2789..38f7e1e41816721f332f548887d69c5e } @Override -@@ -235,14 +281,14 @@ public class Vex extends Monster implements TraceableEntity { +@@ -240,14 +286,14 @@ public class Vex extends Monster implements TraceableEntity { return 0.4D; } @@ -4565,7 +4599,7 @@ index bb5c2f90bef5e3c57ffde996853e122d108b2789..38f7e1e41816721f332f548887d69c5e if (this.operation == MoveControl.Operation.MOVE_TO) { Vec3 vec3d = new Vec3(this.wantedX - Vex.this.getX(), this.wantedY - Vex.this.getY(), this.wantedZ - Vex.this.getZ()); double d0 = vec3d.length(); -@@ -251,7 +297,7 @@ public class Vex extends Monster implements TraceableEntity { +@@ -256,7 +302,7 @@ public class Vex extends Monster implements TraceableEntity { this.operation = MoveControl.Operation.WAIT; Vex.this.setDeltaMovement(Vex.this.getDeltaMovement().scale(0.5D)); } else { @@ -4575,11 +4609,11 @@ index bb5c2f90bef5e3c57ffde996853e122d108b2789..38f7e1e41816721f332f548887d69c5e Vec3 vec3d1 = Vex.this.getDeltaMovement(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index a9e75a16a7dc0ff5d4f0faa92ebc444559a39325..78fe2cc6c866252c1d537c1e23854a0d2608fe36 100644 +index 3bf6463d356f3ba64c2d5279cbf79c289fc09a8f..fdbcf72f35b6801fed4db127710a72579c823fe1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -58,14 +58,33 @@ public class Vindicator extends AbstractIllager { - super(type, world); +@@ -63,14 +63,33 @@ public class Vindicator extends AbstractIllager { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.vindicatorMaxHealth); } + // Purpur start @@ -4613,11 +4647,11 @@ index a9e75a16a7dc0ff5d4f0faa92ebc444559a39325..78fe2cc6c866252c1d537c1e23854a0d this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java -index 096546d7a97f031060bda7545aa620d522766719..c15a35e7ac5dac31872b5e27671ce26fe1702eef 100644 +index 956e0f5ea71f01f4ae192c8c8e0f1e8b323b06ba..2ca044d6ab0acf56fbbe43e936c844d370c1d97c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java -@@ -57,6 +57,23 @@ public class Witch extends Raider implements RangedAttackMob { - super(type, world); +@@ -62,6 +62,23 @@ public class Witch extends Raider implements RangedAttackMob { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.witchMaxHealth); } + // Purpur start @@ -4640,7 +4674,7 @@ index 096546d7a97f031060bda7545aa620d522766719..c15a35e7ac5dac31872b5e27671ce26f @Override protected void registerGoals() { super.registerGoals(); -@@ -65,10 +82,12 @@ public class Witch extends Raider implements RangedAttackMob { +@@ -70,10 +87,12 @@ public class Witch extends Raider implements RangedAttackMob { }); this.attackPlayersGoal = new NearestAttackableWitchTargetGoal<>(this, Player.class, 10, true, false, (Predicate) null); this.goalSelector.addGoal(1, new FloatGoal(this)); @@ -4654,11 +4688,11 @@ index 096546d7a97f031060bda7545aa620d522766719..c15a35e7ac5dac31872b5e27671ce26f this.targetSelector.addGoal(2, this.healRaidersGoal); this.targetSelector.addGoal(3, this.attackPlayersGoal); diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -index 6449213d717271bcc516e393a78dfe1e5c762d68..8da19fac75c283f026cb051668557c2034c40af9 100644 +index dda157fa91572198407a0840079cd18473adae4e..8baf2c7bf590620baeb6b93cae64c07df0f434e5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java -@@ -35,6 +35,23 @@ public class WitherSkeleton extends AbstractSkeleton { - this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); +@@ -40,6 +40,23 @@ public class WitherSkeleton extends AbstractSkeleton { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.witherSkeletonMaxHealth); } + // Purpur start @@ -4682,11 +4716,11 @@ index 6449213d717271bcc516e393a78dfe1e5c762d68..8da19fac75c283f026cb051668557c20 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 0ca82175ec91ca8b3418c0931682c972666c47f8..ee1bbff9e9dfd110e33a36c652d50a7f83093cab 100644 +index 54ce647b16efcc15d378009e56691cdf47bd04e4..a5ce5e82f12bef3bdd5a4a87409aa31787bb90ac 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -67,6 +67,23 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { - this.xpReward = 5; +@@ -72,6 +72,23 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.zoglinMaxHealth); } + // Purpur start @@ -4709,19 +4743,19 @@ index 0ca82175ec91ca8b3418c0931682c972666c47f8..ee1bbff9e9dfd110e33a36c652d50a7f @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -199,6 +216,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -204,6 +221,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @Override protected void customServerAiStep() { - this.level.getProfiler().push("zoglinBrain"); + this.level().getProfiler().push("zoglinBrain"); + if (getRider() == null || !this.isControllable()) // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel)this.level, this); - this.level.getProfiler().pop(); + this.getBrain().tick((ServerLevel)this.level(), this); + this.level().getProfiler().pop(); this.updateActivity(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 9976205537cfe228735687f1e9c52c74ac025690..aa264a5975b1373fa979104355dae899c785aaf1 100644 +index 3263d467cbff5cd7382f9618c342314aafb2a004..a825c0e976a6bbddc5688bfe0010f8d653f27e08 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -106,11 +106,30 @@ public class Zombie extends Monster { +@@ -106,6 +106,23 @@ public class Zombie extends Monster { this(EntityType.ZOMBIE, world); } @@ -4742,10 +4776,15 @@ index 9976205537cfe228735687f1e9c52c74ac025690..aa264a5975b1373fa979104355dae899 + } + // Purpur end + + @Override + public void initAttributes() { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.zombieMaxHealth); +@@ -113,9 +130,11 @@ public class Zombie extends Monster { + @Override protected void registerGoals() { + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - if (level.paperConfig().entities.behavior.zombiesTargetTurtleEggs) this.goalSelector.addGoal(4, new Zombie.ZombieAttackTurtleEggGoal(this, 1.0D, 3)); // Paper + if (this.level().paperConfig().entities.behavior.zombiesTargetTurtleEggs) this.goalSelector.addGoal(4, new Zombie.ZombieAttackTurtleEggGoal(this, 1.0D, 3)); // Paper this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur @@ -4753,11 +4792,11 @@ index 9976205537cfe228735687f1e9c52c74ac025690..aa264a5975b1373fa979104355dae899 } diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 71a36cf9b976443cca9ab63cd0eb23253f638562..02a97f526fb10056dcad78614ae8f6973449e9ab 100644 +index 7ca69d4ae42f982eef7c4470d6a28a3eb334401c..0f42ae8062d2e3044accbc7fa296be9ae7ca7605 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -79,6 +79,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { - }); +@@ -89,6 +89,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level.purpurConfig.zombieVillagerSpawnReinforcements); } + // Purpur start @@ -4781,11 +4820,11 @@ index 71a36cf9b976443cca9ab63cd0eb23253f638562..02a97f526fb10056dcad78614ae8f697 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index b75945807b425609394c343da56c316a769f0a29..ad82c064c9e31ffc1dd96e44517187635100fc22 100644 +index 5e97cec00a6ea97520f0e5acb6e30d5e7e5fab89..468923229dfda00eb704040461f8639bfa5082a7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -63,6 +63,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { - this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); +@@ -68,6 +68,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.zombifiedPiglinMaxHealth); } + // Purpur start @@ -4809,11 +4848,11 @@ index b75945807b425609394c343da56c316a769f0a29..ad82c064c9e31ffc1dd96e4451718763 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index daa2224b021c966751eb39f269ffbfe6e7f3d426..74d3068c4f74c19740ad3e2f507489d405d78598 100644 +index 139c0853d54f736d61ae8c2f90c8bef9e4acb164..419377b795f88a8ab67e048e78292a1387ca13e1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -67,6 +67,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - this.xpReward = 5; +@@ -72,6 +72,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.hoglinMaxHealth); } + // Purpur start @@ -4836,21 +4875,20 @@ index daa2224b021c966751eb39f269ffbfe6e7f3d426..74d3068c4f74c19740ad3e2f507489d4 @Override public boolean canBeLeashed(Player player) { return !this.isLeashed(); -@@ -130,7 +147,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -134,6 +151,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @Override protected void customServerAiStep() { - this.level.getProfiler().push("hoglinBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel)this.level, this); - this.level.getProfiler().pop(); + this.level().getProfiler().push("hoglinBrain"); ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Uncomment when pufferfish patch + this.getBrain().tick((ServerLevel)this.level(), this); + this.level().getProfiler().pop(); HoglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index b401fb4f276ca81b4bb18426ee56abed8a9f7a7b..5dcaa05ee11872502736c39588dfe03cb59c8e2d 100644 +index 7e1a46eba403e238c266680e9f1fae435a246e1c..bd084cfaecee1098b29e03f75d64e3fecd10a1ea 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -97,6 +97,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento - this.xpReward = 5; +@@ -101,6 +101,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.piglinMaxHealth); } + // Purpur start @@ -4873,21 +4911,20 @@ index b401fb4f276ca81b4bb18426ee56abed8a9f7a7b..5dcaa05ee11872502736c39588dfe03c @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); -@@ -312,7 +329,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -313,6 +330,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override protected void customServerAiStep() { - this.level.getProfiler().push("piglinBrain"); -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel) this.level, this); - this.level.getProfiler().pop(); + this.level().getProfiler().push("piglinBrain"); ++ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Uncomment when pufferfish patch + this.getBrain().tick((ServerLevel) this.level(), this); + this.level().getProfiler().pop(); PiglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 769e4fbaac01a4fe3a45bd9cab5c63b61fc69f53..ac066b2f3e369321752470722941ae26af511309 100644 +index 5f4dcb1d2fd8e3354fb5148512648062463b5bd8..349fb046ba7930af29251973efde4e1ecfef16f4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -41,6 +41,23 @@ public class PiglinBrute extends AbstractPiglin { - this.xpReward = 20; +@@ -46,6 +46,23 @@ public class PiglinBrute extends AbstractPiglin { + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.piglinBruteMaxHealth); } + // Purpur start @@ -4910,19 +4947,19 @@ index 769e4fbaac01a4fe3a45bd9cab5c63b61fc69f53..ac066b2f3e369321752470722941ae26 public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } -@@ -86,6 +103,7 @@ public class PiglinBrute extends AbstractPiglin { +@@ -91,6 +108,7 @@ public class PiglinBrute extends AbstractPiglin { @Override protected void customServerAiStep() { - this.level.getProfiler().push("piglinBruteBrain"); + this.level().getProfiler().push("piglinBruteBrain"); + if (getRider() == null || this.isControllable()) // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel)this.level, this); - this.level.getProfiler().pop(); + this.getBrain().tick((ServerLevel)this.level(), this); + this.level().getProfiler().pop(); PiglinBruteAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 907d77dd74066c723238155b42028a811365b1f8..f40806e7d9c08cf7b85215fbf0c66169eb4dc6ae 100644 +index 97b763431bc5015448ee7a26a340635a932c950b..fef81fe4db0f5e8a7dcc03bf821c9e8f2acff8aa 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -120,8 +120,32 @@ public class Warden extends Monster implements VibrationListener.VibrationListen +@@ -121,8 +121,32 @@ public class Warden extends Monster implements VibrationSystem { this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); @@ -4955,7 +4992,7 @@ index 907d77dd74066c723238155b42028a811365b1f8..f40806e7d9c08cf7b85215fbf0c66169 @Override public Packet getAddEntityPacket() { return new ClientboundAddEntityPacket(this, this.hasPose(Pose.EMERGING) ? 1 : 0); -@@ -405,19 +429,16 @@ public class Warden extends Monster implements VibrationListener.VibrationListen +@@ -394,19 +418,16 @@ public class Warden extends Monster implements VibrationSystem { @Contract("null->false") public boolean canTargetEntity(@Nullable Entity entity) { @@ -4965,7 +5002,7 @@ index 907d77dd74066c723238155b42028a811365b1f8..f40806e7d9c08cf7b85215fbf0c66169 if (entity instanceof LivingEntity) { LivingEntity entityliving = (LivingEntity) entity; - if (this.level == entity.level && EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity) && !this.isAlliedTo(entity) && entityliving.getType() != EntityType.ARMOR_STAND && entityliving.getType() != EntityType.WARDEN && !entityliving.isInvulnerable() && !entityliving.isDeadOrDying() && this.level.getWorldBorder().isWithinBounds(entityliving.getBoundingBox())) { + if (this.level() == entity.level() && EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity) && !this.isAlliedTo(entity) && entityliving.getType() != EntityType.ARMOR_STAND && entityliving.getType() != EntityType.WARDEN && !entityliving.isInvulnerable() && !entityliving.isDeadOrDying() && this.level().getWorldBorder().isWithinBounds(entityliving.getBoundingBox())) { - flag = true; - return flag; + return true; // Purpur - wtf @@ -4979,27 +5016,27 @@ index 907d77dd74066c723238155b42028a811365b1f8..f40806e7d9c08cf7b85215fbf0c66169 public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 5402a084ef5fe0b3cfea897a90cffade1eff5b66..bf232c81f07e5783071b79b5f3510f9ed473e400 100644 +index 423d0eb98c144d98622884212235b33213aaac6e..dc8225eb864b0fead5990762669dc219e6e8c526 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -155,6 +155,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); +@@ -159,6 +159,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.villagerMaxHealth); } + // Purpur start + @Override + public boolean isRidable() { -+ return level.purpurConfig.villagerRidable; ++ return level().purpurConfig.villagerRidable; + } + + @Override + public boolean dismountsUnderwater() { -+ return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.villagerRidableInWater; ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.villagerRidableInWater; + } + + @Override + public boolean isControllable() { -+ return level.purpurConfig.villagerControllable; ++ return level().purpurConfig.villagerControllable; + } + + @Override @@ -5011,79 +5048,78 @@ index 5402a084ef5fe0b3cfea897a90cffade1eff5b66..bf232c81f07e5783071b79b5f3510f9e @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -252,7 +274,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - this.level.getProfiler().push("villagerBrain"); - // Pufferfish start - if (!inactive) { -- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish -+ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider - this.getBrain().tick((ServerLevel) this.level, this); // Paper - } - // Pufferfish end -@@ -312,7 +334,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -259,6 +281,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + // Paper end + this.level().getProfiler().push("villagerBrain"); + if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper ++ // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Uncomment when pufferfish patch + this.level().getProfiler().pop(); + if (this.assignProfessionWhenSpawned) { + this.assignProfessionWhenSpawned = false; +@@ -315,7 +338,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler if (!itemstack.is(Items.VILLAGER_SPAWN_EGG) && this.isAlive() && !this.isTrading() && !this.isSleeping()) { if (this.isBaby()) { this.setUnhappy(); -- return InteractionResult.sidedSuccess(this.level.isClientSide); -+ return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur +- return InteractionResult.sidedSuccess(this.level().isClientSide); ++ return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur } else { boolean flag = this.getOffers().isEmpty(); -@@ -325,8 +347,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -328,8 +351,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (flag) { -- return InteractionResult.sidedSuccess(this.level.isClientSide); -+ return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur +- return InteractionResult.sidedSuccess(this.level().isClientSide); ++ return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur } else { -+ if (level.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur - if (!this.level.isClientSide && !this.offers.isEmpty()) { ++ if (level().purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur + if (!this.level().isClientSide && !this.offers.isEmpty()) { this.startTrading(player); } diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index c9fb50c33ac15fe72bc77167e4647f30942fdc5d..89ec1e52f91c2e4cd17eeaa23cab366c9cbb8dc0 100644 +index 5df4c2468ff809b805d4f16021e7ffd2c1c2dd33..bb8d422f8c2ac80457970f300390b797e8807dd8 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -69,6 +69,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill - this.setDespawnDelay(48000); // CraftBukkit - set default from MobSpawnerTrader +@@ -71,6 +71,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill + this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.wanderingTraderMaxHealth); } + // Purpur - start + @Override + public boolean isRidable() { -+ return level.purpurConfig.wanderingTraderRidable; ++ return level().purpurConfig.wanderingTraderRidable; + } + + @Override + public boolean dismountsUnderwater() { -+ return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.wanderingTraderRidableInWater; ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.wanderingTraderRidableInWater; + } + + @Override + public boolean isControllable() { -+ return level.purpurConfig.wanderingTraderControllable; ++ return level().purpurConfig.wanderingTraderControllable; + } + // Purpur end + @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -116,8 +133,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -118,8 +135,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } if (this.getOffers().isEmpty()) { -- return InteractionResult.sidedSuccess(this.level.isClientSide); -+ return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur +- return InteractionResult.sidedSuccess(this.level().isClientSide); ++ return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur } else { -+ if (level.purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur - if (!this.level.isClientSide) { ++ if (level().purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur + if (!this.level().isClientSide) { this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); 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 0629c471d38a77c44fc1c86ccdfcb0690f61ca17..ffcc81c07b5aa45d1471e05676f43e96db13b045 100644 +index 6b068863368e3f0c1102f35b87ffce3f77370fcb..96726f06b83193fd7c5156efe6411b10eb1db435 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -197,6 +197,19 @@ public abstract class Player extends LivingEntity { +@@ -199,6 +199,19 @@ public abstract class Player extends LivingEntity { } // CraftBukkit end @@ -5104,7 +5140,7 @@ index 0629c471d38a77c44fc1c86ccdfcb0690f61ca17..ffcc81c07b5aa45d1471e05676f43e96 super(EntityType.PLAYER, world); this.lastItemInMainHand = ItemStack.EMPTY; diff --git a/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java b/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java -index c4f4a26e016eea744f587461af80461074d48303..10b109de5abc015b61a896d363ad37a006dff554 100644 +index 0bbe853f7df93f9dcd2b21d762939f8b6be069aa..7db9844083703944f59e112c6dc5e1a5e062d31c 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java +++ b/src/main/java/net/minecraft/world/entity/projectile/LlamaSpit.java @@ -26,6 +26,12 @@ public class LlamaSpit extends Projectile { @@ -5121,11 +5157,11 @@ index c4f4a26e016eea744f587461af80461074d48303..10b109de5abc015b61a896d363ad37a0 public void tick() { super.tick(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 56c75029a94e8812c9e0ce5375aaa7cbcda90b87..a4644b1d9abb7ffeda89801e4562a078ffe43288 100644 +index ea056babe2f8123f20dc608d8a636da1de634b8c..a820a00440510d77fa1839eef485f8ea2de9ff84 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1442,4 +1442,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - return !this.getHandle().level.noCollision(this.getHandle(), aabb); + return !this.getHandle().level().noCollision(this.getHandle(), aabb); } // Paper End - Collision API + @@ -5153,7 +5189,7 @@ index 56c75029a94e8812c9e0ce5375aaa7cbcda90b87..a4644b1d9abb7ffeda89801e4562a078 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index a153c134cf26e86d49ef419eca35994539af0db3..e9599e0f3d2122c3843ebde81743bc8d558bfd30 100644 +index 1ced79cf92fe0b01a42f097794dacc3ce74518f3..f759b1b25e3f4fbbb1dd0b222c70698e58c8062d 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -563,6 +563,15 @@ public class CraftEventFactory { @@ -5197,12 +5233,12 @@ index a153c134cf26e86d49ef419eca35994539af0db3..e9599e0f3d2122c3843ebde81743bc8d event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, modifiers, modifierFunctions); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 9fe1cdafdafc3f718ef4eb4fd4150971e2832738..0cab29584c4d5205950571660b6c271d34e403eb 100644 +index 5b10feadf1ec5e7bbba4244b6347fdedd0f4b1d4..687710a138edd8492e58aa026872851d00466508 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -172,4 +172,9 @@ public class PurpurConfig { - } - return builder.build(); +@@ -207,4 +207,9 @@ public class PurpurConfig { + org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); + enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } + + public static String cannotRideMob = "You cannot mount that mob"; @@ -5211,12 +5247,12 @@ index 9fe1cdafdafc3f718ef4eb4fd4150971e2832738..0cab29584c4d5205950571660b6c271d + } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2b7f1dedb3289efc7e42a138f4483f4969902801..ec168b917d60cc6d8c48620eb4dcd89b0b121aea 100644 +index 3a44c1fff53590ae5c65404564a3a2ee12be62cf..f004e4290c0711d2e04c05677981f31b463af9fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -91,4 +91,717 @@ public class PurpurWorldConfig { - final Map value = PurpurConfig.getMap("world-settings." + worldName + "." + path, null); - return value.isEmpty() ? fallback : value; +@@ -988,4 +988,717 @@ public class PurpurWorldConfig { + zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); + zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); } + + public boolean babiesAreRidable = true; diff --git a/patches/server/0009-AFK-API.patch b/patches/server/0010-AFK-API.patch similarity index 97% rename from patches/server/0009-AFK-API.patch rename to patches/server/0010-AFK-API.patch index 65a7475cb..5e9062f26 100644 --- a/patches/server/0009-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -6,10 +6,10 @@ Subject: [PATCH] AFK API Adds the option for display names to be used in the afk broadcast diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 15539499b5a0f16ad2d44c39c5b824876fdf0951..a1e43e2b05217a3345d048da05fbcfd506522809 100644 +index dfdc50093e5d4b60438acfc12ab9f14255fa7a99..3b6af7b76db3d550eb7f199f9e8afd1c0af97e2e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2107,8 +2107,68 @@ public class ServerPlayer extends Player { +@@ -2116,8 +2116,68 @@ public class ServerPlayer extends Player { public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -79,7 +79,7 @@ index 15539499b5a0f16ad2d44c39c5b824876fdf0951..a1e43e2b05217a3345d048da05fbcfd5 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 67a71b0d04cc3c8239dce26c7022b18a6ff3a58c..76434e1b7307bdc3074847a99d780686f73c96a9 100644 +index a419308c2d71bf0e228aa7c591deb76c77eda894..1645c63f36c6d4bcd6e6ac474af8504848b1c077 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -340,6 +340,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -193,7 +193,7 @@ index 58422f00c7d64dbd1cf6d7211c9838875cbe7778..12efea4fd2a78f32a165941aff52edd0 if (baseEntity == null) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) { 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 6b068863368e3f0c1102f35b87ffce3f77370fcb..9c118a5ebeb1fb473f8038b3cb4a157dc0084413 100644 +index 96726f06b83193fd7c5156efe6411b10eb1db435..7b39cb5346925c14f3f144d622ca7e5855420aa6 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -193,6 +193,13 @@ public abstract class Player extends LivingEntity { @@ -266,7 +266,7 @@ index 09d2f1586d19d0d5c9c78cde5263f30e7a7d0647..fea8f974c5e35b0f5c515a4c7f033482 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 5b10feadf1ec5e7bbba4244b6347fdedd0f4b1d4..19e32a65f89ab2b4b44997028043e2b304209eff 100644 +index 687710a138edd8492e58aa026872851d00466508..d11442476371fefe6549654c97825a01d2cac61e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -173,6 +173,19 @@ public class PurpurConfig { @@ -290,7 +290,7 @@ index 5b10feadf1ec5e7bbba4244b6347fdedd0f4b1d4..19e32a65f89ab2b4b44997028043e2b3 public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3a44c1fff53590ae5c65404564a3a2ee12be62cf..e37db90448b0d1df6b40028ef6ebc80a51932180 100644 +index f004e4290c0711d2e04c05677981f31b463af9fe..aa2371a611ca83247d422cc79ea37a8d798fdd0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -92,6 +92,24 @@ public class PurpurWorldConfig { diff --git a/patches/server/0010-Bring-back-server-name.patch b/patches/server/0011-Bring-back-server-name.patch similarity index 100% rename from patches/server/0010-Bring-back-server-name.patch rename to patches/server/0011-Bring-back-server-name.patch diff --git a/patches/server/0011-Configurable-server-mod-name.patch b/patches/server/0012-Configurable-server-mod-name.patch similarity index 87% rename from patches/server/0011-Configurable-server-mod-name.patch rename to patches/server/0012-Configurable-server-mod-name.patch index e98e6b3bd..bfc2ae19c 100644 --- a/patches/server/0011-Configurable-server-mod-name.patch +++ b/patches/server/0012-Configurable-server-mod-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7fe5d22b4c9eac832646780d4b5326edaca2979e..c88da193507aa4b322586e38ed04caf834c6b481 100644 +index 1f08b8e81fd6dfa850ead13f2d45adb823a447ab..b8ea1f9aa3a486033b6f3d0d150aa21ab6130d53 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1681,7 +1681,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop drops = new ArrayList(); public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; -@@ -354,7 +355,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -355,7 +356,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.tryAddSoulSpeed(); } @@ -25,7 +25,7 @@ index 91309d12ae4a1157d507062b27147cdcc4053658..428678c4341c0bde812113229f5eb91b double d1 = this.getX(); double d2 = this.getY(); double d3 = this.getZ(); -@@ -369,7 +370,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -370,7 +371,7 @@ public abstract class LivingEntity extends Entity implements Attackable { d3 = (double) landedPosition.getZ() + 0.5D + d5 / d6 * 0.5D; } @@ -34,7 +34,7 @@ index 91309d12ae4a1157d507062b27147cdcc4053658..428678c4341c0bde812113229f5eb91b double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); int i = (int) (150.0D * d7); -@@ -2038,7 +2039,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2039,7 +2040,7 @@ public abstract class LivingEntity extends Entity implements Attackable { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); @@ -44,10 +44,10 @@ index 91309d12ae4a1157d507062b27147cdcc4053658..428678c4341c0bde812113229f5eb91b } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 7827187afa738776908d1c2151556af95affcbe8..55ced31c3e8118b11a6201a7d8a2779244b4c9b1 100644 +index 05405f22fa9001560eb3a6701f3bb0179a584fae..8bf1105601f000142246554d177965d1dc6a3339 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -370,7 +370,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -381,7 +381,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @Override protected int calculateFallDamage(float fallDistance, float damageMultiplier) { @@ -57,7 +57,7 @@ index 7827187afa738776908d1c2151556af95affcbe8..55ced31c3e8118b11a6201a7d8a27792 protected int getInventorySize() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 4a38296843048d3fff255370f980d81d0808bbef..4511b56c6f58336920f1470400f8e120f12f72e6 100644 +index e7e85c830d2a4804c625884010c5fec33008b014..8919464efeea5c1f6d10c88d77c4cf52af2b4a91 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -12,6 +12,7 @@ import net.minecraft.world.level.LevelReader; diff --git a/patches/server/0013-Lagging-threshold.patch b/patches/server/0014-Lagging-threshold.patch similarity index 93% rename from patches/server/0013-Lagging-threshold.patch rename to patches/server/0014-Lagging-threshold.patch index d011818d8..a7ac02588 100644 --- a/patches/server/0013-Lagging-threshold.patch +++ b/patches/server/0014-Lagging-threshold.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c88da193507aa4b322586e38ed04caf834c6b481..1c9c9260c442f3173d60b3ed564d8c3eee862628 100644 +index b8ea1f9aa3a486033b6f3d0d150aa21ab6130d53..75d15b7c157fea129a730a0f48ae9ea71f13d533 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -309,6 +309,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info -@@ -3484,6 +3500,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -3486,6 +3502,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { @@ -56,7 +56,7 @@ index 1782c461c5d5cc1a2416deb58c8345f16984ddbb..7d61ad24a1e8654ee0a0988b59c3f4b4 if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int) (Util.getMillis() - this.keepAliveTime); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f0dfed4573f1cac8aa9148fbddf9e8c601c21bdf..dba0de7594851560706afaeb5e56f8c5574da303 100644 +index ebbb60f0ea50b4bfb2eebd3c45efbcce1e986882..2e210ec03710180a7a4af0a3180b6ced7d4744b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -196,6 +196,11 @@ public class PurpurConfig { diff --git a/patches/server/0018-Silk-touch-spawners.patch b/patches/server/0019-Silk-touch-spawners.patch similarity index 99% rename from patches/server/0018-Silk-touch-spawners.patch rename to patches/server/0019-Silk-touch-spawners.patch index 85ba6f558..0c8788444 100644 --- a/patches/server/0018-Silk-touch-spawners.patch +++ b/patches/server/0019-Silk-touch-spawners.patch @@ -89,7 +89,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..d58dc4aa02fe371deaf879df8692dbe9 int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1e5290c9ef98f5ce2cca85e876fe8103b0368a02..47f686b066da17d207052904ecf0bb172243b9b2 100644 +index b2b286de570ba7c80c40ff5d9ac4b2602054b523..10dd93d628605dc876f61fd798fb2ddaef94ba33 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -114,6 +114,38 @@ public class PurpurWorldConfig { diff --git a/patches/server/0019-Add-turtle-egg-block-options.patch b/patches/server/0020-Add-turtle-egg-block-options.patch similarity index 96% rename from patches/server/0019-Add-turtle-egg-block-options.patch rename to patches/server/0020-Add-turtle-egg-block-options.patch index 8003cbdef..7c66fa484 100644 --- a/patches/server/0019-Add-turtle-egg-block-options.patch +++ b/patches/server/0020-Add-turtle-egg-block-options.patch @@ -36,7 +36,7 @@ index 6c1a0e6f961e46a1a89850746a71e97b32514adf..1942649e868fc985a488034c411a6721 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 47f686b066da17d207052904ecf0bb172243b9b2..c8df1eca97b510559482d41b28569df0e9934b3d 100644 +index 10dd93d628605dc876f61fd798fb2ddaef94ba33..40354fc7dd9d0dc35c7e45b95b114713862e41fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -146,6 +146,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0021-Logger-settings-suppressing-pointless-logs.patch similarity index 79% rename from patches/server/0020-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0021-Logger-settings-suppressing-pointless-logs.patch index 7daa2bc00..b16a51e7e 100644 --- a/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0021-Logger-settings-suppressing-pointless-logs.patch @@ -53,14 +53,31 @@ index 110503062b3043cffa082a1cda6b8d57152869aa..3e7e06bd5e9e4ed45c9e3452eb04e946 if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) { new Exception().printStackTrace(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index dba0de7594851560706afaeb5e56f8c5574da303..c875d0351a32fa5bd75f4f440d6623830febf86b 100644 +index 2e210ec03710180a7a4af0a3180b6ced7d4744b7..9db231480f0763c2b6514a956ec9398b98b7d1bc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -235,4 +235,15 @@ public class PurpurConfig { - org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); +@@ -173,12 +173,14 @@ public class PurpurConfig { + return builder.build(); + } + ++ public static String cannotRideMob = "You cannot mount that mob"; + public static String afkBroadcastAway = "%s is now AFK"; + public static String afkBroadcastBack = "%s is no longer AFK"; + public static boolean afkBroadcastUseDisplayName = false; + public static String afkTabListPrefix = "[AFK] "; + public static String afkTabListSuffix = ""; + private static void messages() { ++ cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); + afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); + afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); + afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName); +@@ -236,8 +238,14 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } -+ + +- public static String cannotRideMob = "You cannot mount that mob"; +- private static void messages() { +- cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); + public static boolean loggerSuppressInitLegacyMaterialError = false; + public static boolean loggerSuppressIgnoredAdvancementWarnings = false; + public static boolean loggerSuppressUnrecognizedRecipeErrors = false; @@ -70,5 +87,5 @@ index dba0de7594851560706afaeb5e56f8c5574da303..c875d0351a32fa5bd75f4f440d662383 + loggerSuppressIgnoredAdvancementWarnings = getBoolean("settings.logger.suppress-ignored-advancement-warnings", loggerSuppressIgnoredAdvancementWarnings); + loggerSuppressUnrecognizedRecipeErrors = getBoolean("settings.logger.suppress-unrecognized-recipe-errors", loggerSuppressUnrecognizedRecipeErrors); + loggerSuppressSetBlockFarChunk = getBoolean("settings.logger.suppress-setblock-in-far-chunk-errors", loggerSuppressSetBlockFarChunk); -+ } + } } diff --git a/patches/server/0021-Disable-outdated-build-check.patch b/patches/server/0022-Disable-outdated-build-check.patch similarity index 100% rename from patches/server/0021-Disable-outdated-build-check.patch rename to patches/server/0022-Disable-outdated-build-check.patch diff --git a/patches/server/0022-Giants-AI-settings.patch b/patches/server/0023-Giants-AI-settings.patch similarity index 94% rename from patches/server/0022-Giants-AI-settings.patch rename to patches/server/0023-Giants-AI-settings.patch index c330654b1..715f8f6a3 100644 --- a/patches/server/0022-Giants-AI-settings.patch +++ b/patches/server/0023-Giants-AI-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 4511b56c6f58336920f1470400f8e120f12f72e6..3d45d1a5091fbf7dd275aebfca336d80a72010b0 100644 +index 8919464efeea5c1f6d10c88d77c4cf52af2b4a91..a73514ab24686f991c1a5bded0684393fffb2efd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -1,13 +1,36 @@ @@ -45,9 +45,9 @@ index 4511b56c6f58336920f1470400f8e120f12f72e6..3d45d1a5091fbf7dd275aebfca336d80 public class Giant extends Monster { public Giant(EntityType type, Level world) { -@@ -22,6 +45,53 @@ public class Giant extends Monster { - this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level.purpurConfig.giantAttackDamage); +@@ -45,6 +68,53 @@ public class Giant extends Monster { } + // Purpur end + @Override + protected void registerGoals() { @@ -99,7 +99,7 @@ index 4511b56c6f58336920f1470400f8e120f12f72e6..3d45d1a5091fbf7dd275aebfca336d80 @Override protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return 10.440001F; -@@ -33,6 +103,6 @@ public class Giant extends Monster { +@@ -56,6 +126,6 @@ public class Giant extends Monster { @Override public float getWalkTargetValue(BlockPos pos, LevelReader world) { @@ -108,7 +108,7 @@ index 4511b56c6f58336920f1470400f8e120f12f72e6..3d45d1a5091fbf7dd275aebfca336d80 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c8df1eca97b510559482d41b28569df0e9934b3d..71333fd7ea1cde870bb1d76959d1b599d8c6376d 100644 +index 40354fc7dd9d0dc35c7e45b95b114713862e41fe..4e3fc06a58722800b6257df15f2a577227660d66 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -400,6 +400,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0023-Zombie-horse-naturally-spawn.patch b/patches/server/0024-Zombie-horse-naturally-spawn.patch similarity index 93% rename from patches/server/0023-Zombie-horse-naturally-spawn.patch rename to patches/server/0024-Zombie-horse-naturally-spawn.patch index 6ce592895..00db8c4c1 100644 --- a/patches/server/0023-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0024-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 42d5b4ffc51da90a8f3bbec84e44ac2b0cb7b5ee..ac9f7e786d2e2042b8694a4ddd2f806758f9ea50 100644 +index 9168a02ede5b2fc924dbcf0063109f8e72d94d61..e2b1433034b1ab9bad821983515a37fd12ba4b37 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -873,10 +873,18 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -874,10 +874,18 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper if (flag1) { @@ -30,7 +30,7 @@ index 42d5b4ffc51da90a8f3bbec84e44ac2b0cb7b5ee..ac9f7e786d2e2042b8694a4ddd2f8067 entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 71333fd7ea1cde870bb1d76959d1b599d8c6376d..9e0017fb69ea24c866fe78f0dc7cc90cfdb17517 100644 +index 4e3fc06a58722800b6257df15f2a577227660d66..d902600e12ecd976ffd5eb4ec572dcf54fd50b54 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1021,6 +1021,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0024-Charged-creeper-naturally-spawn.patch b/patches/server/0025-Charged-creeper-naturally-spawn.patch similarity index 90% rename from patches/server/0024-Charged-creeper-naturally-spawn.patch rename to patches/server/0025-Charged-creeper-naturally-spawn.patch index b0fcc43c6..444b8d867 100644 --- a/patches/server/0024-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0025-Charged-creeper-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Charged creeper naturally spawn diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index d2d7ca4666d4cfd43dfcc8697e0957921bc48e61..9658611850a266ee1acf347d3f90cf4922a89d3c 100644 +index e208a743d161f53944cb5756041522658c3c9ce6..19c8fb5ab8c7818679919de07664df7dc8d54e91 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -178,6 +178,14 @@ public class Creeper extends Monster implements PowerableMob { +@@ -255,6 +255,14 @@ public class Creeper extends Monster implements PowerableMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.creeperMaxHealth); } @@ -24,7 +24,7 @@ index d2d7ca4666d4cfd43dfcc8697e0957921bc48e61..9658611850a266ee1acf347d3f90cf49 protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9e0017fb69ea24c866fe78f0dc7cc90cfdb17517..51ed3dd68cd723d9865207a6296016eddec71791 100644 +index d902600e12ecd976ffd5eb4ec572dcf54fd50b54..c06893ab41e84e898528b4d3efe043ccb42cf6c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -270,6 +270,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0026-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 91% rename from patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0026-Rabbit-naturally-spawn-toast-and-killer.patch index 2a3518df4..7b4d9b03f 100644 --- a/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0026-Rabbit-naturally-spawn-toast-and-killer.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Rabbit naturally spawn toast and killer diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 1cb36eb937084c6dbc72d33e51c52af6f14c885d..1e8627f92580d791601fddb01f73b281797c06cb 100644 +index c43bb09caa560e9ea4596b5bb167e1273e599ed7..f7a1b15bd29e9c0848141da469acbfb67e8d8e4d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -410,10 +410,23 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -472,10 +472,23 @@ public class Rabbit extends Animal implements VariantHolder { } this.setVariant(entityrabbit_variant); @@ -33,7 +33,7 @@ index 1cb36eb937084c6dbc72d33e51c52af6f14c885d..1e8627f92580d791601fddb01f73b281 int i = world.getRandom().nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 51ed3dd68cd723d9865207a6296016eddec71791..d402acc4bba74963809af86e5348405312781620 100644 +index c06893ab41e84e898528b4d3efe043ccb42cf6c3..9acbc0d0b54229d8d97ce3b0a4e8e93534f89b35 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -704,6 +704,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0027-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 100% rename from patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0027-Fix-outdated-server-showing-in-ping-before-server-fu.patch diff --git a/patches/server/0027-Tulips-change-fox-type.patch b/patches/server/0028-Tulips-change-fox-type.patch similarity index 91% rename from patches/server/0027-Tulips-change-fox-type.patch rename to patches/server/0028-Tulips-change-fox-type.patch index b2db9906c..931bce18d 100644 --- a/patches/server/0027-Tulips-change-fox-type.patch +++ b/patches/server/0028-Tulips-change-fox-type.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Tulips change fox type diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index b75c942e212e6659723c4fea3f06f85a627096f0..5ee2f4d9e0bb97de9cb8bd3b2c4b6280c607b323 100644 +index b143032e87ecd74203e6486eea1248a3f6ce13f1..71fba6fd95f362916e93e89b626dad7c7a72da0b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -35,6 +35,7 @@ import net.minecraft.util.RandomSource; @@ -24,7 +24,7 @@ index b75c942e212e6659723c4fea3f06f85a627096f0..5ee2f4d9e0bb97de9cb8bd3b2c4b6280 import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.phys.Vec3; -@@ -347,6 +349,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -387,6 +389,11 @@ public class Fox extends Animal implements VariantHolder { } private void setTargetGoals() { @@ -36,7 +36,7 @@ index b75c942e212e6659723c4fea3f06f85a627096f0..5ee2f4d9e0bb97de9cb8bd3b2c4b6280 if (this.getVariant() == Fox.Type.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -380,6 +387,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -420,6 +427,7 @@ public class Fox extends Animal implements VariantHolder { public void setVariant(Fox.Type variant) { this.entityData.set(Fox.DATA_TYPE_ID, variant.getId()); @@ -44,7 +44,7 @@ index b75c942e212e6659723c4fea3f06f85a627096f0..5ee2f4d9e0bb97de9cb8bd3b2c4b6280 } List getTrustedUUIDs() { -@@ -716,6 +724,29 @@ public class Fox extends Animal implements VariantHolder { +@@ -756,6 +764,29 @@ public class Fox extends Animal implements VariantHolder { return this.getTrustedUUIDs().contains(uuid); } @@ -75,7 +75,7 @@ index b75c942e212e6659723c4fea3f06f85a627096f0..5ee2f4d9e0bb97de9cb8bd3b2c4b6280 // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d402acc4bba74963809af86e5348405312781620..ebc2aa944fdd6bde9463450387a0dda7462debc5 100644 +index 9acbc0d0b54229d8d97ce3b0a4e8e93534f89b35..b60c5e84d13d7cd51d1203a35a9382c1ff6dec55 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -380,6 +380,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0028-Breedable-Polar-Bears.patch b/patches/server/0029-Breedable-Polar-Bears.patch similarity index 71% rename from patches/server/0028-Breedable-Polar-Bears.patch rename to patches/server/0029-Breedable-Polar-Bears.patch index afcd7530e..f015e689c 100644 --- a/patches/server/0028-Breedable-Polar-Bears.patch +++ b/patches/server/0029-Breedable-Polar-Bears.patch @@ -5,13 +5,34 @@ Subject: [PATCH] Breedable Polar Bears diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 71f75dd1d0c9b77f73138297a1be642c67c78c01..071236ec8534dfce2560ca14c09865fc053ab36a 100644 +index 3f185b02dc23942d2216cf9a8bdc493ffa2e75d9..05739e69f1a11138d7c13bb9d8ca7695753ae40c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -70,6 +70,27 @@ public class PolarBear extends Animal implements NeutralMob { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.polarBearMaxHealth); +@@ -74,17 +74,17 @@ public class PolarBear extends Animal implements NeutralMob { + // Purpur start + @Override + public boolean isRidable() { +- return level.purpurConfig.polarBearRidable; ++ return level().purpurConfig.polarBearRidable; } + @Override + public boolean dismountsUnderwater() { +- return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.polarBearRidableInWater; ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.polarBearRidableInWater; + } + + @Override + public boolean isControllable() { +- return level.purpurConfig.polarBearControllable; ++ return level().purpurConfig.polarBearControllable; + } + + @Override +@@ -99,6 +99,27 @@ public class PolarBear extends Animal implements NeutralMob { + } + // Purpur end + + public boolean canMate(Animal other) { + if (other == this) { + return false; @@ -36,7 +57,7 @@ index 71f75dd1d0c9b77f73138297a1be642c67c78c01..071236ec8534dfce2560ca14c09865fc @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { -@@ -78,7 +99,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -107,7 +128,7 @@ public class PolarBear extends Animal implements NeutralMob { @Override public boolean isFood(ItemStack stack) { @@ -45,12 +66,12 @@ index 71f75dd1d0c9b77f73138297a1be642c67c78c01..071236ec8534dfce2560ca14c09865fc } @Override -@@ -87,6 +108,12 @@ public class PolarBear extends Animal implements NeutralMob { - this.goalSelector.addGoal(0, new FloatGoal(this)); +@@ -117,6 +138,12 @@ public class PolarBear extends Animal implements NeutralMob { + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PolarBear.PolarBearPanicGoal()); + // Purpur start -+ if (level.purpurConfig.polarBearBreedableItem != null) { ++ if (level().purpurConfig.polarBearBreedableItem != null) { + this.goalSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.BreedGoal(this, 1.0D)); + this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, net.minecraft.world.item.crafting.Ingredient.of(level.purpurConfig.polarBearBreedableItem), false)); + } @@ -59,7 +80,7 @@ index 71f75dd1d0c9b77f73138297a1be642c67c78c01..071236ec8534dfce2560ca14c09865fc this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); 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 ebc2aa944fdd6bde9463450387a0dda7462debc5..4d4e44957d4a67aed358d4e2e3161fbab83d1f6c 100644 +index b60c5e84d13d7cd51d1203a35a9382c1ff6dec55..c9327c407d1fce1a80307eb3ad2c4c5c123fba8e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -686,6 +686,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0029-Chickens-can-retaliate.patch b/patches/server/0030-Chickens-can-retaliate.patch similarity index 87% rename from patches/server/0029-Chickens-can-retaliate.patch rename to patches/server/0030-Chickens-can-retaliate.patch index 4d3042cf9..747051fa8 100644 --- a/patches/server/0029-Chickens-can-retaliate.patch +++ b/patches/server/0030-Chickens-can-retaliate.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Chickens can retaliate diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index c7ff22ee963e3d7ca3c5b819b38cca466c5d78c5..7d6307aed4d1c15edf2008715ec90f61aac42046 100644 +index cbaf7993adb03cdb61c8e0cb29a7362b63ae3914..bf281b45979e16551fe4777ff69fb9ef67d1f839 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -57,18 +57,29 @@ public class Chicken extends Animal { +@@ -57,6 +57,9 @@ public class Chicken extends Animal { @Override public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.chickenMaxHealth); @@ -17,9 +17,11 @@ index c7ff22ee963e3d7ca3c5b819b38cca466c5d78c5..7d6307aed4d1c15edf2008715ec90f61 + } } - @Override + // Purpur start +@@ -80,13 +83,21 @@ public class Chicken extends Animal { protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); + // this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); // Purpur - moved down this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); @@ -39,7 +41,7 @@ index c7ff22ee963e3d7ca3c5b819b38cca466c5d78c5..7d6307aed4d1c15edf2008715ec90f61 } @Override -@@ -77,7 +88,7 @@ public class Chicken extends Animal { +@@ -95,7 +106,7 @@ public class Chicken extends Animal { } public static AttributeSupplier.Builder createAttributes() { @@ -49,7 +51,7 @@ index c7ff22ee963e3d7ca3c5b819b38cca466c5d78c5..7d6307aed4d1c15edf2008715ec90f61 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d4e44957d4a67aed358d4e2e3161fbab83d1f6c..6d7ecc73de85f299f2ae315f58927431b399f3f2 100644 +index c9327c407d1fce1a80307eb3ad2c4c5c123fba8e..b8e799b15ab1e4559f3e1aece3d4efa5f1d717a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -240,6 +240,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch b/patches/server/0031-Add-option-to-set-armorstand-step-height.patch similarity index 92% rename from patches/server/0030-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0031-Add-option-to-set-armorstand-step-height.patch index b6014981a..2f89e3926 100644 --- a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0031-Add-option-to-set-armorstand-step-height.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 05c3985cddae94e26fb70657c1add2f87bff8080..cd97c126dd4d15bdcd5f24792f67ce40b870dd2a 100644 +index 9b692140796eb5296a0478fd18d9b33278be6f5d..43d5b06a87909b544d151b238f7479c95c1ac1b2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -321,7 +321,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -30,7 +30,7 @@ index 8a8b9e8983be1acad66ad875c901be5bbdeabb1f..316716b8827b974fa62f7f27d57c3b77 if (!this.canTick) { if (this.noTickPoseDirty) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6d7ecc73de85f299f2ae315f58927431b399f3f2..9e332172eab872fa0b5c480ec723006d26713c8e 100644 +index b8e799b15ab1e4559f3e1aece3d4efa5f1d717a1..213b1be1cb2f22236bdb01575e2ee41eed562012 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -92,6 +92,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0031-Cat-spawning-options.patch b/patches/server/0032-Cat-spawning-options.patch similarity index 97% rename from patches/server/0031-Cat-spawning-options.patch rename to patches/server/0032-Cat-spawning-options.patch index 4ae8816e1..95caace7d 100644 --- a/patches/server/0031-Cat-spawning-options.patch +++ b/patches/server/0032-Cat-spawning-options.patch @@ -51,7 +51,7 @@ index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b663 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9e332172eab872fa0b5c480ec723006d26713c8e..a3995aa84035771aad411d54bf2e41721f0f006d 100644 +index 213b1be1cb2f22236bdb01575e2ee41eed562012..aad4d95b24473a3bdcaa8120c39985b62adb7aa4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -225,6 +225,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0032-Cows-eat-mushrooms.patch b/patches/server/0033-Cows-eat-mushrooms.patch similarity index 93% rename from patches/server/0032-Cows-eat-mushrooms.patch rename to patches/server/0033-Cows-eat-mushrooms.patch index 7b8643c74..b708f0908 100644 --- a/patches/server/0032-Cows-eat-mushrooms.patch +++ b/patches/server/0033-Cows-eat-mushrooms.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 2f45444ad13e5ef3619788b19ec9c16be1f87950..2d8f51fd2f9562ccffe25a965aa02613eed3d71b 100644 +index 9a973e2dc94aa1c8928eea87a6a12789381d15d8..07d60d3f49a4ed67cc4739baddbb41818b557eb1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal; @@ -24,15 +24,15 @@ index 2f45444ad13e5ef3619788b19ec9c16be1f87950..2d8f51fd2f9562ccffe25a965aa02613 import net.minecraft.world.level.block.state.BlockState; // CraftBukkit start import org.bukkit.craftbukkit.event.CraftEventFactory; -@@ -51,6 +53,7 @@ public class Cow extends Animal { - this.goalSelector.addGoal(0, new FloatGoal(this)); +@@ -69,6 +71,7 @@ public class Cow extends Animal { + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); + if (level.purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); -@@ -105,6 +108,10 @@ public class Cow extends Animal { +@@ -124,6 +127,10 @@ public class Cow extends Animal { player.setItemInHand(hand, itemstack1); return InteractionResult.sidedSuccess(this.level().isClientSide); @@ -43,7 +43,7 @@ index 2f45444ad13e5ef3619788b19ec9c16be1f87950..2d8f51fd2f9562ccffe25a965aa02613 } else { return super.mobInteract(player, hand); } -@@ -120,4 +127,69 @@ public class Cow extends Animal { +@@ -139,4 +146,69 @@ public class Cow extends Animal { protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return this.isBaby() ? dimensions.height * 0.95F : 1.3F; } @@ -114,7 +114,7 @@ index 2f45444ad13e5ef3619788b19ec9c16be1f87950..2d8f51fd2f9562ccffe25a965aa02613 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3995aa84035771aad411d54bf2e41721f0f006d..c9a48e01a63ccefa152b5ae13a8b5f40337a69b5 100644 +index aad4d95b24473a3bdcaa8120c39985b62adb7aa4..b3f8077b7a27a0298d88a651cb93b4028f2621ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -273,6 +273,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0034-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 88% rename from patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0034-Fix-cow-rotation-when-shearing-mooshroom.patch index e768c0b09..55ccb3d54 100644 --- a/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch +++ b/patches/server/0034-Fix-cow-rotation-when-shearing-mooshroom.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix cow rotation when shearing mooshroom diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 9e5a1d8a406ad43d762f421a2589f649402b6f7d..841d97651827c24350854fa16f9c65e8daf70d55 100644 +index 2eac9d3c1069f79c3fcbfb87518b5d5d1e17c6dd..3e798a9d94963dc39ec4a81265fa659b6cfe5db8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -185,7 +185,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dadd4d888c5202a5a95a712b4d5fd406bf8c0d7d..00dcdad8775519b8bc2d184902a5a2b66e2eaaa4 100644 +index dc0041c9edd87032937b3f0e4850e3c9a09362a4..c173ec973eecc8c79a75da3de349404ee455fb0f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,6 +97,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0041-Option-to-toggle-milk-curing-bad-omen.patch similarity index 95% rename from patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0041-Option-to-toggle-milk-curing-bad-omen.patch index 66c283e2d..e63b8e6cf 100644 --- a/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0041-Option-to-toggle-milk-curing-bad-omen.patch @@ -28,7 +28,7 @@ index f33977d95b6db473be4f95075ba99caf90ad0220..56dc04d8875971ee9a5d077a695509af return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 00dcdad8775519b8bc2d184902a5a2b66e2eaaa4..6e29f232f602e939f30e35a575749d23160e61ae 100644 +index c173ec973eecc8c79a75da3de349404ee455fb0f..fbc7685ad34c67180a54e967a48355db349d46e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,8 +98,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0042-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/server/0042-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/server/0042-Skip-events-if-there-s-no-listeners.patch b/patches/server/0043-Skip-events-if-there-s-no-listeners.patch similarity index 100% rename from patches/server/0042-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0043-Skip-events-if-there-s-no-listeners.patch diff --git a/patches/server/0043-Add-permission-for-F3-N-debug.patch b/patches/server/0044-Add-permission-for-F3-N-debug.patch similarity index 89% rename from patches/server/0043-Add-permission-for-F3-N-debug.patch rename to patches/server/0044-Add-permission-for-F3-N-debug.patch index c02429d97..1f7e4ba40 100644 --- a/patches/server/0043-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0044-Add-permission-for-F3-N-debug.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index d90c2b0f304c4900b3308903702c0ef489b9f511..32a693c323f812bce2f9d0df57b3357333bb8fab 100644 +index b17b953d089e84026707f4ddc28b9b9718099d2a..bacce71fe2616068d45bee9cf12a1a3b3326b98e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1155,6 +1155,7 @@ public abstract class PlayerList { diff --git a/patches/server/0044-Configurable-TPS-Catchup.patch b/patches/server/0045-Configurable-TPS-Catchup.patch similarity index 89% rename from patches/server/0044-Configurable-TPS-Catchup.patch rename to patches/server/0045-Configurable-TPS-Catchup.patch index acbf89728..85b530b1f 100644 --- a/patches/server/0044-Configurable-TPS-Catchup.patch +++ b/patches/server/0045-Configurable-TPS-Catchup.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1c9c9260c442f3173d60b3ed564d8c3eee862628..baff72c3f9ec458dbdc179d0869b29e34bd7a755 100644 +index 75d15b7c157fea129a730a0f48ae9ea71f13d533..d9f3613381cf7166e0b504a4370420e1d0fadc4e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1175,7 +1175,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 8623192215e428fede1c6bc57001e444b5476db3..5bf96ff879318ea1be45f89b8689b6739ed9ca5b 100644 +index fd77ea367ff9a8ec6d6c45be9bdd1fb0f4154c9e..4dc8ac6a3e26a619ff4f2d7b907f192766c8281a 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -71,6 +71,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill - this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.wanderingTraderMaxHealth); +@@ -88,6 +88,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } + // Purpur end + @Override + public boolean canBeLeashed(Player player) { @@ -49,7 +49,7 @@ index 8623192215e428fede1c6bc57001e444b5476db3..5bf96ff879318ea1be45f89b8689b673 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 1f493fc2e01277da33c6a79ff7d1395e37cc5ebf..5874ad0a9d3d2e838c15b3cc3c1e8a9992fdfc54 100644 +index d4d5a82c3dd448bb32c2b60f07e5ec289eff89dd..c3f1c669c9fa4e8c2077e948b6de65ab9c4c6fe3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1037,6 +1037,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0049-Implement-infinite-liquids.patch b/patches/server/0050-Implement-infinite-liquids.patch similarity index 97% rename from patches/server/0049-Implement-infinite-liquids.patch rename to patches/server/0050-Implement-infinite-liquids.patch index b555fbe42..f787866ed 100644 --- a/patches/server/0049-Implement-infinite-liquids.patch +++ b/patches/server/0050-Implement-infinite-liquids.patch @@ -67,7 +67,7 @@ index 82e85fbbd45244d02df90fa00c9046e7f51275a2..ec6c63075306f9e5389e83641d2c8a82 @Override protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5874ad0a9d3d2e838c15b3cc3c1e8a9992fdfc54..88978de01b75526802436714f6a9493d2eb4b0d9 100644 +index c3f1c669c9fa4e8c2077e948b6de65ab9c4c6fe3..a759adea89cc44add6fe22c626e9978bda8f3bbe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -227,6 +227,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0050-Make-lava-flow-speed-configurable.patch b/patches/server/0051-Make-lava-flow-speed-configurable.patch similarity index 95% rename from patches/server/0050-Make-lava-flow-speed-configurable.patch rename to patches/server/0051-Make-lava-flow-speed-configurable.patch index b7acdcca2..0d41a73b9 100644 --- a/patches/server/0050-Make-lava-flow-speed-configurable.patch +++ b/patches/server/0051-Make-lava-flow-speed-configurable.patch @@ -18,7 +18,7 @@ index 3706ebc551413401b0e6a9a0b1c2e3257d1337c1..b77cdbd8a7395e8442081c6a2b14695d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff6bda851c5e7f7b5eba17d059fcda6e5a469db7..6ac57d55bffcf2cec8d8c0369a14919256df1dad 100644 +index a759adea89cc44add6fe22c626e9978bda8f3bbe..e92879a7e0458eeee9b8006bdc64228808cc9e08 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -228,8 +228,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0051-Add-player-death-exp-control-options.patch b/patches/server/0052-Add-player-death-exp-control-options.patch similarity index 92% rename from patches/server/0051-Add-player-death-exp-control-options.patch rename to patches/server/0052-Add-player-death-exp-control-options.patch index 67ee54589..19b4155e5 100644 --- a/patches/server/0051-Add-player-death-exp-control-options.patch +++ b/patches/server/0052-Add-player-death-exp-control-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add player death exp control options 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 9c118a5ebeb1fb473f8038b3cb4a157dc0084413..d37080e74a7ce5442e4290eecb6352019b30fdb3 100644 +index 7b39cb5346925c14f3f144d622ca7e5855420aa6..f67bd221a239d98151e055f444795dea28a07269 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1985,9 +1985,19 @@ public abstract class Player extends LivingEntity { +@@ -1998,9 +1998,19 @@ public abstract class Player extends LivingEntity { @Override public int getExperienceReward() { if (!this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) { @@ -32,7 +32,7 @@ index 9c118a5ebeb1fb473f8038b3cb4a157dc0084413..d37080e74a7ce5442e4290eecb635201 return 0; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6ac57d55bffcf2cec8d8c0369a14919256df1dad..df98fd64b51dd0352f48b6c666e277d113ebdcf1 100644 +index e92879a7e0458eeee9b8006bdc64228808cc9e08..b0e70dd59fd488f4c094326aae2647e08a2ee758 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -175,6 +175,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0052-Configurable-void-damage-height-and-damage.patch b/patches/server/0053-Configurable-void-damage-height-and-damage.patch similarity index 89% rename from patches/server/0052-Configurable-void-damage-height-and-damage.patch rename to patches/server/0053-Configurable-void-damage-height-and-damage.patch index 2bce9e048..6bfd653ec 100644 --- a/patches/server/0052-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0053-Configurable-void-damage-height-and-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable void damage height and damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index cd97c126dd4d15bdcd5f24792f67ce40b870dd2a..6a3ab6ad06b7ae33549cdfa52e717bbae1fe78ca 100644 +index 43d5b06a87909b544d151b238f7479c95c1ac1b2..f5ae3d265fa190af4d8205ffa45ce053fe0c7ddc 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -834,7 +834,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -18,10 +18,10 @@ index cd97c126dd4d15bdcd5f24792f67ce40b870dd2a..6a3ab6ad06b7ae33549cdfa52e717bba && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ac0f725634029c12bd236df4bfcc857b5226f96c..ea190b4a87daad0ac9dcd73fd4de7d24fa9d6a4a 100644 +index a97f8fe12e2d4390fa3811335ffa3e3c9ef4aec6..2ac30426faa256dbfac48c0accab53a9c72809b9 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2480,7 +2480,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2481,7 +2481,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @Override protected void onBelowWorld() { @@ -31,7 +31,7 @@ index ac0f725634029c12bd236df4bfcc857b5226f96c..ea190b4a87daad0ac9dcd73fd4de7d24 protected void updateSwingTime() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df98fd64b51dd0352f48b6c666e277d113ebdcf1..81c25f1498868d75107ec050fa95d02f2c0afea1 100644 +index b0e70dd59fd488f4c094326aae2647e08a2ee758..5b41745fdc55441d1b8ac89571d690ef506462bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -100,10 +100,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0053-Add-canSaveToDisk-to-Entity.patch b/patches/server/0054-Add-canSaveToDisk-to-Entity.patch similarity index 89% rename from patches/server/0053-Add-canSaveToDisk-to-Entity.patch rename to patches/server/0054-Add-canSaveToDisk-to-Entity.patch index 7e1f67a41..add0535dd 100644 --- a/patches/server/0053-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0054-Add-canSaveToDisk-to-Entity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add canSaveToDisk to Entity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6a3ab6ad06b7ae33549cdfa52e717bbae1fe78ca..b26e19f67767ef5d0da819be44f0ca0aabc2bdbb 100644 +index f5ae3d265fa190af4d8205ffa45ce053fe0c7ddc..cfef8dec1a96c97bd087ed6dc55eadae4feae079 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -473,6 +473,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -20,10 +20,10 @@ index 6a3ab6ad06b7ae33549cdfa52e717bbae1fe78ca..b26e19f67767ef5d0da819be44f0ca0a return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index cc51c88788e52c35447ff4c3dffaf8ac50474990..87a0d264d9b54e1b0b29f49431212c977864a30a 100644 +index 1fcf73cfe789bfe89c5ac01d4bd260e8d7dc0fc0..0ecbee51a48171cad95cc80bd26644774064fead 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -194,6 +194,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -314,6 +314,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob vec3d = vec3d.add(vec3d2.x * 0.3D - vec3d.x * 0.6D, 0.0D, vec3d2.z * 0.3D - vec3d.z * 0.6D); } } diff --git a/patches/server/0054-Dispenser-curse-of-binding-protection.patch b/patches/server/0055-Dispenser-curse-of-binding-protection.patch similarity index 94% rename from patches/server/0054-Dispenser-curse-of-binding-protection.patch rename to patches/server/0055-Dispenser-curse-of-binding-protection.patch index 1c560e548..38ab9cd49 100644 --- a/patches/server/0054-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0055-Dispenser-curse-of-binding-protection.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dispenser curse of binding protection diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index e62de6ba4836da2c2a389c753ac0865f9b0184a6..fdd0acaaf69f9325feaf8167e8122191a0c7e9d7 100644 +index c68952d8f565ca14855fb43d9f8ea40bab27764f..1b18532360b9508a08ea46b48331acad3e37c049 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -65,6 +65,7 @@ import net.minecraft.world.item.ProjectileWeaponItem; @@ -43,7 +43,7 @@ index d7a0cbde8f8c99276307502674c71463fbe7e89c..3500c56cb85d8c76b2acd77976d374ea // CraftBukkit start Level world = pointer.getLevel(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 81c25f1498868d75107ec050fa95d02f2c0afea1..c6856ca91aed12bab95c115e5f3bc6d01ef75594 100644 +index 5b41745fdc55441d1b8ac89571d690ef506462bd..4f46aa379b18f526c9826722b8d5fbf44cbf17d3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -230,6 +230,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0056-Add-option-for-boats-to-eject-players-on-land.patch similarity index 95% rename from patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0056-Add-option-for-boats-to-eject-players-on-land.patch index e64854a3d..d2a69926c 100644 --- a/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0056-Add-option-for-boats-to-eject-players-on-land.patch @@ -17,7 +17,7 @@ index 35aeba4e8430e6419caa9db4a0b931a994228618..5e33f19193ff49d0d2119d811d8f81d0 } else { return Boat.Status.IN_AIR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c6856ca91aed12bab95c115e5f3bc6d01ef75594..93fd114bc45fe40eb19c5a7789bef1edd8f359e0 100644 +index 4f46aa379b18f526c9826722b8d5fbf44cbf17d3..f1d2f1a63ea62b4475f8c4a7f55f4c491b567022 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,12 +97,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0056-Mending-mends-most-damages-equipment-first.patch b/patches/server/0057-Mending-mends-most-damages-equipment-first.patch similarity index 98% rename from patches/server/0056-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0057-Mending-mends-most-damages-equipment-first.patch index 84d47957a..f0a04eba7 100644 --- a/patches/server/0056-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0057-Mending-mends-most-damages-equipment-first.patch @@ -73,7 +73,7 @@ index ecf640b00007a386290f8dfe9935a8aa610079fd..2048899f8e4c8211e8dde0d11148d647 public static Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { return getRandomItemWith(enchantment, entity, (stack) -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 93fd114bc45fe40eb19c5a7789bef1edd8f359e0..853284560fdb47e4861dfdb84bcd317801d028e3 100644 +index f1d2f1a63ea62b4475f8c4a7f55f4c491b567022..0552b09400749fd9a711d081e8940f8bba0bcc8d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,6 +97,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0057-Add-5-second-tps-average-in-tps.patch b/patches/server/0058-Add-5-second-tps-average-in-tps.patch similarity index 98% rename from patches/server/0057-Add-5-second-tps-average-in-tps.patch rename to patches/server/0058-Add-5-second-tps-average-in-tps.patch index 8268b7c6c..f73d56132 100644 --- a/patches/server/0057-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0058-Add-5-second-tps-average-in-tps.patch @@ -27,7 +27,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216 setListData(vector); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index baff72c3f9ec458dbdc179d0869b29e34bd7a755..cd883e14611cdb5ab74861b669e64a6445d9de9c 100644 +index d9f3613381cf7166e0b504a4370420e1d0fadc4e..6e5bfabe11da547f28b1d56e5a279ae5d9bb3c54 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -305,7 +305,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0.0D) { @@ -48,7 +48,7 @@ index 90ebbd8666a934fc3dce655a44cf4270a02d1bb1..098e5af37585488d667909fef4e06aff } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aeb6b723f59a391e9933ae4d1f01b845d2e709e7..84185a51eb9a9f6deef193a37d2fcb3dde120093 100644 +index f553c681956dc6d93c0bf864d054a25ce6236115..e62c71804a0595574e49cd08ce11eee52eab7479 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -246,6 +246,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0071-Squid-EAR-immunity.patch b/patches/server/0072-Squid-EAR-immunity.patch similarity index 95% rename from patches/server/0071-Squid-EAR-immunity.patch rename to patches/server/0072-Squid-EAR-immunity.patch index 247b2a8b5..303184a54 100644 --- a/patches/server/0071-Squid-EAR-immunity.patch +++ b/patches/server/0072-Squid-EAR-immunity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 84185a51eb9a9f6deef193a37d2fcb3dde120093..d536cb1acaae014292577df098821bce2a3142b3 100644 +index e62c71804a0595574e49cd08ce11eee52eab7479..31ff1a1e9f57f6d5bef77dc1038b5bc51a53ac6f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1097,6 +1097,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0072-Phantoms-burn-in-light.patch b/patches/server/0073-Phantoms-burn-in-light.patch similarity index 91% rename from patches/server/0072-Phantoms-burn-in-light.patch rename to patches/server/0073-Phantoms-burn-in-light.patch index 1dce7f9c4..60b110b6d 100644 --- a/patches/server/0072-Phantoms-burn-in-light.patch +++ b/patches/server/0073-Phantoms-burn-in-light.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 07070846057b80eb24e6afa4ddcf39221df0c7b3..ca46d91d75de8aaf39a16141bba593be94cbc45f 100644 +index 5a44bead0ad10deb4ec7d90c86305ae178632e6c..b230733d72843f3142c26cc7d0e9bf93054fc628 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -16,7 +16,7 @@ index 07070846057b80eb24e6afa4ddcf39221df0c7b3..ca46d91d75de8aaf39a16141bba593be public Phantom(EntityType type, Level world) { super(type, world); -@@ -162,7 +163,12 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -222,7 +223,12 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { @@ -27,10 +27,10 @@ index 07070846057b80eb24e6afa4ddcf39221df0c7b3..ca46d91d75de8aaf39a16141bba593be + if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - Configurable Burning + if (getRider() == null || !this.isControllable()) + // Purpur end + if (getRider() == null || !this.isControllable()) // Purpur this.setSecondsOnFire(8); } - -@@ -436,6 +442,12 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -514,6 +520,12 @@ public class Phantom extends FlyingMob implements Enemy { return false; } else if (!entityliving.isAlive()) { return false; @@ -43,7 +43,7 @@ index 07070846057b80eb24e6afa4ddcf39221df0c7b3..ca46d91d75de8aaf39a16141bba593be } else { if (entityliving instanceof Player) { Player entityhuman = (Player) entityliving; -@@ -581,6 +593,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -659,6 +671,7 @@ public class Phantom extends FlyingMob implements Enemy { this.nextScanTick = reducedTickDelay(60); List list = Phantom.this.level().getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D)); @@ -52,7 +52,7 @@ index 07070846057b80eb24e6afa4ddcf39221df0c7b3..ca46d91d75de8aaf39a16141bba593be list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d536cb1acaae014292577df098821bce2a3142b3..25fd73c046f62848cbe016f5f9dfce2d2b2a03c6 100644 +index 31ff1a1e9f57f6d5bef77dc1038b5bc51a53ac6f..4f5f144127787b5deaca89f5fa97551c8caf4c28 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -875,6 +875,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0073-Configurable-villager-breeding.patch b/patches/server/0074-Configurable-villager-breeding.patch similarity index 89% rename from patches/server/0073-Configurable-villager-breeding.patch rename to patches/server/0074-Configurable-villager-breeding.patch index d172a7f2d..6a5ed0ea2 100644 --- a/patches/server/0073-Configurable-villager-breeding.patch +++ b/patches/server/0074-Configurable-villager-breeding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager breeding diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index d2fcf2121ff9765fed268b2984a865329d27a17a..8144e3c60bc586bd48677a1d1af3b20f1a1fa337 100644 +index e258d5b83e5cb517b9fe2e2818391f0666cacd84..26d7b7de2dc2b59224311bc9541a5f0f0f386277 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -755,7 +755,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -779,7 +779,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { @@ -18,7 +18,7 @@ index d2fcf2121ff9765fed268b2984a865329d27a17a..8144e3c60bc586bd48677a1d1af3b20f private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 25fd73c046f62848cbe016f5f9dfce2d2b2a03c6..6c9a5b5696b042d5e9358fc5261b8965bdfaf01f 100644 +index 4f5f144127787b5deaca89f5fa97551c8caf4c28..da232210c18f9389dd51a30f4bf72b4e913513c2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1201,6 +1201,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0074-Redstone-deactivates-spawners.patch b/patches/server/0075-Redstone-deactivates-spawners.patch similarity index 94% rename from patches/server/0074-Redstone-deactivates-spawners.patch rename to patches/server/0075-Redstone-deactivates-spawners.patch index 84bf91722..7600fd511 100644 --- a/patches/server/0074-Redstone-deactivates-spawners.patch +++ b/patches/server/0075-Redstone-deactivates-spawners.patch @@ -17,7 +17,7 @@ index 8fdbc603486ff8a902b6327bc2acfb86a806626e..cb9acec46677048bd8ffbb0e3f2f0378 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c9a5b5696b042d5e9358fc5261b8965bdfaf01f..2de35edebea612a2a0152fa7b9a504be27412d23 100644 +index da232210c18f9389dd51a30f4bf72b4e913513c2..bb136d077690654a8fa62a2aad73134487d07bd9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -358,6 +358,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0075-Totems-work-in-inventory.patch b/patches/server/0076-Totems-work-in-inventory.patch similarity index 91% rename from patches/server/0075-Totems-work-in-inventory.patch rename to patches/server/0076-Totems-work-in-inventory.patch index a9e3f927e..5766cdb34 100644 --- a/patches/server/0075-Totems-work-in-inventory.patch +++ b/patches/server/0076-Totems-work-in-inventory.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 098e5af37585488d667909fef4e06aff5ce578fc..f8ed307bcc19eb5e0f3b9709fda623b1b2af9ae9 100644 +index 637d90f2f5e9f8807516a757ef82d5b2014c752b..1d0d22c9d3b8c907502b8fb044ebf8c5c49f6885 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1591,6 +1591,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1592,6 +1592,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -28,7 +28,7 @@ index 098e5af37585488d667909fef4e06aff5ce578fc..f8ed307bcc19eb5e0f3b9709fda623b1 EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemstack == null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2de35edebea612a2a0152fa7b9a504be27412d23..8467324a614a9181345fea7f125da6bb5ee61380 100644 +index bb136d077690654a8fa62a2aad73134487d07bd9..37f72c2812c8041a36fd7ec117e9274a8f2817c0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -247,6 +247,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch similarity index 89% rename from patches/server/0076-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0077-Add-vindicator-johnny-spawn-chance.patch index 8a8bb6394..09dce36c5 100644 --- a/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add vindicator johnny spawn chance diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 3bf6463d356f3ba64c2d5279cbf79c289fc09a8f..886d42e847b400f166ccbdf7a0f61744080a8b54 100644 +index fdbcf72f35b6801fed4db127710a72579c823fe1..db832e9c8287d0f62db65ff3a2d2625541758762 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -135,6 +135,12 @@ public class Vindicator extends AbstractIllager { +@@ -154,6 +154,12 @@ public class Vindicator extends AbstractIllager { RandomSource randomSource = world.getRandom(); this.populateDefaultEquipmentSlots(randomSource, difficulty); this.populateDefaultEquipmentEnchantments(randomSource, difficulty); @@ -22,7 +22,7 @@ index 3bf6463d356f3ba64c2d5279cbf79c289fc09a8f..886d42e847b400f166ccbdf7a0f61744 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8467324a614a9181345fea7f125da6bb5ee61380..854cbab07bed9848ef3975d53e7c3632480b2c99 100644 +index 37f72c2812c8041a36fd7ec117e9274a8f2817c0..2af26908978d364e24a6ebbd2ac3a7456f2d0cc3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1222,6 +1222,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0077-Add-option-to-disable-certain-block-updates.patch b/patches/server/0078-Add-option-to-disable-certain-block-updates.patch similarity index 98% rename from patches/server/0077-Add-option-to-disable-certain-block-updates.patch rename to patches/server/0078-Add-option-to-disable-certain-block-updates.patch index b77822c26..a839d723b 100644 --- a/patches/server/0077-Add-option-to-disable-certain-block-updates.patch +++ b/patches/server/0078-Add-option-to-disable-certain-block-updates.patch @@ -125,10 +125,10 @@ index 910864cfeac085648e6c671b0f9480417324d36e..6bc29eeb5771a3dc9aa23c7d184c8957 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8a1fb43120da98c0c48d557125e59e43335bdb9e..118eae57b4a63bb50ffb34c632122234ce0d2d43 100644 +index 8575753af39d19e485f915e3e12e377c325b4751..e829e215d1fe80cdaf9162268011912081f4c5ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -247,6 +247,15 @@ public class PurpurConfig { +@@ -249,6 +249,15 @@ public class PurpurConfig { allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd); } diff --git a/patches/server/0078-Dispensers-place-anvils-option.patch b/patches/server/0079-Dispensers-place-anvils-option.patch similarity index 96% rename from patches/server/0078-Dispensers-place-anvils-option.patch rename to patches/server/0079-Dispensers-place-anvils-option.patch index 91c7fb21f..597d345ec 100644 --- a/patches/server/0078-Dispensers-place-anvils-option.patch +++ b/patches/server/0079-Dispensers-place-anvils-option.patch @@ -41,7 +41,7 @@ index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..b52a9f05ada86f2d3767dd0d5ba8705e static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 854cbab07bed9848ef3975d53e7c3632480b2c99..63245a2ea4b5b4a8a0f42be0e15dbf1fdba18a7d 100644 +index 2af26908978d364e24a6ebbd2ac3a7456f2d0cc3..e9275427cc3337091054842558ec22c9bc34b419 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -321,8 +321,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0079-Allow-anvil-colors.patch b/patches/server/0080-Allow-anvil-colors.patch similarity index 98% rename from patches/server/0079-Allow-anvil-colors.patch rename to patches/server/0080-Allow-anvil-colors.patch index 821861605..586778c09 100644 --- a/patches/server/0079-Allow-anvil-colors.patch +++ b/patches/server/0080-Allow-anvil-colors.patch @@ -64,7 +64,7 @@ index b500a04b8135604f0159a741b3d228c9e87b2a46..6fc5699ad90127dc48fa9ff5cb6ba536 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 63245a2ea4b5b4a8a0f42be0e15dbf1fdba18a7d..cc7809cbff311ccf28b85139d21d3ba9b7c5660d 100644 +index e9275427cc3337091054842558ec22c9bc34b419..2c7417affdf20fe15303d5f604530a8a3aba0060 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -299,6 +299,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 88% rename from patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch index 8065f5b0b..e3b6b13be 100644 --- a/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to disable dolphin treasure searching diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 376fe57c3518d42c887726338b15f59d072d8d87..1c8e81fd2561535a04d55238ad086a6cc6851d5d 100644 +index d8395f47cdf5ceffc1c65442e9d632847d22cca6..584b812c86d4f7180d971b5ad263c549dec51e61 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -406,6 +406,7 @@ public class Dolphin extends WaterAnimal { +@@ -481,6 +481,7 @@ public class Dolphin extends WaterAnimal { @Override public boolean canUse() { @@ -17,7 +17,7 @@ index 376fe57c3518d42c887726338b15f59d072d8d87..1c8e81fd2561535a04d55238ad086a6c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cc7809cbff311ccf28b85139d21d3ba9b7c5660d..e4a04774f9951919f3f732aef3072da2037e1efc 100644 +index 2c7417affdf20fe15303d5f604530a8a3aba0060..ab550704781b799222aa0fe58dfe817ea31222e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -522,6 +522,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0081-Short-enderman-height.patch b/patches/server/0082-Short-enderman-height.patch similarity index 82% rename from patches/server/0081-Short-enderman-height.patch rename to patches/server/0082-Short-enderman-height.patch index 235af9dca..0c5b30b01 100644 --- a/patches/server/0081-Short-enderman-height.patch +++ b/patches/server/0082-Short-enderman-height.patch @@ -19,22 +19,22 @@ index b7e3efcca0b544440f8799a3be27e9288a55ca77..b144543131bb756294e02e05f83002fe private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index d1602c71f96d817d212582737dc6ec5db1c4f79a..b74466455959c2355e40100004eed350205facdc 100644 +index 945abc20319819cca2631876cb0abca07f7a730a..ba7d9d2b6927dd20e82009d57d77f713ab9be8ab 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -403,6 +403,7 @@ public class EnderMan extends Monster implements NeutralMob { - public boolean hurt(DamageSource source, float amount) { - if (this.isInvulnerableTo(source)) { +@@ -267,6 +267,7 @@ public class EnderMan extends Monster implements NeutralMob { + + if (itemstack.is(Blocks.CARVED_PUMPKIN.asItem())) { return false; + } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height } else { - boolean flag = source.getDirectEntity() instanceof ThrownPotion; - boolean flag1; + Vec3 vec3d = player.getViewVector(1.0F).normalize(); + Vec3 vec3d1 = new Vec3(this.getX() - player.getX(), this.getEyeY() - player.getEyeY(), this.getZ() - player.getZ()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 118eae57b4a63bb50ffb34c632122234ce0d2d43..763b3753fd77766475114226db593b7ce941336a 100644 +index e829e215d1fe80cdaf9162268011912081f4c5ee..db4c85cae58805cfa2a460e33a13e85abc8e593d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -242,6 +242,12 @@ public class PurpurConfig { +@@ -244,6 +244,12 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } diff --git a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch b/patches/server/0083-Stop-squids-floating-on-top-of-water.patch similarity index 86% rename from patches/server/0082-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0083-Stop-squids-floating-on-top-of-water.patch index 83012cc56..61a2a6a82 100644 --- a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0083-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b26e19f67767ef5d0da819be44f0ca0aabc2bdbb..4813c72c4f828ee205fa4b3abaac11b4a6a482df 100644 +index cfef8dec1a96c97bd087ed6dc55eadae4feae079..aba657afb169a5cd563030e08f4c11305bd5a482 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4277,6 +4277,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -4292,6 +4292,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.yRotO = this.getYRot(); } @@ -22,12 +22,12 @@ index b26e19f67767ef5d0da819be44f0ca0aabc2bdbb..4813c72c4f828ee205fa4b3abaac11b4 if (this.touchingUnloadedChunk()) { return false; diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 55ca4f5e136cd902b2df425c8e65b12bfb45b28e..7922c3288f631dda9272951203d2a69a0cf993f5 100644 +index 47842db438bac4c571a11306b0621f30832bbd68..12235bede3232fbe8ffc5ec07cf3e16d5a08517f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -55,6 +55,12 @@ public class Squid extends WaterAnimal { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.squidMaxHealth); +@@ -77,6 +77,12 @@ public class Squid extends WaterAnimal { } + // Purpur end + @Override + public net.minecraft.world.phys.AABB getAxisForFluidCheck() { @@ -54,7 +54,7 @@ index ffc76354ead6937daf366c3d87bcb51d3e4c47f5..5b98d42b5d6bc07265fbb017e51a6281 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e4a04774f9951919f3f732aef3072da2037e1efc..a5cb13ac94d966d95c84aa3bb88fc7170e25c558 100644 +index ab550704781b799222aa0fe58dfe817ea31222e0..489e3f9d068d7987d2a676b3e567929775aeca17 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1122,6 +1122,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0084-Crying-obsidian-valid-for-portal-frames.patch similarity index 92% rename from patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0084-Crying-obsidian-valid-for-portal-frames.patch index 75f005b5c..68002cd70 100644 --- a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0084-Crying-obsidian-valid-for-portal-frames.patch @@ -18,10 +18,10 @@ index c461e0d04047db9c0c5ecc04063cebd38bf96ec2..e7554ec800f321e4e34c926c53f2375a private static final float SAFE_TRAVEL_MAX_ENTITY_XY = 4.0F; private static final double SAFE_TRAVEL_MAX_VERTICAL_DELTA = 1.0D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 763b3753fd77766475114226db593b7ce941336a..a5d8ed8cc7b28d3fb88d04ff7f7995483f60c0a2 100644 +index db4c85cae58805cfa2a460e33a13e85abc8e593d..ba4dc732327e7661d39929dfa330a5b29cce9269 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -210,6 +210,7 @@ public class PurpurConfig { +@@ -212,6 +212,7 @@ public class PurpurConfig { public static int barrelRows = 3; public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; @@ -29,7 +29,7 @@ index 763b3753fd77766475114226db593b7ce941336a..a5d8ed8cc7b28d3fb88d04ff7f799548 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -240,6 +241,7 @@ public class PurpurConfig { +@@ -242,6 +243,7 @@ public class PurpurConfig { enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows); org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); diff --git a/patches/server/0084-Entities-can-use-portals-configuration.patch b/patches/server/0085-Entities-can-use-portals-configuration.patch similarity index 90% rename from patches/server/0084-Entities-can-use-portals-configuration.patch rename to patches/server/0085-Entities-can-use-portals-configuration.patch index fbf818a57..6e84885a7 100644 --- a/patches/server/0084-Entities-can-use-portals-configuration.patch +++ b/patches/server/0085-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4813c72c4f828ee205fa4b3abaac11b4a6a482df..091702e3946effa1177c1521f7c8c25f611e5c88 100644 +index aba657afb169a5cd563030e08f4c11305bd5a482..9f213ed6b14c24fd9cb5fefb689d72032a883d09 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2984,7 +2984,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2999,7 +2999,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 4813c72c4f828ee205fa4b3abaac11b4a6a482df..091702e3946effa1177c1521f7c8c25f if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3680,7 +3680,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3695,7 +3695,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public boolean canChangeDimensions() { @@ -27,7 +27,7 @@ index 4813c72c4f828ee205fa4b3abaac11b4a6a482df..091702e3946effa1177c1521f7c8c25f public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5cb13ac94d966d95c84aa3bb88fc7170e25c558..8883a6364f0245f2814fab1bdf8ce8da4b625ae0 100644 +index 489e3f9d068d7987d2a676b3e567929775aeca17..7a4658b2eb4fb785809783dbf30c5abecd32c6d8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -100,6 +100,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0085-LivingEntity-broadcastItemBreak.patch b/patches/server/0086-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/server/0085-LivingEntity-broadcastItemBreak.patch rename to patches/server/0086-LivingEntity-broadcastItemBreak.patch diff --git a/patches/server/0086-Customizable-wither-health-and-healing.patch b/patches/server/0087-Customizable-wither-health-and-healing.patch similarity index 90% rename from patches/server/0086-Customizable-wither-health-and-healing.patch rename to patches/server/0087-Customizable-wither-health-and-healing.patch index 1beb6ed87..44decf67a 100644 --- a/patches/server/0086-Customizable-wither-health-and-healing.patch +++ b/patches/server/0087-Customizable-wither-health-and-healing.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Customizable wither health and healing Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often. diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 87a0d264d9b54e1b0b29f49431212c977864a30a..87c5dd63bd4a0dd045b5ff30105217562af7967c 100644 +index 0ecbee51a48171cad95cc80bd26644774064fead..52f6459b0bfff7991da6cb0deda1b15664c4d00b 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -399,8 +399,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -529,8 +529,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } } @@ -23,7 +23,7 @@ index 87a0d264d9b54e1b0b29f49431212c977864a30a..87c5dd63bd4a0dd045b5ff3010521756 this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8883a6364f0245f2814fab1bdf8ce8da4b625ae0..c4fbdb55b9f9b90a7fe6ed6ac84e7e775d163b65 100644 +index 7a4658b2eb4fb785809783dbf30c5abecd32c6d8..0c0c2745a18593ee7da491d0f1b5c0d11aa1a3c4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1273,6 +1273,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch similarity index 95% rename from patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch index cb1782f31..e168fb74b 100644 --- a/patches/server/0087-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ac9f7e786d2e2042b8694a4ddd2f806758f9ea50..51c896fdc802ca33e9b8c5dabb66ebb771d8abd5 100644 +index e2b1433034b1ab9bad821983515a37fd12ba4b37..854e6e73a7fa9c2cd4f0b9beadbff6427c8346e5 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -581,7 +581,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -582,7 +582,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; @@ -59,7 +59,7 @@ index 5d199fe497bd852827d3d18fb7566a09e70331a3..6cd8a50289a6404441e9e5e08d82d2eb if (NaturalSpawner.isSpawnPositionOk(SpawnPlacements.Type.ON_GROUND, world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4fbdb55b9f9b90a7fe6ed6ac84e7e775d163b65..72e47882c87754ba3208f59c945c2347904af51a 100644 +index 0c0c2745a18593ee7da491d0f1b5c0d11aa1a3c4..88f3a76e1b88d70c781eb04c4c3de627d151e3df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -71,6 +71,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0088-Raid-cooldown-setting.patch b/patches/server/0089-Raid-cooldown-setting.patch similarity index 97% rename from patches/server/0088-Raid-cooldown-setting.patch rename to patches/server/0089-Raid-cooldown-setting.patch index c99615af2..d222560ce 100644 --- a/patches/server/0088-Raid-cooldown-setting.patch +++ b/patches/server/0089-Raid-cooldown-setting.patch @@ -49,7 +49,7 @@ index 41457c9f27b18fa2734a6cca297ec5186470e82f..94356e0541f8f4da68211fa533347cc9 if (!this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 72e47882c87754ba3208f59c945c2347904af51a..042fb9536cfa5b5cb243a4c4993f1f98bb792304 100644 +index 88f3a76e1b88d70c781eb04c4c3de627d151e3df..44af2919281fe6afc08401d68ba421e4ea963136 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -111,6 +111,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch similarity index 96% rename from patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch index d939525a4..ba3922ec8 100644 --- a/patches/server/0089-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0090-Despawn-rate-config-options-per-projectile-type.patch @@ -7,7 +7,7 @@ This patch's implementation has been removed in favor of Pufferfish's entity-tim The config remains for migration purposes. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 042fb9536cfa5b5cb243a4c4993f1f98bb792304..628b11a39dd923c8faa5c7963eb369d1a953dfc2 100644 +index 44af2919281fe6afc08401d68ba421e4ea963136..f6ee6a36d85531b5c39bb49c6b5a97dd7eb06444 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -292,6 +292,39 @@ public class PurpurWorldConfig { diff --git a/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 93% rename from patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch index ee95695da..a0204d9d8 100644 --- a/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0091-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -2,7 +2,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: nitricspace Date: Mon, 21 Sep 2020 23:19:43 +0100 Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers - when lagging diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -21,10 +20,10 @@ index a08c00b8c0488d18be5e182f7892e5ab71d12247..338f693d098b6ab507c30f6411c9a952 ignored.add("goal_selector_1"); ignored.add("goal_selector_2"); diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index c5e3a361c5a31ae78156079f9e039ff8adb36151..366f4d7e5e640d1b906dc532ea1e2d323c293a51 100644 +index a27a0de6858aa69caefc436aec3827b365d3d00c..59bfc5df56ef7bab39630f69bc69d122fcd1653e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -103,7 +103,19 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -120,7 +120,19 @@ public class Drowned extends Zombie implements RangedAttackMob { this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Drowned.class})).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget)); @@ -46,10 +45,10 @@ index c5e3a361c5a31ae78156079f9e039ff8adb36151..366f4d7e5e640d1b906dc532ea1e2d32 this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 6f20140adb276c0a08644cc3fb7d6b29982e8697..fddee85b60de8fe75f6a6bab43a0989509850b18 100644 +index a0439eac45376c132f6a1d7142c200e9c925130c..57a1ea56cfc6b0b8fe3a3379c9a602cf46fd8fbd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -137,7 +137,19 @@ public class Zombie extends Monster { +@@ -156,7 +156,19 @@ public class Zombie extends Monster { this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); @@ -71,7 +70,7 @@ index 6f20140adb276c0a08644cc3fb7d6b29982e8697..fddee85b60de8fe75f6a6bab43a09895 this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 628b11a39dd923c8faa5c7963eb369d1a953dfc2..aa2da3d779edc5f45aa2fad5ba0cc82dee2821b3 100644 +index f6ee6a36d85531b5c39bb49c6b5a97dd7eb06444..f211d89ab4035cb59c2b0aeb0781cfd7261b992b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1381,6 +1381,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0092-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0092-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/server/0092-Flying-squids-Oh-my.patch b/patches/server/0093-Flying-squids-Oh-my.patch similarity index 84% rename from patches/server/0092-Flying-squids-Oh-my.patch rename to patches/server/0093-Flying-squids-Oh-my.patch index 06a8bfe97..e52a47e6b 100644 --- a/patches/server/0092-Flying-squids-Oh-my.patch +++ b/patches/server/0093-Flying-squids-Oh-my.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Flying squids! Oh my! diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 213f89b22650f43daaec01e7c301e3e8a7e98684..8d2a915280f7a010483720295077f66684f49615 100644 +index aa155ec559e748c9bbb6ccddaa278ea6bba7ac63..277a5868b3fc4bbb472086b4fb50e905b02621ba 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java -@@ -28,6 +28,11 @@ public class GlowSquid extends Squid { - this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.glowSquidMaxHealth); +@@ -41,6 +41,11 @@ public class GlowSquid extends Squid { } + // Purpur end + @Override + public boolean canFly() { @@ -21,10 +21,10 @@ index 213f89b22650f43daaec01e7c301e3e8a7e98684..8d2a915280f7a010483720295077f666 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 7922c3288f631dda9272951203d2a69a0cf993f5..77ef1ae92dee5bf13590312466c778a249129d69 100644 +index 12235bede3232fbe8ffc5ec07cf3e16d5a08517f..2658be0f3535243b5a434917c9400332246ffcbe 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -61,6 +61,15 @@ public class Squid extends WaterAnimal { +@@ -83,6 +83,15 @@ public class Squid extends WaterAnimal { return super.getAxisForFluidCheck().offsetY(level.purpurConfig.squidOffsetWaterCheck); } @@ -40,7 +40,7 @@ index 7922c3288f631dda9272951203d2a69a0cf993f5..77ef1ae92dee5bf13590312466c778a2 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -@@ -132,6 +141,7 @@ public class Squid extends WaterAnimal { +@@ -155,6 +164,7 @@ public class Squid extends WaterAnimal { } if (this.isInWaterOrBubble()) { @@ -48,7 +48,7 @@ index 7922c3288f631dda9272951203d2a69a0cf993f5..77ef1ae92dee5bf13590312466c778a2 if (this.tentacleMovement < 3.1415927F) { float f = this.tentacleMovement / 3.1415927F; -@@ -259,7 +269,7 @@ public class Squid extends WaterAnimal { +@@ -314,7 +324,7 @@ public class Squid extends WaterAnimal { if (i > 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); @@ -58,7 +58,7 @@ index 7922c3288f631dda9272951203d2a69a0cf993f5..77ef1ae92dee5bf13590312466c778a2 float f1 = Mth.cos(f) * 0.2F; float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aa2da3d779edc5f45aa2fad5ba0cc82dee2821b3..c86d23a5db586bda0272f2985d53cf5e209b6302 100644 +index f211d89ab4035cb59c2b0aeb0781cfd7261b992b..37b6eb3ad99ffe2216bc1fe991c44cbe7b70bd40 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -738,8 +738,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0093-Infinity-bow-settings.patch b/patches/server/0094-Infinity-bow-settings.patch similarity index 97% rename from patches/server/0093-Infinity-bow-settings.patch rename to patches/server/0094-Infinity-bow-settings.patch index 5445a93e8..ce9519b38 100644 --- a/patches/server/0093-Infinity-bow-settings.patch +++ b/patches/server/0094-Infinity-bow-settings.patch @@ -27,7 +27,7 @@ index 08d597db1a5345a343777a01427655e6bf2c926b..33df0ca406dc8321b76b393f317bbd1c } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c86d23a5db586bda0272f2985d53cf5e209b6302..a672ee05bd19950ce4078e15e44068c025ceb1fe 100644 +index 37b6eb3ad99ffe2216bc1fe991c44cbe7b70bd40..1e92e006241e6e8d189081232d2430cfd590586d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -142,6 +142,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0094-Configurable-daylight-cycle.patch b/patches/server/0095-Configurable-daylight-cycle.patch similarity index 91% rename from patches/server/0094-Configurable-daylight-cycle.patch rename to patches/server/0095-Configurable-daylight-cycle.patch index 1b2269c4e..5fb54e2bc 100644 --- a/patches/server/0094-Configurable-daylight-cycle.patch +++ b/patches/server/0095-Configurable-daylight-cycle.patch @@ -18,7 +18,7 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { this.gameTime = time; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index cd883e14611cdb5ab74861b669e64a6445d9de9c..5750934e3cfb1a9d7fc127a5033c504476900981 100644 +index 6e5bfabe11da547f28b1d56e5a279ae5d9bb3c54..1b24b67437b1a677bbd6ea30b32c703fd7eda2a2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1519,7 +1519,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 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 421f08c047af617141f08682742fb81c7e077f94..0fec88e696fe1c0cc241ed296e5a8ad4435e251e 100644 +index 88567bc4f504b00bec3841da194a0bd17abf9ce7..4d14c68c3d5a5ee8070a678740283c5b2938b7bf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -415,6 +415,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0097-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0098-Arrows-should-not-reset-despawn-counter.patch similarity index 95% rename from patches/server/0097-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0098-Arrows-should-not-reset-despawn-counter.patch index b054312a3..7d7437e22 100644 --- a/patches/server/0097-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0098-Arrows-should-not-reset-despawn-counter.patch @@ -20,7 +20,7 @@ index 7226be19248a1ffb8ff2c89b55882529d33a6c0c..57f89ff7ddcd738100f296ae7a21b324 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0fec88e696fe1c0cc241ed296e5a8ad4435e251e..698dff77d5507f8da1170757a77e790598102c30 100644 +index 4d14c68c3d5a5ee8070a678740283c5b2938b7bf..9613301106d4f5ef9121400f8a32205428b6f4bf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -103,6 +103,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0099-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 95% rename from patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0099-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 7f726ffe6..1576d19f7 100644 --- a/patches/server/0098-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0099-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,7 +24,7 @@ index d446b440e2bc5b73362fc3d30a10d2e52fde68e1..d4e3a32a0f9b49bff64cb43d77727ce3 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 698dff77d5507f8da1170757a77e790598102c30..fbde69170f19333faa02552f0bccc4fbaf04ef14 100644 +index 9613301106d4f5ef9121400f8a32205428b6f4bf..90c9d40009d2e93732110915447190b81c902393 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -416,8 +416,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0100-Add-adjustable-breeding-cooldown-to-config.patch similarity index 98% rename from patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0100-Add-adjustable-breeding-cooldown-to-config.patch index 5b682595b..6fcd81b4c 100644 --- a/patches/server/0099-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0100-Add-adjustable-breeding-cooldown-to-config.patch @@ -104,7 +104,7 @@ index 8673d325bd866704ae90ac31eb54f78097eac952..10cff85dd4a59558dd487a3c5c7871a0 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fbde69170f19333faa02552f0bccc4fbaf04ef14..0780e76f12cd36744e5682860cf399634d4d137c 100644 +index 90c9d40009d2e93732110915447190b81c902393..1e1cfe78113742ea865ca56d5bbf01483d2e0a2c 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/0100-Make-entity-breeding-times-configurable.patch b/patches/server/0101-Make-entity-breeding-times-configurable.patch similarity index 84% rename from patches/server/0100-Make-entity-breeding-times-configurable.patch rename to patches/server/0101-Make-entity-breeding-times-configurable.patch index e598e355c..38958454b 100644 --- a/patches/server/0100-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0101-Make-entity-breeding-times-configurable.patch @@ -47,10 +47,10 @@ index e3a0a2914db92c95c894174e3815e3eca8d70826..4643c07bc2a26e7886b714514b7a4a05 entityanimal.resetLove(); worldserver.broadcastEntityEvent(this, (byte) 18); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index cd960eaeb3b86177b962db69173112f746bc52e1..d50f80e1b6ba690c25fb2993f596f2329bd422a3 100644 +index 5c1d0546c014c3a739311c8a8432e5cd1d8cacbc..e0ab585b708fd58db9688fc4631eaacd79a7c8a3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -420,6 +420,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -471,6 +471,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.beeMaxHealth); } @@ -63,12 +63,12 @@ index cd960eaeb3b86177b962db69173112f746bc52e1..d50f80e1b6ba690c25fb2993f596f232 public int getRemainingPersistentAngerTime() { return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 3981a2b7501ceb62562785b2ace5990473919fa0..a47718747f41a80b5aecffdf74aa1095786cf9a3 100644 +index 845781610102d2ef89522619b8059073cc48b75d..a312e8ff4e4cd3328f0586348a2eff3deaf4617d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -102,6 +102,11 @@ public class Cat extends TamableAnimal implements VariantHolder { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.catMaxHealth); +@@ -127,6 +127,11 @@ public class Cat extends TamableAnimal implements VariantHolder { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -79,12 +79,12 @@ index 3981a2b7501ceb62562785b2ace5990473919fa0..a47718747f41a80b5aecffdf74aa1095 return this.getVariant().texture(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index 7d6307aed4d1c15edf2008715ec90f61aac42046..6ade6225e83bab038aab91637a425616cab2853e 100644 +index bf281b45979e16551fe4777ff69fb9ef67d1f839..5ad29dda33d3d7442992b2d47f44d419dda3021b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -62,6 +62,11 @@ public class Chicken extends Animal { - } +@@ -79,6 +79,11 @@ public class Chicken extends Animal { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -95,12 +95,12 @@ index 7d6307aed4d1c15edf2008715ec90f61aac42046..6ade6225e83bab038aab91637a425616 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 2d8f51fd2f9562ccffe25a965aa02613eed3d71b..154829bdef01a0a93f163578ea8e51a0cb3952e5 100644 +index 07d60d3f49a4ed67cc4739baddbb41818b557eb1..fd8ec46ccb691d7f85a7a6bb44e1d0db3703b4d6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -48,6 +48,11 @@ public class Cow extends Animal { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.cowMaxHealth); +@@ -65,6 +65,11 @@ public class Cow extends Animal { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -111,12 +111,12 @@ index 2d8f51fd2f9562ccffe25a965aa02613eed3d71b..154829bdef01a0a93f163578ea8e51a0 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 5ee2f4d9e0bb97de9cb8bd3b2c4b6280c607b323..a80d18398db003ddeaa28aa00e13a0869191695f 100644 +index 71fba6fd95f362916e93e89b626dad7c7a72da0b..2232af2cef82014570596c122e11a47d3ae15b9b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -148,6 +148,11 @@ public class Fox extends Animal implements VariantHolder { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.foxMaxHealth); +@@ -186,6 +186,11 @@ public class Fox extends Animal implements VariantHolder { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -126,7 +126,7 @@ index 5ee2f4d9e0bb97de9cb8bd3b2c4b6280c607b323..a80d18398db003ddeaa28aa00e13a086 @Override protected void defineSynchedData() { super.defineSynchedData(); -@@ -941,8 +946,10 @@ public class Fox extends Animal implements VariantHolder { +@@ -981,8 +986,10 @@ public class Fox extends Animal implements VariantHolder { CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer2, this.animal, this.partner, entityfox); } @@ -140,12 +140,12 @@ index 5ee2f4d9e0bb97de9cb8bd3b2c4b6280c607b323..a80d18398db003ddeaa28aa00e13a086 this.partner.resetLove(); worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 841d97651827c24350854fa16f9c65e8daf70d55..6d7fd5bab1173e99eb8f2b67d202b22abaad28bb 100644 +index 3e798a9d94963dc39ec4a81265fa659b6cfe5db8..6bc5cca1c0896dda25af505e7ff3d68e5e83a54b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -68,6 +68,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.rabbitMaxHealth); +@@ -142,6 +142,11 @@ public class Rabbit extends Animal implements VariantHolder { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -252,12 +252,12 @@ index 1e8627f92580d791601fddb01f73b281797c06cb..c2106749af90e0fa0603ef90be919ef1 public void initializePathFinderGoals(){ this.setSpeedModifier(0.0D); diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 5886a9a40cbac1a97d4213d4a806802359953d18..34ddf57d47dc82b87ad9898c91b7891b8255455f 100644 +index 99ed0cf1bb04df94f3ac3b9acd2076a26d43ab1e..fbaa05f3564aeaf31bfaac34ef0112d11869a2c8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -122,6 +122,11 @@ public class Sheep extends Animal implements Shearable { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.sheepMaxHealth); +@@ -139,6 +139,11 @@ public class Sheep extends Animal implements Shearable { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -268,12 +268,12 @@ index 5886a9a40cbac1a97d4213d4a806802359953d18..34ddf57d47dc82b87ad9898c91b7891b protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index fc98554897f009352f1869d3e5a42d209a8d520c..2f685d2512d8bd3cb41dd1b652ca2c2fb805b83b 100644 +index 68b50ffd17e4061c0dba0fb3452cb86014c88e89..726b53822d115fdd6f8911258ff9fc612a4ad54e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -88,6 +88,11 @@ public class Turtle extends Animal { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.turtleMaxHealth); +@@ -105,6 +105,11 @@ public class Turtle extends Animal { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -284,12 +284,12 @@ index fc98554897f009352f1869d3e5a42d209a8d520c..2f685d2512d8bd3cb41dd1b652ca2c2f this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 123bb0b0a8437935ae5dafbe93b44eb268d1b4c0..d914f8d659404e0e8c499e2cd8bf0a3a6d21905e 100644 +index d74b9426116770ad42b5ceb85ce9a19fe11db74a..3cd49c57d6dc4b0db31c3ac40447c89ce7e193d7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -107,6 +107,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.wolfMaxHealth); +@@ -129,6 +129,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -300,12 +300,12 @@ index 123bb0b0a8437935ae5dafbe93b44eb268d1b4c0..d914f8d659404e0e8c499e2cd8bf0a3a protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index d90bf5a45466525c9a04d54b02d366861423be8f..4ce8b7cfdbbb475e257fe91ea541669361b92173 100644 +index 11f24bf5886ffccd05b8f78ce960fa3c1ad76856..be44bbd6dd3278ae533f07bbd1f4fb3727f177b7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -103,6 +103,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder { - this.setMaxUpStep(1.0F); +@@ -136,6 +136,10 @@ public class Frog extends Animal implements VariantHolder { } + // Purpur end + public int getPurpurBreedTime() { + return this.level.purpurConfig.frogBreedingTicks; @@ -349,12 +349,12 @@ index 22eb0a8fc35baa04b34265b62aa29a71f3cc7343..177db290818ebd80cdcd74c4e86074bf protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 528e7ba29dcd38726b2c1bbc1d8ac208c64ba9df..2c1a6321f46a029ddc1c4e4c0afe07516c874843 100644 +index b1d78fd5674826b021b9f300647b1957daa8ba08..4f7256e6e130be1e84be3b2979b836021460aceb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -89,6 +89,11 @@ public class Goat extends Animal { - return InstrumentItem.create(Items.GOAT_HORN, (Holder) holderset.getRandomElement(randomsource).get()); +@@ -106,6 +106,11 @@ public class Goat extends Animal { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -365,12 +365,12 @@ index 528e7ba29dcd38726b2c1bbc1d8ac208c64ba9df..2c1a6321f46a029ddc1c4e4c0afe0751 protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index d3e8b9ddc42c506f8a0b696becc2ca63414db76f..11dc7cf7cd38994edb6e8c1ed0761e45bc998bfc 100644 +index e0568b3401f42ffd5cfd35da52c0a20d8626776e..a9e04b76c0a3831e6b136136ae15dd9884d68148 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -@@ -30,6 +30,11 @@ public class Donkey extends AbstractChestedHorse { - return generateSpeed(this.level.purpurConfig.donkeyMovementSpeedMin, this.level.purpurConfig.donkeyMovementSpeedMax); +@@ -37,6 +37,11 @@ public class Donkey extends AbstractChestedHorse { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -381,12 +381,12 @@ index d3e8b9ddc42c506f8a0b696becc2ca63414db76f..11dc7cf7cd38994edb6e8c1ed0761e45 protected SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 62f7cdc02e7eb15a96f20ff48470d9869ec82d59..97cbd228dd33333468e545697530bbd14de86308 100644 +index 508111fef316d765d284af31263d5c0dda751774..65fec83d96a02bd3b7c9ba034db95a2bb0833dba 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -55,6 +55,11 @@ public class Horse extends AbstractHorse implements VariantHolder { - return generateSpeed(this.level.purpurConfig.horseMovementSpeedMin, this.level.purpurConfig.horseMovementSpeedMax); +@@ -62,6 +62,11 @@ public class Horse extends AbstractHorse implements VariantHolder { } + // Purpur end + @Override + public int getPurpurBreedTime() { @@ -397,12 +397,12 @@ index 62f7cdc02e7eb15a96f20ff48470d9869ec82d59..97cbd228dd33333468e545697530bbd1 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index fbcd47e656a8d33da08d1d852a959bc7cf3a2394..5d960b40ff2c41e7e21cace33a2655eb8bea7dc9 100644 +index 9dbfefa7311d4c0f6805fce24429bec2739c6c49..80a7bc90fb4040afd2f7f0b19f5f6dbb6f9d13e8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -94,6 +94,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder(this, Llama.class, 24.0F, 1.5D, 1.5D)); @@ -138,7 +139,7 @@ index d914f8d659404e0e8c499e2cd8bf0a3a6d21905e..55b2f060b4e05ba0999acf2ffe46f9b4 this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0D, 10.0F, 2.0F, false)); -@@ -130,7 +200,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -154,7 +224,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -147,7 +148,7 @@ index d914f8d659404e0e8c499e2cd8bf0a3a6d21905e..55b2f060b4e05ba0999acf2ffe46f9b4 this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(7, new NearestAttackableTargetGoal<>(this, AbstractSkeleton.class, false)); this.targetSelector.addGoal(8, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -175,6 +245,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -199,6 +269,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putByte("CollarColor", (byte) this.getCollarColor().getId()); @@ -155,7 +156,7 @@ index d914f8d659404e0e8c499e2cd8bf0a3a6d21905e..55b2f060b4e05ba0999acf2ffe46f9b4 this.addPersistentAngerSaveData(nbt); } -@@ -184,6 +255,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -208,6 +279,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { if (nbt.contains("CollarColor", 99)) { this.setCollarColor(DyeColor.byId(nbt.getInt("CollarColor"))); } @@ -166,7 +167,7 @@ index d914f8d659404e0e8c499e2cd8bf0a3a6d21905e..55b2f060b4e05ba0999acf2ffe46f9b4 this.readPersistentAngerSaveData(this.level(), nbt); } -@@ -228,6 +303,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -252,6 +327,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void tick() { super.tick(); if (this.isAlive()) { @@ -178,7 +179,7 @@ index d914f8d659404e0e8c499e2cd8bf0a3a6d21905e..55b2f060b4e05ba0999acf2ffe46f9b4 this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F; -@@ -437,6 +517,20 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -461,6 +541,20 @@ public class Wolf extends TamableAnimal implements NeutralMob { } else { this.level().broadcastEntityEvent(this, (byte) 6); } @@ -221,7 +222,7 @@ index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f85453 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index abbdb20d10bd86c4d68ebbb93213a73fb24e35bd..7e8d7744f1f107308e5856e18831f986bcf41bd8 100644 +index 75a55280a0f57ef3586f3c32d5b37de504ee1fcc..15a8ec2ee6677d6dd5b0fd60ae1d02c7c6c21548 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1479,6 +1479,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0111-Configurable-default-collar-color.patch b/patches/server/0112-Configurable-default-collar-color.patch similarity index 90% rename from patches/server/0111-Configurable-default-collar-color.patch rename to patches/server/0112-Configurable-default-collar-color.patch index 2a74c1e4c..c3143766d 100644 --- a/patches/server/0111-Configurable-default-collar-color.patch +++ b/patches/server/0112-Configurable-default-collar-color.patch @@ -7,10 +7,10 @@ This allows for the server to set a default collar color when a wolf or cat is t Resets to RED when the value is invalid. diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index a47718747f41a80b5aecffdf74aa1095786cf9a3..0d8320fde901cd9ae6aa420b76362be77ca62c93 100644 +index a312e8ff4e4cd3328f0586348a2eff3deaf4617d..bb827b0a7273a2636d01a506fae09d32e99db178 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -318,6 +318,14 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -345,6 +345,14 @@ public class Cat extends TamableAnimal implements VariantHolder { return Mth.lerp(tickDelta, this.relaxStateOneAmountO, this.relaxStateOneAmount); } @@ -26,10 +26,10 @@ index a47718747f41a80b5aecffdf74aa1095786cf9a3..0d8320fde901cd9ae6aa420b76362be7 @Override public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 55b2f060b4e05ba0999acf2ffe46f9b4fece1952..3c5186800381c414c8dd3f2c58b1cd947e64a092 100644 +index d8acf9fde413d2661cb14ff4d198f6e138a1e549..8eb72d7f29bf9085bda1decc43f89125c14b1a2b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -181,6 +181,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -203,6 +203,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { return super.finalizeSpawn(world, difficulty, type, data, nbt); } @@ -43,7 +43,7 @@ index 55b2f060b4e05ba0999acf2ffe46f9b4fece1952..3c5186800381c414c8dd3f2c58b1cd94 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 7e8d7744f1f107308e5856e18831f986bcf41bd8..84bb7a1a7744a55ebc284bbd8e2fb8b840eb0391 100644 +index 15a8ec2ee6677d6dd5b0fd60ae1d02c7c6c21548..8373d41949bef5ca988e2ea2c515885ae1de7fea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -569,6 +569,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0112-Phantom-flames-on-swoop.patch b/patches/server/0113-Phantom-flames-on-swoop.patch similarity index 88% rename from patches/server/0112-Phantom-flames-on-swoop.patch rename to patches/server/0113-Phantom-flames-on-swoop.patch index 870343f3b..66b416d48 100644 --- a/patches/server/0112-Phantom-flames-on-swoop.patch +++ b/patches/server/0113-Phantom-flames-on-swoop.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Phantom flames on swoop diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index ca46d91d75de8aaf39a16141bba593be94cbc45f..c0980014edd84582f179882e9d63abb5474df622 100644 +index b230733d72843f3142c26cc7d0e9bf93054fc628..518c1cdf1459a8ac97c7ab39461cca074bad5bcf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -159,6 +159,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -219,6 +219,7 @@ public class Phantom extends FlyingMob implements Enemy { this.level().addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f2, this.getY() + (double) f4, this.getZ() - (double) f3, 0.0D, 0.0D, 0.0D); } @@ -17,7 +17,7 @@ index ca46d91d75de8aaf39a16141bba593be94cbc45f..c0980014edd84582f179882e9d63abb5 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 84bb7a1a7744a55ebc284bbd8e2fb8b840eb0391..224bb233f4b608ea9b971aad141c76bb37a019c5 100644 +index 8373d41949bef5ca988e2ea2c515885ae1de7fea..55ec718b1e03dec575c151336faa1a567946e8d8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1054,6 +1054,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 94% rename from patches/server/0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 8c8389652..b2dd898b3 100644 --- a/patches/server/0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0114-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,7 +17,7 @@ index 5e22d175b1048a58802cdf64ac70a8b56329e915..d81946b400f208c39941128ce823ff77 return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 224bb233f4b608ea9b971aad141c76bb37a019c5..775a13fa3462f75fe62f1649ef731b1058703d2f 100644 +index 55ec718b1e03dec575c151336faa1a567946e8d8..481ac57133506633b776db448819e73aebfb39e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -425,6 +425,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0114-Implement-TPSBar.patch b/patches/server/0115-Implement-TPSBar.patch similarity index 97% rename from patches/server/0114-Implement-TPSBar.patch rename to patches/server/0115-Implement-TPSBar.patch index 96c63dfda..619534b14 100644 --- a/patches/server/0114-Implement-TPSBar.patch +++ b/patches/server/0115-Implement-TPSBar.patch @@ -17,7 +17,7 @@ index e5b1b6ad32c48a4ba13b4930954fad18669677ad..4e721dfca7559620d8ce65a6703f2089 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5750934e3cfb1a9d7fc127a5033c504476900981..8e044ff6db7f4ab1605eec1bd8063916add22ca8 100644 +index 1b24b67437b1a677bbd6ea30b32c703fd7eda2a2..566f20e6c8306c6f6884b95362f82bdcffbcbbc7 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1023,6 +1023,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { --this.nextStartTick; diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index a80d18398db003ddeaa28aa00e13a0869191695f..5974577a408c13d05f326c7bfc704441644e7c8b 100644 +index 2232af2cef82014570596c122e11a47d3ae15b9b..eca7c43ac555417b0746ebb20f67978fa801af59 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -1337,7 +1337,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -1377,7 +1377,7 @@ public class Fox extends Animal implements VariantHolder { } protected void onReachedTarget() { @@ -105,10 +105,10 @@ index a80d18398db003ddeaa28aa00e13a0869191695f..5974577a408c13d05f326c7bfc704441 if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index c2106749af90e0fa0603ef90be919ef11da32758..919c27b38085d545617cc685fef9c8a29926b018 100644 +index 857d4a70c8a9678e689ee0807f42cd5f7cc4902d..59aaa76f9c5b4639a632ef6ee67092983e7edf35 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -575,7 +575,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -637,7 +637,7 @@ public class Rabbit extends Animal implements VariantHolder { @Override public boolean canUse() { if (this.nextStartTick <= 0) { @@ -118,10 +118,10 @@ index c2106749af90e0fa0603ef90be919ef11da32758..919c27b38085d545617cc685fef9c8a2 } diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index ca557bf95c8238c6b671900affc1965b3f3af837..6b8169ac1fbe3920083ffd8cb5e15b9d8e67f436 100644 +index f43c37505e9e7c171b62cfc0621e425f5726dc3d..1db7bb084674cea5dd2bbf4d5ed05048414aa85c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -108,7 +108,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -127,7 +127,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM this.hurt(this.damageSources().melting, 1.0F); // CraftBukkit - DamageSource.BURN -> CraftEventFactory.MELTING } @@ -131,10 +131,10 @@ index ca557bf95c8238c6b671900affc1965b3f3af837..6b8169ac1fbe3920083ffd8cb5e15b9d } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index b3b3572a6e3a1334b193f8e1462387e0b7526828..c819d041bf2e4909e97d6e856474786a96085a25 100644 +index 587a6cd7bd4cb724a778f98677eb09b0eb494349..ce82644310d6f5fe4a60294004cd663c2c12f06b 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -537,7 +537,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -612,7 +612,7 @@ public class EnderDragon extends Mob implements Enemy { BlockState iblockdata = this.level().getBlockState(blockposition); if (!iblockdata.isAir() && !iblockdata.is(BlockTags.DRAGON_TRANSPARENT)) { @@ -144,10 +144,10 @@ index b3b3572a6e3a1334b193f8e1462387e0b7526828..c819d041bf2e4909e97d6e856474786a // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 462f4bdc4ca57aa46564df9372c5bc7fd673030f..dda3152aa6d4e8265fcb3fd450ecf39ec0f1a9ac 100644 +index 52f6459b0bfff7991da6cb0deda1b15664c4d00b..aabc5523343e16974d7fb2af476ba84c9059f119 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -366,7 +366,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -496,7 +496,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; @@ -157,10 +157,10 @@ index 462f4bdc4ca57aa46564df9372c5bc7fd673030f..dda3152aa6d4e8265fcb3fd450ecf39e j = Mth.floor(this.getX()); int i1 = Mth.floor(this.getZ()); diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index c3c32a99d53eea7f61b70d7ed8ddc8a2112dd9f7..444993e357e7a3e4aba0b0a73760fe478f6461ff 100644 +index 094ed658eaedcd88461330de0816e29b7db8acd2..2189cf09f7d9299ff9a3e4b62d3e199caedfbc0d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -512,7 +512,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -532,7 +532,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -177,7 +177,7 @@ index c3c32a99d53eea7f61b70d7ed8ddc8a2112dd9f7..444993e357e7a3e4aba0b0a73760fe47 } @Override -@@ -560,7 +568,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -580,7 +588,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -195,10 +195,10 @@ index c3c32a99d53eea7f61b70d7ed8ddc8a2112dd9f7..444993e357e7a3e4aba0b0a73760fe47 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index a2dc53d9ce6c3bc2278fa389a98f1506bbcccefa..eaf84c30701dbe8562e0d498f088f0461c53c442 100644 +index f113c96af07eeceef2e51cd310d46b2763c8224b..629e29bfeb26f686d41a27218b3caca601018bed 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -322,7 +322,7 @@ public class Evoker extends SpellcasterIllager { +@@ -341,7 +341,7 @@ public class Evoker extends SpellcasterIllager { return false; } else if (Evoker.this.tickCount < this.nextAttackTickCount) { return false; @@ -208,10 +208,10 @@ index a2dc53d9ce6c3bc2278fa389a98f1506bbcccefa..eaf84c30701dbe8562e0d498f088f046 } else { List list = Evoker.this.level().getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 45ac92467b5cdadcc692c8867a52277e1754a934..26ca7b3ac44f24c324f0f97e0e2bb5ed62f3aa73 100644 +index c35266d89bfacf193662738366a8c91943b29250..62ffd3ca6276df8e111198aae523ec7de47df691 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -165,7 +165,7 @@ public class Ravager extends Raider { +@@ -190,7 +190,7 @@ public class Ravager extends Raider { this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0)); } @@ -221,10 +221,10 @@ index 45ac92467b5cdadcc692c8867a52277e1754a934..26ca7b3ac44f24c324f0f97e0e2bb5ed AABB axisalignedbb = this.getBoundingBox().inflate(0.2D); Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index 49a025b0ffb823bd92319bf3194a13f71ec03c32..2b51cd9052271575c0f7ecabe69a1cc88f7ce800 100644 +index 1d91686e354cffeec7431f0a70e22b39225ed2b7..b4b5f2d564accb4e7b0361af4f67d22185755d51 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -189,7 +189,7 @@ public class Silverfish extends Monster { +@@ -208,7 +208,7 @@ public class Silverfish extends Monster { continue; } // CraftBukkit end @@ -233,7 +233,7 @@ index 49a025b0ffb823bd92319bf3194a13f71ec03c32..2b51cd9052271575c0f7ecabe69a1cc8 world.destroyBlock(blockposition1, true, this.silverfish); } else { world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3); -@@ -227,7 +227,7 @@ public class Silverfish extends Monster { +@@ -246,7 +246,7 @@ public class Silverfish extends Monster { } else { RandomSource randomsource = this.mob.getRandom(); @@ -243,10 +243,10 @@ index 49a025b0ffb823bd92319bf3194a13f71ec03c32..2b51cd9052271575c0f7ecabe69a1cc8 BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection); BlockState iblockdata = this.mob.level().getBlockState(blockposition); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 7e1a46eba403e238c266680e9f1fae435a246e1c..20339cb8a1fa4ca0716c7362276fc0cb9add6dee 100644 +index bd084cfaecee1098b29e03f75d64e3fecd10a1ea..98ee31528c93ae1a1d294d47c7722ac8b017edbe 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -410,7 +410,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -428,7 +428,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ItemStack stack) { @@ -374,7 +374,7 @@ index 1942649e868fc985a488034c411a6721595ecc67..7495e0e8beedad59fff24ebf189b58b3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9b19c4c3cbeeb635a854668158acdc7b0d7c8627..5c37a4221391f461d1d4b6bd8bed3a71d478c666 100644 +index 06cb62b768168c06a7b454e0e7bb105b750729c3..86ad2600050ad695942ed3fdd5af910d5d6d8db0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,8 +117,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 97% rename from patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch index 9a77da807..2189b1125 100644 --- a/patches/server/0120-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0121-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,7 +22,7 @@ index 6bc29eeb5771a3dc9aa23c7d184c895717797b36..244857755f269eedd57d1c8d4657b4b4 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c37a4221391f461d1d4b6bd8bed3a71d478c666..f8ff580c6cfccae2472a705d9a5f477cfe53e98f 100644 +index 86ad2600050ad695942ed3fdd5af910d5d6d8db0..3e09fc10c8fdad548f183e624dc46264ba4236ca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -120,6 +120,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0121-Add-EntityTeleportHinderedEvent.patch b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch similarity index 98% rename from patches/server/0121-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0122-Add-EntityTeleportHinderedEvent.patch index 192bdb058..7c1bc2e90 100644 --- a/patches/server/0121-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0122-Add-EntityTeleportHinderedEvent.patch @@ -74,7 +74,7 @@ index 678c4527ddc7032a07e7d74cc160ddcb8810abbf..c370461d434005dc5394053713e039d9 blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index ea056babe2f8123f20dc608d8a636da1de634b8c..285d58cfa0ea899e2a7583d1ca308872e68f18c9 100644 +index a820a00440510d77fa1839eef485f8ea2de9ff84..eed8be5d6f796450a99f8dd11c673780d8cb5411 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -586,6 +586,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -104,7 +104,7 @@ index cf82afb7949a0031c1b656149e583c4075362211..d65147f864dc75475cbb893fdcc9b391 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f8ff580c6cfccae2472a705d9a5f477cfe53e98f..d43c3ed34d8d7a79f0260e9a83c0435365d65285 100644 +index 3e09fc10c8fdad548f183e624dc46264ba4236ca..a354a971ab9fcbd644e3673e0e6464a53cb02f6e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0122-Farmland-trampling-changes.patch b/patches/server/0123-Farmland-trampling-changes.patch similarity index 97% rename from patches/server/0122-Farmland-trampling-changes.patch rename to patches/server/0123-Farmland-trampling-changes.patch index 65ca6f0b1..aa8ff2709 100644 --- a/patches/server/0122-Farmland-trampling-changes.patch +++ b/patches/server/0123-Farmland-trampling-changes.patch @@ -37,7 +37,7 @@ index 090d232af0183c9c9ffeb4e75125514d827648f2..1064a13f37b991e60213b052e252a183 if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d43c3ed34d8d7a79f0260e9a83c0435365d65285..e4451d20bac90334ebe4b7ed4432c4f3208f1ba9 100644 +index a354a971ab9fcbd644e3673e0e6464a53cb02f6e..f09bf510749064c34d4fb1401a68090529bb6d6b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -463,10 +463,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0123-Movement-options-for-armor-stands.patch b/patches/server/0124-Movement-options-for-armor-stands.patch similarity index 96% rename from patches/server/0123-Movement-options-for-armor-stands.patch rename to patches/server/0124-Movement-options-for-armor-stands.patch index a8337217d..60dea7dec 100644 --- a/patches/server/0123-Movement-options-for-armor-stands.patch +++ b/patches/server/0124-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 091702e3946effa1177c1521f7c8c25f611e5c88..91962f4b2259d2ae6e1fcb149fc299f6e2875cf5 100644 +index 9f213ed6b14c24fd9cb5fefb689d72032a883d09..67382c78e35110090e2f54f1fd11b12a19b2c529 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1795,7 +1795,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -66,7 +66,7 @@ index 1406cdd79c7183522f1f5c0b0edc6166ff9d4ed9..cfe4c6f3316a9bcb3fb77bbb839525be + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e4451d20bac90334ebe4b7ed4432c4f3208f1ba9..06f3e9e32eec5cb7ea109b8bee3f99d2b7807f13 100644 +index f09bf510749064c34d4fb1401a68090529bb6d6b..ec0fdbe239a8b402ed9e2154904b31294a6f92b2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -101,10 +101,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0124-Fix-stuck-in-portals.patch b/patches/server/0125-Fix-stuck-in-portals.patch similarity index 88% rename from patches/server/0124-Fix-stuck-in-portals.patch rename to patches/server/0125-Fix-stuck-in-portals.patch index b5e444553..4c6f7db0e 100644 --- a/patches/server/0124-Fix-stuck-in-portals.patch +++ b/patches/server/0125-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ 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 6ffa173574cd07e547c18ef89f0a733a526735eb..e81f439727dea8073044abec5f99fbe1220fb279 100644 +index 4a133de61090ab78ad9bc7d02e30c917024711ab..eac27b6ff180369cd0c9423d176a5a7bf7406ab1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1262,6 +1262,7 @@ public class ServerPlayer extends Player { +@@ -1271,6 +1271,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); @@ -17,10 +17,10 @@ index 6ffa173574cd07e547c18ef89f0a733a526735eb..e81f439727dea8073044abec5f99fbe1 // CraftBukkit end this.setServerLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 91962f4b2259d2ae6e1fcb149fc299f6e2875cf5..c6157d80118ad936d677651083dcde6724667434 100644 +index 67382c78e35110090e2f54f1fd11b12a19b2c529..4a6c13e2f9835219161b3b83e0b3aecafb4eed73 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2981,12 +2981,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -2996,12 +2996,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { return Vec3.directionFromRotation(this.getRotationVector()); } @@ -37,7 +37,7 @@ index 91962f4b2259d2ae6e1fcb149fc299f6e2875cf5..c6157d80118ad936d677651083dcde67 this.isInsidePortal = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06f3e9e32eec5cb7ea109b8bee3f99d2b7807f13..f39c4a2acf8d6af849ce3c0ef319a58a203b08c1 100644 +index ec0fdbe239a8b402ed9e2154904b31294a6f92b2..a53c3fdbf11c8c33407aa0082f788848ac77dc34 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -337,6 +337,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch similarity index 86% rename from patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch index 8396bb9ac..7a9df70d3 100644 --- a/patches/server/0125-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 8d2a915280f7a010483720295077f66684f49615..17ff16de143ccd40bf7654062eefb6a36b65a851 100644 +index 277a5868b3fc4bbb472086b4fb50e905b02621ba..4570f2859ed4251a2e9cf79ecbc7255523cbbc79 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java -@@ -33,6 +33,11 @@ public class GlowSquid extends Squid { +@@ -46,6 +46,11 @@ public class GlowSquid extends Squid { return this.level.purpurConfig.glowSquidsCanFly; } @@ -21,10 +21,10 @@ index 8d2a915280f7a010483720295077f66684f49615..17ff16de143ccd40bf7654062eefb6a3 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index eb6ced824d024a6402772e4df56e867e18fae988..b29d4dc2f531cb9e8ba11e49c636df41b27c6bd2 100644 +index 052304db93aa2996d292df6b5d1e8593351239e4..b4c0f7b8841c536e700c80248d12ca2f0a507e6f 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -234,6 +234,11 @@ public class Bat extends AmbientCreature { +@@ -290,6 +290,11 @@ public class Bat extends AmbientCreature { this.getAttribute(Attributes.ATTACK_KNOCKBACK).setBaseValue(this.level.purpurConfig.batAttackKnockback); } @@ -37,10 +37,10 @@ index eb6ced824d024a6402772e4df56e867e18fae988..b29d4dc2f531cb9e8ba11e49c636df41 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index d50f80e1b6ba690c25fb2993f596f2329bd422a3..9ffb7b5c410f1b2b5bb409788315c20fc171d820 100644 +index e0ab585b708fd58db9688fc4631eaacd79a7c8a3..f68dd3af977190e310d6854ba251b0f12f914c70 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -160,7 +160,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -175,7 +175,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); @@ -49,7 +49,7 @@ index d50f80e1b6ba690c25fb2993f596f2329bd422a3..9ffb7b5c410f1b2b5bb409788315c20f this.setPathfindingMalus(BlockPathTypes.WATER_BORDER, 16.0F); this.setPathfindingMalus(BlockPathTypes.COCOA, -1.0F); this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); -@@ -425,6 +425,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -476,6 +476,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return this.level.purpurConfig.beeBreedingTicks; } @@ -62,10 +62,10 @@ index d50f80e1b6ba690c25fb2993f596f2329bd422a3..9ffb7b5c410f1b2b5bb409788315c20f public int getRemainingPersistentAngerTime() { return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 0d8320fde901cd9ae6aa420b76362be77ca62c93..0ebfb9e6e6845cf0248410698fe59a4c7a76c43c 100644 +index bb827b0a7273a2636d01a506fae09d32e99db178..fa437d0af82292797c1e4432c57a8384c7aacdc4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -107,6 +107,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -132,6 +132,11 @@ public class Cat extends TamableAnimal implements VariantHolder { return this.level.purpurConfig.catBreedingTicks; } @@ -78,10 +78,10 @@ index 0d8320fde901cd9ae6aa420b76362be77ca62c93..0ebfb9e6e6845cf0248410698fe59a4c return this.getVariant().texture(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index 6ade6225e83bab038aab91637a425616cab2853e..9d531f623ceb0c7ac732588b906d5fe3492ce96a 100644 +index 5ad29dda33d3d7442992b2d47f44d419dda3021b..970e4274edf409fbf61c267e32075426d00480d1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -67,6 +67,11 @@ public class Chicken extends Animal { +@@ -84,6 +84,11 @@ public class Chicken extends Animal { return this.level.purpurConfig.chickenBreedingTicks; } @@ -94,12 +94,12 @@ index 6ade6225e83bab038aab91637a425616cab2853e..9d531f623ceb0c7ac732588b906d5fe3 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cod.java b/src/main/java/net/minecraft/world/entity/animal/Cod.java -index 3e213264f5991ccfcb5c207621334b8e9d6cc9bc..d7e725d0ffc7092b0c59598cbda1d253b6dfc003 100644 +index d6a9281208f6462628e5e9547c40590a42be89d0..dd4a116dfe471eaca9a7915db430d39ea8a81915 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cod.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cod.java -@@ -18,6 +18,11 @@ public class Cod extends AbstractSchoolingFish { - this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.codMaxHealth); +@@ -30,6 +30,11 @@ public class Cod extends AbstractSchoolingFish { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -110,10 +110,10 @@ index 3e213264f5991ccfcb5c207621334b8e9d6cc9bc..d7e725d0ffc7092b0c59598cbda1d253 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 154829bdef01a0a93f163578ea8e51a0cb3952e5..385bf94f85471c9461c83df2fff48c1e1115e5f7 100644 +index fd8ec46ccb691d7f85a7a6bb44e1d0db3703b4d6..3f67e626b66cf64034dcc9ebf35244631b081516 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -53,6 +53,11 @@ public class Cow extends Animal { +@@ -70,6 +70,11 @@ public class Cow extends Animal { return this.level.purpurConfig.cowBreedingTicks; } @@ -126,12 +126,12 @@ index 154829bdef01a0a93f163578ea8e51a0cb3952e5..385bf94f85471c9461c83df2fff48c1e protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 1c8e81fd2561535a04d55238ad086a6cc6851d5d..c02a84fc12780b8f02722539b31ace840ae4bc1d 100644 +index 584b812c86d4f7180d971b5ad263c549dec51e61..6371c835989dda0ed5048667875ac1ae34ba0cf7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -91,6 +91,11 @@ public class Dolphin extends WaterAnimal { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.dolphinMaxHealth); +@@ -159,6 +159,11 @@ public class Dolphin extends WaterAnimal { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -142,10 +142,10 @@ index 1c8e81fd2561535a04d55238ad086a6cc6851d5d..c02a84fc12780b8f02722539b31ace84 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 5974577a408c13d05f326c7bfc704441644e7c8b..169cd4a00de163dc86cf73382275ba97a5d09e7f 100644 +index eca7c43ac555417b0746ebb20f67978fa801af59..35491e36fbab850110ae4fd255cc0acd1e9d8792 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -153,6 +153,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -191,6 +191,11 @@ public class Fox extends Animal implements VariantHolder { return this.level.purpurConfig.foxBreedingTicks; } @@ -158,10 +158,10 @@ index 5974577a408c13d05f326c7bfc704441644e7c8b..169cd4a00de163dc86cf73382275ba97 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 4bdef5dd01b69ff64f632a71096c1a87b2fc1195..ec5cd6de7a77dc1959a5d15d51d4dfffc4e3c29d 100644 +index 1a4992dbe62b908b21f6b44b39a55237e7127cde..b89f01408c9ebaeeee93f1924010be6db89f1c66 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -71,6 +71,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -88,6 +88,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ironGolemMaxHealth); } @@ -172,12 +172,12 @@ index 4bdef5dd01b69ff64f632a71096c1a87b2fc1195..ec5cd6de7a77dc1959a5d15d51d4dfff + @Override protected void registerGoals() { - this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); + if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 6d7fd5bab1173e99eb8f2b67d202b22abaad28bb..6a0afe12430dbd1ff76f17801eb0bf44c2f90ff0 100644 +index 6bc5cca1c0896dda25af505e7ff3d68e5e83a54b..d7705035b80f92b9053b16ae413f82b85624ab76 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -73,6 +73,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -147,6 +147,11 @@ public class Rabbit extends Animal implements VariantHolder { return this.level.purpurConfig.rabbitBreedingTicks; } @@ -302,12 +302,12 @@ index 919c27b38085d545617cc685fef9c8a29926b018..57771ff9362e5c423aa2456740970289 public void initializePathFinderGoals(){ this.setSpeedModifier(0.0D); diff --git a/src/main/java/net/minecraft/world/entity/animal/Salmon.java b/src/main/java/net/minecraft/world/entity/animal/Salmon.java -index 40196aa0f8abc8be68dffd397f706a0c2c0fc320..1f81836419b5da90aa12a00c3397fab74058dd19 100644 +index a1ad0c0eb4c7b6d39bc24be24b8d511697a5b628..e28290c96da8e27fa6d61cf0ad1684e6787cb19b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Salmon.java +++ b/src/main/java/net/minecraft/world/entity/animal/Salmon.java -@@ -18,6 +18,11 @@ public class Salmon extends AbstractSchoolingFish { - this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.salmonMaxHealth); +@@ -30,6 +30,11 @@ public class Salmon extends AbstractSchoolingFish { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -318,10 +318,10 @@ index 40196aa0f8abc8be68dffd397f706a0c2c0fc320..1f81836419b5da90aa12a00c3397fab7 public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 34ddf57d47dc82b87ad9898c91b7891b8255455f..145e17504690299ca6e64a06a52dbb8684ac6966 100644 +index fbaa05f3564aeaf31bfaac34ef0112d11869a2c8..c5f4e9d3774eefc43b5b5b4bf895efbb06ae2a9e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -127,6 +127,11 @@ public class Sheep extends Animal implements Shearable { +@@ -144,6 +144,11 @@ public class Sheep extends Animal implements Shearable { return this.level.purpurConfig.sheepBreedingTicks; } @@ -334,10 +334,10 @@ index 34ddf57d47dc82b87ad9898c91b7891b8255455f..145e17504690299ca6e64a06a52dbb86 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 6b8169ac1fbe3920083ffd8cb5e15b9d8e67f436..e932db904ba8c22a4ab939a2e92e20e3200512c0 100644 +index 1db7bb084674cea5dd2bbf4d5ed05048414aa85c..cfdc9b1341bafc9c92a520b1793add877336a8a3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -97,7 +97,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -116,7 +116,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @Override public boolean isSensitiveToWater() { @@ -347,10 +347,10 @@ index 6b8169ac1fbe3920083ffd8cb5e15b9d8e67f436..e932db904ba8c22a4ab939a2e92e20e3 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 77ef1ae92dee5bf13590312466c778a249129d69..35d61f8c990154aa297c70338f410a4468e01d68 100644 +index 2658be0f3535243b5a434917c9400332246ffcbe..6e52d61dae3956ae165c4e1b7a1992e57419edc8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -70,6 +70,11 @@ public class Squid extends WaterAnimal { +@@ -92,6 +92,11 @@ public class Squid extends WaterAnimal { return this.wasTouchingWater || canFly(); } @@ -363,12 +363,12 @@ index 77ef1ae92dee5bf13590312466c778a249129d69..35d61f8c990154aa297c70338f410a44 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index c0605ccfd050417189595cdcb68eb9d56e9fc4ee..e2252ea4e7303fcbbe2e55faa9604c1c668ea908 100644 +index 1904e78ad39d2dd8e4dfbc64d187065a860b2103..edf1092f32e24abcefc73b173bde56224121f97a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -47,6 +47,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder - this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.tropicalFishMaxHealth); +@@ -59,6 +59,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -379,10 +379,10 @@ index c0605ccfd050417189595cdcb68eb9d56e9fc4ee..e2252ea4e7303fcbbe2e55faa9604c1c return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 2f685d2512d8bd3cb41dd1b652ca2c2fb805b83b..866b205b996c4f64deef501a2afb7ddfd0987e12 100644 +index 726b53822d115fdd6f8911258ff9fc612a4ad54e..4505783c91992085bfc2965f4a78a0b5df21de77 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -93,6 +93,11 @@ public class Turtle extends Animal { +@@ -110,6 +110,11 @@ public class Turtle extends Animal { return this.level.purpurConfig.turtleBreedingTicks; } @@ -395,10 +395,10 @@ index 2f685d2512d8bd3cb41dd1b652ca2c2fb805b83b..866b205b996c4f64deef501a2afb7ddf this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 3c5186800381c414c8dd3f2c58b1cd947e64a092..f18d90f4b2b786acbea242c4adbbdca2293929ec 100644 +index 8eb72d7f29bf9085bda1decc43f89125c14b1a2b..1054218628fdefc1aa5356de25ebe4f2672ee3de 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -187,6 +187,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -209,6 +209,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { super.tame(player); } @@ -411,10 +411,10 @@ index 3c5186800381c414c8dd3f2c58b1cd947e64a092..f18d90f4b2b786acbea242c4adbbdca2 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 4ce8b7cfdbbb475e257fe91ea541669361b92173..574c011caa6ab029edfb0ee6c7436b451f407bc6 100644 +index be44bbd6dd3278ae533f07bbd1f4fb3727f177b7..1f3618fc9679ad3938c2939b192132125b0e2201 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -108,6 +108,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 2c1a6321f46a029ddc1c4e4c0afe07516c874843..25cbeb86b23f7e629fbca37a3bd4b74521803803 100644 +index 4f7256e6e130be1e84be3b2979b836021460aceb..fde16c2060bcf1af102ce8fa5cbcacc58dbd5b1e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -94,6 +94,11 @@ public class Goat extends Animal { +@@ -111,6 +111,11 @@ public class Goat extends Animal { return this.level.purpurConfig.goatBreedingTicks; } @@ -443,10 +443,10 @@ index 2c1a6321f46a029ddc1c4e4c0afe07516c874843..25cbeb86b23f7e629fbca37a3bd4b745 protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 11dc7cf7cd38994edb6e8c1ed0761e45bc998bfc..935f1e8af2ac139fb8956b53edc55ae793d9a42d 100644 +index a9e04b76c0a3831e6b136136ae15dd9884d68148..21f17176d1e10aa036fbc470d4864611855f79ce 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -@@ -35,6 +35,11 @@ public class Donkey extends AbstractChestedHorse { +@@ -42,6 +42,11 @@ public class Donkey extends AbstractChestedHorse { return this.level.purpurConfig.donkeyBreedingTicks; } @@ -459,10 +459,10 @@ index 11dc7cf7cd38994edb6e8c1ed0761e45bc998bfc..935f1e8af2ac139fb8956b53edc55ae7 protected SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 97cbd228dd33333468e545697530bbd14de86308..8dd0cc7bff5ec3ce9603f6e511dd5042e1cf9657 100644 +index 65fec83d96a02bd3b7c9ba034db95a2bb0833dba..b47d9039bc4a7cfd4fa5f31aeb02f72283aaf64b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -60,6 +60,11 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -67,6 +67,11 @@ public class Horse extends AbstractHorse implements VariantHolder { return this.level.purpurConfig.horseBreedingTicks; } @@ -475,10 +475,10 @@ index 97cbd228dd33333468e545697530bbd14de86308..8dd0cc7bff5ec3ce9603f6e511dd5042 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 5d960b40ff2c41e7e21cace33a2655eb8bea7dc9..84f6fab337f126290225e93038555699a7814f94 100644 +index 80a7bc90fb4040afd2f7f0b19f5f6dbb6f9d13e8..9440c55671473e717ad1019019c5edd38898e387 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -99,6 +99,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); + this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); // Purpur - this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); // Purpur this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); -@@ -106,7 +106,7 @@ public class Blaze extends Monster { +@@ -143,7 +143,7 @@ public class Blaze extends Monster { @Override public boolean isSensitiveToWater() { @@ -609,12 +609,12 @@ index f91fd938ac941a780e1dc72d766985d865cfcb76..b43c08f4cee928d9b901c06353553264 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java -index 4367d14654aa3e85b821d72ca8243d3976fda072..782b2c8bfc0ae71337ba8462d964a3e963acbf28 100644 +index c232cdd7cde6bcbb2302ff609206f6be8ccf99b3..c2e0087a10e8340138596e5e8a5f00c299045fcc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java +++ b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java -@@ -33,6 +33,11 @@ public class CaveSpider extends Spider { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.caveSpiderMaxHealth); +@@ -50,6 +50,11 @@ public class CaveSpider extends Spider { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -625,10 +625,10 @@ index 4367d14654aa3e85b821d72ca8243d3976fda072..782b2c8bfc0ae71337ba8462d964a3e9 public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 7e3b64dbd6df0b4d3556f7666c632a630a3a381e..4c175c9e8a3452f67b3f7cdac5aac1169309e993 100644 +index 69b91852f2d4ffce14e6bd6f94902da61990717a..acc548126a06f40ec3473301b36367e107050086 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -186,6 +186,11 @@ public class Creeper extends Monster implements PowerableMob { +@@ -263,6 +263,11 @@ public class Creeper extends Monster implements PowerableMob { return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } @@ -641,12 +641,12 @@ index 7e3b64dbd6df0b4d3556f7666c632a630a3a381e..4c175c9e8a3452f67b3f7cdac5aac116 protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 366f4d7e5e640d1b906dc532ea1e2d323c293a51..050b337bfd328c0272a93615c98b8eec02deb026 100644 +index 59bfc5df56ef7bab39630f69bc69d122fcd1653e..be427ec80a5057f75054ec3982fcc6cd6d042246 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -93,6 +93,11 @@ public class Drowned extends Zombie implements RangedAttackMob { - return level.purpurConfig.drownedJockeyTryExistingChickens; +@@ -95,6 +95,11 @@ public class Drowned extends Zombie implements RangedAttackMob { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -654,15 +654,15 @@ index 366f4d7e5e640d1b906dc532ea1e2d323c293a51..050b337bfd328c0272a93615c98b8eec + } + @Override - protected void addBehaviourGoals() { - this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); + public boolean jockeyOnlyBaby() { + return level().purpurConfig.drownedJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -index 61fa65292c75661a48012e215368055708560360..ac36e59cf53c7a2ab0efea5741d142fb3d646557 100644 +index 63a02ce34b3cf1cd6bfb61cef7488aea67da9046..f9398b11a9a99c46187132db16b4b4761d77b879 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java -@@ -38,6 +38,11 @@ public class ElderGuardian extends Guardian { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.elderGuardianMaxHealth); +@@ -50,6 +50,11 @@ public class ElderGuardian extends Guardian { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -673,7 +673,7 @@ index 61fa65292c75661a48012e215368055708560360..ac36e59cf53c7a2ab0efea5741d142fb return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 444993e357e7a3e4aba0b0a73760fe478f6461ff..69da4fc206d33c7ff401c86edc86d0f308ad7c1f 100644 +index 2189cf09f7d9299ff9a3e4b62d3e199caedfbc0d..ae2916ed826b28a3737327b3a6b2725225bcaf61 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -89,7 +89,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -685,7 +685,7 @@ index 444993e357e7a3e4aba0b0a73760fe478f6461ff..69da4fc206d33c7ff401c86edc86d0f3 } @Override -@@ -283,7 +283,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -303,7 +303,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { @@ -695,12 +695,12 @@ index 444993e357e7a3e4aba0b0a73760fe478f6461ff..69da4fc206d33c7ff401c86edc86d0f3 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index 07e709f886bd182511d92e27a2f77f8a0c93500f..e3573708cf8497935144aa270e1a1d5781d3ec7f 100644 +index a3bf2e2d629b7db3c66e684460e79f73857f0f84..41c20875b3a92b1271125e087c98be927cd192fe 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -42,6 +42,11 @@ public class Endermite extends Monster { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.endermiteMaxHealth); +@@ -59,6 +59,11 @@ public class Endermite extends Monster { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -711,12 +711,12 @@ index 07e709f886bd182511d92e27a2f77f8a0c93500f..e3573708cf8497935144aa270e1a1d57 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index eaf84c30701dbe8562e0d498f088f0461c53c442..ad2910d1c12bf8f7ba3093fa4c9e9f8cb06fef03 100644 +index 629e29bfeb26f686d41a27218b3caca601018bed..ec74af62bc7da0d1d2b5dba27c57d7a13b77f677 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -@@ -53,6 +53,11 @@ public class Evoker extends SpellcasterIllager { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.evokerMaxHealth); +@@ -70,6 +70,11 @@ public class Evoker extends SpellcasterIllager { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -727,10 +727,10 @@ index eaf84c30701dbe8562e0d498f088f0461c53c442..ad2910d1c12bf8f7ba3093fa4c9e9f8c protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -index 2cb35b9b35f1c449784226caf200e8e19dccc64a..a20d843c10af7089fda45f92ea366d884570708d 100644 +index 20d6c7b352ce13812205ae021f52837647076fe0..8f567718d3a13cd1738e8a25c272fb99810b0a96 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -@@ -101,6 +101,11 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -137,6 +137,11 @@ public class Ghast extends FlyingMob implements Enemy { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ghastMaxHealth); } @@ -743,7 +743,7 @@ index 2cb35b9b35f1c449784226caf200e8e19dccc64a..a20d843c10af7089fda45f92ea366d88 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 3d45d1a5091fbf7dd275aebfca336d80a72010b0..75ded7406f023680a221119a7dfb69586d9241f1 100644 +index a73514ab24686f991c1a5bded0684393fffb2efd..57013c0ddcd8c364c2e566e7edb7310b170e7ed7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -38,6 +38,11 @@ public class Giant extends Monster { @@ -759,12 +759,12 @@ index 3d45d1a5091fbf7dd275aebfca336d80a72010b0..75ded7406f023680a221119a7dfb6958 protected void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.giantMaxHealth); diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index afae01e4bf1c22eafe06243a23dd21cd6894ca92..7811e226d2cda0e7b2d4539c7b87bcedc09b2586 100644 +index 773ba2ff81a97f046e795c52bfa534b3cb44cfb9..2ce70ea1707563d5d76d335135bc05d3062f6bba 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -@@ -78,6 +78,11 @@ public class Guardian extends Monster { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.guardianMaxHealth); +@@ -98,6 +98,11 @@ public class Guardian extends Monster { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -775,10 +775,10 @@ index afae01e4bf1c22eafe06243a23dd21cd6894ca92..7811e226d2cda0e7b2d4539c7b87bced protected void registerGoals() { MoveTowardsRestrictionGoal pathfindergoalmovetowardsrestriction = new MoveTowardsRestrictionGoal(this, 1.0D); diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index d35c3630d7aba71271038cee04d97ca98038c847..2c605d8acc12177baedacc265b276f66e268d0a2 100644 +index 5e7c4c7a5962e638a2026a57803263830f11d35b..bf0d201f0211a3d4d61fdf0fbea7bdf4ea220458 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java -@@ -47,6 +47,11 @@ public class Husk extends Zombie { +@@ -64,6 +64,11 @@ public class Husk extends Zombie { return level.purpurConfig.huskJockeyTryExistingChickens; } @@ -791,12 +791,12 @@ index d35c3630d7aba71271038cee04d97ca98038c847..2c605d8acc12177baedacc265b276f66 return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -index 03646f5ffa43b19679241999877da1e93b293744..d3f6ccde772f606f99d70980ff9e0318835196fb 100644 +index d85f8e126832193d6080328d474312d30a81c301..18edadaaddc68ee6aafaf35bd4b38f1c15d41493 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -@@ -66,6 +66,11 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.illusionerMaxHealth); +@@ -83,6 +83,11 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -807,12 +807,12 @@ index 03646f5ffa43b19679241999877da1e93b293744..d3f6ccde772f606f99d70980ff9e0318 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index 0f375ed5073435f6826c4d946e50a2d24ae54be0..1cdff3875c82e2fc900bc4e58c58c2f3607abbb4 100644 +index 291e7a1331aade8a413d132d215bc494440b9f51..9e84790e77802a23fbbf7df24cc302958d5304b1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -@@ -45,6 +45,11 @@ public class MagmaCube extends Slime { - return level.purpurConfig.magmaCubeAttackDamageCache; +@@ -67,6 +67,11 @@ public class MagmaCube extends Slime { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -823,12 +823,12 @@ index 0f375ed5073435f6826c4d946e50a2d24ae54be0..1cdff3875c82e2fc900bc4e58c58c2f3 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index c0980014edd84582f179882e9d63abb5474df622..935cab241766f11b2dc957403db35d43b93e9080 100644 +index 518c1cdf1459a8ac97c7ab39461cca074bad5bcf..33e2f87c38fdbd79c3dcccc0c0dada5e05f78871 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -@@ -61,6 +61,11 @@ public class Phantom extends FlyingMob implements Enemy { - this.lookControl = new Phantom.PhantomLookControl(this); +@@ -119,6 +119,11 @@ public class Phantom extends FlyingMob implements Enemy { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -839,12 +839,12 @@ index c0980014edd84582f179882e9d63abb5474df622..935cab241766f11b2dc957403db35d43 public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % Phantom.TICKS_PER_FLAP == 0; diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -index 508d76f5120ec614092669af7d7c61f7216c8dc3..b102b360f48aab31d5a9c4d1b5fd136369b55df2 100644 +index 594573c2e1f27617dc11e72b97eaf4b6de12e8ed..0e5c2437419518d95186ff2c067bead47b60ef2b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -@@ -67,6 +67,11 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.pillagerMaxHealth); +@@ -84,6 +84,11 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -855,12 +855,12 @@ index 508d76f5120ec614092669af7d7c61f7216c8dc3..b102b360f48aab31d5a9c4d1b5fd1363 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 26ca7b3ac44f24c324f0f97e0e2bb5ed62f3aa73..5fc6506c1d0d064c5adce5416eb1c1049ae8cf01 100644 +index 62ffd3ca6276df8e111198aae523ec7de47df691..fb4e452e6c7e8701a3b2ebfe28a458026040c0e2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -70,6 +70,11 @@ public class Ravager extends Raider { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ravagerMaxHealth); +@@ -93,6 +93,11 @@ public class Ravager extends Raider { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -871,10 +871,10 @@ index 26ca7b3ac44f24c324f0f97e0e2bb5ed62f3aa73..5fc6506c1d0d064c5adce5416eb1c104 protected void registerGoals() { super.registerGoals(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index b7900691214fabe130f163253879c38952b9a20b..4017784e5b722887caf8ab5d17579e6daf50c5b4 100644 +index ba3246b099ae13f83b4aa94903192018518c2b6e..f328cac216a0f2a3e4956ab65d083caf072351d0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -103,6 +103,11 @@ public class Shulker extends AbstractGolem implements VariantHolder(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 54ce647b16efcc15d378009e56691cdf47bd04e4..5491c38e2c40859e1087801836831f1ff16e923f 100644 +index a5ce5e82f12bef3bdd5a4a87409aa31787bb90ac..df8cd4f58cc75df2d9c6822e1675f9cf2f8a2936 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -72,6 +72,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.zoglinMaxHealth); +@@ -89,6 +89,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -1069,10 +1069,10 @@ index 54ce647b16efcc15d378009e56691cdf47bd04e4..5491c38e2c40859e1087801836831f1f protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index fddee85b60de8fe75f6a6bab43a0989509850b18..a7f1c1f38b187cc5a67a9ef08fa432b80f450617 100644 +index 57a1ea56cfc6b0b8fe3a3379c9a602cf46fd8fbd..54ee2eafe257fe8ac16ded66a8c49ba68d433450 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -123,6 +123,11 @@ public class Zombie extends Monster { +@@ -140,6 +140,11 @@ public class Zombie extends Monster { return level.purpurConfig.zombieJockeyTryExistingChickens; } @@ -1083,14 +1083,14 @@ index fddee85b60de8fe75f6a6bab43a0989509850b18..a7f1c1f38b187cc5a67a9ef08fa432b8 + @Override protected void registerGoals() { - if (this.level().paperConfig().entities.behavior.zombiesTargetTurtleEggs) this.goalSelector.addGoal(4, new Zombie.ZombieAttackTurtleEggGoal(this, 1.0D, 3)); // Paper + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 1f0265ee248da4dc1bf57a1d3d58aee52184fe72..818fc0b9bc6bd95c46b5939f0a09c6e6f86b80e4 100644 +index b0b39609a50ac0a7dade15651f5f33ff2b426e5a..0f8b9ceca20e43b5010bb54e5b94a8598995115f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -104,6 +104,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { - return level.purpurConfig.zombieVillagerJockeyTryExistingChickens; +@@ -106,6 +106,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -1098,15 +1098,15 @@ index 1f0265ee248da4dc1bf57a1d3d58aee52184fe72..818fc0b9bc6bd95c46b5939f0a09c6e6 + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + public boolean jockeyOnlyBaby() { + return level.purpurConfig.zombieVillagerJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index c8a024c9bd7c9cdbeff029bfacf4dba91e6ac580..2d4bf7dea360d72bcc33c10f00f2416599f85c83 100644 +index 921d4e60052f6ceb9a6ecc2956350bd70c94dca7..4e6495f6cde80d1fe8c8902012ab63738d444e26 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -83,6 +83,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { - return level.purpurConfig.zombifiedPiglinJockeyTryExistingChickens; +@@ -85,6 +85,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -1114,13 +1114,13 @@ index c8a024c9bd7c9cdbeff029bfacf4dba91e6ac580..2d4bf7dea360d72bcc33c10f00f24165 + } + @Override - public void setPersistentAngerTarget(@Nullable UUID angryAt) { - this.persistentAngerTarget = angryAt; + public boolean jockeyOnlyBaby() { + return level.purpurConfig.zombifiedPiglinJockeyOnlyBaby; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 467ea5292a5dca5679b0e9b92b75447c3770fae0..639bbbf36ba6a627a26fc8cd112f3d2896cb45ab 100644 +index 35f7f7c75c740760f95eeaef91287a6a0ec3c3cc..17a7623466e55ff967a4c54ed0d674f16e0a23ca 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -77,6 +77,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -94,6 +94,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level.purpurConfig.hoglinBreedingTicks; } @@ -1133,12 +1133,12 @@ index 467ea5292a5dca5679b0e9b92b75447c3770fae0..639bbbf36ba6a627a26fc8cd112f3d28 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 20339cb8a1fa4ca0716c7362276fc0cb9add6dee..eb27d6934f165d7f958ad441feb18a95c9ed4c24 100644 +index 98ee31528c93ae1a1d294d47c7722ac8b017edbe..f9ca274c7d273f7c56bbc2ffb8e78b6f51880bbd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -101,6 +101,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.piglinMaxHealth); +@@ -118,6 +118,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -1149,12 +1149,12 @@ index 20339cb8a1fa4ca0716c7362276fc0cb9add6dee..eb27d6934f165d7f958ad441feb18a95 public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 5f4dcb1d2fd8e3354fb5148512648062463b5bd8..2f6b55361f62f9f9125fec9b3ca062f98e1768a7 100644 +index 349fb046ba7930af29251973efde4e1ecfef16f4..54bb2392a71dffaaa73b00ada833291dd0a86ab7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -46,6 +46,11 @@ public class PiglinBrute extends AbstractPiglin { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.piglinBruteMaxHealth); +@@ -63,6 +63,11 @@ public class PiglinBrute extends AbstractPiglin { } + // Purpur end + @Override + public boolean isSensitiveToWater() { @@ -1165,10 +1165,10 @@ index 5f4dcb1d2fd8e3354fb5148512648062463b5bd8..2f6b55361f62f9f9125fec9b3ca062f9 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 8144e3c60bc586bd48677a1d1af3b20f1a1fa337..8e32ba64acfc1b671b859be23f3a84fb4151b570 100644 +index 26d7b7de2dc2b59224311bc9541a5f0f0f386277..831254902b21104a8d6376446853a141197278a5 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -165,6 +165,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -187,6 +187,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return level.purpurConfig.villagerCanBeLeashed && !this.isLeashed(); } @@ -1181,10 +1181,10 @@ index 8144e3c60bc586bd48677a1d1af3b20f1a1fa337..8e32ba64acfc1b671b859be23f3a84fb public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 5bf96ff879318ea1be45f89b8689b6739ed9ca5b..86c8e3d6ad7bb497c50433ff882fab3f5bd7b6ad 100644 +index 4dc8ac6a3e26a619ff4f2d7b907f192766c8281a..36e99dc4c37d321608b0781c9c7787986d21307d 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -76,6 +76,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -93,6 +93,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return level.purpurConfig.wanderingTraderCanBeLeashed && !this.isLeashed(); } @@ -1197,7 +1197,7 @@ index 5bf96ff879318ea1be45f89b8689b6739ed9ca5b..86c8e3d6ad7bb497c50433ff882fab3f 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 f39c4a2acf8d6af849ce3c0ef319a58a203b08c1..f3a2c3cd83d8048df9d0df86220d59f2ce4c10af 100644 +index a53c3fdbf11c8c33407aa0082f788848ac77dc34..104a3e088e0d181e140a68ddf5271a221d51e979 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -547,9 +547,11 @@ public class PurpurWorldConfig { @@ -2201,10 +2201,11 @@ index f39c4a2acf8d6af849ce3c0ef319a58a203b08c1..f3a2c3cd83d8048df9d0df86220d59f2 private void zombifiedPiglinSettings() { if (PurpurConfig.version < 10) { double oldValue = getDouble("mobs.zombified_piglin.attributes.max-health", zombifiedPiglinMaxHealth); -@@ -1680,5 +1825,6 @@ public class PurpurWorldConfig { +@@ -1680,6 +1825,7 @@ 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); + zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } - } + + public boolean babiesAreRidable = true; diff --git a/patches/server/0126-Config-to-always-tame-in-Creative.patch b/patches/server/0127-Config-to-always-tame-in-Creative.patch similarity index 91% rename from patches/server/0126-Config-to-always-tame-in-Creative.patch rename to patches/server/0127-Config-to-always-tame-in-Creative.patch index 218ee7a0a..33810e9d4 100644 --- a/patches/server/0126-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0127-Config-to-always-tame-in-Creative.patch @@ -20,10 +20,10 @@ index b463fdb812f1c402885f1538e1c213aea1374e5c..88cae271386b1502cd80880a5c249959 return; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 0ebfb9e6e6845cf0248410698fe59a4c7a76c43c..cd4b5286ac58d569f961d50f4d277ad3b70b8897 100644 +index fa437d0af82292797c1e4432c57a8384c7aacdc4..93a0adaf4ad080439a8df1688d5b5b241ead07c6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -442,7 +442,7 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -470,7 +470,7 @@ public class Cat extends TamableAnimal implements VariantHolder { } } else if (this.isFood(itemstack)) { this.usePlayerItem(player, hand, itemstack); @@ -33,10 +33,10 @@ index 0ebfb9e6e6845cf0248410698fe59a4c7a76c43c..cd4b5286ac58d569f961d50f4d277ad3 this.setOrderedToSit(true); this.level().broadcastEntityEvent(this, (byte) 7); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 1298cfd6b45b145b13afa7dbc4ffe914896c58f2..cba42fd7d5ea07960cf7b10702f1e4bd4573a8cd 100644 +index db3607ad07da5ad2c08f4fedbd5d8cfc2c3f4f04..4bbf7b2afa98ed0dae079596cd99606bb20d63fa 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -276,7 +276,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index fdfb1f6bd59f5b9e193aac61b2ddc1b1e4f20d6c..0c3ae4eb17641d31b77a36db2210bef24632e2a2 100644 +index 70db296b80b98b378917f68037420ae150e14adb..3fc967279daaf6eb2b2d80fcad57b5b6a11cec43 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -182,6 +182,7 @@ public class PurpurConfig { +@@ -183,6 +183,7 @@ public class PurpurConfig { public static String demoCommandOutput = "%s has been shown the demo screen"; public static String pingCommandOutput = "%s's ping is %sms"; public static String tpsbarCommandOutput = "Tpsbar toggled for "; + public static String dontRunWithScissors = "Don't run with scissors!"; private static void messages() { + cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); - afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); -@@ -192,6 +193,12 @@ public class PurpurConfig { +@@ -194,6 +195,12 @@ public class PurpurConfig { demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput); pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput); @@ -62,7 +62,7 @@ index fdfb1f6bd59f5b9e193aac61b2ddc1b1e4f20d6c..0c3ae4eb17641d31b77a36db2210bef2 public static String serverModName = "Purpur"; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1f97fd4d671f30cb03659ec4c8289d80b2b8c3e5..ab57aaa6a301f2816b03e261038a84d09fefc9c1 100644 +index 7c0279f34f380e42c8f0f1dbb8806266655aa6f7..7d0feb23c572580eaeb31bc6e150181f06581d45 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -199,6 +199,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0130-One-Punch-Man.patch b/patches/server/0131-One-Punch-Man.patch similarity index 91% rename from patches/server/0130-One-Punch-Man.patch rename to patches/server/0131-One-Punch-Man.patch index 0afab4ff3..826836a6d 100644 --- a/patches/server/0130-One-Punch-Man.patch +++ b/patches/server/0131-One-Punch-Man.patch @@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man! diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 77a808d1f2737bd705807a97f84d1c3b77338346..734ea091ab4d5cd211902e0b6838455a7f3cae66 100644 +index eac15c03b842840a47a0b2d1b0f3ea3920a621a5..c7f53783c210f79a70577aa3d4f53b5410f26387 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2277,6 +2277,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2278,6 +2278,20 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -30,7 +30,7 @@ index 77a808d1f2737bd705807a97f84d1c3b77338346..734ea091ab4d5cd211902e0b6838455a if (human) { // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ab57aaa6a301f2816b03e261038a84d09fefc9c1..0241cf9413fd830fc9fc045a9ef75c8d814ec612 100644 +index 7d0feb23c572580eaeb31bc6e150181f06581d45..93076aa8497009c920f05511ad23e04a7341663b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -348,6 +348,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 98% rename from patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 0fe14e8a8..adbe45b10 100644 --- a/patches/server/0131-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0132-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,7 +43,7 @@ index 749ab72edc0d2e9c6f1161415ab8d59d3d6ca976..897c202c0905040072a06fdfa2032a7f // Paper end if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0241cf9413fd830fc9fc045a9ef75c8d814ec612..d64eea277befa1fb510d8be78f7653ae2e6c32ee 100644 +index 93076aa8497009c920f05511ad23e04a7341663b..bf9c93335f00500c8d48b1cb4617b24e0f5e28cb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -203,6 +203,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 89% rename from patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch index d495c21bb..d502a162e 100644 --- a/patches/server/0132-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0133-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ 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 e81f439727dea8073044abec5f99fbe1220fb279..3745b4b2cacef2ce9c2d0aa9e72245a3ec551ae4 100644 +index eac27b6ff180369cd0c9423d176a5a7bf7406ab1..7583d43ad95586ca584e44eaca52d9b1ee33e2be 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1420,7 +1420,7 @@ public class ServerPlayer extends Player { +@@ -1429,7 +1429,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); @@ -18,7 +18,7 @@ index e81f439727dea8073044abec5f99fbe1220fb279..3745b4b2cacef2ce9c2d0aa9e72245a3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d64eea277befa1fb510d8be78f7653ae2e6c32ee..5797833e8a2973bb62efc2e50f857dd579e660c4 100644 +index bf9c93335f00500c8d48b1cb4617b24e0f5e28cb..0181457ff8743856d08a6505ce32072a20eb420f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -357,6 +357,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0133-Add-back-player-spawned-endermite-API.patch b/patches/server/0134-Add-back-player-spawned-endermite-API.patch similarity index 94% rename from patches/server/0133-Add-back-player-spawned-endermite-API.patch rename to patches/server/0134-Add-back-player-spawned-endermite-API.patch index 341acbc8c..8368c6971 100644 --- a/patches/server/0133-Add-back-player-spawned-endermite-API.patch +++ b/patches/server/0134-Add-back-player-spawned-endermite-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add back player spawned endermite API diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index e3573708cf8497935144aa270e1a1d5781d3ec7f..ec8a0c6ef570e09e2ac5a7c3cfce82a1c32f30c0 100644 +index 41c20875b3a92b1271125e087c98be927cd192fe..de69f93dc3e4fea716b540238cdc871245c9217a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java @@ -31,6 +31,7 @@ import net.minecraft.world.level.block.state.BlockState; @@ -16,7 +16,7 @@ index e3573708cf8497935144aa270e1a1d5781d3ec7f..ec8a0c6ef570e09e2ac5a7c3cfce82a1 public Endermite(EntityType type, Level world) { super(type, world); -@@ -47,6 +48,14 @@ public class Endermite extends Monster { +@@ -64,6 +65,14 @@ public class Endermite extends Monster { return this.level.purpurConfig.endermiteTakeDamageFromWater; } @@ -31,7 +31,7 @@ index e3573708cf8497935144aa270e1a1d5781d3ec7f..ec8a0c6ef570e09e2ac5a7c3cfce82a1 @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -97,12 +106,14 @@ public class Endermite extends Monster { +@@ -116,12 +125,14 @@ public class Endermite extends Monster { public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); this.life = nbt.getInt("Lifetime"); diff --git a/patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 90% rename from patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch index 6033968f4..5f358fc13 100644 --- a/patches/server/0134-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0135-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 69da4fc206d33c7ff401c86edc86d0f308ad7c1f..23bc07396c65763fab8c8d584bcc317cc29af9d4 100644 +index ae2916ed826b28a3737327b3a6b2725225bcaf61..2416f348374afe2a788bd106630e9bf6b60f602c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -109,7 +109,7 @@ public class EnderMan extends Monster implements NeutralMob { - this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); +@@ -128,7 +128,7 @@ public class EnderMan extends Monster implements NeutralMob { + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); - this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false)); @@ -18,7 +18,7 @@ index 69da4fc206d33c7ff401c86edc86d0f308ad7c1f..23bc07396c65763fab8c8d584bcc317c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5797833e8a2973bb62efc2e50f857dd579e660c4..1c027ef8420a2e6b6fe90038a7bce370cefe1cdf 100644 +index 0181457ff8743856d08a6505ce32072a20eb420f..5066a371334258808cca67f6f268fca76faf2af2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -881,17 +881,25 @@ public class PurpurWorldConfig { diff --git a/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 85% rename from patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index d745fd979..3b3888b69 100644 --- a/patches/server/0135-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0136-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,20 +7,20 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra Adds functionality to a useless item! diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 23bc07396c65763fab8c8d584bcc317cc29af9d4..9d84092a3e9712609e35e4fd0a2db2fc2ac385ad 100644 +index 2416f348374afe2a788bd106630e9bf6b60f602c..cb0e27962b77a1f62c5d561b361b51cf279e7cce 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -246,7 +246,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -265,7 +265,7 @@ public class EnderMan extends Monster implements NeutralMob { // Paper end ItemStack itemstack = (ItemStack) player.getInventory().armor.get(3); - if (itemstack.is(Blocks.CARVED_PUMPKIN.asItem())) { + if (this.level.purpurConfig.endermanDisableStareAggro || itemstack.is(Blocks.CARVED_PUMPKIN.asItem()) || (this.level.purpurConfig.endermanIgnorePlayerDragonHead && itemstack.is(net.minecraft.world.item.Items.DRAGON_HEAD))) { // Purpur return false; + } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height } else { - 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 1c027ef8420a2e6b6fe90038a7bce370cefe1cdf..fd97b15422815b5bf334db5c4a4c3fd5173a69f8 100644 +index 5066a371334258808cca67f6f268fca76faf2af2..7786ff6e4adb8180090eb17298fa7147d4b1848f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -883,6 +883,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0136-Tick-fluids-config.patch b/patches/server/0137-Tick-fluids-config.patch similarity index 97% rename from patches/server/0136-Tick-fluids-config.patch rename to patches/server/0137-Tick-fluids-config.patch index 717525bd2..0a1877ac8 100644 --- a/patches/server/0136-Tick-fluids-config.patch +++ b/patches/server/0137-Tick-fluids-config.patch @@ -36,7 +36,7 @@ index bbabe4ad8afcc3a2069f6e9d4a9adcb643266894..55419bd653f7f5391fa13cd15a0b00fb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fd97b15422815b5bf334db5c4a4c3fd5173a69f8..e2ae6c3b45c5b231b72579a0fbcf00f6abb89ea6 100644 +index 7786ff6e4adb8180090eb17298fa7147d4b1848f..0b6c9ed87baf5f81c9a4b43355ad81825f40c5f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -131,6 +131,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0137-Config-to-disable-Llama-caravans.patch b/patches/server/0138-Config-to-disable-Llama-caravans.patch similarity index 93% rename from patches/server/0137-Config-to-disable-Llama-caravans.patch rename to patches/server/0138-Config-to-disable-Llama-caravans.patch index 23328aac3..9b6ae45e4 100644 --- a/patches/server/0137-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0138-Config-to-disable-Llama-caravans.patch @@ -19,10 +19,10 @@ index 849f0c7c6d13df00d90211a48d8b56ab156812b8..194dd3a896ed859c23c84ae7cb6147d5 List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { EntityType entityType = entity.getType(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 84f6fab337f126290225e93038555699a7814f94..4ecf2f60465485982a4b9b8f1fabe2757dd778f4 100644 +index 9440c55671473e717ad1019019c5edd38898e387..d8eac8a7f5919c8eda5999c1bbc8fab098a69b08 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -494,7 +494,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { - super(type, world); -@@ -191,6 +194,14 @@ public class Creeper extends Monster implements PowerableMob { + private int spacebarCharge = 0; + private int prevSpacebarCharge = 0; + private int powerToggleDelay = 0; +@@ -268,6 +269,14 @@ public class Creeper extends Monster implements PowerableMob { return this.level.purpurConfig.creeperTakeDamageFromWater; } @@ -34,7 +32,7 @@ index 4c175c9e8a3452f67b3f7cdac5aac1169309e993..656ddb0011eebc7acb9eb72a79fc372b @Override protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; -@@ -281,6 +292,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -358,6 +367,7 @@ public class Creeper extends Monster implements PowerableMob { } public void explodeCreeper() { @@ -42,7 +40,7 @@ index 4c175c9e8a3452f67b3f7cdac5aac1169309e993..656ddb0011eebc7acb9eb72a79fc372b if (!this.level().isClientSide) { float f = this.isPowered() ? 2.0F : 1.0F; -@@ -298,7 +310,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -375,7 +385,7 @@ public class Creeper extends Monster implements PowerableMob { } // CraftBukkit end } @@ -52,7 +50,7 @@ index 4c175c9e8a3452f67b3f7cdac5aac1169309e993..656ddb0011eebc7acb9eb72a79fc372b private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6b9d5c722423e5e52cf138aaa63bc522c3931ec0..5f127fa1013347b6875a987ab0037ab566f67f6e 100644 +index ff50c2f80efb1a721e06ffd0059802a3f89d434e..3e597d7ed6a6dd1c5726e76e0fe76687a3cb4b03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -771,6 +771,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0139-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0140-Configurable-ravager-griefable-blocks-list.patch similarity index 94% rename from patches/server/0139-Configurable-ravager-griefable-blocks-list.patch rename to patches/server/0140-Configurable-ravager-griefable-blocks-list.patch index 77c59b4e3..5829b748a 100644 --- a/patches/server/0139-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0140-Configurable-ravager-griefable-blocks-list.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable ravager griefable blocks list diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 5fc6506c1d0d064c5adce5416eb1c1049ae8cf01..ead73730128a8646e9a6942c4f89e1974752a39a 100644 +index fb4e452e6c7e8701a3b2ebfe28a458026040c0e2..6a0674fd0b7920bae5ba08a6f9919fbd838962e5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -180,7 +180,7 @@ public class Ravager extends Raider { +@@ -205,7 +205,7 @@ public class Ravager extends Raider { BlockState iblockdata = this.level().getBlockState(blockposition); Block block = iblockdata.getBlock(); @@ -31,7 +31,7 @@ index cf7007cabe4ba7505f2728e79e4c56e2d1bc878b..c431ec19212821ba7722c073e5ee6ad7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f127fa1013347b6875a987ab0037ab566f67f6e..600ef1ed2478ab68baf3684d64dedefd56f95c6f 100644 +index 3e597d7ed6a6dd1c5726e76e0fe76687a3cb4b03..dc2363808b6041ac1e60829e4e9a6a6c459a159b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1405,6 +1405,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0140-Sneak-to-bulk-process-composter.patch b/patches/server/0141-Sneak-to-bulk-process-composter.patch similarity index 98% rename from patches/server/0140-Sneak-to-bulk-process-composter.patch rename to patches/server/0141-Sneak-to-bulk-process-composter.patch index 06e4fb7b1..85396fe6a 100644 --- a/patches/server/0140-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0141-Sneak-to-bulk-process-composter.patch @@ -90,7 +90,7 @@ index 87153b5576fed05103183a9860d804c2c8cfbe1c..e8ee608aa5e352d741694f50cdf77f06 int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 600ef1ed2478ab68baf3684d64dedefd56f95c6f..b5847ce9b0df7b6d6bce3c1d91ed1a57f7ece40a 100644 +index dc2363808b6041ac1e60829e4e9a6a6c459a159b..4531d6d54eab78c87961641a0b023117e685aa5b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -485,6 +485,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0141-Config-for-skipping-night.patch b/patches/server/0142-Config-for-skipping-night.patch similarity index 90% rename from patches/server/0141-Config-for-skipping-night.patch rename to patches/server/0142-Config-for-skipping-night.patch index 8b7cbac31..790e3fb70 100644 --- a/patches/server/0141-Config-for-skipping-night.patch +++ b/patches/server/0142-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 89de2c9a85068c32cc42927fc22aa42ea05a1519..d44f8a660870ed5e4c4f5d3070c074fab27a5807 100644 +index 3b512beac50bc5a2405ca3287b08e7ffcb620313..a7faa7e1cc78e900ec09889e2a683a3eacce675a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -723,7 +723,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -724,7 +724,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; @@ -18,7 +18,7 @@ index 89de2c9a85068c32cc42927fc22aa42ea05a1519..d44f8a660870ed5e4c4f5d3070c074fa 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 b5847ce9b0df7b6d6bce3c1d91ed1a57f7ece40a..54b9ecc50ce2f2f6e709447d29a4ca7d7b977092 100644 +index 4531d6d54eab78c87961641a0b023117e685aa5b..9c35e7cadb723553bd21851d391b0297e5382b61 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -360,6 +360,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0142-Add-config-for-villager-trading.patch b/patches/server/0143-Add-config-for-villager-trading.patch similarity index 80% rename from patches/server/0142-Add-config-for-villager-trading.patch rename to patches/server/0143-Add-config-for-villager-trading.patch index 851fd8d84..8d2b62555 100644 --- a/patches/server/0142-Add-config-for-villager-trading.patch +++ b/patches/server/0143-Add-config-for-villager-trading.patch @@ -5,33 +5,33 @@ Subject: [PATCH] Add config for villager trading diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 8e32ba64acfc1b671b859be23f3a84fb4151b570..98f67161f173f513c5794ffb5cb6350c7f1a1e23 100644 +index 831254902b21104a8d6376446853a141197278a5..d370ca8d0794c8b2f6fba5e4bc1c25d567e99511 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -341,7 +341,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - if (flag) { - return InteractionResult.sidedSuccess(this.level().isClientSide); +@@ -365,7 +365,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur } else { + if (level().purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur - if (!this.level().isClientSide && !this.offers.isEmpty()) { + if (this.level().purpurConfig.villagerAllowTrading && !this.offers.isEmpty()) { this.startTrading(player); } diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 86c8e3d6ad7bb497c50433ff882fab3f5bd7b6ad..959b8174a2ce5329fb136c2f2bf15381a1ecac55 100644 +index 36e99dc4c37d321608b0781c9c7787986d21307d..547795c81be710267c93d29c75a9b5e139d3eedc 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -131,7 +131,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill - if (this.getOffers().isEmpty()) { - return InteractionResult.sidedSuccess(this.level().isClientSide); +@@ -149,7 +149,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill + return tryRide(player, hand, InteractionResult.sidedSuccess(this.level().isClientSide)); // Purpur } else { + if (level().purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur - if (!this.level().isClientSide) { + if (this.level().purpurConfig.wanderingTraderAllowTrading) { this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 54b9ecc50ce2f2f6e709447d29a4ca7d7b977092..8da862e56a0144fd53c29e5626a8e960f97e78f0 100644 +index 9c35e7cadb723553bd21851d391b0297e5382b61..205ffb12c6ca4e614655b29fedcbc87155606880 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1714,6 +1714,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0143-Allow-infinity-on-crossbows.patch b/patches/server/0144-Allow-infinity-on-crossbows.patch similarity index 96% rename from patches/server/0143-Allow-infinity-on-crossbows.patch rename to patches/server/0144-Allow-infinity-on-crossbows.patch index 6af5cdeaa..62898eba1 100644 --- a/patches/server/0143-Allow-infinity-on-crossbows.patch +++ b/patches/server/0144-Allow-infinity-on-crossbows.patch @@ -77,10 +77,10 @@ index 3d0ce0803e1da8a2681a3cb41096ac942ece54a1..bcd075a771c7f43c6d1549aeec2ccb20 return null; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 0c3ae4eb17641d31b77a36db2210bef24632e2a2..b6db2919825ef04ec4aadd5129cac24d39de5d30 100644 +index 3fc967279daaf6eb2b2d80fcad57b5b6a11cec43..a191d631e4c5401e1fafc0d9a4a4d5eed4f300af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -282,6 +282,7 @@ public class PurpurConfig { +@@ -284,6 +284,7 @@ public class PurpurConfig { } public static boolean allowInfinityMending = false; @@ -88,7 +88,7 @@ index 0c3ae4eb17641d31b77a36db2210bef24632e2a2..b6db2919825ef04ec4aadd5129cac24d private static void enchantmentSettings() { if (version < 5) { boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -289,6 +290,7 @@ public class PurpurConfig { +@@ -291,6 +292,7 @@ public class PurpurConfig { set("settings.enchantment.allow-infinite-and-mending-together", null); } allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); diff --git a/patches/server/0144-Drowning-Settings.patch b/patches/server/0145-Drowning-Settings.patch similarity index 86% rename from patches/server/0144-Drowning-Settings.patch rename to patches/server/0145-Drowning-Settings.patch index d046ad28c..adfae9e34 100644 --- a/patches/server/0144-Drowning-Settings.patch +++ b/patches/server/0145-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c6157d80118ad936d677651083dcde6724667434..b94ad3ef466fea2bc3d7115c2efae5c4241db843 100644 +index 4a6c13e2f9835219161b3b83e0b3aecafb4eed73..cb062cfb6f4809fc580108503fe77e579ab954f5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3226,7 +3226,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3241,7 +3241,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } public int getMaxAirSupply() { @@ -18,10 +18,10 @@ index c6157d80118ad936d677651083dcde6724667434..b94ad3ef466fea2bc3d7115c2efae5c4 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 734ea091ab4d5cd211902e0b6838455a7f3cae66..89221731d1150fa8a0d8e49820c9af3a1e456fb3 100644 +index c7f53783c210f79a70577aa3d4f53b5410f26387..7e9c1dd6ccc6ce9dba8588b8fcd20a5f294cc52e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -440,7 +440,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -441,7 +441,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -30,7 +30,7 @@ index 734ea091ab4d5cd211902e0b6838455a7f3cae66..89221731d1150fa8a0d8e49820c9af3a this.setAirSupply(0); Vec3 vec3d = this.getDeltaMovement(); -@@ -452,7 +452,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -453,7 +453,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z); } @@ -40,7 +40,7 @@ index 734ea091ab4d5cd211902e0b6838455a7f3cae66..89221731d1150fa8a0d8e49820c9af3a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8da862e56a0144fd53c29e5626a8e960f97e78f0..c8255b4de12d902f26b33ba8dbe623e404d8721f 100644 +index 205ffb12c6ca4e614655b29fedcbc87155606880..bc0ce5ee17cc575c4bfb4e74227dd07fc8540366 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -166,6 +166,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0145-Break-individual-slabs-when-sneaking.patch b/patches/server/0146-Break-individual-slabs-when-sneaking.patch similarity index 97% rename from patches/server/0145-Break-individual-slabs-when-sneaking.patch rename to patches/server/0146-Break-individual-slabs-when-sneaking.patch index dbcd97b0f..c3587cf86 100644 --- a/patches/server/0145-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0146-Break-individual-slabs-when-sneaking.patch @@ -47,7 +47,7 @@ index 18b603d646081926343dea108b55d641df1c2c34..03ad3e45fc6d48091ac0c0ba5dc3d014 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c8255b4de12d902f26b33ba8dbe623e404d8721f..d23828fdbe435acc2deefe653d31f13eaf3f8def 100644 +index bc0ce5ee17cc575c4bfb4e74227dd07fc8540366..25d224c38469e82957e924125153d8dc4fef1db3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -606,6 +606,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0146-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch similarity index 96% rename from patches/server/0146-Config-to-disable-hostile-mob-spawn-on-ice.patch rename to patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch index a6a5ec3fa..0ded95e9f 100644 --- a/patches/server/0146-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0147-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,7 +24,7 @@ index 55c245d0dfa369dc6de2197ae37335fba4fae4ae..c9b40515f4c2ff1eedfc9510930c3bae return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d23828fdbe435acc2deefe653d31f13eaf3f8def..d442f3dfc8d0e1df032b34761214327167643e67 100644 +index 25d224c38469e82957e924125153d8dc4fef1db3..d3e8c6c7e7088685cadf693e49d797234245c50f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -571,6 +571,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0147-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch similarity index 96% rename from patches/server/0147-Config-to-show-Armor-Stand-arms-on-spawn.patch rename to patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch index 9b1b91ed2..b864ce141 100644 --- a/patches/server/0147-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0148-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -17,7 +17,7 @@ index cfe4c6f3316a9bcb3fb77bbb839525bed5527b17..d3bb4bb75e00a3f9507ce3699e55edbd public ArmorStand(Level world, double x, double y, double z) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d442f3dfc8d0e1df032b34761214327167643e67..e7a7d6deb93ad4c4aac5cc4ddfe936fddce331b7 100644 +index d3e8c6c7e7088685cadf693e49d797234245c50f..7fd0f37cfb1abf85adf84f5b7f1ed0769eb49208 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -104,6 +104,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0148-Option-to-make-doors-require-redstone.patch b/patches/server/0149-Option-to-make-doors-require-redstone.patch similarity index 98% rename from patches/server/0148-Option-to-make-doors-require-redstone.patch rename to patches/server/0149-Option-to-make-doors-require-redstone.patch index aeb573bbf..1c2301ebb 100644 --- a/patches/server/0148-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0149-Option-to-make-doors-require-redstone.patch @@ -67,7 +67,7 @@ index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a30 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e7a7d6deb93ad4c4aac5cc4ddfe936fddce331b7..effdd617116f125d1de38090c2945951cdc6624e 100644 +index 7fd0f37cfb1abf85adf84f5b7f1ed0769eb49208..65f6616737e8936e71160b71d410b1a177be1405 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -510,6 +510,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0149-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch similarity index 98% rename from patches/server/0149-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0150-Config-to-allow-for-unsafe-enchants.patch index 71faa5eee..f7775f43a 100644 --- a/patches/server/0149-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0150-Config-to-allow-for-unsafe-enchants.patch @@ -87,10 +87,10 @@ index b70e57a78bbe9084746ba9a4bc896ad2b1636e8f..20aed640cf6afd6d6a24f42adbedc99a this.getOrCreateTag().put(key, element); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b6db2919825ef04ec4aadd5129cac24d39de5d30..79a0d4e5570fccc95c271263e0caebbc777a8b71 100644 +index a191d631e4c5401e1fafc0d9a4a4d5eed4f300af..80f47a113b48670695a5ffe67dd6e0f800970e1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -283,14 +283,32 @@ public class PurpurConfig { +@@ -285,14 +285,32 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = false; diff --git a/patches/server/0150-Projectile-offset-config.patch b/patches/server/0151-Projectile-offset-config.patch similarity index 99% rename from patches/server/0150-Projectile-offset-config.patch rename to patches/server/0151-Projectile-offset-config.patch index dfbaf13e1..5b8832804 100644 --- a/patches/server/0150-Projectile-offset-config.patch +++ b/patches/server/0151-Projectile-offset-config.patch @@ -96,7 +96,7 @@ index 06c2f30b77a2c8aecc65e0c305f643d53798f364..6d1573161f0d8c7999f84925ba7bbf53 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index effdd617116f125d1de38090c2945951cdc6624e..8beb05cba43108f430daaf427ef62b1a0ce34514 100644 +index 65f6616737e8936e71160b71d410b1a177be1405..e119419b4ac261a439afc605ef26d450101a3fd3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -428,6 +428,23 @@ public class PurpurWorldConfig { diff --git a/patches/server/0151-Config-for-powered-rail-activation-distance.patch b/patches/server/0152-Config-for-powered-rail-activation-distance.patch similarity index 94% rename from patches/server/0151-Config-for-powered-rail-activation-distance.patch rename to patches/server/0152-Config-for-powered-rail-activation-distance.patch index bf84593ae..42df2052c 100644 --- a/patches/server/0151-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0152-Config-for-powered-rail-activation-distance.patch @@ -18,7 +18,7 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8beb05cba43108f430daaf427ef62b1a0ce34514..74ff1a57e3f52594d4721404b997358453016805 100644 +index e119419b4ac261a439afc605ef26d450101a3fd3..7206fa9f4fff69068015f2b4801f33836a48e035 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -621,6 +621,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0152-Piglin-portal-spawn-modifier.patch b/patches/server/0153-Piglin-portal-spawn-modifier.patch similarity index 96% rename from patches/server/0152-Piglin-portal-spawn-modifier.patch rename to patches/server/0153-Piglin-portal-spawn-modifier.patch index b150c372e..bb56b091d 100644 --- a/patches/server/0152-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0153-Piglin-portal-spawn-modifier.patch @@ -31,7 +31,7 @@ index 2c085c4a154cb0f8a1d38453f43474a764398784..589b437e7c97c846410f293e2f014bdc pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 74ff1a57e3f52594d4721404b997358453016805..5e1398e8ca33f8e507c667ec23c87829b52c4d50 100644 +index 7206fa9f4fff69068015f2b4801f33836a48e035..6e401b55e16cebf56156bf88ecd8d97045721efd 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 { diff --git a/patches/server/0153-Config-to-change-max-number-of-bees.patch b/patches/server/0154-Config-to-change-max-number-of-bees.patch similarity index 92% rename from patches/server/0153-Config-to-change-max-number-of-bees.patch rename to patches/server/0154-Config-to-change-max-number-of-bees.patch index 182e3d9f8..e9f135702 100644 --- a/patches/server/0153-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0154-Config-to-change-max-number-of-bees.patch @@ -18,10 +18,10 @@ index 41c9f074203915c31c1ae7a160ce509c13383f84..a16a1df28258d605cf5908dbe19bda5d public BeehiveBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BEEHIVE, pos, state); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 79a0d4e5570fccc95c271263e0caebbc777a8b71..941c9add3e689528fe8306d291748d576d6a97b1 100644 +index 80f47a113b48670695a5ffe67dd6e0f800970e1e..606b5842888a0089103a36367664533fbfedd8f9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -248,6 +248,7 @@ public class PurpurConfig { +@@ -250,6 +250,7 @@ public class PurpurConfig { public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; @@ -29,7 +29,7 @@ index 79a0d4e5570fccc95c271263e0caebbc777a8b71..941c9add3e689528fe8306d291748d57 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -279,6 +280,7 @@ public class PurpurConfig { +@@ -281,6 +282,7 @@ public class PurpurConfig { org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); diff --git a/patches/server/0154-Config-for-wither-explosion-radius.patch b/patches/server/0155-Config-for-wither-explosion-radius.patch similarity index 96% rename from patches/server/0154-Config-for-wither-explosion-radius.patch rename to patches/server/0155-Config-for-wither-explosion-radius.patch index d8ab065eb..cde16dc87 100644 --- a/patches/server/0154-Config-for-wither-explosion-radius.patch +++ b/patches/server/0155-Config-for-wither-explosion-radius.patch @@ -18,7 +18,7 @@ index 80b86d5dd68c3d288a1a61ea8aa1cba9d899aa1c..f92e7624f774f883fac7bb51c2e46fdc if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e1398e8ca33f8e507c667ec23c87829b52c4d50..5930767d7d10d10bb352b55770cf7ef1bb6ef95a 100644 +index 6e401b55e16cebf56156bf88ecd8d97045721efd..e178d0a4ac56d861198d38e3c3c70eef7828c404 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1838,6 +1838,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0155-Gamemode-extra-permissions.patch b/patches/server/0156-Gamemode-extra-permissions.patch similarity index 97% rename from patches/server/0155-Gamemode-extra-permissions.patch rename to patches/server/0156-Gamemode-extra-permissions.patch index 0401b06da..7cd56e0cc 100644 --- a/patches/server/0155-Gamemode-extra-permissions.patch +++ b/patches/server/0156-Gamemode-extra-permissions.patch @@ -75,10 +75,10 @@ index ec771c480156db393c326fa2fbdc2d432fb76f53..71940bf3a4162d12a422a5b3100ad8de DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "defaultgamemode", "Allows the user to change the default gamemode of the server", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "seed", "Allows the user to view the seed of the world", PermissionDefault.OP, commands); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 941c9add3e689528fe8306d291748d576d6a97b1..e7467803f8087a5a785cb8afb42185173090c160 100644 +index 606b5842888a0089103a36367664533fbfedd8f9..dd741a961e3cfdbe81aa087ef983d1fb4dc94cc2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -231,6 +231,7 @@ public class PurpurConfig { +@@ -233,6 +233,7 @@ public class PurpurConfig { public static String commandTPSBarTextColorMedium = ""; public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; @@ -86,7 +86,7 @@ index 941c9add3e689528fe8306d291748d576d6a97b1..e7467803f8087a5a785cb8afb4218517 private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -242,6 +243,7 @@ public class PurpurConfig { +@@ -244,6 +245,7 @@ public class PurpurConfig { commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium); commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); diff --git a/patches/server/0156-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch b/patches/server/0157-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch similarity index 96% rename from patches/server/0156-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch rename to patches/server/0157-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch index 6f0fb51b5..31c85f1e5 100644 --- a/patches/server/0156-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch +++ b/patches/server/0157-Config-for-changing-the-blocks-that-turn-into-dirt-p.patch @@ -18,7 +18,7 @@ index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..5e730bc9c8ff94b16ac2bf8567dda8ae Runnable afterAction = null; // Paper if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5930767d7d10d10bb352b55770cf7ef1bb6ef95a..5a73e8a00f049752446335394bb1782092dc3444 100644 +index e178d0a4ac56d861198d38e3c3c70eef7828c404..1bd6ddb4cd5b77074a6f9fd5d4024db1c8567703 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -450,6 +450,21 @@ public class PurpurWorldConfig { diff --git a/patches/server/0157-Configurable-piston-push-limit.patch b/patches/server/0158-Configurable-piston-push-limit.patch similarity index 96% rename from patches/server/0157-Configurable-piston-push-limit.patch rename to patches/server/0158-Configurable-piston-push-limit.patch index 159b153c8..065e3537e 100644 --- a/patches/server/0157-Configurable-piston-push-limit.patch +++ b/patches/server/0158-Configurable-piston-push-limit.patch @@ -36,7 +36,7 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5a73e8a00f049752446335394bb1782092dc3444..e791e30815b08ae59ec288ab4499c99be479cf99 100644 +index 1bd6ddb4cd5b77074a6f9fd5d4024db1c8567703..e19e409b7e69023579db992f2b13359b18fd3dcc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -631,6 +631,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0158-Configurable-broadcast-settings.patch b/patches/server/0159-Configurable-broadcast-settings.patch similarity index 91% rename from patches/server/0158-Configurable-broadcast-settings.patch rename to patches/server/0159-Configurable-broadcast-settings.patch index 1b00122a1..07e2e1e13 100644 --- a/patches/server/0158-Configurable-broadcast-settings.patch +++ b/patches/server/0159-Configurable-broadcast-settings.patch @@ -17,10 +17,10 @@ index 52891c4a4260d1938f2f4565b5219ad303555638..69d349613f01ab0ac1890734657da529 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 3745b4b2cacef2ce9c2d0aa9e72245a3ec551ae4..9f2c584db6fde84a65b661bb7f37988b803916e1 100644 +index 7583d43ad95586ca584e44eaca52d9b1ee33e2be..6da83551f77354bd40a4fe8ace331eb24208f057 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -994,6 +994,7 @@ public class ServerPlayer extends Player { +@@ -1003,6 +1003,7 @@ public class ServerPlayer extends Player { })); Team scoreboardteambase = this.getTeam(); @@ -29,10 +29,10 @@ index 3745b4b2cacef2ce9c2d0aa9e72245a3ec551ae4..9f2c584db6fde84a65b661bb7f37988b if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e7467803f8087a5a785cb8afb42185173090c160..bc263c360f1e02f53d8203ed1564fbc120a645ca 100644 +index dd741a961e3cfdbe81aa087ef983d1fb4dc94cc2..0139da5fcac438530f023a32a75ef454879fe6c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -201,6 +201,18 @@ public class PurpurConfig { +@@ -203,6 +203,18 @@ public class PurpurConfig { deathMsgRunWithScissors = getString("settings.messages.death-message.run-with-scissors", deathMsgRunWithScissors); } diff --git a/patches/server/0159-Configurable-mob-blindness.patch b/patches/server/0160-Configurable-mob-blindness.patch similarity index 92% rename from patches/server/0159-Configurable-mob-blindness.patch rename to patches/server/0160-Configurable-mob-blindness.patch index 85998702d..be953631d 100644 --- a/patches/server/0159-Configurable-mob-blindness.patch +++ b/patches/server/0160-Configurable-mob-blindness.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 89221731d1150fa8a0d8e49820c9af3a1e456fb3..89224b1079c841afc8265e9347d22ac784690103 100644 +index 7e9c1dd6ccc6ce9dba8588b8fcd20a5f294cc52e..cb8f198801f74a6cd3cc0ae676005d72badff446 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1037,6 +1037,17 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1038,6 +1038,17 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.PIGLIN && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.PIGLIN_BRUTE && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) { d0 *= 0.5D; } @@ -28,7 +28,7 @@ index 89221731d1150fa8a0d8e49820c9af3a1e456fb3..89224b1079c841afc8265e9347d22ac7 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e791e30815b08ae59ec288ab4499c99be479cf99..deb4f2e232e572a00a5e9eade4a82d0c9522600d 100644 +index e19e409b7e69023579db992f2b13359b18fd3dcc..89652648990c50fc4f25318026ee1da925e7364f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -134,6 +134,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0160-Hide-hidden-players-from-entity-selector.patch b/patches/server/0161-Hide-hidden-players-from-entity-selector.patch similarity index 96% rename from patches/server/0160-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0161-Hide-hidden-players-from-entity-selector.patch index adc1a1a1f..e234ce8c8 100644 --- a/patches/server/0160-Hide-hidden-players-from-entity-selector.patch +++ b/patches/server/0161-Hide-hidden-players-from-entity-selector.patch @@ -59,10 +59,10 @@ index f25b9330e068c7d9e12cb57a7761cfef9ebaf7bc..7e66aaa960ce7b6dda7c064d4c6856cc + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index bc263c360f1e02f53d8203ed1564fbc120a645ca..8814527cdaac91994de01a8cf08d1fa3a048c175 100644 +index 0139da5fcac438530f023a32a75ef454879fe6c1..f3ddb65684a2cf7776c6e0137cb7acc7f36eb493 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -244,6 +244,7 @@ public class PurpurConfig { +@@ -246,6 +246,7 @@ public class PurpurConfig { public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; public static boolean commandGamemodeRequiresPermission = false; @@ -70,7 +70,7 @@ index bc263c360f1e02f53d8203ed1564fbc120a645ca..8814527cdaac91994de01a8cf08d1fa3 private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -256,6 +257,7 @@ public class PurpurConfig { +@@ -258,6 +259,7 @@ public class PurpurConfig { commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission); diff --git a/patches/server/0161-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 90% rename from patches/server/0161-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch index 3447451d0..654eadaea 100644 --- a/patches/server/0161-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for health to impact Creeper explosion radius diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 656ddb0011eebc7acb9eb72a79fc372b796aaafe..ec2d07e96241d8d0f100bb5492ae3bb6eb92ad85 100644 +index 13a1ede4fc72ef2811250ac4991ecd2bc10dbe95..a2c21c9c3ec6883661c63359e3c63ea090fcc07f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -295,9 +295,10 @@ public class Creeper extends Monster implements PowerableMob { +@@ -370,9 +370,10 @@ public class Creeper extends Monster implements PowerableMob { this.exploding = true; // Purpur if (!this.level().isClientSide) { float f = this.isPowered() ? 2.0F : 1.0F; @@ -21,7 +21,7 @@ index 656ddb0011eebc7acb9eb72a79fc372b796aaafe..ec2d07e96241d8d0f100bb5492ae3bb6 if (!event.isCancelled()) { this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index deb4f2e232e572a00a5e9eade4a82d0c9522600d..0a6a67d4fb74eebedab5b674d85f81c26013f3b5 100644 +index 89652648990c50fc4f25318026ee1da925e7364f..582fffb4caca2cd260fd24dab2ea7529eb2b74c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -856,6 +856,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0162-Iron-golem-calm-anger-options.patch b/patches/server/0163-Iron-golem-calm-anger-options.patch similarity index 90% rename from patches/server/0162-Iron-golem-calm-anger-options.patch rename to patches/server/0163-Iron-golem-calm-anger-options.patch index b5d4e3dc5..fe8f4fb67 100644 --- a/patches/server/0162-Iron-golem-calm-anger-options.patch +++ b/patches/server/0163-Iron-golem-calm-anger-options.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Iron golem calm anger options diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index ec5cd6de7a77dc1959a5d15d51d4dfffc4e3c29d..396882908e819737f25d39c0a601f006448e7856 100644 +index b89f01408c9ebaeeee93f1924010be6db89f1c66..39dfe26b37fc980080e7e0e7bdc82a94f00b0c33 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -78,6 +78,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { - +@@ -96,6 +96,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @Override protected void registerGoals() { + if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur + if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F)); - this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false)); -@@ -295,6 +296,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -315,6 +316,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { itemstack.shrink(1); } @@ -25,7 +25,7 @@ index ec5cd6de7a77dc1959a5d15d51d4dfffc4e3c29d..396882908e819737f25d39c0a601f006 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0a6a67d4fb74eebedab5b674d85f81c26013f3b5..861af734940e27418f036ec25850a1d56ad72a98 100644 +index 582fffb4caca2cd260fd24dab2ea7529eb2b74c3..693f8bea8ec84e357734bc495dbea13dca62fc12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1197,6 +1197,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0163-Breedable-parrots.patch b/patches/server/0164-Breedable-parrots.patch similarity index 81% rename from patches/server/0163-Breedable-parrots.patch rename to patches/server/0164-Breedable-parrots.patch index 18f74d69e..d65bd1c2e 100644 --- a/patches/server/0163-Breedable-parrots.patch +++ b/patches/server/0164-Breedable-parrots.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Breedable parrots diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index cba42fd7d5ea07960cf7b10702f1e4bd4573a8cd..b53a9c9bede5a23da0fab0043442566fa6b4207b 100644 +index 4bbf7b2afa98ed0dae079596cd99606bb20d63fa..44f3269e0b17b3932b6a184e3f8512bc416f6376 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -170,6 +170,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { -@@ -321,13 +323,13 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b94ad3ef466fea2bc3d7115c2efae5c4241db843..7ed24fd92a3edf5cacaf760d752534555d52c017 100644 +index cb062cfb6f4809fc580108503fe77e579ab954f5..c8df18120e1d8de44df7b0636ea697c0951fb38c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -477,6 +477,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -32,7 +32,7 @@ index b94ad3ef466fea2bc3d7115c2efae5c4241db843..7ed24fd92a3edf5cacaf760d75253455 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 89224b1079c841afc8265e9347d22ac784690103..99be702786a9f5c98c16c468fd7743ab297d103f 100644 +index cb8f198801f74a6cd3cc0ae676005d72badff446..84a967b39e737d00b388b5ae743b157388e8b6db 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -265,6 +265,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -43,7 +43,7 @@ index 89224b1079c841afc8265e9347d22ac784690103..99be702786a9f5c98c16c468fd7743ab @Override public float getBukkitYaw() { -@@ -805,6 +806,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -806,6 +807,7 @@ public abstract class LivingEntity extends Entity implements Attackable { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -51,7 +51,7 @@ index 89224b1079c841afc8265e9347d22ac784690103..99be702786a9f5c98c16c468fd7743ab } @Override -@@ -889,6 +891,11 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -890,6 +892,11 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -63,7 +63,7 @@ index 89224b1079c841afc8265e9347d22ac784690103..99be702786a9f5c98c16c468fd7743ab } // CraftBukkit start -@@ -3504,6 +3511,27 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3522,6 +3529,27 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } @@ -92,7 +92,7 @@ index 89224b1079c841afc8265e9347d22ac784690103..99be702786a9f5c98c16c468fd7743ab public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 475ac814ccd4dc988a10511a4419336ecf34421e..65914b253725e740f6efe278d89f71aa4421b251 100644 +index 1f1c7a8668dcdf7850720b46b395322601dbf9a0..f2ae40878dbc3d7c05e986933767f7bf2f6e0e0a 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1733,17 +1733,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -115,7 +115,7 @@ index 475ac814ccd4dc988a10511a4419336ecf34421e..65914b253725e740f6efe278d89f71aa @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 9ca1e9d95e62929c0015d5ca2c2f9c70e421842e..af73945e4fc9cae081be90fa68fe73c9bde9b5bf 100644 +index 93443238b77c04f6a9da3c25427d200ccf4699f8..892ae3a9ac2395896ff7881c49eaece8d46e831e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -66,6 +66,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -126,7 +126,7 @@ index 9ca1e9d95e62929c0015d5ca2c2f9c70e421842e..af73945e4fc9cae081be90fa68fe73c9 } @Override -@@ -99,35 +100,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -101,35 +102,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo } // Paper start @@ -164,7 +164,7 @@ index 9ca1e9d95e62929c0015d5ca2c2f9c70e421842e..af73945e4fc9cae081be90fa68fe73c9 super.aiStep(); } -@@ -192,7 +172,6 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -194,7 +174,6 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo } else { this.goalSelector.addGoal(4, this.meleeGoal); } @@ -172,7 +172,7 @@ index 9ca1e9d95e62929c0015d5ca2c2f9c70e421842e..af73945e4fc9cae081be90fa68fe73c9 } } -@@ -236,7 +215,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -238,7 +217,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo this.reassessWeaponGoal(); // Paper start if (nbt.contains("Paper.ShouldBurnInDay")) { @@ -181,7 +181,7 @@ index 9ca1e9d95e62929c0015d5ca2c2f9c70e421842e..af73945e4fc9cae081be90fa68fe73c9 } // Paper end } -@@ -245,7 +224,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -247,7 +226,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); @@ -191,7 +191,7 @@ index 9ca1e9d95e62929c0015d5ca2c2f9c70e421842e..af73945e4fc9cae081be90fa68fe73c9 // Paper end diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 2c605d8acc12177baedacc265b276f66e268d0a2..04cbd6f0a7686ccfcb80c54b44e410ec9a76728f 100644 +index bf0d201f0211a3d4d61fdf0fbea7bdf4ea220458..e36e029759b5dbc9c3641a1a3c1f28a538bd79c8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -20,6 +20,7 @@ public class Husk extends Zombie { @@ -202,7 +202,7 @@ index 2c605d8acc12177baedacc265b276f66e268d0a2..04cbd6f0a7686ccfcb80c54b44e410ec } @Override -@@ -58,7 +59,7 @@ public class Husk extends Zombie { +@@ -75,7 +76,7 @@ public class Husk extends Zombie { @Override public boolean isSunSensitive() { @@ -212,7 +212,7 @@ index 2c605d8acc12177baedacc265b276f66e268d0a2..04cbd6f0a7686ccfcb80c54b44e410ec @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 935cab241766f11b2dc957403db35d43b93e9080..da3e01c9d8d7202bcb2b0b249012bafe10f2e0c0 100644 +index 33e2f87c38fdbd79c3dcccc0c0dada5e05f78871..7cf3014eb0c658dd2e9d8ee369549eb17a93c9d3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -59,6 +59,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -222,8 +222,8 @@ index 935cab241766f11b2dc957403db35d43b93e9080..da3e01c9d8d7202bcb2b0b249012bafe + this.setShouldBurnInDay(true); // Purpur } - @Override -@@ -169,15 +170,7 @@ public class Phantom extends FlyingMob implements Enemy { + // Purpur start +@@ -229,16 +230,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { @@ -233,6 +233,7 @@ index 935cab241766f11b2dc957403db35d43b93e9080..da3e01c9d8d7202bcb2b0b249012bafe - if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - Configurable Burning - if (getRider() == null || !this.isControllable()) - // Purpur end +- if (getRider() == null || !this.isControllable()) // Purpur - this.setSecondsOnFire(8); - } - @@ -240,7 +241,7 @@ index 935cab241766f11b2dc957403db35d43b93e9080..da3e01c9d8d7202bcb2b0b249012bafe super.aiStep(); } -@@ -205,7 +198,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -266,7 +258,7 @@ public class Phantom extends FlyingMob implements Enemy { if (nbt.hasUUID("Paper.SpawningEntity")) { this.spawningEntity = nbt.getUUID("Paper.SpawningEntity"); } @@ -249,7 +250,7 @@ index 935cab241766f11b2dc957403db35d43b93e9080..da3e01c9d8d7202bcb2b0b249012bafe this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); } // Paper end -@@ -222,7 +215,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -283,7 +275,7 @@ public class Phantom extends FlyingMob implements Enemy { if (this.spawningEntity != null) { nbt.putUUID("Paper.SpawningEntity", this.spawningEntity); } @@ -258,7 +259,7 @@ index 935cab241766f11b2dc957403db35d43b93e9080..da3e01c9d8d7202bcb2b0b249012bafe // Paper end } -@@ -288,8 +281,14 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -349,8 +341,14 @@ public class Phantom extends FlyingMob implements Enemy { } public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; } @@ -276,7 +277,7 @@ index 935cab241766f11b2dc957403db35d43b93e9080..da3e01c9d8d7202bcb2b0b249012bafe // Paper end private static enum AttackPhase { diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index a7f1c1f38b187cc5a67a9ef08fa432b80f450617..c09cbdf9df9db13cb038e376ab10c5b53c74a6f8 100644 +index 54ee2eafe257fe8ac16ded66a8c49ba68d433450..2a50dcb60b062cff5b8bb2fcc42100c2e799fd5d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -95,11 +95,12 @@ public class Zombie extends Monster { @@ -293,7 +294,7 @@ index a7f1c1f38b187cc5a67a9ef08fa432b80f450617..c09cbdf9df9db13cb038e376ab10c5b5 } public Zombie(Level world) { -@@ -276,30 +277,7 @@ public class Zombie extends Monster { +@@ -295,30 +296,7 @@ public class Zombie extends Monster { @Override public void aiStep() { @@ -325,7 +326,7 @@ index a7f1c1f38b187cc5a67a9ef08fa432b80f450617..c09cbdf9df9db13cb038e376ab10c5b5 super.aiStep(); } -@@ -337,6 +315,7 @@ public class Zombie extends Monster { +@@ -356,6 +334,7 @@ public class Zombie extends Monster { } @@ -333,7 +334,7 @@ index a7f1c1f38b187cc5a67a9ef08fa432b80f450617..c09cbdf9df9db13cb038e376ab10c5b5 public boolean isSunSensitive() { return this.shouldBurnInDay; // Paper - use api value instead } -@@ -466,7 +445,7 @@ public class Zombie extends Monster { +@@ -485,7 +464,7 @@ public class Zombie extends Monster { nbt.putBoolean("CanBreakDoors", this.canBreakDoors()); nbt.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1); nbt.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1); @@ -342,7 +343,7 @@ index a7f1c1f38b187cc5a67a9ef08fa432b80f450617..c09cbdf9df9db13cb038e376ab10c5b5 } @Override -@@ -480,7 +459,7 @@ public class Zombie extends Monster { +@@ -499,7 +478,7 @@ public class Zombie extends Monster { } // Paper start if (nbt.contains("Paper.ShouldBurnInDay")) { @@ -352,7 +353,7 @@ index a7f1c1f38b187cc5a67a9ef08fa432b80f450617..c09cbdf9df9db13cb038e376ab10c5b5 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 285d58cfa0ea899e2a7583d1ca308872e68f18c9..270d38696f95e259dd036c5db2883e406e81d3fa 100644 +index eed8be5d6f796450a99f8dd11c673780d8cb5411..ac6640c525df098e54181dd630f83fd0410ca47c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -209,6 +209,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0172-Config-MobEffect-by-world.patch b/patches/server/0173-Config-MobEffect-by-world.patch similarity index 98% rename from patches/server/0172-Config-MobEffect-by-world.patch rename to patches/server/0173-Config-MobEffect-by-world.patch index d46523ea8..17a325f5a 100644 --- a/patches/server/0172-Config-MobEffect-by-world.patch +++ b/patches/server/0173-Config-MobEffect-by-world.patch @@ -40,7 +40,7 @@ index bcce17f884b57e619749351b7b2047f0a5f9be71..350ad84b02ec85566dc360b3d7609135 ((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ca2035d4a1c984a8d129ccd424e5d3a0a7f9721f..c03259911008e5f6c7c0ae2eb700e34a29868eb2 100644 +index 6bf8059ab05652d604103f8421c35b79b1dcfcb6..6445b71428260809b476ccd0a21a0180715b436e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -333,6 +333,21 @@ public class PurpurWorldConfig { diff --git a/patches/server/0173-Beacon-Activation-Range-Configurable.patch b/patches/server/0174-Beacon-Activation-Range-Configurable.patch similarity index 96% rename from patches/server/0173-Beacon-Activation-Range-Configurable.patch rename to patches/server/0174-Beacon-Activation-Range-Configurable.patch index 2585523b8..29f70863b 100644 --- a/patches/server/0173-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0174-Beacon-Activation-Range-Configurable.patch @@ -26,7 +26,7 @@ index 59246e24558569f7f50b4d4d508616798091c888..cc03c02f290ee8d58a2fea54b1f977f4 } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c03259911008e5f6c7c0ae2eb700e34a29868eb2..b2fe6c51dbc11c8c021f89b9fe74c9703aa00ed4 100644 +index 6445b71428260809b476ccd0a21a0180715b436e..f381566fa0712a183c3af7fff1043c99a855efbb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -525,6 +525,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0174-Add-toggle-for-sand-duping-fix.patch b/patches/server/0175-Add-toggle-for-sand-duping-fix.patch similarity index 95% rename from patches/server/0174-Add-toggle-for-sand-duping-fix.patch rename to patches/server/0175-Add-toggle-for-sand-duping-fix.patch index 4795305fa..6302c9f2c 100644 --- a/patches/server/0174-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0175-Add-toggle-for-sand-duping-fix.patch @@ -27,7 +27,7 @@ index eff81e846f696349b3bd3d26c02442f157b169f0..98cad555493376374fa2a19c36583489 } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b2fe6c51dbc11c8c021f89b9fe74c9703aa00ed4..43971b5e317f44ec66bc7adf7f409ad09698446f 100644 +index f381566fa0712a183c3af7fff1043c99a855efbb..f8d0003d1412d087ae367b42b428eb5763392855 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -714,6 +714,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch similarity index 92% rename from patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch rename to patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch index 31ecedcae..2c5850cb4 100644 --- a/patches/server/0175-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0176-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7ed24fd92a3edf5cacaf760d752534555d52c017..ed73296c9c2e07c3b24067946f996c13aa777cbb 100644 +index c8df18120e1d8de44df7b0636ea697c0951fb38c..c897bb42c708bb1f899469b56a3545d02cd24ca9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3055,7 +3055,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3070,7 +3070,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { } this.processPortalCooldown(); @@ -45,7 +45,7 @@ index f80f6da484f4144e743079e5104bf503419074b2..2deddc746e43896584bd65ba8e7971a8 entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 43971b5e317f44ec66bc7adf7f409ad09698446f..0286905783204f067bcb4371dc8ed81b7bea243d 100644 +index f8d0003d1412d087ae367b42b428eb5763392855..f3ff6f0e42d2b124578e3b89c57b7ef3e51d742c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -652,6 +652,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0176-Make-lightning-rod-range-configurable.patch b/patches/server/0177-Make-lightning-rod-range-configurable.patch similarity index 85% rename from patches/server/0176-Make-lightning-rod-range-configurable.patch rename to patches/server/0177-Make-lightning-rod-range-configurable.patch index 6aef7f2c5..e7f12d4b0 100644 --- a/patches/server/0176-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0177-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index d44f8a660870ed5e4c4f5d3070c074fab27a5807..1ddab634be51af2ad1c208e7ffc55f56e1bf298e 100644 +index a7faa7e1cc78e900ec09889e2a683a3eacce675a..f40eda7740b680d4a1bba7e8d177a8e0333caec7 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1038,7 +1038,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1039,7 +1039,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; @@ -18,10 +18,10 @@ index d44f8a660870ed5e4c4f5d3070c074fab27a5807..1ddab634be51af2ad1c208e7ffc55f56 return optional.map((blockposition1) -> { return blockposition1.above(1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index dc781bc68f024951c078b84fd37c2f106eb13a2e..078942f541713fc106008f3b39fed3a61acf866c 100644 +index 14f2b23248f23804a85b522e9e46ffa170162335..90354c009041e38143464f082ee8b6b54a5ec8cb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -268,6 +268,7 @@ public class PurpurConfig { +@@ -270,6 +270,7 @@ public class PurpurConfig { public static boolean cryingObsidianValidForPortalFrame = false; public static int beeInsideBeeHive = 3; public static boolean anvilCumulativeCost = true; @@ -29,7 +29,7 @@ index dc781bc68f024951c078b84fd37c2f106eb13a2e..078942f541713fc106008f3b39fed3a6 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -301,6 +302,7 @@ public class PurpurConfig { +@@ -303,6 +304,7 @@ public class PurpurConfig { cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); diff --git a/patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 93% rename from patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 7fd80bbc2..5a25b0f6c 100644 --- a/patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0178-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Burp delay, burp after eating food fills hunger bar diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 52dba0a97d1620447c22e51f2d9af8f898f0cd69..0598a4db8de5ff85937c3e5bd95cee5a09633df5 100644 +index 6ffd1b70722f34cb06f472f2340597c4778a5bb8..1a409a4df5feacb24f5a46255ffd7226baf09ade 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -188,6 +188,7 @@ public abstract class Player extends LivingEntity { @@ -17,7 +17,7 @@ index 52dba0a97d1620447c22e51f2d9af8f898f0cd69..0598a4db8de5ff85937c3e5bd95cee5a // CraftBukkit start public boolean fauxSleeping; -@@ -250,6 +251,12 @@ public abstract class Player extends LivingEntity { +@@ -263,6 +264,12 @@ public abstract class Player extends LivingEntity { @Override public void tick() { @@ -30,7 +30,7 @@ index 52dba0a97d1620447c22e51f2d9af8f898f0cd69..0598a4db8de5ff85937c3e5bd95cee5a this.noPhysics = this.isSpectator(); if (this.isSpectator()) { this.setOnGround(false); -@@ -2367,7 +2374,7 @@ public abstract class Player extends LivingEntity { +@@ -2380,7 +2387,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { this.getFoodData().eat(stack.getItem(), stack); this.awardStat(Stats.ITEM_USED.get(stack.getItem())); @@ -55,7 +55,7 @@ index 2038df72f8d7d33d4105de8129628daf21de6f0f..3f7193bebdfd914df2efeb57d77fd86a public void eat(Item item, ItemStack stack) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0286905783204f067bcb4371dc8ed81b7bea243d..2b9a4ef1365e3350095901f05be9622154c44096 100644 +index f3ff6f0e42d2b124578e3b89c57b7ef3e51d742c..3b085bc3cf1aac1da85a0042a1f24345e00c3779 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -392,6 +392,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0178-Allow-player-join-full-server-by-permission.patch b/patches/server/0179-Allow-player-join-full-server-by-permission.patch similarity index 100% rename from patches/server/0178-Allow-player-join-full-server-by-permission.patch rename to patches/server/0179-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0179-Add-portal-waiting-option-permission-bypass.patch b/patches/server/0180-Add-portal-waiting-option-permission-bypass.patch similarity index 92% rename from patches/server/0179-Add-portal-waiting-option-permission-bypass.patch rename to patches/server/0180-Add-portal-waiting-option-permission-bypass.patch index 22f13c549..310d569de 100644 --- a/patches/server/0179-Add-portal-waiting-option-permission-bypass.patch +++ b/patches/server/0180-Add-portal-waiting-option-permission-bypass.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add portal waiting option & permission bypass diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 0598a4db8de5ff85937c3e5bd95cee5a09633df5..86007f7ed1e5c4e2e688e1f012468e4cf6dc0d2e 100644 +index 1a409a4df5feacb24f5a46255ffd7226baf09ade..398b1a33ac3be17136a7d38bc35190db1364d10d 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -189,6 +189,7 @@ public abstract class Player extends LivingEntity { @@ -16,7 +16,7 @@ index 0598a4db8de5ff85937c3e5bd95cee5a09633df5..86007f7ed1e5c4e2e688e1f012468e4c // CraftBukkit start public boolean fauxSleeping; -@@ -456,7 +457,7 @@ public abstract class Player extends LivingEntity { +@@ -469,7 +470,7 @@ public abstract class Player extends LivingEntity { @Override public int getPortalWaitTime() { @@ -38,7 +38,7 @@ index cba6ead3f937f2b3d59c15a864e07e5cb2f2330c..ab75c82b96d0aea1ba1ba1065c8a16e5 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2b9a4ef1365e3350095901f05be9622154c44096..cfb1a28cc33ce9c2e776662c7515acba0e5b7631 100644 +index 3b085bc3cf1aac1da85a0042a1f24345e00c3779..7eeb5e81daf436a365ffcd3c2bebae5f7d10b7fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -394,6 +394,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0180-Shulker-spawn-from-bullet-options.patch b/patches/server/0181-Shulker-spawn-from-bullet-options.patch similarity index 94% rename from patches/server/0180-Shulker-spawn-from-bullet-options.patch rename to patches/server/0181-Shulker-spawn-from-bullet-options.patch index f742ab64b..2b63b0972 100644 --- a/patches/server/0180-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0181-Shulker-spawn-from-bullet-options.patch @@ -13,10 +13,10 @@ Subject: [PATCH] Shulker spawn from bullet options (7 - 1) / 5.0 = 1.2 1.0 - 1.2 = -0.2 0% (6 other shulkers) diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 4017784e5b722887caf8ab5d17579e6daf50c5b4..08d39b0660736be641ad22e3ceb08db7aabebf6a 100644 +index f328cac216a0f2a3e4956ab65d083caf072351d0..c31f7a4def4d56520b73fcfd99fcf4bd0d548e04 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -494,12 +494,21 @@ public class Shulker extends AbstractGolem implements VariantHolder getVariant() { @@ -68,7 +68,7 @@ index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cfb1a28cc33ce9c2e776662c7515acba0e5b7631..48b7f4f34f810819ac39638f14758a9b54f10132 100644 +index 7eeb5e81daf436a365ffcd3c2bebae5f7d10b7fc..7b30ffbeea1cc18a86d417bb0a522d1a4d940bff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1620,6 +1620,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0182-Eating-glow-berries-adds-glow-effect.patch similarity index 97% rename from patches/server/0181-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0182-Eating-glow-berries-adds-glow-effect.patch index e788e88eb..28bee49c0 100644 --- a/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0182-Eating-glow-berries-adds-glow-effect.patch @@ -18,7 +18,7 @@ index e6f8cb165f7e3da5f0edfc952d14059516de8acf..31f5ed9dd1727eee24804a384817d2b7 public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE); public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 48b7f4f34f810819ac39638f14758a9b54f10132..f24895f3db1a920d2e4711b686bd907ac09fd3e3 100644 +index 7b30ffbeea1cc18a86d417bb0a522d1a4d940bff..d98a504cae736f913fbde7e8b4c367af9af8cabc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -222,6 +222,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0182-Option-to-make-drowned-break-doors.patch b/patches/server/0183-Option-to-make-drowned-break-doors.patch similarity index 84% rename from patches/server/0182-Option-to-make-drowned-break-doors.patch rename to patches/server/0183-Option-to-make-drowned-break-doors.patch index 6eac56f53..baf625644 100644 --- a/patches/server/0182-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0183-Option-to-make-drowned-break-doors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to make drowned break doors diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index 050b337bfd328c0272a93615c98b8eec02deb026..05066a7f72908e7a1c8a55c5edced9946b83da6f 100644 +index be427ec80a5057f75054ec3982fcc6cd6d042246..aa5aadefafb1d8bc42768b24021f010ac1fc039b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -29,6 +29,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; @@ -16,25 +16,25 @@ index 050b337bfd328c0272a93615c98b8eec02deb026..05066a7f72908e7a1c8a55c5edced994 import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; -@@ -105,6 +106,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -122,6 +123,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.goalSelector.addGoal(2, new Drowned.DrownedAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(5, new Drowned.DrownedGoToBeachGoal(this, 1.0D)); this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0D, this.level().getSeaLevel())); -+ if (level.purpurConfig.drownedBreakDoors) this.goalSelector.addGoal(6, new MoveThroughVillageGoal(this, 1.0D, true, 4, this::canBreakDoors)); ++ if (level().purpurConfig.drownedBreakDoors) this.goalSelector.addGoal(6, new MoveThroughVillageGoal(this, 1.0D, true, 4, this::canBreakDoors)); this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Drowned.class})).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget)); -@@ -154,7 +156,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -171,7 +173,7 @@ public class Drowned extends Zombie implements RangedAttackMob { @Override public boolean supportsBreakDoorGoal() { - return false; -+ return level.purpurConfig.drownedBreakDoors ? true : false; ++ return level().purpurConfig.drownedBreakDoors ? true : false; } @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f24895f3db1a920d2e4711b686bd907ac09fd3e3..7d189a2f2979b1c921b353a00777a49baaa537d1 100644 +index d98a504cae736f913fbde7e8b4c367af9af8cabc..1cf617de7dde251a297574b2b0a745ceb57bda4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -982,6 +982,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0183-Configurable-hunger-starvation-damage.patch b/patches/server/0184-Configurable-hunger-starvation-damage.patch similarity index 84% rename from patches/server/0183-Configurable-hunger-starvation-damage.patch rename to patches/server/0184-Configurable-hunger-starvation-damage.patch index 6e1c77407..05717a7c6 100644 --- a/patches/server/0183-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0184-Configurable-hunger-starvation-damage.patch @@ -18,16 +18,18 @@ index 3f7193bebdfd914df2efeb57d77fd86af68d4041..1f6ed751dd9c1575967a57af5b26ceff this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7d189a2f2979b1c921b353a00777a49baaa537d1..1868642e47d7129378b673efb54b721a1f284962 100644 +index 1cf617de7dde251a297574b2b0a745ceb57bda4b..165783077b3b918be9f724edb205ab09ed8376bc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2102,4 +2102,9 @@ public class PurpurWorldConfig { - zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); +@@ -2103,6 +2103,11 @@ public class PurpurWorldConfig { zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } -+ + + public float hungerStarvationDamage = 1.0F; + private void hungerSettings() { + hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); + } - } ++ + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0184-Enhance-SysoutCatcher.patch b/patches/server/0185-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0184-Enhance-SysoutCatcher.patch rename to patches/server/0185-Enhance-SysoutCatcher.patch diff --git a/patches/server/0185-Add-uptime-command.patch b/patches/server/0186-Add-uptime-command.patch similarity index 94% rename from patches/server/0185-Add-uptime-command.patch rename to patches/server/0186-Add-uptime-command.patch index 7577445e6..be01058d7 100644 --- a/patches/server/0185-Add-uptime-command.patch +++ b/patches/server/0186-Add-uptime-command.patch @@ -17,7 +17,7 @@ index 4e721dfca7559620d8ce65a6703f2089a839f4a0..7aae9e3c60ba15b8dcd8174a4d70866e } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8e044ff6db7f4ab1605eec1bd8063916add22ca8..394ba413834eec0449a8b7d989b3541b04298cf0 100644 +index 566f20e6c8306c6f6884b95362f82bdcffbcbbc7..4789affbe91dcd0bd0bbf2cbf0c79bc01173e3d1 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -296,6 +296,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop type, Level world) { super(type, world); -@@ -76,6 +77,15 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -93,6 +94,15 @@ public class IronGolem extends AbstractGolem implements NeutralMob { return this.level.purpurConfig.ironGolemTakeDamageFromWater; } @@ -31,8 +31,8 @@ index 396882908e819737f25d39c0a601f006448e7856..e07f0444e4917bf38448e6908ba1c3d3 + @Override protected void registerGoals() { - if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur -@@ -150,6 +160,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { + if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur +@@ -170,6 +180,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putBoolean("PlayerCreated", this.isPlayerCreated()); @@ -40,7 +40,7 @@ index 396882908e819737f25d39c0a601f006448e7856..e07f0444e4917bf38448e6908ba1c3d3 this.addPersistentAngerSaveData(nbt); } -@@ -157,6 +168,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -177,6 +188,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); this.setPlayerCreated(nbt.getBoolean("PlayerCreated")); @@ -49,7 +49,7 @@ index 396882908e819737f25d39c0a601f006448e7856..e07f0444e4917bf38448e6908ba1c3d3 } diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index e932db904ba8c22a4ab939a2e92e20e3200512c0..6dd2d09cc6432edfbebab37120b2bfd5084522fe 100644 +index cfdc9b1341bafc9c92a520b1793add877336a8a3..6fee0d553c837addd3f6b15cb960b93fdb216dfd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -49,6 +49,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -60,7 +60,7 @@ index e932db904ba8c22a4ab939a2e92e20e3200512c0..6dd2d09cc6432edfbebab37120b2bfd5 public SnowGolem(EntityType type, Level world) { super(type, world); -@@ -59,6 +60,15 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -76,6 +77,15 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.snowGolemMaxHealth); } @@ -75,8 +75,8 @@ index e932db904ba8c22a4ab939a2e92e20e3200512c0..6dd2d09cc6432edfbebab37120b2bfd5 + @Override protected void registerGoals() { - this.goalSelector.addGoal(1, new RangedAttackGoal(this, level.purpurConfig.snowGolemAttackDistance, level.purpurConfig.snowGolemSnowBallMin, level.purpurConfig.snowGolemSnowBallMax, level.purpurConfig.snowGolemSnowBallModifier)); // Purpur -@@ -84,6 +94,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur +@@ -103,6 +113,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putBoolean("Pumpkin", this.hasPumpkin()); @@ -84,7 +84,7 @@ index e932db904ba8c22a4ab939a2e92e20e3200512c0..6dd2d09cc6432edfbebab37120b2bfd5 } @Override -@@ -92,6 +103,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -111,6 +122,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM if (nbt.contains("Pumpkin")) { this.setPumpkin(nbt.getBoolean("Pumpkin")); } @@ -93,7 +93,7 @@ index e932db904ba8c22a4ab939a2e92e20e3200512c0..6dd2d09cc6432edfbebab37120b2bfd5 } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index e8685465837064e9caac86caab7824ba6113a4f6..954d9c5984a4bd8858b35a32cd2789cfb77cf923 100644 +index c9b27c1479e09c65533f173546d6692e77df46da..06166210a162e5a40610910c320b391551301bf6 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -84,6 +84,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -101,10 +101,10 @@ index e8685465837064e9caac86caab7824ba6113a4f6..954d9c5984a4bd8858b35a32cd2789cf }; private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0D).selector(WitherBoss.LIVING_ENTITY_SELECTOR); + @Nullable private java.util.UUID summoner; // Purpur + private int shootCooldown = 0; // Purpur // Paper start private boolean canPortal = false; - -@@ -108,6 +109,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -122,6 +123,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return this.level.purpurConfig.witherTakeDamageFromWater; } @@ -120,7 +120,7 @@ index e8685465837064e9caac86caab7824ba6113a4f6..954d9c5984a4bd8858b35a32cd2789cf @Override protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); -@@ -142,6 +152,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -262,6 +272,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putInt("Invul", this.getInvulnerableTicks()); @@ -128,7 +128,7 @@ index e8685465837064e9caac86caab7824ba6113a4f6..954d9c5984a4bd8858b35a32cd2789cf } @Override -@@ -151,6 +162,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -271,6 +282,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } diff --git a/patches/server/0189-Customizable-sleeping-actionbar-messages.patch b/patches/server/0190-Customizable-sleeping-actionbar-messages.patch similarity index 89% rename from patches/server/0189-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0190-Customizable-sleeping-actionbar-messages.patch index b5631541d..296917ff8 100644 --- a/patches/server/0189-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0190-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1ddab634be51af2ad1c208e7ffc55f56e1bf298e..a215739d8b7b74e9c3578a7932185c57da465ec2 100644 +index f40eda7740b680d4a1bba7e8d177a8e0333caec7..4e26cdfa7b2134c699795bc0c36b739352d80eb3 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1087,11 +1087,27 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1088,11 +1088,27 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -38,19 +38,19 @@ index 1ddab634be51af2ad1c208e7ffc55f56e1bf298e..a215739d8b7b74e9c3578a7932185c57 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ef87e69c95c892ed0a06341138d0ec644b9660f7..1cc985eac1b57fdcdb8f51788d4278c355bcda64 100644 +index 669174925e7dcca0e5a8b5c5d5feb241b58e8719..714acff3f53ef463d1de1d5f301b9a2f89711acc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -185,6 +185,8 @@ public class PurpurConfig { +@@ -186,6 +186,8 @@ public class PurpurConfig { public static String dontRunWithScissors = "Don't run with scissors!"; public static String uptimeCommandOutput = "Server uptime is "; public static String unverifiedUsername = "default"; + public static String sleepSkippingNight = "default"; + public static String sleepingPlayersPercent = "default"; private static void messages() { + cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); - afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); -@@ -198,6 +200,8 @@ public class PurpurConfig { +@@ -200,6 +202,8 @@ public class PurpurConfig { dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors); uptimeCommandOutput = getString("settings.messages.uptime-command-output", uptimeCommandOutput); unverifiedUsername = getString("settings.messages.unverified-username", unverifiedUsername); diff --git a/patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0191-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 96% rename from patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0191-option-to-disable-shulker-box-items-from-dropping-co.patch index a0458c8bf..3c7a559e4 100644 --- a/patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0191-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -19,7 +19,7 @@ index ebee8de2ed831755b6fd154f6cc77ac993839bb9..ff236d3ad8838b14e5a20c70b2a2ce56 CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4ad31abb6dacb28f016c1414297d0c40d8aa206..fa09d871398ed8939df84835d109921a544038bd 100644 +index 5fe915ca0e43c809e7884b983755c7953e20e695..45084379891c56f43a52b718483a18a4e36804aa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -223,6 +223,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0191-Silk-touchable-budding-amethyst.patch b/patches/server/0192-Silk-touchable-budding-amethyst.patch similarity index 89% rename from patches/server/0191-Silk-touchable-budding-amethyst.patch rename to patches/server/0192-Silk-touchable-budding-amethyst.patch index a3d41d92c..7268b430f 100644 --- a/patches/server/0191-Silk-touchable-budding-amethyst.patch +++ b/patches/server/0192-Silk-touchable-budding-amethyst.patch @@ -24,7 +24,7 @@ index 4dae2a98070affd84bc4523a927dc9cbfe7379c6..51faa4cfda3d36f2e3bc7cbc47cacf57 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fa09d871398ed8939df84835d109921a544038bd..4cbe9a9ce5a290323d3313eddd1125da5ce2d07a 100644 +index 45084379891c56f43a52b718483a18a4e36804aa..b2f5d8d517e35c319ddb08f3229ac760784eea3f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -730,6 +730,11 @@ public class PurpurWorldConfig { @@ -39,8 +39,8 @@ index fa09d871398ed8939df84835d109921a544038bd..4cbe9a9ce5a290323d3313eddd1125da public boolean chestOpenWithBlockOnTop = false; private void chestSettings() { chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); -@@ -2271,3 +2276,4 @@ public class PurpurWorldConfig { - hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); +@@ -2984,3 +2989,4 @@ public class PurpurWorldConfig { + zombifiedPiglinControllable = getBoolean("mobs.zombified_piglin.controllable", zombifiedPiglinControllable); } } + diff --git a/patches/server/0192-Big-dripleaf-tilt-delay.patch b/patches/server/0193-Big-dripleaf-tilt-delay.patch similarity index 96% rename from patches/server/0192-Big-dripleaf-tilt-delay.patch rename to patches/server/0193-Big-dripleaf-tilt-delay.patch index 2d95dfa92..559d48472 100644 --- a/patches/server/0192-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0193-Big-dripleaf-tilt-delay.patch @@ -24,7 +24,7 @@ index 7455847cf8a05ed237d2df84ae2d9b1d2f2d7176..2960f5e35012665939c2d670d212aa4d 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 4cbe9a9ce5a290323d3313eddd1125da5ce2d07a..5d4cf690acac49974668cc5bff1add8b34b84483 100644 +index b2f5d8d517e35c319ddb08f3229ac760784eea3f..a399db2a142d7bf4de29ca41610f7f02c1f0d2eb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -730,6 +730,22 @@ public class PurpurWorldConfig { diff --git a/patches/server/0193-Player-ridable-in-water-option.patch b/patches/server/0194-Player-ridable-in-water-option.patch similarity index 89% rename from patches/server/0193-Player-ridable-in-water-option.patch rename to patches/server/0194-Player-ridable-in-water-option.patch index dc8a6b06c..64a852857 100644 --- a/patches/server/0193-Player-ridable-in-water-option.patch +++ b/patches/server/0194-Player-ridable-in-water-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Player ridable in water option 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 86007f7ed1e5c4e2e688e1f012468e4cf6dc0d2e..2675e574f2a528e88862d58355d4cd6cdbe8693a 100644 +index 398b1a33ac3be17136a7d38bc35190db1364d10d..ddb36e630c1f1b71c44c31e940c0845ecae14c0b 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2091,6 +2091,11 @@ public abstract class Player extends LivingEntity { +@@ -2104,6 +2104,11 @@ public abstract class Player extends LivingEntity { return this.inventory.armor; } @@ -21,7 +21,7 @@ index 86007f7ed1e5c4e2e688e1f012468e4cf6dc0d2e..2675e574f2a528e88862d58355d4cd6c 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 5d4cf690acac49974668cc5bff1add8b34b84483..a8e9e77cf8af44a3af8ec9f56c3f5340f0ea0f2b 100644 +index a399db2a142d7bf4de29ca41610f7f02c1f0d2eb..404d45788c3cc84b5ddb99901887286114c17ece 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -400,6 +400,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0194-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0195-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 90% rename from patches/server/0194-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0195-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 48c1d1e03..ca7b56dbe 100644 --- a/patches/server/0194-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0195-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to disable Enderman teleport on projectile hit diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 9d84092a3e9712609e35e4fd0a2db2fc2ac385ad..6c0b28f64dbd44b5d014c617981e4e6458f58e7b 100644 +index cb0e27962b77a1f62c5d561b361b51cf279e7cce..aeab1cb886eb62149b79c2f899a329c561591397 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -418,6 +418,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -438,6 +438,7 @@ public class EnderMan extends Monster implements NeutralMob { } else { flag1 = flag && this.hurtWithCleanWater(source, (ThrownPotion) source.getDirectEntity(), amount); @@ -17,7 +17,7 @@ index 9d84092a3e9712609e35e4fd0a2db2fc2ac385ad..6c0b28f64dbd44b5d014c617981e4e64 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 a8e9e77cf8af44a3af8ec9f56c3f5340f0ea0f2b..0ae9a533915a0cb33eea2107dce64c2e880e30d4 100644 +index 404d45788c3cc84b5ddb99901887286114c17ece..15507525d05ad0884009fe980655c3d5ee2655a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1227,6 +1227,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0195-Add-compass-command.patch b/patches/server/0196-Add-compass-command.patch similarity index 96% rename from patches/server/0195-Add-compass-command.patch rename to patches/server/0196-Add-compass-command.patch index 144e53e48..7012107b1 100644 --- a/patches/server/0195-Add-compass-command.patch +++ b/patches/server/0196-Add-compass-command.patch @@ -17,7 +17,7 @@ index 7aae9e3c60ba15b8dcd8174a4d70866edebb6cca..5f6cc8b16af6dce3b74f0c2c662b0ecf if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 9f2c584db6fde84a65b661bb7f37988b803916e1..2e5d186ac2904e3214e2e037f1eb1d486dc4a4a2 100644 +index 6da83551f77354bd40a4fe8ace331eb24208f057..1192920ec3461aee0c992284567d80edc1cb90c5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -280,6 +280,7 @@ public class ServerPlayer extends Player { @@ -44,7 +44,7 @@ index 9f2c584db6fde84a65b661bb7f37988b803916e1..2e5d186ac2904e3214e2e037f1eb1d48 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -2792,5 +2795,13 @@ public class ServerPlayer extends Player { +@@ -2801,5 +2804,13 @@ public class ServerPlayer extends Player { public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } @@ -59,10 +59,10 @@ index 9f2c584db6fde84a65b661bb7f37988b803916e1..2e5d186ac2904e3214e2e037f1eb1d48 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1cc985eac1b57fdcdb8f51788d4278c355bcda64..eeec29480c853e67f7b01b76fd33485f2d390a14 100644 +index 714acff3f53ef463d1de1d5f301b9a2f89711acc..351fc72f0d1450114285b0577e8d5e533ad62901 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -251,6 +251,11 @@ public class PurpurConfig { +@@ -253,6 +253,11 @@ public class PurpurConfig { public static String commandTPSBarTextColorMedium = ""; public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; @@ -74,7 +74,7 @@ index 1cc985eac1b57fdcdb8f51788d4278c355bcda64..eeec29480c853e67f7b01b76fd33485f public static boolean commandGamemodeRequiresPermission = false; public static boolean hideHiddenPlayersFromEntitySelector = false; public static String uptimeFormat = ""; -@@ -273,6 +278,13 @@ public class PurpurConfig { +@@ -275,6 +280,13 @@ public class PurpurConfig { commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium); commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); @@ -89,7 +89,7 @@ index 1cc985eac1b57fdcdb8f51788d4278c355bcda64..eeec29480c853e67f7b01b76fd33485f 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 0ae9a533915a0cb33eea2107dce64c2e880e30d4..a6afd320cf59b258d9f11157bd44c6dd5564d18b 100644 +index 15507525d05ad0884009fe980655c3d5ee2655a3..ab51afbb7de91cfbe75221445af69ba95a720e37 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -224,6 +224,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0196-Toggle-for-kinetic-damage.patch b/patches/server/0197-Toggle-for-kinetic-damage.patch similarity index 89% rename from patches/server/0196-Toggle-for-kinetic-damage.patch rename to patches/server/0197-Toggle-for-kinetic-damage.patch index 41bee02b1..bfda2df3f 100644 --- a/patches/server/0196-Toggle-for-kinetic-damage.patch +++ b/patches/server/0197-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 99be702786a9f5c98c16c468fd7743ab297d103f..97f8087ade872591f1d4ba0783b8ee38d5f614aa 100644 +index 84a967b39e737d00b388b5ae743b157388e8b6db..1bb1be688326d79c34b589bd859f21c2d43c53b8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2874,6 +2874,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2875,6 +2875,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); @@ -17,7 +17,7 @@ index 99be702786a9f5c98c16c468fd7743ab297d103f..97f8087ade872591f1d4ba0783b8ee38 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a6afd320cf59b258d9f11157bd44c6dd5564d18b..1b2cdacc48361232691a1fb4caf46206b1bc2fd1 100644 +index ab51afbb7de91cfbe75221445af69ba95a720e37..d35936264ed4bd666f4b50191b95bea1ccbfb158 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -184,12 +184,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0197-Add-Option-for-disable-observer-clocks.patch b/patches/server/0198-Add-Option-for-disable-observer-clocks.patch similarity index 95% rename from patches/server/0197-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0198-Add-Option-for-disable-observer-clocks.patch index 09abda0bc..deda0ecbc 100644 --- a/patches/server/0197-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0198-Add-Option-for-disable-observer-clocks.patch @@ -18,7 +18,7 @@ index 7b45d6b9a005036ca5051d089a7be792eb87012f..8806c97ecc6bdd8a64c2d82bb2f58f46 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b2cdacc48361232691a1fb4caf46206b1bc2fd1..e35b5d1b8fccb308193dd19761b433d3d93a0e16 100644 +index d35936264ed4bd666f4b50191b95bea1ccbfb158..13c961c06fcf2625a11dfd8b55b97df5f35a532f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -371,6 +371,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0198-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0199-Customizeable-Zombie-Villager-curing-times.patch similarity index 90% rename from patches/server/0198-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0199-Customizeable-Zombie-Villager-curing-times.patch index 1e487bc14..785f83def 100644 --- a/patches/server/0198-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0199-Customizeable-Zombie-Villager-curing-times.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizeable Zombie Villager curing times diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 818fc0b9bc6bd95c46b5939f0a09c6e6f86b80e4..23a611d6ccd3c72e36a7bee3a2d751d4d135921f 100644 +index 0f8b9ceca20e43b5010bb54e5b94a8598995115f..76534e3b2414e5db82bb01ca8c6b4f6d53e733ab 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -201,7 +201,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -218,7 +218,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } if (!this.level().isClientSide) { @@ -18,7 +18,7 @@ index 818fc0b9bc6bd95c46b5939f0a09c6e6f86b80e4..23a611d6ccd3c72e36a7bee3a2d751d4 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e35b5d1b8fccb308193dd19761b433d3d93a0e16..37ed6b40188c702db268b7751d9ca7cdab66a6b1 100644 +index 13c961c06fcf2625a11dfd8b55b97df5f35a532f..d29245262a9b2e9c6c85d2e32fd780a539c2b1f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2264,6 +2264,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0199-Option-for-sponges-to-work-on-lava.patch b/patches/server/0200-Option-for-sponges-to-work-on-lava.patch similarity index 95% rename from patches/server/0199-Option-for-sponges-to-work-on-lava.patch rename to patches/server/0200-Option-for-sponges-to-work-on-lava.patch index bb055f467..32f07f3a6 100644 --- a/patches/server/0199-Option-for-sponges-to-work-on-lava.patch +++ b/patches/server/0200-Option-for-sponges-to-work-on-lava.patch @@ -18,7 +18,7 @@ index 4bce895268542531598a01a1bccd8ac1ed703b7d..54c690ae384a6467a4bab992b642d0fe // NOP } else if (iblockdata.getBlock() instanceof LiquidBlock) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 37ed6b40188c702db268b7751d9ca7cdab66a6b1..649b37f187d97b5fdec1db68b3c1cd4b7af04d3a 100644 +index d29245262a9b2e9c6c85d2e32fd780a539c2b1f0..320733cde5ab13e7b1303f114f230a90edbdc88e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -934,6 +934,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0200-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch similarity index 89% rename from patches/server/0200-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch index 597e9a1f0..644cf9e31 100644 --- a/patches/server/0200-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0201-Toggle-for-Wither-s-spawn-sound.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for Wither's spawn sound diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 954d9c5984a4bd8858b35a32cd2789cfb77cf923..f9d77c02cf474a9dee25178ea8d6852648d8193c 100644 +index 06166210a162e5a40610910c320b391551301bf6..2dcede02f79e1a99adec3364cd0c71fb42832280 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -299,7 +299,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -429,7 +429,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } // CraftBukkit end @@ -18,7 +18,7 @@ index 954d9c5984a4bd8858b35a32cd2789cfb77cf923..f9d77c02cf474a9dee25178ea8d68526 // 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 649b37f187d97b5fdec1db68b3c1cd4b7af04d3a..b8de470b993c9fffdaacf9da8ff2ae3103ca073e 100644 +index 320733cde5ab13e7b1303f114f230a90edbdc88e..536ea5dad8b7a654c7d9b93262a41e4677e049a3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2147,6 +2147,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0201-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0202-Cactus-breaks-from-solid-neighbors-config.patch similarity index 95% rename from patches/server/0201-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0202-Cactus-breaks-from-solid-neighbors-config.patch index e481f8f36..091d6daa2 100644 --- a/patches/server/0201-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0202-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,7 +18,7 @@ index 0003fb51ae3a6575575e10b4c86719f3061e2577..c2ca3432a47124d02e1aaf8ffb621f9a return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b8de470b993c9fffdaacf9da8ff2ae3103ca073e..5e0f59b7fb808439c04f2737f251e3fde2c7d989 100644 +index 536ea5dad8b7a654c7d9b93262a41e4677e049a3..bf1cfffc03190d8e16d5c0ab3ff4f6067c8c31ca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -762,6 +762,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0202-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0203-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 96% rename from patches/server/0202-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0203-Config-to-remove-curse-of-binding-with-weakness.patch index 279d437ba..efbdfc230 100644 --- a/patches/server/0202-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0203-Config-to-remove-curse-of-binding-with-weakness.patch @@ -26,7 +26,7 @@ index c549618421c5d077c3d977d8d2064eca2acc438a..3cf62a2343deb1096eba5f7fe7b26b66 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e0f59b7fb808439c04f2737f251e3fde2c7d989..95a11827af5af3c0c8fc7b66e03739bf6f811313 100644 +index bf1cfffc03190d8e16d5c0ab3ff4f6067c8c31ca..82e6cab7d12810e16084bf2965dc93386c882dd7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -410,6 +410,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0203-Conduit-behavior-configuration.patch b/patches/server/0204-Conduit-behavior-configuration.patch similarity index 95% rename from patches/server/0203-Conduit-behavior-configuration.patch rename to patches/server/0204-Conduit-behavior-configuration.patch index 63739348d..e1e7d1b1e 100644 --- a/patches/server/0203-Conduit-behavior-configuration.patch +++ b/patches/server/0204-Conduit-behavior-configuration.patch @@ -77,14 +77,13 @@ index 963a596154091b79ca139af6274aa323518ad1ad..4dcac3899a500d8586580bcfd5b4516e }); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 95a11827af5af3c0c8fc7b66e03739bf6f811313..1117bd74f1a6a646590cc94d139976ea032288ee 100644 +index 82e6cab7d12810e16084bf2965dc93386c882dd7..b7c5966521750b388606886e58c66997f108f719 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2322,5 +2322,28 @@ public class PurpurWorldConfig { - private void hungerSettings() { +@@ -2323,6 +2323,29 @@ public class PurpurWorldConfig { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } -+ + + public int conduitDistance = 16; + public double conduitDamageDistance = 8; + public float conduitDamageAmount = 4; @@ -107,5 +106,7 @@ index 95a11827af5af3c0c8fc7b66e03739bf6f811313..1117bd74f1a6a646590cc94d139976ea + }); + conduitBlocks = conduitBlockList.toArray(Block[]::new); + } - } - ++ + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0204-Cauldron-fill-chances.patch b/patches/server/0205-Cauldron-fill-chances.patch similarity index 93% rename from patches/server/0204-Cauldron-fill-chances.patch rename to patches/server/0205-Cauldron-fill-chances.patch index 63dc27fd5..015b860b5 100644 --- a/patches/server/0204-Cauldron-fill-chances.patch +++ b/patches/server/0205-Cauldron-fill-chances.patch @@ -47,14 +47,13 @@ index e978132e51cde52f7ff1ba31ad521fc2cb4f0dce..60a95c42a333d68d9fd14539e0051c08 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1117bd74f1a6a646590cc94d139976ea032288ee..fee7bbf351e9b4b294a3b381cd99b6cc2b6877f3 100644 +index b7c5966521750b388606886e58c66997f108f719..f6f587e3e9586db09b8b7d6ef04d7f511ecf1867 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2345,5 +2345,16 @@ public class PurpurWorldConfig { - }); +@@ -2346,6 +2346,17 @@ public class PurpurWorldConfig { conduitBlocks = conduitBlockList.toArray(Block[]::new); } -+ + + public float cauldronRainChance = 0.05F; + public float cauldronPowderSnowChance = 0.1F; + public float cauldronDripstoneWaterFillChance = 0.17578125F; @@ -65,5 +64,7 @@ index 1117bd74f1a6a646590cc94d139976ea032288ee..fee7bbf351e9b4b294a3b381cd99b6cc + cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); + cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); + } - } - ++ + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0205-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0206-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 97% rename from patches/server/0205-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0206-Config-to-allow-mobs-to-pathfind-over-rails.patch index 443e99f71..f3fa776da 100644 --- a/patches/server/0205-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0206-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,7 +18,7 @@ index 3583fcf5284bc5883308876dbd9886664b391e28..0e6923e6d440e846b3db47c6b8357f7e if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) { double g = (double)(x - direction.getStepX()) + 0.5D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fee7bbf351e9b4b294a3b381cd99b6cc2b6877f3..dd3d890dfc0546b1beec2d4196638f01d0f38a02 100644 +index f6f587e3e9586db09b8b7d6ef04d7f511ecf1867..7a3697c86e525496542e821646973e3b6fdaaf9d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -140,6 +140,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0206-Shulker-change-color-with-dye.patch b/patches/server/0207-Shulker-change-color-with-dye.patch similarity index 90% rename from patches/server/0206-Shulker-change-color-with-dye.patch rename to patches/server/0207-Shulker-change-color-with-dye.patch index 503d86ccf..b0d6276b8 100644 --- a/patches/server/0206-Shulker-change-color-with-dye.patch +++ b/patches/server/0207-Shulker-change-color-with-dye.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shulker change color with dye diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 08d39b0660736be641ad22e3ceb08db7aabebf6a..e4925f6af4fd33ef7d008c7c00734c32684a1320 100644 +index c31f7a4def4d56520b73fcfd99fcf4bd0d548e04..24f7aec811d2b04804311bd9b2d00206cccfa9f4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -22,6 +22,8 @@ import net.minecraft.tags.DamageTypeTags; @@ -26,7 +26,7 @@ index 08d39b0660736be641ad22e3ceb08db7aabebf6a..e4925f6af4fd33ef7d008c7c00734c32 import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.block.Blocks; -@@ -108,6 +112,19 @@ public class Shulker extends AbstractGolem implements VariantHolder type, Level world) { - super(type, world); -@@ -101,6 +102,7 @@ public class Dolphin extends WaterAnimal { +@@ -169,6 +170,7 @@ public class Dolphin extends WaterAnimal { public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); @@ -24,14 +24,15 @@ index c02a84fc12780b8f02722539b31ace840ae4bc1d..e8f77e81cd8e6ea29b79f7a4399fb9cc return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } -@@ -170,17 +172,19 @@ public class Dolphin extends WaterAnimal { +@@ -238,6 +240,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); + this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); - this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0D, 10)); +@@ -245,12 +248,13 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(5, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(5, new DolphinJumpGoal(this, 10)); @@ -40,13 +41,14 @@ index c02a84fc12780b8f02722539b31ace840ae4bc1d..e8f77e81cd8e6ea29b79f7a4399fb9cc this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal()); this.goalSelector.addGoal(8, new FollowBoatGoal(this)); this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers()); + this.targetSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, target -> isNaturallyAggressiveToPlayers)); // Purpur } 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 6b17119250b267eec89e71d47b173379d4721a46..3c8aec13b843df1dc8adb3bb7f8e84bc26acc453 100644 +index 44753a19cc45d1ce7f65aa53800dfc6b01038afc..8b9822ce8d292cc81317ebb7d98e1be87ec8a826 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1164,6 +1164,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0213-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch similarity index 92% rename from patches/server/0213-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch index b09d96c31..f09fd3480 100644 --- a/patches/server/0213-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 385bf94f85471c9461c83df2fff48c1e1115e5f7..58a223e36fb964d546e512d3c102fe5577e5652d 100644 +index 3f67e626b66cf64034dcc9ebf35244631b081516..5dc426430033d526e379a94232a7e8c17ad52704 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -38,6 +38,7 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -23,8 +23,8 @@ index 385bf94f85471c9461c83df2fff48c1e1115e5f7..58a223e36fb964d546e512d3c102fe55 + this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level.purpurConfig.cowNaturallyAggressiveToPlayersDamage); // Purpur } - @Override -@@ -58,10 +60,17 @@ public class Cow extends Animal { + // Purpur start +@@ -75,11 +77,18 @@ public class Cow extends Animal { return this.level.purpurConfig.cowTakeDamageFromWater; } @@ -37,12 +37,13 @@ index 385bf94f85471c9461c83df2fff48c1e1115e5f7..58a223e36fb964d546e512d3c102fe55 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); + this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); if (level.purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); -@@ -69,10 +78,11 @@ public class Cow extends Animal { +@@ -87,10 +96,11 @@ public class Cow extends Animal { this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); @@ -56,7 +57,7 @@ index 385bf94f85471c9461c83df2fff48c1e1115e5f7..58a223e36fb964d546e512d3c102fe55 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3c8aec13b843df1dc8adb3bb7f8e84bc26acc453..08ffcfb46b52068443f591c07e04d0d0c2abe61d 100644 +index 8b9822ce8d292cc81317ebb7d98e1be87ec8a826..a01628c3165608a93ad0bd3ff2aa1da3e4307adc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1127,16 +1127,25 @@ public class PurpurWorldConfig { diff --git a/patches/server/0214-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 90% rename from patches/server/0214-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch index 0779d663e..241b775c8 100644 --- a/patches/server/0214-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0215-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 98f67161f173f513c5794ffb5cb6350c7f1a1e23..718ee5c391a287f2dcac98744c646b1c68bd0f3c 100644 +index d370ca8d0794c8b2f6fba5e4bc1c25d567e99511..e27c63bc845495385f1034fa6246058642f07941 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1075,6 +1075,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1099,6 +1099,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { @@ -22,7 +22,7 @@ index 98f67161f173f513c5794ffb5cb6350c7f1a1e23..718ee5c391a287f2dcac98744c646b1c 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 08ffcfb46b52068443f591c07e04d0d0c2abe61d..de76eee0a82bc7c77fc74ea38dffb8c8966d9034 100644 +index a01628c3165608a93ad0bd3ff2aa1da3e4307adc..2f1912a5bd3873cffc745672d0cfde0fa1d6488e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -736,6 +736,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0215-Halloween-options-and-optimizations.patch b/patches/server/0216-Halloween-options-and-optimizations.patch similarity index 88% rename from patches/server/0215-Halloween-options-and-optimizations.patch rename to patches/server/0216-Halloween-options-and-optimizations.patch index f1fc27c1e..3d02a4ca9 100644 --- a/patches/server/0215-Halloween-options-and-optimizations.patch +++ b/patches/server/0216-Halloween-options-and-optimizations.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Halloween options and optimizations diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index b29d4dc2f531cb9e8ba11e49c636df41b27c6bd2..65628c2eb3117bd816b772bfe49b65d2c1bd1e75 100644 +index b4c0f7b8841c536e700c80248d12ca2f0a507e6f..8413fcf8b5d23726c0b2030c1c8c813278a2cf72 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -258,7 +258,7 @@ public class Bat extends AmbientCreature { +@@ -314,7 +314,7 @@ public class Bat extends AmbientCreature { int i = world.getMaxLocalRawBrightness(pos); byte b0 = 4; @@ -17,7 +17,7 @@ index b29d4dc2f531cb9e8ba11e49c636df41b27c6bd2..65628c2eb3117bd816b772bfe49b65d2 b0 = 7; } else if (random.nextBoolean()) { return false; -@@ -268,6 +268,7 @@ public class Bat extends AmbientCreature { +@@ -324,6 +324,7 @@ public class Bat extends AmbientCreature { } } @@ -26,10 +26,10 @@ index b29d4dc2f531cb9e8ba11e49c636df41b27c6bd2..65628c2eb3117bd816b772bfe49b65d2 LocalDate localdate = LocalDate.now(); int i = localdate.get(ChronoField.DAY_OF_MONTH); diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index af73945e4fc9cae081be90fa68fe73c9bde9b5bf..5ce17aec68ef65436599fde0e8d8d8c31c8a246a 100644 +index 892ae3a9ac2395896ff7881c49eaece8d46e831e..27c001b35441e82b2b4292c0d4ddf54486d7c3cb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -141,11 +141,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -143,11 +143,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo this.reassessWeaponGoal(); this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { @@ -43,10 +43,10 @@ index af73945e4fc9cae081be90fa68fe73c9bde9b5bf..5ce17aec68ef65436599fde0e8d8d8c3 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index c09cbdf9df9db13cb038e376ab10c5b53c74a6f8..98591d2b5578439230f3291046381c179f9cf5dd 100644 +index 2a50dcb60b062cff5b8bb2fcc42100c2e799fd5d..1cbd73bd55435f049a1a0e3a9d242ab8f6be7de2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -574,11 +574,7 @@ public class Zombie extends Monster { +@@ -593,11 +593,7 @@ public class Zombie extends Monster { } if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { @@ -60,7 +60,7 @@ index c09cbdf9df9db13cb038e376ab10c5b53c74a6f8..98591d2b5578439230f3291046381c17 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 de76eee0a82bc7c77fc74ea38dffb8c8966d9034..6e6a48b69a560de73881af6f93f1726691c82656 100644 +index 2f1912a5bd3873cffc745672d0cfde0fa1d6488e..9d28380a1eb8b881d099fc097acd9763fea5e141 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -143,6 +143,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0216-Config-for-grindstones.patch b/patches/server/0217-Config-for-grindstones.patch similarity index 96% rename from patches/server/0216-Config-for-grindstones.patch rename to patches/server/0217-Config-for-grindstones.patch index 5b579733b..4aee2d702 100644 --- a/patches/server/0216-Config-for-grindstones.patch +++ b/patches/server/0217-Config-for-grindstones.patch @@ -57,10 +57,10 @@ index b56766ff0e61691294b40ea8c2370940c0e8b640..6860e3467bf785e9d017fc98fce1e3cf } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index eeec29480c853e67f7b01b76fd33485f2d390a14..7d9422b06ba79dbc268d451d3753150366e0877e 100644 +index 351fc72f0d1450114285b0577e8d5e533ad62901..ec519c0e6388eac27f9eb6fcd85713763206d71e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -305,6 +305,9 @@ public class PurpurConfig { +@@ -307,6 +307,9 @@ public class PurpurConfig { public static int beeInsideBeeHive = 3; public static boolean anvilCumulativeCost = true; public static int lightningRodRange = 128; @@ -70,7 +70,7 @@ index eeec29480c853e67f7b01b76fd33485f2d390a14..7d9422b06ba79dbc268d451d37531503 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -339,6 +342,19 @@ public class PurpurConfig { +@@ -341,6 +344,19 @@ public class PurpurConfig { beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); lightningRodRange = getInt("settings.blocks.lightning_rod.range", lightningRodRange); diff --git a/patches/server/0217-UPnP-Port-Forwarding.patch b/patches/server/0218-UPnP-Port-Forwarding.patch similarity index 94% rename from patches/server/0217-UPnP-Port-Forwarding.patch rename to patches/server/0218-UPnP-Port-Forwarding.patch index 1dda6805a..28d597764 100644 --- a/patches/server/0217-UPnP-Port-Forwarding.patch +++ b/patches/server/0218-UPnP-Port-Forwarding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 394ba413834eec0449a8b7d989b3541b04298cf0..a29b5e39407699f1052c16caa17dde7f35ae65d3 100644 +index 4789affbe91dcd0bd0bbf2cbf0c79bc01173e3d1..69847726e17fbd304c97570ccd02cc21a99977d8 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -311,6 +311,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop grindstoneIgnoredEnchants = new HashSet<>(); public static boolean grindstoneRemoveAttributes = false; public static boolean grindstoneRemoveDisplay = false; @@ -149,7 +149,7 @@ index fca49d64c0067cef3f29d0924b4cf4672c5fbec5..e52ef79d8488edeca10920976f2ef2cd private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -355,6 +359,30 @@ public class PurpurConfig { +@@ -357,6 +361,30 @@ public class PurpurConfig { }); grindstoneRemoveAttributes = getBoolean("settings.blocks.grindstone.remove-attributes", grindstoneRemoveAttributes); grindstoneRemoveDisplay = getBoolean("settings.blocks.grindstone.remove-name-and-lore", grindstoneRemoveDisplay); diff --git a/patches/server/0223-Mobs-always-drop-experience.patch b/patches/server/0224-Mobs-always-drop-experience.patch similarity index 89% rename from patches/server/0223-Mobs-always-drop-experience.patch rename to patches/server/0224-Mobs-always-drop-experience.patch index d7173d41c..98048be6f 100644 --- a/patches/server/0223-Mobs-always-drop-experience.patch +++ b/patches/server/0224-Mobs-always-drop-experience.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mobs always drop experience diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 17ff16de143ccd40bf7654062eefb6a36b65a851..0a2e0debc8e38cc32059c26d15cbbb0147622336 100644 +index 4570f2859ed4251a2e9cf79ecbc7255523cbbc79..678cff629d4de6fbe060dbbebbb669c93164f59b 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java -@@ -38,6 +38,11 @@ public class GlowSquid extends Squid { +@@ -51,6 +51,11 @@ public class GlowSquid extends Squid { return this.level.purpurConfig.glowSquidTakeDamageFromWater; } @@ -21,10 +21,10 @@ index 17ff16de143ccd40bf7654062eefb6a36b65a851..0a2e0debc8e38cc32059c26d15cbbb01 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 65628c2eb3117bd816b772bfe49b65d2c1bd1e75..9c7932cdeaa377feb2fefc7d00ddd5c0f8dc4ce9 100644 +index 8413fcf8b5d23726c0b2030c1c8c813278a2cf72..1c4222aac4cd4fecddb793d6aff75ea5aec8efd9 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -239,6 +239,11 @@ public class Bat extends AmbientCreature { +@@ -295,6 +295,11 @@ public class Bat extends AmbientCreature { return this.level.purpurConfig.batTakeDamageFromWater; } @@ -37,10 +37,10 @@ index 65628c2eb3117bd816b772bfe49b65d2c1bd1e75..9c7932cdeaa377feb2fefc7d00ddd5c0 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 6358539ebd7cef98464376896a65df029db0754a..4d340d073f5d9c681260cab187a08513ad5ae1c5 100644 +index 2ce665cb02520803bf55362d1703f416ea9078fa..521cad59e394901e16d178c46e10d186eb3fdefd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -430,6 +430,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -481,6 +481,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return this.level.purpurConfig.beeTakeDamageFromWater; } @@ -53,10 +53,10 @@ index 6358539ebd7cef98464376896a65df029db0754a..4d340d073f5d9c681260cab187a08513 public int getRemainingPersistentAngerTime() { return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index cd4b5286ac58d569f961d50f4d277ad3b70b8897..a38465f9d55db378daade62585993c2c98d159b4 100644 +index 93a0adaf4ad080439a8df1688d5b5b241ead07c6..44539b6f8857ef86c9454296cf09b9cf203126ad 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -112,6 +112,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -137,6 +137,11 @@ public class Cat extends TamableAnimal implements VariantHolder { return this.level.purpurConfig.catTakeDamageFromWater; } @@ -69,10 +69,10 @@ index cd4b5286ac58d569f961d50f4d277ad3b70b8897..a38465f9d55db378daade62585993c2c return this.getVariant().texture(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index 9d531f623ceb0c7ac732588b906d5fe3492ce96a..1ffe9651e0794476aa05a5fa3a71b4eaa88b2b71 100644 +index 970e4274edf409fbf61c267e32075426d00480d1..21df4bac457295482958c29f55c855316c2b45a1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -72,6 +72,11 @@ public class Chicken extends Animal { +@@ -89,6 +89,11 @@ public class Chicken extends Animal { return this.level.purpurConfig.chickenTakeDamageFromWater; } @@ -85,10 +85,10 @@ index 9d531f623ceb0c7ac732588b906d5fe3492ce96a..1ffe9651e0794476aa05a5fa3a71b4ea protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cod.java b/src/main/java/net/minecraft/world/entity/animal/Cod.java -index d7e725d0ffc7092b0c59598cbda1d253b6dfc003..85afb29ea13d421f53d42ea484130b1ba84e82b6 100644 +index dd4a116dfe471eaca9a7915db430d39ea8a81915..a5808b3222f69b6853f6dabdc5d5e3561746afd2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cod.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cod.java -@@ -23,6 +23,11 @@ public class Cod extends AbstractSchoolingFish { +@@ -35,6 +35,11 @@ public class Cod extends AbstractSchoolingFish { return this.level.purpurConfig.codTakeDamageFromWater; } @@ -101,10 +101,10 @@ index d7e725d0ffc7092b0c59598cbda1d253b6dfc003..85afb29ea13d421f53d42ea484130b1b public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 58a223e36fb964d546e512d3c102fe5577e5652d..e8ade477deea79c0168276226d51c07591c46c64 100644 +index 5dc426430033d526e379a94232a7e8c17ad52704..d4057ade705e6d5b418535da8a71aaadd5e55306 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java -@@ -66,6 +66,11 @@ public class Cow extends Animal { +@@ -83,6 +83,11 @@ public class Cow extends Animal { return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } @@ -117,10 +117,10 @@ index 58a223e36fb964d546e512d3c102fe5577e5652d..e8ade477deea79c0168276226d51c075 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index e8f77e81cd8e6ea29b79f7a4399fb9cc2bb89c16..2d360627ab063d2cec55be25797378ae05269ee6 100644 +index 0fcb6b45df160c33c6f4e29e643f76af3252a925..4ff6f8bac4742ae6a2129c7268720c91e37386b6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -97,6 +97,11 @@ public class Dolphin extends WaterAnimal { +@@ -165,6 +165,11 @@ public class Dolphin extends WaterAnimal { return this.level.purpurConfig.dolphinTakeDamageFromWater; } @@ -133,10 +133,10 @@ index e8f77e81cd8e6ea29b79f7a4399fb9cc2bb89c16..2d360627ab063d2cec55be25797378ae @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 169cd4a00de163dc86cf73382275ba97a5d09e7f..b2a0166d8db0371c300f94a7b912122d4a40bdf3 100644 +index 35491e36fbab850110ae4fd255cc0acd1e9d8792..1a422a88c7b9bb48312de471a6f32cabd70f4501 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -158,6 +158,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -196,6 +196,11 @@ public class Fox extends Animal implements VariantHolder { return this.level.purpurConfig.foxTakeDamageFromWater; } @@ -149,10 +149,10 @@ index 169cd4a00de163dc86cf73382275ba97a5d09e7f..b2a0166d8db0371c300f94a7b912122d protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index e07f0444e4917bf38448e6908ba1c3d3b7d5d413..a6c1d5645a25065662c7e0e2dd966542c3e2545f 100644 +index b4e41bdca75fad328fe2936860e832f5221a6c31..347b61faf0f93e863b27a672b54a85318ab168c1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -86,6 +86,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -103,6 +103,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { this.summoner = summoner; } @@ -163,12 +163,12 @@ index e07f0444e4917bf38448e6908ba1c3d3b7d5d413..a6c1d5645a25065662c7e0e2dd966542 + @Override protected void registerGoals() { - if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur + if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 6a0afe12430dbd1ff76f17801eb0bf44c2f90ff0..1393b36e69a5f91477c29f7e0f4ab52c3f015302 100644 +index d7705035b80f92b9053b16ae413f82b85624ab76..7c36938ba56b1fd3381db00ef862f9b7488b2b80 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -78,6 +78,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -152,6 +152,11 @@ public class Rabbit extends Animal implements VariantHolder { return this.level.purpurConfig.rabbitTakeDamageFromWater; } @@ -293,10 +293,10 @@ index 57771ff9362e5c423aa2456740970289d6bde005..ca7e3220069116be70adfbf08b9af9f5 public void initializePathFinderGoals(){ this.setSpeedModifier(0.0D); diff --git a/src/main/java/net/minecraft/world/entity/animal/Salmon.java b/src/main/java/net/minecraft/world/entity/animal/Salmon.java -index 1f81836419b5da90aa12a00c3397fab74058dd19..65c0a41b20be8ec48942596a246e68780feaeed8 100644 +index e28290c96da8e27fa6d61cf0ad1684e6787cb19b..4132cad9870493ce839eb2601b281b167f546fed 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Salmon.java +++ b/src/main/java/net/minecraft/world/entity/animal/Salmon.java -@@ -23,6 +23,11 @@ public class Salmon extends AbstractSchoolingFish { +@@ -35,6 +35,11 @@ public class Salmon extends AbstractSchoolingFish { return this.level.purpurConfig.salmonTakeDamageFromWater; } @@ -309,10 +309,10 @@ index 1f81836419b5da90aa12a00c3397fab74058dd19..65c0a41b20be8ec48942596a246e6878 public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 145e17504690299ca6e64a06a52dbb8684ac6966..29b5369dc30bf6e893c2788ec65b1fbeeb2014be 100644 +index c5f4e9d3774eefc43b5b5b4bf895efbb06ae2a9e..8c6aa82746720f6cc404531a94a02b52bc42278b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -132,6 +132,11 @@ public class Sheep extends Animal implements Shearable { +@@ -149,6 +149,11 @@ public class Sheep extends Animal implements Shearable { return this.level.purpurConfig.sheepTakeDamageFromWater; } @@ -325,10 +325,10 @@ index 145e17504690299ca6e64a06a52dbb8684ac6966..29b5369dc30bf6e893c2788ec65b1fbe protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 6dd2d09cc6432edfbebab37120b2bfd5084522fe..ebf46952bee7dce7b3e6098015edbeca5ba82c58 100644 +index 6fee0d553c837addd3f6b15cb960b93fdb216dfd..292e3522dd2da89e31b3ae16f30a7a7444845d4e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -69,6 +69,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -86,6 +86,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM this.summoner = summoner; } @@ -339,12 +339,12 @@ index 6dd2d09cc6432edfbebab37120b2bfd5084522fe..ebf46952bee7dce7b3e6098015edbeca + @Override protected void registerGoals() { - this.goalSelector.addGoal(1, new RangedAttackGoal(this, level.purpurConfig.snowGolemAttackDistance, level.purpurConfig.snowGolemSnowBallMin, level.purpurConfig.snowGolemSnowBallMax, level.purpurConfig.snowGolemSnowBallModifier)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 35d61f8c990154aa297c70338f410a4468e01d68..b4d3ee520e8c10755ad0c608b4660d6213fcb5ca 100644 +index 6e52d61dae3956ae165c4e1b7a1992e57419edc8..0e63a011dfcbdec6e6880175f6f1e96c0d45f724 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -75,6 +75,11 @@ public class Squid extends WaterAnimal { +@@ -97,6 +97,11 @@ public class Squid extends WaterAnimal { return this.level.purpurConfig.squidTakeDamageFromWater; } @@ -357,10 +357,10 @@ index 35d61f8c990154aa297c70338f410a4468e01d68..b4d3ee520e8c10755ad0c608b4660d62 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index e2252ea4e7303fcbbe2e55faa9604c1c668ea908..775be441a73da061c594e3a2bddeb2156883c6cb 100644 +index edf1092f32e24abcefc73b173bde56224121f97a..d41d5cb4ab7623a483a8ebd5e539b0e03e24acd4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -52,6 +52,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -64,6 +64,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder return this.level.purpurConfig.tropicalFishTakeDamageFromWater; } @@ -373,10 +373,10 @@ index e2252ea4e7303fcbbe2e55faa9604c1c668ea908..775be441a73da061c594e3a2bddeb215 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 866b205b996c4f64deef501a2afb7ddfd0987e12..8cb9875284cf05956ded859da6b0e42491d2bfb3 100644 +index 4505783c91992085bfc2965f4a78a0b5df21de77..3b70c7f55167eea949861730502c7befd373f1be 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -98,6 +98,11 @@ public class Turtle extends Animal { +@@ -115,6 +115,11 @@ public class Turtle extends Animal { return this.level.purpurConfig.turtleTakeDamageFromWater; } @@ -389,10 +389,10 @@ index 866b205b996c4f64deef501a2afb7ddfd0987e12..8cb9875284cf05956ded859da6b0e424 this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 6a6c8517f8a2b385a7bf821292fa83945d95f881..b3aa86ae21f1f76dc149f9618c3968d492c8e35e 100644 +index 70d122820f214cd60854d7fbb7ecc8e1223cab7b..f9bc1d5e03e615613c7958c4a5b341c48e858842 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -192,6 +192,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -214,6 +214,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { return this.level.purpurConfig.wolfTakeDamageFromWater; } @@ -405,10 +405,10 @@ index 6a6c8517f8a2b385a7bf821292fa83945d95f881..b3aa86ae21f1f76dc149f9618c3968d4 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 574c011caa6ab029edfb0ee6c7436b451f407bc6..2eafd38bbb3f635ba0d5116d9bdc771b59e906ff 100644 +index 1f3618fc9679ad3938c2939b192132125b0e2201..0e590ffc45f443f678a46ad21bbb9c199fecb79c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -113,6 +113,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 25cbeb86b23f7e629fbca37a3bd4b74521803803..c17692ff7fe82b6f3c1f1cc282f8c75f1b70664c 100644 +index fde16c2060bcf1af102ce8fa5cbcacc58dbd5b1e..6fa5737295f23d90c2aa6d6a235f31aac8944eae 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -99,6 +99,11 @@ public class Goat extends Animal { +@@ -116,6 +116,11 @@ public class Goat extends Animal { return this.level.purpurConfig.goatTakeDamageFromWater; } @@ -437,10 +437,10 @@ index 25cbeb86b23f7e629fbca37a3bd4b74521803803..c17692ff7fe82b6f3c1f1cc282f8c75f protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 935f1e8af2ac139fb8956b53edc55ae793d9a42d..6f8ee24801e2da65410419e2245b060f01f78d47 100644 +index 21f17176d1e10aa036fbc470d4864611855f79ce..ede05210f8341bbec56e49944569938143bcab21 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -@@ -40,6 +40,11 @@ public class Donkey extends AbstractChestedHorse { +@@ -47,6 +47,11 @@ public class Donkey extends AbstractChestedHorse { return this.level.purpurConfig.donkeyTakeDamageFromWater; } @@ -453,10 +453,10 @@ index 935f1e8af2ac139fb8956b53edc55ae793d9a42d..6f8ee24801e2da65410419e2245b060f protected SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 8dd0cc7bff5ec3ce9603f6e511dd5042e1cf9657..b8f2128bfa867d33ad457b53f5958298bfa5b4e8 100644 +index b47d9039bc4a7cfd4fa5f31aeb02f72283aaf64b..4e7bf6f563febe9e63147d3e2f8f7b58cac8c37e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -65,6 +65,11 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -72,6 +72,11 @@ public class Horse extends AbstractHorse implements VariantHolder { return this.level.purpurConfig.horseTakeDamageFromWater; } @@ -469,10 +469,10 @@ index 8dd0cc7bff5ec3ce9603f6e511dd5042e1cf9657..b8f2128bfa867d33ad457b53f5958298 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 4ecf2f60465485982a4b9b8f1fabe2757dd778f4..e63a4d440d93e73b799f0fd3c2ce78ef958976c6 100644 +index d8eac8a7f5919c8eda5999c1bbc8fab098a69b08..5b0f1d18ebf5f9938d21a0912e3066a83d1a114f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -104,6 +104,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index 5491c38e2c40859e1087801836831f1ff16e923f..7b74b196cc5c549a8f88578ad11c0440e8cd1259 100644 +index df8cd4f58cc75df2d9c6822e1675f9cf2f8a2936..0e96fbb526fa21dd0c64453270bfd8b87ea39c01 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -77,6 +77,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -94,6 +94,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { return this.level.purpurConfig.zoglinTakeDamageFromWater; } @@ -1029,10 +1029,10 @@ index 5491c38e2c40859e1087801836831f1ff16e923f..7b74b196cc5c549a8f88578ad11c0440 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 98591d2b5578439230f3291046381c179f9cf5dd..ea9eccca6d4a7a8ae4005747ea3c18c2232ec6bd 100644 +index 1cbd73bd55435f049a1a0e3a9d242ab8f6be7de2..ef5dda3b8094e81e31cade8807a1b65d6c4111e2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -129,6 +129,11 @@ public class Zombie extends Monster { +@@ -146,6 +146,11 @@ public class Zombie extends Monster { return this.level.purpurConfig.zombieTakeDamageFromWater; } @@ -1043,13 +1043,13 @@ index 98591d2b5578439230f3291046381c179f9cf5dd..ea9eccca6d4a7a8ae4005747ea3c18c2 + @Override protected void registerGoals() { - if (this.level().paperConfig().entities.behavior.zombiesTargetTurtleEggs) this.goalSelector.addGoal(4, new Zombie.ZombieAttackTurtleEggGoal(this, 1.0D, 3)); // Paper + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index e1e8fca7ff8231689eae0d5cfcb62e967f3ccf16..e1fddd52908ebb23447d51511d0de8df733380ff 100644 +index 45476b22e44442c1ec04494fe50b3de9ca147137..a5ba2d6e940abdfe3273b7085707f1c8c9b76b67 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -109,6 +109,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { - return this.level.purpurConfig.zombieVillagerTakeDamageFromWater; +@@ -126,6 +126,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { + return level.purpurConfig.zombieVillagerJockeyTryExistingChickens; } + @Override @@ -1061,11 +1061,11 @@ index e1e8fca7ff8231689eae0d5cfcb62e967f3ccf16..e1fddd52908ebb23447d51511d0de8df protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 2d4bf7dea360d72bcc33c10f00f2416599f85c83..296ce8eef2df9d37ff6467cacbed3e77126dc357 100644 +index 4e6495f6cde80d1fe8c8902012ab63738d444e26..cdee256cd8b2a99a2bb3f9a10ccd33bd1f59ca11 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -88,6 +88,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { - return this.level.purpurConfig.zombifiedPiglinTakeDamageFromWater; +@@ -105,6 +105,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { + return level.purpurConfig.zombifiedPiglinJockeyTryExistingChickens; } + @Override @@ -1077,10 +1077,10 @@ index 2d4bf7dea360d72bcc33c10f00f2416599f85c83..296ce8eef2df9d37ff6467cacbed3e77 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 639bbbf36ba6a627a26fc8cd112f3d2896cb45ab..07b566523268badcc4380ed5a7d904e7e4ff0379 100644 +index 17a7623466e55ff967a4c54ed0d674f16e0a23ca..5d595101672419aec8ed49d65f8a394a3c6a846a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -82,6 +82,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -99,6 +99,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level.purpurConfig.hoglinTakeDamageFromWater; } @@ -1093,10 +1093,10 @@ index 639bbbf36ba6a627a26fc8cd112f3d2896cb45ab..07b566523268badcc4380ed5a7d904e7 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index eb27d6934f165d7f958ad441feb18a95c9ed4c24..1b4b8db4297ad765e8ce556ff496f96603839ea9 100644 +index f9ca274c7d273f7c56bbc2ffb8e78b6f51880bbd..b19055382e18e9eddfdcd6ac2acc3023203db905 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -106,6 +106,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -123,6 +123,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento return this.level.purpurConfig.piglinTakeDamageFromWater; } @@ -1109,10 +1109,10 @@ index eb27d6934f165d7f958ad441feb18a95c9ed4c24..1b4b8db4297ad765e8ce556ff496f966 public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 2f6b55361f62f9f9125fec9b3ca062f98e1768a7..acc3ddd2fa07f84ab462c077260744310e8dc1cd 100644 +index 54bb2392a71dffaaa73b00ada833291dd0a86ab7..05582a59fc53d914d2cd8206b361df496b9ca65f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -51,6 +51,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -68,6 +68,11 @@ public class PiglinBrute extends AbstractPiglin { return this.level.purpurConfig.piglinBruteTakeDamageFromWater; } @@ -1125,10 +1125,10 @@ index 2f6b55361f62f9f9125fec9b3ca062f98e1768a7..acc3ddd2fa07f84ab462c07726074431 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 718ee5c391a287f2dcac98744c646b1c68bd0f3c..2821de56ac85d32460d33ceb6be45694b6298afd 100644 +index e27c63bc845495385f1034fa6246058642f07941..21f50d2216399837fb144608950adbfdc00a498b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -170,6 +170,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -192,6 +192,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level.purpurConfig.villagerTakeDamageFromWater; } @@ -1141,10 +1141,10 @@ index 718ee5c391a287f2dcac98744c646b1c68bd0f3c..2821de56ac85d32460d33ceb6be45694 public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 959b8174a2ce5329fb136c2f2bf15381a1ecac55..1c81826a5bb71298cbcb9b3a5715d56bc8eec8be 100644 +index 547795c81be710267c93d29c75a9b5e139d3eedc..fd93eebe94f0ed4d26633292b7c711519a12d6b1 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -81,6 +81,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -98,6 +98,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return this.level.purpurConfig.wanderingTraderTakeDamageFromWater; } @@ -1157,7 +1157,7 @@ index 959b8174a2ce5329fb136c2f2bf15381a1ecac55..1c81826a5bb71298cbcb9b3a5715d56b 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 c3cd9cbb94ce09db9ac4e6aac591b35355b2b882..4d69115b748f31b9a35aee0d0090bc0865a24b0f 100644 +index 9af4765b04263ee79e95f07aabf91a55a7e760bf..b2693eaaca09da316fa06a4a901f1b16ecbb5f89 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -997,10 +997,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0224-Potion-NamespacedKey.patch b/patches/server/0225-Potion-NamespacedKey.patch similarity index 100% rename from patches/server/0224-Potion-NamespacedKey.patch rename to patches/server/0225-Potion-NamespacedKey.patch diff --git a/patches/server/0225-Grindstone-API.patch b/patches/server/0226-Grindstone-API.patch similarity index 100% rename from patches/server/0225-Grindstone-API.patch rename to patches/server/0226-Grindstone-API.patch diff --git a/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 98% rename from patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 80f71f2c3..518eab237 100644 --- a/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0227-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,7 +74,7 @@ index e55720c4d2fbdf6aae526910e87a67c29cf906fd..0e4026e9d39735b840f12e59f84469b9 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d69115b748f31b9a35aee0d0090bc0865a24b0f..e62d350d01a135636491bca6a776e948fc437733 100644 +index b2693eaaca09da316fa06a4a901f1b16ecbb5f89..2e3f957d2c056ce1b43e8b2b39e0eaece3d6da9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -567,6 +567,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch b/patches/server/0228-Shearing-jeb-produces-random-color-wool.patch similarity index 89% rename from patches/server/0227-Shearing-jeb-produces-random-color-wool.patch rename to patches/server/0228-Shearing-jeb-produces-random-color-wool.patch index f207cfc98..266c88b68 100644 --- a/patches/server/0227-Shearing-jeb-produces-random-color-wool.patch +++ b/patches/server/0228-Shearing-jeb-produces-random-color-wool.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shearing jeb produces random color wool diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 29b5369dc30bf6e893c2788ec65b1fbeeb2014be..cea1b11f6eb62a7d5cd3318504a3b77bd99357c8 100644 +index 8c6aa82746720f6cc404531a94a02b52bc42278b..5d7f86140a9c5475e450026d0b7bddc5e049f6d4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -297,7 +297,7 @@ public class Sheep extends Animal implements Shearable { +@@ -315,7 +315,7 @@ public class Sheep extends Animal implements Shearable { for (int j = 0; j < i; ++j) { this.forceDrops = true; // CraftBukkit @@ -18,7 +18,7 @@ index 29b5369dc30bf6e893c2788ec65b1fbeeb2014be..cea1b11f6eb62a7d5cd3318504a3b77b if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e62d350d01a135636491bca6a776e948fc437733..5fbe8576c297edbd7a0abe04e883299b1aa7f4b1 100644 +index 2e3f957d2c056ce1b43e8b2b39e0eaece3d6da9b..73ea4baa63a9c0b9d1eff81a701cb52534bdf972 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1962,6 +1962,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch similarity index 95% rename from patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch index 754dda304..ba66efc46 100644 --- a/patches/server/0228-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0229-Turtle-eggs-random-tick-crack-chance.patch @@ -18,7 +18,7 @@ index 7495e0e8beedad59fff24ebf189b58b307f7d796..70997b83fd7631ebf3c5bda67ef77bef @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5fbe8576c297edbd7a0abe04e883299b1aa7f4b1..d1c0e95e13ab791627678957da8ecc4de183e3ce 100644 +index 73ea4baa63a9c0b9d1eff81a701cb52534bdf972..c6d6e863c1626aa3eece4959f64d70bb0f701027 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -991,11 +991,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0229-Mob-head-visibility-percent.patch b/patches/server/0230-Mob-head-visibility-percent.patch similarity index 96% rename from patches/server/0229-Mob-head-visibility-percent.patch rename to patches/server/0230-Mob-head-visibility-percent.patch index 72b8caf9b..cd8084aeb 100644 --- a/patches/server/0229-Mob-head-visibility-percent.patch +++ b/patches/server/0230-Mob-head-visibility-percent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 97f8087ade872591f1d4ba0783b8ee38d5f614aa..c53f871238809fc62bb8080eb2b895c2fcac6d29 100644 +index 1bb1be688326d79c34b589bd859f21c2d43c53b8..576d29c30d089b7cbdae6a3eb9aad0ca23e847eb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1041,9 +1041,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1042,9 +1042,20 @@ public abstract class LivingEntity extends Entity implements Attackable { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); @@ -32,7 +32,7 @@ index 97f8087ade872591f1d4ba0783b8ee38d5f614aa..c53f871238809fc62bb8080eb2b895c2 // 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 d1c0e95e13ab791627678957da8ecc4de183e3ce..83b3e1871c8af80c3e5ad3f101fb8997241a3c7b 100644 +index c6d6e863c1626aa3eece4959f64d70bb0f701027..b1c20a1cf47a119bbe6b934d2c54cbaf143073c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1199,6 +1199,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0230-Configurable-valid-characters-for-usernames.patch b/patches/server/0231-Configurable-valid-characters-for-usernames.patch similarity index 92% rename from patches/server/0230-Configurable-valid-characters-for-usernames.patch rename to patches/server/0231-Configurable-valid-characters-for-usernames.patch index 528bf9dab..1d8c2502a 100644 --- a/patches/server/0230-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0231-Configurable-valid-characters-for-usernames.patch @@ -18,10 +18,10 @@ index af3ef12851cbfca13ad3316214bd53f2359e2078..f719f8aafe7c75e2ef8fcb05f556a8d6 char c = in.charAt(i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e52ef79d8488edeca10920976f2ef2cdd9a9f93b..1e2cba82b087485fbe15b8fd43339c3a7a6ccad7 100644 +index 7467d3738b1159323606f08e7086dba653063211..1429ff6e89efd58a618c1b1bbeea567466f5f397 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -455,4 +455,11 @@ public class PurpurConfig { +@@ -457,4 +457,11 @@ public class PurpurConfig { private static void networkSettings() { useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP); } diff --git a/patches/server/0231-Shears-can-have-looting-enchantment.patch b/patches/server/0232-Shears-can-have-looting-enchantment.patch similarity index 90% rename from patches/server/0231-Shears-can-have-looting-enchantment.patch rename to patches/server/0232-Shears-can-have-looting-enchantment.patch index 2b2a14db7..f3a8ff605 100644 --- a/patches/server/0231-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0232-Shears-can-have-looting-enchantment.patch @@ -37,11 +37,11 @@ index 5e8cc5cfac8888628c6d513148f41be09ca65a2c..a089fc61ec09be6b7490375489178dc6 boolean readyForShearing(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 1393b36e69a5f91477c29f7e0f4ab52c3f015302..06c938c9565f2f58592d2c4aaeb7c611ae95db0f 100644 +index 7c36938ba56b1fd3381db00ef862f9b7488b2b80..f425c2a681f6e0645ff48ed109f76057a4b2fbe5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -147,7 +147,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { -@@ -190,7 +190,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { entityhuman1.broadcastBreakEvent(hand); -@@ -290,10 +290,11 @@ public class Sheep extends Animal implements Shearable { +@@ -308,10 +308,11 @@ public class Sheep extends Animal implements Shearable { } @Override @@ -94,11 +94,11 @@ index cea1b11f6eb62a7d5cd3318504a3b77bd99357c8..de77023d29c402dea18b031e0fa59890 for (int j = 0; j < i; ++j) { this.forceDrops = true; // CraftBukkit diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index ebf46952bee7dce7b3e6098015edbeca5ba82c58..6874beb9ba45f2af61746638f850469b78aeae5d 100644 +index 292e3522dd2da89e31b3ae16f30a7a7444845d4e..8f58be2b183609cd9b897c6689bf7cda28f940b3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -179,7 +179,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM - return InteractionResult.PASS; +@@ -199,7 +199,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM + return tryRide(player, hand); // Purpur } // CraftBukkit end - this.shear(SoundSource.PLAYERS); @@ -106,7 +106,7 @@ index ebf46952bee7dce7b3e6098015edbeca5ba82c58..6874beb9ba45f2af61746638f850469b this.gameEvent(GameEvent.SHEAR, player); if (!this.level().isClientSide) { itemstack.hurtAndBreak(1, player, (entityhuman1) -> { -@@ -202,12 +202,13 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -222,12 +222,13 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM } @Override @@ -158,10 +158,10 @@ index 4007c16550683e23b396dfdff29530a82523fe05..8fe09c13643d99639fb242da4367c42e public int getMinCost(int level) { return 15 + (level - 1) * 9; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1e2cba82b087485fbe15b8fd43339c3a7a6ccad7..6b0729a5ec50d7519b5f2e45f103e13a287fec74 100644 +index 1429ff6e89efd58a618c1b1bbeea567466f5f397..eb5747485a43bc5c5574cfc539bdc98bee045e9f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -387,6 +387,7 @@ public class PurpurConfig { +@@ -389,6 +389,7 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = false; @@ -169,7 +169,7 @@ index 1e2cba82b087485fbe15b8fd43339c3a7a6ccad7..6b0729a5ec50d7519b5f2e45f103e13a public static boolean allowUnsafeEnchants = false; public static boolean allowInapplicableEnchants = true; public static boolean allowIncompatibleEnchants = true; -@@ -408,6 +409,7 @@ public class PurpurConfig { +@@ -410,6 +411,7 @@ public class PurpurConfig { } allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); diff --git a/patches/server/0232-Stop-bees-from-dying-after-stinging.patch b/patches/server/0233-Stop-bees-from-dying-after-stinging.patch similarity index 88% rename from patches/server/0232-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0233-Stop-bees-from-dying-after-stinging.patch index c3ae543c3..d7c2f2e9f 100644 --- a/patches/server/0232-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0233-Stop-bees-from-dying-after-stinging.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop bees from dying after stinging diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 4d340d073f5d9c681260cab187a08513ad5ae1c5..12ed22c17b50ff9c2050eedc0c9e1f2f1d011e8c 100644 +index 521cad59e394901e16d178c46e10d186eb3fdefd..ca977a8f3d3e7925b3abc78d2dd1a7f57771eee8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -383,6 +383,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -434,6 +434,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.hurt(this.damageSources().drown(), 1.0F); } @@ -17,7 +17,7 @@ index 4d340d073f5d9c681260cab187a08513ad5ae1c5..12ed22c17b50ff9c2050eedc0c9e1f2f ++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 83b3e1871c8af80c3e5ad3f101fb8997241a3c7b..3d17217abbcc8b7323803cc81bff0c138a1e71b2 100644 +index b1c20a1cf47a119bbe6b934d2c54cbaf143073c7..2bc13a187d743695e75ed617e9d8f01d6c6c0941 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1045,6 +1045,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0233-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 98% rename from patches/server/0233-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch index cec95cc67..051be6f56 100644 --- a/patches/server/0233-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0234-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a29b5e39407699f1052c16caa17dde7f35ae65d3..e059da8ea6925797b4aca13e937dc843888c32c6 100644 +index 69847726e17fbd304c97570ccd02cc21a99977d8..4ac38c65a23ca4a99e45247287494e3f16b1b2a6 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1034,6 +1034,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entityType, Level world) { this(entityType, world, VillagerType.PLAINS); -@@ -175,6 +177,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -197,6 +199,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level.purpurConfig.villagerAlwaysDropExp; } @@ -65,7 +65,7 @@ index 3930e103ba5bcd0d845ec3ca1e737889cb69d0c5..49e4a49331938a01d8ff79a17bbb37f3 @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -271,10 +314,20 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -293,11 +336,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper start this.customServerAiStep(false); } @@ -82,6 +82,7 @@ index 3930e103ba5bcd0d845ec3ca1e737889cb69d0c5..49e4a49331938a01d8ff79a17bbb37f3 + this.isLobotomized = false; + } if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper + // if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Uncomment when pufferfish patch + else if (this.isLobotomized && shouldRestock()) restock(); + // Purpur end this.level().getProfiler().pop(); @@ -104,7 +105,7 @@ index e986767316a717bdbdff7a9ccaaeba068ab2a6d8..4d0b37957eb02b5d48beb76295ebc7c4 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cb6f7cda2ad6c6f796882a0e84e8e77f78ab1a4c..7f7f8028d6658107d63cfcd8c713c851d6d8a709 100644 +index 27b5d3f48db08721de0056d3b7b5d2f1cbe708fc..b6d0438a8a135e38a4c3284e71f6d324ca42291c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2290,6 +2290,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0243-Option-for-villager-display-trade-item.patch b/patches/server/0244-Option-for-villager-display-trade-item.patch similarity index 95% rename from patches/server/0243-Option-for-villager-display-trade-item.patch rename to patches/server/0244-Option-for-villager-display-trade-item.patch index 30a3fc401..93f94d732 100644 --- a/patches/server/0243-Option-for-villager-display-trade-item.patch +++ b/patches/server/0244-Option-for-villager-display-trade-item.patch @@ -17,7 +17,7 @@ index 050be72c815010bf3f4b72427e2052b00420e8ee..5a461afd35b3a88d5717a26874c7732a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f7f8028d6658107d63cfcd8c713c851d6d8a709..615af0798cb2931d380378bb1ea4918b0b66d206 100644 +index b6d0438a8a135e38a4c3284e71f6d324ca42291c..39e72f264a9efc5979f0202aff18c7bf6c794e03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2292,6 +2292,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 95% rename from patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index d8b937284..117c6019d 100644 --- a/patches/server/0244-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0245-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,7 +17,7 @@ index cd2ce5bcb8c30e4657cd0e340d80544c7e805905..c8c6fed3f93903bb5c6145930538d415 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 615af0798cb2931d380378bb1ea4918b0b66d206..acd7d1f25a14896315227033133f7598aef97dbe 100644 +index 39e72f264a9efc5979f0202aff18c7bf6c794e03..4f47dfb986d53001a29870e4237633ac2ae84311 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -974,8 +974,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0246-Config-for-mob-last-hurt-by-player-time.patch similarity index 93% rename from patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0246-Config-for-mob-last-hurt-by-player-time.patch index 1d36423e2..c527a5158 100644 --- a/patches/server/0245-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0246-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c53f871238809fc62bb8080eb2b895c2fcac6d29..923f48e002f92a761619dbfb125d6154f4a328c5 100644 +index 576d29c30d089b7cbdae6a3eb9aad0ca23e847eb..937c01e0a306c475b0ea4bbb90c2602ca8ee53a2 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1503,13 +1503,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1504,13 +1504,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; @@ -38,7 +38,7 @@ index 641caa0f74a40ea52f71f3150c0168272b378edf..0eaf7209c636440fa9351797d46954d5 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index acd7d1f25a14896315227033133f7598aef97dbe..4d8080d52627acce69d8cf0667b7f6006e22c95d 100644 +index 4f47dfb986d53001a29870e4237633ac2ae84311..d4fffb0173d8f9c946aad0c9ceb467745f541d91 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -146,6 +146,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0246-Anvil-repair-damage-options.patch b/patches/server/0247-Anvil-repair-damage-options.patch similarity index 98% rename from patches/server/0246-Anvil-repair-damage-options.patch rename to patches/server/0247-Anvil-repair-damage-options.patch index ce2cfb788..794782166 100644 --- a/patches/server/0246-Anvil-repair-damage-options.patch +++ b/patches/server/0247-Anvil-repair-damage-options.patch @@ -64,7 +64,7 @@ index 5c5a3b169795bf8a527b316c666cbc2105c66622..020afeca950d2c7fb6c7b179d424548f return InteractionResult.SUCCESS; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d8080d52627acce69d8cf0667b7f6006e22c95d..cdab9ffeebfbc35e729610ab2a4d7ece3de2c895 100644 +index d4fffb0173d8f9c946aad0c9ceb467745f541d91..eb8bd77034a804c7ce25ef93fd6668563ac3f592 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -736,9 +736,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0247-Fix-legacy-colors-in-console.patch b/patches/server/0248-Fix-legacy-colors-in-console.patch similarity index 100% rename from patches/server/0247-Fix-legacy-colors-in-console.patch rename to patches/server/0248-Fix-legacy-colors-in-console.patch diff --git a/patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 96% rename from patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 8c3aebde7..d879e9c7f 100644 --- a/patches/server/0248-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0249-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,7 +24,7 @@ index 70997b83fd7631ebf3c5bda67ef77bef605eb464..a8c227e2cb62cfa8225798329cde9078 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 cdab9ffeebfbc35e729610ab2a4d7ece3de2c895..45cb432549683e155dc08863972f65815c203b94 100644 +index eb8bd77034a804c7ce25ef93fd6668563ac3f592..8a3dac193beaa6d5e58490b5a86d64b60eb439b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1006,12 +1006,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0249-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch similarity index 94% rename from patches/server/0249-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0250-Add-toggle-for-enchant-level-clamping.patch index 75773d9bc..98fc1d04b 100644 --- a/patches/server/0249-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0250-Add-toggle-for-enchant-level-clamping.patch @@ -31,10 +31,10 @@ index 2048899f8e4c8211e8dde0d11148d647678009fa..1eec84e217f6dc929091fa7451cd235e @Nullable diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4ebaf007c785f6805b659d153c207e8f6c800bee..75908d5fdfbf795b2e83860146291619b768df31 100644 +index 3db04bc9611a76b939758ebaac8596e05860f365..3de2e7a17e1234367e4ec6d944b1145781aefeba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -393,6 +393,7 @@ public class PurpurConfig { +@@ -395,6 +395,7 @@ public class PurpurConfig { public static boolean allowIncompatibleEnchants = true; public static boolean allowHigherEnchantsLevels = true; public static boolean allowUnsafeEnchantCommand = false; @@ -42,7 +42,7 @@ index 4ebaf007c785f6805b659d153c207e8f6c800bee..75908d5fdfbf795b2e83860146291619 private static void enchantmentSettings() { if (version < 5) { boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -415,6 +416,7 @@ public class PurpurConfig { +@@ -417,6 +418,7 @@ public class PurpurConfig { allowIncompatibleEnchants = getBoolean("settings.enchantment.anvil.allow-incompatible-enchants", allowIncompatibleEnchants); allowHigherEnchantsLevels = getBoolean("settings.enchantment.anvil.allow-higher-enchants-levels", allowHigherEnchantsLevels); allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchants); // allowUnsafeEnchants as default for backwards compatability diff --git a/patches/server/0250-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0251-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0250-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0251-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch similarity index 91% rename from patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch index 74d2eb05d..54b142e35 100644 --- a/patches/server/0251-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0252-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 49e4a49331938a01d8ff79a17bbb37f33d5c49ea..231fa50590f2861cc2a733ecfb37fb27add0eff9 100644 +index 6e5dd65d3410b805168d6fbfc2705af6cae3c421..557ee2539c110bac5fcb57439eca31173a54b30a 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1060,6 +1060,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1084,6 +1084,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { @@ -18,7 +18,7 @@ index 49e4a49331938a01d8ff79a17bbb37f33d5c49ea..231fa50590f2861cc2a733ecfb37fb27 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 45cb432549683e155dc08863972f65815c203b94..bf94c241a737f21274e2e846a911318148a029b0 100644 +index 8a3dac193beaa6d5e58490b5a86d64b60eb439b7..8b30cc064de1edb3330fc374c22dbfbdba1dbe6d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2303,6 +2303,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0252-Stonecutter-damage.patch b/patches/server/0253-Stonecutter-damage.patch similarity index 95% rename from patches/server/0252-Stonecutter-damage.patch rename to patches/server/0253-Stonecutter-damage.patch index 0cd47f52c..9ff0daf14 100644 --- a/patches/server/0252-Stonecutter-damage.patch +++ b/patches/server/0253-Stonecutter-damage.patch @@ -48,10 +48,10 @@ index 0e6923e6d440e846b3db47c6b8357f7e0e85ad65..48356602e9e112c4f059777467d8adf6 return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 75908d5fdfbf795b2e83860146291619b768df31..c731c389ca4e9114512a00cd55933debfbefc9f5 100644 +index 3de2e7a17e1234367e4ec6d944b1145781aefeba..15ed564a579237dd1f5d6ce56ccb473f038a8c13 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -205,8 +205,10 @@ public class PurpurConfig { +@@ -207,8 +207,10 @@ public class PurpurConfig { } public static String deathMsgRunWithScissors = " slipped and fell on their shears"; @@ -63,7 +63,7 @@ index 75908d5fdfbf795b2e83860146291619b768df31..c731c389ca4e9114512a00cd55933deb 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 bf94c241a737f21274e2e846a911318148a029b0..645963cbc96e77eb45426e183c3df3a804e6b3f5 100644 +index 8b30cc064de1edb3330fc374c22dbfbdba1dbe6d..269f22938ef0d34a9169e2249771ffaa308c3636 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1001,6 +1001,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch similarity index 96% rename from patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch index 29186f024..990cac971 100644 --- a/patches/server/0253-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0254-Configurable-damage-settings-for-magma-blocks.patch @@ -18,7 +18,7 @@ index 1b766045687e4dcded5cbcc50b746c55b9a34e22..be365914856593bb3c4e1945cc990786 entity.hurt(world.damageSources().hotFloor(), 1.0F); org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 645963cbc96e77eb45426e183c3df3a804e6b3f5..258d979638e716ce822951544fb2821014816773 100644 +index 269f22938ef0d34a9169e2249771ffaa308c3636..1c8554d1bc778e9d998e494e892dd48597f6f5e6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -943,6 +943,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0254-Add-config-for-snow-on-blue-ice.patch b/patches/server/0255-Add-config-for-snow-on-blue-ice.patch similarity index 95% rename from patches/server/0254-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0255-Add-config-for-snow-on-blue-ice.patch index e1e007076..488c2a4c2 100644 --- a/patches/server/0254-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0255-Add-config-for-snow-on-blue-ice.patch @@ -22,7 +22,7 @@ index 14e00c7feb1c051d56a3d27cd00dcef072dd771a..4952fb1aaaafb55baa0fddb389f966a1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 258d979638e716ce822951544fb2821014816773..9db72cc34ce9cb8424a69070745246671ee49a7c 100644 +index 1c8554d1bc778e9d998e494e892dd48597f6f5e6..3b2c8c0d98eac2fd02db468d13eed35643df6a84 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -924,9 +924,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0255-Skeletons-eat-wither-roses.patch b/patches/server/0256-Skeletons-eat-wither-roses.patch similarity index 95% rename from patches/server/0255-Skeletons-eat-wither-roses.patch rename to patches/server/0256-Skeletons-eat-wither-roses.patch index 4ea31d6b9..7156adb7f 100644 --- a/patches/server/0255-Skeletons-eat-wither-roses.patch +++ b/patches/server/0256-Skeletons-eat-wither-roses.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skeletons eat wither roses diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index 27b3536224a9ddee098ad7765bf8f5f924b717d1..3bfe3e00bb9d6d99cc744488f73de2186c330671 100644 +index b4ad943cb2c84a4abc3a75a475706a0f2c93a141..74b7cec6dbee0f53e2e822af850fe2aad4f30ee7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java @@ -14,6 +14,16 @@ import net.minecraft.world.item.Items; @@ -25,7 +25,7 @@ index 27b3536224a9ddee098ad7765bf8f5f924b717d1..3bfe3e00bb9d6d99cc744488f73de218 public class Skeleton extends AbstractSkeleton { private static final int TOTAL_CONVERSION_TIME = 300; -@@ -157,4 +167,67 @@ public class Skeleton extends AbstractSkeleton { +@@ -174,4 +184,67 @@ public class Skeleton extends AbstractSkeleton { } } @@ -94,7 +94,7 @@ index 27b3536224a9ddee098ad7765bf8f5f924b717d1..3bfe3e00bb9d6d99cc744488f73de218 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9db72cc34ce9cb8424a69070745246671ee49a7c..d766e659f4fdb123c399d5bfff422806cc6e212f 100644 +index 3b2c8c0d98eac2fd02db468d13eed35643df6a84..422de739e5f342cfd18af3740815f80b5a5179ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2070,6 +2070,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0256-Enchantment-Table-Persists-Lapis.patch b/patches/server/0257-Enchantment-Table-Persists-Lapis.patch similarity index 98% rename from patches/server/0256-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0257-Enchantment-Table-Persists-Lapis.patch index 0d2a634e2..a9bdb577b 100644 --- a/patches/server/0256-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0257-Enchantment-Table-Persists-Lapis.patch @@ -146,7 +146,7 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d766e659f4fdb123c399d5bfff422806cc6e212f..a5d07401e670775cd27ebee2daaa04194dd4fdc4 100644 +index 422de739e5f342cfd18af3740815f80b5a5179ba..17045e05b0ea705ff9dba8cce68ab34d498cb556 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -745,6 +745,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0257-Spark-Profiler.patch b/patches/server/0258-Spark-Profiler.patch similarity index 100% rename from patches/server/0257-Spark-Profiler.patch rename to patches/server/0258-Spark-Profiler.patch diff --git a/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 88% rename from patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch index b9af52fac..05393ff99 100644 --- a/patches/server/0258-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0259-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 8e90ee2ee59395533dc8803ded3f06c694a02e4f..1dd46063aa511febc3621a36e8d7172c3bdb012a 100644 +index cc0736e7eb1f5227093507fdb3586ae0bb58d738..c5dea1e871246e6a0e03ee3e509aa3a26753051f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2448,7 +2448,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -18,10 +18,10 @@ index 8e90ee2ee59395533dc8803ded3f06c694a02e4f..1dd46063aa511febc3621a36e8d7172c } while (!this.lastChatTimeStamp.compareAndSet(instant1, timestamp)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c731c389ca4e9114512a00cd55933debfbefc9f5..ad7153e27b04fc12a4ff97f1563584471626c6eb 100644 +index 15ed564a579237dd1f5d6ce56ccb473f038a8c13..9e87afb01e569e6d5c2846b931440c4ce395adae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -459,9 +459,11 @@ public class PurpurConfig { +@@ -461,9 +461,11 @@ public class PurpurConfig { public static boolean useUPnP = false; public static boolean maxJoinsPerSecond = false; diff --git a/patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch similarity index 95% rename from patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch index 562dfe930..d6b06d1b5 100644 --- a/patches/server/0259-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0260-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,7 +18,7 @@ index 02d01eabb9606ae8c3b76ad9fa4bb9a525e247b1..ce51fec4a874f9466f9966684c535315 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5d07401e670775cd27ebee2daaa04194dd4fdc4..8107a8c01bccbad7e6896f95d4a7bae52f57ce3a 100644 +index 17045e05b0ea705ff9dba8cce68ab34d498cb556..5d997564e936d4e624f9fb2de5967153d054fb68 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1005,6 +1005,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0260-Config-to-not-let-coral-die.patch b/patches/server/0261-Config-to-not-let-coral-die.patch similarity index 96% rename from patches/server/0260-Config-to-not-let-coral-die.patch rename to patches/server/0261-Config-to-not-let-coral-die.patch index 53b705be8..3e29c3b79 100644 --- a/patches/server/0260-Config-to-not-let-coral-die.patch +++ b/patches/server/0261-Config-to-not-let-coral-die.patch @@ -29,7 +29,7 @@ index 88faea00be60a519f56f975a5311df5e1eb3e6b8..cbb726ac367be81e27d3a86643baf7c4 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8107a8c01bccbad7e6896f95d4a7bae52f57ce3a..1a9b1e0f2ffe47408a83e9de2fd2f258b6dd8595 100644 +index 5d997564e936d4e624f9fb2de5967153d054fb68..13ce8dc958298b0830162945d8c8631a2f08dfc5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -830,6 +830,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0261-Add-local-difficulty-api.patch b/patches/server/0262-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0261-Add-local-difficulty-api.patch rename to patches/server/0262-Add-local-difficulty-api.patch diff --git a/patches/server/0262-Add-toggle-for-RNG-manipulation.patch b/patches/server/0263-Add-toggle-for-RNG-manipulation.patch similarity index 90% rename from patches/server/0262-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0263-Add-toggle-for-RNG-manipulation.patch index 42662a13d..1fb4a033d 100644 --- a/patches/server/0262-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0263-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ed73296c9c2e07c3b24067946f996c13aa777cbb..61699b09ab5005dec792b276ccaa62599dae62f7 100644 +index c897bb42c708bb1f899469b56a3545d02cd24ca9..672beed9786369669412f2700063356b2e8eeaa8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -542,7 +542,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -20,7 +20,7 @@ index ed73296c9c2e07c3b24067946f996c13aa777cbb..61699b09ab5005dec792b276ccaa6259 this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index b4d3ee520e8c10755ad0c608b4660d6213fcb5ca..e6910b5ee3828ca2242d3358b9378286bb9de0f8 100644 +index 0e63a011dfcbdec6e6880175f6f1e96c0d45f724..7d3f7eef7616a7d53a2c8491cdc935be61e6fd3e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -46,7 +46,7 @@ public class Squid extends WaterAnimal { @@ -33,7 +33,7 @@ index b4d3ee520e8c10755ad0c608b4660d6213fcb5ca..e6910b5ee3828ca2242d3358b9378286 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a9b1e0f2ffe47408a83e9de2fd2f258b6dd8595..ffde033727a1587cf679a9626b562a17d6048539 100644 +index 13ce8dc958298b0830162945d8c8631a2f08dfc5..320476c23459b0e73b5a6de7ff2d50e1bbd38491 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -210,9 +210,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0263-Send-client-custom-name-of-BE.patch b/patches/server/0264-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/server/0263-Send-client-custom-name-of-BE.patch rename to patches/server/0264-Send-client-custom-name-of-BE.patch diff --git a/patches/server/0264-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch b/patches/server/0265-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch similarity index 100% rename from patches/server/0264-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch rename to patches/server/0265-PaperPR-7822-Fix-exact-choice-recipe-book-clicks.patch diff --git a/patches/server/0265-Allow-custom-ChatDecorators.patch b/patches/server/0266-Allow-custom-ChatDecorators.patch similarity index 90% rename from patches/server/0265-Allow-custom-ChatDecorators.patch rename to patches/server/0266-Allow-custom-ChatDecorators.patch index 82f94d4b4..04dd1934e 100644 --- a/patches/server/0265-Allow-custom-ChatDecorators.patch +++ b/patches/server/0266-Allow-custom-ChatDecorators.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow custom ChatDecorators Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e059da8ea6925797b4aca13e937dc843888c32c6..17c20539170e48187bfc356f5cb905f4ae71409b 100644 +index 4ac38c65a23ca4a99e45247287494e3f16b1b2a6..f5d7e5b10c5c39f64409909c96268e24782c2a6b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2656,6 +2656,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= 1 && packet.getSlotNum() <= 45; boolean flag2 = itemstack.isEmpty() || itemstack.getDamageValue() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index df67cee913c64fa1cac3aff8522bf656eb6ff653..8ffa65bb262bdd391755b9d255ad0e68b32bb31d 100644 +index 4142820c3053d77d4ae7186fec968d624f893056..7a02cecaaef511c0db4708a1ce9eb885c1cfe028 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -547,4 +547,9 @@ public class PurpurConfig { +@@ -549,4 +549,9 @@ public class PurpurConfig { } }); } diff --git a/patches/server/0276-Fix-MC-123848.patch b/patches/server/0277-Fix-MC-123848.patch similarity index 100% rename from patches/server/0276-Fix-MC-123848.patch rename to patches/server/0277-Fix-MC-123848.patch diff --git a/patches/server/0277-Implement-squid-colors-for-rainglow-fabric-mod.patch b/patches/server/0278-Implement-squid-colors-for-rainglow-fabric-mod.patch similarity index 94% rename from patches/server/0277-Implement-squid-colors-for-rainglow-fabric-mod.patch rename to patches/server/0278-Implement-squid-colors-for-rainglow-fabric-mod.patch index 7604740dc..6e8f9976b 100644 --- a/patches/server/0277-Implement-squid-colors-for-rainglow-fabric-mod.patch +++ b/patches/server/0278-Implement-squid-colors-for-rainglow-fabric-mod.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement squid colors for rainglow fabric mod diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 0a2e0debc8e38cc32059c26d15cbbb0147622336..edfa9778c4dcabcd4bbf99b969c65d26b560b2f3 100644 +index 678cff629d4de6fbe060dbbebbb669c93164f59b..332447ab89d369e83a99404d19cdfce5360f71da 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.Blocks; @@ -16,7 +16,7 @@ index 0a2e0debc8e38cc32059c26d15cbbb0147622336..edfa9778c4dcabcd4bbf99b969c65d26 public GlowSquid(EntityType type, Level world) { super(type, world); -@@ -52,6 +53,7 @@ public class GlowSquid extends Squid { +@@ -65,6 +66,7 @@ public class GlowSquid extends Squid { protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_DARK_TICKS_REMAINING, 0); @@ -24,7 +24,7 @@ index 0a2e0debc8e38cc32059c26d15cbbb0147622336..edfa9778c4dcabcd4bbf99b969c65d26 } @Override -@@ -78,12 +80,14 @@ public class GlowSquid extends Squid { +@@ -91,12 +93,14 @@ public class GlowSquid extends Squid { public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putInt("DarkTicksRemaining", this.getDarkTicksRemaining()); @@ -40,7 +40,7 @@ index 0a2e0debc8e38cc32059c26d15cbbb0147622336..edfa9778c4dcabcd4bbf99b969c65d26 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 38d30017367320aeeb3c6d7524b2e800ba5a8cf5..9b2dc09bdc18b74b23ec0fa21ade6793f7df26b9 100644 +index 05ddd21cbc9d18c1c595849cb24a90baeca92729..bef4ef082a076b52ed4952b101c433855e86c0de 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1517,11 +1517,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0278-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0279-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 97% rename from patches/server/0278-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0279-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 10ad72e0e..b4736a7ad 100644 --- a/patches/server/0278-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0279-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -104,10 +104,10 @@ index 31918fa2eb38e42a5ea5366e559f25ea9d7d59ae..15d8e9261a89da30529ac347462c5209 if (context.hasParam(LootContextParams.LOOTING_MOD)) { i = context.getParamOrNull(LootContextParams.LOOTING_MOD); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8ffa65bb262bdd391755b9d255ad0e68b32bb31d..e7e72c4f7a1fcfb1b6372bb42c08961d0bf2738d 100644 +index 7a02cecaaef511c0db4708a1ce9eb885c1cfe028..af875d966081b6e9f0d6a2680cff7f843c8dea05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -552,4 +552,9 @@ public class PurpurConfig { +@@ -554,4 +554,9 @@ public class PurpurConfig { private static void fixNetworkSerializedCreativeItems() { fixNetworkSerializedItemsInCreative = getBoolean("settings.fix-network-serialized-items-in-creative", fixNetworkSerializedItemsInCreative); } diff --git a/patches/server/0279-Configurable-block-blast-resistance.patch b/patches/server/0280-Configurable-block-blast-resistance.patch similarity index 96% rename from patches/server/0279-Configurable-block-blast-resistance.patch rename to patches/server/0280-Configurable-block-blast-resistance.patch index eff9073af..e6748663a 100644 --- a/patches/server/0279-Configurable-block-blast-resistance.patch +++ b/patches/server/0280-Configurable-block-blast-resistance.patch @@ -44,10 +44,10 @@ index ec6c63075306f9e5389e83641d2c8a82369ddc6b..0f16deddd8cbb506ef7886f57ae640a4 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e7e72c4f7a1fcfb1b6372bb42c08961d0bf2738d..3230dbbe472d3d2a6269cf216e783fab5b8093ee 100644 +index af875d966081b6e9f0d6a2680cff7f843c8dea05..8972bbbaca23f771fb5e10ee4099a420a0ec3ccd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -557,4 +557,19 @@ public class PurpurConfig { +@@ -559,4 +559,19 @@ public class PurpurConfig { private static void fixProjectileLootingTransfer() { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } diff --git a/patches/server/0280-Configurable-block-fall-damage-modifiers.patch b/patches/server/0281-Configurable-block-fall-damage-modifiers.patch similarity index 97% rename from patches/server/0280-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0281-Configurable-block-fall-damage-modifiers.patch index fbfedc87e..f05a40693 100644 --- a/patches/server/0280-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0281-Configurable-block-fall-damage-modifiers.patch @@ -54,10 +54,10 @@ index cfbe1dae76db76cf54a4f5d72aca72d5e893859e..74cb10230d459ac9f300a9d59af504d2 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3230dbbe472d3d2a6269cf216e783fab5b8093ee..a8b217e3fe58b6435ef380a356db71ebcc557752 100644 +index 8972bbbaca23f771fb5e10ee4099a420a0ec3ccd..290a66b51dc6b86b006b577754d1030def288cf7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -572,4 +572,50 @@ public class PurpurConfig { +@@ -574,4 +574,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } diff --git a/patches/server/0281-Language-API.patch b/patches/server/0282-Language-API.patch similarity index 100% rename from patches/server/0281-Language-API.patch rename to patches/server/0282-Language-API.patch diff --git a/patches/server/0282-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0283-Milk-Keeps-Beneficial-Effects.patch similarity index 89% rename from patches/server/0282-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0283-Milk-Keeps-Beneficial-Effects.patch index 548a3a678..0fc0a51bc 100644 --- a/patches/server/0282-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0283-Milk-Keeps-Beneficial-Effects.patch @@ -5,10 +5,10 @@ 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 923f48e002f92a761619dbfb125d6154f4a328c5..a293a8b74837386c2e1dea17c21d0a520ba7e062 100644 +index 937c01e0a306c475b0ea4bbb90c2602ca8ee53a2..a31cc081e8cfe37ef054b8c5e73f369f95e9e426 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1125,6 +1125,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1126,6 +1126,7 @@ public abstract class LivingEntity extends Entity implements Attackable { for (flag = false; iterator.hasNext(); flag = true) { // CraftBukkit start MobEffectInstance effect = (MobEffectInstance) iterator.next(); @@ -17,10 +17,10 @@ index 923f48e002f92a761619dbfb125d6154f4a328c5..a293a8b74837386c2e1dea17c21d0a52 if (event.isCancelled()) { continue; diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 1c81826a5bb71298cbcb9b3a5715d56bc8eec8be..72dbaee9858d9bb04b2bceb25b10b51ec61ead24 100644 +index fd93eebe94f0ed4d26633292b7c711519a12d6b1..4552002a66d222b87dda15ec65118e470477aeba 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -93,7 +93,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -110,7 +110,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return this.canDrinkPotion && this.level().isNight() && !entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API })); this.goalSelector.addGoal(0, new UseItemGoal<>(this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, (entityvillagertrader) -> { @@ -30,7 +30,7 @@ index 1c81826a5bb71298cbcb9b3a5715d56bc8eec8be..72dbaee9858d9bb04b2bceb25b10b51e 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 9b2dc09bdc18b74b23ec0fa21ade6793f7df26b9..8d2786689cca301f8162163540a6dfd8e8a09101 100644 +index bef4ef082a076b52ed4952b101c433855e86c0de..8899611cfae4ea794f559da5eba1d70889fe8056 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -130,6 +130,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0284-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0283-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0284-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0284-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0285-Add-log-suppression-for-LibraryLoader.patch similarity index 91% rename from patches/server/0284-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0285-Add-log-suppression-for-LibraryLoader.patch index 4cd12cefd..f988ca219 100644 --- a/patches/server/0284-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0285-Add-log-suppression-for-LibraryLoader.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a8b217e3fe58b6435ef380a356db71ebcc557752..3bdba6932c1acac79c4772569b8fa27104bcf35b 100644 +index 290a66b51dc6b86b006b577754d1030def288cf7..c3878aed434bdf490cbaf45064fa5a6c5814476f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -468,11 +468,14 @@ public class PurpurConfig { +@@ -470,11 +470,14 @@ public class PurpurConfig { public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; public static boolean loggerSuppressSetBlockFarChunk = false; diff --git a/patches/server/0285-Allow-Transparent-Blocks-In-Enchanting-Box.patch b/patches/server/0286-Allow-Transparent-Blocks-In-Enchanting-Box.patch similarity index 94% rename from patches/server/0285-Allow-Transparent-Blocks-In-Enchanting-Box.patch rename to patches/server/0286-Allow-Transparent-Blocks-In-Enchanting-Box.patch index 2a27e1703..73e8a3da5 100644 --- a/patches/server/0285-Allow-Transparent-Blocks-In-Enchanting-Box.patch +++ b/patches/server/0286-Allow-Transparent-Blocks-In-Enchanting-Box.patch @@ -20,10 +20,10 @@ index 286f34eef22a85be3fe9747dc3c3f9a7d51f437c..ff2b97e4feff3eefe50d2715437a68a8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3bdba6932c1acac79c4772569b8fa27104bcf35b..d8e347b45ae89fbea403e4754c42b48776fcdfa0 100644 +index c3878aed434bdf490cbaf45064fa5a6c5814476f..81409df1af15b68971b1efd203b9ad8d87ca7b6e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -413,6 +413,7 @@ public class PurpurConfig { +@@ -415,6 +415,7 @@ public class PurpurConfig { public static boolean allowInfinityMending = false; public static boolean allowCrossbowInfinity = false; public static boolean allowShearsLooting = false; @@ -31,7 +31,7 @@ index 3bdba6932c1acac79c4772569b8fa27104bcf35b..d8e347b45ae89fbea403e4754c42b487 public static boolean allowUnsafeEnchants = false; public static boolean allowInapplicableEnchants = true; public static boolean allowIncompatibleEnchants = true; -@@ -436,6 +437,7 @@ public class PurpurConfig { +@@ -438,6 +439,7 @@ public class PurpurConfig { allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); allowShearsLooting = getBoolean("settings.enchantment.allow-looting-on-shears", allowShearsLooting); diff --git a/patches/server/0286-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 96% rename from patches/server/0286-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 553eff47f..fc472fd22 100644 --- a/patches/server/0286-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,7 +24,7 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..02b567e4e808e1a809d285ef39e1abc5 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8d2786689cca301f8162163540a6dfd8e8a09101..4efefbdb94cfd153f82be186fd9992960ba371a3 100644 +index 8899611cfae4ea794f559da5eba1d70889fe8056..5422fe94cec80485b2c94a9f4ad5b10ede6c22c2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1259,6 +1259,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0287-Fire-Immunity-API.patch b/patches/server/0288-Fire-Immunity-API.patch similarity index 95% rename from patches/server/0287-Fire-Immunity-API.patch rename to patches/server/0288-Fire-Immunity-API.patch index 3e1c4575d..b7005aff9 100644 --- a/patches/server/0287-Fire-Immunity-API.patch +++ b/patches/server/0288-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 61699b09ab5005dec792b276ccaa62599dae62f7..123d67729f0219677e5f1e82db2dccdfe65b7adb 100644 +index 672beed9786369669412f2700063356b2e8eeaa8..98684d5f05e1d9deff5b5edc923c27110277eda0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -404,6 +404,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -50,7 +50,7 @@ index 61699b09ab5005dec792b276ccaa62599dae62f7..123d67729f0219677e5f1e82db2dccdf } 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 270d38696f95e259dd036c5db2883e406e81d3fa..973192ef61cd817611581c36d0d0aa5bcb2503c0 100644 +index ac6640c525df098e54181dd630f83fd0410ca47c..36fb99920e96185ae2c9e758aa81759fdf508075 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -209,6 +209,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0288-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 94% rename from patches/server/0288-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 09e55a59b..cd2e85a51 100644 --- a/patches/server/0288-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0289-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 123d67729f0219677e5f1e82db2dccdfe65b7adb..dd9b10e0b9da68cf4b71613770f8ca428f25ce73 100644 +index 98684d5f05e1d9deff5b5edc923c27110277eda0..c9eb9135880087fe3d20586278032cf03bd7f171 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -7,6 +7,7 @@ import com.google.common.collect.Lists; @@ -25,7 +25,7 @@ index 123d67729f0219677e5f1e82db2dccdfe65b7adb..dd9b10e0b9da68cf4b71613770f8ca42 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4efefbdb94cfd153f82be186fd9992960ba371a3..eae7d46957e06c80f21ac8cfc4ffa8db2bff2064 100644 +index 5422fe94cec80485b2c94a9f4ad5b10ede6c22c2..c8dbf4052c6b8e525c6f8e06b2af0e1d60adf5e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -425,6 +425,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0289-Added-got-ram-event.patch b/patches/server/0290-Added-got-ram-event.patch similarity index 86% rename from patches/server/0289-Added-got-ram-event.patch rename to patches/server/0290-Added-got-ram-event.patch index 16899cbb9..410f284c1 100644 --- a/patches/server/0289-Added-got-ram-event.patch +++ b/patches/server/0290-Added-got-ram-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index c17692ff7fe82b6f3c1f1cc282f8c75f1b70664c..799390ae242935a7c4119dddd87d540badc21cc0 100644 +index 6fa5737295f23d90c2aa6d6a235f31aac8944eae..3d43fcb8ba26276cb4a7a9fa9880ca58c7c78d58 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -402,6 +402,7 @@ public class Goat extends Animal { +@@ -420,6 +420,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/patches/server/0290-Log-skipped-entity-s-position.patch b/patches/server/0291-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0290-Log-skipped-entity-s-position.patch rename to patches/server/0291-Log-skipped-entity-s-position.patch diff --git a/patches/server/0291-End-Crystal-Cramming.patch b/patches/server/0292-End-Crystal-Cramming.patch similarity index 95% rename from patches/server/0291-End-Crystal-Cramming.patch rename to patches/server/0292-End-Crystal-Cramming.patch index 45e046042..e61367dd9 100644 --- a/patches/server/0291-End-Crystal-Cramming.patch +++ b/patches/server/0292-End-Crystal-Cramming.patch @@ -17,7 +17,7 @@ index ada7eba2beca5b0897fa2eb3567a639573f4e18d..4591fd93d94a4e68c7e23674d434ba01 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eae7d46957e06c80f21ac8cfc4ffa8db2bff2064..ad1489bc7745f01eedfc3f439f86f125ffc1c30c 100644 +index c8dbf4052c6b8e525c6f8e06b2af0e1d60adf5e9..dced4230ce8e68fe74b67a1446078fda1a6f8d64 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -873,6 +873,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0292-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 97% rename from patches/server/0292-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index d4876c150..679ba89e4 100644 --- a/patches/server/0292-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0293-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,7 +36,7 @@ index cc03c02f290ee8d58a2fea54b1f977f49a2cec6e..49a2308832b24dc1eb839af786dbec9f BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ad1489bc7745f01eedfc3f439f86f125ffc1c30c..e41de3240daa6080f8ec463489d2eb51f9370fa2 100644 +index dced4230ce8e68fe74b67a1446078fda1a6f8d64..fd3131de66a09f7be3e4dc9e4a033f82a0cb25ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -767,11 +767,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0293-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0294-Add-attribute-clamping-and-armor-limit-config.patch similarity index 95% rename from patches/server/0293-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0294-Add-attribute-clamping-and-armor-limit-config.patch index b15e84c66..a5758a832 100644 --- a/patches/server/0293-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0294-Add-attribute-clamping-and-armor-limit-config.patch @@ -36,10 +36,10 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d8e347b45ae89fbea403e4754c42b48776fcdfa0..5527d7708ba57ef8a3c9f472dfc0496551eb0e20 100644 +index 81409df1af15b68971b1efd203b9ad8d87ca7b6e..be8b44daa0141151c973917a774aa07721647ed1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -563,6 +563,16 @@ public class PurpurConfig { +@@ -565,6 +565,16 @@ public class PurpurConfig { fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } diff --git a/patches/server/0294-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0295-Config-to-remove-explosion-radius-clamp.patch similarity index 95% rename from patches/server/0294-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0295-Config-to-remove-explosion-radius-clamp.patch index b84318f45..812211582 100644 --- a/patches/server/0294-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0295-Config-to-remove-explosion-radius-clamp.patch @@ -27,7 +27,7 @@ index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..93e7e2fe1f4184719736e698563f493b } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e41de3240daa6080f8ec463489d2eb51f9370fa2..cf10d332625c77068a1793e6e5eedfe8c93e3a2a 100644 +index fd3131de66a09f7be3e4dc9e4a033f82a0cb25ea..b88f5f93c54f72927601337c5a5d418c384ac8d3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -219,6 +219,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0295-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0295-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch index 3a0b113d2..68ca3e544 100644 --- a/patches/server/0295-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0296-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,7 +137,7 @@ index c3f500580d257e1397f2eb7c47b063a6fe6bb405..0d5c6bdfd4aeda472804b493315bf21a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cf10d332625c77068a1793e6e5eedfe8c93e3a2a..ac50955db036a87738acda18f8bab36e1060ccfd 100644 +index b88f5f93c54f72927601337c5a5d418c384ac8d3..72ba806e5922bc39eb566475c921851799cfb25a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -826,8 +826,20 @@ public class PurpurWorldConfig { diff --git a/patches/server/0296-Add-PreExplodeEvents.patch b/patches/server/0297-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0296-Add-PreExplodeEvents.patch rename to patches/server/0297-Add-PreExplodeEvents.patch diff --git a/patches/server/0297-Improve-output-of-plugins-command.patch b/patches/server/0298-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0297-Improve-output-of-plugins-command.patch rename to patches/server/0298-Improve-output-of-plugins-command.patch diff --git a/patches/server/0298-Make-GUI-Great-Again.patch b/patches/server/0299-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0298-Make-GUI-Great-Again.patch rename to patches/server/0299-Make-GUI-Great-Again.patch diff --git a/patches/server/0299-Add-mending-multiplier.patch b/patches/server/0300-Add-mending-multiplier.patch similarity index 96% rename from patches/server/0299-Add-mending-multiplier.patch rename to patches/server/0300-Add-mending-multiplier.patch index 0726ca84f..ab29d7bc3 100644 --- a/patches/server/0299-Add-mending-multiplier.patch +++ b/patches/server/0300-Add-mending-multiplier.patch @@ -27,7 +27,7 @@ index 4746dcb444f0c1b0801cd1805b7fcd3612f5ad85..2930932b431c57974bae7c28a4450a03 public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ac50955db036a87738acda18f8bab36e1060ccfd..5e5b5384f619082d00c91e5de1e93f416cc621ba 100644 +index 72ba806e5922bc39eb566475c921851799cfb25a..9d0a691b57cd852c19d6a8bf46b1fca5188ea1ea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -121,6 +121,7 @@ public class PurpurWorldConfig {