From 0b95a8072acbd1ffa415fd80d9f5406b113c2a7f Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 12 Apr 2024 17:45:35 -0700 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@5436d44 Deprecate several Keyed#getKey methods (#10357) PaperMC/Paper@a7f1dc6 Change online mode default for Velocity configuration (#10413) PaperMC/Paper@37db2d7 [ci skip] Update book page/char limit for book meta doc (#10415) PaperMC/Paper@526795b Update patches to handle vineflower decompiler (#10406) PaperMC/Paper@8fe90de [ci skip] Referenced InventoryDragEvent in documentation of InventoryClickEvent (#10395) PaperMC/Paper@46d462b Fix StackOverflowException thrown on shutdown (Fixes #10404) (#10408) PaperMC/Paper@f061e76 Fix hit criteria advancement triggered before changing state (#10409) PaperMC/Paper@3263470 Add color transition and clone functions to ParticleBuilder (#10342) PaperMC/Paper@4445d23 Deprecate ItemStack#setType & add ItemStack#withType (#10290) --- build.gradle.kts | 7 +- gradle.properties | 2 +- .../0017-ItemStack-convenience-methods.patch | 4 +- patches/api/0051-Add-hover-lines-API.patch | 4 +- .../0001-Pufferfish-Server-Changes.patch | 141 +++++----- .../server/0006-Fix-decompile-errors.patch | 98 ++----- patches/server/0008-Ridables.patch | 257 ++++++------------ ...-Configurable-entity-base-attributes.patch | 56 ++-- .../0010-Barrels-and-enderchests-6-rows.patch | 76 +++--- patches/server/0011-Llama-API.patch | 8 +- patches/server/0012-AFK-API.patch | 12 +- .../server/0030-Breedable-Polar-Bears.patch | 16 +- .../server/0033-Cat-spawning-options.patch | 33 +-- .../0051-Implement-infinite-liquids.patch | 4 +- .../0055-Add-canSaveToDisk-to-Entity.patch | 8 +- ...g-mends-most-damages-equipment-first.patch | 8 +- ...0059-Add-5-second-tps-average-in-tps.patch | 10 +- .../0060-Implement-elytra-settings.patch | 6 +- ...9-Add-vindicator-johnny-spawn-chance.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 10 +- patches/server/0094-Flying-squids-Oh-my.patch | 16 +- ...te-and-mending-enchantments-together.patch | 6 +- ...e-entity-breeding-times-configurable.patch | 24 +- ...mes-from-item-forms-of-entities-to-e.patch | 8 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 20 +- ...efing-bypass-to-everything-affected.patch} | 2 +- ...0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch | 36 --- ...llow-Note-Block-sounds-when-blocked.patch} | 4 +- ...123-Add-EntityTeleportHinderedEvent.patch} | 4 +- ... => 0124-Farmland-trampling-changes.patch} | 4 +- ...5-Movement-options-for-armor-stands.patch} | 2 +- ....patch => 0126-Fix-stuck-in-portals.patch} | 4 +- ...ggle-for-water-sensitive-mob-damage.patch} | 54 ++-- ...8-Config-to-always-tame-in-Creative.patch} | 8 +- ... 0129-End-crystal-explosion-options.patch} | 0 ...ther-Ender-Dragon-can-ride-vehicles.patch} | 0 ...atch => 0131-Dont-run-with-scissors.patch} | 6 +- ...nch-Man.patch => 0132-One-Punch-Man.patch} | 2 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 0 ...to-ignore-nearby-mobs-when-sleeping.patch} | 4 +- ...d-back-player-spawned-endermite-API.patch} | 2 +- ...n-aggressiveness-towards-Endermites.patch} | 4 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 4 +- ...ig.patch => 0138-Tick-fluids-config.patch} | 2 +- ...39-Config-to-disable-Llama-caravans.patch} | 8 +- ...g-to-make-Creepers-explode-on-death.patch} | 0 ...rable-ravager-griefable-blocks-list.patch} | 2 +- ...142-Sneak-to-bulk-process-composter.patch} | 2 +- ...h => 0143-Config-for-skipping-night.patch} | 4 +- ...144-Add-config-for-villager-trading.patch} | 0 ...=> 0145-Allow-infinity-on-crossbows.patch} | 10 +- ...ngs.patch => 0146-Drowning-Settings.patch} | 4 +- ...reak-individual-slabs-when-sneaking.patch} | 6 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 6 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 0 ...tion-to-make-doors-require-redstone.patch} | 2 +- ...Config-to-allow-for-unsafe-enchants.patch} | 14 +- ...0152-Configurable-sponge-absorption.patch} | 0 ...ch => 0153-Projectile-offset-config.patch} | 6 +- ...or-powered-rail-activation-distance.patch} | 2 +- ...> 0155-Piglin-portal-spawn-modifier.patch} | 4 +- ...Config-to-change-max-number-of-bees.patch} | 2 +- ...-Config-for-wither-explosion-radius.patch} | 2 +- ... => 0158-Gamemode-extra-permissions.patch} | 8 +- ...0159-Configurable-piston-push-limit.patch} | 18 +- ...160-Configurable-broadcast-settings.patch} | 4 +- ... => 0161-Configurable-mob-blindness.patch} | 2 +- ...hidden-players-from-entity-selector.patch} | 2 +- ...-to-impact-Creeper-explosion-radius.patch} | 0 ... 0164-Iron-golem-calm-anger-options.patch} | 4 +- ...ots.patch => 0165-Breedable-parrots.patch} | 4 +- ...gurable-powered-rail-boost-modifier.patch} | 4 +- ...ge-multiplier-critical-damage-value.patch} | 0 ...n-to-disable-dragon-egg-teleporting.patch} | 2 +- ...fig-for-unverified-username-message.patch} | 2 +- ...-anvil-cumulative-cost-configurable.patch} | 2 +- ...e-can-work-when-raining-or-at-night.patch} | 2 +- ...72-API-for-any-mob-to-burn-daylight.patch} | 2 +- ...h => 0173-Config-MobEffect-by-world.patch} | 2 +- ...eacon-Activation-Range-Configurable.patch} | 4 +- ...ke-lightning-rod-range-configurable.patch} | 2 +- ...fter-eating-food-fills-hunger-bar-c.patch} | 0 ...ayer-join-full-server-by-permission.patch} | 0 ...> 0178-Add-portal-permission-bypass.patch} | 0 ...9-Shulker-spawn-from-bullet-options.patch} | 4 +- ...ating-glow-berries-adds-glow-effect.patch} | 16 +- ...-Option-to-make-drowned-break-doors.patch} | 0 ...nfigurable-hunger-starvation-damage.patch} | 0 ...patch => 0183-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0184-Add-uptime-command.patch} | 2 +- ...tch => 0185-Tool-actionable-options.patch} | 32 +-- ...6-Store-placer-on-Block-when-placed.patch} | 0 ...oner-API.patch => 0187-Summoner-API.patch} | 0 ...mizable-sleeping-actionbar-messages.patch} | 4 +- ...-shulker-box-items-from-dropping-co.patch} | 0 ...tch => 0190-Big-dripleaf-tilt-delay.patch} | 0 ...0191-Player-ridable-in-water-option.patch} | 0 ...-Enderman-teleport-on-projectile-hi.patch} | 0 ...d.patch => 0193-Add-compass-command.patch} | 2 +- ...h => 0194-Toggle-for-kinetic-damage.patch} | 2 +- ...-Option-for-disable-observer-clocks.patch} | 0 ...zeable-Zombie-Villager-curing-times.patch} | 0 ...for-sponges-to-work-on-lava-and-mud.patch} | 0 ...198-Toggle-for-Wither-s-spawn-sound.patch} | 0 ...-breaks-from-solid-neighbors-config.patch} | 0 ...move-curse-of-binding-with-weakness.patch} | 0 ...0201-Conduit-behavior-configuration.patch} | 0 ...patch => 0202-Cauldron-fill-chances.patch} | 0 ...o-allow-mobs-to-pathfind-over-rails.patch} | 18 +- ... 0204-Shulker-change-color-with-dye.patch} | 0 ... => 0205-Extended-OfflinePlayer-API.patch} | 0 ...he-ability-to-add-combustible-items.patch} | 0 ...in-and-thunder-should-stop-on-sleep.patch} | 2 +- ...-blocks-to-grow-into-trees-naturall.patch} | 31 ++- ...-right-click-to-use-exp-for-mending.patch} | 2 +- ...urally-aggressive-to-players-chance.patch} | 0 ...urally-aggressive-to-players-chance.patch} | 0 ...r-beds-to-explode-on-villager-sleep.patch} | 0 ...Halloween-options-and-optimizations.patch} | 0 ...atch => 0214-Config-for-grindstones.patch} | 0 ....patch => 0215-UPnP-Port-Forwarding.patch} | 2 +- ...Campfire-option-for-lit-when-placed.patch} | 0 ...tinguish-fire-blocks-with-snowballs.patch} | 0 ...on-to-disable-zombie-villagers-cure.patch} | 0 ...nt-BlockEntity-Lore-and-DisplayName.patch} | 0 ...tch => 0220-Signs-allow-color-codes.patch} | 2 +- ...-and-twisting-vines-configurable-ma.patch} | 8 +- ...=> 0222-Mobs-always-drop-experience.patch} | 52 ++-- ....patch => 0223-Potion-NamespacedKey.patch} | 65 ++--- ...ne-API.patch => 0224-Grindstone-API.patch} | 0 ...e-to-replant-crops-and-nether-warts.patch} | 0 ...urtle-eggs-random-tick-crack-chance.patch} | 0 ...=> 0227-Mob-head-visibility-percent.patch} | 2 +- ...able-valid-characters-for-usernames.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 6 +- ...Stop-bees-from-dying-after-stinging.patch} | 0 ...ounts-in-beehives-to-Purpur-clients.patch} | 2 +- ...onfigurable-farmland-trample-height.patch} | 0 ...onfigurable-player-pickup-exp-delay.patch} | 0 ...ng.patch => 0234-Allow-void-trading.patch} | 0 ...h => 0235-Configurable-phantom-size.patch} | 0 ...> 0236-Configurable-food-attributes.patch} | 15 +- ....patch => 0237-Max-joins-per-second.patch} | 4 +- ...figurable-minimum-demand-for-trades.patch} | 0 ... => 0239-Lobotomize-stuck-villagers.patch} | 0 ...ion-for-villager-display-trade-item.patch} | 10 +- ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 0 ...=> 0243-Anvil-repair-damage-options.patch} | 2 +- ...-turtle-egg-trampling-with-feather-.patch} | 0 ...d-toggle-for-enchant-level-clamping.patch} | 4 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 0 ...ge.patch => 0248-Stonecutter-damage.patch} | 28 +- ...le-damage-settings-for-magma-blocks.patch} | 0 ...250-Add-config-for-snow-on-blue-ice.patch} | 0 ... => 0251-Skeletons-eat-wither-roses.patch} | 0 ...52-Enchantment-Table-Persists-Lapis.patch} | 16 +- ...ofiler.patch => 0253-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 2 +- ...for-sculk-shrieker-can_summon-state.patch} | 0 ...=> 0256-Config-to-not-let-coral-die.patch} | 4 +- ...ch => 0257-Add-local-difficulty-api.patch} | 0 ...258-Add-toggle-for-RNG-manipulation.patch} | 8 +- ... 0259-Send-client-custom-name-of-BE.patch} | 0 ...=> 0260-Allow-custom-ChatDecorators.patch} | 2 +- ...imings.patch => 0261-Remove-Timings.patch} | 20 +- ...atch => 0262-Remove-Mojang-Profiler.patch} | 102 ++++--- ...r-output-for-invalid-movement-kicks.patch} | 2 +- ...d-Bee-API.patch => 0264-Add-Bee-API.patch} | 0 ...-API.patch => 0265-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 0 ...67-Add-skeleton-bow-accuracy-option.patch} | 0 ...atch => 0268-Allay-respect-item-NBT.patch} | 0 ....patch => 0269-Add-death-screen-API.patch} | 0 ...-Make-pufferfish-config-relocatable.patch} | 4 +- ...1-Implement-ram-and-rambar-commands.patch} | 2 +- ...272-Add-item-packet-serialize-event.patch} | 4 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 0 ...gurable-block-fall-damage-modifiers.patch} | 0 ...uage-API.patch => 0276-Language-API.patch} | 0 ... 0277-Milk-Keeps-Beneficial-Effects.patch} | 2 +- ...s-not-looking-up-and-down-when-stra.patch} | 4 +- ...d-log-suppression-for-LibraryLoader.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 2 +- ...API.patch => 0281-Fire-Immunity-API.patch} | 4 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 2 +- ...t.patch => 0283-Added-got-ram-event.patch} | 0 ... 0284-Log-skipped-entity-s-position.patch} | 0 ....patch => 0285-End-Crystal-Cramming.patch} | 0 ...eacon-effects-when-covered-by-tinte.patch} | 0 ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 2 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 0 ....patch => 0290-Add-PreExplodeEvents.patch} | 2 +- ...1-Improve-output-of-plugins-command.patch} | 0 ...atch => 0292-Add-mending-multiplier.patch} | 0 ....patch => 0293-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0294-Stored-Bee-API.patch} | 0 ...patch => 0295-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0296-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 0 ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 16 +- ...0300-place-end-crystal-on-any-block.patch} | 0 ...I.patch => 0301-Add-hover-lines-API.patch} | 0 ...able-the-copper-oxidation-proximity.patch} | 0 ...3-register-minecraft-debug-commands.patch} | 0 ...Configurable-villager-search-radius.patch} | 26 +- 210 files changed, 751 insertions(+), 918 deletions(-) rename patches/server/{0122-Add-mobGriefing-bypass-to-everything-affected.patch => 0121-Add-mobGriefing-bypass-to-everything-affected.patch} (99%) delete mode 100644 patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch rename patches/server/{0123-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0122-Config-to-allow-Note-Block-sounds-when-blocked.patch} (94%) rename patches/server/{0124-Add-EntityTeleportHinderedEvent.patch => 0123-Add-EntityTeleportHinderedEvent.patch} (98%) rename patches/server/{0125-Farmland-trampling-changes.patch => 0124-Farmland-trampling-changes.patch} (94%) rename patches/server/{0126-Movement-options-for-armor-stands.patch => 0125-Movement-options-for-armor-stands.patch} (98%) rename patches/server/{0127-Fix-stuck-in-portals.patch => 0126-Fix-stuck-in-portals.patch} (94%) rename patches/server/{0128-Toggle-for-water-sensitive-mob-damage.patch => 0127-Toggle-for-water-sensitive-mob-damage.patch} (98%) rename patches/server/{0129-Config-to-always-tame-in-Creative.patch => 0128-Config-to-always-tame-in-Creative.patch} (93%) rename patches/server/{0130-End-crystal-explosion-options.patch => 0129-End-crystal-explosion-options.patch} (100%) rename patches/server/{0131-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0130-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (100%) rename patches/server/{0132-Dont-run-with-scissors.patch => 0131-Dont-run-with-scissors.patch} (97%) rename patches/server/{0133-One-Punch-Man.patch => 0132-One-Punch-Man.patch} (96%) rename patches/server/{0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (100%) rename patches/server/{0135-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0134-Config-to-ignore-nearby-mobs-when-sleeping.patch} (92%) rename patches/server/{0136-Add-back-player-spawned-endermite-API.patch => 0135-Add-back-player-spawned-endermite-API.patch} (97%) rename patches/server/{0137-Config-Enderman-aggressiveness-towards-Endermites.patch => 0136-Config-Enderman-aggressiveness-towards-Endermites.patch} (94%) rename patches/server/{0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (93%) rename patches/server/{0139-Tick-fluids-config.patch => 0138-Tick-fluids-config.patch} (97%) rename patches/server/{0140-Config-to-disable-Llama-caravans.patch => 0139-Config-to-disable-Llama-caravans.patch} (90%) rename patches/server/{0141-Config-to-make-Creepers-explode-on-death.patch => 0140-Config-to-make-Creepers-explode-on-death.patch} (100%) rename patches/server/{0142-Configurable-ravager-griefable-blocks-list.patch => 0141-Configurable-ravager-griefable-blocks-list.patch} (97%) rename patches/server/{0143-Sneak-to-bulk-process-composter.patch => 0142-Sneak-to-bulk-process-composter.patch} (98%) rename patches/server/{0144-Config-for-skipping-night.patch => 0143-Config-for-skipping-night.patch} (92%) rename patches/server/{0145-Add-config-for-villager-trading.patch => 0144-Add-config-for-villager-trading.patch} (100%) rename patches/server/{0146-Allow-infinity-on-crossbows.patch => 0145-Allow-infinity-on-crossbows.patch} (92%) rename patches/server/{0147-Drowning-Settings.patch => 0146-Drowning-Settings.patch} (94%) rename patches/server/{0148-Break-individual-slabs-when-sneaking.patch => 0147-Break-individual-slabs-when-sneaking.patch} (92%) rename patches/server/{0149-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0148-Config-to-disable-hostile-mob-spawn-on-ice.patch} (89%) rename patches/server/{0150-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0149-Config-to-show-Armor-Stand-arms-on-spawn.patch} (100%) rename patches/server/{0151-Option-to-make-doors-require-redstone.patch => 0150-Option-to-make-doors-require-redstone.patch} (98%) rename patches/server/{0152-Config-to-allow-for-unsafe-enchants.patch => 0151-Config-to-allow-for-unsafe-enchants.patch} (91%) rename patches/server/{0153-Configurable-sponge-absorption.patch => 0152-Configurable-sponge-absorption.patch} (100%) rename patches/server/{0154-Projectile-offset-config.patch => 0153-Projectile-offset-config.patch} (97%) rename patches/server/{0155-Config-for-powered-rail-activation-distance.patch => 0154-Config-for-powered-rail-activation-distance.patch} (94%) rename patches/server/{0156-Piglin-portal-spawn-modifier.patch => 0155-Piglin-portal-spawn-modifier.patch} (93%) rename patches/server/{0157-Config-to-change-max-number-of-bees.patch => 0156-Config-to-change-max-number-of-bees.patch} (96%) rename patches/server/{0158-Config-for-wither-explosion-radius.patch => 0157-Config-for-wither-explosion-radius.patch} (96%) rename patches/server/{0159-Gamemode-extra-permissions.patch => 0158-Gamemode-extra-permissions.patch} (95%) rename patches/server/{0160-Configurable-piston-push-limit.patch => 0159-Configurable-piston-push-limit.patch} (76%) rename patches/server/{0161-Configurable-broadcast-settings.patch => 0160-Configurable-broadcast-settings.patch} (94%) rename patches/server/{0162-Configurable-mob-blindness.patch => 0161-Configurable-mob-blindness.patch} (97%) rename patches/server/{0163-Hide-hidden-players-from-entity-selector.patch => 0162-Hide-hidden-players-from-entity-selector.patch} (98%) rename patches/server/{0164-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0163-Config-for-health-to-impact-Creeper-explosion-radius.patch} (100%) rename patches/server/{0165-Iron-golem-calm-anger-options.patch => 0164-Iron-golem-calm-anger-options.patch} (96%) rename patches/server/{0166-Breedable-parrots.patch => 0165-Breedable-parrots.patch} (95%) rename patches/server/{0167-Configurable-powered-rail-boost-modifier.patch => 0166-Configurable-powered-rail-boost-modifier.patch} (92%) rename patches/server/{0168-Add-config-change-multiplier-critical-damage-value.patch => 0167-Add-config-change-multiplier-critical-damage-value.patch} (100%) rename patches/server/{0169-Option-to-disable-dragon-egg-teleporting.patch => 0168-Option-to-disable-dragon-egg-teleporting.patch} (95%) rename patches/server/{0170-Config-for-unverified-username-message.patch => 0169-Config-for-unverified-username-message.patch} (97%) rename patches/server/{0171-Make-anvil-cumulative-cost-configurable.patch => 0170-Make-anvil-cumulative-cost-configurable.patch} (95%) rename patches/server/{0172-Bee-can-work-when-raining-or-at-night.patch => 0171-Bee-can-work-when-raining-or-at-night.patch} (97%) rename patches/server/{0173-API-for-any-mob-to-burn-daylight.patch => 0172-API-for-any-mob-to-burn-daylight.patch} (99%) rename patches/server/{0174-Config-MobEffect-by-world.patch => 0173-Config-MobEffect-by-world.patch} (98%) rename patches/server/{0175-Beacon-Activation-Range-Configurable.patch => 0174-Beacon-Activation-Range-Configurable.patch} (92%) rename patches/server/{0176-Make-lightning-rod-range-configurable.patch => 0175-Make-lightning-rod-range-configurable.patch} (96%) rename patches/server/{0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (100%) rename patches/server/{0178-Allow-player-join-full-server-by-permission.patch => 0177-Allow-player-join-full-server-by-permission.patch} (100%) rename patches/server/{0179-Add-portal-permission-bypass.patch => 0178-Add-portal-permission-bypass.patch} (100%) rename patches/server/{0180-Shulker-spawn-from-bullet-options.patch => 0179-Shulker-spawn-from-bullet-options.patch} (97%) rename patches/server/{0181-Eating-glow-berries-adds-glow-effect.patch => 0180-Eating-glow-berries-adds-glow-effect.patch} (79%) rename patches/server/{0182-Option-to-make-drowned-break-doors.patch => 0181-Option-to-make-drowned-break-doors.patch} (100%) rename patches/server/{0183-Configurable-hunger-starvation-damage.patch => 0182-Configurable-hunger-starvation-damage.patch} (100%) rename patches/server/{0184-Enhance-SysoutCatcher.patch => 0183-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0185-Add-uptime-command.patch => 0184-Add-uptime-command.patch} (98%) rename patches/server/{0186-Tool-actionable-options.patch => 0185-Tool-actionable-options.patch} (97%) rename patches/server/{0187-Store-placer-on-Block-when-placed.patch => 0186-Store-placer-on-Block-when-placed.patch} (100%) rename patches/server/{0188-Summoner-API.patch => 0187-Summoner-API.patch} (100%) rename patches/server/{0189-Customizable-sleeping-actionbar-messages.patch => 0188-Customizable-sleeping-actionbar-messages.patch} (96%) rename patches/server/{0190-option-to-disable-shulker-box-items-from-dropping-co.patch => 0189-option-to-disable-shulker-box-items-from-dropping-co.patch} (100%) rename patches/server/{0191-Big-dripleaf-tilt-delay.patch => 0190-Big-dripleaf-tilt-delay.patch} (100%) rename patches/server/{0192-Player-ridable-in-water-option.patch => 0191-Player-ridable-in-water-option.patch} (100%) rename patches/server/{0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (100%) rename patches/server/{0194-Add-compass-command.patch => 0193-Add-compass-command.patch} (99%) rename patches/server/{0195-Toggle-for-kinetic-damage.patch => 0194-Toggle-for-kinetic-damage.patch} (95%) rename patches/server/{0196-Add-Option-for-disable-observer-clocks.patch => 0195-Add-Option-for-disable-observer-clocks.patch} (100%) rename patches/server/{0197-Customizeable-Zombie-Villager-curing-times.patch => 0196-Customizeable-Zombie-Villager-curing-times.patch} (100%) rename patches/server/{0198-Option-for-sponges-to-work-on-lava-and-mud.patch => 0197-Option-for-sponges-to-work-on-lava-and-mud.patch} (100%) rename patches/server/{0199-Toggle-for-Wither-s-spawn-sound.patch => 0198-Toggle-for-Wither-s-spawn-sound.patch} (100%) rename patches/server/{0200-Cactus-breaks-from-solid-neighbors-config.patch => 0199-Cactus-breaks-from-solid-neighbors-config.patch} (100%) rename patches/server/{0201-Config-to-remove-curse-of-binding-with-weakness.patch => 0200-Config-to-remove-curse-of-binding-with-weakness.patch} (100%) rename patches/server/{0202-Conduit-behavior-configuration.patch => 0201-Conduit-behavior-configuration.patch} (100%) rename patches/server/{0203-Cauldron-fill-chances.patch => 0202-Cauldron-fill-chances.patch} (100%) rename patches/server/{0204-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0203-Config-to-allow-mobs-to-pathfind-over-rails.patch} (62%) rename patches/server/{0205-Shulker-change-color-with-dye.patch => 0204-Shulker-change-color-with-dye.patch} (100%) rename patches/server/{0206-Extended-OfflinePlayer-API.patch => 0205-Extended-OfflinePlayer-API.patch} (100%) rename patches/server/{0207-Added-the-ability-to-add-combustible-items.patch => 0206-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/server/{0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (97%) rename patches/server/{0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (53%) rename patches/server/{0210-Shift-right-click-to-use-exp-for-mending.patch => 0209-Shift-right-click-to-use-exp-for-mending.patch} (98%) rename patches/server/{0211-Dolphins-naturally-aggressive-to-players-chance.patch => 0210-Dolphins-naturally-aggressive-to-players-chance.patch} (100%) rename patches/server/{0212-Cows-naturally-aggressive-to-players-chance.patch => 0211-Cows-naturally-aggressive-to-players-chance.patch} (100%) rename patches/server/{0213-Option-for-beds-to-explode-on-villager-sleep.patch => 0212-Option-for-beds-to-explode-on-villager-sleep.patch} (100%) rename patches/server/{0214-Halloween-options-and-optimizations.patch => 0213-Halloween-options-and-optimizations.patch} (100%) rename patches/server/{0215-Config-for-grindstones.patch => 0214-Config-for-grindstones.patch} (100%) rename patches/server/{0216-UPnP-Port-Forwarding.patch => 0215-UPnP-Port-Forwarding.patch} (97%) rename patches/server/{0217-Campfire-option-for-lit-when-placed.patch => 0216-Campfire-option-for-lit-when-placed.patch} (100%) rename patches/server/{0218-options-to-extinguish-fire-blocks-with-snowballs.patch => 0217-options-to-extinguish-fire-blocks-with-snowballs.patch} (100%) rename patches/server/{0219-Add-option-to-disable-zombie-villagers-cure.patch => 0218-Add-option-to-disable-zombie-villagers-cure.patch} (100%) rename patches/server/{0220-Persistent-BlockEntity-Lore-and-DisplayName.patch => 0219-Persistent-BlockEntity-Lore-and-DisplayName.patch} (100%) rename patches/server/{0221-Signs-allow-color-codes.patch => 0220-Signs-allow-color-codes.patch} (98%) rename patches/server/{0222-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0221-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (96%) rename patches/server/{0223-Mobs-always-drop-experience.patch => 0222-Mobs-always-drop-experience.patch} (98%) rename patches/server/{0224-Potion-NamespacedKey.patch => 0223-Potion-NamespacedKey.patch} (81%) rename patches/server/{0225-Grindstone-API.patch => 0224-Grindstone-API.patch} (100%) rename patches/server/{0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (100%) rename patches/server/{0227-Turtle-eggs-random-tick-crack-chance.patch => 0226-Turtle-eggs-random-tick-crack-chance.patch} (100%) rename patches/server/{0228-Mob-head-visibility-percent.patch => 0227-Mob-head-visibility-percent.patch} (98%) rename patches/server/{0229-Configurable-valid-characters-for-usernames.patch => 0228-Configurable-valid-characters-for-usernames.patch} (100%) rename patches/server/{0230-Shears-can-have-looting-enchantment.patch => 0229-Shears-can-have-looting-enchantment.patch} (98%) rename patches/server/{0231-Stop-bees-from-dying-after-stinging.patch => 0230-Stop-bees-from-dying-after-stinging.patch} (100%) rename patches/server/{0232-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0231-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (98%) rename patches/server/{0233-Configurable-farmland-trample-height.patch => 0232-Configurable-farmland-trample-height.patch} (100%) rename patches/server/{0234-Configurable-player-pickup-exp-delay.patch => 0233-Configurable-player-pickup-exp-delay.patch} (100%) rename patches/server/{0235-Allow-void-trading.patch => 0234-Allow-void-trading.patch} (100%) rename patches/server/{0236-Configurable-phantom-size.patch => 0235-Configurable-phantom-size.patch} (100%) rename patches/server/{0237-Configurable-food-attributes.patch => 0236-Configurable-food-attributes.patch} (92%) rename patches/server/{0238-Max-joins-per-second.patch => 0237-Max-joins-per-second.patch} (93%) rename patches/server/{0239-Configurable-minimum-demand-for-trades.patch => 0238-Configurable-minimum-demand-for-trades.patch} (100%) rename patches/server/{0240-Lobotomize-stuck-villagers.patch => 0239-Lobotomize-stuck-villagers.patch} (100%) rename patches/server/{0241-Option-for-villager-display-trade-item.patch => 0240-Option-for-villager-display-trade-item.patch} (86%) rename patches/server/{0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (92%) rename patches/server/{0243-Config-for-mob-last-hurt-by-player-time.patch => 0242-Config-for-mob-last-hurt-by-player-time.patch} (100%) rename patches/server/{0244-Anvil-repair-damage-options.patch => 0243-Anvil-repair-damage-options.patch} (98%) rename patches/server/{0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (100%) rename patches/server/{0246-Add-toggle-for-enchant-level-clamping.patch => 0245-Add-toggle-for-enchant-level-clamping.patch} (95%) rename patches/server/{0247-Skip-junit-tests-for-purpur-commands.patch => 0246-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0248-Implement-configurable-search-radius-for-villagers-t.patch => 0247-Implement-configurable-search-radius-for-villagers-t.patch} (100%) rename patches/server/{0249-Stonecutter-damage.patch => 0248-Stonecutter-damage.patch} (88%) rename patches/server/{0250-Configurable-damage-settings-for-magma-blocks.patch => 0249-Configurable-damage-settings-for-magma-blocks.patch} (100%) rename patches/server/{0251-Add-config-for-snow-on-blue-ice.patch => 0250-Add-config-for-snow-on-blue-ice.patch} (100%) rename patches/server/{0252-Skeletons-eat-wither-roses.patch => 0251-Skeletons-eat-wither-roses.patch} (100%) rename patches/server/{0253-Enchantment-Table-Persists-Lapis.patch => 0252-Enchantment-Table-Persists-Lapis.patch} (92%) rename patches/server/{0254-Spark-Profiler.patch => 0253-Spark-Profiler.patch} (100%) rename patches/server/{0255-Option-to-disable-kick-for-out-of-order-chat.patch => 0254-Option-to-disable-kick-for-out-of-order-chat.patch} (95%) rename patches/server/{0256-Config-for-sculk-shrieker-can_summon-state.patch => 0255-Config-for-sculk-shrieker-can_summon-state.patch} (100%) rename patches/server/{0257-Config-to-not-let-coral-die.patch => 0256-Config-to-not-let-coral-die.patch} (93%) rename patches/server/{0258-Add-local-difficulty-api.patch => 0257-Add-local-difficulty-api.patch} (100%) rename patches/server/{0259-Add-toggle-for-RNG-manipulation.patch => 0258-Add-toggle-for-RNG-manipulation.patch} (87%) rename patches/server/{0260-Send-client-custom-name-of-BE.patch => 0259-Send-client-custom-name-of-BE.patch} (100%) rename patches/server/{0261-Allow-custom-ChatDecorators.patch => 0260-Allow-custom-ChatDecorators.patch} (94%) rename patches/server/{0262-Remove-Timings.patch => 0261-Remove-Timings.patch} (98%) rename patches/server/{0263-Remove-Mojang-Profiler.patch => 0262-Remove-Mojang-Profiler.patch} (96%) rename patches/server/{0264-Add-more-logger-output-for-invalid-movement-kicks.patch => 0263-Add-more-logger-output-for-invalid-movement-kicks.patch} (96%) rename patches/server/{0265-Add-Bee-API.patch => 0264-Add-Bee-API.patch} (100%) rename patches/server/{0266-Debug-Marker-API.patch => 0265-Debug-Marker-API.patch} (100%) rename patches/server/{0267-mob-spawning-option-to-ignore-creative-players.patch => 0266-mob-spawning-option-to-ignore-creative-players.patch} (100%) rename patches/server/{0268-Add-skeleton-bow-accuracy-option.patch => 0267-Add-skeleton-bow-accuracy-option.patch} (100%) rename patches/server/{0269-Allay-respect-item-NBT.patch => 0268-Allay-respect-item-NBT.patch} (100%) rename patches/server/{0270-Add-death-screen-API.patch => 0269-Add-death-screen-API.patch} (100%) rename patches/server/{0271-Make-pufferfish-config-relocatable.patch => 0270-Make-pufferfish-config-relocatable.patch} (93%) rename patches/server/{0272-Implement-ram-and-rambar-commands.patch => 0271-Implement-ram-and-rambar-commands.patch} (99%) rename patches/server/{0273-Add-item-packet-serialize-event.patch => 0272-Add-item-packet-serialize-event.patch} (95%) rename patches/server/{0274-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0273-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (98%) rename patches/server/{0275-Configurable-block-blast-resistance.patch => 0274-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0276-Configurable-block-fall-damage-modifiers.patch => 0275-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0277-Language-API.patch => 0276-Language-API.patch} (100%) rename patches/server/{0278-Milk-Keeps-Beneficial-Effects.patch => 0277-Milk-Keeps-Beneficial-Effects.patch} (97%) rename patches/server/{0279-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0278-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (85%) rename patches/server/{0280-Add-log-suppression-for-LibraryLoader.patch => 0279-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (96%) rename patches/server/{0282-Fire-Immunity-API.patch => 0281-Fire-Immunity-API.patch} (95%) rename patches/server/{0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (96%) rename patches/server/{0284-Added-got-ram-event.patch => 0283-Added-got-ram-event.patch} (100%) rename patches/server/{0285-Log-skipped-entity-s-position.patch => 0284-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0286-End-Crystal-Cramming.patch => 0285-End-Crystal-Cramming.patch} (100%) rename patches/server/{0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0286-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (100%) rename patches/server/{0288-Add-attribute-clamping-and-armor-limit-config.patch => 0287-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0289-Config-to-remove-explosion-radius-clamp.patch => 0288-Config-to-remove-explosion-radius-clamp.patch} (95%) rename patches/server/{0290-bonemealable-sugarcane-cactus-and-netherwart.patch => 0289-bonemealable-sugarcane-cactus-and-netherwart.patch} (100%) rename patches/server/{0291-Add-PreExplodeEvents.patch => 0290-Add-PreExplodeEvents.patch} (94%) rename patches/server/{0292-Improve-output-of-plugins-command.patch => 0291-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0293-Add-mending-multiplier.patch => 0292-Add-mending-multiplier.patch} (100%) rename patches/server/{0294-Make-GUI-Great-Again.patch => 0293-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0295-Stored-Bee-API.patch => 0294-Stored-Bee-API.patch} (100%) rename patches/server/{0296-Shears-can-defuse-TNT.patch => 0295-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0297-Explorer-Map-API.patch => 0296-Explorer-Map-API.patch} (100%) rename patches/server/{0298-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0297-Option-Ocelot-Spawn-Under-Sea-Level.patch} (100%) rename patches/server/{0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0298-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0300-Add-option-for-always-showing-item-in-player-death-m.patch => 0299-Add-option-for-always-showing-item-in-player-death-m.patch} (77%) rename patches/server/{0301-place-end-crystal-on-any-block.patch => 0300-place-end-crystal-on-any-block.patch} (100%) rename patches/server/{0302-Add-hover-lines-API.patch => 0301-Add-hover-lines-API.patch} (100%) rename patches/server/{0303-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0302-Add-option-to-disable-the-copper-oxidation-proximity.patch} (100%) rename patches/server/{0304-register-minecraft-debug-commands.patch => 0303-register-minecraft-debug-commands.patch} (100%) rename patches/server/{0306-Configurable-villager-search-radius.patch => 0304-Configurable-villager-search-radius.patch} (75%) diff --git a/build.gradle.kts b/build.gradle.kts index eea9569d2..dd3c556fe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.13" + id("io.papermc.paperweight.patcher") version "1.5.15" } allprojects { @@ -58,7 +58,7 @@ repositories { dependencies { remapper("net.fabricmc:tiny-remapper:0.10.1:fat") - decompiler("net.minecraftforge:forgeflower:2.0.627.2") + decompiler("org.vineflower:vineflower:1.11.0-20240412.144930-14") paperclip("io.papermc:paperclip:3.0.3") } @@ -66,9 +66,10 @@ paperweight { serverProject = project(":purpur-server") remapRepo = paperMavenPublicUrl - decompileRepo = paperMavenPublicUrl + decompileRepo = "https://s01.oss.sonatype.org/content/repositories/snapshots/" usePaperUpstream(providers.gradleProperty("paperCommit")) { + withPaperPatcher { apiPatchDir = layout.projectDirectory.dir("patches/api") apiOutputDir = layout.projectDirectory.dir("Purpur-API") diff --git a/gradle.properties b/gradle.properties index 16f3daa9f..9c64c10dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 -paperCommit = 12071620558a64575ac641d9b93c120a66e5e3a7 +paperCommit = 4445d23544e0801fb6f658de98815ce0d8c04f58 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0017-ItemStack-convenience-methods.patch b/patches/api/0017-ItemStack-convenience-methods.patch index e59e4539b..e2da4b827 100644 --- a/patches/api/0017-ItemStack-convenience-methods.patch +++ b/patches/api/0017-ItemStack-convenience-methods.patch @@ -50,7 +50,7 @@ index ec117c47401ea1a04beb0e5ee9d4d394db7c5c4e..5b058d709751a5b720e209931774e09f + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 245a730a54c4b241a9a67eccceefafd2763bd238..414e350e486a23260675778800576738fc843ed8 100644 +index 7414b4fa690d393a8e9557cc1fd1ce12fa426940..9e3531e1bd9a67b602a09aca8af1191d10bc9e16 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -17,6 +17,18 @@ import org.bukkit.inventory.meta.ItemMeta; @@ -72,7 +72,7 @@ index 245a730a54c4b241a9a67eccceefafd2763bd238..414e350e486a23260675778800576738 /** * Represents a stack of items. -@@ -1033,4 +1045,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1061,4 +1073,626 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat return Bukkit.getUnsafe().computeTooltipLines(this, tooltipContext, player); } // Paper end - expose itemstack tooltip lines diff --git a/patches/api/0051-Add-hover-lines-API.patch b/patches/api/0051-Add-hover-lines-API.patch index 3508ee4e8..59c4d2029 100644 --- a/patches/api/0051-Add-hover-lines-API.patch +++ b/patches/api/0051-Add-hover-lines-API.patch @@ -24,10 +24,10 @@ index f680545b6b59bf8d2ad154b0472dda4cba42a162..58a62ba0635f9158bf18043da89aba75 + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 414e350e486a23260675778800576738fc843ed8..54dd0bd043a37f6519fc8a318856a4825d389669 100644 +index 9e3531e1bd9a67b602a09aca8af1191d10bc9e16..591759aef6c7c3333cbdab596c6619af9185c3c2 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -1666,5 +1666,14 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1694,5 +1694,14 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat } return random.nextInt(unbreaking + 1) > 0; } diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index 0f5386a2d..8cabf9500 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -1475,10 +1475,10 @@ index e028353e0261310afc42ca0454b723d9f1ffc131..2222625a515d9ae6c3e9c92fc4d4a5bf public static long getCoordinateKey(final ChunkPos pair) { diff --git a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java -index ba12919c3f9aec34a9e64993b143ae92be5eb172..9efeab9078e2d08903e482718b840797e22ab1c2 100644 +index 0af9ed92824ccf30814eceb6a2c2e5c12661c991..67eeb39aede6908d2756e49821ca350ebe916902 100644 --- a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java +++ b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java -@@ -38,7 +38,7 @@ public class SignedMessageChain { +@@ -37,7 +37,7 @@ public class SignedMessageChain { throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.chain_broken"), false); // Paper - diff on change (if disconnects, need a new kick event cause) } else if (playerPublicKey.data().hasExpired()) { throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.expiredProfileKey"), false, org.bukkit.event.player.PlayerKickEvent.Cause.EXPIRED_PROFILE_PUBLIC_KEY); // Paper - kick event causes @@ -1488,7 +1488,7 @@ index ba12919c3f9aec34a9e64993b143ae92be5eb172..9efeab9078e2d08903e482718b840797 } else { this.lastTimeStamp = body.timeStamp(); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c8772c773f9933ed1d1debfe707af4373c458152..07319732c76473589774c90edf8a1f1ba4b26d04 100644 +index 27db614d46dffc2d10f18d79cc5a084f3421d86b..c1c97130adf4b7bcb5b2470fc12b79da1d837686 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -312,6 +312,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop attribute.getAttribute().isClientSyncable()).collect(Collectors.toList()); } + @Nullable public AttributeInstance getInstance(Attribute attribute) { -- return this.attributes.computeIfAbsent(attribute, (attributex) -> { -- return this.supplier.createInstance(this::onAttributeModified, attributex); -- }); +- return this.attributes.computeIfAbsent(attribute, attributex -> this.supplier.createInstance(this::onAttributeModified, attributex)); + return this.attributes.computeIfAbsent(attribute, this.createInstance); // Pufferfish - cache lambda, as for some reason java allocates it anyways } @Nullable diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java -index 646d9a121d908a2fc3e4e302484dd5cd1bfc6804..e546ecdccde352502e26a8668eaaafe048d6e282 100644 +index 758f62416ca9c02351348ac0d41deeb4624abc0e..69130969c9a434ec2361e573c9a1ec9f462dfda2 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java -@@ -37,7 +37,11 @@ public class VillagerPanicTrigger extends Behavior { +@@ -36,7 +36,11 @@ public class VillagerPanicTrigger extends Behavior { @Override protected void tick(ServerLevel world, Villager entity, long time) { @@ -2216,12 +2214,12 @@ index 646d9a121d908a2fc3e4e302484dd5cd1bfc6804..e546ecdccde352502e26a8668eaaafe0 + // Pufferfish end entity.spawnGolemIfNeeded(world, time, 3); } - + } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 676f5485a4ca9252e911213dcda8d51776b637b6..2d63ee8fef87264d4b61290effa6ba86a787aa61 100644 +index 38af5c7280366fd6ec077f3d914ea5f3ee77451a..d78e1f6191738d426968efc24e734f04b0fc7edb 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -53,9 +53,12 @@ public class GoalSelector { +@@ -52,9 +52,12 @@ public class GoalSelector { } // Paper start @@ -2237,27 +2235,27 @@ index 676f5485a4ca9252e911213dcda8d51776b637b6..2d63ee8fef87264d4b61290effa6ba86 public boolean hasTasks() { for (WrappedGoal task : this.availableGoals) { diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java -index 07519c817cc6de04a98198c43a0c2b02ba3141eb..ee66be6e5aa45ec8448b6d30785a6e71200b09e3 100644 +index de7c3654b5d134e380c0d7e8800beb6c10d8a22a..3e544a1b957e7a9bc2c5548baf7f6499a34151eb 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java -@@ -120,6 +120,7 @@ public abstract class MoveToBlockGoal extends Goal { - for(int m = 0; m <= l; m = m > 0 ? -m : 1 - m) { - for(int n = m < l && m > -l ? l : 0; n <= l; n = n > 0 ? -n : 1 - n) { +@@ -119,6 +119,7 @@ public abstract class MoveToBlockGoal extends Goal { + for (int m = 0; m <= l; m = m > 0 ? -m : 1 - m) { + for (int n = m < l && m > -l ? l : 0; n <= l; n = n > 0 ? -n : 1 - n) { mutableBlockPos.setWithOffset(blockPos, m, k - 1, n); + if (!this.mob.level().hasChunkAt(mutableBlockPos)) continue; // Pufferfish - if this block isn't loaded, continue if (this.mob.isWithinRestriction(mutableBlockPos) && this.isValidTarget(this.mob.level(), mutableBlockPos)) { this.blockPos = mutableBlockPos; this.mob.movingTarget = mutableBlockPos == BlockPos.ZERO ? null : mutableBlockPos.immutable(); // Paper diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index c8a80c1b2fedff22e8a877d466062375ffb2f0d7..931cbbe41905d7ed3fd46c53d3ddd06a6b9a7c8a 100644 +index d2f0c3b26d4beedb49d86e0242d843590d469d02..2848f0562de085c0c934455c12d785194b7a9dbf 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -@@ -75,9 +75,18 @@ public class TargetingConditions { +@@ -76,9 +76,18 @@ public class TargetingConditions { } - if (this.range > 0.0D) { -- double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0D; -- double e = Math.max((this.useFollowRange ? this.getFollowRange(baseEntity) : this.range) * d, 2.0D); // Paper - Fix MC-145656 + if (this.range > 0.0) { +- double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0; +- double e = Math.max((this.useFollowRange ? this.getFollowRange(baseEntity) : this.range) * d, 2.0); // Paper - Fix MC-145656 + // Pufferfish start - check range before getting visibility + // d = invisibility percent, e = follow range adjusted for invisibility, f = distance double f = baseEntity.distanceToSqr(targetEntity.getX(), targetEntity.getY(), targetEntity.getZ()); @@ -2334,11 +2332,11 @@ index b21e180641d17438997a80e5bcb0ec7998d24a2e..33c160994f70f71446d665e748791343 this.level().getProfiler().pop(); this.level().getProfiler().push("axolotlActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 295769d039f2a1e4f48912a60f9dbe267d8992c1..e88b058c0734e436ef24bab6364b206c13e5a9c2 100644 +index a03fb7aa9f4528f4885db88eaf480202d5f54750..1767fd2df8cb37e9c36fa3008b5131ff4bdad12c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -159,9 +159,11 @@ public class Frog extends Animal implements VariantHolder { - +@@ -183,9 +183,11 @@ public class Frog extends Animal implements VariantHolder { + } } + private int behaviorTick = 0; // Pufferfish @@ -2424,11 +2422,11 @@ index f33c03e81b7ff643741f56eea055e6af260de618..6563e625ebae47fc68e5010d36bd4b4d boolean flag1 = iblockdata.getFluidState().is(FluidTags.WATER); 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 01a2016ac82807d28ffe407b7dbb74bdbcde503e..9921b160fb21f72fbd28fe81ea66fbc3dc05f83f 100644 +index 050ffa4a23feba29fdf4c6a175cdff4e5009027d..1299f93d4f983e6715e447add65df91ef9e9090a 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 -@@ -128,9 +128,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - return (Brain) super.getBrain(); // Paper - decompile fix +@@ -155,9 +155,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { + return (Brain)super.getBrain(); } + private int behaviorTick; // Pufferfish @@ -2748,32 +2746,38 @@ index da7489986848316fed029b71d1bc4e1248c9c9a8..661acdf4b1f33d150b0caf179e925d31 return new BlockPos(i, l, j); } diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index 4f9187d9d640618c40a2fa528f36b845017b4777..efca73d4de33028cf9df944f36e51b7b50f7a4c5 100644 +index b865115dc5a8c000521abf668251ab1bd8104505..57f3193ff761cbe45846a02a15d8da9c9e2e87ee 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java -@@ -66,14 +66,20 @@ public final class Biome { +@@ -63,14 +63,19 @@ public final class Biome { private final BiomeGenerationSettings generationSettings; private final MobSpawnSettings mobSettings; private final BiomeSpecialEffects specialEffects; -- private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> { +- private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> { +- Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { +- protected void rehash(int i) { +- } +- }; +- long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); +- return long2FloatLinkedOpenHashMap; +- })); + // Pufferfish start - use our cache -+ private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> { - return Util.make(() -> { -+ /* - Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { - protected void rehash(int i) { - } - }; - long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); - return long2FloatLinkedOpenHashMap; -+ -+ */ -+ return new gg.airplane.structs.Long2FloatAgingCache(TEMPERATURE_CACHE_SIZE); -+ // Pufferfish end - }); - }); ++ private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> { ++ /* ++ Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { ++ protected void rehash(int i) { ++ } ++ }; ++ long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); ++ return long2FloatLinkedOpenHashMap; ++ */ ++ return new gg.airplane.structs.Long2FloatAgingCache(TEMPERATURE_CACHE_SIZE); ++ // Pufferfish end ++ })); -@@ -118,17 +124,15 @@ public final class Biome { + Biome(Biome.ClimateSettings weather, BiomeSpecialEffects effects, BiomeGenerationSettings generationSettings, MobSpawnSettings spawnSettings) { + this.climateSettings = weather; +@@ -112,17 +117,15 @@ public final class Biome { @Deprecated public float getTemperature(BlockPos blockPos) { long l = blockPos.asLong(); @@ -2971,12 +2975,12 @@ index cdb739df2a285032d25d84f4464f202a7a3fa578..6b9cd8543a5bfc2b936ba18f66ffd60f public static void entityInside(Level world, BlockPos pos, BlockState state, Entity entity, HopperBlockEntity blockEntity) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java -index f52ccd4f3e062af3c7cc6eaea5b074a3bbd21690..a5cd70b6ada2b44f64db0985483ee5eadc67003f 100644 +index dfd1246b735fe64c5beae83567a013861eb00822..fa64bf5ad13c278438039b663ea3134e72108411 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java @@ -94,12 +94,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc public boolean isEmpty() { - this.unpackLootTable((Player)null); + this.unpackLootTable(null); // Paper start - Perf: Optimize Hoppers - for (final ItemStack itemStack : this.getItems()) { - if (!itemStack.isEmpty()) { @@ -3057,10 +3061,10 @@ index 796bbef3544e06b8e7aac7e8ac5f740a2613f4bd..2422ca3ffc6ab7178cacf933b8013f85 // Paper start - optimise collisions diff --git a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java -index 4cdfc433df67afcd455422e9baf56f167dd712ae..57fcf3910f45ce371ac2e237b277b1034caaac4e 100644 +index 83a39f900551e39d5af6f17a339a386ddee4feef..0c8c534fc69172387f188af5282accfed7597ac7 100644 --- a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java +++ b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java -@@ -8,7 +8,7 @@ import javax.annotation.Nullable; +@@ -9,7 +9,7 @@ import javax.annotation.Nullable; import net.minecraft.world.entity.Entity; public class EntityTickList { @@ -3159,7 +3163,7 @@ index 6d8ff6c06af5545634f255ed17dc1e489ece2548..6411aa4ff6bd4cabb25c426fa8f4a7ee return flag; } diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootParams.java b/src/main/java/net/minecraft/world/level/storage/loot/LootParams.java -index e43d07ccdd36f0c9f5b8e9c74cf0d87e17eec66a..8e441f7c2b2d911a0c0111aaa231fc6adae08730 100644 +index 37a0002bbe6539648db5219bb373e0404ae48dc0..ca0571d232e102c4b177a1ea44b96f5f0f440211 100644 --- a/src/main/java/net/minecraft/world/level/storage/loot/LootParams.java +++ b/src/main/java/net/minecraft/world/level/storage/loot/LootParams.java @@ -21,8 +21,10 @@ public class LootParams { @@ -3176,10 +3180,10 @@ index e43d07ccdd36f0c9f5b8e9c74cf0d87e17eec66a..8e441f7c2b2d911a0c0111aaa231fc6a } diff --git a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7496a5f25 100644 +index 1132658b063c6cd3feb1783ab4d5f5141ab75140..a971c3b079e76a16b0de24a827f71cde7944b7e1 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java +++ b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -@@ -19,47 +19,66 @@ public class EntityCollisionContext implements CollisionContext { +@@ -17,50 +17,69 @@ public class EntityCollisionContext implements CollisionContext { return defaultValue; } }; @@ -3210,16 +3214,23 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 this.entity = entity; } - /** @deprecated */ @Deprecated protected EntityCollisionContext(Entity entity) { -- this(entity.isDescending(), entity.getY(), entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : (fluidState) -> { -- return false; -- }, entity); +- this( +- entity.isDescending(), +- entity.getY(), +- entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, +- entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : fluidState -> false, +- entity +- ); + // Pufferfish start - remove this -+ // this(entity.isDescending(), entity.getY(), entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : (fluidState) -> { -+ // return false; -+ // }, entity); ++ /*this( ++ entity.isDescending(), ++ entity.getY(), ++ entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, ++ entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : fluidState -> false, ++ entity ++ );*/ + // Pufferfish end + this.entity = entity; } @@ -3256,8 +3267,8 @@ index ebe65474a4a05ff1637d7f37ebcfe690af59def5..42142c512b12e5b269c19f1e821c50e7 @Override public boolean isAbove(VoxelShape shape, BlockPos pos, boolean defaultValue) { -- return this.entityBottom > (double)pos.getY() + shape.max(Direction.Axis.Y) - (double)1.0E-5F; -+ return (this.entity == null ? -Double.MAX_VALUE : entity.getY()) > (double)pos.getY() + shape.max(Direction.Axis.Y) - (double)1.0E-5F; // Pufferfish +- return this.entityBottom > pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; ++ return (this.entity == null ? -Double.MAX_VALUE : entity.getY()) > pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; // Pufferfish } @Nullable diff --git a/patches/server/0006-Fix-decompile-errors.patch b/patches/server/0006-Fix-decompile-errors.patch index 69d3ae35d..18f759fcf 100644 --- a/patches/server/0006-Fix-decompile-errors.patch +++ b/patches/server/0006-Fix-decompile-errors.patch @@ -5,23 +5,37 @@ Subject: [PATCH] Fix decompile errors diff --git a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -index 89f0f68b3e2be64bcbf8b173a51d56ea3a3fb4ea..05e1c94268cf5c6897807cd7acced652856a09ea 100644 +index b0d26b0eadb2a43924629424a6c13198aace8f69..9f5c3ec2eae9b30bdb8dbcb328d7f701cb7aeb9d 100644 --- a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java +++ b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -@@ -94,7 +94,7 @@ public class BuildContexts> { +@@ -52,7 +52,7 @@ public class BuildContexts> { + } + + RedirectModifier redirectModifier = commandContext.getRedirectModifier(); +- if (redirectModifier instanceof CustomModifierExecutor customModifierExecutor) { ++ if (redirectModifier instanceof CustomModifierExecutor customModifierExecutor) { // Purpur - decompile error + customModifierExecutor.apply(baseSource, list, contextChain, chainModifiers, ExecutionControl.create(context, frame)); + return; + } +@@ -92,11 +92,11 @@ public class BuildContexts> { if (list.isEmpty()) { if (chainModifiers.isReturn()) { - context.queueNext(new CommandQueueEntry<>(frame, FallthroughTask.instance())); + context.queueNext(new CommandQueueEntry<>(frame, (EntryAction) FallthroughTask.instance())); // Purpur - decompile error } - } else { + CommandContext commandContext2 = contextChain.getTopContext(); +- if (commandContext2.getCommand() instanceof CustomCommandExecutor customCommandExecutor) { ++ if (commandContext2.getCommand() instanceof CustomCommandExecutor customCommandExecutor) { // Purpur - decompile error + ExecutionControl executionControl = ExecutionControl.create(context, frame); + + for (T executionCommandSource2 : list) { diff --git a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java -index 0f43466df9b6a59722d5c311b9bd02f59ac75539..9d96a077e3306718a7aaa7ac62772beafc4b82cd 100644 +index b8fa8d5bb62a51281a8ec676066fb02ddeacbebf..682d6d8bd679106a6f07df31adb8dbc568c10d62 100644 --- a/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java +++ b/src/main/java/net/minecraft/commands/synchronization/ArgumentTypeInfos.java -@@ -114,10 +114,10 @@ public class ArgumentTypeInfos { +@@ -116,10 +116,10 @@ public class ArgumentTypeInfos { register(registry, "dimension", DimensionArgument.class, SingletonArgumentInfo.contextFree(DimensionArgument::dimension)); register(registry, "gamemode", GameModeArgument.class, SingletonArgumentInfo.contextFree(GameModeArgument::gameMode)); register(registry, "time", TimeArgument.class, new TimeArgument.Info()); @@ -36,29 +50,11 @@ index 0f43466df9b6a59722d5c311b9bd02f59ac75539..9d96a077e3306718a7aaa7ac62772bea register(registry, "template_mirror", TemplateMirrorArgument.class, SingletonArgumentInfo.contextFree(TemplateMirrorArgument::templateMirror)); register(registry, "template_rotation", TemplateRotationArgument.class, SingletonArgumentInfo.contextFree(TemplateRotationArgument::templateRotation)); register(registry, "heightmap", HeightmapTypeArgument.class, SingletonArgumentInfo.contextFree(HeightmapTypeArgument::heightmap)); -@@ -130,7 +130,7 @@ public class ArgumentTypeInfos { - } - - private static > Class fixClassType(Class clazz) { -- return clazz; -+ return (Class) clazz; // Purpur - decompile error - } - - public static boolean isClassRecognized(Class clazz) { -@@ -142,7 +142,7 @@ public class ArgumentTypeInfos { - if (argumentTypeInfo == null) { - throw new IllegalArgumentException(String.format(Locale.ROOT, "Unrecognized argument type %s (%s)", argumentType, argumentType.getClass())); - } else { -- return argumentTypeInfo; -+ return (ArgumentTypeInfo) argumentTypeInfo; // Purpur - decompile error - } - } - diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -index d9016807bc21c38a5c38170e1335c79b39355bcb..03c065d0ad97d29f3586ba2bf3cd207b867ed634 100644 +index fee2269b241cbfb10bbbb76b404aa5ef3997dfe0..10ee43de05d9f4e0ab980ee5069fe59c0f137403 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java +++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -@@ -121,7 +121,7 @@ public class Painting extends HangingEntity implements VariantHolder getBrain() { -- return super.getBrain(); -+ return (Brain) super.getBrain(); // Purpur - decompile error - } - - protected void updateActivity() { -diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -index 0b8992a9aea781470ab3b1880cf041972a20089d..ab183a7d94a27d5235ff33ce7784c92d66d40b89 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -+++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -@@ -59,7 +59,7 @@ public class Breeze extends Monster { - - @Override - public Brain getBrain() { -- return super.getBrain(); -+ return (Brain) super.getBrain(); // Purpur - decompile error - } - - @Override -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 d02ee11066fc4f07ccb110b09b86d895ff90d4f2..e1be4a77fae0b9120781f460079269b85c993930 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 -@@ -70,7 +70,7 @@ public class PiglinBrute extends AbstractPiglin { - - @Override - public Brain getBrain() { -- return super.getBrain(); -+ return (Brain) super.getBrain(); // Purpur - decompile error - } - - @Override -diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java -index 9a2de546dc2af2ad4bf5d32ca6583f0e1f3f70d8..1c7bb504a576568bd275b4f1373208d37d1419e5 100644 ---- a/src/main/java/net/minecraft/world/level/block/Blocks.java -+++ b/src/main/java/net/minecraft/world/level/block/Blocks.java -@@ -1215,7 +1215,7 @@ public class Blocks { - } - - private static Boolean ocelotOrParrot(BlockState state, BlockGetter world, BlockPos pos, EntityType type) { -- return (boolean)type == EntityType.OCELOT || type == EntityType.PARROT; -+ return type == EntityType.OCELOT || type == EntityType.PARROT; // Purpur - decompile error - } - - private static Block bed(DyeColor color) { diff --git a/patches/server/0008-Ridables.patch b/patches/server/0008-Ridables.patch index 2067530fc..a6c522650 100644 --- a/patches/server/0008-Ridables.patch +++ b/patches/server/0008-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 e17fa30966dea2836fb791becd032fc7d5cc2611..dd06323731533fb9b1b25a56844a4e39e8a1c4ea 100644 +index 70f9e737b3b9f80395afc3542aafe4a0c774c722..70fa9893c7af6387df9e5c33be21653e73222b36 100644 --- a/src/main/java/net/minecraft/core/BlockPos.java +++ b/src/main/java/net/minecraft/core/BlockPos.java -@@ -48,6 +48,12 @@ public class BlockPos extends Vec3i { +@@ -47,6 +47,12 @@ public class BlockPos extends Vec3i { private static final int X_OFFSET = 38; // Paper end - Optimize Bit Operations by inlining @@ -22,7 +22,7 @@ index e17fa30966dea2836fb791becd032fc7d5cc2611..dd06323731533fb9b1b25a56844a4e39 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 b2dd76b79660126cac3b995e9ca2f88dc70937ff..fcf2d5e56c025f236589c40f598e36a167b13a41 100644 +index 0405c868facdbe64537ef6be4d65e80cea929af0..276ecc5e497f92be0df386fc594311e630018191 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1712,6 +1712,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getSyncableAttributes() { - return this.attributes.values().stream().filter((attribute) -> { -- return attribute.getAttribute().isClientSyncable(); -+ return attribute.getAttribute().isClientSyncable() && (entity == null || entity.shouldSendAttribute(attribute.getAttribute())); // Purpur - }).collect(Collectors.toList()); + } +@@ -41,7 +48,7 @@ public class AttributeMap { } + public Collection getSyncableAttributes() { +- return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().isClientSyncable()).collect(Collectors.toList()); ++ return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().isClientSyncable() && (entity == null || entity.shouldSendAttribute(attribute.getAttribute()))).collect(Collectors.toList()); // Purpur + } + + diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 0a13e076b42bc8c0e7d4962379c207dea89f0435..2d7afaa67c762107717486cb9dbbf6f8f967396c 100644 +index c92583b6d1527db32f4a644f30c8f8468e9e2fc2..b8f65dc8f0db4bbe5f9c223e4ba129738fbfd795 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -81,7 +81,89 @@ import org.slf4j.Logger; - - public class DefaultAttributes { - private static final Logger LOGGER = LogUtils.getLogger(); -- private static final Map, AttributeSupplier> SUPPLIERS = ImmutableMap., AttributeSupplier>builder().put(EntityType.ALLAY, Allay.createAttributes().build()).put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()).put(EntityType.AXOLOTL, Axolotl.createAttributes().build()).put(EntityType.BAT, Bat.createAttributes().build()).put(EntityType.BEE, Bee.createAttributes().build()).put(EntityType.BLAZE, Blaze.createAttributes().build()).put(EntityType.CAT, Cat.createAttributes().build()).put(EntityType.CAMEL, Camel.createAttributes().build()).put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()).put(EntityType.CHICKEN, Chicken.createAttributes().build()).put(EntityType.COD, AbstractFish.createAttributes().build()).put(EntityType.COW, Cow.createAttributes().build()).put(EntityType.CREEPER, Creeper.createAttributes().build()).put(EntityType.DOLPHIN, Dolphin.createAttributes().build()).put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.DROWNED, Zombie.createAttributes().build()).put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()).put(EntityType.ENDERMAN, EnderMan.createAttributes().build()).put(EntityType.ENDERMITE, Endermite.createAttributes().build()).put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()).put(EntityType.EVOKER, Evoker.createAttributes().build()).put(EntityType.BREEZE, Breeze.createAttributes().build()).put(EntityType.FOX, Fox.createAttributes().build()).put(EntityType.FROG, Frog.createAttributes().build()).put(EntityType.GHAST, Ghast.createAttributes().build()).put(EntityType.GIANT, Giant.createAttributes().build()).put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()).put(EntityType.GOAT, Goat.createAttributes().build()).put(EntityType.GUARDIAN, Guardian.createAttributes().build()).put(EntityType.HOGLIN, Hoglin.createAttributes().build()).put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()).put(EntityType.HUSK, Zombie.createAttributes().build()).put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()).put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()).put(EntityType.LLAMA, Llama.createAttributes().build()).put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()).put(EntityType.MOOSHROOM, Cow.createAttributes().build()).put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.OCELOT, Ocelot.createAttributes().build()).put(EntityType.PANDA, Panda.createAttributes().build()).put(EntityType.PARROT, Parrot.createAttributes().build()).put(EntityType.PHANTOM, Monster.createMonsterAttributes().build()).put(EntityType.PIG, Pig.createAttributes().build()).put(EntityType.PIGLIN, Piglin.createAttributes().build()).put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()).put(EntityType.PILLAGER, Pillager.createAttributes().build()).put(EntityType.PLAYER, Player.createAttributes().build()).put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()).put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()).put(EntityType.RABBIT, Rabbit.createAttributes().build()).put(EntityType.RAVAGER, Ravager.createAttributes().build()).put(EntityType.SALMON, AbstractFish.createAttributes().build()).put(EntityType.SHEEP, Sheep.createAttributes().build()).put(EntityType.SHULKER, Shulker.createAttributes().build()).put(EntityType.SILVERFISH, Silverfish.createAttributes().build()).put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()).put(EntityType.SLIME, Monster.createMonsterAttributes().build()).put(EntityType.SNIFFER, Sniffer.createAttributes().build()).put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()).put(EntityType.SPIDER, Spider.createAttributes().build()).put(EntityType.SQUID, Squid.createAttributes().build()).put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()).put(EntityType.STRIDER, Strider.createAttributes().build()).put(EntityType.TADPOLE, Tadpole.createAttributes().build()).put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()).put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()).put(EntityType.TURTLE, Turtle.createAttributes().build()).put(EntityType.VEX, Vex.createAttributes().build()).put(EntityType.VILLAGER, Villager.createAttributes().build()).put(EntityType.VINDICATOR, Vindicator.createAttributes().build()).put(EntityType.WARDEN, Warden.createAttributes().build()).put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()).put(EntityType.WITCH, Witch.createAttributes().build()).put(EntityType.WITHER, WitherBoss.createAttributes().build()).put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.WOLF, Wolf.createAttributes().build()).put(EntityType.ZOGLIN, Zoglin.createAttributes().build()).put(EntityType.ZOMBIE, Zombie.createAttributes().build()).put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()).put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()).put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); -+ private static final Map, AttributeSupplier> SUPPLIERS = ImmutableMap., AttributeSupplier>builder() -+ .put(EntityType.ALLAY, Allay.createAttributes().build()) -+ .put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()) -+ .put(EntityType.AXOLOTL, Axolotl.createAttributes().build()) -+ .put(EntityType.BAT, Bat.createAttributes().build()) -+ .put(EntityType.BEE, Bee.createAttributes().build()) -+ .put(EntityType.BLAZE, Blaze.createAttributes().build()) -+ .put(EntityType.CAT, Cat.createAttributes().build()) -+ .put(EntityType.CAMEL, Camel.createAttributes().build()) -+ .put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()) -+ .put(EntityType.CHICKEN, Chicken.createAttributes().build()) -+ .put(EntityType.COD, AbstractFish.createAttributes().build()) -+ .put(EntityType.COW, Cow.createAttributes().build()) -+ .put(EntityType.CREEPER, Creeper.createAttributes().build()) -+ .put(EntityType.DOLPHIN, Dolphin.createAttributes().build()) -+ .put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) -+ .put(EntityType.DROWNED, Zombie.createAttributes().build()) -+ .put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()) -+ .put(EntityType.ENDERMAN, EnderMan.createAttributes().build()) -+ .put(EntityType.ENDERMITE, Endermite.createAttributes().build()) -+ .put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()) -+ .put(EntityType.EVOKER, Evoker.createAttributes().build()) -+ .put(EntityType.BREEZE, Breeze.createAttributes().build()) -+ .put(EntityType.FOX, Fox.createAttributes().build()) -+ .put(EntityType.FROG, Frog.createAttributes().build()) -+ .put(EntityType.GHAST, Ghast.createAttributes().build()) -+ .put(EntityType.GIANT, Giant.createAttributes().build()) -+ .put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()) -+ .put(EntityType.GOAT, Goat.createAttributes().build()) -+ .put(EntityType.GUARDIAN, Guardian.createAttributes().build()) -+ .put(EntityType.HOGLIN, Hoglin.createAttributes().build()) -+ .put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()) -+ .put(EntityType.HUSK, Zombie.createAttributes().build()) -+ .put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()) -+ .put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()) -+ .put(EntityType.LLAMA, Llama.createAttributes().build()) -+ .put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()) -+ .put(EntityType.MOOSHROOM, Cow.createAttributes().build()) -+ .put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) -+ .put(EntityType.OCELOT, Ocelot.createAttributes().build()) -+ .put(EntityType.PANDA, Panda.createAttributes().build()) -+ .put(EntityType.PARROT, Parrot.createAttributes().build()) +@@ -123,7 +123,7 @@ public class DefaultAttributes { + .put(EntityType.OCELOT, Ocelot.createAttributes().build()) + .put(EntityType.PANDA, Panda.createAttributes().build()) + .put(EntityType.PARROT, Parrot.createAttributes().build()) +- .put(EntityType.PHANTOM, Monster.createMonsterAttributes().build()) + .put(EntityType.PHANTOM, net.minecraft.world.entity.monster.Phantom.createAttributes().build()) // Purpur -+ .put(EntityType.PIG, Pig.createAttributes().build()) -+ .put(EntityType.PIGLIN, Piglin.createAttributes().build()) -+ .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) -+ .put(EntityType.PILLAGER, Pillager.createAttributes().build()) -+ .put(EntityType.PLAYER, Player.createAttributes().build()) -+ .put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()) -+ .put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()) -+ .put(EntityType.RABBIT, Rabbit.createAttributes().build()) -+ .put(EntityType.RAVAGER, Ravager.createAttributes().build()) -+ .put(EntityType.SALMON, AbstractFish.createAttributes().build()) -+ .put(EntityType.SHEEP, Sheep.createAttributes().build()) -+ .put(EntityType.SHULKER, Shulker.createAttributes().build()) -+ .put(EntityType.SILVERFISH, Silverfish.createAttributes().build()) -+ .put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()) -+ .put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()) -+ .put(EntityType.SLIME, Monster.createMonsterAttributes().build()) -+ .put(EntityType.SNIFFER, Sniffer.createAttributes().build()) -+ .put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()) -+ .put(EntityType.SPIDER, Spider.createAttributes().build()) -+ .put(EntityType.SQUID, Squid.createAttributes().build()) -+ .put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()) -+ .put(EntityType.STRIDER, Strider.createAttributes().build()) -+ .put(EntityType.TADPOLE, Tadpole.createAttributes().build()) -+ .put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()) -+ .put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()) -+ .put(EntityType.TURTLE, Turtle.createAttributes().build()) -+ .put(EntityType.VEX, Vex.createAttributes().build()) -+ .put(EntityType.VILLAGER, Villager.createAttributes().build()) -+ .put(EntityType.VINDICATOR, Vindicator.createAttributes().build()) -+ .put(EntityType.WARDEN, Warden.createAttributes().build()) -+ .put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()) -+ .put(EntityType.WITCH, Witch.createAttributes().build()) -+ .put(EntityType.WITHER, WitherBoss.createAttributes().build()) -+ .put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()) -+ .put(EntityType.WOLF, Wolf.createAttributes().build()) -+ .put(EntityType.ZOGLIN, Zoglin.createAttributes().build()) -+ .put(EntityType.ZOMBIE, Zombie.createAttributes().build()) -+ .put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()) -+ .put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()) -+ .put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); - - public static AttributeSupplier getSupplier(EntityType type) { - return SUPPLIERS.get(type); + .put(EntityType.PIG, Pig.createAttributes().build()) + .put(EntityType.PIGLIN, Piglin.createAttributes().build()) + .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) 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 03d77c6d4697d4934ca65e3329982f0efe089820..ce7e3e90993b76225dc820a21e04267e488f5f7b 100644 +index b70295a746b6993f1da0f8669567cd6a955573a6..c3049e6c623949b19fde04a3db8ff057a6d07955 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 +423,7 @@ index 03d77c6d4697d4934ca65e3329982f0efe089820..ce7e3e90993b76225dc820a21e04267e 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..384bed4505b6cabb1ae151cd2c4eb5e56f24563f 100644 +index fcb419bc334207216e7cec103fd3a0ac447a0ebe..b33da623d6537ff35930667272f45dcc9090502d 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; @@ -524,8 +442,8 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e5 - public void tick() { + public void vanillaTick() { // Purpur if (this.lookAtCooldown > 0) { - --this.lookAtCooldown; - this.getYRotD().ifPresent((yaw) -> { + this.lookAtCooldown--; + this.getYRotD().ifPresent(yaw -> this.mob.yHeadRot = this.rotateTowards(this.mob.yHeadRot, yaw + 20.0F, this.yMaxRotSpeed)); 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 4fba7c2f6ec363846a772ef2a63e9b3fc1037de5..f8c2e2a7065a3ad5b306ebab3d04a12f362c2ea1 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -623,28 +541,27 @@ index 4fba7c2f6ec363846a772ef2a63e9b3fc1037de5..f8c2e2a7065a3ad5b306ebab3d04a12f 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 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a9852e10d 100644 +index 9d67c2394be00ed226a3076a3f01ba70423fc29c..b1df01bfc16f548821576c93f9616169314f89d7 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 { +@@ -94,6 +94,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override protected void registerGoals() { super.registerGoals(); -- this.goalSelector.addGoal(0, new PanicGoal(this, 1.25D)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 1.6D, 1.4D, EntitySelector.NO_SPECTATORS::test)); + this.goalSelector.addGoal(0, new PanicGoal(this, 1.25)); + this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 1.6, 1.4, EntitySelector.NO_SPECTATORS::test)); this.goalSelector.addGoal(4, new AbstractFish.FishSwimGoal(this)); - } -@@ -107,7 +107,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -107,7 +108,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override public void travel(Vec3 movementInput) { if (this.isEffectiveAi() && this.isInWater()) { - this.moveRelative(0.01F, movementInput); + this.moveRelative(getRider() != null ? getSpeed() : 0.01F, movementInput); // Purpur this.move(MoverType.SELF, this.getDeltaMovement()); - this.setDeltaMovement(this.getDeltaMovement().scale(0.9D)); + this.setDeltaMovement(this.getDeltaMovement().scale(0.9)); if (this.getTarget() == null) { -@@ -166,7 +166,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -167,7 +168,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { protected void playStepSound(BlockPos pos, BlockState state) { } @@ -653,7 +570,7 @@ index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a private final AbstractFish fish; FishMoveControl(AbstractFish owner) { -@@ -174,14 +174,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -175,14 +176,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { this.fish = owner; } @@ -669,7 +586,7 @@ index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a + @Override + public void vanillaTick() { // Purpur if (this.fish.isEyeInFluid(FluidTags.WATER)) { - this.fish.setDeltaMovement(this.fish.getDeltaMovement().add(0.0D, 0.005D, 0.0D)); + this.fish.setDeltaMovement(this.fish.getDeltaMovement().add(0.0, 0.005, 0.0)); } if (this.operation == MoveControl.Operation.MOVE_TO && !this.fish.getNavigation().isDone()) { @@ -1559,10 +1476,10 @@ index 24770540c51fe4831040d6b46b27636d25ebac40..ebfa162f172bdad7b17ce153fdee5087 this.goalSelector.addGoal(3, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(4, new TemptGoal(this, 1.2D, Ingredient.of(Items.CARROT_ON_A_STICK), false)); 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 01e17bac2358c42fb9455974ab8141e32c4f9161..2b6efb46035c5695928643780bfbd5b5a2ed28e9 100644 +index 17749ddf448ea4f04ed1e1a9c33123e1cd49a46e..c737eea79621d565b5bbd28e22fa0731c3ed6068 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -60,11 +60,40 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -59,11 +59,40 @@ public class PolarBear extends Animal implements NeutralMob { private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -1603,25 +1520,26 @@ index 01e17bac2358c42fb9455974ab8141e32c4f9161..2b6efb46035c5695928643780bfbd5b5 @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { -@@ -80,12 +109,14 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -79,12 +108,14 @@ public class PolarBear extends Animal implements NeutralMob { protected void registerGoals() { super.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 PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PolarBear.PolarBearPanicGoal()); - this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); - this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); + this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); + this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur 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 { +@@ -201,6 +232,12 @@ public class PolarBear extends Animal implements NeutralMob { + if (!this.level().isClientSide) { this.updatePersistentAnger((ServerLevel)this.level(), true); } - ++ + // Purpur start + if (isStanding() && --standTimer <= 0) { + setStanding(false); @@ -1630,7 +1548,7 @@ index 01e17bac2358c42fb9455974ab8141e32c4f9161..2b6efb46035c5695928643780bfbd5b5 } @Override -@@ -231,6 +267,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -230,6 +267,7 @@ public class PolarBear extends Animal implements NeutralMob { public void setStanding(boolean warning) { this.entityData.set(DATA_STANDING_ID, warning); @@ -1912,7 +1830,7 @@ index 9eab1170cb123d3b60a02314702516704f959ab7..c48ceed671e1804756d8a11208e5f7e5 } 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 4f32597c7af34d599f6658fe4962d41624e60419..0ee9d5eeabb0352d0a92fa0106b7a3a834a9c146 100644 +index 051fb9f1e0d91b1cb1e2dec9a03f3b26fe64c82a..423c67f6d0faac7e46bdbe7f5bc3076a687fbb73 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -48,9 +48,32 @@ public class Squid extends WaterAnimal { @@ -1948,7 +1866,7 @@ index 4f32597c7af34d599f6658fe4962d41624e60419..0ee9d5eeabb0352d0a92fa0106b7a3a8 this.goalSelector.addGoal(1, new Squid.SquidFleeGoal()); } -@@ -298,6 +321,37 @@ public class Squid extends WaterAnimal { +@@ -292,6 +315,37 @@ public class Squid extends WaterAnimal { @Override public void tick() { @@ -1987,10 +1905,10 @@ index 4f32597c7af34d599f6658fe4962d41624e60419..0ee9d5eeabb0352d0a92fa0106b7a3a8 if (i > 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); 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..71234b258157579d3a47064e7e299bb7fb90908f 100644 +index 5247f1134db2cbaf412cfe583b67cfe4d58dc967..fe546baadc2e238667386c494359ddf904dd41e5 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 +@@ -65,6 +65,18 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder super(type, world); } @@ -2283,10 +2201,10 @@ index 84ae19bf9bddd2b6ee4737577d8836d59be028c2..7183cd107218d36962803facb63cd6f3 public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index e88b058c0734e436ef24bab6364b206c13e5a9c2..156fd7b01853f4ad50235646a15893bb03d631b2 100644 +index 1767fd2df8cb37e9c36fa3008b5131ff4bdad12c..709a5b786b56b92e00e25fbc9cf7ac07f093c5a9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -79,16 +79,65 @@ public class Frog extends Animal implements VariantHolder { +@@ -104,16 +104,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(); @@ -2353,7 +2271,7 @@ index e88b058c0734e436ef24bab6364b206c13e5a9c2..156fd7b01853f4ad50235646a15893bb @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -163,7 +212,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -187,7 +236,7 @@ public class Frog extends Animal implements VariantHolder { @Override protected void customServerAiStep() { this.level().getProfiler().push("frogBrain"); @@ -2362,7 +2280,7 @@ index e88b058c0734e436ef24bab6364b206c13e5a9c2..156fd7b01853f4ad50235646a15893bb this.getBrain().tick((ServerLevel)this.level(), this); this.level().getProfiler().pop(); this.level().getProfiler().push("frogActivityUpdate"); -@@ -349,7 +398,7 @@ public class Frog extends Animal implements VariantHolder { +@@ -376,7 +425,7 @@ public class Frog extends Animal implements VariantHolder { return world.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(world, pos); } @@ -2510,7 +2428,7 @@ index 815eb15086976b8f9e03bf8182d9ed50aec14720..41777079871eef2bb4d319f28c8f441d 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..6a5fb18523545ccc788b09ab4fbee1b14a64bc63 100644 +index 8c14f9f2ad383f87c498126f135b460a241da410..5242059484fb5f407a2da2b0c01a8feeaf1c3a64 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 { @@ -2528,7 +2446,7 @@ index e0dfee0e0ce091d5ae0ec740e939c2c50915c104..6a5fb18523545ccc788b09ab4fbee1b1 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 5f5dc651d570989ec1294c31a14dcfede466b80a..3e50581033e88e8eddcbd85bfa890cbe0b88a7e6 100644 +index f3ba42437e50cd19ad12d00a39c3f92544137fbd..6503f68345d931ac73e8291add6ed108c10ceb60 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 { @@ -2544,7 +2462,7 @@ index 5f5dc651d570989ec1294c31a14dcfede466b80a..3e50581033e88e8eddcbd85bfa890cbe + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 6623674136b0f865d5b3d7a10d3bf05793b82f87..1c6be506804b9622c4d0094814939f894ca857df 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -2698,7 +2616,7 @@ index 038de19633002e8f7c4b1ead7438cef0163456ce..c1d1321c75330231777adb4ff6e0ca60 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 2f7f1f01c5e99266e66f7b8324fc94d2130ea9a4..cc19e9cc90789a5170d1cf3e004a3a452aad8b20 100644 +index 0a6ad1ad18051dc6311a6c4dd97dddf70b012014..c1fd9363ef67dc2641a6ad37f4a20dd8ce5ec085 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -26,6 +26,18 @@ public class ZombieHorse extends AbstractHorse { @@ -2718,7 +2636,7 @@ index 2f7f1f01c5e99266e66f7b8324fc94d2130ea9a4..cc19e9cc90789a5170d1cf3e004a3a45 + // Purpur end + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } @@ -76,6 +88,7 @@ public class ZombieHorse extends AbstractHorse { @@ -2766,7 +2684,7 @@ index 0a5b953bd8c0c7f181da4090b950e9e6524b6d61..7fb2c28b567c6c338a68bdc29d24cb65 double d0 = this.moveControl.getSpeedModifier(); diff --git a/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java b/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java -index a6f3fba3b02b0b4d2a4e9e5205301c6f52d0188a..4eebfc27ded55e4d764d04f35d3e9c9e0791c89f 100644 +index aa5416157abd155ffadf94f61b77fa36d694699f..1dd1bd40607e6da09abb0315097588aed550c0c5 100644 --- a/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java +++ b/src/main/java/net/minecraft/world/entity/boss/EnderDragonPart.java @@ -24,6 +24,13 @@ public class EnderDragonPart extends Entity { @@ -3138,7 +3056,7 @@ index 586e3e92ccc275446df6dbbff9bf010a37a9aa8f..9d259d7e2aa3e44e350eb5927314cfce 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 17aa7676ab624440651850bbe5689f8a6c9dbeed..63049b0b4a4ae09e5925129dc363e43dbae23272 100644 +index 2d4399a4dba754704c873f088fb4fc1a7fc56ef1..929074db505e0838a9b133228f81cad87bdab5fb 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 { @@ -3191,22 +3109,22 @@ index 17aa7676ab624440651850bbe5689f8a6c9dbeed..63049b0b4a4ae09e5925129dc363e43d protected void registerGoals() { + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(4, new Blaze.BlazeAttackGoal(this)); - this.goalSelector.addGoal(5, new MoveTowardsRestrictionGoal(this, 1.0D)); - this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D, 0.0F)); + this.goalSelector.addGoal(5, new MoveTowardsRestrictionGoal(this, 1.0)); + this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0, 0.0F)); 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 - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } public static AttributeSupplier.Builder createAttributes() { -- return Monster.createMonsterAttributes().add(Attributes.ATTACK_DAMAGE, 6.0D).add(Attributes.MOVEMENT_SPEED, (double)0.23F).add(Attributes.FOLLOW_RANGE, 48.0D); -+ return Monster.createMonsterAttributes().add(Attributes.ATTACK_DAMAGE, 6.0D).add(Attributes.MOVEMENT_SPEED, (double)0.23F).add(Attributes.FOLLOW_RANGE, 48.0D).add(Attributes.FLYING_SPEED, 0.6D); // Purpur +- return Monster.createMonsterAttributes().add(Attributes.ATTACK_DAMAGE, 6.0).add(Attributes.MOVEMENT_SPEED, 0.23F).add(Attributes.FOLLOW_RANGE, 48.0); ++ return Monster.createMonsterAttributes().add(Attributes.ATTACK_DAMAGE, 6.0).add(Attributes.MOVEMENT_SPEED, 0.23F).add(Attributes.FOLLOW_RANGE, 48.0).add(Attributes.FLYING_SPEED, 0.6D); // Purpur } @Override -@@ -106,6 +143,14 @@ public class Blaze extends Monster { +@@ -116,6 +153,13 @@ public class Blaze extends Monster { @Override protected void customServerAiStep() { @@ -3217,8 +3135,7 @@ index 17aa7676ab624440651850bbe5689f8a6c9dbeed..63049b0b4a4ae09e5925129dc363e43d + return; + } + // Purpur end -+ - --this.nextHeightOffsetChangeTick; + this.nextHeightOffsetChangeTick--; 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 @@ -3664,7 +3581,7 @@ index c135bc245f59a1af706f98b9d140dee77016b12f..3f886ffb0aa8591e4ca8324301ae9a8e 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 793c72bb7b86e404926085629121d6cad19a2740..198e3219e8f44eaea8ff1914c6c20efda172ff70 100644 +index a329395dd8ff2d5428de19018111373806fc8796..9f8c47bcaace9bd4cb276d0dc252f3d0f259a3af 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -15,6 +15,29 @@ public class Giant extends Monster { @@ -3862,7 +3779,7 @@ index fb84b35e34063075e69e00e430bc00e7c3b9d62c..4d50d10016a3b574d67bdfec5aee910c 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 2858ea5562d06c11e5c7337a2b123f9be7a3f62e..aad51022eac584fbc058c2b25e2bf1929fccca6f 100644 +index 2ae1e5d2b16322136983d6703b770bfc3602b6eb..6c4422adf858595a740f6f8758db18859dc33004 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 { @@ -3892,7 +3809,7 @@ index 2858ea5562d06c11e5c7337a2b123f9be7a3f62e..aad51022eac584fbc058c2b25e2bf192 + // Purpur end + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } @@ -70,11 +92,12 @@ public class MagmaCube extends Slime { } @@ -3901,8 +3818,8 @@ index 2858ea5562d06c11e5c7337a2b123f9be7a3f62e..aad51022eac584fbc058c2b25e2bf192 - protected void jumpFromGround() { + public void jumpFromGround() { // Purpur - protected -> public Vec3 vec3 = this.getDeltaMovement(); - float f = (float)this.getSize() * 0.1F; - this.setDeltaMovement(vec3.x, (double)(this.getJumpPower() + f), vec3.z); + float f = this.getSize() * 0.1F; + this.setDeltaMovement(vec3.x, this.getJumpPower() + f, vec3.z); this.hasImpulse = true; + this.actualJump = false; // Purpur } @@ -4422,7 +4339,7 @@ index 7618364e5373fe17cfe45a5a4ee9ab25e591581c..dd1a6fc505ce2214903dbe703bcabe7d 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 8185cef34b9300561a00f9e62b98f1aa818a3f5a..abd2c1accaa9b03fefab2d8c7f9132540ea9065e 100644 +index 207a649d737adff440bd3f7cba15b0dbca338a35..44006bcb7d70661a6990e3fc4375dd6da34517e0 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 { @@ -4606,10 +4523,10 @@ index f443006c1e32feee97b32312814e2447a50c45e2..b676f6c814d63e950af192a56ab5a4bf 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 a6af5ac9d09834940d3dd4c80b16450b90484edb..e5d3bf2e8934d97760eaf165a0ac930d51a3c884 100644 +index 0ee020848cdfd0c069f1e8d3a9516a339d82467c..6301985e0906a06f41030f7a90bc862907caf9c5 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 { +@@ -56,14 +56,33 @@ public class Vindicator extends AbstractIllager { super(type, world); } @@ -4638,9 +4555,9 @@ index a6af5ac9d09834940d3dd4c80b16450b90484edb..e5d3bf2e8934d97760eaf165a0ac930d this.goalSelector.addGoal(1, new Vindicator.VindicatorBreakDoorGoal(this)); this.goalSelector.addGoal(2, new AbstractIllager.RaiderOpenDoorGoal(this)); this.goalSelector.addGoal(3, new Raider.HoldGroundAttackGoal(this, 10.0F)); - this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, false)); + this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0, false)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers()); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Raider.class).setAlertOthers()); 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 @@ -4713,10 +4630,10 @@ index 20a65c11ededcd7170704b70118da6200151fbab..4235684e533e744bb1eb90a5cc69001e 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 11275a9ec6faa69c9f054683cb47312e443ba883..dc29e875c1e184c1c4553c127bb8c86dddf8c5ab 100644 +index 728f3dff42678ed48c8921ea0e960f48724a9183..f34803f4bebf2eafba483628b20784c2134002fa 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -69,6 +69,23 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -82,6 +82,23 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { this.xpReward = 5; } @@ -4740,7 +4657,7 @@ index 11275a9ec6faa69c9f054683cb47312e443ba883..dc29e875c1e184c1c4553c127bb8c86d @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -201,6 +218,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -242,6 +259,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @Override protected void customServerAiStep() { this.level().getProfiler().push("zoglinBrain"); @@ -4840,10 +4757,10 @@ index fbabbd0808304f5d0d12f987d00c9e43a89fb1c9..2121de85765d535effb3ef4e0c4a8732 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 9921b160fb21f72fbd28fe81ea66fbc3dc05f83f..1d54077a7ebb463270a03bb17c342ced8874f4c2 100644 +index 1299f93d4f983e6715e447add65df91ef9e9090a..42e56f0d6d1c5e913f9c9c4e0c53e4ca187967f1 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 -@@ -69,6 +69,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -92,6 +92,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { this.xpReward = 5; } @@ -4867,7 +4784,7 @@ index 9921b160fb21f72fbd28fe81ea66fbc3dc05f83f..1d54077a7ebb463270a03bb17c342ced @Override public boolean canBeLeashed(Player player) { return !this.isLeashed(); -@@ -132,7 +149,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -159,7 +176,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @Override protected void customServerAiStep() { this.level().getProfiler().push("hoglinBrain"); @@ -4914,10 +4831,10 @@ index 83d83e3f84bb6bd58761671c6cd4c8683545ff4c..015bb57c73c7b38622329fc3001b6369 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 e1be4a77fae0b9120781f460079269b85c993930..2d842c0dfce1c7e7229bd42b2a92c024a4162b68 100644 +index 1afd5245267866c498d4b0d90ca55cda2ede8ca9..0ec07be03e871caf5a30748f540cac8ce50f1f4b 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 { +@@ -63,6 +63,23 @@ public class PiglinBrute extends AbstractPiglin { this.xpReward = 20; } @@ -4939,9 +4856,9 @@ index e1be4a77fae0b9120781f460079269b85c993930..2d842c0dfce1c7e7229bd42b2a92c024 + // Purpur end + 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); + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } -@@ -86,6 +103,7 @@ public class PiglinBrute extends AbstractPiglin { +@@ -114,6 +131,7 @@ public class PiglinBrute extends AbstractPiglin { @Override protected void customServerAiStep() { this.level().getProfiler().push("piglinBruteBrain"); diff --git a/patches/server/0009-Configurable-entity-base-attributes.patch b/patches/server/0009-Configurable-entity-base-attributes.patch index 86296e9bb..9c9f762d1 100644 --- a/patches/server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0009-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 315254c0cb42a2610b24846cf76972d25d9ed843..d011f1ecc9bb81231c68c5710bd65bc1c44ccaad 100644 +index 75d1990cc33b06652ba0cdf5ee631594cf259d31..9ced09b01af013cd2e4e64e106dee147ae369dec 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -160,7 +160,7 @@ import org.bukkit.plugin.PluginManager; @@ -18,7 +18,7 @@ index 315254c0cb42a2610b24846cf76972d25d9ed843..d011f1ecc9bb81231c68c5710bd65bc1 private static final int CURRENT_LEVEL = 2; public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first setPositionRotation diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6bdbdac169 100644 +index 4d4b57d40d8bac8d666716b0f36e1af2ca7c1ef1..bf47cf511b5e3c0107354f289b740bd804b5f978 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -36,6 +36,11 @@ public class GlowSquid extends Squid { @@ -34,7 +34,7 @@ index 75c278b67ad2b78766efd8f89c4c2ca7eb7cdcb2..dc99e7f0e6f173c1313c0d5e9ea5dd6b 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 4621dd94e9346bdd2eeca1d17869ff99aede0077..781eefa21c958c28c35d2d9559d89da236ce9387 100644 +index 98907fee8d85e7b7dc66807a0717134db3a94c33..3c7c618dd9611485b81336ca4a5059fcb1e4f1ff 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -299,10 +299,10 @@ index ebfa162f172bdad7b17ce153fdee508748620fc0..fdf5651c7877313437ecd32914823d00 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 2b6efb46035c5695928643780bfbd5b5a2ed28e9..70b45c622a459ace397d4d54cd99e8ae7fc1ce65 100644 +index c737eea79621d565b5bbd28e22fa0731c3ed6068..5e6941abe1372ea4cba893de36ab20d2a3a42a21 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -94,6 +94,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -93,6 +93,11 @@ public class PolarBear extends Animal implements NeutralMob { } // Purpur end @@ -395,7 +395,7 @@ index c48ceed671e1804756d8a11208e5f7e5094a4bb1..35392365838bd412255777d1a53bc058 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 0ee9d5eeabb0352d0a92fa0106b7a3a834a9c146..f9db04ee35928d76dc504808a2acfca85295a6e6 100644 +index 423c67f6d0faac7e46bdbe7f5bc3076a687fbb73..43bd8c55368d0bb1dca3a16ea4e0b1d6452be0cd 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 { @@ -411,10 +411,10 @@ index 0ee9d5eeabb0352d0a92fa0106b7a3a834a9c146..f9db04ee35928d76dc504808a2acfca8 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 71234b258157579d3a47064e7e299bb7fb90908f..7d02e552a27632939bb9c40a62f4e0df7bd60bbc 100644 +index fe546baadc2e238667386c494359ddf904dd41e5..3d40df730780fcc91c3a352c7572e60458fc5bb0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -54,6 +54,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -77,6 +77,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder } // Purpur end @@ -427,7 +427,7 @@ index 71234b258157579d3a47064e7e299bb7fb90908f..7d02e552a27632939bb9c40a62f4e0df 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 4707f0d1c78d6080201c313717ef912d4805873d..511de848cb9cfed304fa59cb38205db4b71dd8eb 100644 +index 29788b801e1faba6d7671e64e280ff585842ed27..31ed37796a4c88ecf514f298631f37210daf929a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -103,6 +103,11 @@ public class Turtle extends Animal { @@ -561,7 +561,7 @@ index 41777079871eef2bb4d319f28c8f441d7f2607a1..24fb38499092d8cbee3818bf5c873a55 } 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 6a5fb18523545ccc788b09ab4fbee1b14a64bc63..365273173e37e74470a1cf511334ea8cb25f8302 100644 +index 5242059484fb5f407a2da2b0c01a8feeaf1c3a64..f623586530e9e7783653b95c8c30d07d5eea896f 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 @@ -22,6 +22,21 @@ public class Donkey extends AbstractChestedHorse { @@ -587,7 +587,7 @@ index 6a5fb18523545ccc788b09ab4fbee1b14a64bc63..365273173e37e74470a1cf511334ea8c 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 3e50581033e88e8eddcbd85bfa890cbe0b88a7e6..92339f5a07dcb6bf7eb1bce6d584464ebd8430b5 100644 +index 6503f68345d931ac73e8291add6ed108c10ceb60..5183ac5534b77230f04734264eadbb8d3f0ff7ef 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 @@ -47,6 +47,21 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -611,7 +611,7 @@ index 3e50581033e88e8eddcbd85bfa890cbe0b88a7e6..92339f5a07dcb6bf7eb1bce6d584464e + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 1c6be506804b9622c4d0094814939f894ca857df..34d87ab749a62c5d897b7bc66b116a801324b6a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -717,7 +717,7 @@ index c1d1321c75330231777adb4ff6e0ca604f3fab80..85e32d35cdfb7dd11b3c28146b9b71ea public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index cc19e9cc90789a5170d1cf3e004a3a452aad8b20..4835950272c2a95cbcbfe3423bb83997ec6ee2c1 100644 +index c1fd9363ef67dc2641a6ad37f4a20dd8ce5ec085..52eb412401d6843778ab8c4530e8bb3123a83a0b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -38,6 +38,21 @@ public class ZombieHorse extends AbstractHorse { @@ -740,7 +740,7 @@ index cc19e9cc90789a5170d1cf3e004a3a452aad8b20..4835950272c2a95cbcbfe3423bb83997 + } + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java index 7fb2c28b567c6c338a68bdc29d24cb652a4a15bf..074835d3e315eb78d318e81c5fd04e5e786e9127 100644 @@ -800,7 +800,7 @@ index 8fbfd134005c0813406fecbce8a918cd0376d03e..51ccbf3bd77bbcf77833b39fadc6c01f } else { 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 63049b0b4a4ae09e5925129dc363e43dbae23272..04226492a5655e4a3a9716590e2af7fc79560ad9 100644 +index 929074db505e0838a9b133228f81cad87bdab5fb..7b55851008f711a5968fcdf94c0ad18bcd6cf9ee 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -74,6 +74,11 @@ public class Blaze extends Monster { @@ -949,7 +949,7 @@ index 3f886ffb0aa8591e4ca8324301ae9a8eeac57ab4..edd3b7a855165eb090edb9ad95d36cdb 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 198e3219e8f44eaea8ff1914c6c20efda172ff70..2a30499fd6f4a1340f6911f0f7f079bcbe8576a3 100644 +index 9f8c47bcaace9bd4cb276d0dc252f3d0f259a3af..d3876553949821323953b7113c7bd4f83f71a18c 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,13 @@ public class Giant extends Monster { @@ -1022,7 +1022,7 @@ index 4d50d10016a3b574d67bdfec5aee910cede8ffc3..c00530db0eff302c14dd9c52d1d988cb 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 aad51022eac584fbc058c2b25e2bf1929fccca6f..b472309f97b24f1d7b97d8b6d464c479c2d602d5 100644 +index 6c4422adf858595a740f6f8758db18859dc33004..8cdce384f6d191231012788f27753f0f03753460 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -47,6 +47,26 @@ public class MagmaCube extends Slime { @@ -1050,7 +1050,7 @@ index aad51022eac584fbc058c2b25e2bf1929fccca6f..b472309f97b24f1d7b97d8b6d464c479 + } + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 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 98ced015ceb4f68364ff5ee6f7ee1a69251dbb04..6819acda60e783ee57dd8b9b5d27bc1e105425c3 100644 @@ -1241,7 +1241,7 @@ index dd1a6fc505ce2214903dbe703bcabe7d264fbe90..3f67ab84485737291aec531441d88b74 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); 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 abd2c1accaa9b03fefab2d8c7f9132540ea9065e..77d4d37cffe959031296614751961ca7c7400c31 100644 +index 44006bcb7d70661a6990e3fc4375dd6da34517e0..e1327ea96fe394b1c27dbe88c49596256e4e61d3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java @@ -38,6 +38,11 @@ public class Stray extends AbstractSkeleton { @@ -1289,10 +1289,10 @@ index b676f6c814d63e950af192a56ab5a4bf5f14a7d6..0dae7c87a9f61a7d8e493537e0aada78 protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return dimensions.height - 0.28125F; 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 e5d3bf2e8934d97760eaf165a0ac930d51a3c884..706458eeab0cea2fe0cdfe39717f639aa5d85608 100644 +index 6301985e0906a06f41030f7a90bc862907caf9c5..c5f21eeec60e77167970ed68eec0348912a62e0e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -75,6 +75,11 @@ public class Vindicator extends AbstractIllager { +@@ -73,6 +73,11 @@ public class Vindicator extends AbstractIllager { } // Purpur end @@ -1337,10 +1337,10 @@ index 4235684e533e744bb1eb90a5cc69001e43782bc2..afad65b86e762187d0779cfee2b0b108 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 dc29e875c1e184c1c4553c127bb8c86dddf8c5ab..1d862dd019b2d024f61cfc8956430d18d94b1ebf 100644 +index f34803f4bebf2eafba483628b20784c2134002fa..62d0c4dcb2992b665e473726a09d3fa457420395 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -86,6 +86,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -99,6 +99,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { } // Purpur end @@ -1424,10 +1424,10 @@ index 2121de85765d535effb3ef4e0c4a873238dd7576..9d1d8b5a3f2bac29f8058f68e2ded4d7 @Nullable 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 1d54077a7ebb463270a03bb17c342ced8874f4c2..9748b32692b14bffde1506e88149939c4ed25900 100644 +index 42e56f0d6d1c5e913f9c9c4e0c53e4ca187967f1..a45df0aeae94f408a24f55bc15c71627c3c95bc1 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 -@@ -86,6 +86,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -109,6 +109,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end @@ -1456,10 +1456,10 @@ index 015bb57c73c7b38622329fc3001b6369fa183cd1..b5e6a48192592e9bc5a7c0a2775e5d78 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 2d842c0dfce1c7e7229bd42b2a92c024a4162b68..04e54c241078e6cd6419a21ba1bf913fd3b413d1 100644 +index 0ec07be03e871caf5a30748f540cac8ce50f1f4b..dc70d4819fbc2aa5b6a026f2aff2f52bc836901c 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 -@@ -58,6 +58,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -80,6 +80,11 @@ public class PiglinBrute extends AbstractPiglin { } // Purpur end @@ -1469,7 +1469,7 @@ index 2d842c0dfce1c7e7229bd42b2a92c024a4162b68..04e54c241078e6cd6419a21ba1bf913f + } + 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); + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } 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 8e3e9bfe614057450ec771f72c9b1d7ea061d66e..8a864f236048e0c2b120f698439af652a8bcb0a8 100644 diff --git a/patches/server/0010-Barrels-and-enderchests-6-rows.patch b/patches/server/0010-Barrels-and-enderchests-6-rows.patch index cccb1f1c7..d0d27b999 100644 --- a/patches/server/0010-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0010-Barrels-and-enderchests-6-rows.patch @@ -108,44 +108,54 @@ index 4703f23316f82a1a942907b46d2d6dcb7d70ec37..162798f57a05b78121fa6c4fadf5adee this.activeChest = blockEntity; } diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -index ddca14f1224327a738415fb8b37398d8df0aa9c8..fe3236295790b9e250486835176cae810160c33a 100644 +index 384dbae11ea1c48bef82bfa30aa9867134fac4cf..506965665e16b14dd0873a4b0892d86ddbb3f7f6 100644 --- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -@@ -92,6 +92,34 @@ public class EnderChestBlock extends AbstractChestBlock i +@@ -92,7 +92,7 @@ public class EnderChestBlock extends AbstractChestBlock i EnderChestBlockEntity enderChestBlockEntity = (EnderChestBlockEntity)blockEntity; playerEnderChestContainer.setActiveChest(enderChestBlockEntity); - player.openMenu(new SimpleMenuProvider((syncId, inventory, playerx) -> { -+ // Purpur start -+ if (org.purpurmc.purpur.PurpurConfig.enderChestSixRows) { -+ if (org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) { -+ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity(); -+ if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) { -+ player.sixRowEnderchestSlotCount = 54; -+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.five")) { -+ player.sixRowEnderchestSlotCount = 45; -+ return ChestMenu.fiveRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.four")) { -+ player.sixRowEnderchestSlotCount = 36; -+ return ChestMenu.fourRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.three")) { -+ player.sixRowEnderchestSlotCount = 27; -+ return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.two")) { -+ player.sixRowEnderchestSlotCount = 18; -+ return ChestMenu.twoRows(syncId, inventory, playerEnderChestContainer); -+ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.one")) { -+ player.sixRowEnderchestSlotCount = 9; -+ return ChestMenu.oneRow(syncId, inventory, playerEnderChestContainer); -+ } -+ } -+ player.sixRowEnderchestSlotCount = -1; -+ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); -+ } -+ // Purpur end - return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer); - }, CONTAINER_TITLE)); + player.openMenu( +- new SimpleMenuProvider((syncId, inventory, playerx) -> ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer), CONTAINER_TITLE) ++ new SimpleMenuProvider((syncId, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(syncId, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer), CONTAINER_TITLE) // Purpur + ); player.awardStat(Stats.OPEN_ENDERCHEST); + PiglinAi.angerNearbyPiglins(player, true); +@@ -103,6 +103,35 @@ public class EnderChestBlock extends AbstractChestBlock i + } + } + ++ // Purpur start ++ private ChestMenu getEnderChestSixRows(int syncId, net.minecraft.world.entity.player.Inventory inventory, Player player, PlayerEnderChestContainer playerEnderChestContainer) { ++ if (org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) { ++ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity(); ++ if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) { ++ player.sixRowEnderchestSlotCount = 54; ++ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.five")) { ++ player.sixRowEnderchestSlotCount = 45; ++ return ChestMenu.fiveRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.four")) { ++ player.sixRowEnderchestSlotCount = 36; ++ return ChestMenu.fourRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.three")) { ++ player.sixRowEnderchestSlotCount = 27; ++ return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.two")) { ++ player.sixRowEnderchestSlotCount = 18; ++ return ChestMenu.twoRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.one")) { ++ player.sixRowEnderchestSlotCount = 9; ++ return ChestMenu.oneRow(syncId, inventory, playerEnderChestContainer); ++ } ++ } ++ player.sixRowEnderchestSlotCount = -1; ++ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); ++ } ++ // Purpur end ++ + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new EnderChestBlockEntity(pos, state); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2d989a3b5 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java diff --git a/patches/server/0011-Llama-API.patch b/patches/server/0011-Llama-API.patch index 7039475bf..9a6f7cb1b 100644 --- a/patches/server/0011-Llama-API.patch +++ b/patches/server/0011-Llama-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Llama API diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab156812b8 100644 +index 9ae94ae4ea74ff0fa7e22ff8527925c8b6b5a700..50622e300950b017b41a6f85643c8827a0113225 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java @@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -14,7 +14,7 @@ index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab public boolean canUse() { + if (!this.llama.shouldJoinCaravan) return false; // Purpur if (!this.llama.isLeashed() && !this.llama.inCaravan()) { - List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { + List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity -> { EntityType entityType = entity.getType(); @@ -71,6 +72,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -23,9 +23,9 @@ index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab + if (!this.llama.shouldJoinCaravan) return false; // Purpur if (this.llama.inCaravan() && this.llama.getCaravanHead().isAlive() && this.firstIsLeashed(this.llama, 0)) { double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); - if (d > 676.0D) { + if (d > 676.0) { 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 8c8c135e9bc707ae8e2aad249302109023f6fea3..7b329fa3af99742d83eca7825e2da3b6e55431ee 100644 +index 34d87ab749a62c5d897b7bc66b116a801324b6a7..b9b66f22ef39cb38bfb4dcbf4e73a0a7da596660 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 @@ -75,6 +75,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder -Date: Thu, 26 Mar 2020 19:46:44 -0500 +Date: Fri, 12 Apr 2024 15:40:12 -0700 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 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db039a7f9c 100644 +index 5e6941abe1372ea4cba893de36ab20d2a3a42a21..5db17e4fc120e32e66a3a5c6313471ce5b090346 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -99,6 +99,27 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -98,6 +98,27 @@ public class PolarBear extends Animal implements NeutralMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.polarBearMaxHealth); } @@ -36,7 +36,7 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { -@@ -107,7 +128,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -106,7 +127,7 @@ public class PolarBear extends Animal implements NeutralMob { @Override public boolean isFood(ItemStack stack) { @@ -45,7 +45,7 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db } @Override -@@ -117,6 +138,12 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -116,6 +137,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()); @@ -55,11 +55,11 @@ index 70b45c622a459ace397d4d54cd99e8ae7fc1ce65..0377d40198b88512b1f204a31367c2db + 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)); + } + // Purpur end - this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); - this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); + this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); + this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0)); 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 532e25d00128c62c6eae4d0076dc0a3bd16c5b4e..0d6f0e69093594fffcdb616d319be1b416909a64 100644 +index d084d5ef20b2fb4d3b5479cb51003fb82a0358fc..ae6383c3d8435caba2bae551f36e3562e724361a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -960,6 +960,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0033-Cat-spawning-options.patch b/patches/server/0033-Cat-spawning-options.patch index 3ca10d95e..dd5a15479 100644 --- a/patches/server/0033-Cat-spawning-options.patch +++ b/patches/server/0033-Cat-spawning-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cat spawning options diff --git a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b6631689f1b8 100644 +index 5d1610eddcaf0cf65c726a5438b42e53bab85332..5665aa461f8c943bd7373df28d7d152251cce431 100644 --- a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java +++ b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -@@ -30,7 +30,7 @@ public class CatSpawner implements CustomSpawner { +@@ -28,7 +28,7 @@ public class CatSpawner implements CustomSpawner { if (this.nextTick > 0) { return 0; } else { @@ -17,41 +17,36 @@ index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b663 Player player = world.getRandomPlayer(); if (player == null) { return 0; -@@ -63,11 +63,15 @@ public class CatSpawner implements CustomSpawner { - } +@@ -62,8 +62,12 @@ public class CatSpawner implements CustomSpawner { private int spawnInVillage(ServerLevel world, BlockPos pos) { -- int i = 48; + int i = 48; +- if (world.getPoiManager().getCountInRange(entry -> entry.is(PoiTypes.HOME), pos, 48, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { +- List list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(48.0, 8.0, 48.0)); + // Purpur start + int range = world.purpurConfig.catSpawnVillageScanRange; + if (range <= 0) return 0; -+ - if (world.getPoiManager().getCountInRange((entry) -> { - return entry.is(PoiTypes.HOME); -- }, pos, 48, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { -- List list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(48.0D, 8.0D, 48.0D)); -+ }, pos, range, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { -+ List list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(range, 8.0D, range)); -+ // Purpur end ++ if (world.getPoiManager().getCountInRange(entry -> entry.is(PoiTypes.HOME), pos, range, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { ++ List list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range)); ++ // Purpur end if (list.size() < 5) { return this.spawnCat(pos, world); } -@@ -77,8 +81,11 @@ public class CatSpawner implements CustomSpawner { - } +@@ -74,7 +78,11 @@ public class CatSpawner implements CustomSpawner { private int spawnInHut(ServerLevel world, BlockPos pos) { -- int i = 16; -- List list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(16.0D, 8.0D, 16.0D)); + int i = 16; +- List list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(16.0, 8.0, 16.0)); + // Purpur start + int range = world.purpurConfig.catSpawnSwampHutScanRange; + if (range <= 0) return 0; -+ List list = world.getEntitiesOfClass(Cat.class, (new AABB(pos)).inflate(range, 8.0D, range)); ++ List list = world.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range)); + // Purpur end return list.size() < 1 ? this.spawnCat(pos, world) : 0; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ba7f378b9b0c791dd77862439f310a6653cccf30..6102535823eab8862c23919f20a8062f9f750eb6 100644 +index 6649787fc15ca06ec2d4e7ac7b0ff061c4d4de82..c9dbbe9dde5b463bdde68604d6e5b1c2902d57fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -272,6 +272,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0051-Implement-infinite-liquids.patch b/patches/server/0051-Implement-infinite-liquids.patch index 2f4d03016..a2c5974bd 100644 --- a/patches/server/0051-Implement-infinite-liquids.patch +++ b/patches/server/0051-Implement-infinite-liquids.patch @@ -49,10 +49,10 @@ index 3bb4a9a1a6249e8ba2de237f801210e7f4fd5825..4c230136d832d50ae16ffa037b0b30ff protected boolean canConvertToSource(Level world) { return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java -index cde93efaecd42b9081405638af3ba91cb5e184c9..c664fd77dd865037293a3e86699fd1fa6b703882 100644 +index ba34aea9db5c3af56f3c7e84424ec91988a2370e..7987279e17db64587aa6d126b46359ccd06f109d 100644 --- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java +++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java -@@ -64,6 +64,13 @@ public abstract class WaterFluid extends FlowingFluid { +@@ -74,6 +74,13 @@ public abstract class WaterFluid extends FlowingFluid { return world.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); } diff --git a/patches/server/0055-Add-canSaveToDisk-to-Entity.patch b/patches/server/0055-Add-canSaveToDisk-to-Entity.patch index 77dbb304e..e20c9a2b9 100644 --- a/patches/server/0055-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0055-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 7fe6f44d25790cd222b700cf5ce1d5f36d89e650..95baff79c07f1fdb1f2c2799527c0d245790cd60 100644 +index a01d19ab227621ffa36e9c1bb840f452a856eaa8..10a0f2b4968600f088677103b0bfbe5f69aa4428 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -558,6 +558,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -20,7 +20,7 @@ index 7fe6f44d25790cd222b700cf5ce1d5f36d89e650..95baff79c07f1fdb1f2c2799527c0d24 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -index 41261b72bfa5157139a5384b6a0b66b719ec02b9..8abc8a28ae74dc78f53b9fb38fb31b47a0a42d94 100644 +index f5e1aa316a90bf2cd9c997b76830096d4fbbee42..c37b3486dcc75c5c78d605afeff2e3f723940636 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java @@ -117,6 +117,11 @@ public class WitherSkull extends AbstractHurtingProjectile { @@ -36,10 +36,10 @@ index 41261b72bfa5157139a5384b6a0b66b719ec02b9..8abc8a28ae74dc78f53b9fb38fb31b47 public boolean isPickable() { return false; diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -index 23dc37ff1f92951817864963bf93220d5aae91bb..af563ffb67c43b50555951fe1b5e4320d429a7f1 100644 +index 995fbfa225efe40274c20608b9b30b8afa847698..c70f04cdee1e8ba6f8a15c9e38edbe0023b5ab96 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -112,6 +112,7 @@ public class EntityStorage implements EntityPersistentStorage { +@@ -111,6 +111,7 @@ public class EntityStorage implements EntityPersistentStorage { ListTag listTag = new ListTag(); final java.util.Map, Integer> savedEntityCounts = new java.util.HashMap<>(); // Paper - Entity load/save limit per chunk entities.forEach((entity) -> { // diff here: use entities parameter diff --git a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch index 04a64d90b..21a17932f 100644 --- a/patches/server/0058-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch @@ -39,10 +39,10 @@ index 1ad126d992d95062a3db08374db7a927f23a0cac..38e097807c5034c077a10d3af08bf348 return this.tag == null ? 0 : this.tag.getInt("Damage"); } diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index ecf640b00007a386290f8dfe9935a8aa610079fd..2048899f8e4c8211e8dde0d11148d647678009fa 100644 +index 0d89e2f944e7017cfdac96f8c91f4568e481ff02..496c47eb3b13ba620fde1a2bc96f886c5b01e1de 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -278,6 +278,29 @@ public class EnchantmentHelper { +@@ -266,6 +266,29 @@ public class EnchantmentHelper { return getItemEnchantmentLevel(Enchantments.CHANNELING, stack) > 0; } @@ -70,8 +70,8 @@ index ecf640b00007a386290f8dfe9935a8aa610079fd..2048899f8e4c8211e8dde0d11148d647 + // Purpur end + @Nullable - public static Map.Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { - return getRandomItemWith(enchantment, entity, (stack) -> { + public static Entry getRandomItemWith(Enchantment enchantment, LivingEntity entity) { + return getRandomItemWith(enchantment, entity, stack -> true); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 76c1cfc35b598eab2ca27656feeb17f79dde7e00..6705d722e1abe678a5cb90503904dc7888bf55ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0059-Add-5-second-tps-average-in-tps.patch b/patches/server/0059-Add-5-second-tps-average-in-tps.patch index 85b3adc4f..d18374a3c 100644 --- a/patches/server/0059-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0059-Add-5-second-tps-average-in-tps.patch @@ -18,7 +18,7 @@ index 039a86034928a5eb7aaa2d7ca76a7bddcca346bd..308f67d0616e2d6bb135258f1fda53cc } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 4c61c1dd393ac13da2f0f2b2c07db3070a172e02..87990fd0cb3637779c9750fcc76890dd92873ddd 100644 +index f541b9e78f365518761fd8d3460277d457d769c0..ea07433bc4ab7ee032cf4eef5190ab932079c84f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -303,7 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); - } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.wasTouchingWater || !this.squid.hasMovementVector()) { + } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.isInWater() || !this.squid.hasMovementVector()) { // Purpur - float f = this.squid.getRandom().nextFloat() * ((float)Math.PI * 2F); + float f = this.squid.getRandom().nextFloat() * (float) (Math.PI * 2); float g = Mth.cos(f) * 0.2F; float h = -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 6950c4f5b1b0fd203c9b7adf92d13a321a8c5af1..de43787965c6d45d398be47988fba31dc12e7032 100644 +index 462af0111df5e245bf705f46585924e57a7217cc..7fe8d50f7cf314477d3877826deaed07feabb4b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -902,10 +902,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch index 27391656c..de636690f 100644 --- a/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch +++ b/patches/server/0097-Allow-infinite-and-mending-enchantments-together.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Allow infinite and mending enchantments together diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -index 518d85a13c37a2f7d32ca0718323181048559986..2c4ce164ab3011f372ff1719c8d4a3331d8db55f 100644 +index 04c39359585d909dedbdfd78f6cbdc06b926607a..01796071135d27e0b8801f585a6d96b8f3a31f6c 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java +++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java @@ -19,6 +19,6 @@ public class ArrowInfiniteEnchantment extends Enchantment { @Override public boolean checkCompatibility(Enchantment other) { -- return other instanceof MendingEnchantment ? false : super.checkCompatibility(other); -+ return other instanceof MendingEnchantment ? org.purpurmc.purpur.PurpurConfig.allowInfinityMending : super.checkCompatibility(other); +- return !(other instanceof MendingEnchantment) && super.checkCompatibility(other); ++ return !(other instanceof MendingEnchantment) && super.checkCompatibility(other) || other instanceof MendingEnchantment && org.purpurmc.purpur.PurpurConfig.allowInfinityMending; // Purpur } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0102-Make-entity-breeding-times-configurable.patch b/patches/server/0102-Make-entity-breeding-times-configurable.patch index 7a3f7aef3..a01051acb 100644 --- a/patches/server/0102-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0102-Make-entity-breeding-times-configurable.patch @@ -220,10 +220,10 @@ index 77147698154dfa6221a979ba170671d60da048ff..d858d4c94fb17d14367672813b506aea protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 0377d40198b88512b1f204a31367c2db039a7f9c..6eefdf7de7edee63b14bffc60557e9779312270c 100644 +index 5db17e4fc120e32e66a3a5c6313471ce5b090346..545e0bfcd602752ad514443917f3015a09a4adcc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -120,6 +120,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -119,6 +119,11 @@ public class PolarBear extends Animal implements NeutralMob { } } @@ -268,7 +268,7 @@ index 1d69558cccc6add5f02f1ff070c985bd5ec406c0..df7deec204ebf99afdbfe49f9a113857 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 511de848cb9cfed304fa59cb38205db4b71dd8eb..eb1af0926c1c8990602ba4f98cec45d6a0a839aa 100644 +index 31ed37796a4c88ecf514f298631f37210daf929a..ccb1ed3f9c3a15489a715e684c0f15d2e67b556f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -108,6 +108,11 @@ public class Turtle extends Animal { @@ -331,10 +331,10 @@ index 74ca2442008b0dea9f9762bbec8d6de1390f2582..baca84088350c82569fb7969136c65bb @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 156fd7b01853f4ad50235646a15893bb03d631b2..3be70e054c658d34c4aa598ff70c63fa2cff7982 100644 +index 709a5b786b56b92e00e25fbc9cf7ac07f093c5a9..907cdc32c30291f5668c806b874da0fbe0754738 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -138,6 +138,10 @@ public class Frog extends Animal implements VariantHolder { +@@ -163,6 +163,10 @@ public class Frog extends Animal implements VariantHolder { } // Purpur end @@ -362,7 +362,7 @@ index 961f808caa60aba70075572161bcb91cd7201008..0282498c7375a73b6982efb02f3cf321 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 365273173e37e74470a1cf511334ea8cb25f8302..6932d0eafbeca9de80728c6b0ae42340d2297ad0 100644 +index f623586530e9e7783653b95c8c30d07d5eea896f..5b0b7c6bcd01d86552f1967489c5538780b69525 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 @@ -37,6 +37,11 @@ public class Donkey extends AbstractChestedHorse { @@ -378,7 +378,7 @@ index 365273173e37e74470a1cf511334ea8cb25f8302..6932d0eafbeca9de80728c6b0ae42340 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 92339f5a07dcb6bf7eb1bce6d584464ebd8430b5..0251ded48eb5bdf96f0e67f6456aa15909c8a4ff 100644 +index 5183ac5534b77230f04734264eadbb8d3f0ff7ef..9ed68d07590b6371b6a6ffdd0be39d7a3fa41fd4 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 @@ -62,6 +62,11 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -392,7 +392,7 @@ index 92339f5a07dcb6bf7eb1bce6d584464ebd8430b5..0251ded48eb5bdf96f0e67f6456aa159 + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 b9b66f22ef39cb38bfb4dcbf4e73a0a7da596660..e11fc274f893d501235422839301a5128268199d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -458,7 +458,7 @@ index 85e32d35cdfb7dd11b3c28146b9b71eae2b5c685..0a6cf9f0f16882c8042a333852699129 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 4835950272c2a95cbcbfe3423bb83997ec6ee2c1..aaec706b7eaa6afdf7959e6dd53cc39344bb97df 100644 +index 52eb412401d6843778ab8c4530e8bb3123a83a0b..625fc14d6ea6049968c99931c412b36cbec92be1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -53,6 +53,11 @@ public class ZombieHorse extends AbstractHorse { @@ -471,7 +471,7 @@ index 4835950272c2a95cbcbfe3423bb83997ec6ee2c1..aaec706b7eaa6afdf7959e6dd53cc393 + } + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java index 074835d3e315eb78d318e81c5fd04e5e786e9127..4d1071546f523c63b9c981e90a09393e9e4400fa 100644 @@ -506,10 +506,10 @@ index 9b853fd05a3a851cb08d7f849b51f2b220780982..10136a5062d154456c962e7d1a99c2de BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable(); 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 9748b32692b14bffde1506e88149939c4ed25900..fae14f6ab139e7d7a0e8625488c472f0d0c1a1e2 100644 +index a45df0aeae94f408a24f55bc15c71627c3c95bc1..89b108a248509a72ddd81fdaf70053931f487368 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 -@@ -91,6 +91,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -114,6 +114,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.hoglinMaxHealth); } diff --git a/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch index 52c243b50..b7a86d3ec 100644 --- a/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0103-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -19,7 +19,7 @@ index 8cb248a185d880bf82ea4746341fe3db5dc89459..aca5e7a2b0eab93c613b03834509366f } diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -index 80303f9466b8c7097151be313afc9a383693d18a..e5b7598a5613a8281a991e42af5b950bcc2995ca 100644 +index c34701f95580e4cf45fe086115563127432a28c5..2363d9eaad655389c7b7d67d545ef8025f550431 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java @@ -268,7 +268,13 @@ public class ItemFrame extends HangingEntity { @@ -38,11 +38,11 @@ index 80303f9466b8c7097151be313afc9a383693d18a..e5b7598a5613a8281a991e42af5b950b if (!itemstack.isEmpty()) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -index 03c065d0ad97d29f3586ba2bf3cd207b867ed634..62cdc36a21c0203ed98d2946a1efdf549a5ca3ea 100644 +index 10ee43de05d9f4e0ab980ee5069fe59c0f137403..af07901daaf6a0e5cd7e4b1e07fb491566807932 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java +++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java -@@ -159,7 +159,13 @@ public class Painting extends HangingEntity implements VariantHolder { +@@ -61,6 +61,12 @@ public class TradeWithVillager extends Behavior { throwHalfStack(entity, ImmutableSet.of(Items.WHEAT), villager); } @@ -90,10 +90,10 @@ index 3af715e2f3f3949af614a8fcebbc4a835d48ca49..ade1e411ea1f3b4c9a417265e77b0d68 throwHalfStack(entity, this.trades, villager); } diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -index cd7a90ec1073b2b452ca70decefe6a594445003b..47672e48c1cae73cffe532d622b296343fc12ef0 100644 +index d2917f9b215919890f28b513601863ccaced17c7..58338e240079f2de1669e8c2ce839451511feafd 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -@@ -30,8 +30,13 @@ public class VillagerGoalPackages { +@@ -49,8 +49,13 @@ public class VillagerGoalPackages { } public static ImmutableList>> getWorkPackage(VillagerProfession profession, float speed) { @@ -109,7 +109,7 @@ index cd7a90ec1073b2b452ca70decefe6a594445003b..47672e48c1cae73cffe532d622b29634 } else { workAtPoi = new WorkAtPoi(); diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java -index cb1d91f9fe98f21c2afbe3894dfd9bca3bdd3ba6..d2703432af207c74ea8d298a784329c3219d2f13 100644 +index a0e0692d17760f440fe81d52887284c787e562db..ab9bebc07b5228dbc0d3ba4b0f7d1bbe41814c9b 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java @@ -22,6 +22,13 @@ public class SecondaryPoiSensor extends Sensor { @@ -161,18 +161,18 @@ index 976388612d64cd137b18870119928cbd45dfd2a4..430e660f74ee523d0bb98e21784f3215 }); } diff --git a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java b/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java -index ac70c2c03241e73943bd517a8c69dd05e0873634..0318663a824d2a9515f867a075d148c3fcb1a907 100644 +index 1316f4475802e17039800cc6128e1b065328beb7..d02e2d1aceac651e06a3a3698b7ac64dd30d4b12 100644 --- a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java +++ b/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java -@@ -26,7 +26,7 @@ public record VillagerProfession(String name, Predicate> heldJob +@@ -31,7 +31,7 @@ public record VillagerProfession( public static final VillagerProfession ARMORER = register("armorer", PoiTypes.ARMORER, SoundEvents.VILLAGER_WORK_ARMORER); public static final VillagerProfession BUTCHER = register("butcher", PoiTypes.BUTCHER, SoundEvents.VILLAGER_WORK_BUTCHER); public static final VillagerProfession CARTOGRAPHER = register("cartographer", PoiTypes.CARTOGRAPHER, SoundEvents.VILLAGER_WORK_CARTOGRAPHER); - public static final VillagerProfession CLERIC = register("cleric", PoiTypes.CLERIC, SoundEvents.VILLAGER_WORK_CLERIC); + public static final VillagerProfession CLERIC = register("cleric", PoiTypes.CLERIC, ImmutableSet.of(Items.NETHER_WART), ImmutableSet.of(Blocks.SOUL_SAND), SoundEvents.VILLAGER_WORK_CLERIC); // Purpur - public static final VillagerProfession FARMER = register("farmer", PoiTypes.FARMER, ImmutableSet.of(Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT_SEEDS, Items.BONE_MEAL), ImmutableSet.of(Blocks.FARMLAND), SoundEvents.VILLAGER_WORK_FARMER); - public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); - public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); + public static final VillagerProfession FARMER = register( + "farmer", + PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index c034b4686a1f5c67daef7ece163b92f54c6813d4..aebeb25fcb6b9a72ad52d249f8df794c3f5cce11 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0121-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 99% rename from patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0121-Add-mobGriefing-bypass-to-everything-affected.patch index 8c2093783..3c69b3f74 100644 --- a/patches/server/0122-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0121-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 02be3c960bc89464b589a557d4269fce8fb88766..0461debc992ad7812a28ea73f3e18d5c0c22f700 100644 +index 708b01fa5a86e736fcb110d1a5c0efafde600964..787a2d1b8c887e17f9f9565c292c585e996ca1d2 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1818,7 +1818,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch deleted file mode 100644 index 3aa798929..000000000 --- a/patches/server/0121-Fix-rotating-UP-DOWN-CW-and-CCW.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Wed, 6 Jan 2021 02:19:29 -0600 -Subject: [PATCH] Fix rotating UP/DOWN CW and CCW - - -diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java -index 392406722b0a040c1d41fdc1154d75d39f6e9c86..b805e57d5a67d77d226cd8154e970050e2e8ef4a 100644 ---- a/src/main/java/net/minecraft/core/Direction.java -+++ b/src/main/java/net/minecraft/core/Direction.java -@@ -253,6 +253,12 @@ public enum Direction implements StringRepresentable { - case EAST: - var10000 = SOUTH; - break; -+ // Purpur start -+ case UP: -+ return UP; -+ case DOWN: -+ return DOWN; -+ // Purpur end - default: - throw new IllegalStateException("Unable to get Y-rotated facing of " + this); - } -@@ -365,6 +371,12 @@ public enum Direction implements StringRepresentable { - case EAST: - var10000 = NORTH; - break; -+ // Purpur start -+ case UP: -+ return UP; -+ case DOWN: -+ return DOWN; -+ // Purpur end - default: - throw new IllegalStateException("Unable to get CCW facing of " + this); - } diff --git a/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 94% rename from patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch index aec5797be..2fa0f4ba4 100644 --- a/patches/server/0123-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0122-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -9,7 +9,7 @@ Normally, the sounds will only play when the block directly above is air. With this patch enabled, players can place any block above the Note Block and it will still work. diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -index ff16075fbfe664c73a46bc4b002450867974114e..604053c7b5b2b7f2f1666baa3e0ce5acf3b37e46 100644 +index a541dc3a6e373b30fff0abf5305e77854c190f10..ac88cb949808752a340637ffcb9d7256b7d09478 100644 --- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java @@ -94,7 +94,7 @@ public class NoteBlock extends Block { @@ -22,7 +22,7 @@ index ff16075fbfe664c73a46bc4b002450867974114e..604053c7b5b2b7f2f1666baa3e0ce5ac // 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 1ee8dfb7d6efea66293cfd8059b8a84a77999fb2..647b58652a87d1d1b4b022853052ea19afa80152 100644 +index 6fbc12411573bbc4794319d41655a1e18ab62768..81b64e25046f212d48a729726758464bb9e42e7f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,6 +118,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch b/patches/server/0123-Add-EntityTeleportHinderedEvent.patch similarity index 98% rename from patches/server/0124-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0123-Add-EntityTeleportHinderedEvent.patch index 7b66353a3..df326836f 100644 --- a/patches/server/0124-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0123-Add-EntityTeleportHinderedEvent.patch @@ -74,7 +74,7 @@ index 8be3d696f6401189406032dd8d45dc747f546df5..4997f120aa9877c199fbcaa0c2f65226 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 74599d29538b7072464d3bb16b6356da09513d21..61348dfaab2fe3da35ae3195b7224e4b239dddd8 100644 +index 85d154f18e240cac77e023b4b5983ad7a95912b5..cac42202295b16de0466216f64be4fdf30929a7e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -253,6 +253,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -89,7 +89,7 @@ index 74599d29538b7072464d3bb16b6356da09513d21..61348dfaab2fe3da35ae3195b7224e4b } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index bcf3393ad12a70eea0e1b24f69fac15b08af32fb..f74e632f6be8ab2c7bdf9f5ba2ad2a2a0ef4d14e 100644 +index 5cb6572563bad1ef5ed755f94c5d0a854867406f..aad02ebc0df97e6e7024add8fce149b54124a58b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1356,6 +1356,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0125-Farmland-trampling-changes.patch b/patches/server/0124-Farmland-trampling-changes.patch similarity index 94% rename from patches/server/0125-Farmland-trampling-changes.patch rename to patches/server/0124-Farmland-trampling-changes.patch index 66bbf3c24..a1838aeae 100644 --- a/patches/server/0125-Farmland-trampling-changes.patch +++ b/patches/server/0124-Farmland-trampling-changes.patch @@ -12,7 +12,7 @@ necessary to trample in the first place. Feather Falling 1 requires you to fall over 3+ blocks to trample. FF 2 requires 4+, etc. diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index bcef88bf7e9d4fa09c4ebec26464b5bfb96d865d..5c93cf7f97ecf4fba2c905b293ca7d21d1424f30 100644 +index e9ab88a5c68565f2245b3397edcffb0544a29fea..00a6aa924e47e18ae80b57e9fe1d38e2de15dd72 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -125,12 +125,20 @@ public class FarmBlock extends Block { @@ -37,7 +37,7 @@ index bcef88bf7e9d4fa09c4ebec26464b5bfb96d865d..5c93cf7f97ecf4fba2c905b293ca7d21 if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 68a3f2be0b4d99041dcdb9e37c0e1dbcb9c1ae87..87daca07c8f22475921fb8ee968e3d5bfbb0a41c 100644 +index 9f2e762af41f422cef9937896427332d06d545e9..67b147b5d725f354149cc715102ec8fc879452e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -457,10 +457,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0126-Movement-options-for-armor-stands.patch b/patches/server/0125-Movement-options-for-armor-stands.patch similarity index 98% rename from patches/server/0126-Movement-options-for-armor-stands.patch rename to patches/server/0125-Movement-options-for-armor-stands.patch index 5436c6ebf..490fc8d94 100644 --- a/patches/server/0126-Movement-options-for-armor-stands.patch +++ b/patches/server/0125-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 ca0719307e4d50b3dcfe13195f1c1e680b00350c..7380008f1bd25eb459e5875f753015593135486f 100644 +index 047c4111d247cea4f203df1a8b11ca5913d513c1..53a695f5425717a47f47ca4585b9b79847ab4a47 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1885,7 +1885,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0127-Fix-stuck-in-portals.patch b/patches/server/0126-Fix-stuck-in-portals.patch similarity index 94% rename from patches/server/0127-Fix-stuck-in-portals.patch rename to patches/server/0126-Fix-stuck-in-portals.patch index 3282b813c..5cd17834b 100644 --- a/patches/server/0127-Fix-stuck-in-portals.patch +++ b/patches/server/0126-Fix-stuck-in-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a30732576b86bcf9c56e7d0ced8eb8490af13515..e76d1a202bea3dd94cbdbdfca9b052ca1db9142f 100644 +index 8c7333578d0fa28a1ebdd11e768e51a85bed725e..b7fedc1eb9f3d94cba8ac9d7da72fff03af723f0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1271,6 +1271,7 @@ public class ServerPlayer extends Player { @@ -17,7 +17,7 @@ index a30732576b86bcf9c56e7d0ced8eb8490af13515..e76d1a202bea3dd94cbdbdfca9b052ca // 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 7380008f1bd25eb459e5875f753015593135486f..79f6b204668a508d2afd305f520c413f9f5fa8f1 100644 +index 53a695f5425717a47f47ca4585b9b79847ab4a47..09d131178fb6428ba65cd4f08a5badb8693be626 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3164,12 +3164,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch similarity index 98% rename from patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch index 57d318bda..4b99e223d 100644 --- a/patches/server/0128-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0127-Toggle-for-water-sensitive-mob-damage.patch @@ -5,7 +5,7 @@ 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 19f95ddb2fa9dd264947a8b0033dd7437ee66c7f..d04e48d6a0a6dc7825a3e3d4cf854e294a75d19c 100644 +index 1330c4a4d9ff347e62a284eb8b71c107d87baf83..d5bcc6e678aec21da855eea805a58a965ef5edee 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -46,6 +46,11 @@ public class GlowSquid extends Squid { @@ -254,10 +254,10 @@ index d858d4c94fb17d14367672813b506aea9e2e4ee1..f32cc2884696db956e10d350f9737602 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); 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 6eefdf7de7edee63b14bffc60557e9779312270c..e03c84575360a65425d7ec375ea9bc17e33bdddb 100644 +index 545e0bfcd602752ad514443917f3015a09a4adcc..a1747c6495286dfa13543d698d00d4cf410f74c1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -125,6 +125,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -124,6 +124,11 @@ public class PolarBear extends Animal implements NeutralMob { return this.level().purpurConfig.polarBearBreedingTicks; } @@ -347,7 +347,7 @@ index 1d70a108293a61b7813b70cc9ce600a3e7b167d5..d46ab4d56e4c34b4dbe7a3df0785ab87 @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 3166987e324c37a07b8c6b8cc78443a1022b9670..fb6fd5e00053ae8bae1f225ffd57fac787fdc2d5 100644 +index 65d0e602a9cab5d51d1a27f690524ddad72bd2a5..ad2a3e593d2376556ca44ebf4539efe7382e1483 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -90,6 +90,11 @@ public class Squid extends WaterAnimal { @@ -363,10 +363,10 @@ index 3166987e324c37a07b8c6b8cc78443a1022b9670..fb6fd5e00053ae8bae1f225ffd57fac7 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 7d02e552a27632939bb9c40a62f4e0df7bd60bbc..b16d075581a352714f86f1b87805f24c9e336aa3 100644 +index 3d40df730780fcc91c3a352c7572e60458fc5bb0..9c860b3091c991b0c1447860311097a5fc1df685 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -59,6 +59,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -82,6 +82,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.tropicalFishMaxHealth); } @@ -379,7 +379,7 @@ index 7d02e552a27632939bb9c40a62f4e0df7bd60bbc..b16d075581a352714f86f1b87805f24c 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 eb1af0926c1c8990602ba4f98cec45d6a0a839aa..a8102248bf5dc1b5c7659c42239b8d418e842aac 100644 +index ccb1ed3f9c3a15489a715e684c0f15d2e67b556f..315006bdb344bb52a077c49a96c7712a33fbb0eb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -113,6 +113,11 @@ public class Turtle extends Animal { @@ -443,7 +443,7 @@ index 0282498c7375a73b6982efb02f3cf3215f4211b0..5b3126168e9406f6cbd0607b6b7cc2de 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 6932d0eafbeca9de80728c6b0ae42340d2297ad0..af4bac165cbc39fb6959983a1116a6fb65af0ecb 100644 +index 5b0b7c6bcd01d86552f1967489c5538780b69525..92fccfde550f4a01f860e3bcfcf953d3e6ae02e3 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 @@ -42,6 +42,11 @@ public class Donkey extends AbstractChestedHorse { @@ -459,7 +459,7 @@ index 6932d0eafbeca9de80728c6b0ae42340d2297ad0..af4bac165cbc39fb6959983a1116a6fb 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 0251ded48eb5bdf96f0e67f6456aa15909c8a4ff..f8dbea402f723bf38d7ab3f2468d1b02b7124560 100644 +index 9ed68d07590b6371b6a6ffdd0be39d7a3fa41fd4..13c2fe236661c42b5b45e2870d0cb59a890196cd 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 @@ -67,6 +67,11 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -473,7 +473,7 @@ index 0251ded48eb5bdf96f0e67f6456aa15909c8a4ff..f8dbea402f723bf38d7ab3f2468d1b02 + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 e11fc274f893d501235422839301a5128268199d..fb2b0ebd9314ab7fc911e842767bd60b1db92b96 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -539,7 +539,7 @@ index 0a6cf9f0f16882c8042a333852699129402f75f2..a3c80184abcc2d884b692b90d267ab33 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index aaec706b7eaa6afdf7959e6dd53cc39344bb97df..dcc1d71c2eeea48669651165868899ba4a797d48 100644 +index 625fc14d6ea6049968c99931c412b36cbec92be1..78c6077f3909e29a7f51f22d4f6bdecd7144f598 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -58,6 +58,11 @@ public class ZombieHorse extends AbstractHorse { @@ -552,7 +552,7 @@ index aaec706b7eaa6afdf7959e6dd53cc39344bb97df..dcc1d71c2eeea48669651165868899ba + } + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } 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 39cf974313c7c0bdcd6599c6c8bec450efe0277a..0ce3acdc0bc72bba3b59d480e7e4135b3d794fca 100644 @@ -587,7 +587,7 @@ index 3cc47b0e05621c913a3e8d04c653bafab4a86744..db5a8b93b9cefca4566d3abc2b4c55d4 protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); 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 04226492a5655e4a3a9716590e2af7fc79560ad9..eae0511698f383e11a0083c2b845479755f114f7 100644 +index 7b55851008f711a5968fcdf94c0ad18bcd6cf9ee..e8427b486efdea67079a40e2e001c0a3401711b2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -33,7 +33,7 @@ public class Blaze extends Monster { @@ -599,7 +599,7 @@ index 04226492a5655e4a3a9716590e2af7fc79560ad9..eae0511698f383e11a0083c2b8454797 this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); -@@ -143,7 +143,7 @@ public class Blaze extends Monster { +@@ -153,7 +153,7 @@ public class Blaze extends Monster { @Override public boolean isSensitiveToWater() { @@ -743,7 +743,7 @@ index edd3b7a855165eb090edb9ad95d36cdb649d231e..fa74eb7ee34f3f9b0026778bc0d37e97 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 d014731fe352246299253bf005e23673abe091bc..ecaccb4697bf2acaa6dc9034486fcf97c184aa71 100644 +index 9b0c7681b30338141ba888ca5a66076cf856d946..c54c364e5c680982a8c4c0285a7dd5289d2546fa 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -75,6 +75,11 @@ public class Giant extends Monster { @@ -807,7 +807,7 @@ index c00530db0eff302c14dd9c52d1d988cbdd93e5a1..43d4cea02ae94a8842cd4c1370d1b80e 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 b472309f97b24f1d7b97d8b6d464c479c2d602d5..e0ebc4c2d8dd718ce78d981a1d099e7482221f1f 100644 +index 8cdce384f6d191231012788f27753f0f03753460..f3925c70fc9f1fd0764058b1f2b1f050394c20ce 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -67,6 +67,11 @@ public class MagmaCube extends Slime { @@ -820,7 +820,7 @@ index b472309f97b24f1d7b97d8b6d464c479c2d602d5..e0ebc4c2d8dd718ce78d981a1d099e74 + } + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 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 2bd1fce22cf01a441f75f918e036598e8fb3ee04..637b229817f9f2c3ad224f300b56a6bee4c8a341 100644 @@ -951,7 +951,7 @@ index 3f67ab84485737291aec531441d88b74f7f7522c..d3f1d7b2a5721933b0a8d697f1f6456d protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); 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 77d4d37cffe959031296614751961ca7c7400c31..b4d8a37343f801731bc7041f3391c1a70c2c9d01 100644 +index e1327ea96fe394b1c27dbe88c49596256e4e61d3..509c7d79340673e213910ea74a5237332792a3b4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java @@ -43,6 +43,11 @@ public class Stray extends AbstractSkeleton { @@ -1005,10 +1005,10 @@ index 0dae7c87a9f61a7d8e493537e0aada78370bb334..fae7e1e780d0429341adf21afd57ab23 protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return dimensions.height - 0.28125F; 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 653959246bc3ede46419fd2afbd238bc33a4047e..97087016883c8b5517d06755de19c672cc3f03bd 100644 +index f1acdeb3a851c0d622c5ba8ab760a70a6f97f90e..1042f0804ba1b89680d625354a2de184b91da437 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -80,6 +80,11 @@ public class Vindicator extends AbstractIllager { +@@ -78,6 +78,11 @@ public class Vindicator extends AbstractIllager { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.vindicatorMaxHealth); } @@ -1053,10 +1053,10 @@ index afad65b86e762187d0779cfee2b0b1089066d53f..986183cab6c7d48a4716440dcc764bdd 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 1d862dd019b2d024f61cfc8956430d18d94b1ebf..8cd6012b00dd5b307fd76ef0fd9c2cd92342a92a 100644 +index 62d0c4dcb2992b665e473726a09d3fa457420395..763b28965418f2146a64c1ecde41ac536502936a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -91,6 +91,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -104,6 +104,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zoglinMaxHealth); } @@ -1117,10 +1117,10 @@ index e73fb1027acd592c7e028e1797042fe38c6c04a3..e6b653c75a4c3306e06bfcadb4c4b53b 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 fae14f6ab139e7d7a0e8625488c472f0d0c1a1e2..7a167887c40eccea4c216eb906a4a69006f72114 100644 +index 89b108a248509a72ddd81fdaf70053931f487368..5a42325d4acd32d1e8bd2f8dff1b43f3ef160535 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 -@@ -96,6 +96,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -119,6 +119,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level().purpurConfig.hoglinBreedingTicks; } @@ -1149,10 +1149,10 @@ index 03b58860ecb72976ecce99f368d16942557236b9..20ecfcbe948d02bb61b8f673f5330d2f 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 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e3622e3b8 100644 +index dc70d4819fbc2aa5b6a026f2aff2f52bc836901c..532b14a6330a72e06b47ababee012762b8f76884 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 -@@ -63,6 +63,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -85,6 +85,11 @@ public class PiglinBrute extends AbstractPiglin { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.piglinBruteMaxHealth); } @@ -1162,7 +1162,7 @@ index 04e54c241078e6cd6419a21ba1bf913fd3b413d1..b63d87df0f48dd63c89118f91b31dc4e + } + 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); + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } 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 430e660f74ee523d0bb98e21784f32158495de7a..870330f95fa1c1b4b8fb5f5e59a9770fb9389eb5 100644 diff --git a/patches/server/0129-Config-to-always-tame-in-Creative.patch b/patches/server/0128-Config-to-always-tame-in-Creative.patch similarity index 93% rename from patches/server/0129-Config-to-always-tame-in-Creative.patch rename to patches/server/0128-Config-to-always-tame-in-Creative.patch index 922b23c8c..ec2bd79b1 100644 --- a/patches/server/0129-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0128-Config-to-always-tame-in-Creative.patch @@ -20,7 +20,7 @@ index b0944fa1f3849dd24cd010fa0a6638f5fd7179d1..a3074ec9b430c9d0a0ef33fe353db643 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 9279eb3c7a8affbecba1a8b27ca0685021676f39..9a40cd8d7d4789a8b43f5194bdc67dc6753eed21 100644 +index a4b3d724f30ccf0eddfb41d6997d0aa9b1847b7a..d9b19f74b377721ed78cd0ea24d25e412cef1398 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java @@ -471,7 +471,7 @@ public class Cat extends TamableAnimal implements VariantHolder { @@ -33,7 +33,7 @@ index 9279eb3c7a8affbecba1a8b27ca0685021676f39..9a40cd8d7d4789a8b43f5194bdc67dc6 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 1fd962ef8bd53cd29c58509952e9d47a9d7e2020..a23d9adec5ef24f11129dff2d0da3544037898fb 100644 +index a6189e785af61d1cbed2022d68312d9fa69f68a8..242f30ed7855cd7b66c20df4aa424155dcd0e3a6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -336,7 +336,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 9c99b2e365aacb8309f29acb9025faccd2c676b3..5c9d49b40a940df724101bef339a9ac5a31fd025 100644 +index 7056c8ca7a87748f14142c6af274aae492f29f1c..d8c5fb5432f0b09124d7f4dbc7b50859c1a84cc7 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -@@ -99,6 +99,11 @@ public class CombatTracker { +@@ -97,6 +97,11 @@ public class CombatTracker { Component component = ComponentUtils.wrapInSquareBrackets(Component.translatable(string + ".link")).withStyle(INTENTIONAL_GAME_DESIGN_STYLE); return Component.translatable(string + ".message", this.mob.getDisplayName(), component); } else { diff --git a/patches/server/0133-One-Punch-Man.patch b/patches/server/0132-One-Punch-Man.patch similarity index 96% rename from patches/server/0133-One-Punch-Man.patch rename to patches/server/0132-One-Punch-Man.patch index 6f387ee32..cf260c8e5 100644 --- a/patches/server/0133-One-Punch-Man.patch +++ b/patches/server/0132-One-Punch-Man.patch @@ -5,7 +5,7 @@ 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 0461debc992ad7812a28ea73f3e18d5c0c22f700..f1a8918afe7e13fa0ba61566d3ad1b364a6e71dc 100644 +index 787a2d1b8c887e17f9f9565c292c585e996ca1d2..e4592de07e66e2eb89b5555d747253203c84c608 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2356,6 +2356,20 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 100% rename from patches/server/0134-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0133-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch diff --git a/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 92% rename from patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch index 316190c6c..424d5ed7e 100644 --- a/patches/server/0135-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0134-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 487e4ab76e255e10369f7968d73d41956e99ae66..8f3d2257a5be732883e18c821844d1ebb5a72f7d 100644 +index b7fedc1eb9f3d94cba8ac9d7da72fff03af723f0..6df13e5920a9191751ada925c272e2dba30396cb 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1428,7 +1428,7 @@ public class ServerPlayer extends Player { @@ -18,7 +18,7 @@ index 487e4ab76e255e10369f7968d73d41956e99ae66..8f3d2257a5be732883e18c821844d1eb } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c4c1e27efbc121f120f68a554cd5bf37443923e1..f2dc663616d7c78cf448ab3e3e8758e1e6716d2b 100644 +index c129a628a409d02e29ca565eaaa0a664ffb9cfb9..08429712b69283fe2f88ebe09e79cbe604d3d7d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -353,6 +353,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0136-Add-back-player-spawned-endermite-API.patch b/patches/server/0135-Add-back-player-spawned-endermite-API.patch similarity index 97% rename from patches/server/0136-Add-back-player-spawned-endermite-API.patch rename to patches/server/0135-Add-back-player-spawned-endermite-API.patch index 9f58851c8..7ed289a00 100644 --- a/patches/server/0136-Add-back-player-spawned-endermite-API.patch +++ b/patches/server/0135-Add-back-player-spawned-endermite-API.patch @@ -47,7 +47,7 @@ index 7655e6d36e29ba8a64729e6a0688e81ffefa95fa..67f3928f4a03a8d546c55e46a1f094a3 @Override diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index b004f072d2a67ad9fb39dd6fbd3a30c94016202f..326d1db39e3d3cd46cb5a584e2a7b82dd46ff8fa 100644 +index b61d659dc48f795c7f2d62044c245e342cd322e5..d9761d8fe746e925a7a32dfc15eb8045c6150fe5 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java @@ -75,6 +75,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { diff --git a/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 94% rename from patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch index c3a9201ec..0b382ffab 100644 --- a/patches/server/0137-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0136-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,7 +5,7 @@ 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 013fd016d384f1bf94b875bc71139e0ea4e12d21..cf9eb1ac36a5c9d3c73b981e1649bb23c7bfaf39 100644 +index 065e7c0d1cd1d3bbf72b03dd73dd9e567aec642b..df3e07c6a3ea04b0709f3fdb0d8e96858f3bb728 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -134,7 +134,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -18,7 +18,7 @@ index 013fd016d384f1bf94b875bc71139e0ea4e12d21..cf9eb1ac36a5c9d3c73b981e1649bb23 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f2dc663616d7c78cf448ab3e3e8758e1e6716d2b..f64597083c7505d27b57a0fb31d52ee347151e8a 100644 +index 08429712b69283fe2f88ebe09e79cbe604d3d7d9..9fd2e59124b9e0165d9dc3941af0470de2ae544c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -997,6 +997,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 93% rename from patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index ab5da3984..27e8d0d51 100644 --- a/patches/server/0138-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0137-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,7 +7,7 @@ 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 3fbe607e763910f7520604d3b8b8207086ba7f90..627cbec30c15fa4d11689cb85add6ad61d58b47a 100644 +index df3e07c6a3ea04b0709f3fdb0d8e96858f3bb728..7621237df388ee10ef962b0c4e795c9de88762d0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -271,7 +271,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -20,7 +20,7 @@ index 3fbe607e763910f7520604d3b8b8207086ba7f90..627cbec30c15fa4d11689cb85add6ad6 } 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 5d1dd1c3572365e2054b0848548fe736d4f21d55..414838cf7fe3796e8d829609ac126e5b9c4afd50 100644 +index 9fd2e59124b9e0165d9dc3941af0470de2ae544c..968de6c1a1c2fbed623778613ce6d45b54b98f8e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -999,6 +999,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0139-Tick-fluids-config.patch b/patches/server/0138-Tick-fluids-config.patch similarity index 97% rename from patches/server/0139-Tick-fluids-config.patch rename to patches/server/0138-Tick-fluids-config.patch index f1ca89396..c07809762 100644 --- a/patches/server/0139-Tick-fluids-config.patch +++ b/patches/server/0138-Tick-fluids-config.patch @@ -36,7 +36,7 @@ index 9b3dcf1a4d4cece92a629506d341f6bfe79d13d0..0ed39daf88a98f7fa887fb45d4f7c034 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 414838cf7fe3796e8d829609ac126e5b9c4afd50..0b60f77cfbe2247586d51999ac94f4f5cb011847 100644 +index 968de6c1a1c2fbed623778613ce6d45b54b98f8e..d4703bb2846d74025cfff1aa63e8cc01c6bceb2c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -129,6 +129,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0140-Config-to-disable-Llama-caravans.patch b/patches/server/0139-Config-to-disable-Llama-caravans.patch similarity index 90% rename from patches/server/0140-Config-to-disable-Llama-caravans.patch rename to patches/server/0139-Config-to-disable-Llama-caravans.patch index 9ef0233af..a9f999fac 100644 --- a/patches/server/0140-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0139-Config-to-disable-Llama-caravans.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Config to disable Llama caravans Disables the mechanic where llamas follow leashed llamas. diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -index 849f0c7c6d13df00d90211a48d8b56ab156812b8..3fc9528201fb96d6a0f905afe0b6a82ec88a7235 100644 +index 50622e300950b017b41a6f85643c8827a0113225..1a8ae9a692ea0727ad79c6061a11054ee496fa20 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java @@ -22,7 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -16,10 +16,10 @@ index 849f0c7c6d13df00d90211a48d8b56ab156812b8..3fc9528201fb96d6a0f905afe0b6a82e - if (!this.llama.shouldJoinCaravan) return false; // Purpur + if (!this.llama.level().purpurConfig.llamaJoinCaravans || !this.llama.shouldJoinCaravan) return false; // Purpur if (!this.llama.isLeashed() && !this.llama.inCaravan()) { - List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { + List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), 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 58175824dc315134b03b9dabfcae04e192af0b86..8d57bf9bbd1f61e6f1509c8b5cf01756ef145571 100644 +index fb2b0ebd9314ab7fc911e842767bd60b1db92b96..30493e675d6308d65a4d4fa3fea601b6d7e4fa76 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 @@ -519,7 +519,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder targets, Holder enchantment, int level) throws CommandSyntaxException { Enchantment enchantment2 = enchantment.value(); @@ -17,14 +17,14 @@ index 37d9c354af887c474094b1a364782007a5f2035d..ec86231077f6a1e03068507555539c5b throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment2.getMaxLevel()); } else { int i = 0; -@@ -58,7 +58,7 @@ public class EnchantCommand { - LivingEntity livingEntity = (LivingEntity)entity; +@@ -81,7 +81,7 @@ public class EnchantCommand { ItemStack itemStack = livingEntity.getMainHandItem(); if (!itemStack.isEmpty()) { -- if (enchantment2.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2)) { -+ if ((enchantment2.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2)) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment2))) { // Purpur + if (enchantment2.canEnchant(itemStack) +- && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2)) { ++ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment2) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment2))) { // Purpur itemStack.enchant(enchantment2, level); - ++i; + i++; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java index fc71e25bb657581db5b79623c4ea6adc5f9e2b12..3f13c6fb479db34c0c4d1e0f9241919f2e62cd53 100644 diff --git a/patches/server/0153-Configurable-sponge-absorption.patch b/patches/server/0152-Configurable-sponge-absorption.patch similarity index 100% rename from patches/server/0153-Configurable-sponge-absorption.patch rename to patches/server/0152-Configurable-sponge-absorption.patch diff --git a/patches/server/0154-Projectile-offset-config.patch b/patches/server/0153-Projectile-offset-config.patch similarity index 97% rename from patches/server/0154-Projectile-offset-config.patch rename to patches/server/0153-Projectile-offset-config.patch index 2dd4919d3..ae3f02b03 100644 --- a/patches/server/0154-Projectile-offset-config.patch +++ b/patches/server/0153-Projectile-offset-config.patch @@ -18,7 +18,7 @@ index 33df0ca406dc8321b76b393f317bbd1c8ebe6366..220513d3fd5645322886522ea4f6b8c5 entityarrow.setCritArrow(true); } diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index fdf9972bb9374789b063d191d9d419cca5975b23..b112845e94d354bbadff67673ea0b4939672bd3e 100644 +index f9a9bc27670bb7ec82a609f202edbde6b5a4fd46..05d3a7c077df1b92819655790230cd22028f6893 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java @@ -64,7 +64,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { @@ -83,7 +83,7 @@ index f47f793c62a919fb65c081ddb82d597a978d3b20..3bbb44ae3da68afbd6012df68dee277a com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.getBukkitEntity()); if (event.callEvent() && world.addFreshEntity(thrownPotion)) { diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index 75cf58919ac787b389286b41a9f0b5a945e71649..3f922008f928ed077e9ddfd4384ed7bbf7cb293d 100644 +index c2218c2dd46641ebb4c9278fa0d6015122b1905c..7030d94ba14ecacc1e5cd6d6432b1bcb59c8b646 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java @@ -77,7 +77,7 @@ public class TridentItem extends Item implements Vanishable { @@ -96,7 +96,7 @@ index 75cf58919ac787b389286b41a9f0b5a945e71649..3f922008f928ed077e9ddfd4384ed7bb 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 1de0fbb72819f6de3897d9c165e2f07c3b9a5280..88dd3e74675886789abc29b65bd2931a50c0a9c1 100644 +index f51f9b485bb5b84d92afb84ebef3a41af9e22b09..090a7dbc0b9188df189286c2034a874b0782be65 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -422,6 +422,23 @@ public class PurpurWorldConfig { diff --git a/patches/server/0155-Config-for-powered-rail-activation-distance.patch b/patches/server/0154-Config-for-powered-rail-activation-distance.patch similarity index 94% rename from patches/server/0155-Config-for-powered-rail-activation-distance.patch rename to patches/server/0154-Config-for-powered-rail-activation-distance.patch index f1bd34c95..3af01e202 100644 --- a/patches/server/0155-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0154-Config-for-powered-rail-activation-distance.patch @@ -18,7 +18,7 @@ index b84c48902ef24fdae17578a304e6c93dc20c5dce..e03125281767845564c48c98c3e6b6bb } 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 bdac4ecd881b9469a319275f9c0f074ccffe48c2..70f29c7adf3118c63bec2d12c01a6d59c6fffa82 100644 +index 090a7dbc0b9188df189286c2034a874b0782be65..4fc7d6e06343aa9afa20bee24cb80653000dd54c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -615,6 +615,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0156-Piglin-portal-spawn-modifier.patch b/patches/server/0155-Piglin-portal-spawn-modifier.patch similarity index 93% rename from patches/server/0156-Piglin-portal-spawn-modifier.patch rename to patches/server/0155-Piglin-portal-spawn-modifier.patch index 813648a27..2d7fe4792 100644 --- a/patches/server/0156-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0155-Piglin-portal-spawn-modifier.patch @@ -18,7 +18,7 @@ Difficulties: 3 - hard diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index c51ac562d642061ce60db66ae9a86eecd9d85ecb..673dd5cc5c83eb606aa5684b8ae14b82e0346a35 100644 +index 613df7b174ba4cb87314a631ebc7dfeda8ede58f..f7b724696151b73343feac1ce406fca9377f2508 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -60,7 +60,7 @@ public class NetherPortalBlock extends Block { @@ -31,7 +31,7 @@ index c51ac562d642061ce60db66ae9a86eecd9d85ecb..673dd5cc5c83eb606aa5684b8ae14b82 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 70f29c7adf3118c63bec2d12c01a6d59c6fffa82..18143874afd0fb7b6fdc7f1471368bced0dc39d5 100644 +index 4fc7d6e06343aa9afa20bee24cb80653000dd54c..50373f138db63443dee0ca28781ae0a0cc65fa24 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1647,6 +1647,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0157-Config-to-change-max-number-of-bees.patch b/patches/server/0156-Config-to-change-max-number-of-bees.patch similarity index 96% rename from patches/server/0157-Config-to-change-max-number-of-bees.patch rename to patches/server/0156-Config-to-change-max-number-of-bees.patch index cd579d08f..3cfaa7a2f 100644 --- a/patches/server/0157-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0156-Config-to-change-max-number-of-bees.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to change max number of bees diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 55b0e2bf98a285cdcd30e40d94192b7a1802efd8..b37b7f58d59616cd409bbab701659c8e8879ccc7 100644 +index d445ed0895293dd45c36226051f5809be8587ebe..2b12596ee7ea1a40120c60c6f43e9e42cc6dfae9 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java @@ -47,7 +47,7 @@ public class BeehiveBlockEntity extends BlockEntity { diff --git a/patches/server/0158-Config-for-wither-explosion-radius.patch b/patches/server/0157-Config-for-wither-explosion-radius.patch similarity index 96% rename from patches/server/0158-Config-for-wither-explosion-radius.patch rename to patches/server/0157-Config-for-wither-explosion-radius.patch index afe90ba0c..498db5917 100644 --- a/patches/server/0158-Config-for-wither-explosion-radius.patch +++ b/patches/server/0157-Config-for-wither-explosion-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for wither explosion radius diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -index 8abc8a28ae74dc78f53b9fb38fb31b47a0a42d94..beaa7e817fb923b9cb1a9df63ddce3fe9e087061 100644 +index c37b3486dcc75c5c78d605afeff2e3f723940636..b4a38621b58e16b2bf48b3d45d85130e8883b477 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java @@ -99,7 +99,7 @@ public class WitherSkull extends AbstractHurtingProjectile { diff --git a/patches/server/0159-Gamemode-extra-permissions.patch b/patches/server/0158-Gamemode-extra-permissions.patch similarity index 95% rename from patches/server/0159-Gamemode-extra-permissions.patch rename to patches/server/0158-Gamemode-extra-permissions.patch index b89c41997..d5cad804d 100644 --- a/patches/server/0159-Gamemode-extra-permissions.patch +++ b/patches/server/0158-Gamemode-extra-permissions.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Gamemode extra permissions diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index 2944b64e3dd5d413ccc12330118eb5248888e21f..288e3cf7d522232aeb40090537a55a2cf06d92e2 100644 +index b0d96ae08959cdca9177eb875faa99f4a8e92632..546ff84046856ecfe0f2a07d3ba3f886f8df4dca 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -230,6 +230,19 @@ public class CommandSourceStack implements ExecutionCommandSource context, Collection targets, GameType gameMode) { @@ -50,7 +50,7 @@ index 5cb15e2209d7b315904a1fc6d650ce1e75584271..7e21db60f3ace2a19686d6ea04b994ec + // Purpur end int i = 0; - for(ServerPlayer serverPlayer : targets) { + for (ServerPlayer serverPlayer : targets) { diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java index dd95b3bfe59f2bb635afe92317288efcd2986326..11f43f44f359ce57d3a8f3322e58b9f5dfdaf00a 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java diff --git a/patches/server/0160-Configurable-piston-push-limit.patch b/patches/server/0159-Configurable-piston-push-limit.patch similarity index 76% rename from patches/server/0160-Configurable-piston-push-limit.patch rename to patches/server/0159-Configurable-piston-push-limit.patch index 5460f27ce..baabbe202 100644 --- a/patches/server/0160-Configurable-piston-push-limit.patch +++ b/patches/server/0159-Configurable-piston-push-limit.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable piston push limit diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java -index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87dbb4cef178 100644 +index 205e223c356634bd6bc6bd58c6f0b7fda61a6f5f..bea05cb928d540a2f19b51bb7352d032b2dd69cd 100644 --- a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java +++ b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java -@@ -86,7 +86,7 @@ public class PistonStructureResolver { +@@ -81,7 +81,7 @@ public class PistonStructureResolver { return true; } else { int i = 1; @@ -16,17 +16,17 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db + if (i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur return false; } else { - while(isSticky(blockState)) { -@@ -98,7 +98,7 @@ public class PistonStructureResolver { + while (isSticky(blockState)) { +@@ -95,7 +95,7 @@ public class PistonStructureResolver { + break; } - ++i; -- if (i + this.toPush.size() > 12) { -+ if (i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur +- if (++i + this.toPush.size() > 12) { ++ if (++i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur return false; } } -@@ -142,7 +142,7 @@ public class PistonStructureResolver { +@@ -140,7 +140,7 @@ public class PistonStructureResolver { return true; } @@ -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 fa3d2dbea60d7d40e30d7c8205c97f3a44b6f948..eeba42faac3cf16be92054bd3f04eb761e257656 100644 +index 8b7c68d7d7ae77ba216a004724d088956a1dfce4..500b14f0b27b0c1ba29bdb499f30726c48e6fa20 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -610,6 +610,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0161-Configurable-broadcast-settings.patch b/patches/server/0160-Configurable-broadcast-settings.patch similarity index 94% rename from patches/server/0161-Configurable-broadcast-settings.patch rename to patches/server/0160-Configurable-broadcast-settings.patch index 7f20f9dda..d331d7e27 100644 --- a/patches/server/0161-Configurable-broadcast-settings.patch +++ b/patches/server/0160-Configurable-broadcast-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable broadcast settings diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index fcb5965ff0a9623a8e63a4b7413ad55416d269d9..9abce8a22246f449e1e508dc9972d14cfb8c7c6f 100644 +index e3e2e69e4ed2fb97c17481c88965f7f2997304ac..ba8a8575af92541cef2e116743d51cd68d1e794a 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -250,6 +250,7 @@ public class PlayerAdvancements { @@ -17,7 +17,7 @@ index fcb5965ff0a9623a8e63a4b7413ad55416d269d9..9abce8a22246f449e1e508dc9972d14c // 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 8f3d2257a5be732883e18c821844d1ebb5a72f7d..386a74f8a6f61fb745a1e36d8955d26bfc2ad78a 100644 +index 6df13e5920a9191751ada925c272e2dba30396cb..13f39b219615b8091284f4ac56d76a505956a556 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1012,6 +1012,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0162-Configurable-mob-blindness.patch b/patches/server/0161-Configurable-mob-blindness.patch similarity index 97% rename from patches/server/0162-Configurable-mob-blindness.patch rename to patches/server/0161-Configurable-mob-blindness.patch index bf91f0b75..ce59b9d7d 100644 --- a/patches/server/0162-Configurable-mob-blindness.patch +++ b/patches/server/0161-Configurable-mob-blindness.patch @@ -6,7 +6,7 @@ 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 fa289f634d4a674d6cb5d9633ae6d1997a02fd59..926962fc5631faa4672c8dd2fdb72b9ef6947292 100644 +index 83be9f0a75371046f7c4e1e8b064a7c7534c74f6..ef830481a816c743aa3b0feee5c0f2cf51fea7fa 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1045,6 +1045,17 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0163-Hide-hidden-players-from-entity-selector.patch b/patches/server/0162-Hide-hidden-players-from-entity-selector.patch similarity index 98% rename from patches/server/0163-Hide-hidden-players-from-entity-selector.patch rename to patches/server/0162-Hide-hidden-players-from-entity-selector.patch index 60e62c866..3d97accb1 100644 --- a/patches/server/0163-Hide-hidden-players-from-entity-selector.patch +++ b/patches/server/0162-Hide-hidden-players-from-entity-selector.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Hide hidden players from entity selector diff --git a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java -index 73c15a0c56a103ba4e62f0a51af8d42566b07245..d630c5a1aed706265d1e077da540c0bf723b838d 100644 +index 676a1499747b071515479130875157263d3a8352..fc1bba350030c076405711716e9830f8ae7f3953 100644 --- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java @@ -200,10 +200,10 @@ public class EntitySelector { diff --git a/patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch similarity index 100% rename from patches/server/0164-Config-for-health-to-impact-Creeper-explosion-radius.patch rename to patches/server/0163-Config-for-health-to-impact-Creeper-explosion-radius.patch diff --git a/patches/server/0165-Iron-golem-calm-anger-options.patch b/patches/server/0164-Iron-golem-calm-anger-options.patch similarity index 96% rename from patches/server/0165-Iron-golem-calm-anger-options.patch rename to patches/server/0164-Iron-golem-calm-anger-options.patch index 371e6b3e2..61b47fba9 100644 --- a/patches/server/0165-Iron-golem-calm-anger-options.patch +++ b/patches/server/0164-Iron-golem-calm-anger-options.patch @@ -5,7 +5,7 @@ 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 58539d29b8e2a8c0676cc574f64e7d61613e1451..1ffb8e1c386fc85796432281ac407a935169b186 100644 +index 669132fb78d3fd72f73d4c20370f0213879baeaa..75a44fdb1228233ac2abe1d33bde8d978a8a994b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -96,6 +96,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -25,7 +25,7 @@ index 58539d29b8e2a8c0676cc574f64e7d61613e1451..1ffb8e1c386fc85796432281ac407a93 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59cb375fce3f2917d86617854a18dfa55766daf4..9d03449e5d939e8dfa0ce57d89688da8bc36ee4d 100644 +index 8694ba3aea41f83d16d0a761b922b6b248e5942f..d0127081efd973efd40a9ec5fc0d94092021c688 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1386,6 +1386,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0166-Breedable-parrots.patch b/patches/server/0165-Breedable-parrots.patch similarity index 95% rename from patches/server/0166-Breedable-parrots.patch rename to patches/server/0165-Breedable-parrots.patch index 831eba192..fb5057fc4 100644 --- a/patches/server/0166-Breedable-parrots.patch +++ b/patches/server/0165-Breedable-parrots.patch @@ -5,7 +5,7 @@ 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 a23d9adec5ef24f11129dff2d0da3544037898fb..a3304ce24c08e4250df81a2d09098b8cbbc604bd 100644 +index 242f30ed7855cd7b66c20df4aa424155dcd0e3a6..c69a096b6bd7700191f88a3c03c8d018ca9d4201 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -228,6 +228,7 @@ 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 f7e482ac8dec8a8c6ae9965acbc41a2af00aebe1..e9bdb223886f1c2e91324c01ea0203b7c319ec48 100644 +index 53c20b7e1e8d27b4a13e18ae8fa437e83b208c78..2cac12d2b788b0962b719a83b43dc23177b76ac6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -562,6 +562,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0174-Config-MobEffect-by-world.patch b/patches/server/0173-Config-MobEffect-by-world.patch similarity index 98% rename from patches/server/0174-Config-MobEffect-by-world.patch rename to patches/server/0173-Config-MobEffect-by-world.patch index e03dc8ed8..5f4391dd6 100644 --- a/patches/server/0174-Config-MobEffect-by-world.patch +++ b/patches/server/0173-Config-MobEffect-by-world.patch @@ -59,7 +59,7 @@ index b994ae09621934df2cdd6a83a7d8ecb44649fb16..c2b812c992db1ac9cd391da902c8d819 ((CraftPlayer) entityhuman.getBukkitEntity()).sendHealthUpdate(); diff --git a/src/main/java/net/minecraft/world/effect/WitherMobEffect.java b/src/main/java/net/minecraft/world/effect/WitherMobEffect.java -index 1f9e0c139988c4c44a26552881647d36965aa4fa..b8d612d22aca74a08b53393c0723a2ae3a0b9ddf 100644 +index cc45fd864185a7842c465e26304b36f7c744bb93..434390a6b88eac7bd41ad6b05d223c78571885fb 100644 --- a/src/main/java/net/minecraft/world/effect/WitherMobEffect.java +++ b/src/main/java/net/minecraft/world/effect/WitherMobEffect.java @@ -10,7 +10,7 @@ class WitherMobEffect extends MobEffect { diff --git a/patches/server/0175-Beacon-Activation-Range-Configurable.patch b/patches/server/0174-Beacon-Activation-Range-Configurable.patch similarity index 92% rename from patches/server/0175-Beacon-Activation-Range-Configurable.patch rename to patches/server/0174-Beacon-Activation-Range-Configurable.patch index 1f4bd453d..62c4d09e4 100644 --- a/patches/server/0175-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0174-Beacon-Activation-Range-Configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Beacon Activation Range Configurable diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index f13943db6f2fb923c52dcf9e8bf7000041d0a362..a5f9747be5503dd24abd98f11cfa8229448ca3bf 100644 +index 4b81b0180dfc96fc6a88646838a886ca5b5d301b..4a0bca08585fae3620da108f6a4cc07e500e5e03 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java @@ -88,6 +88,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name @@ -26,7 +26,7 @@ index f13943db6f2fb923c52dcf9e8bf7000041d0a362..a5f9747be5503dd24abd98f11cfa8229 } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d9ed4a7d89e259beb6bf05dc624a15588adc099..fca69da24c29c9215529e5a203d7ab282ec4b7f7 100644 +index 515c15d6d8f87a1aa677db0cdf7605bbd2421fe0..991e8491c5bc254eb2ba0cbdcd06cb410d286fbb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -504,6 +504,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0176-Make-lightning-rod-range-configurable.patch b/patches/server/0175-Make-lightning-rod-range-configurable.patch similarity index 96% rename from patches/server/0176-Make-lightning-rod-range-configurable.patch rename to patches/server/0175-Make-lightning-rod-range-configurable.patch index 5376e85ef..37655644b 100644 --- a/patches/server/0176-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0175-Make-lightning-rod-range-configurable.patch @@ -5,7 +5,7 @@ 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 b9ed172cee34ef2e140c362b9ac7030c8231b97a..aef2bd930125b3fbd9f564db86a575ddfbd7d894 100644 +index 74f9b208b822ef3c53113004b40366e44fdb8201..d3340055cf5c79b1f7430dc64516118bbb707086 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1192,7 +1192,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 100% rename from patches/server/0177-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0176-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch diff --git a/patches/server/0178-Allow-player-join-full-server-by-permission.patch b/patches/server/0177-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/0177-Allow-player-join-full-server-by-permission.patch diff --git a/patches/server/0179-Add-portal-permission-bypass.patch b/patches/server/0178-Add-portal-permission-bypass.patch similarity index 100% rename from patches/server/0179-Add-portal-permission-bypass.patch rename to patches/server/0178-Add-portal-permission-bypass.patch diff --git a/patches/server/0180-Shulker-spawn-from-bullet-options.patch b/patches/server/0179-Shulker-spawn-from-bullet-options.patch similarity index 97% rename from patches/server/0180-Shulker-spawn-from-bullet-options.patch rename to patches/server/0179-Shulker-spawn-from-bullet-options.patch index 0bb22c50a..9b83cc979 100644 --- a/patches/server/0180-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0179-Shulker-spawn-from-bullet-options.patch @@ -53,10 +53,10 @@ index 31284660a9718503a1ce474c56d993de3126a1ea..df944e733ca589d407af3709e0ff025f @Nullable diff --git a/src/main/java/net/minecraft/world/item/DyeColor.java b/src/main/java/net/minecraft/world/item/DyeColor.java -index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033ef73bb83 100644 +index c7e36bd598090b7d9f818ac1f6b39e13e64e8bf7..e2a960e2dc5414c731feeb5444792d6b26487c9f 100644 --- a/src/main/java/net/minecraft/world/item/DyeColor.java +++ b/src/main/java/net/minecraft/world/item/DyeColor.java -@@ -103,4 +103,10 @@ public enum DyeColor implements StringRepresentable { +@@ -101,4 +101,10 @@ public enum DyeColor implements StringRepresentable { public String getSerializedName() { return this.name; } diff --git a/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0180-Eating-glow-berries-adds-glow-effect.patch similarity index 79% rename from patches/server/0181-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0180-Eating-glow-berries-adds-glow-effect.patch index 01b2cccb3..ab0b85ffa 100644 --- a/patches/server/0181-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0180-Eating-glow-berries-adds-glow-effect.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Eating glow berries adds glow effect diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index 7fbd4bf29bcc0795aa4b0e6d5d4bc3745bf7a1c0..e83ea53da012f3dcaa1f53bf6082a17a69e6ee13 100644 +index c157e7f6fa28f713fcfb699daa329abed0b32cd5..bb2103a488964f25335393fa91e8ae5749eca333 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -1224,7 +1224,7 @@ public class Items { - public static final Item LANTERN = registerBlock(Blocks.LANTERN); - public static final Item SOUL_LANTERN = registerBlock(Blocks.SOUL_LANTERN); - public static final Item SWEET_BERRIES = registerItem("sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, (new Item.Properties()).food(Foods.SWEET_BERRIES))); -- public static final Item GLOW_BERRIES = registerItem("glow_berries", new ItemNameBlockItem(Blocks.CAVE_VINES, (new Item.Properties()).food(Foods.GLOW_BERRIES))); -+ public static final Item GLOW_BERRIES = registerItem("glow_berries", new org.purpurmc.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, (new Item.Properties()).food(Foods.GLOW_BERRIES))); // Purpur +@@ -1535,7 +1535,7 @@ public class Items { + "sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, new Item.Properties().food(Foods.SWEET_BERRIES)) + ); + public static final Item GLOW_BERRIES = registerItem( +- "glow_berries", new ItemNameBlockItem(Blocks.CAVE_VINES, new Item.Properties().food(Foods.GLOW_BERRIES)) ++ "glow_berries", new org.purpurmc.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, new Item.Properties().food(Foods.GLOW_BERRIES)) // Purpur + ); public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE); 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 cc612f8328abfa27d784181c5aebbcd9e0b10c05..b21d288f62f473cd9d1057d3d2a452f16b0291d0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0182-Option-to-make-drowned-break-doors.patch b/patches/server/0181-Option-to-make-drowned-break-doors.patch similarity index 100% rename from patches/server/0182-Option-to-make-drowned-break-doors.patch rename to patches/server/0181-Option-to-make-drowned-break-doors.patch diff --git a/patches/server/0183-Configurable-hunger-starvation-damage.patch b/patches/server/0182-Configurable-hunger-starvation-damage.patch similarity index 100% rename from patches/server/0183-Configurable-hunger-starvation-damage.patch rename to patches/server/0182-Configurable-hunger-starvation-damage.patch diff --git a/patches/server/0184-Enhance-SysoutCatcher.patch b/patches/server/0183-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0184-Enhance-SysoutCatcher.patch rename to patches/server/0183-Enhance-SysoutCatcher.patch diff --git a/patches/server/0185-Add-uptime-command.patch b/patches/server/0184-Add-uptime-command.patch similarity index 98% rename from patches/server/0185-Add-uptime-command.patch rename to patches/server/0184-Add-uptime-command.patch index 73f3d37d3..7b2b009f4 100644 --- a/patches/server/0185-Add-uptime-command.patch +++ b/patches/server/0184-Add-uptime-command.patch @@ -17,7 +17,7 @@ index 9c335df92b0a6c7705c9def89ba5c320d2c8ed03..c2b8a653b01aa3e0856afa3e96555f5e } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 69af88f3ed690cbb751d367171c4cf6aa0ee2fca..1381e16fcac730eaecfc621a0c602bbf15d744f3 100644 +index 9d6424c79b10e76685de55a9d0d05653ac3e3c5f..0e9cf9f9ad81363cdeacd3da3a776aaad39045f9 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -293,6 +293,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - p.broadcastBreakEvent(context.getHand()); - }); + itemStack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(context.getHand())); } - return InteractionResult.sidedSuccess(level.isClientSide); @@ -69,10 +67,12 @@ index 2e75fd06e9e379eb95ebfe55086ffc327706ab2f..2918b1aca8fae6a319881a631dc727b6 world.levelEvent(player, 3005, pos, 0); return optional2; } else { -- Optional optional3 = Optional.ofNullable(HoneycombItem.WAX_OFF_BY_BLOCK.get().get(state.getBlock())).map((block) -> { -- return block.withPropertiesOf(state); -- }); -+ Optional optional3 = Optional.ofNullable(world.purpurConfig.axeWaxables.get(state.getBlock())); // Purpur +- Optional optional3 = Optional.ofNullable(HoneycombItem.WAX_OFF_BY_BLOCK.get().get(state.getBlock())) +- .map(block -> block.withPropertiesOf(state)); ++ // Purpur start ++ Optional optional3 = Optional.ofNullable(world.purpurConfig.axeWaxables.get(state.getBlock())); ++ // .map(block -> block.withPropertiesOf(state)); ++ // Purpur end if (optional3.isPresent()) { - world.playSound(player, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); + world.playSound(HoneycombItem.WAX_OFF_BY_BLOCK.get().containsKey(state.getBlock()) ? player : null, pos, SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound @@ -80,10 +80,10 @@ index 2e75fd06e9e379eb95ebfe55086ffc327706ab2f..2918b1aca8fae6a319881a631dc727b6 return optional3; } else { diff --git a/src/main/java/net/minecraft/world/item/HoeItem.java b/src/main/java/net/minecraft/world/item/HoeItem.java -index 180aec596110309aade13d2080f8824d152b07cb..552c31c0f3746dd35388395036e70a925bf00bd4 100644 +index 704cbc775c9f7663c57c431e8a7651d7684ccc34..26a73f3982db764c4793326b41a541dffc416559 100644 --- a/src/main/java/net/minecraft/world/item/HoeItem.java +++ b/src/main/java/net/minecraft/world/item/HoeItem.java -@@ -34,15 +34,23 @@ public class HoeItem extends DiggerItem { +@@ -45,15 +45,23 @@ public class HoeItem extends DiggerItem { public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos blockPos = context.getClickedPos(); @@ -114,7 +114,7 @@ index 180aec596110309aade13d2080f8824d152b07cb..552c31c0f3746dd35388395036e70a92 if (!level.isClientSide) { consumer.accept(context); if (player != null) { -@@ -52,7 +60,7 @@ public class HoeItem extends DiggerItem { +@@ -61,7 +69,7 @@ public class HoeItem extends DiggerItem { } } @@ -124,10 +124,10 @@ index 180aec596110309aade13d2080f8824d152b07cb..552c31c0f3746dd35388395036e70a92 return InteractionResult.PASS; } diff --git a/src/main/java/net/minecraft/world/item/ShovelItem.java b/src/main/java/net/minecraft/world/item/ShovelItem.java -index 21212462e6b415e96536a27b2c009d1562f18946..193bcb12152347f5f02ce18b01ba918e5e838f30 100644 +index 9aba0211f37501bbd19b583d22fa83eae32390d9..f44e28bf44b9d39267d21eaf6a025b5f28f3cd72 100644 --- a/src/main/java/net/minecraft/world/item/ShovelItem.java +++ b/src/main/java/net/minecraft/world/item/ShovelItem.java -@@ -37,9 +37,12 @@ public class ShovelItem extends DiggerItem { +@@ -46,9 +46,12 @@ public class ShovelItem extends DiggerItem { BlockState blockState2 = FLATTENABLES.get(blockState.getBlock()); BlockState blockState3 = null; Runnable afterAction = null; // Paper @@ -143,7 +143,7 @@ index 21212462e6b415e96536a27b2c009d1562f18946..193bcb12152347f5f02ce18b01ba918e } else if (blockState.getBlock() instanceof CampfireBlock && blockState.getValue(CampfireBlock.LIT)) { afterAction = () -> { // Paper if (!level.isClientSide()) { -@@ -68,7 +71,7 @@ public class ShovelItem extends DiggerItem { +@@ -75,7 +78,7 @@ public class ShovelItem extends DiggerItem { } } diff --git a/patches/server/0187-Store-placer-on-Block-when-placed.patch b/patches/server/0186-Store-placer-on-Block-when-placed.patch similarity index 100% rename from patches/server/0187-Store-placer-on-Block-when-placed.patch rename to patches/server/0186-Store-placer-on-Block-when-placed.patch diff --git a/patches/server/0188-Summoner-API.patch b/patches/server/0187-Summoner-API.patch similarity index 100% rename from patches/server/0188-Summoner-API.patch rename to patches/server/0187-Summoner-API.patch diff --git a/patches/server/0189-Customizable-sleeping-actionbar-messages.patch b/patches/server/0188-Customizable-sleeping-actionbar-messages.patch similarity index 96% rename from patches/server/0189-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0188-Customizable-sleeping-actionbar-messages.patch index 10b73d6ff..96ed98310 100644 --- a/patches/server/0189-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0188-Customizable-sleeping-actionbar-messages.patch @@ -5,7 +5,7 @@ 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 aef2bd930125b3fbd9f564db86a575ddfbd7d894..9394aa9e300721b335238f143500528e93ce8385 100644 +index d3340055cf5c79b1f7430dc64516118bbb707086..4a08c804c3e31a80ee9b663a44fd60142709c9c6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1241,11 +1241,27 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -38,7 +38,7 @@ index aef2bd930125b3fbd9f564db86a575ddfbd7d894..9394aa9e300721b335238f143500528e } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c679111a4420ee55b191ad768444123d41d250fb..bc153d1f14483ecaf648918f269e81a11151e392 100644 +index 13f39b219615b8091284f4ac56d76a505956a556..65e549ebad6f89640000f27356f1de434c5925c8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1469,7 +1469,19 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 100% rename from patches/server/0190-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0189-option-to-disable-shulker-box-items-from-dropping-co.patch diff --git a/patches/server/0191-Big-dripleaf-tilt-delay.patch b/patches/server/0190-Big-dripleaf-tilt-delay.patch similarity index 100% rename from patches/server/0191-Big-dripleaf-tilt-delay.patch rename to patches/server/0190-Big-dripleaf-tilt-delay.patch diff --git a/patches/server/0192-Player-ridable-in-water-option.patch b/patches/server/0191-Player-ridable-in-water-option.patch similarity index 100% rename from patches/server/0192-Player-ridable-in-water-option.patch rename to patches/server/0191-Player-ridable-in-water-option.patch diff --git a/patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 100% rename from patches/server/0193-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0192-Config-to-disable-Enderman-teleport-on-projectile-hi.patch diff --git a/patches/server/0194-Add-compass-command.patch b/patches/server/0193-Add-compass-command.patch similarity index 99% rename from patches/server/0194-Add-compass-command.patch rename to patches/server/0193-Add-compass-command.patch index 115abcb9c..1a1e8fe53 100644 --- a/patches/server/0194-Add-compass-command.patch +++ b/patches/server/0193-Add-compass-command.patch @@ -17,7 +17,7 @@ index c2b8a653b01aa3e0856afa3e96555f5e8f0e81bd..0026235782aeb5e663faa3aaf1104063 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 bc153d1f14483ecaf648918f269e81a11151e392..8601df7eefe25b2a6f5cc3a2dbda35695b1e0202 100644 +index 65e549ebad6f89640000f27356f1de434c5925c8..0ba6ecf578e731a9705a384944aed482f829b58d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -283,6 +283,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0195-Toggle-for-kinetic-damage.patch b/patches/server/0194-Toggle-for-kinetic-damage.patch similarity index 95% rename from patches/server/0195-Toggle-for-kinetic-damage.patch rename to patches/server/0194-Toggle-for-kinetic-damage.patch index 1a57741df..b53e2fa7b 100644 --- a/patches/server/0195-Toggle-for-kinetic-damage.patch +++ b/patches/server/0194-Toggle-for-kinetic-damage.patch @@ -5,7 +5,7 @@ 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 4af345c848040fabdde82b4f0493ba796a7fef1f..9f542c8ddb25faaef00d5db354f1c1fe3cfc3c45 100644 +index cd87e7c52b75c6ba40343557ba12c7891da88e07..3a1b8a94642339a96d8f7391714fae1648dc5149 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2954,6 +2954,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0196-Add-Option-for-disable-observer-clocks.patch b/patches/server/0195-Add-Option-for-disable-observer-clocks.patch similarity index 100% rename from patches/server/0196-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0195-Add-Option-for-disable-observer-clocks.patch diff --git a/patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0196-Customizeable-Zombie-Villager-curing-times.patch similarity index 100% rename from patches/server/0197-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0196-Customizeable-Zombie-Villager-curing-times.patch diff --git a/patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 100% rename from patches/server/0198-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0197-Option-for-sponges-to-work-on-lava-and-mud.patch diff --git a/patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0198-Toggle-for-Wither-s-spawn-sound.patch similarity index 100% rename from patches/server/0199-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0198-Toggle-for-Wither-s-spawn-sound.patch diff --git a/patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0199-Cactus-breaks-from-solid-neighbors-config.patch similarity index 100% rename from patches/server/0200-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0199-Cactus-breaks-from-solid-neighbors-config.patch diff --git a/patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0200-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 100% rename from patches/server/0201-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0200-Config-to-remove-curse-of-binding-with-weakness.patch diff --git a/patches/server/0202-Conduit-behavior-configuration.patch b/patches/server/0201-Conduit-behavior-configuration.patch similarity index 100% rename from patches/server/0202-Conduit-behavior-configuration.patch rename to patches/server/0201-Conduit-behavior-configuration.patch diff --git a/patches/server/0203-Cauldron-fill-chances.patch b/patches/server/0202-Cauldron-fill-chances.patch similarity index 100% rename from patches/server/0203-Cauldron-fill-chances.patch rename to patches/server/0202-Cauldron-fill-chances.patch diff --git a/patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 62% rename from patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch index 463befe5b..d1b5f2afd 100644 --- a/patches/server/0204-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0203-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Config to allow mobs to pathfind over rails diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 70c7c735fdd0c1b66243915622e47eab8a57e7cc..0dc05919dfbbf73230505fcdc25d949b1602801c 100644 +index 7e62873eea85e33f81c943e70292ccb71a3dd276..b7f9793900d365f91d6e30dd22881a30e4250ac8 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -241,7 +241,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { - } - - if (blockPathTypes != BlockPathTypes.WALKABLE && (!this.isAmphibious() || blockPathTypes != BlockPathTypes.WATER)) { -- if ((node == null || node.costMalus < 0.0F) && maxYStep > 0 && (blockPathTypes != BlockPathTypes.FENCE || this.canWalkOverFences()) && blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL && blockPathTypes != BlockPathTypes.TRAPDOOR && blockPathTypes != BlockPathTypes.POWDER_SNOW) { -+ if ((node == null || node.costMalus < 0.0F) && maxYStep > 0 && (blockPathTypes != BlockPathTypes.FENCE || this.canWalkOverFences()) && (this.mob.level().purpurConfig.mobsIgnoreRails || blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL) && blockPathTypes != BlockPathTypes.TRAPDOOR && blockPathTypes != BlockPathTypes.POWDER_SNOW) { // Purpur +@@ -259,7 +259,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { + if ((node == null || node.costMalus < 0.0F) + && maxYStep > 0 + && (blockPathTypes != BlockPathTypes.FENCE || this.canWalkOverFences()) +- && blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL ++ && (this.mob.level().purpurConfig.mobsIgnoreRails || blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL) // Purpur + && blockPathTypes != BlockPathTypes.TRAPDOOR + && blockPathTypes != BlockPathTypes.POWDER_SNOW) { node = this.findAcceptedNode(x, y + 1, z, maxYStep - 1, prevFeetY, direction, nodeType); - 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 0893e133393e35a6b0a66c09cb800265426ec427..7f0b09f7e7e1f294bd7d4b384c587789dd8ffb12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0205-Shulker-change-color-with-dye.patch b/patches/server/0204-Shulker-change-color-with-dye.patch similarity index 100% rename from patches/server/0205-Shulker-change-color-with-dye.patch rename to patches/server/0204-Shulker-change-color-with-dye.patch diff --git a/patches/server/0206-Extended-OfflinePlayer-API.patch b/patches/server/0205-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/server/0206-Extended-OfflinePlayer-API.patch rename to patches/server/0205-Extended-OfflinePlayer-API.patch diff --git a/patches/server/0207-Added-the-ability-to-add-combustible-items.patch b/patches/server/0206-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/server/0207-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0206-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 97% rename from patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index e6fb6236b..a0072961c 100644 --- a/patches/server/0208-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0207-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 9394aa9e300721b335238f143500528e93ce8385..f141031f668898b8cc0ac1970b9026da6be4a466 100644 +index 4a08c804c3e31a80ee9b663a44fd60142709c9c6..39a6ff48d820b56728398ac287f9a4db108f3bad 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1401,6 +1401,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 53% rename from patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index acd8f5dcd..d4aac716f 100644 --- a/patches/server/0209-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0208-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Chance for azalea blocks to grow into trees naturally diff --git a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java -index 3ecc92439fc85d224ff52f41c5e34079e042a5e6..2336fea8c65d64a77a1afa4b8b976fb0d7da00eb 100644 +index c4d05b061a206df197996fdd0c29e2a4f8820bd1..08e32ae2fc4b02c526bf49617a8010c1bf2f2d95 100644 --- a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java @@ -49,6 +49,20 @@ public class AzaleaBlock extends BushBlock implements BonemealableBlock { @@ -30,20 +30,25 @@ index 3ecc92439fc85d224ff52f41c5e34079e042a5e6..2336fea8c65d64a77a1afa4b8b976fb0 } diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java -index 1c7bb504a576568bd275b4f1373208d37d1419e5..3d48293c34fa37ba5091c6058dadb32a8f74a009 100644 +index e7c8313cafc25858ac002e3c45e63db9e8cefee9..04eace0873f1133ccca9696282948dc7ebc6f398 100644 --- a/src/main/java/net/minecraft/world/level/block/Blocks.java +++ b/src/main/java/net/minecraft/world/level/block/Blocks.java -@@ -1145,8 +1145,8 @@ public class Blocks { - public static final Block CAVE_VINES = register("cave_vines", new CaveVinesBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY))); - public static final Block CAVE_VINES_PLANT = register("cave_vines_plant", new CaveVinesPlantBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY))); - public static final Block SPORE_BLOSSOM = register("spore_blossom", new SporeBlossomBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).instabreak().noCollission().sound(SoundType.SPORE_BLOSSOM).pushReaction(PushReaction.DESTROY))); -- public static final Block AZALEA = register("azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().instabreak().sound(SoundType.AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); -- public static final Block FLOWERING_AZALEA = register("flowering_azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().instabreak().sound(SoundType.FLOWERING_AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); -+ public static final Block AZALEA = register("azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().randomTicks().instabreak().sound(SoundType.AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); // Purpur -+ public static final Block FLOWERING_AZALEA = register("flowering_azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().randomTicks().instabreak().sound(SoundType.FLOWERING_AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); // Purpur - public static final Block MOSS_CARPET = register("moss_carpet", new CarpetBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS_CARPET).pushReaction(PushReaction.DESTROY))); - public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().sound(SoundType.PINK_PETALS).pushReaction(PushReaction.DESTROY))); - public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS).pushReaction(PushReaction.DESTROY))); +@@ -7380,6 +7380,7 @@ public class Blocks { + BlockBehaviour.Properties.of() + .mapColor(MapColor.PLANT) + .forceSolidOff() ++ .randomTicks() // Purpur + .instabreak() + .sound(SoundType.AZALEA) + .noOcclusion() +@@ -7392,6 +7393,7 @@ public class Blocks { + BlockBehaviour.Properties.of() + .mapColor(MapColor.PLANT) + .forceSolidOff() ++ .randomTicks() // Purpur + .instabreak() + .sound(SoundType.FLOWERING_AZALEA) + .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 6151c7d3bf9de065227c200b62dd03f7dba3f504..951a4fcdc1f47189ea7f36fc232faaf06310db59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0209-Shift-right-click-to-use-exp-for-mending.patch similarity index 98% rename from patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0209-Shift-right-click-to-use-exp-for-mending.patch index c23df70a7..b2e254f30 100644 --- a/patches/server/0210-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0209-Shift-right-click-to-use-exp-for-mending.patch @@ -36,7 +36,7 @@ index 1aa98f8ff062a906035c62875c454aeb0bc6f179..f8edb6b0d119582cf404b9931adc0948 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index affe433994ec5c5cd6cecd3989a5daa90db3b203..72ac438ec1a6628c861bdab9626c77666d4ba2b6 100644 +index ccd830286153405206110334cf58323315c02b7e..1cefa3b6bdd62ae7bf30da872012fc150905f5ae 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2051,6 +2051,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0210-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0211-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0210-Dolphins-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0211-Cows-naturally-aggressive-to-players-chance.patch similarity index 100% rename from patches/server/0212-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0211-Cows-naturally-aggressive-to-players-chance.patch diff --git a/patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0212-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 100% rename from patches/server/0213-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0212-Option-for-beds-to-explode-on-villager-sleep.patch diff --git a/patches/server/0214-Halloween-options-and-optimizations.patch b/patches/server/0213-Halloween-options-and-optimizations.patch similarity index 100% rename from patches/server/0214-Halloween-options-and-optimizations.patch rename to patches/server/0213-Halloween-options-and-optimizations.patch diff --git a/patches/server/0215-Config-for-grindstones.patch b/patches/server/0214-Config-for-grindstones.patch similarity index 100% rename from patches/server/0215-Config-for-grindstones.patch rename to patches/server/0214-Config-for-grindstones.patch diff --git a/patches/server/0216-UPnP-Port-Forwarding.patch b/patches/server/0215-UPnP-Port-Forwarding.patch similarity index 97% rename from patches/server/0216-UPnP-Port-Forwarding.patch rename to patches/server/0215-UPnP-Port-Forwarding.patch index 3c7e89aad..31bc35e97 100644 --- a/patches/server/0216-UPnP-Port-Forwarding.patch +++ b/patches/server/0215-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 1381e16fcac730eaecfc621a0c602bbf15d744f3..4a0e56f4fb6903ea5f4974052d9d55447a6254ea 100644 +index 0e9cf9f9ad81363cdeacd3da3a776aaad39045f9..ae8025a1c4280cde6b0503e0bcaf468f694a188c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -310,6 +310,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 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 af4bac165cbc39fb6959983a1116a6fb65af0ecb..72ad12175325091397459e06743875cce6df8d94 100644 +index 92fccfde550f4a01f860e3bcfcf953d3e6ae02e3..42efd14b59a2b7da3409895bdff49e83b6cb2fa5 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 @@ -47,6 +47,11 @@ public class Donkey extends AbstractChestedHorse { @@ -453,7 +453,7 @@ index af4bac165cbc39fb6959983a1116a6fb65af0ecb..72ad12175325091397459e06743875cc 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 f8dbea402f723bf38d7ab3f2468d1b02b7124560..3b1faa63e46a48e83ea672cf6da444a1d7e13270 100644 +index 13c2fe236661c42b5b45e2870d0cb59a890196cd..a77ffe2bd6ecce5433a72f96ba43c2a9401a1378 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 @@ -72,6 +72,11 @@ public class Horse extends AbstractHorse implements VariantHolder { @@ -467,7 +467,7 @@ index f8dbea402f723bf38d7ab3f2468d1b02b7124560..3b1faa63e46a48e83ea672cf6da444a1 + @Override protected void randomizeAttributes(RandomSource random) { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(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 30493e675d6308d65a4d4fa3fea601b6d7e4fa76..22abcf70f51a6752ab6d3f421366adb196e50dfc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -533,7 +533,7 @@ index a3c80184abcc2d884b692b90d267ab33a5406349..c80324d79b74fc620568347289f4e396 public boolean isTraderLlama() { return true; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index dcc1d71c2eeea48669651165868899ba4a797d48..813501e8aac1c121569cb996b47f0293d99c7e36 100644 +index 78c6077f3909e29a7f51f22d4f6bdecd7144f598..9493fa681327aa42751955029e5acac846d9a2a8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -63,6 +63,11 @@ public class ZombieHorse extends AbstractHorse { @@ -546,7 +546,7 @@ index dcc1d71c2eeea48669651165868899ba4a797d48..813501e8aac1c121569cb996b47f0293 + } + public static AttributeSupplier.Builder createAttributes() { - return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } 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 461247f3424b854032ccd45855c877aa85dd2e88..1d896c6c49705acd87416dc11a1d8ce205f7844e 100644 @@ -565,7 +565,7 @@ index 461247f3424b854032ccd45855c877aa85dd2e88..1d896c6c49705acd87416dc11a1d8ce2 protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); 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 eae0511698f383e11a0083c2b845479755f114f7..a8b58469fd8a1ed4ec0ce443cf05557903527bd7 100644 +index e8427b486efdea67079a40e2e001c0a3401711b2..efc25f256134f812d0a7ccd63ecdda899cba14dc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -79,6 +79,11 @@ public class Blaze extends Monster { @@ -709,7 +709,7 @@ index fa74eb7ee34f3f9b0026778bc0d37e977fc41d70..640f0c378a18cf0a820ad544bb3b172b 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 ecaccb4697bf2acaa6dc9034486fcf97c184aa71..d13eed85d5399cd6991b3ad90f05a5805a3a2678 100644 +index c54c364e5c680982a8c4c0285a7dd5289d2546fa..20d6fd08cc7b5964f74b7dd99ee117ac30273426 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -80,6 +80,11 @@ public class Giant extends Monster { @@ -773,7 +773,7 @@ index 43d4cea02ae94a8842cd4c1370d1b80e45d2b13c..a8b3431c67442c5440b063426a1adc42 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 e0ebc4c2d8dd718ce78d981a1d099e7482221f1f..1ad97267394d3717b1871336193cdc91f3ffb276 100644 +index f3925c70fc9f1fd0764058b1f2b1f050394c20ce..aae0bc60befb0504ee39bdd363f81686927483d6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -72,6 +72,11 @@ public class MagmaCube extends Slime { @@ -786,7 +786,7 @@ index e0ebc4c2d8dd718ce78d981a1d099e7482221f1f..1ad97267394d3717b1871336193cdc91 + } + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); + return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 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 bcb1912ea218fbb4b849ab84a7025202100b82c3..8591fb95aa3079d7722f445ce1b1743c1f02b9bc 100644 @@ -917,7 +917,7 @@ index d3f1d7b2a5721933b0a8d697f1f6456d96ff7b76..b44ffeb4cc0ef63fdd25683f60c5a20f protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); 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 b4d8a37343f801731bc7041f3391c1a70c2c9d01..e01c91385935b71bb9aa7259b95cb963140e8c94 100644 +index 509c7d79340673e213910ea74a5237332792a3b4..18c0cf991c2e8418d7fdd4c8dbd7487a301e890d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Stray.java +++ b/src/main/java/net/minecraft/world/entity/monster/Stray.java @@ -48,6 +48,11 @@ public class Stray extends AbstractSkeleton { @@ -965,10 +965,10 @@ index fae7e1e780d0429341adf21afd57ab230b06a0a7..834abf1160034543fe3e89fa1c8d4bb5 protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return dimensions.height - 0.28125F; 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 97087016883c8b5517d06755de19c672cc3f03bd..ee9d5933f74584452a1b27a392e7d36dac5b9bc9 100644 +index 1042f0804ba1b89680d625354a2de184b91da437..960b5e2c290f82501384f79d4653f47bedf926fb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -@@ -85,6 +85,11 @@ public class Vindicator extends AbstractIllager { +@@ -83,6 +83,11 @@ public class Vindicator extends AbstractIllager { return this.level().purpurConfig.vindicatorTakeDamageFromWater; } @@ -1013,10 +1013,10 @@ index 986183cab6c7d48a4716440dcc764bdd88373720..e97cb4e166c2e9ac6d93ed5b15350758 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 8cd6012b00dd5b307fd76ef0fd9c2cd92342a92a..15fd1af0773ba1254a429240444f48e68e29ee74 100644 +index 763b28965418f2146a64c1ecde41ac536502936a..c1125279b80bad8d7b6b273e709c412a0a578318 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -96,6 +96,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -109,6 +109,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { return this.level().purpurConfig.zoglinTakeDamageFromWater; } @@ -1077,10 +1077,10 @@ index e6b653c75a4c3306e06bfcadb4c4b53bccd5aad2..feba8a264bae656244f60296d0511a80 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 7a167887c40eccea4c216eb906a4a69006f72114..510ee1aee1dd106b5129c375ebb59c7950b8b989 100644 +index 5a42325d4acd32d1e8bd2f8dff1b43f3ef160535..4ba5cb5bf7d82ddfd888f5da9f0b111f9102bed8 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 -@@ -101,6 +101,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -124,6 +124,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return this.level().purpurConfig.hoglinTakeDamageFromWater; } @@ -1109,10 +1109,10 @@ index 20ecfcbe948d02bb61b8f673f5330d2f9e60c387..141fa7d4e1b81e90f4d63a3459c9a72b 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 b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc810797ec440f 100644 +index 532b14a6330a72e06b47ababee012762b8f76884..5ae1b1de412aeacbbc5e04299e94351d34631b4c 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 -@@ -68,6 +68,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -90,6 +90,11 @@ public class PiglinBrute extends AbstractPiglin { return this.level().purpurConfig.piglinBruteTakeDamageFromWater; } @@ -1122,7 +1122,7 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107 + } + 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); + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } 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 d2b6d094c4b93055a4e6622372c6a0a83bd992a3..19a3e88ce5ccdd74b049246eb51eaa0783d03d5d 100644 diff --git a/patches/server/0224-Potion-NamespacedKey.patch b/patches/server/0223-Potion-NamespacedKey.patch similarity index 81% rename from patches/server/0224-Potion-NamespacedKey.patch rename to patches/server/0223-Potion-NamespacedKey.patch index a78e2657b..b8daf5666 100644 --- a/patches/server/0224-Potion-NamespacedKey.patch +++ b/patches/server/0223-Potion-NamespacedKey.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Potion NamespacedKey diff --git a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591e630e3e7 100644 +index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45918b57c2 100644 --- a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java +++ b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java @@ -36,6 +36,7 @@ public class MobEffectInstance implements Comparable { @@ -16,37 +16,31 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 private final Optional factorData; public MobEffectInstance(MobEffect type) { -@@ -54,17 +55,36 @@ public class MobEffectInstance implements Comparable { +@@ -54,8 +55,14 @@ public class MobEffectInstance implements Comparable { this(type, duration, amplifier, ambient, visible, visible); } + // Purpur start -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean visible, @Nullable org.bukkit.NamespacedKey key) { -+ this(type, duration, amplifier, ambient, visible, visible, key); ++ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable org.bukkit.NamespacedKey key) { ++ this(type, duration, amplifier, ambient, showParticles, showIcon, null, key, type.createFactorData()); + } + // Purpur end + public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon) { -- this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData()); -+ // Purpur start -+ this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData(), (org.bukkit.NamespacedKey)null); -+ } -+ -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable org.bukkit.NamespacedKey key) { -+ this(type, duration, amplifier, ambient, showParticles, showIcon, (MobEffectInstance)null, type.createFactorData(), key); -+ // Purpur end +- this(type, duration, amplifier, ambient, showParticles, showIcon, null, type.createFactorData()); ++ this(type, duration, amplifier, ambient, showParticles, showIcon, null, null, type.createFactorData()); // Purpur } - public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable MobEffectInstance hiddenEffect, Optional factorCalculationData) { -+ // Purpur start -+ this(type, duration, amplifier, ambient, showParticles, showIcon, hiddenEffect, factorCalculationData, (org.bukkit.NamespacedKey) null); -+ } -+ -+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable MobEffectInstance hiddenEffect, Optional factorCalculationData, @Nullable org.bukkit.NamespacedKey key) { -+ // Purpur end + public MobEffectInstance( +@@ -66,6 +73,7 @@ public class MobEffectInstance implements Comparable { + boolean showParticles, + boolean showIcon, + @Nullable MobEffectInstance hiddenEffect, ++ @Nullable org.bukkit.NamespacedKey key, // Purpur + Optional factorCalculationData + ) { this.effect = type; - this.duration = duration; - this.amplifier = amplifier; +@@ -74,6 +82,7 @@ public class MobEffectInstance implements Comparable { this.ambient = ambient; this.visible = showParticles; this.showIcon = showIcon; @@ -54,7 +48,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 this.hiddenEffect = hiddenEffect; this.factorData = factorCalculationData; } -@@ -85,6 +105,7 @@ public class MobEffectInstance implements Comparable { +@@ -94,6 +103,7 @@ public class MobEffectInstance implements Comparable { this.ambient = that.ambient; this.visible = that.visible; this.showIcon = that.showIcon; @@ -62,7 +56,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 } public boolean update(MobEffectInstance that) { -@@ -129,6 +150,13 @@ public class MobEffectInstance implements Comparable { +@@ -138,6 +148,13 @@ public class MobEffectInstance implements Comparable { bl = true; } @@ -76,7 +70,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 return bl; } -@@ -172,6 +200,17 @@ public class MobEffectInstance implements Comparable { +@@ -181,6 +198,17 @@ public class MobEffectInstance implements Comparable { return this.showIcon; } @@ -94,7 +88,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 public boolean tick(LivingEntity entity, Runnable overwriteCallback) { if (this.hasRemainingDuration()) { int i = this.isInfiniteDuration() ? entity.tickCount : this.duration; -@@ -232,6 +271,12 @@ public class MobEffectInstance implements Comparable { +@@ -237,6 +265,12 @@ public class MobEffectInstance implements Comparable { string = string + ", Show Icon: false"; } @@ -107,16 +101,15 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 return string; } -@@ -247,7 +292,7 @@ public class MobEffectInstance implements Comparable { - return false; - } else { - MobEffectInstance mobEffectInstance = (MobEffectInstance)object; -- return this.duration == mobEffectInstance.duration && this.amplifier == mobEffectInstance.amplifier && this.ambient == mobEffectInstance.ambient && this.effect.equals(mobEffectInstance.effect); -+ return this.duration == mobEffectInstance.duration && this.amplifier == mobEffectInstance.amplifier && this.ambient == mobEffectInstance.ambient && this.effect.equals(mobEffectInstance.effect) && this.key == mobEffectInstance.key; // Purpur - add key - } +@@ -251,6 +285,7 @@ public class MobEffectInstance implements Comparable { + && this.duration == mobEffectInstance.duration + && this.amplifier == mobEffectInstance.amplifier + && this.ambient == mobEffectInstance.ambient ++ && this.key == mobEffectInstance.key // Purpur - add key + && this.effect.equals(mobEffectInstance.effect); } -@@ -272,6 +317,11 @@ public class MobEffectInstance implements Comparable { +@@ -275,6 +310,11 @@ public class MobEffectInstance implements Comparable { nbt.putBoolean("ambient", this.isAmbient()); nbt.putBoolean("show_particles", this.isVisible()); nbt.putBoolean("show_icon", this.showIcon()); @@ -128,7 +121,7 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 if (this.hiddenEffect != null) { CompoundTag compoundTag = new CompoundTag(); this.hiddenEffect.save(compoundTag); -@@ -306,6 +356,13 @@ public class MobEffectInstance implements Comparable { +@@ -311,6 +351,13 @@ public class MobEffectInstance implements Comparable { bl3 = nbt.getBoolean("show_icon"); } @@ -142,12 +135,12 @@ index bf304db1f9506d3e83d16cd632b9155c39346634..d94497083f3da89dbef6479ef8f70591 MobEffectInstance mobEffectInstance = null; if (nbt.contains("hidden_effect", 10)) { mobEffectInstance = loadSpecifiedEffect(type, nbt.getCompound("hidden_effect")); -@@ -318,7 +375,7 @@ public class MobEffectInstance implements Comparable { +@@ -325,7 +372,7 @@ public class MobEffectInstance implements Comparable { optional = Optional.empty(); } - return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, optional); -+ return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, optional, key); // Purpur - add key ++ return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, key, optional); // Purpur - add key } @Override diff --git a/patches/server/0225-Grindstone-API.patch b/patches/server/0224-Grindstone-API.patch similarity index 100% rename from patches/server/0225-Grindstone-API.patch rename to patches/server/0224-Grindstone-API.patch diff --git a/patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 100% rename from patches/server/0226-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0225-Ability-for-hoe-to-replant-crops-and-nether-warts.patch diff --git a/patches/server/0227-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0226-Turtle-eggs-random-tick-crack-chance.patch similarity index 100% rename from patches/server/0227-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0226-Turtle-eggs-random-tick-crack-chance.patch diff --git a/patches/server/0228-Mob-head-visibility-percent.patch b/patches/server/0227-Mob-head-visibility-percent.patch similarity index 98% rename from patches/server/0228-Mob-head-visibility-percent.patch rename to patches/server/0227-Mob-head-visibility-percent.patch index 21b0e8bef..8693603bf 100644 --- a/patches/server/0228-Mob-head-visibility-percent.patch +++ b/patches/server/0227-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ 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 9f542c8ddb25faaef00d5db354f1c1fe3cfc3c45..99c5cd7f20435be1f78cfed4f952e4c7ddfb69e8 100644 +index 3a1b8a94642339a96d8f7391714fae1648dc5149..21019c1484a281e6cbcaf1c3e462efa106fee5eb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1049,9 +1049,20 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0229-Configurable-valid-characters-for-usernames.patch b/patches/server/0228-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0229-Configurable-valid-characters-for-usernames.patch rename to patches/server/0228-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0230-Shears-can-have-looting-enchantment.patch b/patches/server/0229-Shears-can-have-looting-enchantment.patch similarity index 98% rename from patches/server/0230-Shears-can-have-looting-enchantment.patch rename to patches/server/0229-Shears-can-have-looting-enchantment.patch index 7cce01f0a..b047a28aa 100644 --- a/patches/server/0230-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0229-Shears-can-have-looting-enchantment.patch @@ -126,10 +126,10 @@ index df8e19a3adfa7dcc065160e8305d0f12c7c37887..b75d07f3af4addbb306ecb6baacf1607 } diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -index 859435f747ceef860cb4e9e825a7353ea3b90798..fc2c35f57436371cb0111aedfd289ac95d506d07 100644 +index cc83aa539f8538fbaed8a3e52d9d9d8901e4793d..4f8d8665cb90b746dc59913ec270839c4e5dba91 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java -@@ -128,6 +128,12 @@ public enum EnchantmentCategory { +@@ -120,6 +120,12 @@ public enum EnchantmentCategory { public boolean canEnchant(Item item) { return item instanceof BowItem || item instanceof CrossbowItem; } @@ -162,7 +162,7 @@ index 7f1ffc0ac402fcf0ec086986e959ecc9f78dde03..1351d52374d1c2367932e5ecd5f46379 public int getMinCost(int level) { return 15 + (level - 1) * 9; diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -index 5045e9d133f1675c2498f9bdd46797da8d2924e0..015ea2ecac493c88f45d6ad66c2ef346252b4ec8 100644 +index c1be4eb145e1a7e7749d24958bfed5c8268f1131..40d385c7865726545bb66f9a1856ed4e73e60202 100644 --- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java @@ -72,6 +72,7 @@ public class CraftEnchantment extends Enchantment implements Handleable> statusEffects) { diff --git a/src/main/java/net/minecraft/world/food/Foods.java b/src/main/java/net/minecraft/world/food/Foods.java -index b16d9e2eaa589f19c563ee70b1a56d67dbcdecb0..71beab673f04cd051c46ea37f8c847316885d38d 100644 +index 4569cf30b33167a415256a8542820557ad38f89e..9c65eefa855f3622b6c9ae2a698cf332ba225c7f 100644 --- a/src/main/java/net/minecraft/world/food/Foods.java +++ b/src/main/java/net/minecraft/world/food/Foods.java -@@ -4,6 +4,9 @@ import net.minecraft.world.effect.MobEffectInstance; +@@ -4,6 +4,8 @@ import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; public class Foods { + public static final java.util.Map ALL_PROPERTIES = new java.util.HashMap<>(); // Purpur + public static final java.util.Map DEFAULT_PROPERTIES = new java.util.HashMap<>(); // Purpur -+ - public static final FoodProperties APPLE = (new FoodProperties.Builder()).nutrition(4).saturationMod(0.3F).build(); - public static final FoodProperties BAKED_POTATO = (new FoodProperties.Builder()).nutrition(5).saturationMod(0.6F).build(); - public static final FoodProperties BEEF = (new FoodProperties.Builder()).nutrition(3).saturationMod(0.3F).meat().build(); + public static final FoodProperties APPLE = new FoodProperties.Builder().nutrition(4).saturationMod(0.3F).build(); + public static final FoodProperties BAKED_POTATO = new FoodProperties.Builder().nutrition(5).saturationMod(0.6F).build(); + public static final FoodProperties BEEF = new FoodProperties.Builder().nutrition(3).saturationMod(0.3F).meat().build(); diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index e83ea53da012f3dcaa1f53bf6082a17a69e6ee13..cf68dca4096556b0c2594c76fcf113419e56dae0 100644 +index bb2103a488964f25335393fa91e8ae5749eca333..249c887af68f56739c3609bad2405ba2cbe11762 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -1367,6 +1367,13 @@ public class Items { +@@ -1715,6 +1715,13 @@ public class Items { ((BlockItem)item).registerBlocks(Item.BY_BLOCK, item); } diff --git a/patches/server/0238-Max-joins-per-second.patch b/patches/server/0237-Max-joins-per-second.patch similarity index 93% rename from patches/server/0238-Max-joins-per-second.patch rename to patches/server/0237-Max-joins-per-second.patch index 96b02d210..f80e8148a 100644 --- a/patches/server/0238-Max-joins-per-second.patch +++ b/patches/server/0237-Max-joins-per-second.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Max joins per second When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 4716f8bd8a64d4f20f0d5957c1e7fabf63020f43..b41cab778f446434b788946ea9d3e02c152e570e 100644 +index a536ebcf29d8ef0ed32863bd8d5e70f7a0636e8d..9e31954212b1d6162dca2fbc91d373e908560335 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -569,11 +569,20 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -570,11 +570,20 @@ public class Connection extends SimpleChannelInboundHandler> { private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world private static int joinAttemptsThisTick; // Paper - Buffer joins to world private static int currTick; // Paper - Buffer joins to world diff --git a/patches/server/0239-Configurable-minimum-demand-for-trades.patch b/patches/server/0238-Configurable-minimum-demand-for-trades.patch similarity index 100% rename from patches/server/0239-Configurable-minimum-demand-for-trades.patch rename to patches/server/0238-Configurable-minimum-demand-for-trades.patch diff --git a/patches/server/0240-Lobotomize-stuck-villagers.patch b/patches/server/0239-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/server/0240-Lobotomize-stuck-villagers.patch rename to patches/server/0239-Lobotomize-stuck-villagers.patch diff --git a/patches/server/0241-Option-for-villager-display-trade-item.patch b/patches/server/0240-Option-for-villager-display-trade-item.patch similarity index 86% rename from patches/server/0241-Option-for-villager-display-trade-item.patch rename to patches/server/0240-Option-for-villager-display-trade-item.patch index 69a2d99dd..e06a0c9ae 100644 --- a/patches/server/0241-Option-for-villager-display-trade-item.patch +++ b/patches/server/0240-Option-for-villager-display-trade-item.patch @@ -5,17 +5,17 @@ Subject: [PATCH] Option for villager display trade item diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java b/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -index c3e0b1f11b58668f9f24eb421abc340e1b49dfac..d809fa4f96e2c528075f544355397903996ecaf6 100644 +index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45ce06ded55 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -@@ -42,6 +42,7 @@ public class ShowTradesToPlayer extends Behavior { +@@ -46,6 +46,7 @@ public class ShowTradesToPlayer extends Behavior { @Override public boolean canStillUse(ServerLevel world, Villager entity, long time) { + if (!entity.level().purpurConfig.villagerDisplayTradeItem) return false; // Purpur - return this.checkExtraStartConditions(world, entity) && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); - } - + return this.checkExtraStartConditions(world, entity) + && this.lookTime > 0 + && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 0135c477ca5e8401177083bcd41573d7e24ec850..a1b2c5ea3687fc0cfc3c1b9e170aa801c9cc541c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 92% rename from patches/server/0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index e2a05ba7e..0b5fcda87 100644 --- a/patches/server/0242-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0241-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -index 9b897cf53f4bb5d366e6ac88dbed93c59d8fe541..fc61f93e04e5bc893b89c746deb2b89c5be0d602 100644 +index 75884a9e69a28404752c1a2cf854335bb78cac01..1fd69e6ab765236b1a09e2791188d1eb7f12ecbb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -77,6 +77,6 @@ public abstract class WaterAnimal extends PathfinderMob { +@@ -78,6 +78,6 @@ public abstract class WaterAnimal extends PathfinderMob { i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i); j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j); // Paper end - Make water animal spawn height configurable diff --git a/patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0242-Config-for-mob-last-hurt-by-player-time.patch similarity index 100% rename from patches/server/0243-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0242-Config-for-mob-last-hurt-by-player-time.patch diff --git a/patches/server/0244-Anvil-repair-damage-options.patch b/patches/server/0243-Anvil-repair-damage-options.patch similarity index 98% rename from patches/server/0244-Anvil-repair-damage-options.patch rename to patches/server/0243-Anvil-repair-damage-options.patch index 3b98f2c86..1b5dc7e93 100644 --- a/patches/server/0244-Anvil-repair-damage-options.patch +++ b/patches/server/0243-Anvil-repair-damage-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Anvil repair/damage options diff --git a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java -index 9fca247f51e8b4d445f61ab5c16faf3928626deb..583bb1282fedcab75dbe4359a9f53b76a538d903 100644 +index 18d2ff1baa2db0b97f2565eac006fbc4e81022fa..58d29c89e8e54fac143982c40c9aecc855b6cfd5 100644 --- a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java @@ -62,6 +62,54 @@ public class AnvilBlock extends FallingBlock { diff --git a/patches/server/0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 100% rename from patches/server/0245-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0244-Option-to-disable-turtle-egg-trampling-with-feather-.patch diff --git a/patches/server/0246-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0245-Add-toggle-for-enchant-level-clamping.patch similarity index 95% rename from patches/server/0246-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0245-Add-toggle-for-enchant-level-clamping.patch index c2fcb9ec6..ab2a68da0 100644 --- a/patches/server/0246-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0245-Add-toggle-for-enchant-level-clamping.patch @@ -18,10 +18,10 @@ index 829d84f48c7149ec1ba0b71b0f43ef19fed99380..f6664447c45b1d6f3371af7bed8b1175 } diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index 2048899f8e4c8211e8dde0d11148d647678009fa..1eec84e217f6dc929091fa7451cd235ef3623822 100644 +index 496c47eb3b13ba620fde1a2bc96f886c5b01e1de..06ca2cd5ae2a25205a37c783753ef7d56e72df94 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -46,7 +46,7 @@ public class EnchantmentHelper { +@@ -47,7 +47,7 @@ public class EnchantmentHelper { } public static int getEnchantmentLevel(CompoundTag nbt) { diff --git a/patches/server/0247-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0246-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0247-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0246-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0248-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0247-Implement-configurable-search-radius-for-villagers-t.patch similarity index 100% rename from patches/server/0248-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0247-Implement-configurable-search-radius-for-villagers-t.patch diff --git a/patches/server/0249-Stonecutter-damage.patch b/patches/server/0248-Stonecutter-damage.patch similarity index 88% rename from patches/server/0249-Stonecutter-damage.patch rename to patches/server/0248-Stonecutter-damage.patch index a418d32e2..6d36c0321 100644 --- a/patches/server/0249-Stonecutter-damage.patch +++ b/patches/server/0248-Stonecutter-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 5c9d49b40a940df724101bef339a9ac5a31fd025..8ed6b8ddc76bda3d4f298b3076dba9275cec93d9 100644 +index d8c5fb5432f0b09124d7f4dbc7b50859c1a84cc7..925654e40a170d1a4af0b9fcde1b9b359f833064 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -@@ -102,6 +102,8 @@ public class CombatTracker { +@@ -100,6 +100,8 @@ public class CombatTracker { // Purpur start if (damageSource.isScissors()) { return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob); @@ -83,7 +83,7 @@ index 23c7f22dacc570837120c28e0a57f8c9155e92fc..2c1fdc031bcfc8f39692312e9ce9c5a3 public DamageSource inFire() { diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java -index 77ae7b8ab24935d046cce1f8f7f476310876f9df..579abfbe791052507b15c14d8c81e39b2fdd6520 100644 +index 7c41b940dd915a27856f6fa6f9e536e296deeb53..51ba321172acc9908aac456f8209dd6af6987aa8 100644 --- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java @@ -99,4 +99,14 @@ public class StonecutterBlock extends Block { @@ -102,10 +102,10 @@ index 77ae7b8ab24935d046cce1f8f7f476310876f9df..579abfbe791052507b15c14d8c81e39b + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881feb9dd4a89 100644 +index b7f9793900d365f91d6e30dd22881a30e4250ac8..a0527e9f9c84353d2f4e56bf2f5341fd99daad94 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -471,7 +471,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -475,7 +475,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { return BlockPathTypes.BLOCKED; } else { // Paper end - Do not load chunks during pathfinding @@ -114,15 +114,15 @@ index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881fe return BlockPathTypes.DANGER_OTHER; } -@@ -504,7 +504,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { - } else if (!blockState.is(BlockTags.TRAPDOORS) && !blockState.is(Blocks.LILY_PAD) && !blockState.is(Blocks.BIG_DRIPLEAF)) { - if (blockState.is(Blocks.POWDER_SNOW)) { - return BlockPathTypes.POWDER_SNOW; -- } else if (!blockState.is(Blocks.CACTUS) && !blockState.is(Blocks.SWEET_BERRY_BUSH)) { -+ } else if (!blockState.is(Blocks.CACTUS) && !blockState.is(Blocks.SWEET_BERRY_BUSH) && !blockState.is(Blocks.STONECUTTER)) { // Purpur - if (blockState.is(Blocks.HONEY_BLOCK)) { - return BlockPathTypes.STICKY_HONEY; - } else if (blockState.is(Blocks.COCOA)) { +@@ -509,7 +509,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { + return BlockPathTypes.TRAPDOOR; + } else if (blockState.is(Blocks.POWDER_SNOW)) { + return BlockPathTypes.POWDER_SNOW; +- } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH)) { ++ } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH) || blockState.is(Blocks.STONECUTTER)) { // Purpur + return BlockPathTypes.DAMAGE_OTHER; + } else if (blockState.is(Blocks.HONEY_BLOCK)) { + return BlockPathTypes.STICKY_HONEY; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 171efb1ab482d0042bead18df0880f038cfda16a..b82a6143526bd1d4ecd4591c1253cdb0b913fe09 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/patches/server/0250-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0249-Configurable-damage-settings-for-magma-blocks.patch similarity index 100% rename from patches/server/0250-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0249-Configurable-damage-settings-for-magma-blocks.patch diff --git a/patches/server/0251-Add-config-for-snow-on-blue-ice.patch b/patches/server/0250-Add-config-for-snow-on-blue-ice.patch similarity index 100% rename from patches/server/0251-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0250-Add-config-for-snow-on-blue-ice.patch diff --git a/patches/server/0252-Skeletons-eat-wither-roses.patch b/patches/server/0251-Skeletons-eat-wither-roses.patch similarity index 100% rename from patches/server/0252-Skeletons-eat-wither-roses.patch rename to patches/server/0251-Skeletons-eat-wither-roses.patch diff --git a/patches/server/0253-Enchantment-Table-Persists-Lapis.patch b/patches/server/0252-Enchantment-Table-Persists-Lapis.patch similarity index 92% rename from patches/server/0253-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0252-Enchantment-Table-Persists-Lapis.patch index e53ec1480..506dc5fc1 100644 --- a/patches/server/0253-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0252-Enchantment-Table-Persists-Lapis.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 343f44db579839eb61376f876b5eff2e615dc2e5..849b6a30d412d10f1e2e6e88f2d8d990e4a720e4 100644 +index e6935b6632c7a7e07f4da459c95f564356242f98..1a686780e5aadcbdcfceb770ce8e283b38115209 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java @@ -40,6 +40,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; @@ -62,7 +62,7 @@ index 343f44db579839eb61376f876b5eff2e615dc2e5..849b6a30d412d10f1e2e6e88f2d8d990 int j; for (j = 0; j < 3; ++j) { -@@ -344,6 +377,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -351,6 +384,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { public void removed(net.minecraft.world.entity.player.Player player) { super.removed(player); this.access.execute((world, blockposition) -> { @@ -71,7 +71,7 @@ index 343f44db579839eb61376f876b5eff2e615dc2e5..849b6a30d412d10f1e2e6e88f2d8d990 }); } diff --git a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java -index 790cf30c2bfd4e2530ff563dfcf05e25554248b3..ba69e9b37ce9f2d8b439d471e6de770da38d6971 100644 +index af3a8d5f4d80b22d67092bb0c2af5da31b2e3bce..7d5233a96dfa9fca2255e8e44b02179313087ef6 100644 --- a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java @@ -30,6 +30,8 @@ import net.minecraft.world.level.pathfinder.PathComputationType; @@ -83,7 +83,7 @@ index 790cf30c2bfd4e2530ff563dfcf05e25554248b3..ba69e9b37ce9f2d8b439d471e6de770d public class EnchantmentTableBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(EnchantmentTableBlock::new); -@@ -128,4 +130,18 @@ public class EnchantmentTableBlock extends BaseEntityBlock { +@@ -137,4 +139,18 @@ public class EnchantmentTableBlock extends BaseEntityBlock { public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return false; } @@ -103,7 +103,7 @@ index 790cf30c2bfd4e2530ff563dfcf05e25554248b3..ba69e9b37ce9f2d8b439d471e6de770d + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java -index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e8bc8455d 100644 +index a912a1ccd3816a9c398946a8724bd3c882f4e9c3..af936b9a2daff9974c2f6ca3c8f5541db94cb40d 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/EnchantmentTableBlockEntity.java @@ -24,6 +24,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable @@ -119,17 +119,17 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e nbt.putString("CustomName", Component.Serializer.toJson(this.name)); } + nbt.putInt("Purpur.Lapis", this.lapis); // Purpur - } -@@ -44,6 +46,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable + @Override +@@ -43,6 +45,7 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable if (nbt.contains("CustomName", 8)) { this.name = io.papermc.paper.util.MCUtil.getBaseComponentFromNbt("CustomName", nbt); // Paper - Catch ParseException } + this.lapis = nbt.getInt("Purpur.Lapis"); // Purpur - } + public static void bookAnimationTick(Level world, BlockPos pos, BlockState state, EnchantmentTableBlockEntity blockEntity) { @@ -117,4 +120,14 @@ public class EnchantmentTableBlockEntity extends BlockEntity implements Nameable public Component getCustomName() { return this.name; diff --git a/patches/server/0254-Spark-Profiler.patch b/patches/server/0253-Spark-Profiler.patch similarity index 100% rename from patches/server/0254-Spark-Profiler.patch rename to patches/server/0253-Spark-Profiler.patch diff --git a/patches/server/0255-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0254-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 95% rename from patches/server/0255-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0254-Option-to-disable-kick-for-out-of-order-chat.patch index 738ca141f..9d3f78cc2 100644 --- a/patches/server/0255-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0254-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 72ac438ec1a6628c861bdab9626c77666d4ba2b6..9107cc4860f81460f3424aeac4ca026b891ab47f 100644 +index 1cefa3b6bdd62ae7bf30da872012fc150905f5ae..db42bf7c5604f32b9b06accb4bbc004ed264a3c2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1716,7 +1716,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0256-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0255-Config-for-sculk-shrieker-can_summon-state.patch similarity index 100% rename from patches/server/0256-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0255-Config-for-sculk-shrieker-can_summon-state.patch diff --git a/patches/server/0257-Config-to-not-let-coral-die.patch b/patches/server/0256-Config-to-not-let-coral-die.patch similarity index 93% rename from patches/server/0257-Config-to-not-let-coral-die.patch rename to patches/server/0256-Config-to-not-let-coral-die.patch index 6e5d7b438..f57e87cf2 100644 --- a/patches/server/0257-Config-to-not-let-coral-die.patch +++ b/patches/server/0256-Config-to-not-let-coral-die.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to not let coral die diff --git a/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java b/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -index 2a65c7b859b1126dbac9819a01ca2652e20498a9..3192edee23b899107b17e354ddfb3159ac2ef429 100644 +index ffcb4849d83e0f02adbb106f4543bb4898678267..700108e84cf3836a0542c5e04856a9fe254794e9 100644 --- a/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -@@ -39,6 +39,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat +@@ -38,6 +38,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat } protected static boolean scanForWater(BlockState state, BlockGetter world, BlockPos pos) { diff --git a/patches/server/0258-Add-local-difficulty-api.patch b/patches/server/0257-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0258-Add-local-difficulty-api.patch rename to patches/server/0257-Add-local-difficulty-api.patch diff --git a/patches/server/0259-Add-toggle-for-RNG-manipulation.patch b/patches/server/0258-Add-toggle-for-RNG-manipulation.patch similarity index 87% rename from patches/server/0259-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0258-Add-toggle-for-RNG-manipulation.patch index 516260ad9..538ac6444 100644 --- a/patches/server/0259-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0258-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 7f69afbb8f6dd510f5715145b78d8ec97249783a..62fc774c91b12b100b982b1ff8fbb2495a5551ee 100644 +index 2cac12d2b788b0962b719a83b43dc23177b76ac6..ec6187bc3f445acb86e69161ab1b82248b6e99e0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -597,7 +597,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -20,15 +20,15 @@ index 7f69afbb8f6dd510f5715145b78d8ec97249783a..62fc774c91b12b100b982b1ff8fbb249 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 2ec8a55650beff50676759617896da2db09dddc0..cba0823bfd10a3e7fd3a7548b9cc11a77ce07ce7 100644 +index a6b24a042bd75555895d5404b155154c1d994d57..4c607abf5e6235b2f325cf9eff1676f565d251f5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -44,7 +44,7 @@ public class Squid extends WaterAnimal { public Squid(EntityType type, Level world) { super(type, world); -- //this.random.setSeed((long)this.getId()); // Paper - Share random for entities to make them more random -+ if (!world.purpurConfig.entitySharedRandom) this.random.setSeed((long) this.getId()); // Paper - Share random for entities to make them more random // Purpur +- //this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random ++ if (!world.purpurConfig.entitySharedRandom) this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random // Purpur this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } diff --git a/patches/server/0260-Send-client-custom-name-of-BE.patch b/patches/server/0259-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/server/0260-Send-client-custom-name-of-BE.patch rename to patches/server/0259-Send-client-custom-name-of-BE.patch diff --git a/patches/server/0261-Allow-custom-ChatDecorators.patch b/patches/server/0260-Allow-custom-ChatDecorators.patch similarity index 94% rename from patches/server/0261-Allow-custom-ChatDecorators.patch rename to patches/server/0260-Allow-custom-ChatDecorators.patch index 8c3d080d5..09fd7fd7e 100644 --- a/patches/server/0261-Allow-custom-ChatDecorators.patch +++ b/patches/server/0260-Allow-custom-ChatDecorators.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow custom ChatDecorators Requires NMS to utilize. I'll write an API for this once our upstreams calm down with the changes. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f7b3dd47d16c3d0e0f374ff31bb8acd1127326cf..00c17b658c8fff133868d2a260dffa8d1171f964 100644 +index 1e017c7c33fd70803312efdd61e090cb8aaf2254..98c49c3844edfb52d5b1ff32fa5e49d46fa8a20c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2859,6 +2859,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements BehaviorContro +@@ -59,9 +59,9 @@ public abstract class Behavior implements BehaviorContro this.status = Behavior.Status.RUNNING; int i = this.minDuration + world.getRandom().nextInt(this.maxDuration + 1 - this.minDuration); - this.endTimestamp = time + (long)i; + this.endTimestamp = time + i; - this.timing.startTiming(); // Paper - behavior timings + //this.timing.startTiming(); // Paper - behavior timings // Purpur this.start(world, entity, time); @@ -698,7 +698,7 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..4f3a1c2bfaec6787c8fc62c7df13c512 return true; } else { return false; -@@ -72,13 +72,13 @@ public abstract class Behavior implements BehaviorContro +@@ -73,13 +73,13 @@ public abstract class Behavior implements BehaviorContro @Override public final void tickOrStop(ServerLevel world, E entity, long time) { @@ -711,14 +711,14 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..4f3a1c2bfaec6787c8fc62c7df13c512 } - this.timing.stopTiming(); // Paper - behavior timings + //this.timing.stopTiming(); // Paper - behavior timings // Purpur - } + protected void tick(ServerLevel world, E entity, long time) { diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c10fdf4dda 100644 +index de2dfaf3cb41bafd48fa4699096a0a7304cd3201..f5ee1a4cc4aa85d14008900efb48204917259b09 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -@@ -46,10 +46,10 @@ public abstract class Sensor { +@@ -53,10 +53,10 @@ public abstract class Sensor { if (--this.timeToTick <= 0L) { // Paper start - configurable sensor tick rate and timings this.timeToTick = java.util.Objects.requireNonNullElse(world.paperConfig().tickRates.sensor.get(entity.getType(), this.configKey), this.scanRate); @@ -729,8 +729,8 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 - this.timing.stopTiming(); // Paper - sensor timings + //this.timing.stopTiming(); // Paper - sensor timings // Purpur } - } + diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java index 02b2cd49c2db6ba1688f6862e2c791947cec2fcf..c5bd99e63925ec27b89b3ca00583b5c8a8a74628 100644 --- a/src/main/java/net/minecraft/world/level/Level.java diff --git a/patches/server/0263-Remove-Mojang-Profiler.patch b/patches/server/0262-Remove-Mojang-Profiler.patch similarity index 96% rename from patches/server/0263-Remove-Mojang-Profiler.patch rename to patches/server/0262-Remove-Mojang-Profiler.patch index b4d6e3f6e..75986b086 100644 --- a/patches/server/0263-Remove-Mojang-Profiler.patch +++ b/patches/server/0262-Remove-Mojang-Profiler.patch @@ -39,22 +39,19 @@ index 0026235782aeb5e663faa3aaf11040635cd12204..48a4f26eec06777b4ae165db6566c1f6 } diff --git a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -index 05e1c94268cf5c6897807cd7acced652856a09ea..16ff9771fa57b17a50e0930b95a86da8e9d170c0 100644 +index 9f5c3ec2eae9b30bdb8dbcb328d7f701cb7aeb9d..e7cc8105fff9cb952eabfd006e0a4e4638091019 100644 --- a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java +++ b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -@@ -43,9 +43,9 @@ public class BuildContexts> { +@@ -42,7 +42,7 @@ public class BuildContexts> { ChainModifiers chainModifiers = flags; List list = sources; if (contextChain.getStage() != Stage.EXECUTE) { -- context.profiler().push(() -> { -+ /*context.profiler().push(() -> { // Purpur - return "prepare " + this.commandInput; -- }); -+ });*/ // Purpur +- context.profiler().push(() -> "prepare " + this.commandInput); ++ //context.profiler().push(() -> "prepare " + this.commandInput); // Purpur try { - for(int i = context.forkLimit(); contextChain.getStage() != Stage.EXECUTE; contextChain = contextChain.nextStage()) { -@@ -88,7 +88,7 @@ public class BuildContexts> { + for (int i = context.forkLimit(); contextChain.getStage() != Stage.EXECUTE; contextChain = contextChain.nextStage()) { +@@ -86,7 +86,7 @@ public class BuildContexts> { } } } finally { @@ -64,18 +61,15 @@ index 05e1c94268cf5c6897807cd7acced652856a09ea..16ff9771fa57b17a50e0930b95a86da8 } diff --git a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java -index 821dc4aeaf48460000682604fba51b340b9738e7..9882e89abcce1bf0b484424dd0a25bd3bbb841b4 100644 +index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea7f00751b 100644 --- a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java +++ b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java -@@ -23,9 +23,9 @@ public class ExecuteCommand> implements Unbo +@@ -23,7 +23,7 @@ public class ExecuteCommand> implements Unbo @Override public void execute(T executionCommandSource, ExecutionContext executionContext, Frame frame) { -- executionContext.profiler().push(() -> { -+ /*executionContext.profiler().push(() -> { // Purpur - return "execute " + this.commandInput; -- }); -+ });*/ // Purpur +- executionContext.profiler().push(() -> "execute " + this.commandInput); ++ //executionContext.profiler().push(() -> "execute " + this.commandInput); // Purpur try { executionContext.incrementCost(); @@ -86,10 +80,10 @@ index 821dc4aeaf48460000682604fba51b340b9738e7..9882e89abcce1bf0b484424dd0a25bd3 - executionContext.profiler().pop(); + //executionContext.profiler().pop(); // Purpur } - } + } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 67a5317645f3a259ee30de886d13774c0467ae2f..006f9de7ee2d2c4bae253a08aa41c9cff66d1e94 100644 +index ff08e054d3ea168011a9f7f01e106721449d5e21..5a736a99e97003506cedc697d7b33105d6fe40be 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -341,13 +341,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop reload(PreparableReloadListener.PreparationBarrier synchronizer, ResourceManager manager, ProfilerFiller prepareProfiler, ProfilerFiller applyProfiler, Executor prepareExecutor, Executor applyExecutor) { +@@ -16,11 +16,11 @@ public interface ResourceManagerReloadListener extends PreparableReloadListener + Executor applyExecutor + ) { return synchronizer.wait(Unit.INSTANCE).thenRunAsync(() -> { - applyProfiler.startTick(); - applyProfiler.push("listener"); @@ -911,7 +905,7 @@ index 9ddbfcf80d9a381dace78a62880f85a4d767e0eb..7383c7d3820dce06108eaafd236a7c6c } diff --git a/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java b/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java -index 196c7331138fee2822c76aacd136f9da040e0049..c6c30d99399c5cde2b0ec2f320d81d952b422d78 100644 +index ce3c3a29152ae6cc91d30c807eb5ffc7105dc485..aefc896b5e85f96f9014697debf75952e4b97874 100644 --- a/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java +++ b/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java @@ -55,7 +55,7 @@ public class ActiveProfiler implements ProfileCollector { @@ -931,7 +925,7 @@ index 196c7331138fee2822c76aacd136f9da040e0049..c6c30d99399c5cde2b0ec2f320d81d95 + //this.pop(); // Purpur this.started = false; if (!this.path.isEmpty()) { - LOGGER.error("Profiler tick ended before path was fully popped (remainder: '{}'). Mismatched push/pop?", LogUtils.defer(() -> { + LOGGER.error( @@ -93,7 +93,7 @@ public class ActiveProfiler implements ProfileCollector { @Override @@ -961,7 +955,7 @@ index 196c7331138fee2822c76aacd136f9da040e0049..c6c30d99399c5cde2b0ec2f320d81d95 private ActiveProfiler.PathEntry getCurrentEntry() { diff --git a/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java b/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java -index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b477b2adc7a 100644 +index a715ecf4a8ac91d3e5e5c6269d89e54b2c1cd279..223c3665126c576eddb1a8f7c9f5bc60c6ff9818 100644 --- a/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java +++ b/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java @@ -6,32 +6,44 @@ import net.minecraft.util.profiling.metrics.MetricCategory; @@ -1010,7 +1004,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 + @io.papermc.paper.annotation.DoNotUse // Purpur void incrementCounter(Supplier markerGetter, int num); - static ProfilerFiller tee(final ProfilerFiller a, final ProfilerFiller b) { + static ProfilerFiller tee(ProfilerFiller a, ProfilerFiller b) { @@ -41,62 +53,62 @@ public interface ProfilerFiller { return b == InactiveProfiler.INSTANCE ? a : new ProfilerFiller() { @Override @@ -1095,7 +1089,7 @@ index 2e6e8eac987c4ef6b2dcd3de592d8a51d2b29792..863343a87fe34d72f04af89d75268b47 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b197a0eb12b48f980301a1ee4b583af109c37052..8733183208926bc30ecec8329a4080230bc2afab 100644 +index ec6187bc3f445acb86e69161ab1b82248b6e99e0..ac1f4576476a800adf484912baaea9f2b7b546d0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -861,7 +861,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -1437,10 +1431,10 @@ index 380834677c93a23879a9e53173fa835ebd22f584..1d1688fafc438a5957096118790d44fb } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce750a7cd7 100644 +index d78e1f6191738d426968efc24e734f04b0fc7edb..a2cca3d528625d49411a94e2b6ec578fec9b10da 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -105,8 +105,8 @@ public class GoalSelector { +@@ -104,8 +104,8 @@ public class GoalSelector { } public void tick() { @@ -1449,9 +1443,9 @@ index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce + //ProfilerFiller profilerFiller = this.profiler.get(); // Purpur + //profilerFiller.push("goalCleanup"); // Purpur - for(WrappedGoal wrappedGoal : this.availableGoals) { - if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { -@@ -123,8 +123,8 @@ public class GoalSelector { + for (WrappedGoal wrappedGoal : this.availableGoals) { + if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { // Paper - Perf: optimize goal types by removing streams +@@ -122,8 +122,8 @@ public class GoalSelector { } } @@ -1460,9 +1454,9 @@ index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce + //profilerFiller.pop(); // Purpur + //profilerFiller.push("goalUpdate"); // Purpur - for(WrappedGoal wrappedGoal2 : this.availableGoals) { + for (WrappedGoal wrappedGoal2 : this.availableGoals) { // Paper start -@@ -144,13 +144,13 @@ public class GoalSelector { +@@ -143,13 +143,13 @@ public class GoalSelector { } } @@ -1477,9 +1471,9 @@ index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce + //ProfilerFiller profilerFiller = this.profiler.get(); // Purpur + //profilerFiller.push("goalTick"); // Purpur - for(WrappedGoal wrappedGoal : this.availableGoals) { + for (WrappedGoal wrappedGoal : this.availableGoals) { if (wrappedGoal.isRunning() && (tickAll || wrappedGoal.requiresUpdateEveryTick())) { -@@ -158,7 +158,7 @@ public class GoalSelector { +@@ -157,7 +157,7 @@ public class GoalSelector { } } @@ -1489,17 +1483,17 @@ index 2d63ee8fef87264d4b61290effa6ba86a787aa61..bb068bffc9e2f035dee90276156129ce public Set getAvailableGoals() { diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index a04fb58c29b462e20ed0b702cef478e3985b7cd2..43699f94dd0fd97513242fcdbc4ec4d0dc260f8e 100644 +index dafacdb43de86d328194dcfef284286fceb3754f..8a6d716706bfcd551125ac1e69dfec6989196e82 100644 --- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java +++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -@@ -173,12 +173,12 @@ public abstract class PathNavigation { +@@ -172,12 +172,12 @@ public abstract class PathNavigation { } } // Paper end - EntityPathfindEvent - this.level.getProfiler().push("pathfind"); + //this.level.getProfiler().push("pathfind"); // Purpur BlockPos blockPos = useHeadPos ? this.mob.blockPosition().above() : this.mob.blockPosition(); - int i = (int)(followRange + (float)range); + int i = (int)(followRange + range); PathNavigationRegion pathNavigationRegion = new PathNavigationRegion(this.level, blockPos.offset(-i, -i, -i), blockPos.offset(i, i, i)); Path path = this.pathFinder.findPath(pathNavigationRegion, this.mob, positions, followRange, distance, this.maxVisitedNodesMultiplier); - this.level.getProfiler().pop(); @@ -1591,10 +1585,10 @@ index baca84088350c82569fb7969136c65bbc4c52f5b..8616a8c09a21f576a07daaa93ebf64e0 } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 3be70e054c658d34c4aa598ff70c63fa2cff7982..d6340d0a1308bafd3ba176562bf08dcadec02b34 100644 +index 907cdc32c30291f5668c806b874da0fbe0754738..37f1d3c656997906cef57d9dbefc226d04fc65fe 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -215,13 +215,13 @@ public class Frog extends Animal implements VariantHolder { +@@ -239,13 +239,13 @@ public class Frog extends Animal implements VariantHolder { private int behaviorTick = 0; // Pufferfish @Override protected void customServerAiStep() { @@ -1675,10 +1669,10 @@ index 4d1071546f523c63b9c981e90a09393e9e4400fa..5e7d76dcdc170b809ab82f6e2259c9b4 } 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 15fd1af0773ba1254a429240444f48e68e29ee74..1d36459ee10da702d65b4a6d139a05fdd487556f 100644 +index c1125279b80bad8d7b6b273e709c412a0a578318..abafb15ab1294e11810798795bd103fb8bd5f64a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -232,10 +232,10 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -273,10 +273,10 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @Override protected void customServerAiStep() { @@ -1692,10 +1686,10 @@ index 15fd1af0773ba1254a429240444f48e68e29ee74..1d36459ee10da702d65b4a6d139a05fd } diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -index ab183a7d94a27d5235ff33ce7784c92d66d40b89..3001c8f246e4ee4bfeae0d3ad9e0c2afb309f629 100644 +index 6b410d03e1fbba233a0cb2b9d1bfab6d0311230e..a1fd6f9cf367c8eb8c3def24262908778c3a4cbc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java +++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -@@ -200,10 +200,10 @@ public class Breeze extends Monster { +@@ -202,10 +202,10 @@ public class Breeze extends Monster { @Override protected void customServerAiStep() { @@ -1710,10 +1704,10 @@ index ab183a7d94a27d5235ff33ce7784c92d66d40b89..3001c8f246e4ee4bfeae0d3ad9e0c2af } 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 510ee1aee1dd106b5129c375ebb59c7950b8b989..5c160d6aa4e3d51c1161f82e92e5e8c1e809a574 100644 +index 4ba5cb5bf7d82ddfd888f5da9f0b111f9102bed8..cfa7ec9b5b3125cb80b591e80f8d42815c25f568 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 -@@ -168,10 +168,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -195,10 +195,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { private int behaviorTick; // Pufferfish @Override protected void customServerAiStep() { @@ -1725,7 +1719,7 @@ index 510ee1aee1dd106b5129c375ebb59c7950b8b989..5c160d6aa4e3d51c1161f82e92e5e8c1 + //this.level().getProfiler().pop(); // Purpur HoglinAi.updateActivity(this); if (this.isConverting()) { - ++this.timeInOverworld; + this.timeInOverworld++; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java index 141fa7d4e1b81e90f4d63a3459c9a72bc595d30b..1422c0f4ff6a3e61f229574cd7b50971bdbd8451 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -1744,10 +1738,10 @@ index 141fa7d4e1b81e90f4d63a3459c9a72bc595d30b..1422c0f4ff6a3e61f229574cd7b50971 super.customServerAiStep(); } diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 61e8f2d030fc50840c3f80dfb6fc810797ec440f..856e6e02c9424a6c06e310262cb4f5bdd34da516 100644 +index 5ae1b1de412aeacbbc5e04299e94351d34631b4c..40f6af92d1fc58a6115fc16b02d296aef897b607 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -117,10 +117,10 @@ public class PiglinBrute extends AbstractPiglin { +@@ -145,10 +145,10 @@ public class PiglinBrute extends AbstractPiglin { @Override protected void customServerAiStep() { @@ -1936,7 +1930,7 @@ index 8b1f5d290efbebe5fb6fc90b6031356ea3e4cef3..97724cbd6c1bf172379e98d4a3f6e8cd if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent block entity and entity crashes diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -index 8aa4ac3a6affbe888d6084a27b668c58dfda6c79..c38c90e6a2b4b04105e00c71a4640a5aa7065b93 100644 +index c4d6b145d54aaf415dd4b08811c024255092e1b8..7bdcbfa4fcefb7d8230756a55b774e3834290e64 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java @@ -53,8 +53,8 @@ public class PathFinder { @@ -1950,7 +1944,7 @@ index 8aa4ac3a6affbe888d6084a27b668c58dfda6c79..c38c90e6a2b4b04105e00c71a4640a5a // Set set = positions.keySet(); startNode.g = 0.0F; startNode.h = this.getBestH(startNode, positions); // Paper - optimize collection -@@ -123,7 +123,7 @@ public class PathFinder { +@@ -122,7 +122,7 @@ public class PathFinder { if (best == null || comparator.compare(path, best) < 0) best = path; } @@ -1960,10 +1954,10 @@ index 8aa4ac3a6affbe888d6084a27b668c58dfda6c79..c38c90e6a2b4b04105e00c71a4640a5a // Paper end - Perf: remove streams and optimize collection } diff --git a/src/main/java/net/minecraft/world/ticks/LevelTicks.java b/src/main/java/net/minecraft/world/ticks/LevelTicks.java -index 1d7c663fa0e550bd0cfb9a4b83ccd7e2968666f0..0043c0087896a6df6910b0500da37d84b287c901 100644 +index d411753b50544c2a949eb71e86fc7aa811cf9f71..fb8f0168aa878708e2910fa651140ce49eaf0475 100644 --- a/src/main/java/net/minecraft/world/ticks/LevelTicks.java +++ b/src/main/java/net/minecraft/world/ticks/LevelTicks.java -@@ -86,20 +86,20 @@ public class LevelTicks implements LevelTickAccess { +@@ -81,20 +81,20 @@ public class LevelTicks implements LevelTickAccess { } public void tick(long time, int maxTicks, BiConsumer ticker) { diff --git a/patches/server/0264-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0263-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 96% rename from patches/server/0264-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0263-Add-more-logger-output-for-invalid-movement-kicks.patch index 233fda9e8..877965d2c 100644 --- a/patches/server/0264-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0263-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c48e18e4aa72eae5d1a87a86b8a9c982838b5d47..921e04a0280dde21ee5af79188052294d30a0bbc 100644 +index 54c5eb489e27524c58e1dbc589f5f545d6d46fdd..8a935e5dec455250dbb967275648f51042288f48 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -733,6 +733,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0265-Add-Bee-API.patch b/patches/server/0264-Add-Bee-API.patch similarity index 100% rename from patches/server/0265-Add-Bee-API.patch rename to patches/server/0264-Add-Bee-API.patch diff --git a/patches/server/0266-Debug-Marker-API.patch b/patches/server/0265-Debug-Marker-API.patch similarity index 100% rename from patches/server/0266-Debug-Marker-API.patch rename to patches/server/0265-Debug-Marker-API.patch diff --git a/patches/server/0267-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0266-mob-spawning-option-to-ignore-creative-players.patch similarity index 100% rename from patches/server/0267-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0266-mob-spawning-option-to-ignore-creative-players.patch diff --git a/patches/server/0268-Add-skeleton-bow-accuracy-option.patch b/patches/server/0267-Add-skeleton-bow-accuracy-option.patch similarity index 100% rename from patches/server/0268-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0267-Add-skeleton-bow-accuracy-option.patch diff --git a/patches/server/0269-Allay-respect-item-NBT.patch b/patches/server/0268-Allay-respect-item-NBT.patch similarity index 100% rename from patches/server/0269-Allay-respect-item-NBT.patch rename to patches/server/0268-Allay-respect-item-NBT.patch diff --git a/patches/server/0270-Add-death-screen-API.patch b/patches/server/0269-Add-death-screen-API.patch similarity index 100% rename from patches/server/0270-Add-death-screen-API.patch rename to patches/server/0269-Add-death-screen-API.patch diff --git a/patches/server/0271-Make-pufferfish-config-relocatable.patch b/patches/server/0270-Make-pufferfish-config-relocatable.patch similarity index 93% rename from patches/server/0271-Make-pufferfish-config-relocatable.patch rename to patches/server/0270-Make-pufferfish-config-relocatable.patch index 5497a44be..e3a3ff88f 100644 --- a/patches/server/0271-Make-pufferfish-config-relocatable.patch +++ b/patches/server/0270-Make-pufferfish-config-relocatable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make pufferfish config relocatable diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index 5e01bfdad663656168604fc878a993dd910bf45b..3fea9b69f4cfc94e7f01d4e3ca4ce7506a8e5d5c 100644 +index 8b8fe02b9db5192a3adb8d4a3bb3c2105f90544d..7178a742e5a9d65e6438ae338541848684f1f480 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -28,6 +28,7 @@ public class PufferfishConfig { @@ -38,7 +38,7 @@ index 6a9bd431e9c2e1fc1e51d394eaccba864bbeac89..85b861e21d8798a883ecbd0a09cc25f8 gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 0c3be815e4f81b0d51273413e9d0fb1a7db3f03f..146f229b8e8888e2c0256c007c71c675c27e71a5 100644 +index 1dd676ad37c68e3fce71306d7e05cb2c377a32b4..409c0e81571e23c9d535b541c61538424259d60a 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -180,6 +180,12 @@ public class Main { diff --git a/patches/server/0272-Implement-ram-and-rambar-commands.patch b/patches/server/0271-Implement-ram-and-rambar-commands.patch similarity index 99% rename from patches/server/0272-Implement-ram-and-rambar-commands.patch rename to patches/server/0271-Implement-ram-and-rambar-commands.patch index f18d87e83..ab9ceaac5 100644 --- a/patches/server/0272-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0271-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index 48a4f26eec06777b4ae165db6566c1f6198527fd..b6cc108c2d4361e6f415cfc3ff8c7699 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 46c9cfa78fff65c24137792826c7f68483a39876..36b7686fdfeaab13cb1be9610ddc76fc70f6f6e5 100644 +index d78c2348160795fcc9ff23b448e7d3c48f34c272..305b90d10a499e9731f5178433fb10207e428091 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -284,6 +284,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0273-Add-item-packet-serialize-event.patch b/patches/server/0272-Add-item-packet-serialize-event.patch similarity index 95% rename from patches/server/0273-Add-item-packet-serialize-event.patch rename to patches/server/0272-Add-item-packet-serialize-event.patch index 2068e5598..9a7f225ca 100644 --- a/patches/server/0273-Add-item-packet-serialize-event.patch +++ b/patches/server/0272-Add-item-packet-serialize-event.patch @@ -36,7 +36,7 @@ index b863249ff7e13cf4939c8961601f0564c62fd661..bdcfd80f937c34956911373905d66424 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 05cbad6c6637cb5250a91239612a5388006a728a..e34bada9626702c8b7eeb7dfd77b08cb8f50c640 100644 +index 5a736a99e97003506cedc697d7b33105d6fe40be..a1876ec72ff38f465662aded3608c588be34ca2d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1731,6 +1731,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop extends Go +@@ -116,9 +116,9 @@ public class RangedBowAttackGoal extends Go } this.mob.lookAt(livingEntity, 30.0F, 30.0F); diff --git a/patches/server/0280-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0279-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0280-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0279-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 96% rename from patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch index ae5c8ae9e..bbbbc0811 100644 --- a/patches/server/0281-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0280-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to allow creeper to encircle target when fusing. diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java -index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..7b99c3446b50939241d3e220d93e05649f72a6df 100644 +index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2ff1154ee3 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java @@ -54,6 +54,14 @@ public class SwellGoal extends Goal { diff --git a/patches/server/0282-Fire-Immunity-API.patch b/patches/server/0281-Fire-Immunity-API.patch similarity index 95% rename from patches/server/0282-Fire-Immunity-API.patch rename to patches/server/0281-Fire-Immunity-API.patch index 6defcefbd..d96bf9aab 100644 --- a/patches/server/0282-Fire-Immunity-API.patch +++ b/patches/server/0281-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 0014046304fbb66925144ecccd0c0aa1c901c485..0f87b47758a543a5a0afa872f90d3db4dc9da4e0 100644 +index ac1f4576476a800adf484912baaea9f2b7b546d0..a2f5027910b4d690eff73aaab7e991807b91df78 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -427,6 +427,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -50,7 +50,7 @@ index 0014046304fbb66925144ecccd0c0aa1c901c485..0f87b47758a543a5a0afa872f90d3db4 } 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 897f9f5d25c674f167530810c0b94bca83c3c3cc..50364ab478ae5ec016fc2318483920e2e849b8ba 100644 +index b6ecb58718b7de7ba9c90236f3dc11715652daa9..7121de7f623b4a57937a9c60c8fc0f4307e538dc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -84,6 +84,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 96% rename from patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0282-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index cf8111369..6384b858d 100644 --- a/patches/server/0283-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0282-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 0f87b47758a543a5a0afa872f90d3db4dc9da4e0..9131d7693551c0cdecdb63f67b510fd5c766503c 100644 +index a2f5027910b4d690eff73aaab7e991807b91df78..f2c6b52fe7fbb05afa0074684cd195f6ae598f1f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -936,6 +936,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0284-Added-got-ram-event.patch b/patches/server/0283-Added-got-ram-event.patch similarity index 100% rename from patches/server/0284-Added-got-ram-event.patch rename to patches/server/0283-Added-got-ram-event.patch diff --git a/patches/server/0285-Log-skipped-entity-s-position.patch b/patches/server/0284-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0285-Log-skipped-entity-s-position.patch rename to patches/server/0284-Log-skipped-entity-s-position.patch diff --git a/patches/server/0286-End-Crystal-Cramming.patch b/patches/server/0285-End-Crystal-Cramming.patch similarity index 100% rename from patches/server/0286-End-Crystal-Cramming.patch rename to patches/server/0285-End-Crystal-Cramming.patch diff --git a/patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0286-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 100% rename from patches/server/0287-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0286-Option-to-allow-beacon-effects-when-covered-by-tinte.patch diff --git a/patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0287-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0288-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0287-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0288-Config-to-remove-explosion-radius-clamp.patch similarity index 95% rename from patches/server/0289-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0288-Config-to-remove-explosion-radius-clamp.patch index 77d4cab9b..471a6ae75 100644 --- a/patches/server/0289-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0288-Config-to-remove-explosion-radius-clamp.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index b0884758d00efb1e3b4b47a539de2a819aab978a..ad2eff33b2df9f004b2859d876e3e95962503bd6 100644 +index 5dcfb077fc58a92f32425aaafb82d6b41d488e13..9b5da37a532595541eaac0a4607aff9045a20ff3 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -97,7 +97,7 @@ public class Explosion { diff --git a/patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0289-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 100% rename from patches/server/0290-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0289-bonemealable-sugarcane-cactus-and-netherwart.patch diff --git a/patches/server/0291-Add-PreExplodeEvents.patch b/patches/server/0290-Add-PreExplodeEvents.patch similarity index 94% rename from patches/server/0291-Add-PreExplodeEvents.patch rename to patches/server/0290-Add-PreExplodeEvents.patch index f0d94d365..cde070b54 100644 --- a/patches/server/0291-Add-PreExplodeEvents.patch +++ b/patches/server/0290-Add-PreExplodeEvents.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index ad2eff33b2df9f004b2859d876e3e95962503bd6..059e545fd04b7919fb0cc86797b636e3cda61027 100644 +index 9b5da37a532595541eaac0a4607aff9045a20ff3..0be03430d8257d918b7cf646af518473ae027399 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -429,6 +429,23 @@ public class Explosion { diff --git a/patches/server/0292-Improve-output-of-plugins-command.patch b/patches/server/0291-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0292-Improve-output-of-plugins-command.patch rename to patches/server/0291-Improve-output-of-plugins-command.patch diff --git a/patches/server/0293-Add-mending-multiplier.patch b/patches/server/0292-Add-mending-multiplier.patch similarity index 100% rename from patches/server/0293-Add-mending-multiplier.patch rename to patches/server/0292-Add-mending-multiplier.patch diff --git a/patches/server/0294-Make-GUI-Great-Again.patch b/patches/server/0293-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0294-Make-GUI-Great-Again.patch rename to patches/server/0293-Make-GUI-Great-Again.patch diff --git a/patches/server/0295-Stored-Bee-API.patch b/patches/server/0294-Stored-Bee-API.patch similarity index 100% rename from patches/server/0295-Stored-Bee-API.patch rename to patches/server/0294-Stored-Bee-API.patch diff --git a/patches/server/0296-Shears-can-defuse-TNT.patch b/patches/server/0295-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0296-Shears-can-defuse-TNT.patch rename to patches/server/0295-Shears-can-defuse-TNT.patch diff --git a/patches/server/0297-Explorer-Map-API.patch b/patches/server/0296-Explorer-Map-API.patch similarity index 100% rename from patches/server/0297-Explorer-Map-API.patch rename to patches/server/0296-Explorer-Map-API.patch diff --git a/patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0297-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 100% rename from patches/server/0298-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0297-Option-Ocelot-Spawn-Under-Sea-Level.patch diff --git a/patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0298-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0299-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0298-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0299-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 77% rename from patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0299-Add-option-for-always-showing-item-in-player-death-m.patch index 212c5b505..54306ecc1 100644 --- a/patches/server/0300-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0299-Add-option-for-always-showing-item-in-player-death-m.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Add option for always showing item in player death messages diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -index 8ed6b8ddc76bda3d4f298b3076dba9275cec93d9..1653d154edb38a6450ee51cb5e5b8e3d37a1784e 100644 +index 925654e40a170d1a4af0b9fcde1b9b359f833064..bf06bb78d060bb54d9aaade3605d42ce837d598b 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java -@@ -59,7 +59,7 @@ public class CombatTracker { - } +@@ -53,7 +53,7 @@ public class CombatTracker { - ItemStack itemStack = var10000; -- return !itemStack.isEmpty() && itemStack.hasCustomHoverName() ? Component.translatable(itemDeathTranslationKey, this.mob.getDisplayName(), attackerDisplayName, itemStack.getDisplayName()) : Component.translatable(deathTranslationKey, this.mob.getDisplayName(), attackerDisplayName); -+ return !itemStack.isEmpty() && (org.purpurmc.purpur.PurpurConfig.playerDeathsAlwaysShowItem || itemStack.hasCustomHoverName()) ? Component.translatable(itemDeathTranslationKey, this.mob.getDisplayName(), attackerDisplayName, itemStack.getDisplayName()) : Component.translatable(deathTranslationKey, this.mob.getDisplayName(), attackerDisplayName); + private Component getMessageForAssistedFall(Entity attacker, Component attackerDisplayName, String itemDeathTranslationKey, String deathTranslationKey) { + ItemStack itemStack = attacker instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; +- return !itemStack.isEmpty() && itemStack.hasCustomHoverName() ++ return !itemStack.isEmpty() && (org.purpurmc.purpur.PurpurConfig.playerDeathsAlwaysShowItem || itemStack.hasCustomHoverName()) // Purpur + ? Component.translatable(itemDeathTranslationKey, this.mob.getDisplayName(), attackerDisplayName, itemStack.getDisplayName()) + : Component.translatable(deathTranslationKey, this.mob.getDisplayName(), attackerDisplayName); } - - private Component getFallMessage(CombatEntry damageRecord, @Nullable Entity attacker) { diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java index 41651c877246f38c73cc9c81b37a0b86e5054cb9..a1724d2d545aa808ea380f910c0190658fc7881b 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java diff --git a/patches/server/0301-place-end-crystal-on-any-block.patch b/patches/server/0300-place-end-crystal-on-any-block.patch similarity index 100% rename from patches/server/0301-place-end-crystal-on-any-block.patch rename to patches/server/0300-place-end-crystal-on-any-block.patch diff --git a/patches/server/0302-Add-hover-lines-API.patch b/patches/server/0301-Add-hover-lines-API.patch similarity index 100% rename from patches/server/0302-Add-hover-lines-API.patch rename to patches/server/0301-Add-hover-lines-API.patch diff --git a/patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0302-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 100% rename from patches/server/0303-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0302-Add-option-to-disable-the-copper-oxidation-proximity.patch diff --git a/patches/server/0304-register-minecraft-debug-commands.patch b/patches/server/0303-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0304-register-minecraft-debug-commands.patch rename to patches/server/0303-register-minecraft-debug-commands.patch diff --git a/patches/server/0306-Configurable-villager-search-radius.patch b/patches/server/0304-Configurable-villager-search-radius.patch similarity index 75% rename from patches/server/0306-Configurable-villager-search-radius.patch rename to patches/server/0304-Configurable-villager-search-radius.patch index c895fc79e..3c5168260 100644 --- a/patches/server/0306-Configurable-villager-search-radius.patch +++ b/patches/server/0304-Configurable-villager-search-radius.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Configurable-villager-search-radius diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index abcc3ef59475ac170fd10b4dd4a4f3371faf17e0..bcb39d162c3401db471688738f32e9383af45e01 100644 +index 984e3cc48f93f4f036689a269562f12ebd7bdef1..6e65bc6bd198abf8c60016696d7851a1e8e080ec 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -65,7 +65,7 @@ public class AcquirePoi { - }; - // Paper start - optimise POI access - java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); -- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); +@@ -73,7 +73,7 @@ public class AcquirePoi { + }; + // Paper start - optimise POI access + java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); +- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); + io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur - Set, BlockPos>> set = new java.util.HashSet<>(poiposes); - // Paper end - optimise POI access - Path path = findPathToPois(entity, set); + Set, BlockPos>> set = new java.util.HashSet<>(poiposes); + // Paper end - optimise POI access + Path path = findPathToPois(entity, set); diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -index 8db20db72cd51046213625fac46c35854c59ec5d..08f5f8509b095677a9983292320f20de543790b2 100644 +index a2e02881f90a93f067301b63eb84dfad476bedbd..3c8b9ef3f55f4511f062b03822c8056c40dd7c92 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java @@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor { @@ -31,10 +31,10 @@ index 8db20db72cd51046213625fac46c35854c59ec5d..08f5f8509b095677a9983292320f20de // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a78173ac1a8a71048bd6dbad84c0163e51cd150f..578cb0964fc970dd20170266604137c1ea80d8b0 100644 +index 002c9bba93dede25111c653ec1df38316f19421f..7dc82ffccc157a17335f1bc56ab81be3813294f6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2900,6 +2900,8 @@ public class PurpurWorldConfig { +@@ -2890,6 +2890,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index a78173ac1a8a71048bd6dbad84c0163e51cd150f..578cb0964fc970dd20170266604137c1 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2936,6 +2938,8 @@ public class PurpurWorldConfig { +@@ -2926,6 +2928,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit);