From 7f6f667142fb7d03d104817e8366a91c25ee3c11 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 30 Nov 2024 20:49:52 -0800 Subject: [PATCH] Updated Upstream (Pufferfish) Upstream has released updates that appear to apply and compile correctly Pufferfish Changes: pufferfish-gg/Pufferfish@f05b0e9 Updated Upstream (Paper) pufferfish-gg/Pufferfish@9a82b86 Updated Upstream (Paper) pufferfish-gg/Pufferfish@c6ec7a0 Updated Upstream (Paper) pufferfish-gg/Pufferfish@c789f72 Updated Upstream (Paper) pufferfish-gg/Pufferfish@9ddaa1a Updated Upstream (Paper) pufferfish-gg/Pufferfish@3554f78 Updated Upstream (Paper) pufferfish-gg/Pufferfish@a9e9d99 Updated Upstream (Paper) pufferfish-gg/Pufferfish@09a2f81 Updated Upstream (Paper) pufferfish-gg/Pufferfish@63ce67d Updated Upstream (Paper) pufferfish-gg/Pufferfish@8abd47b Updated Upstream (Paper) pufferfish-gg/Pufferfish@3415da0 Updated Upstream (Paper) pufferfish-gg/Pufferfish@cfa3c61 Updated Upstream (Paper) pufferfish-gg/Pufferfish@0a8641d 1.21.3 Update pufferfish-gg/Pufferfish@784d72f Updated Upstream (Paper) pufferfish-gg/Pufferfish@40e1ad0 Updated Upstream (Paper) pufferfish-gg/Pufferfish@95ef348 Make iterator counting in IteratorSafeOrderedReferenceSet thread-safe for async mob spawning (#109) pufferfish-gg/Pufferfish@34c0042 Updated Upstream (Paper) --- .../0001-Pufferfish-Server-Changes.patch | 1211 +++++------------ .../0002-Fix-pufferfish-issues.patch | 31 +- ...{0001-Rebrand.patch => 0003-Rebrand.patch} | 50 +- ...s.patch => 0004-Purpur-config-files.patch} | 16 +- ...patch => 0005-Purpur-client-support.patch} | 2 +- ...004-MC-Utils.patch => 0006-MC-Utils.patch} | 0 ....patch => 0007-Fix-decompile-errors.patch} | 0 ...0008-Component-related-conveniences.patch} | 4 +- ...007-Ridables.patch => 0009-Ridables.patch} | 134 +- ...Configurable-entity-base-attributes.patch} | 24 +- ...0011-Barrels-and-enderchests-6-rows.patch} | 0 ...0-Llama-API.patch => 0012-Llama-API.patch} | 2 +- ...{0011-AFK-API.patch => 0013-AFK-API.patch} | 12 +- ...atch => 0014-Bring-back-server-name.patch} | 0 ...> 0015-Configurable-server-mod-name.patch} | 4 +- ...old.patch => 0016-Lagging-threshold.patch} | 4 +- ...17-PlayerSetSpawnerTypeWithEggEvent.patch} | 6 +- ...6-Anvil-API.patch => 0018-Anvil-API.patch} | 0 ...0019-Alternative-Keepalive-Handling.patch} | 0 ...020-Enchantment-convenience-methods.patch} | 0 ...s.patch => 0021-Silk-touch-spawners.patch} | 2 +- ...> 0022-Add-turtle-egg-block-options.patch} | 2 +- ...settings-suppressing-pointless-logs.patch} | 0 ...> 0024-Disable-outdated-build-check.patch} | 2 +- ...gs.patch => 0025-Giants-AI-settings.patch} | 0 ...> 0026-Zombie-horse-naturally-spawn.patch} | 4 +- ...027-Charged-creeper-naturally-spawn.patch} | 0 ...it-naturally-spawn-toast-and-killer.patch} | 0 ...er-showing-in-ping-before-server-fu.patch} | 0 ...atch => 0030-Tulips-change-fox-type.patch} | 0 ...patch => 0031-Breedable-Polar-Bears.patch} | 0 ...atch => 0032-Chickens-can-retaliate.patch} | 2 +- ...ption-to-set-armorstand-step-height.patch} | 4 +- ....patch => 0034-Cat-spawning-options.patch} | 2 +- ...ms.patch => 0035-Cows-eat-mushrooms.patch} | 2 +- ...ow-rotation-when-shearing-mooshroom.patch} | 0 ...patch => 0037-Pigs-give-saddle-back.patch} | 0 ...8-Snowman-drop-and-put-back-pumpkin.patch} | 0 ...9-Ender-dragon-always-drop-full-exp.patch} | 0 ...oisten-from-water-directly-under-it.patch} | 2 +- ...Minecart-settings-and-WASD-controls.patch} | 6 +- ...ble-loot-drops-on-death-by-cramming.patch} | 8 +- ...tion-to-toggle-milk-curing-bad-omen.patch} | 2 +- ...Skip-events-if-there-s-no-listeners.patch} | 0 ... 0045-Add-permission-for-F3-N-debug.patch} | 2 +- ...ch => 0046-Configurable-TPS-Catchup.patch} | 18 +- ...ow-loyalty-on-tridents-to-work-in-t.patch} | 2 +- ...erman-and-creeper-griefing-controls.patch} | 6 +- ...049-Villagers-follow-emerald-blocks.patch} | 8 +- ...ch => 0050-Allow-leashing-villagers.patch} | 8 +- ... => 0051-Implement-infinite-liquids.patch} | 2 +- ...2-Make-lava-flow-speed-configurable.patch} | 2 +- ...dd-player-death-exp-control-options.patch} | 2 +- ...rable-void-damage-height-and-damage.patch} | 10 +- ...=> 0055-Add-canSaveToDisk-to-Entity.patch} | 4 +- ...spenser-curse-of-binding-protection.patch} | 8 +- ...-for-boats-to-eject-players-on-land.patch} | 2 +- ...-mends-most-damages-equipment-first.patch} | 2 +- ...059-Add-5-second-tps-average-in-tps.patch} | 6 +- ...h => 0060-Implement-elytra-settings.patch} | 8 +- ...atch => 0061-Item-entity-immunities.patch} | 4 +- ...mand.patch => 0062-Add-ping-command.patch} | 2 +- ...mand.patch => 0063-Add-demo-command.patch} | 2 +- ...d.patch => 0064-Add-credits-command.patch} | 2 +- ...=> 0065-Configurable-jockey-options.patch} | 0 ...d-to-crystals-and-crystals-shoot-ph.patch} | 0 ...> 0067-Add-phantom-spawning-options.patch} | 0 ...068-Implement-bed-explosion-options.patch} | 2 +- ...nt-respawn-anchor-explosion-options.patch} | 2 +- ...Add-allow-water-in-end-world-option.patch} | 2 +- ... => 0071-Allow-color-codes-in-books.patch} | 12 +- ...espan.patch => 0072-Entity-lifespan.patch} | 18 +- ...eport-to-spawn-if-outside-world-bor.patch} | 2 +- ...ty.patch => 0074-Squid-EAR-immunity.patch} | 4 +- ...atch => 0075-Phantoms-burn-in-light.patch} | 0 ...0076-Configurable-villager-breeding.patch} | 4 +- ... 0077-Redstone-deactivates-spawners.patch} | 2 +- ...ch => 0078-Totems-work-in-inventory.patch} | 6 +- ...-Add-vindicator-johnny-spawn-chance.patch} | 0 ...0080-Dispensers-place-anvils-option.patch} | 2 +- ...rs.patch => 0081-Allow-anvil-colors.patch} | 4 +- ...-disable-dolphin-treasure-searching.patch} | 0 ...patch => 0083-Short-enderman-height.patch} | 8 +- ...top-squids-floating-on-top-of-water.patch} | 4 +- ...ng-obsidian-valid-for-portal-frames.patch} | 0 ...ch => 0086-Entities-can-use-portals.patch} | 6 +- ...tomizable-wither-health-and-healing.patch} | 4 +- ...gling-special-MobSpawners-per-world.patch} | 4 +- ...patch => 0089-Raid-cooldown-setting.patch} | 2 +- ...able-zombie-aggressiveness-towards-.patch} | 0 ...-to-recipe-s-ExactChoice-ingredient.patch} | 2 +- ...y.patch => 0092-Flying-squids-Oh-my.patch} | 0 ...patch => 0093-Infinity-bow-settings.patch} | 2 +- ...=> 0094-Configurable-daylight-cycle.patch} | 12 +- ...5-Furnace-uses-lava-from-underneath.patch} | 2 +- ...ws-should-not-reset-despawn-counter.patch} | 4 +- ...e-add-farmland-mechanics-from-Alpha.patch} | 2 +- ...ustable-breeding-cooldown-to-config.patch} | 4 +- ...-entity-breeding-times-configurable.patch} | 8 +- ...es-from-item-forms-of-entities-to-e.patch} | 2 +- ...when-using-a-Name-Tag-on-an-Armor-S.patch} | 2 +- ...lowing-Endermen-to-despawn-even-whi.patch} | 4 +- ...03-Add-configurable-snowball-damage.patch} | 2 +- ...4-Changeable-Mob-Left-Handed-Chance.patch} | 6 +- ...=> 0105-Add-boat-fall-damage-config.patch} | 4 +- ...0106-Snow-Golem-rate-of-fire-config.patch} | 0 ...-Configurable-disable-give-dropping.patch} | 0 ...illager-Clerics-to-farm-Nether-Wart.patch} | 6 +- ...ied-Piglin-death-always-counting-as.patch} | 0 ...le-chance-for-wolves-to-spawn-rabid.patch} | 0 ...1-Configurable-default-collar-color.patch} | 0 ...tch => 0112-Phantom-flames-on-swoop.patch} | 0 ...-to-open-even-with-a-solid-block-on.patch} | 2 +- ...SBar.patch => 0114-Implement-TPSBar.patch} | 12 +- ...h => 0115-Striders-give-saddle-back.patch} | 0 ...tch => 0116-PlayerBookTooLargeEvent.patch} | 6 +- ...herite-armor-grants-fire-resistance.patch} | 2 +- ...efing-bypass-to-everything-affected.patch} | 26 +- ...llow-Note-Block-sounds-when-blocked.patch} | 2 +- ...120-Add-EntityTeleportHinderedEvent.patch} | 2 +- ... => 0121-Farmland-trampling-changes.patch} | 4 +- ...2-Movement-options-for-armor-stands.patch} | 4 +- ....patch => 0123-Fix-stuck-in-portals.patch} | 4 +- ...ggle-for-water-sensitive-mob-damage.patch} | 18 +- ...5-Config-to-always-tame-in-Creative.patch} | 4 +- ... 0126-End-crystal-explosion-options.patch} | 2 +- ...ther-Ender-Dragon-can-ride-vehicles.patch} | 6 +- ...atch => 0128-Dont-run-with-scissors.patch} | 8 +- ...nch-Man.patch => 0129-One-Punch-Man.patch} | 6 +- ...r-Pearl-cooldown-damage-and-Endermi.patch} | 2 +- ...to-ignore-nearby-mobs-when-sleeping.patch} | 4 +- ...d-back-player-spawned-endermite-API.patch} | 0 ...n-aggressiveness-towards-Endermites.patch} | 4 +- ...Dragon-Head-wearers-and-stare-aggro.patch} | 4 +- ...ig.patch => 0135-Tick-fluids-config.patch} | 2 +- ...36-Config-to-disable-Llama-caravans.patch} | 2 +- ...g-to-make-Creepers-explode-on-death.patch} | 2 +- ...rable-ravager-griefable-blocks-list.patch} | 2 +- ...139-Sneak-to-bulk-process-composter.patch} | 2 +- ...h => 0140-Config-for-skipping-night.patch} | 4 +- ...141-Add-config-for-villager-trading.patch} | 6 +- ...ngs.patch => 0142-Drowning-Settings.patch} | 6 +- ...reak-individual-slabs-when-sneaking.patch} | 2 +- ...to-disable-hostile-mob-spawn-on-ice.patch} | 2 +- ...g-to-show-Armor-Stand-arms-on-spawn.patch} | 2 +- ...tion-to-make-doors-require-redstone.patch} | 4 +- ...147-Config-to-allow-unsafe-enchants.patch} | 0 ...0148-Configurable-sponge-absorption.patch} | 2 +- ...ch => 0149-Projectile-offset-config.patch} | 4 +- ...or-powered-rail-activation-distance.patch} | 2 +- ...> 0151-Piglin-portal-spawn-modifier.patch} | 2 +- ...Config-to-change-max-number-of-bees.patch} | 0 ...-Config-for-wither-explosion-radius.patch} | 2 +- ... => 0154-Gamemode-extra-permissions.patch} | 2 +- ...0155-Configurable-piston-push-limit.patch} | 2 +- ...156-Configurable-broadcast-settings.patch} | 2 +- ... => 0157-Configurable-mob-blindness.patch} | 6 +- ...hidden-players-from-entity-selector.patch} | 0 ...-to-impact-Creeper-explosion-radius.patch} | 2 +- ... 0160-Iron-golem-calm-anger-options.patch} | 2 +- ...ots.patch => 0161-Breedable-parrots.patch} | 2 +- ...gurable-powered-rail-boost-modifier.patch} | 6 +- ...ge-multiplier-critical-damage-value.patch} | 2 +- ...n-to-disable-dragon-egg-teleporting.patch} | 2 +- ...fig-for-unverified-username-message.patch} | 0 ...-anvil-cumulative-cost-configurable.patch} | 2 +- ...e-can-work-when-raining-or-at-night.patch} | 0 ...68-API-for-any-mob-to-burn-daylight.patch} | 16 +- ...h => 0169-Config-MobEffect-by-world.patch} | 2 +- ...eacon-Activation-Range-Configurable.patch} | 2 +- ...ke-lightning-rod-range-configurable.patch} | 4 +- ...fter-eating-food-fills-hunger-bar-c.patch} | 2 +- ...ayer-join-full-server-by-permission.patch} | 2 +- ...> 0174-Add-portal-permission-bypass.patch} | 2 +- ...5-Shulker-spawn-from-bullet-options.patch} | 2 +- ...ating-glow-berries-adds-glow-effect.patch} | 2 +- ...-Option-to-make-drowned-break-doors.patch} | 2 +- ...nfigurable-hunger-starvation-damage.patch} | 2 +- ...patch => 0179-Enhance-SysoutCatcher.patch} | 0 ...nd.patch => 0180-Add-uptime-command.patch} | 4 +- ...tch => 0181-Tool-actionable-options.patch} | 2 +- ...2-Store-placer-on-Block-when-placed.patch} | 0 ...oner-API.patch => 0183-Summoner-API.patch} | 4 +- ...mizable-sleeping-actionbar-messages.patch} | 6 +- ...-shulker-box-items-from-dropping-co.patch} | 2 +- ...tch => 0186-Big-dripleaf-tilt-delay.patch} | 2 +- ...0187-Player-ridable-in-water-option.patch} | 2 +- ...-Enderman-teleport-on-projectile-hi.patch} | 6 +- ...d.patch => 0189-Add-compass-command.patch} | 2 +- ...h => 0190-Toggle-for-kinetic-damage.patch} | 6 +- ...-Option-for-disable-observer-clocks.patch} | 2 +- ...zeable-Zombie-Villager-curing-times.patch} | 2 +- ...for-sponges-to-work-on-lava-and-mud.patch} | 2 +- ...194-Toggle-for-Wither-s-spawn-sound.patch} | 6 +- ...-breaks-from-solid-neighbors-config.patch} | 2 +- ...move-curse-of-binding-with-weakness.patch} | 2 +- ...0197-Conduit-behavior-configuration.patch} | 2 +- ...patch => 0198-Cauldron-fill-chances.patch} | 2 +- ...o-allow-mobs-to-pathfind-over-rails.patch} | 2 +- ... 0200-Shulker-change-color-with-dye.patch} | 2 +- ... => 0201-Extended-OfflinePlayer-API.patch} | 2 +- ...he-ability-to-add-combustible-items.patch} | 0 ...in-and-thunder-should-stop-on-sleep.patch} | 8 +- ...-blocks-to-grow-into-trees-naturall.patch} | 2 +- ...-right-click-to-use-exp-for-mending.patch} | 6 +- ...urally-aggressive-to-players-chance.patch} | 2 +- ...urally-aggressive-to-players-chance.patch} | 2 +- ...r-beds-to-explode-on-villager-sleep.patch} | 6 +- ...Halloween-options-and-optimizations.patch} | 18 +- ...atch => 0210-Config-for-grindstones.patch} | 0 ....patch => 0211-UPnP-Port-Forwarding.patch} | 8 +- ...Campfire-option-for-lit-when-placed.patch} | 2 +- ...tinguish-fire-blocks-with-snowballs.patch} | 2 +- ...on-to-disable-zombie-villagers-cure.patch} | 2 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 2 +- ...tch => 0216-Signs-allow-color-codes.patch} | 4 +- ...-and-twisting-vines-configurable-ma.patch} | 0 ...=> 0218-Mobs-always-drop-experience.patch} | 18 +- ...ne-API.patch => 0219-Grindstone-API.patch} | 0 ...e-to-replant-crops-and-nether-warts.patch} | 4 +- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- ...=> 0222-Mob-head-visibility-percent.patch} | 6 +- ...able-valid-characters-for-usernames.patch} | 0 ...Stop-bees-from-dying-after-stinging.patch} | 2 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 10 +- ...onfigurable-farmland-trample-height.patch} | 2 +- ...onfigurable-player-pickup-exp-delay.patch} | 2 +- ...ng.patch => 0228-Allow-void-trading.patch} | 6 +- ...h => 0229-Configurable-phantom-size.patch} | 2 +- ....patch => 0230-Max-joins-per-second.patch} | 2 +- ...figurable-minimum-demand-for-trades.patch} | 6 +- ... => 0232-Lobotomize-stuck-villagers.patch} | 18 +- ...ion-for-villager-display-trade-item.patch} | 2 +- ...wner-not-spawning-water-animals-cor.patch} | 2 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 6 +- ...=> 0236-Anvil-repair-damage-options.patch} | 2 +- ...-turtle-egg-trampling-with-feather-.patch} | 2 +- ...d-toggle-for-enchant-level-clamping.patch} | 0 ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 6 +- ...ge.patch => 0241-Stonecutter-damage.patch} | 4 +- ...le-damage-settings-for-magma-blocks.patch} | 2 +- ...243-Add-config-for-snow-on-blue-ice.patch} | 2 +- ... => 0244-Skeletons-eat-wither-roses.patch} | 2 +- ...45-Enchantment-Table-Persists-Lapis.patch} | 2 +- ...-disable-kick-for-out-of-order-chat.patch} | 0 ...for-sculk-shrieker-can_summon-state.patch} | 2 +- ...=> 0248-Config-to-not-let-coral-die.patch} | 2 +- ...ch => 0249-Add-local-difficulty-api.patch} | 0 ...250-Add-toggle-for-RNG-manipulation.patch} | 4 +- ...r-output-for-invalid-movement-kicks.patch} | 4 +- ...d-Bee-API.patch => 0252-Add-Bee-API.patch} | 0 ...-API.patch => 0253-Debug-Marker-API.patch} | 2 +- ...g-option-to-ignore-creative-players.patch} | 4 +- ...55-Add-skeleton-bow-accuracy-option.patch} | 2 +- ....patch => 0256-Add-death-screen-API.patch} | 2 +- ...-Make-pufferfish-config-relocatable.patch} | 12 +- ...8-Implement-ram-and-rambar-commands.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 0 ...gurable-block-fall-damage-modifiers.patch} | 0 ...uage-API.patch => 0261-Language-API.patch} | 0 ... 0262-Milk-Keeps-Beneficial-Effects.patch} | 8 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...n-to-fix-MC-3304-projectile-looting.patch} | 4 +- ...ow-creeper-to-encircle-target-when-.patch} | 2 +- ...API.patch => 0267-Fire-Immunity-API.patch} | 16 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 4 +- ...t.patch => 0269-Added-got-ram-event.patch} | 4 +- ... 0270-Log-skipped-entity-s-position.patch} | 4 +- ....patch => 0271-End-Crystal-Cramming.patch} | 2 +- ...eacon-effects-when-covered-by-tinte.patch} | 2 +- ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 2 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 2 +- ....patch => 0276-Add-PreExplodeEvents.patch} | 0 ...7-Improve-output-of-plugins-command.patch} | 0 ....patch => 0278-Make-GUI-Great-Again.patch} | 2 +- ...ee-API.patch => 0279-Stored-Bee-API.patch} | 0 ...patch => 0280-Shears-can-defuse-TNT.patch} | 2 +- ...-API.patch => 0281-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 2 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 2 +- ...ways-showing-item-in-player-death-m.patch} | 0 ...0285-place-end-crystal-on-any-block.patch} | 4 +- ...able-the-copper-oxidation-proximity.patch} | 2 +- ...7-register-minecraft-debug-commands.patch} | 2 +- ...Configurable-villager-search-radius.patch} | 2 +- ...-to-make-ravagers-afraid-of-rabbits.patch} | 2 +- ...=> 0290-config-for-startup-commands.patch} | 4 +- ...onfig-to-reverse-bubble-column-flow.patch} | 0 ...tch => 0292-Adopt-MaterialRerouting.patch} | 0 ...rtHinderedEvent-when-attempting-to-.patch} | 2 +- ... 0294-ItemStack-convenience-methods.patch} | 0 294 files changed, 902 insertions(+), 1476 deletions(-) rename patches/{unapplied-server => server}/0001-Pufferfish-Server-Changes.patch (62%) rename patches/{unapplied-server => server}/0002-Fix-pufferfish-issues.patch (78%) rename patches/server/{0001-Rebrand.patch => 0003-Rebrand.patch} (97%) rename patches/server/{0002-Purpur-config-files.patch => 0004-Purpur-config-files.patch} (97%) rename patches/server/{0003-Purpur-client-support.patch => 0005-Purpur-client-support.patch} (97%) rename patches/server/{0004-MC-Utils.patch => 0006-MC-Utils.patch} (100%) rename patches/server/{0005-Fix-decompile-errors.patch => 0007-Fix-decompile-errors.patch} (100%) rename patches/server/{0006-Component-related-conveniences.patch => 0008-Component-related-conveniences.patch} (96%) rename patches/server/{0007-Ridables.patch => 0009-Ridables.patch} (98%) rename patches/server/{0008-Configurable-entity-base-attributes.patch => 0010-Configurable-entity-base-attributes.patch} (99%) rename patches/server/{0009-Barrels-and-enderchests-6-rows.patch => 0011-Barrels-and-enderchests-6-rows.patch} (100%) rename patches/server/{0010-Llama-API.patch => 0012-Llama-API.patch} (97%) rename patches/server/{0011-AFK-API.patch => 0013-AFK-API.patch} (97%) rename patches/server/{0012-Bring-back-server-name.patch => 0014-Bring-back-server-name.patch} (100%) rename patches/server/{0013-Configurable-server-mod-name.patch => 0015-Configurable-server-mod-name.patch} (91%) rename patches/server/{0014-Lagging-threshold.patch => 0016-Lagging-threshold.patch} (94%) rename patches/server/{0015-PlayerSetSpawnerTypeWithEggEvent.patch => 0017-PlayerSetSpawnerTypeWithEggEvent.patch} (94%) rename patches/server/{0016-Anvil-API.patch => 0018-Anvil-API.patch} (100%) rename patches/server/{0017-Alternative-Keepalive-Handling.patch => 0019-Alternative-Keepalive-Handling.patch} (100%) rename patches/server/{0018-Enchantment-convenience-methods.patch => 0020-Enchantment-convenience-methods.patch} (100%) rename patches/server/{0019-Silk-touch-spawners.patch => 0021-Silk-touch-spawners.patch} (99%) rename patches/server/{0020-Add-turtle-egg-block-options.patch => 0022-Add-turtle-egg-block-options.patch} (96%) rename patches/server/{0021-Logger-settings-suppressing-pointless-logs.patch => 0023-Logger-settings-suppressing-pointless-logs.patch} (100%) rename patches/server/{0022-Disable-outdated-build-check.patch => 0024-Disable-outdated-build-check.patch} (92%) rename patches/server/{0023-Giants-AI-settings.patch => 0025-Giants-AI-settings.patch} (100%) rename patches/server/{0024-Zombie-horse-naturally-spawn.patch => 0026-Zombie-horse-naturally-spawn.patch} (95%) rename patches/server/{0025-Charged-creeper-naturally-spawn.patch => 0027-Charged-creeper-naturally-spawn.patch} (100%) rename patches/server/{0026-Rabbit-naturally-spawn-toast-and-killer.patch => 0028-Rabbit-naturally-spawn-toast-and-killer.patch} (100%) rename patches/server/{0027-Fix-outdated-server-showing-in-ping-before-server-fu.patch => 0029-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (100%) rename patches/server/{0028-Tulips-change-fox-type.patch => 0030-Tulips-change-fox-type.patch} (100%) rename patches/server/{0029-Breedable-Polar-Bears.patch => 0031-Breedable-Polar-Bears.patch} (100%) rename patches/server/{0030-Chickens-can-retaliate.patch => 0032-Chickens-can-retaliate.patch} (97%) rename patches/server/{0031-Add-option-to-set-armorstand-step-height.patch => 0033-Add-option-to-set-armorstand-step-height.patch} (94%) rename patches/server/{0032-Cat-spawning-options.patch => 0034-Cat-spawning-options.patch} (97%) rename patches/server/{0033-Cows-eat-mushrooms.patch => 0035-Cows-eat-mushrooms.patch} (98%) rename patches/server/{0034-Fix-cow-rotation-when-shearing-mooshroom.patch => 0036-Fix-cow-rotation-when-shearing-mooshroom.patch} (100%) rename patches/server/{0035-Pigs-give-saddle-back.patch => 0037-Pigs-give-saddle-back.patch} (100%) rename patches/server/{0036-Snowman-drop-and-put-back-pumpkin.patch => 0038-Snowman-drop-and-put-back-pumpkin.patch} (100%) rename patches/server/{0037-Ender-dragon-always-drop-full-exp.patch => 0039-Ender-dragon-always-drop-full-exp.patch} (100%) rename patches/server/{0038-Allow-soil-to-moisten-from-water-directly-under-it.patch => 0040-Allow-soil-to-moisten-from-water-directly-under-it.patch} (94%) rename patches/server/{0039-Minecart-settings-and-WASD-controls.patch => 0041-Minecart-settings-and-WASD-controls.patch} (97%) rename patches/server/{0040-Disable-loot-drops-on-death-by-cramming.patch => 0042-Disable-loot-drops-on-death-by-cramming.patch} (87%) rename patches/server/{0041-Option-to-toggle-milk-curing-bad-omen.patch => 0043-Option-to-toggle-milk-curing-bad-omen.patch} (95%) rename patches/server/{0042-Skip-events-if-there-s-no-listeners.patch => 0044-Skip-events-if-there-s-no-listeners.patch} (100%) rename patches/server/{0043-Add-permission-for-F3-N-debug.patch => 0045-Add-permission-for-F3-N-debug.patch} (89%) rename patches/server/{0044-Configurable-TPS-Catchup.patch => 0046-Configurable-TPS-Catchup.patch} (66%) rename patches/server/{0045-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch => 0047-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch} (95%) rename patches/server/{0046-Add-enderman-and-creeper-griefing-controls.patch => 0048-Add-enderman-and-creeper-griefing-controls.patch} (95%) rename patches/server/{0047-Villagers-follow-emerald-blocks.patch => 0049-Villagers-follow-emerald-blocks.patch} (96%) rename patches/server/{0048-Allow-leashing-villagers.patch => 0050-Allow-leashing-villagers.patch} (94%) rename patches/server/{0049-Implement-infinite-liquids.patch => 0051-Implement-infinite-liquids.patch} (97%) rename patches/server/{0050-Make-lava-flow-speed-configurable.patch => 0052-Make-lava-flow-speed-configurable.patch} (95%) rename patches/server/{0051-Add-player-death-exp-control-options.patch => 0053-Add-player-death-exp-control-options.patch} (97%) rename patches/server/{0052-Configurable-void-damage-height-and-damage.patch => 0054-Configurable-void-damage-height-and-damage.patch} (96%) rename patches/server/{0053-Add-canSaveToDisk-to-Entity.patch => 0055-Add-canSaveToDisk-to-Entity.patch} (95%) rename patches/server/{0054-Dispenser-curse-of-binding-protection.patch => 0056-Dispenser-curse-of-binding-protection.patch} (92%) rename patches/server/{0055-Add-option-for-boats-to-eject-players-on-land.patch => 0057-Add-option-for-boats-to-eject-players-on-land.patch} (95%) rename patches/server/{0056-Mending-mends-most-damages-equipment-first.patch => 0058-Mending-mends-most-damages-equipment-first.patch} (98%) rename patches/server/{0057-Add-5-second-tps-average-in-tps.patch => 0059-Add-5-second-tps-average-in-tps.patch} (96%) rename patches/server/{0058-Implement-elytra-settings.patch => 0060-Implement-elytra-settings.patch} (96%) rename patches/server/{0059-Item-entity-immunities.patch => 0061-Item-entity-immunities.patch} (97%) rename patches/server/{0060-Add-ping-command.patch => 0062-Add-ping-command.patch} (97%) rename patches/server/{0061-Add-demo-command.patch => 0063-Add-demo-command.patch} (97%) rename patches/server/{0062-Add-credits-command.patch => 0064-Add-credits-command.patch} (97%) rename patches/server/{0063-Configurable-jockey-options.patch => 0065-Configurable-jockey-options.patch} (100%) rename patches/server/{0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0066-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (100%) rename patches/server/{0065-Add-phantom-spawning-options.patch => 0067-Add-phantom-spawning-options.patch} (100%) rename patches/server/{0066-Implement-bed-explosion-options.patch => 0068-Implement-bed-explosion-options.patch} (97%) rename patches/server/{0067-Implement-respawn-anchor-explosion-options.patch => 0069-Implement-respawn-anchor-explosion-options.patch} (97%) rename patches/server/{0068-Add-allow-water-in-end-world-option.patch => 0070-Add-allow-water-in-end-world-option.patch} (98%) rename patches/server/{0069-Allow-color-codes-in-books.patch => 0071-Allow-color-codes-in-books.patch} (92%) rename patches/server/{0070-Entity-lifespan.patch => 0072-Entity-lifespan.patch} (87%) rename patches/server/{0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => 0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (97%) rename patches/server/{0072-Squid-EAR-immunity.patch => 0074-Squid-EAR-immunity.patch} (93%) rename patches/server/{0073-Phantoms-burn-in-light.patch => 0075-Phantoms-burn-in-light.patch} (100%) rename patches/server/{0074-Configurable-villager-breeding.patch => 0076-Configurable-villager-breeding.patch} (93%) rename patches/server/{0075-Redstone-deactivates-spawners.patch => 0077-Redstone-deactivates-spawners.patch} (94%) rename patches/server/{0076-Totems-work-in-inventory.patch => 0078-Totems-work-in-inventory.patch} (91%) rename patches/server/{0077-Add-vindicator-johnny-spawn-chance.patch => 0079-Add-vindicator-johnny-spawn-chance.patch} (100%) rename patches/server/{0078-Dispensers-place-anvils-option.patch => 0080-Dispensers-place-anvils-option.patch} (96%) rename patches/server/{0079-Allow-anvil-colors.patch => 0081-Allow-anvil-colors.patch} (96%) rename patches/server/{0080-Add-option-to-disable-dolphin-treasure-searching.patch => 0082-Add-option-to-disable-dolphin-treasure-searching.patch} (100%) rename patches/server/{0081-Short-enderman-height.patch => 0083-Short-enderman-height.patch} (89%) rename patches/server/{0082-Stop-squids-floating-on-top-of-water.patch => 0084-Stop-squids-floating-on-top-of-water.patch} (96%) rename patches/server/{0083-Crying-obsidian-valid-for-portal-frames.patch => 0085-Crying-obsidian-valid-for-portal-frames.patch} (100%) rename patches/server/{0084-Entities-can-use-portals.patch => 0086-Entities-can-use-portals.patch} (92%) rename patches/server/{0085-Customizable-wither-health-and-healing.patch => 0087-Customizable-wither-health-and-healing.patch} (94%) rename patches/server/{0086-Allow-toggling-special-MobSpawners-per-world.patch => 0088-Allow-toggling-special-MobSpawners-per-world.patch} (96%) rename patches/server/{0087-Raid-cooldown-setting.patch => 0089-Raid-cooldown-setting.patch} (97%) rename patches/server/{0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (100%) rename patches/server/{0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (96%) rename patches/server/{0090-Flying-squids-Oh-my.patch => 0092-Flying-squids-Oh-my.patch} (100%) rename patches/server/{0091-Infinity-bow-settings.patch => 0093-Infinity-bow-settings.patch} (96%) rename patches/server/{0092-Configurable-daylight-cycle.patch => 0094-Configurable-daylight-cycle.patch} (90%) rename patches/server/{0093-Furnace-uses-lava-from-underneath.patch => 0095-Furnace-uses-lava-from-underneath.patch} (97%) rename patches/server/{0094-Arrows-should-not-reset-despawn-counter.patch => 0096-Arrows-should-not-reset-despawn-counter.patch} (91%) rename patches/server/{0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch => 0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch} (95%) rename patches/server/{0096-Add-adjustable-breeding-cooldown-to-config.patch => 0098-Add-adjustable-breeding-cooldown-to-config.patch} (97%) rename patches/server/{0097-Make-entity-breeding-times-configurable.patch => 0099-Make-entity-breeding-times-configurable.patch} (99%) rename patches/server/{0098-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0100-Apply-display-names-from-item-forms-of-entities-to-e.patch} (99%) rename patches/server/{0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch => 0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch} (96%) rename patches/server/{0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch => 0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch} (93%) rename patches/server/{0101-Add-configurable-snowball-damage.patch => 0103-Add-configurable-snowball-damage.patch} (94%) rename patches/server/{0102-Changeable-Mob-Left-Handed-Chance.patch => 0104-Changeable-Mob-Left-Handed-Chance.patch} (86%) rename patches/server/{0103-Add-boat-fall-damage-config.patch => 0105-Add-boat-fall-damage-config.patch} (94%) rename patches/server/{0104-Snow-Golem-rate-of-fire-config.patch => 0106-Snow-Golem-rate-of-fire-config.patch} (100%) rename patches/server/{0105-EMC-Configurable-disable-give-dropping.patch => 0107-EMC-Configurable-disable-give-dropping.patch} (100%) rename patches/server/{0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => 0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (98%) rename patches/server/{0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch => 0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch} (100%) rename patches/server/{0108-Configurable-chance-for-wolves-to-spawn-rabid.patch => 0110-Configurable-chance-for-wolves-to-spawn-rabid.patch} (100%) rename patches/server/{0109-Configurable-default-collar-color.patch => 0111-Configurable-default-collar-color.patch} (100%) rename patches/server/{0110-Phantom-flames-on-swoop.patch => 0112-Phantom-flames-on-swoop.patch} (100%) rename patches/server/{0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch => 0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch} (94%) rename patches/server/{0112-Implement-TPSBar.patch => 0114-Implement-TPSBar.patch} (97%) rename patches/server/{0113-Striders-give-saddle-back.patch => 0115-Striders-give-saddle-back.patch} (100%) rename patches/server/{0114-PlayerBookTooLargeEvent.patch => 0116-PlayerBookTooLargeEvent.patch} (91%) rename patches/server/{0115-Full-netherite-armor-grants-fire-resistance.patch => 0117-Full-netherite-armor-grants-fire-resistance.patch} (97%) rename patches/server/{0116-Add-mobGriefing-bypass-to-everything-affected.patch => 0118-Add-mobGriefing-bypass-to-everything-affected.patch} (97%) rename patches/server/{0117-Config-to-allow-Note-Block-sounds-when-blocked.patch => 0119-Config-to-allow-Note-Block-sounds-when-blocked.patch} (96%) rename patches/server/{0118-Add-EntityTeleportHinderedEvent.patch => 0120-Add-EntityTeleportHinderedEvent.patch} (99%) rename patches/server/{0119-Farmland-trampling-changes.patch => 0121-Farmland-trampling-changes.patch} (94%) rename patches/server/{0120-Movement-options-for-armor-stands.patch => 0122-Movement-options-for-armor-stands.patch} (96%) rename patches/server/{0121-Fix-stuck-in-portals.patch => 0123-Fix-stuck-in-portals.patch} (96%) rename patches/server/{0122-Toggle-for-water-sensitive-mob-damage.patch => 0124-Toggle-for-water-sensitive-mob-damage.patch} (99%) rename patches/server/{0123-Config-to-always-tame-in-Creative.patch => 0125-Config-to-always-tame-in-Creative.patch} (96%) rename patches/server/{0124-End-crystal-explosion-options.patch => 0126-End-crystal-explosion-options.patch} (98%) rename patches/server/{0125-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch => 0127-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch} (93%) rename patches/server/{0126-Dont-run-with-scissors.patch => 0128-Dont-run-with-scissors.patch} (96%) rename patches/server/{0127-One-Punch-Man.patch => 0129-One-Punch-Man.patch} (92%) rename patches/server/{0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch => 0130-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch} (98%) rename patches/server/{0129-Config-to-ignore-nearby-mobs-when-sleeping.patch => 0131-Config-to-ignore-nearby-mobs-when-sleeping.patch} (92%) rename patches/server/{0130-Add-back-player-spawned-endermite-API.patch => 0132-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/server/{0131-Config-Enderman-aggressiveness-towards-Endermites.patch => 0133-Config-Enderman-aggressiveness-towards-Endermites.patch} (95%) rename patches/server/{0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch => 0134-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch} (93%) rename patches/server/{0133-Tick-fluids-config.patch => 0135-Tick-fluids-config.patch} (97%) rename patches/server/{0134-Config-to-disable-Llama-caravans.patch => 0136-Config-to-disable-Llama-caravans.patch} (97%) rename patches/server/{0135-Config-to-make-Creepers-explode-on-death.patch => 0137-Config-to-make-Creepers-explode-on-death.patch} (97%) rename patches/server/{0136-Configurable-ravager-griefable-blocks-list.patch => 0138-Configurable-ravager-griefable-blocks-list.patch} (98%) rename patches/server/{0137-Sneak-to-bulk-process-composter.patch => 0139-Sneak-to-bulk-process-composter.patch} (98%) rename patches/server/{0138-Config-for-skipping-night.patch => 0140-Config-for-skipping-night.patch} (92%) rename patches/server/{0139-Add-config-for-villager-trading.patch => 0141-Add-config-for-villager-trading.patch} (94%) rename patches/server/{0140-Drowning-Settings.patch => 0142-Drowning-Settings.patch} (92%) rename patches/server/{0141-Break-individual-slabs-when-sneaking.patch => 0143-Break-individual-slabs-when-sneaking.patch} (97%) rename patches/server/{0142-Config-to-disable-hostile-mob-spawn-on-ice.patch => 0144-Config-to-disable-hostile-mob-spawn-on-ice.patch} (96%) rename patches/server/{0143-Config-to-show-Armor-Stand-arms-on-spawn.patch => 0145-Config-to-show-Armor-Stand-arms-on-spawn.patch} (96%) rename patches/server/{0144-Option-to-make-doors-require-redstone.patch => 0146-Option-to-make-doors-require-redstone.patch} (96%) rename patches/server/{0145-Config-to-allow-unsafe-enchants.patch => 0147-Config-to-allow-unsafe-enchants.patch} (100%) rename patches/server/{0146-Configurable-sponge-absorption.patch => 0148-Configurable-sponge-absorption.patch} (95%) rename patches/server/{0147-Projectile-offset-config.patch => 0149-Projectile-offset-config.patch} (98%) rename patches/server/{0148-Config-for-powered-rail-activation-distance.patch => 0150-Config-for-powered-rail-activation-distance.patch} (94%) rename patches/server/{0149-Piglin-portal-spawn-modifier.patch => 0151-Piglin-portal-spawn-modifier.patch} (96%) rename patches/server/{0150-Config-to-change-max-number-of-bees.patch => 0152-Config-to-change-max-number-of-bees.patch} (100%) rename patches/server/{0151-Config-for-wither-explosion-radius.patch => 0153-Config-for-wither-explosion-radius.patch} (96%) rename patches/server/{0152-Gamemode-extra-permissions.patch => 0154-Gamemode-extra-permissions.patch} (98%) rename patches/server/{0153-Configurable-piston-push-limit.patch => 0155-Configurable-piston-push-limit.patch} (96%) rename patches/server/{0154-Configurable-broadcast-settings.patch => 0156-Configurable-broadcast-settings.patch} (97%) rename patches/server/{0155-Configurable-mob-blindness.patch => 0157-Configurable-mob-blindness.patch} (91%) rename patches/server/{0156-Hide-hidden-players-from-entity-selector.patch => 0158-Hide-hidden-players-from-entity-selector.patch} (100%) rename patches/server/{0157-Config-for-health-to-impact-Creeper-explosion-radius.patch => 0159-Config-for-health-to-impact-Creeper-explosion-radius.patch} (96%) rename patches/server/{0158-Iron-golem-calm-anger-options.patch => 0160-Iron-golem-calm-anger-options.patch} (98%) rename patches/server/{0159-Breedable-parrots.patch => 0161-Breedable-parrots.patch} (97%) rename patches/server/{0160-Configurable-powered-rail-boost-modifier.patch => 0162-Configurable-powered-rail-boost-modifier.patch} (92%) rename patches/server/{0161-Add-config-change-multiplier-critical-damage-value.patch => 0163-Add-config-change-multiplier-critical-damage-value.patch} (96%) rename patches/server/{0162-Option-to-disable-dragon-egg-teleporting.patch => 0164-Option-to-disable-dragon-egg-teleporting.patch} (95%) rename patches/server/{0163-Config-for-unverified-username-message.patch => 0165-Config-for-unverified-username-message.patch} (100%) rename patches/server/{0164-Make-anvil-cumulative-cost-configurable.patch => 0166-Make-anvil-cumulative-cost-configurable.patch} (95%) rename patches/server/{0165-Bee-can-work-when-raining-or-at-night.patch => 0167-Bee-can-work-when-raining-or-at-night.patch} (100%) rename patches/server/{0166-API-for-any-mob-to-burn-daylight.patch => 0168-API-for-any-mob-to-burn-daylight.patch} (97%) rename patches/server/{0167-Config-MobEffect-by-world.patch => 0169-Config-MobEffect-by-world.patch} (98%) rename patches/server/{0168-Beacon-Activation-Range-Configurable.patch => 0170-Beacon-Activation-Range-Configurable.patch} (96%) rename patches/server/{0169-Make-lightning-rod-range-configurable.patch => 0171-Make-lightning-rod-range-configurable.patch} (93%) rename patches/server/{0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch => 0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch} (98%) rename patches/server/{0171-Allow-player-join-full-server-by-permission.patch => 0173-Allow-player-join-full-server-by-permission.patch} (93%) rename patches/server/{0172-Add-portal-permission-bypass.patch => 0174-Add-portal-permission-bypass.patch} (96%) rename patches/server/{0173-Shulker-spawn-from-bullet-options.patch => 0175-Shulker-spawn-from-bullet-options.patch} (98%) rename patches/server/{0174-Eating-glow-berries-adds-glow-effect.patch => 0176-Eating-glow-berries-adds-glow-effect.patch} (97%) rename patches/server/{0175-Option-to-make-drowned-break-doors.patch => 0177-Option-to-make-drowned-break-doors.patch} (96%) rename patches/server/{0176-Configurable-hunger-starvation-damage.patch => 0178-Configurable-hunger-starvation-damage.patch} (95%) rename patches/server/{0177-Enhance-SysoutCatcher.patch => 0179-Enhance-SysoutCatcher.patch} (100%) rename patches/server/{0178-Add-uptime-command.patch => 0180-Add-uptime-command.patch} (97%) rename patches/server/{0179-Tool-actionable-options.patch => 0181-Tool-actionable-options.patch} (99%) rename patches/server/{0180-Store-placer-on-Block-when-placed.patch => 0182-Store-placer-on-Block-when-placed.patch} (100%) rename patches/server/{0181-Summoner-API.patch => 0183-Summoner-API.patch} (98%) rename patches/server/{0182-Customizable-sleeping-actionbar-messages.patch => 0184-Customizable-sleeping-actionbar-messages.patch} (95%) rename patches/server/{0183-option-to-disable-shulker-box-items-from-dropping-co.patch => 0185-option-to-disable-shulker-box-items-from-dropping-co.patch} (96%) rename patches/server/{0184-Big-dripleaf-tilt-delay.patch => 0186-Big-dripleaf-tilt-delay.patch} (96%) rename patches/server/{0185-Player-ridable-in-water-option.patch => 0187-Player-ridable-in-water-option.patch} (96%) rename patches/server/{0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch => 0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch} (90%) rename patches/server/{0187-Add-compass-command.patch => 0189-Add-compass-command.patch} (99%) rename patches/server/{0188-Toggle-for-kinetic-damage.patch => 0190-Toggle-for-kinetic-damage.patch} (88%) rename patches/server/{0189-Add-Option-for-disable-observer-clocks.patch => 0191-Add-Option-for-disable-observer-clocks.patch} (95%) rename patches/server/{0190-Customizeable-Zombie-Villager-curing-times.patch => 0192-Customizeable-Zombie-Villager-curing-times.patch} (96%) rename patches/server/{0191-Option-for-sponges-to-work-on-lava-and-mud.patch => 0193-Option-for-sponges-to-work-on-lava-and-mud.patch} (96%) rename patches/server/{0192-Toggle-for-Wither-s-spawn-sound.patch => 0194-Toggle-for-Wither-s-spawn-sound.patch} (89%) rename patches/server/{0193-Cactus-breaks-from-solid-neighbors-config.patch => 0195-Cactus-breaks-from-solid-neighbors-config.patch} (95%) rename patches/server/{0194-Config-to-remove-curse-of-binding-with-weakness.patch => 0196-Config-to-remove-curse-of-binding-with-weakness.patch} (96%) rename patches/server/{0195-Conduit-behavior-configuration.patch => 0197-Conduit-behavior-configuration.patch} (98%) rename patches/server/{0196-Cauldron-fill-chances.patch => 0198-Cauldron-fill-chances.patch} (97%) rename patches/server/{0197-Config-to-allow-mobs-to-pathfind-over-rails.patch => 0199-Config-to-allow-mobs-to-pathfind-over-rails.patch} (96%) rename patches/server/{0198-Shulker-change-color-with-dye.patch => 0200-Shulker-change-color-with-dye.patch} (96%) rename patches/server/{0199-Extended-OfflinePlayer-API.patch => 0201-Extended-OfflinePlayer-API.patch} (99%) rename patches/server/{0200-Added-the-ability-to-add-combustible-items.patch => 0202-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/server/{0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch => 0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch} (90%) rename patches/server/{0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch => 0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch} (97%) rename patches/server/{0203-Shift-right-click-to-use-exp-for-mending.patch => 0205-Shift-right-click-to-use-exp-for-mending.patch} (94%) rename patches/server/{0204-Dolphins-naturally-aggressive-to-players-chance.patch => 0206-Dolphins-naturally-aggressive-to-players-chance.patch} (98%) rename patches/server/{0205-Cows-naturally-aggressive-to-players-chance.patch => 0207-Cows-naturally-aggressive-to-players-chance.patch} (98%) rename patches/server/{0206-Option-for-beds-to-explode-on-villager-sleep.patch => 0208-Option-for-beds-to-explode-on-villager-sleep.patch} (90%) rename patches/server/{0207-Halloween-options-and-optimizations.patch => 0209-Halloween-options-and-optimizations.patch} (89%) rename patches/server/{0208-Config-for-grindstones.patch => 0210-Config-for-grindstones.patch} (100%) rename patches/server/{0209-UPnP-Port-Forwarding.patch => 0211-UPnP-Port-Forwarding.patch} (93%) rename patches/server/{0210-Campfire-option-for-lit-when-placed.patch => 0212-Campfire-option-for-lit-when-placed.patch} (96%) rename patches/server/{0211-options-to-extinguish-fire-blocks-with-snowballs.patch => 0213-options-to-extinguish-fire-blocks-with-snowballs.patch} (98%) rename patches/server/{0212-Add-option-to-disable-zombie-villagers-cure.patch => 0214-Add-option-to-disable-zombie-villagers-cure.patch} (96%) rename patches/server/{0213-Persistent-BlockEntity-Lore-and-DisplayName.patch => 0215-Persistent-BlockEntity-Lore-and-DisplayName.patch} (98%) rename patches/server/{0214-Signs-allow-color-codes.patch => 0216-Signs-allow-color-codes.patch} (97%) rename patches/server/{0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0217-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (100%) rename patches/server/{0216-Mobs-always-drop-experience.patch => 0218-Mobs-always-drop-experience.patch} (99%) rename patches/server/{0217-Grindstone-API.patch => 0219-Grindstone-API.patch} (100%) rename patches/server/{0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0220-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (96%) rename patches/server/{0219-Turtle-eggs-random-tick-crack-chance.patch => 0221-Turtle-eggs-random-tick-crack-chance.patch} (91%) rename patches/server/{0220-Mob-head-visibility-percent.patch => 0222-Mob-head-visibility-percent.patch} (96%) rename patches/server/{0221-Configurable-valid-characters-for-usernames.patch => 0223-Configurable-valid-characters-for-usernames.patch} (100%) rename patches/server/{0222-Stop-bees-from-dying-after-stinging.patch => 0224-Stop-bees-from-dying-after-stinging.patch} (95%) rename patches/server/{0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (95%) rename patches/server/{0224-Configurable-farmland-trample-height.patch => 0226-Configurable-farmland-trample-height.patch} (97%) rename patches/server/{0225-Configurable-player-pickup-exp-delay.patch => 0227-Configurable-player-pickup-exp-delay.patch} (97%) rename patches/server/{0226-Allow-void-trading.patch => 0228-Allow-void-trading.patch} (91%) rename patches/server/{0227-Configurable-phantom-size.patch => 0229-Configurable-phantom-size.patch} (96%) rename patches/server/{0228-Max-joins-per-second.patch => 0230-Max-joins-per-second.patch} (96%) rename patches/server/{0229-Configurable-minimum-demand-for-trades.patch => 0231-Configurable-minimum-demand-for-trades.patch} (92%) rename patches/server/{0230-Lobotomize-stuck-villagers.patch => 0232-Lobotomize-stuck-villagers.patch} (92%) rename patches/server/{0231-Option-for-villager-display-trade-item.patch => 0233-Option-for-villager-display-trade-item.patch} (96%) rename patches/server/{0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (95%) rename patches/server/{0233-Config-for-mob-last-hurt-by-player-time.patch => 0235-Config-for-mob-last-hurt-by-player-time.patch} (93%) rename patches/server/{0234-Anvil-repair-damage-options.patch => 0236-Anvil-repair-damage-options.patch} (98%) rename patches/server/{0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (96%) rename patches/server/{0236-Add-toggle-for-enchant-level-clamping.patch => 0238-Add-toggle-for-enchant-level-clamping.patch} (100%) rename patches/server/{0237-Skip-junit-tests-for-purpur-commands.patch => 0239-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0238-Implement-configurable-search-radius-for-villagers-t.patch => 0240-Implement-configurable-search-radius-for-villagers-t.patch} (91%) rename patches/server/{0239-Stonecutter-damage.patch => 0241-Stonecutter-damage.patch} (97%) rename patches/server/{0240-Configurable-damage-settings-for-magma-blocks.patch => 0242-Configurable-damage-settings-for-magma-blocks.patch} (95%) rename patches/server/{0241-Add-config-for-snow-on-blue-ice.patch => 0243-Add-config-for-snow-on-blue-ice.patch} (95%) rename patches/server/{0242-Skeletons-eat-wither-roses.patch => 0244-Skeletons-eat-wither-roses.patch} (98%) rename patches/server/{0243-Enchantment-Table-Persists-Lapis.patch => 0245-Enchantment-Table-Persists-Lapis.patch} (98%) rename patches/server/{0244-Option-to-disable-kick-for-out-of-order-chat.patch => 0246-Option-to-disable-kick-for-out-of-order-chat.patch} (100%) rename patches/server/{0245-Config-for-sculk-shrieker-can_summon-state.patch => 0247-Config-for-sculk-shrieker-can_summon-state.patch} (95%) rename patches/server/{0246-Config-to-not-let-coral-die.patch => 0248-Config-to-not-let-coral-die.patch} (96%) rename patches/server/{0247-Add-local-difficulty-api.patch => 0249-Add-local-difficulty-api.patch} (100%) rename patches/server/{0248-Add-toggle-for-RNG-manipulation.patch => 0250-Add-toggle-for-RNG-manipulation.patch} (95%) rename patches/server/{0249-Add-more-logger-output-for-invalid-movement-kicks.patch => 0251-Add-more-logger-output-for-invalid-movement-kicks.patch} (94%) rename patches/server/{0250-Add-Bee-API.patch => 0252-Add-Bee-API.patch} (100%) rename patches/server/{0251-Debug-Marker-API.patch => 0253-Debug-Marker-API.patch} (98%) rename patches/server/{0252-mob-spawning-option-to-ignore-creative-players.patch => 0254-mob-spawning-option-to-ignore-creative-players.patch} (92%) rename patches/server/{0253-Add-skeleton-bow-accuracy-option.patch => 0255-Add-skeleton-bow-accuracy-option.patch} (97%) rename patches/server/{0254-Add-death-screen-API.patch => 0256-Add-death-screen-API.patch} (92%) rename patches/{unapplied-server/0260-Make-pufferfish-config-relocatable.patch => server/0257-Make-pufferfish-config-relocatable.patch} (85%) rename patches/server/{0255-Implement-ram-and-rambar-commands.patch => 0258-Implement-ram-and-rambar-commands.patch} (99%) rename patches/server/{0256-Configurable-block-blast-resistance.patch => 0259-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0257-Configurable-block-fall-damage-modifiers.patch => 0260-Configurable-block-fall-damage-modifiers.patch} (100%) rename patches/server/{0258-Language-API.patch => 0261-Language-API.patch} (100%) rename patches/server/{0259-Milk-Keeps-Beneficial-Effects.patch => 0262-Milk-Keeps-Beneficial-Effects.patch} (91%) rename patches/server/{0260-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0261-Add-log-suppression-for-LibraryLoader.patch => 0264-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0262-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (96%) rename patches/server/{0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (96%) rename patches/server/{0264-Fire-Immunity-API.patch => 0267-Fire-Immunity-API.patch} (84%) rename patches/server/{0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (93%) rename patches/server/{0266-Added-got-ram-event.patch => 0269-Added-got-ram-event.patch} (86%) rename patches/server/{0267-Log-skipped-entity-s-position.patch => 0270-Log-skipped-entity-s-position.patch} (86%) rename patches/server/{0268-End-Crystal-Cramming.patch => 0271-End-Crystal-Cramming.patch} (96%) rename patches/server/{0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (97%) rename patches/server/{0270-Add-attribute-clamping-and-armor-limit-config.patch => 0273-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0271-Config-to-remove-explosion-radius-clamp.patch => 0274-Config-to-remove-explosion-radius-clamp.patch} (96%) rename patches/server/{0272-bonemealable-sugarcane-cactus-and-netherwart.patch => 0275-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0273-Add-PreExplodeEvents.patch => 0276-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0274-Improve-output-of-plugins-command.patch => 0277-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0275-Make-GUI-Great-Again.patch => 0278-Make-GUI-Great-Again.patch} (99%) rename patches/server/{0276-Stored-Bee-API.patch => 0279-Stored-Bee-API.patch} (100%) rename patches/server/{0277-Shears-can-defuse-TNT.patch => 0280-Shears-can-defuse-TNT.patch} (97%) rename patches/server/{0278-Explorer-Map-API.patch => 0281-Explorer-Map-API.patch} (100%) rename patches/server/{0279-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0282-Option-Ocelot-Spawn-Under-Sea-Level.patch} (95%) rename patches/server/{0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (96%) rename patches/server/{0281-Add-option-for-always-showing-item-in-player-death-m.patch => 0284-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0282-place-end-crystal-on-any-block.patch => 0285-place-end-crystal-on-any-block.patch} (92%) rename patches/server/{0283-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0286-Add-option-to-disable-the-copper-oxidation-proximity.patch} (96%) rename patches/server/{0284-register-minecraft-debug-commands.patch => 0287-register-minecraft-debug-commands.patch} (96%) rename patches/server/{0285-Configurable-villager-search-radius.patch => 0288-Configurable-villager-search-radius.patch} (97%) rename patches/server/{0286-option-to-make-ravagers-afraid-of-rabbits.patch => 0289-option-to-make-ravagers-afraid-of-rabbits.patch} (96%) rename patches/server/{0287-config-for-startup-commands.patch => 0290-config-for-startup-commands.patch} (93%) rename patches/server/{0288-Config-to-reverse-bubble-column-flow.patch => 0291-Config-to-reverse-bubble-column-flow.patch} (100%) rename patches/server/{0289-Adopt-MaterialRerouting.patch => 0292-Adopt-MaterialRerouting.patch} (100%) rename patches/server/{0290-Fire-EntityTeleportHinderedEvent-when-attempting-to-.patch => 0293-Fire-EntityTeleportHinderedEvent-when-attempting-to-.patch} (91%) rename patches/server/{0291-ItemStack-convenience-methods.patch => 0294-ItemStack-convenience-methods.patch} (100%) diff --git a/patches/unapplied-server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch similarity index 62% rename from patches/unapplied-server/0001-Pufferfish-Server-Changes.patch rename to patches/server/0001-Pufferfish-Server-Changes.patch index bb424c228..a772acad2 100644 --- a/patches/unapplied-server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -20,19 +20,19 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index de0474b8dce58cb419c00b7614d7dd66be832a02..6cfa3f9994de36e135658841aa3c091b90a14424 100644 +index faf3e3fd72e8c915e7a4803dacbe1bb576c6663e..1bb33b64bd73c8ea591c3ffdf5573c7c55a520f3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -13,7 +13,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { - val alsoShade: Configuration by configurations.creating +@@ -25,7 +25,7 @@ abstract class MockitoAgentProvider : CommandLineArgumentProvider { + // Paper end - configure mockito agent that is needed in newer java versions dependencies { - implementation(project(":paper-api")) + implementation(project(":pufferfish-api")) // Pufferfish // Paper // Paper start - implementation("org.jline:jline-terminal-jansi:3.21.0") - implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -47,6 +47,13 @@ dependencies { + implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ + implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 +@@ -60,6 +60,13 @@ dependencies { runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") @@ -46,8 +46,8 @@ index de0474b8dce58cb419c00b7614d7dd66be832a02..6cfa3f9994de36e135658841aa3c091b testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.2") testImplementation("org.junit.platform:junit-platform-suite-engine:1.10.0") -@@ -72,6 +79,14 @@ paperweight { - craftBukkitPackageVersion.set("v1_21_R1") // also needs to be updated in MappingEnvironment +@@ -86,6 +93,14 @@ paperweight { + craftBukkitPackageVersion.set("v1_21_R2") // also needs to be updated in MappingEnvironment } + @@ -61,7 +61,7 @@ index de0474b8dce58cb419c00b7614d7dd66be832a02..6cfa3f9994de36e135658841aa3c091b tasks.jar { archiveClassifier.set("dev") -@@ -85,14 +100,14 @@ tasks.jar { +@@ -99,14 +114,14 @@ tasks.jar { val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", @@ -81,20 +81,55 @@ index de0474b8dce58cb419c00b7614d7dd66be832a02..6cfa3f9994de36e135658841aa3c091b "Build-Number" to (build ?: ""), "Build-Time" to Instant.now().toString(), "Git-Branch" to gitBranch, // Paper -diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java -index 7620c72a4c243cbeea245203ce03a97cbfa7d922..b35a9f4c5f8960864c402ede8a51fb5ab9c4fcc0 100644 ---- a/src/main/java/co/aikar/timings/TimingsExport.java -+++ b/src/main/java/co/aikar/timings/TimingsExport.java -@@ -240,7 +240,8 @@ public class TimingsExport extends Thread { - parent.put("config", createObject( - pair("spigot", mapAsJSON(Bukkit.spigot().getSpigotConfig(), null)), - pair("bukkit", mapAsJSON(Bukkit.spigot().getBukkitConfig(), null)), -- pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)) -+ pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)), // Pufferfish -+ pair("pufferfish", mapAsJSON(gg.pufferfish.pufferfish.PufferfishConfig.getConfigCopy(), null)) // Pufferfish - )); +diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java b/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java +index c21e00812f1aaa1279834a0562d360d6b89e146c..877d2095a066854939f260ca4b0b8c7b5abb620f 100644 +--- a/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java ++++ b/src/main/java/ca/spottedleaf/moonrise/common/list/IteratorSafeOrderedReferenceSet.java +@@ -18,7 +18,7 @@ public final class IteratorSafeOrderedReferenceSet { + + private final double maxFragFactor; + +- private int iteratorCount; ++ private final java.util.concurrent.atomic.AtomicInteger iteratorCount = new java.util.concurrent.atomic.AtomicInteger(); // Pufferfish - async mob spawning + + public IteratorSafeOrderedReferenceSet() { + this(16, 0.75f, 16, 0.2); +@@ -79,7 +79,7 @@ public final class IteratorSafeOrderedReferenceSet { + } + + public int createRawIterator() { +- ++this.iteratorCount; ++ this.iteratorCount.incrementAndGet(); // Pufferfish - async mob spawning + if (this.indexMap.isEmpty()) { + return -1; + } else { +@@ -100,7 +100,7 @@ public final class IteratorSafeOrderedReferenceSet { + } + + public void finishRawIterator() { +- if (--this.iteratorCount == 0) { ++ if (this.iteratorCount.decrementAndGet() == 0) { // Pufferfish - async mob spawning + if (this.getFragFactor() >= this.maxFragFactor) { + this.defrag(); + } +@@ -117,7 +117,7 @@ public final class IteratorSafeOrderedReferenceSet { + throw new IllegalStateException(); + } + this.listElements[index] = null; +- if (this.iteratorCount == 0 && this.getFragFactor() >= this.maxFragFactor) { ++ if (this.iteratorCount.get() == 0 && this.getFragFactor() >= this.maxFragFactor) { // Pufferfish - async mob spawning + this.defrag(); + } + //this.check(); +@@ -219,7 +219,7 @@ public final class IteratorSafeOrderedReferenceSet { + } + + public IteratorSafeOrderedReferenceSet.Iterator iterator(final int flags) { +- ++this.iteratorCount; ++ this.iteratorCount.incrementAndGet(); // Pufferfish - async mob spawning + return new BaseIterator<>(this, true, (flags & ITERATOR_FLAG_SEE_ADDITIONS) != 0 ? Integer.MAX_VALUE : this.listSize); + } - new TimingsExport(listeners, parent, history).start(); diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java index 4b002e8b75d117b726b0de274a76d3596fce015b..692c962193cf9fcc6801fc93f3220bdc673d527b 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java @@ -122,148 +157,6 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..692c962193cf9fcc6801fc93f3220bdc metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); -diff --git a/src/main/java/gg/airplane/structs/FluidDirectionCache.java b/src/main/java/gg/airplane/structs/FluidDirectionCache.java -new file mode 100644 -index 0000000000000000000000000000000000000000..aa8467b9dda1f7707e41f50ac7b3e9d7343723ec ---- /dev/null -+++ b/src/main/java/gg/airplane/structs/FluidDirectionCache.java -@@ -0,0 +1,136 @@ -+package gg.airplane.structs; -+ -+import it.unimi.dsi.fastutil.HashCommon; -+ -+/** -+ * This is a replacement for the cache used in FluidTypeFlowing. -+ * The requirements for the previous cache were: -+ * - Store 200 entries -+ * - Look for the flag in the cache -+ * - If it exists, move to front of cache -+ * - If it doesn't exist, remove last entry in cache and insert in front -+ * -+ * This class accomplishes something similar, however has a few different -+ * requirements put into place to make this more optimize: -+ * -+ * - maxDistance is the most amount of entries to be checked, instead -+ * of having to check the entire list. -+ * - In combination with that, entries are all tracked by age and how -+ * frequently they're used. This enables us to remove old entries, -+ * without constantly shifting any around. -+ * -+ * Usage of the previous map would have to reset the head every single usage, -+ * shifting the entire map. Here, nothing happens except an increment when -+ * the cache is hit, and when it needs to replace an old element only a single -+ * element is modified. -+ */ -+public class FluidDirectionCache { -+ -+ private static class FluidDirectionEntry { -+ private final T data; -+ private final boolean flag; -+ private int uses = 0; -+ private int age = 0; -+ -+ private FluidDirectionEntry(T data, boolean flag) { -+ this.data = data; -+ this.flag = flag; -+ } -+ -+ public int getValue() { -+ return this.uses - (this.age >> 1); // age isn't as important as uses -+ } -+ -+ public void incrementUses() { -+ this.uses = this.uses + 1 & Integer.MAX_VALUE; -+ } -+ -+ public void incrementAge() { -+ this.age = this.age + 1 & Integer.MAX_VALUE; -+ } -+ } -+ -+ private final FluidDirectionEntry[] entries; -+ private final int mask; -+ private final int maxDistance; // the most amount of entries to check for a value -+ -+ public FluidDirectionCache(int size) { -+ int arraySize = HashCommon.nextPowerOfTwo(size); -+ this.entries = new FluidDirectionEntry[arraySize]; -+ this.mask = arraySize - 1; -+ this.maxDistance = Math.min(arraySize, 4); -+ } -+ -+ public Boolean getValue(T data) { -+ FluidDirectionEntry curr; -+ int pos; -+ -+ if ((curr = this.entries[pos = HashCommon.mix(data.hashCode()) & this.mask]) == null) { -+ return null; -+ } else if (data.equals(curr.data)) { -+ curr.incrementUses(); -+ return curr.flag; -+ } -+ -+ int checked = 1; // start at 1 because we already checked the first spot above -+ -+ while ((curr = this.entries[pos = (pos + 1) & this.mask]) != null) { -+ if (data.equals(curr.data)) { -+ curr.incrementUses(); -+ return curr.flag; -+ } else if (++checked >= this.maxDistance) { -+ break; -+ } -+ } -+ -+ return null; -+ } -+ -+ public void putValue(T data, boolean flag) { -+ FluidDirectionEntry curr; -+ int pos; -+ -+ if ((curr = this.entries[pos = HashCommon.mix(data.hashCode()) & this.mask]) == null) { -+ this.entries[pos] = new FluidDirectionEntry<>(data, flag); // add -+ return; -+ } else if (data.equals(curr.data)) { -+ curr.incrementUses(); -+ return; -+ } -+ -+ int checked = 1; // start at 1 because we already checked the first spot above -+ -+ while ((curr = this.entries[pos = (pos + 1) & this.mask]) != null) { -+ if (data.equals(curr.data)) { -+ curr.incrementUses(); -+ return; -+ } else if (++checked >= this.maxDistance) { -+ this.forceAdd(data, flag); -+ return; -+ } -+ } -+ -+ this.entries[pos] = new FluidDirectionEntry<>(data, flag); // add -+ } -+ -+ private void forceAdd(T data, boolean flag) { -+ int expectedPos = HashCommon.mix(data.hashCode()) & this.mask; -+ -+ int toRemovePos = expectedPos; -+ FluidDirectionEntry entryToRemove = this.entries[toRemovePos]; -+ -+ for (int i = expectedPos + 1; i < expectedPos + this.maxDistance; i++) { -+ int pos = i & this.mask; -+ FluidDirectionEntry entry = this.entries[pos]; -+ if (entry.getValue() < entryToRemove.getValue()) { -+ toRemovePos = pos; -+ entryToRemove = entry; -+ } -+ -+ entry.incrementAge(); // use this as a mechanism to age the other entries -+ } -+ -+ // remove the least used/oldest entry -+ this.entries[toRemovePos] = new FluidDirectionEntry(data, flag); -+ } -+} diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishCommand.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..020368da69b9a492155f6de6297f74732f4ab6ea @@ -340,10 +233,10 @@ index 0000000000000000000000000000000000000000..020368da69b9a492155f6de6297f7473 +} diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..11075b0b4d4c5591850704999868c678348170ff +index 0000000000000000000000000000000000000000..f5a43a1e1a78b3eaabbcadc7af09750ee478eeb6 --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -@@ -0,0 +1,299 @@ +@@ -0,0 +1,280 @@ +package gg.pufferfish.pufferfish; + +import gg.pufferfish.pufferfish.simd.SIMDDetection; @@ -351,10 +244,7 @@ index 0000000000000000000000000000000000000000..11075b0b4d4c5591850704999868c678 +import java.io.IOException; +import java.util.Collections; +import net.minecraft.core.registries.BuiltInRegistries; -+import java.util.Locale; -+import java.util.Map; +import net.minecraft.server.MinecraftServer; -+import net.minecraft.tags.TagKey; +import org.apache.logging.log4j.Level; +import org.bukkit.configuration.ConfigurationSection; +import net.minecraft.world.entity.EntityType; @@ -602,23 +492,6 @@ index 0000000000000000000000000000000000000000..11075b0b4d4c5591850704999868c678 + + setComment("dab", "Optimizes entity brains when", "they're far away from the player"); + } -+ -+ public static Map projectileTimeouts; -+ private static void projectileTimeouts() { -+ // Set some defaults -+ getInt("entity_timeouts.SNOWBALL", -1); -+ getInt("entity_timeouts.LLAMA_SPIT", -1); -+ setComment("entity_timeouts", -+ "These values define a entity's maximum lifespan. If an", -+ "entity is in this list and it has survived for longer than", -+ "that number of ticks, then it will be removed. Setting a value to", -+ "-1 disables this feature."); -+ -+ for (EntityType entityType : BuiltInRegistries.ENTITY_TYPE) { -+ String type = EntityType.getKey(entityType).getPath().toUpperCase(Locale.ROOT); -+ entityType.ttl = config.getInt("entity_timeouts." + type, -1); -+ } -+ } + + public static boolean throttleInactiveGoalSelectorTick; + private static void inactiveGoalSelectorThrottle() { @@ -636,6 +509,7 @@ index 0000000000000000000000000000000000000000..11075b0b4d4c5591850704999868c678 + "the ender dragon whenever a player places an end crystal."); + } + ++ + public static boolean disableMethodProfiler; + private static void miscSettings() { + disableMethodProfiler = getBoolean("misc.disable-method-profiler", true); @@ -1143,43 +1017,43 @@ index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f549 + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 696d075ca2883f3c37e35f983c4d020e5db89d16..e63721261258dba60b1eef2eee011e0aa18b0fd2 100644 +index 780582ebaa8deb0c0b0c8de17de5abcebafa4bd3..05e49085d71e5e93a0033d3ca2a670981d6dfe75 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -322,6 +322,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping + public gg.pufferfish.pufferfish.util.AsyncExecutor mobSpawnExecutor = new gg.pufferfish.pufferfish.util.AsyncExecutor("MobSpawning"); // Pufferfish - optimize mob spawning public static S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -1312,6 +1313,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { + this.executeBlocking(() -> { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index dd56c8e041116ef3602a9f89c998c8208ab89b51..18bf9c42e76c8c35f57d74ea4adfa5b3bb53762f 100644 +index 17a158ff6ce6520b69a5a0032ba4c05449dd0cf8..d62f7375394409a278bc565c8263506c598ceeba 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -239,6 +239,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -236,6 +236,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now @@ -1188,7 +1062,7 @@ index dd56c8e041116ef3602a9f89c998c8208ab89b51..18bf9c42e76c8c35f57d74ea4adfa5b3 this.setPvpAllowed(dedicatedserverproperties.pvp); this.setFlightAllowed(dedicatedserverproperties.allowFlight); -@@ -359,6 +361,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -356,6 +358,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface DedicatedServer.LOGGER.info("JMX monitoring enabled"); } @@ -1196,67 +1070,13 @@ index dd56c8e041116ef3602a9f89c998c8208ab89b51..18bf9c42e76c8c35f57d74ea4adfa5b3 return true; } } -diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index af8cb316ac169aa8d98a88765b85bb013b9ba961..6abae547de1c9de07a75800550631ca5ee693e0a 100644 ---- a/src/main/java/net/minecraft/server/level/ChunkMap.java -+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -172,6 +172,10 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - return null; // Paper - rewrite chunk system - } - // Paper end -+ // Paper start - optimise chunk tick iteration -+// public final it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet needsChangeBroadcasting = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<>(); -+// public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap = new gg.pufferfish.pufferfish.util.AsyncPlayerAreaMap(this.pooledLinkedPlayerHashSets); // Pufferfish -+ // Paper end - optimise chunk tick iteration - - public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { - super(new RegionStorageInfo(session.getLevelId(), world.dimension(), "chunk"), session.getDimensionPath(world.dimension()).resolve("region"), dataFixer, dsync); -@@ -1282,8 +1286,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance); - } - -+ private static int getHighestRange(Entity parent, int highest) { -+ List passengers = parent.getPassengers(); -+ -+ for (int i = 0, size = passengers.size(); i < size; i++) { -+ Entity entity = passengers.get(i); -+ int range = entity.getType().clientTrackingRange() * 16; -+ range = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, range); // Paper -+ -+ if (range > highest) { // Paper - we need the lowest range thanks to the fact that our tracker doesn't account for passenger logic // Tuinity - not anymore! -+ highest = range; -+ } -+ -+ highest = getHighestRange(entity, highest); -+ } -+ -+ return highest; -+ } -+ - private int getEffectiveRange() { - int i = this.range; -+ // Pufferfish start - remove iterators and streams -+ /* - Iterator iterator = this.entity.getIndirectPassengers().iterator(); - - while (iterator.hasNext()) { -@@ -1295,6 +1319,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - i = j; - } - } -+ */ -+ i = getHighestRange(this.entity, i); -+ // Pufferfish end - - return this.scaledRange(i); - } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index dcb5651d1d9b10b40430fb2f713beedf68336704..dbc62bf37a9e6e1936558338521938a47a51e2d6 100644 +index d021cd5b6136f0125076513977f430c6d4dd4f9f..1cb8c9d21eef27492efc4995525c198cbffd4b9b 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -128,6 +128,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - // Paper end - rewrite chunk system - private ServerChunkCache.ChunkAndHolder[] iterationCopy; // Paper - chunk tick iteration optimisations +@@ -176,6 +176,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + // Paper end - chunk tick iteration optimisations + + public boolean firstRunSpawnCounts = true; // Pufferfish + public final java.util.concurrent.atomic.AtomicBoolean _pufferfish_spawnCountsReady = new java.util.concurrent.atomic.AtomicBoolean(false); // Pufferfish - optimize countmobs @@ -1264,49 +1084,8 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..dbc62bf37a9e6e1936558338521938a4 public ServerChunkCache(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor workerExecutor, ChunkGenerator chunkGenerator, int viewDistance, int simulationDistance, boolean dsync, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory) { this.level = world; this.mainThreadProcessor = new ServerChunkCache.MainThreadExecutor(world); -@@ -461,6 +464,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - int naturalSpawnChunkCount = k; - NaturalSpawner.SpawnState spawnercreature_d; // moved down - if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled -+ if (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) { // Pufferfish - moved down when async processing - // re-set mob counts - for (ServerPlayer player : this.level.players) { - // Paper start - per player mob spawning backoff -@@ -475,14 +479,18 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - } - // Paper end - per player mob spawning backoff - } -- spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, null, true); -+ lastSpawnState = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, null, true); // Pufferfish - async mob spawning -+ } // Pufferfish - (endif) moved down when async processing - } else { -- spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); -+ // Pufferfish start - async mob spawning -+ lastSpawnState = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); -+ _pufferfish_spawnCountsReady.set(true); -+ // Pufferfish end - } - // Paper end - Optional per player mob spawns - this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings - -- this.lastSpawnState = spawnercreature_d; -+ // this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously - gameprofilerfiller.popPush("spawnAndTick"); - boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit - -@@ -507,8 +515,8 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - - if (true && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair)) { // Paper - rewrite chunk system - chunk1.incrementInhabitedTime(j); -- if (flag && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot -- NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1); -+ if (flag && (this.spawnEnemies || this.spawnFriendlies) && (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning || _pufferfish_spawnCountsReady.get()) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot -+ NaturalSpawner.spawnForChunk(this.level, chunk1, lastSpawnState, this.spawnFriendlies, this.spawnEnemies, flag1); // Pufferfish - } - - if (true) { // Paper - rewrite chunk system -@@ -552,6 +560,40 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - gameprofilerfiller.pop(); +@@ -504,6 +507,43 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + this.broadcastChangedChunks(gameprofilerfiller); gameprofilerfiller.pop(); } + @@ -1334,10 +1113,13 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..dbc62bf37a9e6e1936558338521938a4 + int mapped = distanceManager.getNaturalSpawnChunkCount(); + ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet.Iterator objectiterator = + level.entityTickList.entities.iterator(ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet.ITERATOR_FLAG_SEE_ADDITIONS); -+ gg.pufferfish.pufferfish.util.IterableWrapper wrappedIterator = -+ new gg.pufferfish.pufferfish.util.IterableWrapper<>(objectiterator); -+ lastSpawnState = NaturalSpawner.createState(mapped, wrappedIterator, this::getFullChunk, null, true); -+ objectiterator.finishedIterating(); ++ try { ++ gg.pufferfish.pufferfish.util.IterableWrapper wrappedIterator = ++ new gg.pufferfish.pufferfish.util.IterableWrapper<>(objectiterator); ++ lastSpawnState = NaturalSpawner.createState(mapped, wrappedIterator, this::getFullChunk, null, true); ++ } finally { ++ objectiterator.finishedIterating(); ++ } + _pufferfish_spawnCountsReady.set(true); + }); + } @@ -1345,40 +1127,89 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..dbc62bf37a9e6e1936558338521938a4 + // Pufferfish end } - private void getFullChunk(long pos, Consumer chunkConsumer) { + private void broadcastChangedChunks(ProfilerFiller profiler) { +@@ -553,6 +593,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + final int naturalSpawnChunkCount = j; + NaturalSpawner.SpawnState spawnercreature_d; // moved down + if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled ++ if (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) { // Pufferfish - moved down when async processing + // re-set mob counts + for (ServerPlayer player : this.level.players) { + // Paper start - per player mob spawning backoff +@@ -567,13 +608,17 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + } + // Paper end - per player mob spawning backoff + } +- spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, null, true); ++ lastSpawnState = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, null, true); // Pufferfish - async mob spawning ++ } // Pufferfish - (endif) moved down when async processing + } else { +- spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); ++ // Pufferfish start - async mob spawning ++ lastSpawnState = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); ++ _pufferfish_spawnCountsReady.set(true); ++ // Pufferfish end + } + // Paper end - Optional per player mob spawns + +- this.lastSpawnState = spawnercreature_d; ++ // this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously + profiler.popPush("spawnAndTick"); + boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit + int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING); +@@ -590,7 +635,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + // Paper end - PlayerNaturallySpawnCreaturesEvent + boolean flag1 = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && this.level.getLevelData().getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit + +- list1 = NaturalSpawner.getFilteredSpawningCategories(spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1, this.level); // CraftBukkit ++ list1 = NaturalSpawner.getFilteredSpawningCategories(lastSpawnState, this.spawnFriendlies, this.spawnEnemies, flag1, this.level); // CraftBukkit // Pufferfish + } else { + list1 = List.of(); + } +@@ -602,8 +647,8 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + ChunkPos chunkcoordintpair = chunk.getPos(); + + chunk.incrementInhabitedTime(timeDelta); +- if (!list1.isEmpty() && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot +- NaturalSpawner.spawnForChunk(this.level, chunk, spawnercreature_d, list1); ++ if (!list1.isEmpty() && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && (!gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning || _pufferfish_spawnCountsReady.get()) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot // Pufferfish ++ NaturalSpawner.spawnForChunk(this.level, chunk, lastSpawnState, list1); // Pufferfish + } + + if (true) { // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 8ea2f24695f5dad55e21f238b69442513e7a90c6..5a2f7f7cf79dcbb996574e18cad86ebb54bd718e 100644 +index 90eb4927fa51ce3df86aa7b6c71f49150a03e337..3ea4920323606150548d6e9fc1ce67724f19dc60 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -193,6 +193,7 @@ public class ServerEntity { - boolean flag6 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L; +@@ -207,6 +207,7 @@ public class ServerEntity { + boolean flag5 = i < -32768L || i > 32767L || j < -32768L || j > 32767L || k < -32768L || k > 32767L; - if (!this.forceStateResync && !flag6 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.onGround()) { // Paper - fix desync when a player is added to the tracker -+ if (flag2 || flag3 || this.entity instanceof AbstractArrow) { // Pufferfish - if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) { - if (flag2) { - packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.onGround()); -@@ -206,6 +207,7 @@ public class ServerEntity { - flag4 = true; - flag5 = true; - } -+ } // Pufferfish - } else { - this.wasOnGround = this.entity.onGround(); - this.teleportDelay = 0; + if (!this.forceStateResync && !flag5 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.onGround()) { // Paper - fix desync when a player is added to the tracker ++ if (flag2 || flag3 || this.entity instanceof AbstractArrow) { // Pufferfish + if ((!flag2 || !flag) && !(this.entity instanceof AbstractArrow)) { + if (flag2) { + packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) i), (short) ((int) j), (short) ((int) k), this.entity.onGround()); +@@ -220,6 +221,7 @@ public class ServerEntity { + flag3 = true; + flag4 = true; + } ++ } // Pufferfish + } else { + this.wasOnGround = this.entity.onGround(); + this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f9abf63e12ea930275121b470e4e4906cff0fc12..2a8ffcdd262ea73844500846c6401cdda7153d61 100644 +index b4027f5cf90935a1fe3ab2c28b0bcbb55a7b541b..8091e78e56c0e4ea880e6f88ec9c15ca5e67b9b0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -715,6 +715,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -792,6 +792,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + org.spigotmc.ActivationRange.activateEntities(this); // Spigot - this.timings.entityTick.startTiming(); // Spigot this.entityTickList.forEach((entity) -> { + entity.activatedPriorityReset = false; // Pufferfish - DAB if (!entity.isRemoved()) { - if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed - entity.discard(); -@@ -734,7 +735,20 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + if (!tickratemanager.isEntityFrozen(entity)) { + gameprofilerfiller.push("checkDespawn"); +@@ -809,7 +810,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } gameprofilerfiller.push("tick"); @@ -1400,23 +1231,20 @@ index f9abf63e12ea930275121b470e4e4906cff0fc12..2a8ffcdd262ea73844500846c6401cdd gameprofilerfiller.pop(); } } -@@ -861,9 +875,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. - int j = chunkcoordintpair.getMinBlockX(); - int k = chunkcoordintpair.getMinBlockZ(); - ProfilerFiller gameprofilerfiller = this.getProfiler(); -- +@@ -930,7 +944,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + ProfilerFiller gameprofilerfiller = Profiler.get(); + gameprofilerfiller.push("thunder"); -- if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder -+ -+ if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - Option to disable thunder // Pufferfish - replace random with shouldDoLightning +- if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && simpleRandom.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder // Paper - optimise random ticking ++ if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*simpleRandom.nextInt(this.spigotConfig.thunderChance) == 0*/ chunk.shouldDoLightning(this.simpleRandom)) { // Spigot // Paper - Option to disable thunder // Paper - optimise random ticking // Pufferfish - replace random with shouldDoLightning BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); if (this.isRainingAt(blockposition)) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 064d52d4479727c6a32bf357be8da32d1760e7fc..8f2214008d76d00267152b5db0cf0fbdd3fbbfb7 100644 +index cd1b6b539a62fa5237d6dab2d1c09a2e631d9941..56a6367245b133f3ac86af99a738325885f2e94a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1157,6 +1157,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1172,6 +1172,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleEditBook(ServerboundEditBookPacket packet) { @@ -1425,175 +1253,46 @@ index 064d52d4479727c6a32bf357be8da32d1760e7fc..8f2214008d76d00267152b5db0cf0fbd final io.papermc.paper.configuration.type.number.IntOr.Disabled pageMax = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; if (!this.cserver.isPrimaryThread() && pageMax.enabled()) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4b54d0ea31062972e68ee8fafe3cfaf68f65a5cd..8492421ed2186c0eab517a67f3140b9988f65250 100644 +index a15546e433ebba6c0de01bdaaef201a3d99a87b5..0a0d004699eeaae12852b197b32a449a86de3028 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -429,6 +429,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - private UUID originWorld; +@@ -389,6 +389,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean fixedPose = false; // Paper - Expand Pose API + private final int despawnTime; // Paper - entity despawn time limit + public boolean activatedPriorityReset = false; // Pufferfish - DAB + public int activatedPriority = gg.pufferfish.pufferfish.PufferfishConfig.maximumActivationPrio; // Pufferfish - DAB (golf score) + public final BlockPos.MutableBlockPos cachedBlockPos = new BlockPos.MutableBlockPos(); // Pufferfish - reduce entity allocations public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -845,6 +848,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - - public void tick() { -+ // Pufferfish start - entity TTL -+ if (type != EntityType.PLAYER && type.ttl >= 0 && this.tickCount >= type.ttl) { -+ discard(); -+ return; -+ } -+ // Pufferfish end - entity TTL - this.baseTick(); - } - -@@ -4452,16 +4461,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - - public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { -- if (this.touchingUnloadedChunk()) { -+ if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip - return false; - } else { - AABB axisalignedbb = this.getBoundingBox().deflate(0.001D); -- int i = Mth.floor(axisalignedbb.minX); -- int j = Mth.ceil(axisalignedbb.maxX); -- int k = Mth.floor(axisalignedbb.minY); -- int l = Mth.ceil(axisalignedbb.maxY); -- int i1 = Mth.floor(axisalignedbb.minZ); -- int j1 = Mth.ceil(axisalignedbb.maxZ); -+ // Pufferfish start - rename -+ int minBlockX = Mth.floor(axisalignedbb.minX); -+ int maxBlockX = Mth.ceil(axisalignedbb.maxX); -+ int minBlockY = Mth.floor(axisalignedbb.minY); -+ int maxBlockY = Mth.ceil(axisalignedbb.maxY); -+ int minBlockZ = Mth.floor(axisalignedbb.minZ); -+ int maxBlockZ = Mth.ceil(axisalignedbb.maxZ); -+ // Pufferfish end - double d1 = 0.0D; - boolean flag = this.isPushedByFluid(); - boolean flag1 = false; -@@ -4469,14 +4480,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - int k1 = 0; - BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); - -- for (int l1 = i; l1 < j; ++l1) { -- for (int i2 = k; i2 < l; ++i2) { -- for (int j2 = i1; j2 < j1; ++j2) { -- blockposition_mutableblockposition.set(l1, i2, j2); -- FluidState fluid = this.level().getFluidState(blockposition_mutableblockposition); -+ // Pufferfish start - based off CollisionUtil.getCollisionsForBlocksOrWorldBorder -+ final int minSection = ca.spottedleaf.moonrise.common.util.WorldUtil.getMinSection(this.level()); -+ final int maxSection = ca.spottedleaf.moonrise.common.util.WorldUtil.getMaxSection(this.level()); -+ final int minBlock = minSection << 4; -+ final int maxBlock = (maxSection << 4) | 15; -+ -+ // special cases: -+ if (minBlockY > maxBlock || maxBlockY < minBlock) { -+ // no point in checking -+ return false; -+ } -+ -+ int minYIterate = Math.max(minBlock, minBlockY); -+ int maxYIterate = Math.min(maxBlock, maxBlockY); -+ -+ int minChunkX = minBlockX >> 4; -+ int maxChunkX = maxBlockX >> 4; -+ -+ int minChunkZ = minBlockZ >> 4; -+ int maxChunkZ = maxBlockZ >> 4; -+ -+ for (int currChunkZ = minChunkZ; currChunkZ <= maxChunkZ; ++currChunkZ) { -+ int minZ = currChunkZ == minChunkZ ? minBlockZ & 15 : 0; // coordinate in chunk -+ int maxZ = currChunkZ == maxChunkZ ? maxBlockZ & 15 : 16; // coordinate in chunk -+ -+ for (int currChunkX = minChunkX; currChunkX <= maxChunkX; ++currChunkX) { -+ int minX = currChunkX == minChunkX ? minBlockX & 15 : 0; // coordinate in chunk -+ int maxX = currChunkX == maxChunkX ? maxBlockX & 15 : 16; // coordinate in chunk -+ -+ net.minecraft.world.level.chunk.ChunkAccess chunk = this.level().getChunkIfLoadedImmediately(currChunkX, currChunkZ); -+ if (chunk == null) { -+ return false; // if we're touching an unloaded chunk then it's false -+ } -+ -+ net.minecraft.world.level.chunk.LevelChunkSection[] sections = chunk.getSections(); -+ -+ for (int currY = minYIterate; currY < maxYIterate; ++currY) { -+ net.minecraft.world.level.chunk.LevelChunkSection section = sections[(currY >> 4) - minSection]; -+ -+ if (section == null || section.hasOnlyAir() || section.fluidStateCount == 0) { // if no fluids, nothing in this section -+ // empty -+ // skip to next section -+ currY = (currY & ~(15)) + 15; // increment by 15: iterator loop increments by the extra one -+ continue; -+ } -+ -+ net.minecraft.world.level.chunk.PalettedContainer blocks = section.states; -+ -+ for (int currZ = minZ; currZ < maxZ; ++currZ) { -+ for (int currX = minX; currX < maxX; ++currX) { -+ FluidState fluid = blocks.get(currX & 15, currY & 15, currZ & 15).getFluidState(); - - if (fluid.is(tag)) { -- double d2 = (double) ((float) i2 + fluid.getHeight(this.level(), blockposition_mutableblockposition)); -+ blockposition_mutableblockposition.set((currChunkX << 4) + currX, currY, (currChunkZ << 4) + currZ); -+ double d2 = (double) ((float) currY + fluid.getHeight(this.level(), blockposition_mutableblockposition)); - - if (d2 >= axisalignedbb.minY) { - flag1 = true; -@@ -4498,9 +4556,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - // CraftBukkit end - } - } -+ } -+ } - } - } - } -+ // Pufferfish end - - if (vec3d.length() > 0.0D) { - if (k1 > 0) { diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index cb61462d4691a055a4b25f7b953609d8a154fdfe..f9440014ab2fe753c16b9383f5fffbb8adb76e79 100644 +index c8c2394558952d7ca57d29874485251b8f2b3400..7e7603680310976312050aaff5bdaa805901617f 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -316,6 +316,8 @@ public class EntityType implements FeatureElement, EntityTypeT - private final boolean canSpawnFarFromPlayer; +@@ -385,6 +385,7 @@ public class EntityType implements FeatureElement, EntityTypeT private final int clientTrackingRange; private final int updateInterval; + private final String descriptionId; + public boolean dabEnabled = false; // Pufferfish -+ public int ttl = -1; // Pufferfish - @Nullable - private String descriptionId; @Nullable + private Component description; + private final Optional> lootTable; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 2aa6374cd4a96efd85899be8cd3172a8257bfe6b..5132e108df37ca97ba94b8b72c0ef292cbb2ec94 100644 +index f36a075dbee2b96d01899e02460b1d8443e91749..e21e549e8102477aae599487acc6dd39616d6c26 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -157,7 +157,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; - import org.bukkit.event.player.PlayerItemConsumeEvent; - // CraftBukkit end +@@ -467,7 +467,7 @@ public abstract class LivingEntity extends Entity implements Attackable { --import co.aikar.timings.MinecraftTimings; // Paper - - public abstract class LivingEntity extends Entity implements Attackable { - -@@ -449,7 +448,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - boolean flag = this instanceof net.minecraft.world.entity.player.Player; - - if (!this.level().isClientSide) { + if (world1 instanceof ServerLevel) { + worldserver1 = (ServerLevel) world1; - if (this.isInWall()) { + if (shouldCheckForSuffocation() && this.isInWall()) { // Pufferfish - optimize suffocation - this.hurt(this.damageSources().inWall(), 1.0F); + this.hurtServer(worldserver1, this.damageSources().inWall(), 1.0F); } else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) { - double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone(); -@@ -1409,6 +1408,19 @@ public abstract class LivingEntity extends Entity implements Attackable { - return this.getHealth() <= 0.0F; + double d1 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone(); +@@ -564,6 +564,19 @@ public abstract class LivingEntity extends Entity implements Attackable { + gameprofilerfiller.pop(); } + // Pufferfish start - optimize suffocation @@ -1610,9 +1309,9 @@ index 2aa6374cd4a96efd85899be8cd3172a8257bfe6b..5132e108df37ca97ba94b8b72c0ef292 + // Pufferfish end + @Override - public boolean hurt(DamageSource source, float amount) { - if (this.isInvulnerableTo(source)) { -@@ -2065,6 +2077,20 @@ public abstract class LivingEntity extends Entity implements Attackable { + protected float getBlockSpeedFactor() { + return Mth.lerp((float) this.getAttributeValue(Attributes.MOVEMENT_EFFICIENCY), super.getBlockSpeedFactor(), 1.0F); +@@ -2120,6 +2133,20 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -1634,10 +1333,10 @@ index 2aa6374cd4a96efd85899be8cd3172a8257bfe6b..5132e108df37ca97ba94b8b72c0ef292 if (this.isSpectator()) { return false; diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 763abeea3f14f15c27d600e0bdae44b387687bb4..1f3a55d34f58964fb1f642ad59c9d7b7aa6fa4ff 100644 +index dbd321f3dc3cc80737830db63aed47a6935e8e89..237eed7259f0cedf5b96ea54c195c3359d286064 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -232,14 +232,16 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -235,14 +235,16 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab return this.lookControl; } @@ -1656,7 +1355,7 @@ index 763abeea3f14f15c27d600e0bdae44b387687bb4..1f3a55d34f58964fb1f642ad59c9d7b7 this.targetSelector.tick(); } } -@@ -929,16 +931,20 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -927,16 +929,20 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab if (i % 2 != 0 && this.tickCount > 1) { gameprofilerfiller.push("targetSelector"); @@ -1678,7 +1377,7 @@ index 763abeea3f14f15c27d600e0bdae44b387687bb4..1f3a55d34f58964fb1f642ad59c9d7b7 gameprofilerfiller.pop(); } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index 69992ebc999ea3ff9e47e4e049bcc514c01150ca..2c9aab24b51d2f0a50100089fe72093b501d383a 100644 +index 94d04a20f97405e02d7cccaabadc7a7e86e336f7..31aa4221de653f0695b21d438964bae20cffad07 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java @@ -23,9 +23,11 @@ public class AttributeMap { @@ -1723,13 +1422,13 @@ index 758f62416ca9c02351348ac0d41deeb4624abc0e..69130969c9a434ec2361e573c9a1ec9f } } 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 9bdbf3e9453bc3ce96d52d04b8cde0d05f7356d8..e32c3120f9c5ddf429d8428c370ff61320a38de6 100644 +index 29ae74339a4831ccef3d01e8054931715ba192ad..5a439e3b0fdc1010884634c1e046e49d8b9aee17 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 -@@ -43,9 +43,12 @@ public class GoalSelector { +@@ -38,9 +38,12 @@ public class GoalSelector { } - // Paper start + // Paper start - EAR 2 - public boolean inactiveTick() { + public boolean inactiveTick(int tickRate, boolean inactive) { // Pufferfish start + if (inactive && !gg.pufferfish.pufferfish.PufferfishConfig.dearEnabled) tickRate = 4; // reset to Paper's @@ -1753,36 +1452,11 @@ index aee0147649d458b87d92496eda0c1723ebe570d2..89e9ea999d2fbd81a1d74382ef3fcd67 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 aecb0ad814586bfc5e56755ee14379a69388b38c..00ef7f6d60bcaee2506cf111461f2c2f8eedd59a 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 -@@ -76,9 +76,18 @@ public class TargetingConditions { - } - - 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()); -+ double followRangeRaw = this.useFollowRange ? this.getFollowRange(baseEntity) : this.range; -+ -+ if (f > followRangeRaw * followRangeRaw) { // the actual follow range will always be this value or smaller, so if the distance is larger then it never will return true after getting invis -+ return false; -+ } -+ -+ double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0; -+ double e = Math.max((followRangeRaw) * d, 2.0); // Paper - Fix MC-145656 -+ // Pufferfish end - if (f > e * e) { - return false; - } 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 dc27ddf5131e7398a5390a5187261d4c7fb6ccaa..e44af851263f27aa0009b14a60bb2d0642a5ce74 100644 +index 60c2868f255d372226e0c1389caaa5477bbef41e..3de177a40649183b5b210e5f0c610a527287e9ec 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -239,13 +239,22 @@ public class Bat extends AmbientCreature { +@@ -242,13 +242,22 @@ public class Bat extends AmbientCreature { } } @@ -1807,90 +1481,99 @@ index dc27ddf5131e7398a5390a5187261d4c7fb6ccaa..e44af851263f27aa0009b14a60bb2d06 private void setupAnimationStates() { if (this.isResting()) { diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 69986f75d3cf729204cca0c7e5428536af31f695..98a759dbe46e2ead39af0f340c9b73c8f4ddce1e 100644 +index 05c3d43fafc781e2c2d762dd5f509753df8da3b3..94692082aa85d7e4e52a4e16bb5e49b0bf6eb93f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -217,9 +217,11 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -219,11 +219,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS return 0.4F; } + private int behaviorTick = 0; // Pufferfish @Override - protected void customServerAiStep() { - this.level().getProfiler().push("allayBrain"); + protected void customServerAiStep(ServerLevel world) { + ProfilerFiller gameprofilerfiller = Profiler.get(); + + gameprofilerfiller.push("allayBrain"); + if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("allayActivityUpdate"); + this.getBrain().tick(world, this); + gameprofilerfiller.pop(); + gameprofilerfiller.push("allayActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 01a0731e92d39c8718538244e34a271fb8717fc2..44937570f8e968ba4fe2822f69ca8f09679da89d 100644 +index 31b10cd404b672d7ce21c2107d8f83e32de26ef4..cb47876a13cb1990bb0ab4cff1bbe57b3b2d0a5e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -269,9 +269,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder, B return true; } + private int behaviorTick = 0; // Pufferfish @Override - protected void customServerAiStep() { - this.level().getProfiler().push("axolotlBrain"); + protected void customServerAiStep(ServerLevel world) { + ProfilerFiller gameprofilerfiller = Profiler.get(); + + gameprofilerfiller.push("axolotlBrain"); + if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("axolotlActivityUpdate"); + this.getBrain().tick(world, this); + gameprofilerfiller.pop(); + gameprofilerfiller.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 816977990639ec0559b652fc9666afd5046f0a5d..714703519965e8dae42be7442f292b581cc7c049 100644 +index 36846ba6b6c7494c745ebd8b221479a9d02ff318..3461c7150fc44ee608169aa993f6ff44d4c978be 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 -@@ -181,9 +181,11 @@ public class Frog extends Animal implements VariantHolder> { +@@ -184,10 +184,12 @@ public class Frog extends Animal implements VariantHolder> { .ifPresent(this::setVariant); } + private int behaviorTick = 0; // Pufferfish @Override - protected void customServerAiStep() { - this.level().getProfiler().push("frogBrain"); + protected void customServerAiStep(ServerLevel world) { + ProfilerFiller profilerFiller = Profiler.get(); + profilerFiller.push("frogBrain"); + if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("frogActivityUpdate"); + this.getBrain().tick(world, this); + profilerFiller.pop(); + profilerFiller.push("frogActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 43046f4a0cff620834ac4647efdcde227185b2ff..90393485ebcf8a4c8c74802fff942b1af8cfbf00 100644 +index 48ac8c3f6e00c3c2dc67b6c994be7c0ac6dfcf81..cf326ef35bac732e7addf75537963593d5b268ae 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -83,9 +83,11 @@ public class Tadpole extends AbstractFish { +@@ -83,11 +83,13 @@ public class Tadpole extends AbstractFish { return SoundEvents.TADPOLE_FLOP; } + private int behaviorTick = 0; // Pufferfish @Override - protected void customServerAiStep() { - this.level().getProfiler().push("tadpoleBrain"); + protected void customServerAiStep(ServerLevel world) { + ProfilerFiller gameprofilerfiller = Profiler.get(); + + gameprofilerfiller.push("tadpoleBrain"); + if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("tadpoleActivityUpdate"); + this.getBrain().tick(world, this); + gameprofilerfiller.pop(); + gameprofilerfiller.push("tadpoleActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 376bcbc189008464f4d518c1e07643431ba96306..07bdea8a7d6706839a758afe0242202c7e841416 100644 +index 76aca47d8638d5c37c57d3a59fa7f8ceaa5a53b4..fb92cd4b0c15b614c0c06d2867039aee1a6212a2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -190,9 +190,11 @@ public class Goat extends Animal { +@@ -192,11 +192,13 @@ public class Goat extends Animal { return (Brain) super.getBrain(); // CraftBukkit - decompile error } + private int behaviorTick = 0; // Pufferfish @Override - protected void customServerAiStep() { - this.level().getProfiler().push("goatBrain"); + protected void customServerAiStep(ServerLevel world) { + ProfilerFiller gameprofilerfiller = Profiler.get(); + + gameprofilerfiller.push("goatBrain"); + if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); - this.level().getProfiler().push("goatActivityUpdate"); + this.getBrain().tick(world, this); + gameprofilerfiller.pop(); + gameprofilerfiller.push("goatActivityUpdate"); 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 d3b4d492aee380dc17f4232d90eaae4f07bb9f86..82921c56c49edb0ca07425da563aa4876d4e6fb1 100644 +index 244e38db508efa3eebebb6392c4ebb0805367baf..d62c0d3c2bd5df5ee908bdcfdffaae9ce780810f 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -154,6 +154,13 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -152,6 +152,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { this.bossEvent.setName(this.getDisplayName()); } @@ -1905,21 +1588,21 @@ index d3b4d492aee380dc17f4232d90eaae4f07bb9f86..82921c56c49edb0ca07425da563aa487 protected SoundEvent getAmbientSound() { return SoundEvents.WITHER_AMBIENT; 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 828c51477cd8f35d591367b30bf4feef6a250292..ace4959f818bf56882b290d109b8b97f2c145631 100644 +index 48dcd2bc12ce1d08cc5195bff5460dc0dd9902d3..c7153cfec847fca4ce5d9ec729628aed5bed11be 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -320,11 +320,17 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -307,11 +307,17 @@ public class EnderMan extends Monster implements NeutralMob { private boolean teleport(double x, double y, double z) { BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(x, y, z); -- while (blockposition_mutableblockposition.getY() > this.level().getMinBuildHeight() && !this.level().getBlockState(blockposition_mutableblockposition).blocksMotion()) { +- while (blockposition_mutableblockposition.getY() > this.level().getMinY() && !this.level().getBlockState(blockposition_mutableblockposition).blocksMotion()) { + // Pufferfish start - single chunk lookup + net.minecraft.world.level.chunk.LevelChunk chunk = this.level().getChunkIfLoaded(blockposition_mutableblockposition); + if (chunk == null) { + return false; + } + // Pufferfish end -+ while (blockposition_mutableblockposition.getY() > this.level().getMinBuildHeight() && !chunk.getBlockState(blockposition_mutableblockposition).blocksMotion()) { // Pufferfish ++ while (blockposition_mutableblockposition.getY() > this.level().getMinY() && !chunk.getBlockState(blockposition_mutableblockposition).blocksMotion()) { // Pufferfish blockposition_mutableblockposition.move(Direction.DOWN); } @@ -1929,60 +1612,63 @@ index 828c51477cd8f35d591367b30bf4feef6a250292..ace4959f818bf56882b290d109b8b97f 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 d5e0c493f4c348724958193795ceb987765a465f..7de73564bc73d6504e18977e97a2ef5f46189e15 100644 +index 6ea90e54759dbeab025e0a1896ee834ea9986427..3f625cb9b1237ca8f782bca2f182dfe72853bd96 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 -@@ -153,9 +153,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -156,10 +156,12 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return (Brain)super.getBrain(); } + private int behaviorTick; // Pufferfish @Override - protected void customServerAiStep() { - this.level().getProfiler().push("hoglinBrain"); + protected void customServerAiStep(ServerLevel world) { + ProfilerFiller profilerFiller = Profiler.get(); + profilerFiller.push("hoglinBrain"); + if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel)this.level(), this); - this.level().getProfiler().pop(); + this.getBrain().tick(world, this); + profilerFiller.pop(); HoglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index bc58323801ee16fe9b63c21332144ec002a902f2..b2ae7088f90bf3cd04a59c6ddfdba60c58c6e1c8 100644 +index e04d2c5e75dc774fe893a552474fdb8045c32693..d1870bf4c01c846a721480eb6611a67db9b98d02 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -293,9 +293,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -304,11 +304,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento return !this.cannotHunt; } + private int behaviorTick; // Pufferfish @Override - protected void customServerAiStep() { - this.level().getProfiler().push("piglinBrain"); + protected void customServerAiStep(ServerLevel world) { + ProfilerFiller gameprofilerfiller = Profiler.get(); + + gameprofilerfiller.push("piglinBrain"); + if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level(), this); - this.level().getProfiler().pop(); + this.getBrain().tick(world, this); + gameprofilerfiller.pop(); PiglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 38bf417a9ad4647f4af24d969f3bf4fed9c4bad7..40bbd80b1ed4afede6f0769e7f3fcfc61200452f 100644 +index 6180019da58b19d2595da508aed3196af922d587..457f9f6bf6a8e8f2e0b4246a0589e344756370d2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -272,11 +272,13 @@ public class Warden extends Monster implements VibrationSystem { +@@ -275,11 +275,13 @@ public class Warden extends Monster implements VibrationSystem { } + private int behaviorTick = 0; // Pufferfish @Override - protected void customServerAiStep() { - ServerLevel worldserver = (ServerLevel) this.level(); + protected void customServerAiStep(ServerLevel world) { + ProfilerFiller gameprofilerfiller = Profiler.get(); - worldserver.getProfiler().push("wardenBrain"); + gameprofilerfiller.push("wardenBrain"); + if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick(worldserver, this); - this.level().getProfiler().pop(); - super.customServerAiStep(); + this.getBrain().tick(world, this); + gameprofilerfiller.pop(); + super.customServerAiStep(world); 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 7e1871401ec5e3e9a85232053490259f132aec0a..a16d9c1661690de0374a4a3c31b119293d8fa52b 100644 +index b7a34f1c4d7b5ef3f7a843d152e33c839dcdedd5..d9a60871bce4da7e6dc7c3c986498602c355ac04 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -143,6 +143,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -142,6 +142,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return holder.is(PoiTypes.MEETING); }); @@ -1991,32 +1677,32 @@ index 7e1871401ec5e3e9a85232053490259f132aec0a..a16d9c1661690de0374a4a3c31b11929 public Villager(EntityType entityType, Level world) { this(entityType, world, VillagerType.PLAINS); } -@@ -246,6 +248,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -245,6 +247,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Spigot End + private int behaviorTick = 0; // Pufferfish @Override - @Deprecated // Paper - protected void customServerAiStep() { + protected void customServerAiStep(ServerLevel world) { + // Paper start - EAR 2 @@ -255,7 +258,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - protected void customServerAiStep(final boolean inactive) { - // Paper end - this.level().getProfiler().push("villagerBrain"); -- if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper + ProfilerFiller gameprofilerfiller = Profiler.get(); + + gameprofilerfiller.push("villagerBrain"); +- if (!inactive) this.getBrain().tick(world, this); + // Pufferfish start + if (!inactive && this.behaviorTick++ % this.activatedPriority == 0) { + this.getBrain().tick((ServerLevel) this.level(), this); // Paper + } + // Pufferfish end - this.level().getProfiler().pop(); + gameprofilerfiller.pop(); if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; diff --git a/src/main/java/net/minecraft/world/entity/player/Inventory.java b/src/main/java/net/minecraft/world/entity/player/Inventory.java -index 6e66141dca61f777b354854b5d0bac2570b8bf3b..abf231e6099cda766d73e67f31234e9f4cbc9545 100644 +index 0990bcf65f484b9a019c91fcdae1783bac6388da..99feda30fb85a7615560b6e9a3701d5dfeb3e524 100644 --- a/src/main/java/net/minecraft/world/entity/player/Inventory.java +++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java -@@ -643,6 +643,8 @@ public class Inventory implements Container, Nameable { +@@ -649,6 +649,8 @@ public class Inventory implements Container, Nameable { } public boolean contains(ItemStack stack) { @@ -2025,7 +1711,7 @@ index 6e66141dca61f777b354854b5d0bac2570b8bf3b..abf231e6099cda766d73e67f31234e9f Iterator iterator = this.compartments.iterator(); while (iterator.hasNext()) { -@@ -657,6 +659,18 @@ public class Inventory implements Container, Nameable { +@@ -663,6 +665,18 @@ public class Inventory implements Container, Nameable { } } } @@ -2045,10 +1731,10 @@ index 6e66141dca61f777b354854b5d0bac2570b8bf3b..abf231e6099cda766d73e67f31234e9f return false; } diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 10ade433c083851d9ea4797c6ec618db122229f9..091ca20cc7e495dbff90f2fcaae51fb1b2bb33d5 100644 +index 6c2d4d6f3a36ab452dfd3c33f66e54f152906639..5a791fad8c27e4997d53f2e5d9a5aa28189fdf28 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -52,6 +52,36 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -58,6 +58,36 @@ public abstract class Projectile extends Entity implements TraceableEntity { super(type, world); } @@ -2086,7 +1772,7 @@ index 10ade433c083851d9ea4797c6ec618db122229f9..091ca20cc7e495dbff90f2fcaae51fb1 if (entity != null) { this.ownerUUID = entity.getUUID(); diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index 5f51e64cb0611a4ba6bdcdcacbcba1063a7f3a5c..cc1e5882bee94864ad189d7f01ce78223411e51d 100644 +index b62db8c7c8c57e43869ee239ebf4b02f112355d9..2bee342e59e600426c8681a3ce641a12f22790be 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -57,7 +57,7 @@ public class EndCrystalItem extends Item { @@ -2099,32 +1785,24 @@ index 5f51e64cb0611a4ba6bdcdcacbcba1063a7f3a5c..cc1e5882bee94864ad189d7f01ce7822 } } diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java -index 213ee4aa988dd4c2a5a7be99b1d13f67338e5209..8e46753af60aa9fd8e4b4c0f955f7a55a77de314 100644 +index 12f95bee2a69fd5df7c4a165537e01299e60c5f6..d7ce86752e4138cdd3844b3374609753aa20f9ea 100644 --- a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java +++ b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java -@@ -10,6 +10,7 @@ import net.minecraft.core.HolderLookup; - import net.minecraft.core.NonNullList; - import net.minecraft.network.RegistryFriendlyByteBuf; - import net.minecraft.network.codec.StreamCodec; -+import net.minecraft.world.inventory.CraftingContainer; - import net.minecraft.world.item.ItemStack; - import net.minecraft.world.level.Level; - // CraftBukkit start -@@ -25,8 +26,13 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo - final CraftingBookCategory category; - final ItemStack result; - final NonNullList ingredients; +@@ -31,8 +31,13 @@ public class ShapelessRecipe implements CraftingRecipe { + final List ingredients; + @Nullable + private PlacementInfo placementInfo; + private final boolean isBukkit; // Pufferfish + // Pufferfish start - public ShapelessRecipe(String group, CraftingBookCategory category, ItemStack result, NonNullList ingredients) { + public ShapelessRecipe(String group, CraftingBookCategory category, ItemStack result, List ingredients) { + this(group, category, result, ingredients, false); + } -+ public ShapelessRecipe(String group, CraftingBookCategory category, ItemStack result, NonNullList ingredients, boolean isBukkit) { this.isBukkit = isBukkit; // Pufferfish end ++ public ShapelessRecipe(String group, CraftingBookCategory category, ItemStack result, List ingredients, boolean isBukkit) { this.isBukkit = isBukkit; // Pufferfish end this.group = group; this.category = category; this.result = result; -@@ -76,6 +82,28 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo +@@ -80,6 +85,28 @@ public class ShapelessRecipe implements CraftingRecipe { } public boolean matches(CraftingInput input, Level world) { @@ -2150,14 +1828,14 @@ index 213ee4aa988dd4c2a5a7be99b1d13f67338e5209..8e46753af60aa9fd8e4b4c0f955f7a55 + } + // Pufferfish end + - // Paper start - unwrap ternary & better exact choice recipes + // Paper start - Improve exact choice recipe ingredients & unwrap ternary if (input.ingredientCount() != this.ingredients.size()) { return false; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 507671476c3d2d92a2fdb05be24443af27d26dcf..2479b47186202de40cdb4ae773c696a4adee9bad 100644 +index 0de2b79481352b52438dde284262019b29949ad8..eb9fdff179f59d49b17ee3af18cef7508d45987f 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1418,16 +1418,16 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1487,16 +1487,16 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl public void guardEntityTick(Consumer tickConsumer, T entity) { try { tickConsumer.accept(entity); @@ -2177,21 +1855,13 @@ index 507671476c3d2d92a2fdb05be24443af27d26dcf..2479b47186202de40cdb4ae773c696a4 } // Paper start - Option to prevent armor stands from doing entity lookups @Override -@@ -1961,6 +1961,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - } - - public ProfilerFiller getProfiler() { -+ if (gg.pufferfish.pufferfish.PufferfishConfig.disableMethodProfiler) return net.minecraft.util.profiling.InactiveProfiler.INSTANCE; // Pufferfish - return (ProfilerFiller) this.profiler.get(); - } - diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 7c11853c5090fbc4fa5b3e73a69acf166158fdec..00987d0e1ee8a9541b0610616ace1c84d50e5f1a 100644 +index 4640baec5bed6c2d53cc0f8ca1d273cc115abe9b..29e5234c008b8ac1df240a242ff7966057075171 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -86,6 +86,18 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p - private final LevelChunkTicks blockTicks; +@@ -88,6 +88,18 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p private final LevelChunkTicks fluidTicks; + private LevelChunk.UnsavedListener unsavedListener; + // Pufferfish start - instead of using a random every time the chunk is ticked, define when lightning strikes preemptively + private int lightningTick; @@ -2208,7 +1878,7 @@ index 7c11853c5090fbc4fa5b3e73a69acf166158fdec..00987d0e1ee8a9541b0610616ace1c84 public LevelChunk(Level world, ChunkPos pos) { this(world, pos, UpgradeData.EMPTY, new LevelChunkTicks<>(), new LevelChunkTicks<>(), 0L, (LevelChunkSection[]) null, (LevelChunk.PostLoadProcessor) null, (BlendingData) null); } -@@ -117,6 +129,8 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -121,6 +133,8 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p this.debug = !empty && this.level.isDebug(); this.defaultBlockState = empty ? VOID_AIR_BLOCKSTATE : AIR_BLOCKSTATE; // Paper end - get block chunk optimisation @@ -2217,42 +1887,6 @@ index 7c11853c5090fbc4fa5b3e73a69acf166158fdec..00987d0e1ee8a9541b0610616ace1c84 } // CraftBukkit start -diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -index c3b1caa352b988ec44fa2b2eb0536517711f5460..a28366b8ed0da356dad6941e0a817d0b7ec43738 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -@@ -22,6 +22,7 @@ public class LevelChunkSection implements ca.spottedleaf.moonrise.patches.block_ - short nonEmptyBlockCount; // Paper - package private - private short tickingBlockCount; - private short tickingFluidCount; -+ public short fluidStateCount; // Pufferfish - public final PalettedContainer states; - // CraftBukkit start - read/write - private PalettedContainer> biomes; -@@ -104,6 +105,7 @@ public class LevelChunkSection implements ca.spottedleaf.moonrise.patches.block_ - - if (!fluid.isEmpty()) { - --this.tickingFluidCount; -+ --this.fluidStateCount; // Pufferfish - } - - if (!state.isAir()) { -@@ -115,6 +117,7 @@ public class LevelChunkSection implements ca.spottedleaf.moonrise.patches.block_ - - if (!fluid1.isEmpty()) { - ++this.tickingFluidCount; -+ ++this.fluidStateCount; // Pufferfish - } - - // Paper start - block counting -@@ -208,6 +211,7 @@ public class LevelChunkSection implements ca.spottedleaf.moonrise.patches.block_ - if (fluid.isRandomlyTicking()) { - this.tickingFluidCount += paletteCount; - } -+ this.fluidStateCount++; // Pufferfish - } - } - } 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 d8b4196adf955f8d414688dc451caac2d9c609d9..80a43def4912a3228cd95117d5c2aac68798b4ec 100644 --- a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java @@ -2266,223 +1900,24 @@ index d8b4196adf955f8d414688dc451caac2d9c609d9..80a43def4912a3228cd95117d5c2aac6 private void ensureActiveIsNotIterated() { // Paper - rewrite chunk system -diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -index 1c0712295695727ee9c4d430d4157b8e17cbd71f..6785baf574f233ed1c3bea8d406be8a524d9ff82 100644 ---- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -+++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -@@ -45,6 +45,8 @@ public abstract class FlowingFluid extends Fluid { - public static final BooleanProperty FALLING = BlockStateProperties.FALLING; - public static final IntegerProperty LEVEL = BlockStateProperties.LEVEL_FLOWING; - private static final int CACHE_SIZE = 200; -+ // Pufferfish start - use our own cache -+ /* - private static final ThreadLocal> OCCLUSION_CACHE = ThreadLocal.withInitial(() -> { - Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap = new Object2ByteLinkedOpenHashMap(200) { - protected void rehash(int i) {} -@@ -53,6 +55,14 @@ public abstract class FlowingFluid extends Fluid { - object2bytelinkedopenhashmap.defaultReturnValue((byte) 127); - return object2bytelinkedopenhashmap; - }); -+ */ -+ -+ private static final ThreadLocal> localFluidDirectionCache = ThreadLocal.withInitial(() -> { -+ // Pufferfish todo - mess with this number for performance -+ // with 2048 it seems very infrequent on a small world that it has to remove old entries -+ return new gg.airplane.structs.FluidDirectionCache<>(2048); -+ }); -+ // Pufferfish end - private final Map shapes = Maps.newIdentityHashMap(); - - public FlowingFluid() {} -@@ -240,6 +250,8 @@ public abstract class FlowingFluid extends Fluid { - } - - private boolean canPassThroughWall(Direction face, BlockGetter world, BlockPos pos, BlockState state, BlockPos fromPos, BlockState fromState) { -+ // Pufferfish start - modify to use our cache -+ /* - Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap; - - if (!state.getBlock().hasDynamicShape() && !fromState.getBlock().hasDynamicShape()) { -@@ -247,9 +259,16 @@ public abstract class FlowingFluid extends Fluid { - } else { - object2bytelinkedopenhashmap = null; - } -+ */ -+ gg.airplane.structs.FluidDirectionCache cache = null; -+ -+ if (!state.getBlock().hasDynamicShape() && !fromState.getBlock().hasDynamicShape()) { -+ cache = localFluidDirectionCache.get(); -+ } - - Block.BlockStatePairKey block_a; - -+ /* - if (object2bytelinkedopenhashmap != null) { - block_a = new Block.BlockStatePairKey(state, fromState, face); - byte b0 = object2bytelinkedopenhashmap.getAndMoveToFirst(block_a); -@@ -260,11 +279,22 @@ public abstract class FlowingFluid extends Fluid { - } else { - block_a = null; - } -+ */ -+ if (cache != null) { -+ block_a = new Block.BlockStatePairKey(state, fromState, face); -+ Boolean flag = cache.getValue(block_a); -+ if (flag != null) { -+ return flag; -+ } -+ } else { -+ block_a = null; -+ } - - VoxelShape voxelshape = state.getCollisionShape(world, pos); - VoxelShape voxelshape1 = fromState.getCollisionShape(world, fromPos); - boolean flag = !Shapes.mergedFaceOccludes(voxelshape, voxelshape1, face); - -+ /* - if (object2bytelinkedopenhashmap != null) { - if (object2bytelinkedopenhashmap.size() == 200) { - object2bytelinkedopenhashmap.removeLastByte(); -@@ -272,6 +302,11 @@ public abstract class FlowingFluid extends Fluid { - - object2bytelinkedopenhashmap.putAndMoveToFirst(block_a, (byte) (flag ? 1 : 0)); - } -+ */ -+ if (cache != null) { -+ cache.putValue(block_a, flag); -+ } -+ // Pufferfish end - - 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 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 { - - public LootParams(ServerLevel world, Map, Object> parameters, Map dynamicDrops, float luck) { - this.level = world; -- this.params = parameters; -- this.dynamicDrops = dynamicDrops; -+ // Pufferfish start - use unmodifiable maps instead of immutable ones to skip the copy -+ this.params = java.util.Collections.unmodifiableMap(parameters); -+ this.dynamicDrops = java.util.Collections.unmodifiableMap(dynamicDrops); -+ // Pufferfish end - this.luck = luck; - } - -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 88a4a72bb390947dc17e5da09a99b2d1b3ac4621..284c76ddb9724b44bb2e93f590685c728e843e6d 100644 ---- a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -+++ b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -@@ -17,50 +17,69 @@ public class EntityCollisionContext implements CollisionContext { - return defaultValue; - } - }; -- private final boolean descending; -- private final double entityBottom; -- private final ItemStack heldItem; -- private final Predicate canStandOnFluid; -+ // Pufferfish start - remove these and pray no plugin uses them -+ // private final boolean descending; -+ // private final double entityBottom; -+ // private final ItemStack heldItem; -+ // private final Predicate canStandOnFluid; -+ // Pufferfish end - @Nullable - private final Entity entity; - - protected EntityCollisionContext(boolean descending, double minY, ItemStack heldItem, Predicate walkOnFluidPredicate, @Nullable Entity entity) { -- this.descending = descending; -- this.entityBottom = minY; -- this.heldItem = heldItem; -- this.canStandOnFluid = walkOnFluidPredicate; -+ // Pufferfish start - remove these -+ // this.descending = descending; -+ // this.entityBottom = minY; -+ // this.heldItem = heldItem; -+ // this.canStandOnFluid = walkOnFluidPredicate; -+ // Pufferfish end - this.entity = entity; - } - - @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 -> 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 -> false, -+ // entity -+ // ); -+ // Pufferfish end -+ this.entity = entity; - } - - @Override - public boolean isHoldingItem(Item item) { -- return this.heldItem.is(item); -+ // Pufferfish start -+ Entity entity = this.entity; -+ if (entity instanceof LivingEntity livingEntity) { -+ return livingEntity.getMainHandItem().is(item); -+ } -+ return ItemStack.EMPTY.is(item); -+ // Pufferfish end - } - - @Override - public boolean canStandOnFluid(FluidState stateAbove, FluidState state) { -- return this.canStandOnFluid.test(state) && !stateAbove.getType().isSame(state.getType()); -+ // Pufferfish start -+ Entity entity = this.entity; -+ if (entity instanceof LivingEntity livingEntity) { -+ return livingEntity.canStandOnFluid(state) && !stateAbove.getType().isSame(state.getType()); -+ } -+ return false; -+ // Pufferfish end - } - - @Override - public boolean isDescending() { -- return this.descending; -+ return this.entity != null && this.entity.isDescending(); // Pufferfish - } - - @Override - public boolean isAbove(VoxelShape shape, BlockPos pos, boolean defaultValue) { -- return this.entityBottom > (double)pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; -+ return (this.entity == null ? -Double.MAX_VALUE : entity.getY()) > (double)pos.getY() + shape.max(Direction.Axis.Y) - 1.0E-5F; // Pufferfish - } - - @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java -index 96d772eb02f79f8c478f5e6f065e387aa7665b18..c5ce412f321b8b4f31cc042893659e213b081f29 100644 +index 7c989318dc7ad89bb0d9143fcaac1e4bba6f5907..143a4d4efcc989ed4a4c73cc304e1978ad8f0699 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java -@@ -45,6 +45,6 @@ public class CraftShapelessRecipe extends ShapelessRecipe implements CraftRecipe - data.set(i, this.toNMS(ingred.get(i), true)); +@@ -44,6 +44,6 @@ public class CraftShapelessRecipe extends ShapelessRecipe implements CraftRecipe + data.add(this.toNMS(i, true)); } -- MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.ShapelessRecipe(this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data))); -+ MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.ShapelessRecipe(this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data, true))); // Pufferfish +- MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftRecipe.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.ShapelessRecipe(this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data))); ++ MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftRecipe.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.ShapelessRecipe(this.getGroup(), CraftRecipe.getCategory(this.getCategory()), CraftItemStack.asNMSCopy(this.getResult()), data, true))); // Pufferfish } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index d06aab9bd5cd901c8367f9680f5d27ddb17b3dc4..8fa2b2a67891d34ec95f7eed2a4118ddd8a5be15 100644 +index 507f908916cbeb592496f963b46e4c2121a7b5e3..da306aab94697a86ac052f4536c9eff1ff23a92f 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -489,7 +489,7 @@ public final class CraftMagicNumbers implements UnsafeValues { - +@@ -505,7 +505,7 @@ public final class CraftMagicNumbers implements UnsafeValues { + // Paper start @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { - return new com.destroystokyo.paper.PaperVersionFetcher(); @@ -2504,11 +1939,11 @@ index 774556a62eb240da42e84db4502e2ed43495be17..80553face9c70c2a3d897681e7761df8 if (stream != null) { diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index bf2d18f74b0f0da7c3c30310c74224a1c0853564..1461daa08c5b671b8556f29f90400b7e98285a44 100644 +index 1d438ef44cbe4d1eedfba36d8fe5d2ad53464921..bc525c7843b9cc0f7705c0dc6795c05f4e5b4bb1 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -38,6 +38,10 @@ import co.aikar.timings.MinecraftTimings; - import net.minecraft.world.entity.schedule.Activity; +@@ -37,6 +37,10 @@ import net.minecraft.world.entity.projectile.ThrownTrident; + import net.minecraft.world.entity.raid.Raider; import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; +// Pufferfish start @@ -2518,7 +1953,7 @@ index bf2d18f74b0f0da7c3c30310c74224a1c0853564..1461daa08c5b671b8556f29f90400b7e public class ActivationRange { -@@ -223,6 +227,25 @@ public class ActivationRange +@@ -221,6 +225,25 @@ public class ActivationRange } // Paper end - Configurable marker ticking ActivationRange.activateEntity(entity); @@ -2544,7 +1979,7 @@ index bf2d18f74b0f0da7c3c30310c74224a1c0853564..1461daa08c5b671b8556f29f90400b7e } // Paper end } -@@ -239,12 +262,12 @@ public class ActivationRange +@@ -236,12 +259,12 @@ public class ActivationRange if ( MinecraftServer.currentTick > entity.activatedTick ) { if ( entity.defaultActivationState ) @@ -2559,7 +1994,7 @@ index bf2d18f74b0f0da7c3c30310c74224a1c0853564..1461daa08c5b671b8556f29f90400b7e entity.activatedTick = MinecraftServer.currentTick; } } -@@ -298,7 +321,7 @@ public class ActivationRange +@@ -295,7 +318,7 @@ public class ActivationRange if ( entity instanceof LivingEntity ) { LivingEntity living = (LivingEntity) entity; diff --git a/patches/unapplied-server/0002-Fix-pufferfish-issues.patch b/patches/server/0002-Fix-pufferfish-issues.patch similarity index 78% rename from patches/unapplied-server/0002-Fix-pufferfish-issues.patch rename to patches/server/0002-Fix-pufferfish-issues.patch index c6c5475ad..1236523e4 100644 --- a/patches/unapplied-server/0002-Fix-pufferfish-issues.patch +++ b/patches/server/0002-Fix-pufferfish-issues.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix pufferfish issues diff --git a/build.gradle.kts b/build.gradle.kts -index fd1ac5dbc39068d4332fd264f3359e4845e529e1..f138c6fb5410c416d6af4d49ae51c9ac840515d6 100644 +index 1bb33b64bd73c8ea591c3ffdf5573c7c55a520f3..c8f5e9eaf5fb83148ffb8ff18cb33d51561a6610 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -49,7 +49,7 @@ dependencies { +@@ -62,7 +62,7 @@ dependencies { // Pufferfish start implementation("org.yaml:snakeyaml:1.32") @@ -18,10 +18,10 @@ index fd1ac5dbc39068d4332fd264f3359e4845e529e1..f138c6fb5410c416d6af4d49ae51c9ac } // Pufferfish end diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index d63994b04e8848c620024c148f72af9095cd93a3..92685ae1288fa509301c696bd7e49fcdab8062af 100644 +index f5a43a1e1a78b3eaabbcadc7af09750ee478eeb6..3175d421e39bf1315cf699f2df7c63a6535bb5b9 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -@@ -232,7 +232,7 @@ public class PufferfishConfig { +@@ -229,7 +229,7 @@ public class PufferfishConfig { public static int activationDistanceMod; private static void dynamicActivationOfBrains() throws IOException { @@ -30,7 +30,7 @@ index d63994b04e8848c620024c148f72af9095cd93a3..92685ae1288fa509301c696bd7e49fcd startDistance = getInt("dab.start-distance", "activation-range.start-distance", 12, "This value determines how far away an entity has to be", "from the player to start being effected by DEAR."); -@@ -276,7 +276,7 @@ public class PufferfishConfig { +@@ -256,7 +256,7 @@ public class PufferfishConfig { public static boolean throttleInactiveGoalSelectorTick; private static void inactiveGoalSelectorThrottle() { @@ -72,24 +72,11 @@ index 790bad0494454ca12ee152e3de6da3da634d9b20..bf1aacdfac2d501c62038a22cb9eac7f } @Override -diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3f7812c55dae82433336d6e091aa83434615fa04..52af2341b1ce1ee358d60505f34018a5acd09176 100644 ---- a/src/main/java/net/minecraft/world/entity/Entity.java -+++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -850,7 +850,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - public void tick() { - // Pufferfish start - entity TTL - if (type != EntityType.PLAYER && type.ttl >= 0 && this.tickCount >= type.ttl) { -- discard(); -+ discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); // Purpur - return; - } - // Pufferfish end - entity TTL diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index a694fe9cffe96fc425bbd29af430f67813ff8e8c..369452f3392b53a1e7e8b6e0e2048bc71274f439 100644 +index 5a791fad8c27e4997d53f2e5d9a5aa28189fdf28..af8dc4a57987cc84cb1002f2e5f25c28ec98173f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -71,7 +71,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -77,7 +77,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { if (!isLoaded) { if (Projectile.loadedThisTick > gg.pufferfish.pufferfish.PufferfishConfig.maxProjectileLoadsPerTick) { if (++this.loadedLifetime > gg.pufferfish.pufferfish.PufferfishConfig.maxProjectileLoadsPerProjectile) { @@ -99,10 +86,10 @@ index a694fe9cffe96fc425bbd29af430f67813ff8e8c..369452f3392b53a1e7e8b6e0e2048bc7 return; } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 8ccd3b8fcaa80f60b91a6c066e312542d349246a..db4bd5d94ba58ad0457bfd957f708f5354ce669b 100644 +index 29e5234c008b8ac1df240a242ff7966057075171..5c4843f6cfd13790a44fc0f928f1fbcef8a648ce 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -130,7 +130,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -134,7 +134,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p this.defaultBlockState = empty ? VOID_AIR_BLOCKSTATE : AIR_BLOCKSTATE; // Paper end - get block chunk optimisation diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0003-Rebrand.patch similarity index 97% rename from patches/server/0001-Rebrand.patch rename to patches/server/0003-Rebrand.patch index 3698dfe90..07d5b27c0 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0003-Rebrand.patch @@ -5,21 +5,21 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index faf3e3fd72e8c915e7a4803dacbe1bb576c6663e..c673a2cf682378aac38d047b999d8a1731f7569d 100644 +index c8f5e9eaf5fb83148ffb8ff18cb33d51561a6610..77602e4445b1b45a17e5552ac6a769e0ed46ebc7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,7 @@ abstract class MockitoAgentProvider : CommandLineArgumentProvider { // Paper end - configure mockito agent that is needed in newer java versions dependencies { -- implementation(project(":paper-api")) +- implementation(project(":pufferfish-api")) // Pufferfish // Paper + implementation(project(":purpur-api")) // Pufferfish // Paper // Purpur // Paper start implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 -@@ -60,6 +60,10 @@ dependencies { - runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") - runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") +@@ -67,6 +67,10 @@ dependencies { + } + // Pufferfish end + implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur + implementation("org.mozilla:rhino-engine:1.7.14") // Purpur @@ -28,27 +28,27 @@ index faf3e3fd72e8c915e7a4803dacbe1bb576c6663e..c673a2cf682378aac38d047b999d8a17 testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.2") testImplementation("org.junit.platform:junit-platform-suite-engine:1.10.0") -@@ -99,14 +103,14 @@ tasks.jar { +@@ -114,14 +118,14 @@ tasks.jar { val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", -- "Implementation-Title" to "Paper", +- "Implementation-Title" to "Pufferfish", // Pufferfish + "Implementation-Title" to "Purpur", // Pufferfish // Purpur "Implementation-Version" to implementationVersion, "Implementation-Vendor" to date, // Paper -- "Specification-Title" to "Paper", +- "Specification-Title" to "Pufferfish", // Pufferfish + "Specification-Title" to "Purpur", // Pufferfish // Purpur "Specification-Version" to project.version, -- "Specification-Vendor" to "Paper Team", -- "Brand-Id" to "papermc:paper", -- "Brand-Name" to "Paper", +- "Specification-Vendor" to "Pufferfish Studios LLC", // Pufferfish +- "Brand-Id" to "pufferfish:pufferfish", // Pufferfish +- "Brand-Name" to "Pufferfish", // Pufferfish + "Specification-Vendor" to "Purpur Team", // Pufferfish // Purpur + "Brand-Id" to "purpurmc:purpur", // Pufferfish // Purpur + "Brand-Name" to "Purpur", // Pufferfish // Purpur "Build-Number" to (build ?: ""), "Build-Time" to Instant.now().toString(), "Git-Branch" to gitBranch, // Paper -@@ -172,7 +176,7 @@ fun TaskContainer.registerRunTask( +@@ -187,7 +191,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -151,35 +151,35 @@ index 6ee39b534b8d992655bc0cef3c299d12cbae0034..90b3526479320064378f2cde6c2f2b8e .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); diff --git a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java -index 790bad0494454ca12ee152e3de6da3da634d9b20..a6e5950b5875cafd734300cdfbf58f5d3736f3c8 100644 +index bf1aacdfac2d501c62038a22cb9eac7f9b946619..3099c21ee589acf6edff5903a23673adf489024f 100644 --- a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java +++ b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java -@@ -31,6 +31,7 @@ public record ServerBuildInfoImpl( - private static final String ATTRIBUTE_GIT_COMMIT = "Git-Commit"; +@@ -32,6 +32,7 @@ public record ServerBuildInfoImpl( private static final String BRAND_PAPER_NAME = "Paper"; + private static final String BRAND_PUFFERFISH_NAME = "Pufferfish"; // Purpur + private static final String BRAND_PURPUR_NAME = "Purpur"; // Purpur private static final String BUILD_DEV = "DEV"; -@@ -42,9 +43,9 @@ public record ServerBuildInfoImpl( +@@ -43,9 +44,9 @@ public record ServerBuildInfoImpl( this( getManifestAttribute(manifest, ATTRIBUTE_BRAND_ID) .map(Key::key) -- .orElse(BRAND_PAPER_ID), +- .orElse(BRAND_PUFFERFISH_ID), // Purpur + .orElse(BRAND_PURPUR_ID), // Purpur getManifestAttribute(manifest, ATTRIBUTE_BRAND_NAME) -- .orElse(BRAND_PAPER_NAME), +- .orElse(BRAND_PUFFERFISH_NAME), // Purpur + .orElse(BRAND_PURPUR_NAME), // Purpur SharedConstants.getCurrentVersion().getId(), SharedConstants.getCurrentVersion().getName(), getManifestAttribute(manifest, ATTRIBUTE_BUILD_NUMBER) -@@ -61,7 +62,7 @@ public record ServerBuildInfoImpl( +@@ -62,7 +63,7 @@ public record ServerBuildInfoImpl( @Override public boolean isBrandCompatible(final @NotNull Key brandId) { -- return brandId.equals(this.brandId); -+ return brandId.equals(this.brandId) || brandId.equals(BRAND_PAPER_ID); // Purpur +- return brandId.equals(this.brandId) || brandId.equals(BRAND_PAPER_ID); // Purpur ++ return brandId.equals(this.brandId) || brandId.equals(BRAND_PAPER_ID) || brandId.equals(BRAND_PUFFERFISH_ID); // Purpur } @Override @@ -267,27 +267,27 @@ index 6fef86e47e37eab6721cfd67d494afb25a2ded68..c914e1e13c4f64f24efa5f825e58efb6 // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 507f908916cbeb592496f963b46e4c2121a7b5e3..86ba02ba848ee20a2e2b52baab8986dd5a013f98 100644 +index da306aab94697a86ac052f4536c9eff1ff23a92f..86ba02ba848ee20a2e2b52baab8986dd5a013f98 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -505,7 +505,7 @@ public final class CraftMagicNumbers implements UnsafeValues { // Paper start @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { -- return new com.destroystokyo.paper.PaperVersionFetcher(); +- return new gg.pufferfish.pufferfish.PufferfishVersionFetcher(); // Pufferfish + return new com.destroystokyo.paper.PaperVersionFetcher(); // Pufferfish // Purpur } @Override diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -index 774556a62eb240da42e84db4502e2ed43495be17..99597258e8e88cd9e2c901c4ac3ff7faeeabee2b 100644 +index 80553face9c70c2a3d897681e7761df85b22d464..99597258e8e88cd9e2c901c4ac3ff7faeeabee2b 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java @@ -11,7 +11,7 @@ public final class Versioning { public static String getBukkitVersion() { String result = "Unknown-Version"; -- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties"); +- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/gg.pufferfish.pufferfish/pufferfish-api/pom.properties"); // Pufferfish + InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Pufferfish // Purpur Properties properties = new Properties(); diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0004-Purpur-config-files.patch similarity index 97% rename from patches/server/0002-Purpur-config-files.patch rename to patches/server/0004-Purpur-config-files.patch index 1e18c50eb..e217ce420 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0004-Purpur-config-files.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 4b002e8b75d117b726b0de274a76d3596fce015b..8cde30544e14f8fc2dac32966ae3c21f8cf3a551 100644 +index 692c962193cf9fcc6801fc93f3220bdc673d527b..8cde30544e14f8fc2dac32966ae3c21f8cf3a551 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java @@ -593,7 +593,7 @@ public class Metrics { boolean logFailedRequests = config.getBoolean("logFailedRequests", false); // Only start Metrics, if it's enabled in the config if (config.getBoolean("enabled", true)) { -- Metrics metrics = new Metrics("Paper", serverUUID, logFailedRequests, Bukkit.getLogger()); +- Metrics metrics = new Metrics("Pufferfish", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish + Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Pufferfish // Purpur metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { @@ -26,11 +26,11 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..8cde30544e14f8fc2dac32966ae3c21f - final String implVersion = org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion(); - if (implVersion != null) { - final String buildOrHash = implVersion.substring(implVersion.lastIndexOf('-') + 1); -- paperVersion = "git-Paper-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); +- paperVersion = "git-Pufferfish-%s-%s".formatted(Bukkit.getServer().getMinecraftVersion(), buildOrHash); // Pufferfish - } else { - paperVersion = "unknown"; - } -- metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> paperVersion)); +- metrics.addCustomChart(new Metrics.SimplePie("pufferfish_version", () -> paperVersion)); // Pufferfish + metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() ? "bungee" : "offline"))); // Purpur + metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() != null) ? org.bukkit.craftbukkit.Main.class.getPackage().getImplementationVersion() : "unknown")); // Purpur @@ -72,7 +72,7 @@ index 13bd145b1e8006a53c22f5dc0c78f29b540c7663..ae2d9c91afe13d07fd0de6d455b90a2a boolean flag1 = this.source.acceptsSuccess() && !this.silent; boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 17a158ff6ce6520b69a5a0032ba4c05449dd0cf8..c4d6ffd9b1afee8405914bda5834bb3e7d909811 100644 +index d62f7375394409a278bc565c8263506c598ceeba..2a7fd4420467cce0c4ddca749955ba45e034e555 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -235,6 +235,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -89,10 +89,10 @@ index 17a158ff6ce6520b69a5a0032ba4c05449dd0cf8..c4d6ffd9b1afee8405914bda5834bb3e + org.purpurmc.purpur.PurpurConfig.registerCommands(); + // Purpur end com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now - - this.setPvpAllowed(dedicatedserverproperties.pvp); + gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish + gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 2cc264f577fdd81d02783e0d6146bea9728789c7..23ee4e06f222b396e4eb2412eda09400edf18993 100644 +index eb9fdff179f59d49b17ee3af18cef7508d45987f..e7b9c8a473403002a75b6840250439c91ed12c1c 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -174,6 +174,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0005-Purpur-client-support.patch similarity index 97% rename from patches/server/0003-Purpur-client-support.patch rename to patches/server/0005-Purpur-client-support.patch index 4a50da9a7..efb60b3fd 100644 --- a/patches/server/0003-Purpur-client-support.patch +++ b/patches/server/0005-Purpur-client-support.patch @@ -43,7 +43,7 @@ index b0bc66dc7248aae691dcab68b925b52a1695e63f..b6dd6bde947ac7502f25d31603995961 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7aa3ba20f63be469ec82637e79f864262e41f3c6..cc0b99f87cdccaf899cb9da393d8e7dbef4f2e3c 100644 +index 554714e449d1d2439b05d7e15f72afccd17d4df5..3d2322233aff511bcc5c85b24230c2e08dc0bcd0 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3580,4 +3580,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0004-MC-Utils.patch b/patches/server/0006-MC-Utils.patch similarity index 100% rename from patches/server/0004-MC-Utils.patch rename to patches/server/0006-MC-Utils.patch diff --git a/patches/server/0005-Fix-decompile-errors.patch b/patches/server/0007-Fix-decompile-errors.patch similarity index 100% rename from patches/server/0005-Fix-decompile-errors.patch rename to patches/server/0007-Fix-decompile-errors.patch diff --git a/patches/server/0006-Component-related-conveniences.patch b/patches/server/0008-Component-related-conveniences.patch similarity index 96% rename from patches/server/0006-Component-related-conveniences.patch rename to patches/server/0008-Component-related-conveniences.patch index 2ba07c998..e66d1c195 100644 --- a/patches/server/0006-Component-related-conveniences.patch +++ b/patches/server/0008-Component-related-conveniences.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b9cad91aa728415a52a43d18301311e2c996da91..4cd799505ad4f9e02eef5f015a6c092af0efba14 100644 +index 77823507f99bc39181fe3c285cd077ca6ef0296b..785ea646cbefb8dc1e22a57bc3a18cdbee440e06 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -2253,6 +2253,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -57,7 +57,7 @@ index b9cad91aa728415a52a43d18301311e2c996da91..4cd799505ad4f9e02eef5f015a6c092a this.sendSystemMessage(message, false); } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 1fcd9cd9344b0d2c4752042b07142db7d727dce8..99472b1ae2261a53555c5212f5d8b0deebaa4c48 100644 +index 30de3d1a7792c38ae946f19cb0e14637919b5001..cf8b7f93a1ba027c00d7f45809fa51f1ab55a5de 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -991,6 +991,20 @@ public abstract class PlayerList { diff --git a/patches/server/0007-Ridables.patch b/patches/server/0009-Ridables.patch similarity index 98% rename from patches/server/0007-Ridables.patch rename to patches/server/0009-Ridables.patch index 954a95b3a..841f042d4 100644 --- a/patches/server/0007-Ridables.patch +++ b/patches/server/0009-Ridables.patch @@ -22,10 +22,10 @@ index f58a94efafbc01d402cd03a108bb90f60930a316..21ea63da99c5b3e2e1ab9cc1049c903b 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 c26e3a239441376f2694782d4f07943538677c71..5cd3d7b30a8dea820d0e9569219cbc5858c80f6c 100644 +index 05e49085d71e5e93a0033d3ca2a670981d6dfe75..69846993f5e5adef6ecf6c23f261b3dbabf6a193 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1855,6 +1855,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers worldserver.updateLagCompensationTick(); // Paper - lag compensation @@ -34,7 +34,7 @@ index c26e3a239441376f2694782d4f07943538677c71..5cd3d7b30a8dea820d0e9569219cbc58 gameprofilerfiller.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b4027f5cf90935a1fe3ab2c28b0bcbb55a7b541b..4c4729292a6b0665412bdea1c1c70af6b4867b74 100644 +index 8091e78e56c0e4ea880e6f88ec9c15ca5e67b9b0..1f49d018683fa19f498c8e68dab8a7ddde6cfad0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -231,6 +231,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -66,10 +66,10 @@ index 785ea646cbefb8dc1e22a57bc3a18cdbee440e06..749145ac5ee84b5ebbf4b1eba2df680c private void updatePlayerAttributes() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index cd1b6b539a62fa5237d6dab2d1c09a2e631d9941..52eb9238965a1c1522b2c523d48ac63e0db5d3d1 100644 +index 56a6367245b133f3ac86af99a738325885f2e94a..d2145df4e9b0dd16e7d394b8983c36fd073d3e31 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2821,6 +2821,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2822,6 +2822,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -79,7 +79,7 @@ index cd1b6b539a62fa5237d6dab2d1c09a2e631d9941..52eb9238965a1c1522b2c523d48ac63e if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a15546e433ebba6c0de01bdaaef201a3d99a87b5..b265a9c8b89c0026b6e74fc8aba10f4c03ca1750 100644 +index 0a0d004699eeaae12852b197b32a449a86de3028..0e084e2dcd0294274aa42b2a15fe58bee54ff393 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -340,7 +340,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -91,7 +91,7 @@ index a15546e433ebba6c0de01bdaaef201a3d99a87b5..b265a9c8b89c0026b6e74fc8aba10f4c private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -3294,6 +3294,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3297,6 +3297,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index a15546e433ebba6c0de01bdaaef201a3d99a87b5..b265a9c8b89c0026b6e74fc8aba10f4c this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3333,6 +3340,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3336,6 +3343,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -120,7 +120,7 @@ index a15546e433ebba6c0de01bdaaef201a3d99a87b5..b265a9c8b89c0026b6e74fc8aba10f4c if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -5325,4 +5340,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5328,4 +5343,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((net.minecraft.server.level.ServerLevel) this.level).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -190,7 +190,7 @@ index b851c3ee1426bc0a259bf6c4a662af0c9883dd71..7c11b5e73d4f3c0be7c467f7522c2d97 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 f36a075dbee2b96d01899e02460b1d8443e91749..b027633d6c854f481fbd4a2e4b89ace4b9d7a398 100644 +index e21e549e8102477aae599487acc6dd39616d6c26..30ffb90dda6c95c6f3bc42d1b9747acef0f0f19a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -248,9 +248,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -223,7 +223,7 @@ index f36a075dbee2b96d01899e02460b1d8443e91749..b027633d6c854f481fbd4a2e4b89ace4 @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -3692,8 +3693,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3719,8 +3720,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); gameprofilerfiller.pop(); // Paper start - Add EntityMoveEvent @@ -236,7 +236,7 @@ index f36a075dbee2b96d01899e02460b1d8443e91749..b027633d6c854f481fbd4a2e4b89ace4 Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3703,6 +3706,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3730,6 +3733,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -259,7 +259,7 @@ index f36a075dbee2b96d01899e02460b1d8443e91749..b027633d6c854f481fbd4a2e4b89ace4 // Paper end - Add EntityMoveEvent world = this.level(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index dbd321f3dc3cc80737830db63aed47a6935e8e89..bc2380a71aa65c40f326c1f6bdf15ee25346ffee 100644 +index 237eed7259f0cedf5b96ea54c195c3359d286064..6502676a94ebb663b6126a21896cda456066d55b 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -163,8 +163,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -273,7 +273,7 @@ index dbd321f3dc3cc80737830db63aed47a6935e8e89..bc2380a71aa65c40f326c1f6bdf15ee2 this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(world); -@@ -1496,7 +1496,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1502,7 +1502,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab protected void onOffspringSpawnedFromEgg(Player player, Mob child) {} protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -282,7 +282,7 @@ index dbd321f3dc3cc80737830db63aed47a6935e8e89..bc2380a71aa65c40f326c1f6bdf15ee2 } public boolean isWithinRestriction() { -@@ -1813,4 +1813,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1819,4 +1819,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab public float[] getArmorDropChances() { return this.armorDropChances; } @@ -342,13 +342,13 @@ index dbd321f3dc3cc80737830db63aed47a6935e8e89..bc2380a71aa65c40f326c1f6bdf15ee2 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index 94d04a20f97405e02d7cccaabadc7a7e86e336f7..06b890275d1a171d609b91a1d1a018c43b943ab2 100644 +index 31aa4221de653f0695b21d438964bae20cffad07..861591694785a6ff16f839fa91781791c275de14 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -@@ -23,14 +23,21 @@ public class AttributeMap { - private final Set attributesToSync = new ObjectOpenHashSet<>(); +@@ -24,15 +24,22 @@ public class AttributeMap { private final Set attributesToUpdate = new ObjectOpenHashSet<>(); private final AttributeSupplier supplier; + private final java.util.function.Function, AttributeInstance> createInstance; // Pufferfish + private final net.minecraft.world.entity.LivingEntity entity; // Purpur public AttributeMap(AttributeSupplier defaultAttributes) { @@ -359,6 +359,7 @@ index 94d04a20f97405e02d7cccaabadc7a7e86e336f7..06b890275d1a171d609b91a1d1a018c4 + this.entity = entity; + // Purpur end this.supplier = defaultAttributes; + this.createInstance = attributex -> this.supplier.createInstance(this::onAttributeModified, attributex); // Pufferfish } private void onAttributeModified(AttributeInstance instance) { @@ -368,7 +369,7 @@ index 94d04a20f97405e02d7cccaabadc7a7e86e336f7..06b890275d1a171d609b91a1d1a018c4 this.attributesToSync.add(instance); } } -@@ -44,7 +51,7 @@ public class AttributeMap { +@@ -46,7 +53,7 @@ public class AttributeMap { } public Collection getSyncableAttributes() { @@ -376,7 +377,7 @@ index 94d04a20f97405e02d7cccaabadc7a7e86e336f7..06b890275d1a171d609b91a1d1a018c4 + return this.attributes.values().stream().filter(attribute -> attribute.getAttribute().value().isClientSyncable() && (entity == null || entity.shouldSendAttribute(attribute.getAttribute().value()))).collect(Collectors.toList()); // Purpur } - @Nullable + 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 386f9bca728055f7b75fb690b307ff4510068105..157fe8979c780300b6f72cbaa17729031e3b386d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -438,7 +439,7 @@ index fbfc2f2515ad709b2c1212aef9521e795547d66b..e77bd11af62682d5eca41f6c9e1aed30 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 60c2868f255d372226e0c1389caaa5477bbef41e..d9d9ae5a60b47d60d8473689a2a85a81fc97cc8b 100644 +index 3de177a40649183b5b210e5f0c610a527287e9ec..1348ec21d1ede67026897563e5c09406c9902043 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -47,12 +47,59 @@ public class Bat extends AmbientCreature { @@ -2008,7 +2009,7 @@ index fb84ee1225cd762ef306d1fc3e1baed42c034a3c..04b6cb63bac767b386b8f67cf80a4d75 this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 05c3d43fafc781e2c2d762dd5f509753df8da3b3..218af0b8f3d2085c6adde1569feb6c3894aae676 100644 +index 94692082aa85d7e4e52a4e16bb5e49b0bf6eb93f..33ac6f9ae824395b745219f6b1bcedd2766fdb9b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java @@ -104,10 +104,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @@ -2065,11 +2066,12 @@ index 05c3d43fafc781e2c2d762dd5f509753df8da3b3..218af0b8f3d2085c6adde1569feb6c38 @Override protected Brain.Provider brainProvider() { return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES); -@@ -224,6 +259,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -225,7 +260,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS ProfilerFiller gameprofilerfiller = Profiler.get(); gameprofilerfiller.push("allayBrain"); -+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick(world, this); gameprofilerfiller.pop(); gameprofilerfiller.push("allayActivityUpdate"); @@ -2102,7 +2104,7 @@ index c1ef714096159608752d744b98f615cd45fe459a..c3fbe43451385bb7cf1d8996a7c95c22 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 31b10cd404b672d7ce21c2107d8f83e32de26ef4..3053de1bbdeb12f939555d2cfb9361ed271c9b6a 100644 +index cb47876a13cb1990bb0ab4cff1bbe57b3b2d0a5e..a1c800d43ab938add855e94943a7d9dd9dc78460 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -100,6 +100,23 @@ public class Axolotl extends Animal implements VariantHolder, B @@ -2129,15 +2131,16 @@ index 31b10cd404b672d7ce21c2107d8f83e32de26ef4..3053de1bbdeb12f939555d2cfb9361ed @Override public float getWalkTargetValue(BlockPos pos, LevelReader world) { return 0.0F; -@@ -297,6 +314,7 @@ public class Axolotl extends Animal implements VariantHolder, B +@@ -298,7 +315,7 @@ public class Axolotl extends Animal implements VariantHolder, B ProfilerFiller gameprofilerfiller = Profiler.get(); gameprofilerfiller.push("axolotlBrain"); -+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick(world, this); gameprofilerfiller.pop(); gameprofilerfiller.push("axolotlActivityUpdate"); -@@ -520,14 +538,22 @@ public class Axolotl extends Animal implements VariantHolder, B +@@ -522,14 +539,22 @@ public class Axolotl extends Animal implements VariantHolder, B private static class AxolotlMoveControl extends SmoothSwimmingMoveControl { private final Axolotl axolotl; @@ -2160,7 +2163,7 @@ index 31b10cd404b672d7ce21c2107d8f83e32de26ef4..3053de1bbdeb12f939555d2cfb9361ed if (!this.axolotl.isPlayingDead()) { super.tick(); } -@@ -542,9 +568,9 @@ public class Axolotl extends Animal implements VariantHolder, B +@@ -544,9 +569,9 @@ public class Axolotl extends Animal implements VariantHolder, B } @Override @@ -2191,7 +2194,7 @@ index f3c884ab9c09f04dd01cabf2ee9de3b5b620563d..3de689deceada1ccc06b9f6d2bb9ba91 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 36846ba6b6c7494c745ebd8b221479a9d02ff318..e03598f985191350ce796dabd7641b8d0f6c081c 100644 +index 3461c7150fc44ee608169aa993f6ff44d4c978be..066006dc4fcdd03113242f3fa4bc8dc7b4add81a 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 @@ -106,6 +106,8 @@ public class Frog extends Animal implements VariantHolder> { @@ -2259,15 +2262,16 @@ index 36846ba6b6c7494c745ebd8b221479a9d02ff318..e03598f985191350ce796dabd7641b8d @Override protected Brain.Provider brainProvider() { -@@ -188,6 +238,7 @@ public class Frog extends Animal implements VariantHolder> { +@@ -189,7 +239,7 @@ public class Frog extends Animal implements VariantHolder> { protected void customServerAiStep(ServerLevel world) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("frogBrain"); -+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick(world, this); profilerFiller.pop(); profilerFiller.push("frogActivityUpdate"); -@@ -384,7 +435,7 @@ public class Frog extends Animal implements VariantHolder> { +@@ -386,7 +436,7 @@ public class Frog extends Animal implements VariantHolder> { return world.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(world, pos); } @@ -2277,7 +2281,7 @@ index 36846ba6b6c7494c745ebd8b221479a9d02ff318..e03598f985191350ce796dabd7641b8d super(entity); } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 48ac8c3f6e00c3c2dc67b6c994be7c0ac6dfcf81..fb91677fb03b7bc1decdf181b7b15d971ffacdc2 100644 +index cf326ef35bac732e7addf75537963593d5b268ae..7e92e8c4fec36c8838604f17cf366cc80e82b19b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -51,13 +51,50 @@ public class Tadpole extends AbstractFish { @@ -2332,16 +2336,17 @@ index 48ac8c3f6e00c3c2dc67b6c994be7c0ac6dfcf81..fb91677fb03b7bc1decdf181b7b15d97 @Override protected PathNavigation createNavigation(Level world) { return new WaterBoundPathNavigation(this, world); -@@ -88,6 +125,7 @@ public class Tadpole extends AbstractFish { +@@ -89,7 +126,7 @@ public class Tadpole extends AbstractFish { ProfilerFiller gameprofilerfiller = Profiler.get(); gameprofilerfiller.push("tadpoleBrain"); -+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick(world, this); gameprofilerfiller.pop(); gameprofilerfiller.push("tadpoleActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 76aca47d8638d5c37c57d3a59fa7f8ceaa5a53b4..ce697bce755f8ef147d189a8729c441aee5bbd21 100644 +index fb92cd4b0c15b614c0c06d2867039aee1a6212a2..2e9fb07b2974209cce5bd31aca095def474c51c2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -93,6 +93,23 @@ public class Goat extends Animal { @@ -2368,11 +2373,12 @@ index 76aca47d8638d5c37c57d3a59fa7f8ceaa5a53b4..ce697bce755f8ef147d189a8729c441a @Override protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); -@@ -197,6 +214,7 @@ public class Goat extends Animal { +@@ -198,7 +215,7 @@ public class Goat extends Animal { ProfilerFiller gameprofilerfiller = Profiler.get(); gameprofilerfiller.push("goatBrain"); -+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick(world, this); gameprofilerfiller.pop(); gameprofilerfiller.push("goatActivityUpdate"); @@ -2830,7 +2836,7 @@ index 2df8bf818345246cc1f88b93e4a3b62e61772efb..3a3106bd26947e8851d672a1a5c45c58 this.dragonFight.updateDragon(this); } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 244e38db508efa3eebebb6392c4ebb0805367baf..82bea5b969e24f6938c95315c09c4e6287017e9f 100644 +index d62c0d3c2bd5df5ee908bdcfdffaae9ce780810f..754a87c9c7595a4bedf784fbbb6d62b1d0bca756 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -86,16 +86,30 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -2980,7 +2986,7 @@ index 244e38db508efa3eebebb6392c4ebb0805367baf..82bea5b969e24f6938c95315c09c4e62 this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } -@@ -261,6 +376,15 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -268,6 +383,15 @@ public class WitherBoss extends Monster implements RangedAttackMob { @Override protected void customServerAiStep(ServerLevel world) { @@ -2996,7 +3002,7 @@ index 244e38db508efa3eebebb6392c4ebb0805367baf..82bea5b969e24f6938c95315c09c4e62 int i; if (this.getInvulnerableTicks() > 0) { -@@ -579,11 +703,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -586,11 +710,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { } public int getAlternativeTarget(int headIndex) { @@ -3367,7 +3373,7 @@ index 378694a38115c012978e1fea59d049d1ebd04110..4364ac531826524fc3c099b9900406b2 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 48dcd2bc12ce1d08cc5195bff5460dc0dd9902d3..bd08a90aa9128d7d31dbbe7e075d32a8b8aad724 100644 +index c7153cfec847fca4ce5d9ec729628aed5bed11be..9b0004497fdd8980ec571536ced9de947b3505b0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -95,9 +95,27 @@ public class EnderMan extends Monster implements NeutralMob { @@ -3415,7 +3421,7 @@ index 48dcd2bc12ce1d08cc5195bff5460dc0dd9902d3..bd08a90aa9128d7d31dbbe7e075d32a8 float f = this.getLightLevelDependentMagicValue(); if (f > 0.5F && world.canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper - EndermanEscapeEvent -@@ -383,6 +402,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -389,6 +408,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurtServer(ServerLevel world, DamageSource source, float amount) { if (this.isInvulnerableTo(world, source)) { return false; @@ -4803,7 +4809,7 @@ index 7b5f9284972b3a6bd8125891b23f73438e875c08..f935d475fd1aca407bde420e9ba80020 super(creaking); } 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 6ea90e54759dbeab025e0a1896ee834ea9986427..b92c65703dfc4ed95de97534b1e8195c627aa212 100644 +index 3f625cb9b1237ca8f782bca2f182dfe72853bd96..cde73e0bac71d1c37c3335f6a2294622f9453fbd 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 @@ -92,6 +92,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -4830,16 +4836,17 @@ index 6ea90e54759dbeab025e0a1896ee834ea9986427..b92c65703dfc4ed95de97534b1e8195c @VisibleForTesting public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; -@@ -160,6 +177,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -161,7 +178,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { protected void customServerAiStep(ServerLevel world) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("hoglinBrain"); -+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick(world, this); profilerFiller.pop(); HoglinAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index e04d2c5e75dc774fe893a552474fdb8045c32693..ef7614c49a7165505f32dc21164b7a1fd4836017 100644 +index d1870bf4c01c846a721480eb6611a67db9b98d02..9a3bc9c0ad1b0af3c8196a773dd93b069ca4e92c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -96,6 +96,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -4866,11 +4873,12 @@ index e04d2c5e75dc774fe893a552474fdb8045c32693..ef7614c49a7165505f32dc21164b7a1f @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); -@@ -309,6 +326,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -310,7 +327,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento ProfilerFiller gameprofilerfiller = Profiler.get(); gameprofilerfiller.push("piglinBrain"); -+ //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // // Purpur - TODO: Pufferfish +- if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish ++ if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider this.getBrain().tick(world, this); gameprofilerfiller.pop(); PiglinAi.updateActivity(this); @@ -4911,7 +4919,7 @@ index 24eaeb93284fe1a573026b85818a93a34fd9e1ec..d7578f7d4eba9d630feb589dd2761789 profilerFiller.pop(); PiglinBruteAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 6180019da58b19d2595da508aed3196af922d587..fcfea2cdd5df9fe505df3f7c866cd8d27ad9b249 100644 +index 457f9f6bf6a8e8f2e0b4246a0589e344756370d2..5a62fe9c4f0cee9e8b4a48564f76afec609335b1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java @@ -127,8 +127,32 @@ public class Warden extends Monster implements VibrationSystem { @@ -4947,7 +4955,7 @@ index 6180019da58b19d2595da508aed3196af922d587..fcfea2cdd5df9fe505df3f7c866cd8d2 @Override public Packet getAddEntityPacket(ServerEntity entityTrackerEntry) { return new ClientboundAddEntityPacket(this, entityTrackerEntry, this.hasPose(Pose.EMERGING) ? 1 : 0); -@@ -396,17 +420,14 @@ public class Warden extends Monster implements VibrationSystem { +@@ -398,17 +422,14 @@ public class Warden extends Monster implements VibrationSystem { @Contract("null->false") public boolean canTargetEntity(@Nullable Entity entity) { @@ -4969,10 +4977,10 @@ index 6180019da58b19d2595da508aed3196af922d587..fcfea2cdd5df9fe505df3f7c866cd8d2 public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index b7a34f1c4d7b5ef3f7a843d152e33c839dcdedd5..845b53ed80446ba0b17298eeb26f615b63b67340 100644 +index d9a60871bce4da7e6dc7c3c986498602c355ac04..80b6deade244d5ac2a6245fd2f3575af216a302c 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -156,6 +156,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -158,6 +158,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); } @@ -5001,16 +5009,18 @@ index b7a34f1c4d7b5ef3f7a843d152e33c839dcdedd5..845b53ed80446ba0b17298eeb26f615b @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -255,7 +277,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - ProfilerFiller gameprofilerfiller = Profiler.get(); +@@ -259,8 +281,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler gameprofilerfiller.push("villagerBrain"); -- if (!inactive) this.getBrain().tick(world, this); -+ if (!inactive && (getRider() == null || !this.isControllable())) this.getBrain().tick(world, this); // Purpur + // Pufferfish start +- if (!inactive && this.behaviorTick++ % this.activatedPriority == 0) { +- this.getBrain().tick((ServerLevel) this.level(), this); // Paper ++ if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { ++ this.getBrain().tick(world, this); // Paper // Purpur + } + // Pufferfish end gameprofilerfiller.pop(); - if (this.assignProfessionWhenSpawned) { - this.assignProfessionWhenSpawned = false; -@@ -312,7 +334,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -319,7 +341,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler if (!itemstack.is(Items.VILLAGER_SPAWN_EGG) && this.isAlive() && !this.isTrading() && !this.isSleeping()) { if (this.isBaby()) { this.setUnhappy(); @@ -5019,7 +5029,7 @@ index b7a34f1c4d7b5ef3f7a843d152e33c839dcdedd5..845b53ed80446ba0b17298eeb26f615b } else { if (!this.level().isClientSide) { boolean flag = this.getOffers().isEmpty(); -@@ -326,9 +348,10 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -333,9 +355,10 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (flag) { diff --git a/patches/server/0008-Configurable-entity-base-attributes.patch b/patches/server/0010-Configurable-entity-base-attributes.patch similarity index 99% rename from patches/server/0008-Configurable-entity-base-attributes.patch rename to patches/server/0010-Configurable-entity-base-attributes.patch index 6efce90a4..cd4fa80e6 100644 --- a/patches/server/0008-Configurable-entity-base-attributes.patch +++ b/patches/server/0010-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 697c8c8fd0cdca4bb8bc3db62f7de8999785ec1e..90a51b05c80d079af07133a3e509aada57927a26 100644 +index 0e084e2dcd0294274aa42b2a15fe58bee54ff393..163af180a12bf2847d6eab87e1fa77aef7cd3550 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -177,7 +177,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,7 +34,7 @@ index 7c11b5e73d4f3c0be7c467f7522c2d974ab330f3..27aee968718af1ae78e2076ddc890114 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 b027633d6c854f481fbd4a2e4b89ace4b9d7a398..f4cc9ff863079f5546cce1bfa0f1dcab022bb293 100644 +index 30ffb90dda6c95c6f3bc42d1b9747acef0f0f19a..1077eae6e0952d09410518a856ebece808aefef5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -326,6 +326,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -55,7 +55,7 @@ index b027633d6c854f481fbd4a2e4b89ace4b9d7a398..f4cc9ff863079f5546cce1bfa0f1dcab return this.brain; } 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 d9d9ae5a60b47d60d8473689a2a85a81fc97cc8b..e16eea0be67c59e4b5af9e387e1acaa258cf1fce 100644 +index 1348ec21d1ede67026897563e5c09406c9902043..656088e81781a5711521edec565f4e34313b7bc6 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -268,6 +268,19 @@ public class Bat extends AmbientCreature { @@ -478,7 +478,7 @@ index 04b6cb63bac767b386b8f67cf80a4d75df9d7fe5..40a766e20d1a2111d561cc05aa49e2ac protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 218af0b8f3d2085c6adde1569feb6c3894aae676..5904b82b87bcdbe41367843885f7c1bd1272d1f1 100644 +index 33ac6f9ae824395b745219f6b1bcedd2766fdb9b..0a173040c56fea6d8f83998b7c66aa8daaf648f2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java @@ -154,6 +154,12 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @@ -512,7 +512,7 @@ index c3fbe43451385bb7cf1d8996a7c95c226bd2c511..a7fdb54b1bda83e7a365447f2cb57012 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 3053de1bbdeb12f939555d2cfb9361ed271c9b6a..8293679fbe5df093610c30094de389fb7ff79658 100644 +index a1c800d43ab938add855e94943a7d9dd9dc78460..79102c8819ce3d49538306db3ce4a723ea5d765d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -115,6 +115,12 @@ public class Axolotl extends Animal implements VariantHolder, B @@ -838,7 +838,7 @@ index 3a3106bd26947e8851d672a1a5c45c58f5c7f179..0faae8faeba4300a44b8dadedc73c9f1 } } 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 82bea5b969e24f6938c95315c09c4e6287017e9f..f55842cf85dec8e5c26cd5ac52c63599f3b19cf3 100644 +index 754a87c9c7595a4bedf784fbbb6d62b1d0bca756..19a7f7926eeb9c4e4d5bbd5e4768d99c456e8f71 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -114,6 +114,12 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -854,7 +854,7 @@ index 82bea5b969e24f6938c95315c09c4e6287017e9f..f55842cf85dec8e5c26cd5ac52c63599 @Override protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); -@@ -426,7 +432,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -433,7 +439,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { this.setInvulnerableTicks(i); if (this.tickCount % 10 == 0) { @@ -971,7 +971,7 @@ index 4364ac531826524fc3c099b9900406b2bc3a5540..1cfb85a72e270a953c13102490dc38f3 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index bd08a90aa9128d7d31dbbe7e075d32a8b8aad724..4265dc40f7337e565d236eb3c04847a87494fc86 100644 +index 9b0004497fdd8980ec571536ced9de947b3505b0..f1d4e32085085b06a07fec88737e1ad9e9da2adf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -112,6 +112,12 @@ public class EnderMan extends Monster implements NeutralMob { @@ -1570,7 +1570,7 @@ index f935d475fd1aca407bde420e9ba8002002ea55f6..9bf251915c8a126ba480f44ea203f1a4 protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREAKING_SWAY; 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 b92c65703dfc4ed95de97534b1e8195c627aa212..08c4a32b1195820eb574cdf4a499107565a551d6 100644 +index cde73e0bac71d1c37c3335f6a2294622f9453fbd..b94cde5e03ef98eb78386acc59b1b864054d97b7 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 @@ -107,6 +107,12 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1587,7 +1587,7 @@ index b92c65703dfc4ed95de97534b1e8195c627aa212..08c4a32b1195820eb574cdf4a4991075 @VisibleForTesting 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 ef7614c49a7165505f32dc21164b7a1fd4836017..33326839175d2826eaa61eb7bc1e110d1ff6bc94 100644 +index 9a3bc9c0ad1b0af3c8196a773dd93b069ca4e92c..23673d9ce87acda718d12fce9af0ef5f27983f1a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -113,6 +113,12 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1621,10 +1621,10 @@ index d7578f7d4eba9d630feb589dd2761789f8bcfde9..6459e588e6feb6d7bcf999e36b658bba return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.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 845b53ed80446ba0b17298eeb26f615b63b67340..37c26008486ffdf7f1d6bdfd0253067a1c6bf942 100644 +index 80b6deade244d5ac2a6245fd2f3575af216a302c..9505402564893b3046b86f95fa1e34a64ac98e8e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -178,6 +178,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -180,6 +180,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end diff --git a/patches/server/0009-Barrels-and-enderchests-6-rows.patch b/patches/server/0011-Barrels-and-enderchests-6-rows.patch similarity index 100% rename from patches/server/0009-Barrels-and-enderchests-6-rows.patch rename to patches/server/0011-Barrels-and-enderchests-6-rows.patch diff --git a/patches/server/0010-Llama-API.patch b/patches/server/0012-Llama-API.patch similarity index 97% rename from patches/server/0010-Llama-API.patch rename to patches/server/0012-Llama-API.patch index 39a3cc127..65d260b7b 100644 --- a/patches/server/0010-Llama-API.patch +++ b/patches/server/0012-Llama-API.patch @@ -25,7 +25,7 @@ index df695b444fa2a993d381e2f197182c3e91a68502..eb0faf58fa1a408f294fc62120b140de double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); 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 eab57ab99168b1b9ae8df6c8b2b6dd623b1871fb..7ff446ea2163d3b3b9f7fd826939dda21e07c99f 100644 +index f9774491bd49bb37d3581cebbcedfc1878cf15b5..4a412a8a582e092a920029791a48c085527cbbd0 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 @@ -72,6 +72,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder implements FeatureElement, EntityTypeT +@@ -405,6 +405,16 @@ public class EntityType implements FeatureElement, EntityTypeT return EntityType.register(EntityType.vanillaEntityId(id), type); } @@ -25,7 +25,7 @@ index c8c2394558952d7ca57d29874485251b8f2b3400..48386124487a1f0fdc1d476895fa1181 public static ResourceLocation getKey(EntityType type) { return BuiltInRegistries.ENTITY_TYPE.getKey(type); } -@@ -604,6 +614,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -605,6 +615,16 @@ public class EntityType implements FeatureElement, EntityTypeT return this.category; } diff --git a/patches/server/0016-Anvil-API.patch b/patches/server/0018-Anvil-API.patch similarity index 100% rename from patches/server/0016-Anvil-API.patch rename to patches/server/0018-Anvil-API.patch diff --git a/patches/server/0017-Alternative-Keepalive-Handling.patch b/patches/server/0019-Alternative-Keepalive-Handling.patch similarity index 100% rename from patches/server/0017-Alternative-Keepalive-Handling.patch rename to patches/server/0019-Alternative-Keepalive-Handling.patch diff --git a/patches/server/0018-Enchantment-convenience-methods.patch b/patches/server/0020-Enchantment-convenience-methods.patch similarity index 100% rename from patches/server/0018-Enchantment-convenience-methods.patch rename to patches/server/0020-Enchantment-convenience-methods.patch diff --git a/patches/server/0019-Silk-touch-spawners.patch b/patches/server/0021-Silk-touch-spawners.patch similarity index 99% rename from patches/server/0019-Silk-touch-spawners.patch rename to patches/server/0021-Silk-touch-spawners.patch index 1bcddb1d2..7f106b8fd 100644 --- a/patches/server/0019-Silk-touch-spawners.patch +++ b/patches/server/0021-Silk-touch-spawners.patch @@ -100,7 +100,7 @@ index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..80ee7a6f010cc838625674007a3ea908 int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 42bff6f2d864a31dcb1c0087a4e0c9027ece001e..9d6a90b11ef09900de9405cd3233e1ee5dd6e31e 100644 +index 9b1a4502aa6c26c7524ec17697250317b7f381fd..d6b1b49102ae4421e273f6c781e25a3b18fe13f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -109,6 +109,38 @@ public class PurpurWorldConfig { diff --git a/patches/server/0020-Add-turtle-egg-block-options.patch b/patches/server/0022-Add-turtle-egg-block-options.patch similarity index 96% rename from patches/server/0020-Add-turtle-egg-block-options.patch rename to patches/server/0022-Add-turtle-egg-block-options.patch index 628c2f46a..99dface32 100644 --- a/patches/server/0020-Add-turtle-egg-block-options.patch +++ b/patches/server/0022-Add-turtle-egg-block-options.patch @@ -36,7 +36,7 @@ index 953ddb2ea6fd48e57712e30a6addf23e188e5312..bae4931fff0db56aa125248e17b29f7c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 65c41d9c757819f3da4c0549f4e5fe002992b4d4..cdef3af8a48d640a8180b5a5658b0ef46087095f 100644 +index d6b1b49102ae4421e273f6c781e25a3b18fe13f7..f6186c65468953756da9c381c6ee712115a244f7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -141,6 +141,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0021-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0023-Logger-settings-suppressing-pointless-logs.patch similarity index 100% rename from patches/server/0021-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0023-Logger-settings-suppressing-pointless-logs.patch diff --git a/patches/server/0022-Disable-outdated-build-check.patch b/patches/server/0024-Disable-outdated-build-check.patch similarity index 92% rename from patches/server/0022-Disable-outdated-build-check.patch rename to patches/server/0024-Disable-outdated-build-check.patch index bd3532fcb..845632208 100644 --- a/patches/server/0022-Disable-outdated-build-check.patch +++ b/patches/server/0024-Disable-outdated-build-check.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index bc0353e4f41680d04f4d5e2dd85640d9e0f06736..b2d60b214b58d9a5fadf3629e5ebc358c904d1c6 100644 +index 9ad9239ae0804cc7a4a9ea4a05401b303ae9b372..5bce26e9671aab15ac4bac9a0d00b5184bef74ea 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -267,7 +267,7 @@ public class Main { diff --git a/patches/server/0023-Giants-AI-settings.patch b/patches/server/0025-Giants-AI-settings.patch similarity index 100% rename from patches/server/0023-Giants-AI-settings.patch rename to patches/server/0025-Giants-AI-settings.patch diff --git a/patches/server/0024-Zombie-horse-naturally-spawn.patch b/patches/server/0026-Zombie-horse-naturally-spawn.patch similarity index 95% rename from patches/server/0024-Zombie-horse-naturally-spawn.patch rename to patches/server/0026-Zombie-horse-naturally-spawn.patch index ed77c8a8f..57847a580 100644 --- a/patches/server/0024-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0026-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 32339a18345feddb49cffe5ed1f18a2bfaf931ba..a0ff876d951f62eb172ee3763a9bc7ba5b191034 100644 +index 1f49d018683fa19f498c8e68dab8a7ddde6cfad0..c05d0d836ced6db6b4a3e85fe0973dd7b1aaad81 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -939,10 +939,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -953,10 +953,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses if (flag1) { diff --git a/patches/server/0025-Charged-creeper-naturally-spawn.patch b/patches/server/0027-Charged-creeper-naturally-spawn.patch similarity index 100% rename from patches/server/0025-Charged-creeper-naturally-spawn.patch rename to patches/server/0027-Charged-creeper-naturally-spawn.patch diff --git a/patches/server/0026-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0028-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 100% rename from patches/server/0026-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0028-Rabbit-naturally-spawn-toast-and-killer.patch diff --git a/patches/server/0027-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0029-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 100% rename from patches/server/0027-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0029-Fix-outdated-server-showing-in-ping-before-server-fu.patch diff --git a/patches/server/0028-Tulips-change-fox-type.patch b/patches/server/0030-Tulips-change-fox-type.patch similarity index 100% rename from patches/server/0028-Tulips-change-fox-type.patch rename to patches/server/0030-Tulips-change-fox-type.patch diff --git a/patches/server/0029-Breedable-Polar-Bears.patch b/patches/server/0031-Breedable-Polar-Bears.patch similarity index 100% rename from patches/server/0029-Breedable-Polar-Bears.patch rename to patches/server/0031-Breedable-Polar-Bears.patch diff --git a/patches/server/0030-Chickens-can-retaliate.patch b/patches/server/0032-Chickens-can-retaliate.patch similarity index 97% rename from patches/server/0030-Chickens-can-retaliate.patch rename to patches/server/0032-Chickens-can-retaliate.patch index cdd46320d..326987d93 100644 --- a/patches/server/0030-Chickens-can-retaliate.patch +++ b/patches/server/0032-Chickens-can-retaliate.patch @@ -52,7 +52,7 @@ index 9d3c5340b9e16117fbc63f184fe92cf7ae0998be..798a59046c3ac9a3838f7bcaf7bb21e7 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fe9b0ff2a73dc0f49b46738f07a7c58b622399d6..6d3b41da6210699869839826e037a038a637c4c3 100644 +index efa453fdde735158b4c6324546ca83bdd2935746..dcc8e4880c1bfff1abdc1b542000d61e3378d4f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -343,6 +343,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0031-Add-option-to-set-armorstand-step-height.patch b/patches/server/0033-Add-option-to-set-armorstand-step-height.patch similarity index 94% rename from patches/server/0031-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0033-Add-option-to-set-armorstand-step-height.patch index 44409cdea..cf4d6f0b9 100644 --- a/patches/server/0031-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0033-Add-option-to-set-armorstand-step-height.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 99ac631aaa51ab67b5f3356175656c81add3c637..80160d15c9dd62e2a0fba0ad7787b3a5069c7279 100644 +index 163af180a12bf2847d6eab87e1fa77aef7cd3550..1057497963a615ae1aaafa5aac1f53471a00c763 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -300,6 +300,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -16,7 +16,7 @@ index 99ac631aaa51ab67b5f3356175656c81add3c637..80160d15c9dd62e2a0fba0ad7787b3a5 public boolean noPhysics; private boolean wasOnFire; public final RandomSource random; -@@ -5139,7 +5140,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5142,7 +5143,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public float maxUpStep() { diff --git a/patches/server/0032-Cat-spawning-options.patch b/patches/server/0034-Cat-spawning-options.patch similarity index 97% rename from patches/server/0032-Cat-spawning-options.patch rename to patches/server/0034-Cat-spawning-options.patch index 23be7998d..1cb7e3901 100644 --- a/patches/server/0032-Cat-spawning-options.patch +++ b/patches/server/0034-Cat-spawning-options.patch @@ -46,7 +46,7 @@ index b0236c7bf9441aa84d3795ffed05dd6099f29636..796dcc0dcf9022b455b8847e045266b8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e5c4ca83392f398e24be193a0ed77daa85db9913..7da688e575a1c4ca35c0d23401bf52f3bbbed6ae 100644 +index 149360f01139fa4b14e27e5b34fe3fe7682c7ffc..b3284dfbcdc240919776f47a780a824c406c2781 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -312,6 +312,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0033-Cows-eat-mushrooms.patch b/patches/server/0035-Cows-eat-mushrooms.patch similarity index 98% rename from patches/server/0033-Cows-eat-mushrooms.patch rename to patches/server/0035-Cows-eat-mushrooms.patch index ea5ec8f3f..4aea692cc 100644 --- a/patches/server/0033-Cows-eat-mushrooms.patch +++ b/patches/server/0035-Cows-eat-mushrooms.patch @@ -96,7 +96,7 @@ index 8229a99d4454df64def52bbf686183284d62c900..e6fa66a8c88d4f20a7383e8fd5b3df44 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2f76feed632f4b637bf2bfa792683f5d09b001b7..a64d4b1f839f7b5c457ad4bd5295ff8222b24643 100644 +index b3284dfbcdc240919776f47a780a824c406c2781..6eb25a9b4bb634e57f6de015c9a9f2fc78d0b86f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -390,6 +390,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0034-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0036-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 100% rename from patches/server/0034-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0036-Fix-cow-rotation-when-shearing-mooshroom.patch diff --git a/patches/server/0035-Pigs-give-saddle-back.patch b/patches/server/0037-Pigs-give-saddle-back.patch similarity index 100% rename from patches/server/0035-Pigs-give-saddle-back.patch rename to patches/server/0037-Pigs-give-saddle-back.patch diff --git a/patches/server/0036-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0038-Snowman-drop-and-put-back-pumpkin.patch similarity index 100% rename from patches/server/0036-Snowman-drop-and-put-back-pumpkin.patch rename to patches/server/0038-Snowman-drop-and-put-back-pumpkin.patch diff --git a/patches/server/0037-Ender-dragon-always-drop-full-exp.patch b/patches/server/0039-Ender-dragon-always-drop-full-exp.patch similarity index 100% rename from patches/server/0037-Ender-dragon-always-drop-full-exp.patch rename to patches/server/0039-Ender-dragon-always-drop-full-exp.patch diff --git a/patches/server/0038-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0040-Allow-soil-to-moisten-from-water-directly-under-it.patch similarity index 94% rename from patches/server/0038-Allow-soil-to-moisten-from-water-directly-under-it.patch rename to patches/server/0040-Allow-soil-to-moisten-from-water-directly-under-it.patch index 2d05767e5..ad5151bfc 100644 --- a/patches/server/0038-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0040-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -18,7 +18,7 @@ index c3dba0c2c94f3804338f86621dc42405e380a6b3..df89b18f0d5d2dad5745ec65bcd9e4a7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 89cfedcbb45cd9a3ff9e795828bbc5ae8efa7d6d..c5b3a04d81834d6bdf7c4acd06ce4929d7a25769 100644 +index a21ced5b26dd176863d26c90c5aa083e64f3cd6a..1cc5c2f6b2d110174a2c79d26386f96301050834 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -146,6 +146,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0039-Minecart-settings-and-WASD-controls.patch b/patches/server/0041-Minecart-settings-and-WASD-controls.patch similarity index 97% rename from patches/server/0039-Minecart-settings-and-WASD-controls.patch rename to patches/server/0041-Minecart-settings-and-WASD-controls.patch index a0a488a9d..e7fb47d39 100644 --- a/patches/server/0039-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0041-Minecart-settings-and-WASD-controls.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a9228aa69e31b0e69f0b07170de0ac99b64fe0fe..b5054c762382bb81fa83069a97467af08946f6e5 100644 +index d4ed1dd4e4c56cf40632b0857af82a944579da65..a91a4602b5bc72dc0162fd2d60eebf3a05df4065 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1442,6 +1442,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -17,7 +17,7 @@ index a9228aa69e31b0e69f0b07170de0ac99b64fe0fe..b5054c762382bb81fa83069a97467af0 if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index ce91809d66007def728a127a0a9d33f6235cc94d..bd4e4f03c4b70247c7fc887854e0aa01a8af81c6 100644 +index cdc8606ffe5c75ee19d92e9f86f26b2a502d765e..b0e13160b185151e08f2e5430aa7e96977965a04 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -92,6 +92,7 @@ public abstract class AbstractMinecart extends VehicleEntity { @@ -150,7 +150,7 @@ index 99fd67a78539133adf78d65e2c520ff3dd260301..6b987ee220d94b482d2aeb4ff6bf2718 protected final String descriptionId; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b70a0bdb06a0fa930b525cac44b5bd62e318367b..a97dadd4c0b04833282f9fc484ef760da712974d 100644 +index 1cc5c2f6b2d110174a2c79d26386f96301050834..21e3931d64d32e69b8ba6f7e6d1a9bf044c7c9a8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,6 +96,68 @@ public class PurpurWorldConfig { diff --git a/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0042-Disable-loot-drops-on-death-by-cramming.patch similarity index 87% rename from patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch rename to patches/server/0042-Disable-loot-drops-on-death-by-cramming.patch index b9d4dcd3d..6e1b88dee 100644 --- a/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0042-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f4cc9ff863079f5546cce1bfa0f1dcab022bb293..952b498b3514205accf48104da37ff713074e484 100644 +index 1077eae6e0952d09410518a856ebece808aefef5..af017da528924bae0542dd0e59d23c3bf59aa7b3 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1914,6 +1914,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1927,6 +1927,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(world); // CraftBukkit - from below if (this.shouldDropLoot() && world.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index f4cc9ff863079f5546cce1bfa0f1dcab022bb293..952b498b3514205accf48104da37ff71 this.dropFromLootTable(world, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1922,6 +1923,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1935,6 +1936,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(world, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -25,7 +25,7 @@ index f4cc9ff863079f5546cce1bfa0f1dcab022bb293..952b498b3514205accf48104da37ff71 // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, damageSource, this.drops, () -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a97dadd4c0b04833282f9fc484ef760da712974d..03f5aea7bc98984ced82c7dce93cc4ea4c48179f 100644 +index 21e3931d64d32e69b8ba6f7e6d1a9bf044c7c9a8..983523dfff2773799640347ff047e600fb25044e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,6 +96,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0041-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0043-Option-to-toggle-milk-curing-bad-omen.patch similarity index 95% rename from patches/server/0041-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0043-Option-to-toggle-milk-curing-bad-omen.patch index eacc9572e..881bdbc1d 100644 --- a/patches/server/0041-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0043-Option-to-toggle-milk-curing-bad-omen.patch @@ -22,7 +22,7 @@ index 0651c2af040e3f248860cfb3c5effce91589380e..d884df481b4bbb978113a4ac7a1feac3 // CraftBukkit end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 03f5aea7bc98984ced82c7dce93cc4ea4c48179f..dc90d85b1c9e44163a92d25590d2e82901e32262 100644 +index 983523dfff2773799640347ff047e600fb25044e..6daa99bb60723af0eb38b625ab0cd24d33d7552a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,8 +97,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0042-Skip-events-if-there-s-no-listeners.patch b/patches/server/0044-Skip-events-if-there-s-no-listeners.patch similarity index 100% rename from patches/server/0042-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0044-Skip-events-if-there-s-no-listeners.patch diff --git a/patches/server/0043-Add-permission-for-F3-N-debug.patch b/patches/server/0045-Add-permission-for-F3-N-debug.patch similarity index 89% rename from patches/server/0043-Add-permission-for-F3-N-debug.patch rename to patches/server/0045-Add-permission-for-F3-N-debug.patch index 14affcf66..fc63dee39 100644 --- a/patches/server/0043-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0045-Add-permission-for-F3-N-debug.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 718b9f237448685900cbb722510c93353a8c28b2..54e8d35edd45afd2dc152e60cc4ac96dd2916d55 100644 +index 595302e0177824c1e3ad54e9a088337eeb2d872b..73c83770e1acd6c57742405a04ffa7a733aea4f6 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1108,6 +1108,7 @@ public abstract class PlayerList { diff --git a/patches/server/0044-Configurable-TPS-Catchup.patch b/patches/server/0046-Configurable-TPS-Catchup.patch similarity index 66% rename from patches/server/0044-Configurable-TPS-Catchup.patch rename to patches/server/0046-Configurable-TPS-Catchup.patch index 0a7f850bb..97ab38788 100644 --- a/patches/server/0044-Configurable-TPS-Catchup.patch +++ b/patches/server/0046-Configurable-TPS-Catchup.patch @@ -5,20 +5,18 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index efeda71653e51e350daaabef103d89ff33fb384f..d6b1ab5c380f044fd11f5639e1422a55459a2e30 100644 +index 95300ce21d9e5ddfcd6cbf7cc4bb1034c9284b43..ea823be49f1782e6e1dd1ebb66a3bf7642e43e40 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1342,6 +1342,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return itemstack.isEmpty() || entity.getEquipmentSlotForItem(itemstack) == slot; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6668d186ff2f8e94ac7a7ce1de9fa0ee86757380..4a3fd89f79d539dd167fe3b616a0e0c539a9ac8f 100644 +index f62000475acb9e48f3c86c6ed267ed3b2038529a..04b3b0661143d4d600dd34cd91498acbc929b10d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -221,6 +221,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0057-Add-option-for-boats-to-eject-players-on-land.patch similarity index 95% rename from patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0057-Add-option-for-boats-to-eject-players-on-land.patch index 9fbf0da7c..2e231b4f0 100644 --- a/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0057-Add-option-for-boats-to-eject-players-on-land.patch @@ -17,7 +17,7 @@ index 1fdbef16cd29c8fc74578ac3328f985eca61088d..e523f651e8776a89ffba015921d708f5 } else { return AbstractBoat.Status.IN_AIR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a3fd89f79d539dd167fe3b616a0e0c539a9ac8f..968ac3249b4971c68be4e32ce35ae9456a92e52f 100644 +index 04b3b0661143d4d600dd34cd91498acbc929b10d..3e78e57f29e98db2dde7d650b65ee23f99238ff7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,10 +96,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0056-Mending-mends-most-damages-equipment-first.patch b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch similarity index 98% rename from patches/server/0056-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0058-Mending-mends-most-damages-equipment-first.patch index 1239e5826..216a93a51 100644 --- a/patches/server/0056-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0058-Mending-mends-most-damages-equipment-first.patch @@ -110,7 +110,7 @@ index d8fc10f9cd0ab2c26e64613006569a86ce201550..73241113e50dc8be89ef8850d49d95ec + // Purpur end - Add option to mend the most damaged equipment first } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 968ac3249b4971c68be4e32ce35ae9456a92e52f..2aa4a46418d37fd53ab215cf1bb4438f5efd8df7 100644 +index 3e78e57f29e98db2dde7d650b65ee23f99238ff7..6b7a6a7889353f9557c6e3bfa8ff8caf66416c1b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,11 +96,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0057-Add-5-second-tps-average-in-tps.patch b/patches/server/0059-Add-5-second-tps-average-in-tps.patch similarity index 96% rename from patches/server/0057-Add-5-second-tps-average-in-tps.patch rename to patches/server/0059-Add-5-second-tps-average-in-tps.patch index aa588ab1b..6f01a651f 100644 --- a/patches/server/0057-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0059-Add-5-second-tps-average-in-tps.patch @@ -26,7 +26,7 @@ index 12b327eea95e0de9e9c39b7d039badee8ec46508..849ecc5af70901f1e40cb6c419f33f1c } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d752b590138da346113b9bf732f91761e58502a6..b1e9f023f643f070a638e064df4245ad95039ef3 100644 +index dac1d0d5ca1222e9922316b17370ba8c9b9cb77f..8b1e5fab163268796c24c40c2454d355b7cac615 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -324,7 +324,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pages, int slotId) { @@ -45,7 +45,7 @@ index 58540f1b04e569198c09ada7415a48b9af69147a..97caf27fe92ff6e34e2edba77abd3fa4 itemstack.set(DataComponents.WRITABLE_BOOK_CONTENT, new WritableBookContent(list1)); this.player.getInventory().setItem(slotId, CraftEventFactory.handleEditBookEvent(this.player, slotId, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) -@@ -1273,6 +1282,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1274,6 +1283,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } private void signBook(FilteredText title, List pages, int slotId) { @@ -57,7 +57,7 @@ index 58540f1b04e569198c09ada7415a48b9af69147a..97caf27fe92ff6e34e2edba77abd3fa4 ItemStack itemstack = this.player.getInventory().getItem(slotId); if (itemstack.has(DataComponents.WRITABLE_BOOK_CONTENT)) { -@@ -1280,10 +1294,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1281,10 +1295,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.remove(DataComponents.WRITABLE_BOOK_CONTENT); List> list1 = (List>) (List) pages.stream().map((filteredtext1) -> { // CraftBukkit - decompile error @@ -70,7 +70,7 @@ index 58540f1b04e569198c09ada7415a48b9af69147a..97caf27fe92ff6e34e2edba77abd3fa4 CraftEventFactory.handleEditBookEvent(this.player, slotId, itemstack, itemstack1); // CraftBukkit this.player.getInventory().setItem(slotId, itemstack); // CraftBukkit - event factory updates the hand book } -@@ -1293,6 +1307,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1294,6 +1308,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return this.player.isTextFilteringEnabled() ? Filterable.passThrough(message.filteredOrEmpty()) : Filterable.from(message); } diff --git a/patches/server/0070-Entity-lifespan.patch b/patches/server/0072-Entity-lifespan.patch similarity index 87% rename from patches/server/0070-Entity-lifespan.patch rename to patches/server/0072-Entity-lifespan.patch index cb291d89a..2d401d832 100644 --- a/patches/server/0070-Entity-lifespan.patch +++ b/patches/server/0072-Entity-lifespan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 97caf27fe92ff6e34e2edba77abd3fa42211b00a..c5f36e6a37d1d718e145de85b9a0a89114790d36 100644 +index 99a023e87428ee200fcb3b663c2ab6a1077b3bf0..f11dc92d796d3044adc8cbd97edf00e047ba72f1 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2856,6 +2856,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2857,6 +2857,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (this.player.canInteractWithEntity(axisalignedbb, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0D))) { // Paper - configurable lenience value for interact range @@ -17,7 +17,7 @@ index 97caf27fe92ff6e34e2edba77abd3fa42211b00a..c5f36e6a37d1d718e145de85b9a0a891 private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index bc2380a71aa65c40f326c1f6bdf15ee25346ffee..8ce316292850353231e529f75630d3fde290a161 100644 +index 6502676a94ebb663b6126a21896cda456066d55b..e99b72b89abdded3e988bd1a92d36055fb1a84dc 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -148,6 +148,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -28,7 +28,7 @@ index bc2380a71aa65c40f326c1f6bdf15ee25346ffee..8ce316292850353231e529f75630d3fd public boolean aware = true; // CraftBukkit protected Mob(EntityType type, Level world) { -@@ -334,6 +335,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -336,6 +337,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab entityliving = null; } } @@ -36,7 +36,7 @@ index bc2380a71aa65c40f326c1f6bdf15ee25346ffee..8ce316292850353231e529f75630d3fd this.target = entityliving; return true; // CraftBukkit end -@@ -378,8 +380,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -380,8 +382,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } gameprofilerfiller.pop(); @@ -65,7 +65,7 @@ index bc2380a71aa65c40f326c1f6bdf15ee25346ffee..8ce316292850353231e529f75630d3fd @Override protected void playHurtSound(DamageSource damageSource) { this.resetAmbientSoundTime(); -@@ -547,6 +569,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -549,6 +571,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -73,7 +73,7 @@ index bc2380a71aa65c40f326c1f6bdf15ee25346ffee..8ce316292850353231e529f75630d3fd } @Override -@@ -624,6 +647,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -626,6 +649,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.aware = nbt.getBoolean("Bukkit.Aware"); } // CraftBukkit end @@ -85,7 +85,7 @@ index bc2380a71aa65c40f326c1f6bdf15ee25346ffee..8ce316292850353231e529f75630d3fd } @Override -@@ -1735,6 +1763,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1741,6 +1769,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.playAttackSound(); } @@ -94,7 +94,7 @@ index bc2380a71aa65c40f326c1f6bdf15ee25346ffee..8ce316292850353231e529f75630d3fd } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df753eb03c427268d404598b96b8285a00460e2d..722c95adbed966ddec57250a5fdc1978594fd499 100644 +index 6e68accdf6d4067f69cf7b29381ee2eab7a2b20c..bfd03c3cdc2b80415730aa1a18fad5afe838df25 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -120,6 +120,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 97% rename from patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 528460b9b..1e5f575d2 100644 --- a/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0073-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -36,7 +36,7 @@ index a91a4602b5bc72dc0162fd2d60eebf3a05df4065..cbe608df708d5530813230cddd78568c + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 37f9e79cef4d2b68af61b4a1fbd42199bec6e28e..5e5fc866a9126f5909e04c257139cbf34fd31d2d 100644 +index c1a3103aa692bb5dfb4e162159c77a03d9c9a0e8..2007dd29cc2c1ee4cf88db27e0082c3548ebf344 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -479,6 +479,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0072-Squid-EAR-immunity.patch b/patches/server/0074-Squid-EAR-immunity.patch similarity index 93% rename from patches/server/0072-Squid-EAR-immunity.patch rename to patches/server/0074-Squid-EAR-immunity.patch index 0c7beebbe..21dbb94d6 100644 --- a/patches/server/0072-Squid-EAR-immunity.patch +++ b/patches/server/0074-Squid-EAR-immunity.patch @@ -25,10 +25,10 @@ index b5d714f137257810ced4b4457bd5bb01123d3452..0d4eaa2933d2b6501eeb64a0d95b2d4d public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 24d7eca3f0b06602a1026eda3432f0a4255d8b01..9d8d0a99f0b2a8e3452c4c86e6c53c66d58c5b3d 100644 +index a017374f2027946ef465cf41fd6ed6de7f00e19f..9b1a16747aa23b18e4cff986efaac6ce64b6ddb9 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -378,6 +378,7 @@ public class ActivationRange +@@ -401,6 +401,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/server/0073-Phantoms-burn-in-light.patch b/patches/server/0075-Phantoms-burn-in-light.patch similarity index 100% rename from patches/server/0073-Phantoms-burn-in-light.patch rename to patches/server/0075-Phantoms-burn-in-light.patch diff --git a/patches/server/0074-Configurable-villager-breeding.patch b/patches/server/0076-Configurable-villager-breeding.patch similarity index 93% rename from patches/server/0074-Configurable-villager-breeding.patch rename to patches/server/0076-Configurable-villager-breeding.patch index b77cfcd3e..36aeada30 100644 --- a/patches/server/0074-Configurable-villager-breeding.patch +++ b/patches/server/0076-Configurable-villager-breeding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager breeding diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 329db0049e0792b2c066349849ebd7c26a9178d7..c50cfa8225d5098f978da42cdf6c6860e93e9f2a 100644 +index 394c8667cfe57fa1fba93231a1ebb5be6dc63c63..3528cc251ebae1011ec3dac4b893157e446a1e22 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -762,7 +762,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -769,7 +769,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { diff --git a/patches/server/0075-Redstone-deactivates-spawners.patch b/patches/server/0077-Redstone-deactivates-spawners.patch similarity index 94% rename from patches/server/0075-Redstone-deactivates-spawners.patch rename to patches/server/0077-Redstone-deactivates-spawners.patch index 15279b020..45960bcc7 100644 --- a/patches/server/0075-Redstone-deactivates-spawners.patch +++ b/patches/server/0077-Redstone-deactivates-spawners.patch @@ -17,7 +17,7 @@ index 7de66aa435dd36899b80f4ecc64480680e474d94..bb4411cfdf1bc7adc12c2f918d2eec83 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 436f04b56ac6795e393008e4eeae4fc09cd2e2a9..8bd53ffbf41b45a2aa62f115884f2ec55574ec21 100644 +index 83af43e5f1d3e80170104771b2d38526d1ab3e3a..be44e9597b595f8a4b63a9a198f63e7db411b6ce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -347,6 +347,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0076-Totems-work-in-inventory.patch b/patches/server/0078-Totems-work-in-inventory.patch similarity index 91% rename from patches/server/0076-Totems-work-in-inventory.patch rename to patches/server/0078-Totems-work-in-inventory.patch index e9fda6ae3..451905d38 100644 --- a/patches/server/0076-Totems-work-in-inventory.patch +++ b/patches/server/0078-Totems-work-in-inventory.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ba9fc0f5d9979aee43dcf716cf25ff42928a9f1b..7de429f377fa4880c3b0cfb9b72df06a9b89722e 100644 +index 2007dd29cc2c1ee4cf88db27e0082c3548ebf344..f8ec83a135feab4140ec075ee45250ebfc511993 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1707,6 +1707,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1720,6 +1720,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -28,7 +28,7 @@ index ba9fc0f5d9979aee43dcf716cf25ff42928a9f1b..7de429f377fa4880c3b0cfb9b72df06a EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemstack == null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8bd53ffbf41b45a2aa62f115884f2ec55574ec21..575d9dd236287ce26a1c080df2d05fa27849845e 100644 +index be44e9597b595f8a4b63a9a198f63e7db411b6ce..35ce3c0385f72feea1a0741ee055994f5cf0190a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -238,6 +238,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0079-Add-vindicator-johnny-spawn-chance.patch similarity index 100% rename from patches/server/0077-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0079-Add-vindicator-johnny-spawn-chance.patch diff --git a/patches/server/0078-Dispensers-place-anvils-option.patch b/patches/server/0080-Dispensers-place-anvils-option.patch similarity index 96% rename from patches/server/0078-Dispensers-place-anvils-option.patch rename to patches/server/0080-Dispensers-place-anvils-option.patch index b6fe7a408..19c022075 100644 --- a/patches/server/0078-Dispensers-place-anvils-option.patch +++ b/patches/server/0080-Dispensers-place-anvils-option.patch @@ -32,7 +32,7 @@ index 0d12605dc84dad49faa18bf1fd058c3c168623ee..c6490554a3025f4de3f3218178fad76c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4ea6246187a94e596800f0c26c604c5bfb644823..729123a4eb3323457819961685a6a088ca650de3 100644 +index a4c20f7b679150425b192a9e4411fa987aed8e1f..efebca2a6dd217d853a27516c29be89421c1df68 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -310,8 +310,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0079-Allow-anvil-colors.patch b/patches/server/0081-Allow-anvil-colors.patch similarity index 96% rename from patches/server/0079-Allow-anvil-colors.patch rename to patches/server/0081-Allow-anvil-colors.patch index 22f80aa3c..2e7bac233 100644 --- a/patches/server/0079-Allow-anvil-colors.patch +++ b/patches/server/0081-Allow-anvil-colors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow anvil colors diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 0dfcce766872d9b1a9b898f56e6f4d9179a46bc4..f1834eec821a14ef6a7f42f827b7e0b8284ae5a2 100644 +index f8c0a4fd95f341cbf8f6a06dfae408d505b0f018..a7c3338ed6edcd26fce869ec66fdcaa4c32c0e4f 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -285,6 +285,54 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -64,7 +64,7 @@ index 0dfcce766872d9b1a9b898f56e6f4d9179a46bc4..f1834eec821a14ef6a7f42f827b7e0b8 } } else if (itemstack.has(DataComponents.CUSTOM_NAME)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 729123a4eb3323457819961685a6a088ca650de3..1264d6e7304db19e8e10bace19d750fcf51fc995 100644 +index efebca2a6dd217d853a27516c29be89421c1df68..7a7b8725f7a0b1a193b4e19510c386b46604f006 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -288,6 +288,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 100% rename from patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0082-Add-option-to-disable-dolphin-treasure-searching.patch diff --git a/patches/server/0081-Short-enderman-height.patch b/patches/server/0083-Short-enderman-height.patch similarity index 89% rename from patches/server/0081-Short-enderman-height.patch rename to patches/server/0083-Short-enderman-height.patch index 715a5839a..a30c63635 100644 --- a/patches/server/0081-Short-enderman-height.patch +++ b/patches/server/0083-Short-enderman-height.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Short enderman height diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 48386124487a1f0fdc1d476895fa118102fb4003..5796f9bdde43d5b681ee2aaa7bc47076114af321 100644 +index 23b921a79bd563fd0a1bf7afd55a8e52ff1da521..40ae00146381a9a1ec70ffae5c683b46c72c56ff 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -388,7 +388,8 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -389,7 +389,8 @@ public class EntityType implements FeatureElement, EntityTypeT @Nullable private Component description; private final Optional> lootTable; @@ -19,10 +19,10 @@ index 48386124487a1f0fdc1d476895fa118102fb4003..5796f9bdde43d5b681ee2aaa7bc47076 private final FeatureFlagSet requiredFeatures; 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 a356e7ac34aca1d14cb922565206304d14e90c8b..8933b1f16617f0373cc99f93254533cc7d1e923f 100644 +index 04fdefe4c38ef9ed3001f95b34d1632944fcae85..257eac851b6f4628b94784cab7a5cd4ec804944a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -409,6 +409,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -415,6 +415,7 @@ public class EnderMan extends Monster implements NeutralMob { if (this.isInvulnerableTo(world, source)) { return false; } else if (getRider() != null && this.isControllable()) { return super.hurtServer(world, source, amount); // Purpur - no teleporting on damage diff --git a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch similarity index 96% rename from patches/server/0082-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0084-Stop-squids-floating-on-top-of-water.patch index 3604859e9..5dc27aa8e 100644 --- a/patches/server/0082-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0084-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index afa4d11c44e2159dfad080c6a45256e9b66fa18c..3e16f8ec52ff60f696a4a29dfbb9217b0c29106b 100644 +index 56225797f1cf0294c1e6aa824d8c146dca530e9f..bf22cfc2b770fd4dc73168745d535fb6598412ca 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4745,6 +4745,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4748,6 +4748,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Mth.lerp(delta, this.yRotO, this.yRot); } diff --git a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch similarity index 100% rename from patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0085-Crying-obsidian-valid-for-portal-frames.patch diff --git a/patches/server/0084-Entities-can-use-portals.patch b/patches/server/0086-Entities-can-use-portals.patch similarity index 92% rename from patches/server/0084-Entities-can-use-portals.patch rename to patches/server/0086-Entities-can-use-portals.patch index 558e6dcfa..d93019c33 100644 --- a/patches/server/0084-Entities-can-use-portals.patch +++ b/patches/server/0086-Entities-can-use-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3e16f8ec52ff60f696a4a29dfbb9217b0c29106b..59000a7519071010d03063359c4508426753fe7c 100644 +index bf22cfc2b770fd4dc73168745d535fb6598412ca..c5880e627ff48e5e176baf483c08f35a1af488f8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3438,7 +3438,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3441,7 +3441,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void setAsInsidePortal(Portal portal, BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 3e16f8ec52ff60f696a4a29dfbb9217b0c29106b..59000a7519071010d03063359c450842 if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) { if (!this.portalProcess.isInsidePortalThisTick()) { this.portalProcess.updateEntryPosition(pos.immutable()); -@@ -4157,7 +4157,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4160,7 +4160,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end public boolean canUsePortal(boolean allowVehicles) { diff --git a/patches/server/0085-Customizable-wither-health-and-healing.patch b/patches/server/0087-Customizable-wither-health-and-healing.patch similarity index 94% rename from patches/server/0085-Customizable-wither-health-and-healing.patch rename to patches/server/0087-Customizable-wither-health-and-healing.patch index 08d32928c..a2a40749c 100644 --- a/patches/server/0085-Customizable-wither-health-and-healing.patch +++ b/patches/server/0087-Customizable-wither-health-and-healing.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Customizable wither health and healing Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often. diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index f55842cf85dec8e5c26cd5ac52c63599f3b19cf3..2ec12ec298446b556132785d4d376130594a7cb6 100644 +index 19a7f7926eeb9c4e4d5bbd5e4768d99c456e8f71..e808cd292afc9531d5ec6025e1e83076ba487c0f 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -519,8 +519,10 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -526,8 +526,10 @@ public class WitherBoss extends Monster implements RangedAttackMob { } } diff --git a/patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch similarity index 96% rename from patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch index 6cde0c50a..601bc43a7 100644 --- a/patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0088-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a0ff876d951f62eb172ee3763a9bc7ba5b191034..d49e26a1b719ff4dae6a3a10fc3695c39f400465 100644 +index c05d0d836ced6db6b4a3e85fe0973dd7b1aaad81..7f12f6a0f8ea0a2570ccb8f6e7f786197ee0ef11 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -605,7 +605,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -59,7 +59,7 @@ index a728dcbf956f108f01c966c7531449a506a14a87..4c1378132201c1e5d1bc01f8c0cbba91 if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 26e89ab042792a627efdb5a8cee5c5972bba80ef..35c8798e3c839656758f11bf55f09983da337815 100644 +index e323914f8694043e7b08a2518169695f582bc1a8..9072bdd2fdb1c15ea1dbc599cb96fd82750ddcc6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -70,6 +70,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0087-Raid-cooldown-setting.patch b/patches/server/0089-Raid-cooldown-setting.patch similarity index 97% rename from patches/server/0087-Raid-cooldown-setting.patch rename to patches/server/0089-Raid-cooldown-setting.patch index 7c38302e4..b1805bb7b 100644 --- a/patches/server/0087-Raid-cooldown-setting.patch +++ b/patches/server/0089-Raid-cooldown-setting.patch @@ -49,7 +49,7 @@ index 439d61d8689fabe940006b9b317a6810175dccfb..6b30941a84054efb5fcccb5d9e6c80d7 if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 35c8798e3c839656758f11bf55f09983da337815..2d34c9dc0f1bbd2b6c56ed80f088b604793b9a2a 100644 +index 9072bdd2fdb1c15ea1dbc599cb96fd82750ddcc6..0e7473973fe06f51e28bb8651856ed52a9a51d92 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -108,6 +108,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 100% rename from patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0090-Add-option-to-disable-zombie-aggressiveness-towards-.patch diff --git a/patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 96% rename from patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch index c821e5997..8a33fca32 100644 --- a/patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch +++ b/patches/server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add predicate to recipe's ExactChoice ingredient diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -index 2dce801e06687c218be3333ac9f000bae09f0caf..ed9548341eb226cf5a5d2370419a01208cf0f742 100644 +index 812f919a7a7e309c8513f44104f092496037608f..10730b307971915f52b3e41068a864b8ee1352b4 100644 --- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java +++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java @@ -45,6 +45,7 @@ public final class Ingredient implements Predicate { diff --git a/patches/server/0090-Flying-squids-Oh-my.patch b/patches/server/0092-Flying-squids-Oh-my.patch similarity index 100% rename from patches/server/0090-Flying-squids-Oh-my.patch rename to patches/server/0092-Flying-squids-Oh-my.patch diff --git a/patches/server/0091-Infinity-bow-settings.patch b/patches/server/0093-Infinity-bow-settings.patch similarity index 96% rename from patches/server/0091-Infinity-bow-settings.patch rename to patches/server/0093-Infinity-bow-settings.patch index bca5a8f9b..727127486 100644 --- a/patches/server/0091-Infinity-bow-settings.patch +++ b/patches/server/0093-Infinity-bow-settings.patch @@ -30,7 +30,7 @@ index bb593209c95c9cf1f9c5d52d52fab4a33ddbabcf..1d4d0799a86b9940b5e3b614c5a188ad } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 32ceab27543b01a0340796255b6f48bc2834de9d..b78f6b3e8b70a10f260c233be93947ac27e9edbd 100644 +index fea279b9fbd7f989bf26f0fc1254b1ecb8ac4342..0716bd2728be4fcaa4f13485591008ce270ecf82 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -135,6 +135,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0092-Configurable-daylight-cycle.patch b/patches/server/0094-Configurable-daylight-cycle.patch similarity index 90% rename from patches/server/0092-Configurable-daylight-cycle.patch rename to patches/server/0094-Configurable-daylight-cycle.patch index 2bae55372..758b71bb3 100644 --- a/patches/server/0092-Configurable-daylight-cycle.patch +++ b/patches/server/0094-Configurable-daylight-cycle.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable daylight cycle diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7aef829dbda80d6b2ced79e46db26083f9205ccc..1ce5cd0fdade08093e03033fb15687dc098c8ba1 100644 +index 8b1e5fab163268796c24c40c2454d355b7cac615..d0f1ca68d25cdac127dc6385b29aa1e99438b866 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1854,7 +1854,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop recipe, SingleRecipeInput input, NonNullList inventory, int maxCount) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c895c2e2bbdcc0cbdd69b2086e2d2d76a105f225..d1a7e79ca23ad7a9b589578c91b2dd3427545a05 100644 +index 1060208faaa18020c5762a2eb4851f6148b5f215..fda9fcf681927334937d25706c9127fbbecd2ed5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -365,6 +365,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0094-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0096-Arrows-should-not-reset-despawn-counter.patch similarity index 91% rename from patches/server/0094-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0096-Arrows-should-not-reset-despawn-counter.patch index beaac476f..d46cf5ff0 100644 --- a/patches/server/0094-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0096-Arrows-should-not-reset-despawn-counter.patch @@ -7,7 +7,7 @@ This prevents keeping arrows alive indefinitely (such as when the block the arrow is stuck in gets removed, like a piston head going up/down) diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index accc246f441c8bf5e1a755cfc0db8f97c0c01c6b..75d65b795a7802c0c5b5bd4a6ed429209f987452 100644 +index 571f0699772eecbe02d71845da82a142321f2142..b7dccbf33feb978b3937522bb0d62d154699ae9f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -371,7 +371,7 @@ public abstract class AbstractArrow extends Projectile { @@ -20,7 +20,7 @@ index accc246f441c8bf5e1a755cfc0db8f97c0c01c6b..75d65b795a7802c0c5b5bd4a6ed42920 public boolean isInGround() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d1a7e79ca23ad7a9b589578c91b2dd3427545a05..af54385705cb2a52cb50e939c4517339b1da5cac 100644 +index fda9fcf681927334937d25706c9127fbbecd2ed5..2e807c72b8469210c4acdc591386368589913e61 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -102,6 +102,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 95% rename from patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index c46ae9179..31c06b3c7 100644 --- a/patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0097-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,7 +24,7 @@ index df89b18f0d5d2dad5745ec65bcd9e4a7bf2f1f2b..e744a117d2f25ad24c87263ba2ab7f76 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af54385705cb2a52cb50e939c4517339b1da5cac..cbab2382562e3fc4a275433f1ffca879c563e09a 100644 +index 2e807c72b8469210c4acdc591386368589913e61..acc45259de6b0178408146b71ebaf4de9d1891bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -366,8 +366,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0098-Add-adjustable-breeding-cooldown-to-config.patch similarity index 97% rename from patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0098-Add-adjustable-breeding-cooldown-to-config.patch index 81566a006..e0c16be97 100644 --- a/patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0098-Add-adjustable-breeding-cooldown-to-config.patch @@ -42,7 +42,7 @@ index 5677dc97ed83652f261100cf391883cfac7d16fe..4637d062b6a4c4d6de2ef54ec3cfdeb4 EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience); if (entityBreedEvent.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 6847be7f95dc37e6259d6903798e6db20702cea8..c2aff2f03451b97f1ec6bd4ee987bb729177320a 100644 +index 77093e49fd60993e7cb6bf5712ec53e0fe221776..34e8eb828be517d9ee3973597c74c5cac3d75c99 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -182,6 +182,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -104,7 +104,7 @@ index 6847be7f95dc37e6259d6903798e6db20702cea8..c2aff2f03451b97f1ec6bd4ee987bb72 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cbab2382562e3fc4a275433f1ffca879c563e09a..7895ad54e7c22cb25edb45d7ce38e87306673578 100644 +index acc45259de6b0178408146b71ebaf4de9d1891bd..6805a2f2803bb4e859afba5369308dd4d2ac5165 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -114,6 +114,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0097-Make-entity-breeding-times-configurable.patch b/patches/server/0099-Make-entity-breeding-times-configurable.patch similarity index 99% rename from patches/server/0097-Make-entity-breeding-times-configurable.patch rename to patches/server/0099-Make-entity-breeding-times-configurable.patch index 9c463af59..b54f120e6 100644 --- a/patches/server/0097-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0099-Make-entity-breeding-times-configurable.patch @@ -316,7 +316,7 @@ index a7fdb54b1bda83e7a365447f2cb5701238ba6847..9ef53608f1608e88de7a7b3e96b43d8d @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 8293679fbe5df093610c30094de389fb7ff79658..b8077a31ed67050a45b5668ea759cf386f085271 100644 +index 79102c8819ce3d49538306db3ce4a723ea5d765d..f6b3bb53a0f6ad596322d6270bf27c5749d13c7b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -121,6 +121,11 @@ public class Axolotl extends Animal implements VariantHolder, B @@ -347,7 +347,7 @@ index 9b9e7c9048f453d01ccf13ffdc7ee0f2151155a9..dbce71f45c008da883b6d244a06343d8 @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 e03598f985191350ce796dabd7641b8d0f6c081c..49915ec0ee5fb6e7d25b079e0410942d44aa1e33 100644 +index 066006dc4fcdd03113242f3fa4bc8dc7b4add81a..02581f47d1ca58c2b8abffc478adf48343585c8b 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 @@ -165,6 +165,10 @@ public class Frog extends Animal implements VariantHolder> { @@ -362,7 +362,7 @@ index e03598f985191350ce796dabd7641b8d0f6c081c..49915ec0ee5fb6e7d25b079e0410942d protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index ce697bce755f8ef147d189a8729c441aee5bbd21..54e880fb1c03a8b578fd1d2929bc174edb9918c5 100644 +index 2e9fb07b2974209cce5bd31aca095def474c51c2..3d862b7a0acc75b4f5ac502e5ef756fde8fe183e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -110,6 +110,11 @@ public class Goat extends Animal { @@ -522,7 +522,7 @@ index 6a45a62c578f033558c26935681f7de74dd98bac..0cc49b0a600a5e6fb4fc21e698e3a5fe 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 08c4a32b1195820eb574cdf4a499107565a551d6..0220fb517d99e8c9629d191eb554799a1dc8d7bc 100644 +index b94cde5e03ef98eb78386acc59b1b864054d97b7..e7f762682a57f13b3a1c00d37d88eb80233baace 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 @@ -120,6 +120,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { diff --git a/patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 99% rename from patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch index ab5ff4819..2ad0ca4d6 100644 --- a/patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0100-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -126,7 +126,7 @@ index cdc17ad948d8ac5de62f14b1a561433d33211f32..44a7cee7df2927a923455e8cedaab593 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 295db9e5854f0a936832046f8ad436f722e8cacf..509eac0592bcb5b67b8f1fcb68b53caa0e10a37b 100644 +index e363a93bdfcef7408ecdd5618b63c345ab9525b4..4efb19a627b3735fe2ded2108576d76296b605f3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,8 +98,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index f6bc20b4e..6ec3820a3 100644 --- a/patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0101-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 000d1863bfba98b5132dfc6743362d687b2f54f3..20fece9908382f40b4082f7b1fb7d419 // Paper end - Add PlayerNameEntityEvent mob.setPersistenceRequired(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 509eac0592bcb5b67b8f1fcb68b53caa0e10a37b..07e997fd9adb318820e6acafc781a8bfa9d2d0d8 100644 +index 4efb19a627b3735fe2ded2108576d76296b605f3..c6f4b6e14616aed688269c56aa9ddf11f097abaf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,9 +99,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 93% rename from patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 6106974f8..008853b5e 100644 --- a/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0102-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,10 +8,10 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. that Endermen like to randomly place all over the world. 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 8933b1f16617f0373cc99f93254533cc7d1e923f..02336ee7a002a620cd76570c84d1d53194a23668 100644 +index 257eac851b6f4628b94784cab7a5cd4ec804944a..a8e2a2096f209fcd24e7921947556691fe6c254a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -468,7 +468,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -474,7 +474,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean requiresCustomPersistence() { diff --git a/patches/server/0101-Add-configurable-snowball-damage.patch b/patches/server/0103-Add-configurable-snowball-damage.patch similarity index 94% rename from patches/server/0101-Add-configurable-snowball-damage.patch rename to patches/server/0103-Add-configurable-snowball-damage.patch index 5e655b1f7..80a91011e 100644 --- a/patches/server/0101-Add-configurable-snowball-damage.patch +++ b/patches/server/0103-Add-configurable-snowball-damage.patch @@ -18,7 +18,7 @@ index 70961e151666a0ecf5b791853f4581eaebbdcc8b..8c853b6fbbc966ee6ba9ad3770d4e2e2 entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e3240a67fac56631b5611176d9bf8fd426ad97b..c005d1932f41b2b4959b7753e14f0463d2eccec5 100644 +index cdcc44e381dee9189f951e3f1984272b0f0f60b0..3ec8e7ea1cf1eb5dd8fec5fefa7a77d68cb75632 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -339,6 +339,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0104-Changeable-Mob-Left-Handed-Chance.patch similarity index 86% rename from patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0104-Changeable-Mob-Left-Handed-Chance.patch index f8220fca1..366814408 100644 --- a/patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0104-Changeable-Mob-Left-Handed-Chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 8ce316292850353231e529f75630d3fde290a161..43a37611c046c70833349c2ff5313f312bebf25b 100644 +index e99b72b89abdded3e988bd1a92d36055fb1a84dc..784bf7754c43b02d337da61d6dd7bed134465d11 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1422,7 +1422,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1428,7 +1428,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab attributemodifiable.addPermanentModifier(new AttributeModifier(Mob.RANDOM_SPAWN_BONUS_ID, randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.ADD_MULTIPLIED_BASE)); } @@ -18,7 +18,7 @@ index 8ce316292850353231e529f75630d3fde290a161..43a37611c046c70833349c2ff5313f31 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c005d1932f41b2b4959b7753e14f0463d2eccec5..23ee0ca0ce934e3cd30c0ad86481988223698372 100644 +index 3ec8e7ea1cf1eb5dd8fec5fefa7a77d68cb75632..897fac3caeab051cf2634d4e8b3dca62b389acd8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -152,8 +152,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0103-Add-boat-fall-damage-config.patch b/patches/server/0105-Add-boat-fall-damage-config.patch similarity index 94% rename from patches/server/0103-Add-boat-fall-damage-config.patch rename to patches/server/0105-Add-boat-fall-damage-config.patch index ef761a46d..b09926310 100644 --- a/patches/server/0103-Add-boat-fall-damage-config.patch +++ b/patches/server/0105-Add-boat-fall-damage-config.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 3d05da7985402f1cf361182084b62145c9bf9856..3b9ebf98eab678938e2b619eb42025c0322bf5dd 100644 +index cbe608df708d5530813230cddd78568c1a63b448..36058eac6f861ae919bbe8ae6386e8f841586ac2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1442,7 +1442,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -27,7 +27,7 @@ index 3d05da7985402f1cf361182084b62145c9bf9856..3b9ebf98eab678938e2b619eb42025c0 if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 23ee0ca0ce934e3cd30c0ad86481988223698372..db63c982a19e8e95f4601dadc17cd5f52f29253a 100644 +index 897fac3caeab051cf2634d4e8b3dca62b389acd8..3bd6931d3b19bd9687cdaee2b245cd3f2e9df0bc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -113,6 +113,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0104-Snow-Golem-rate-of-fire-config.patch b/patches/server/0106-Snow-Golem-rate-of-fire-config.patch similarity index 100% rename from patches/server/0104-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0106-Snow-Golem-rate-of-fire-config.patch diff --git a/patches/server/0105-EMC-Configurable-disable-give-dropping.patch b/patches/server/0107-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0105-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0107-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 2c61c7334..4e8e82f3e 100644 --- a/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0108-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -136,10 +136,10 @@ index a0e0692d17760f440fe81d52887284c787e562db..ab9bebc07b5228dbc0d3ba4b0f7d1bbe brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index c50cfa8225d5098f978da42cdf6c6860e93e9f2a..55472c14eec2c3c08a42af865ae044a5a0a115d3 100644 +index 3528cc251ebae1011ec3dac4b893157e446a1e22..280f35782e4b336465ed45373e7843dd9f697d85 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -225,7 +225,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -227,7 +227,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F)); } else { brain.setSchedule(Schedule.VILLAGER_DEFAULT); @@ -148,7 +148,7 @@ index c50cfa8225d5098f978da42cdf6c6860e93e9f2a..55472c14eec2c3c08a42af865ae044a5 } brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); -@@ -941,6 +941,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -948,6 +948,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public boolean hasFarmSeeds() { return this.getInventory().hasAnyMatching((itemstack) -> { diff --git a/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 100% rename from patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0109-Toggle-for-Zombified-Piglin-death-always-counting-as.patch diff --git a/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0110-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 100% rename from patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0110-Configurable-chance-for-wolves-to-spawn-rabid.patch diff --git a/patches/server/0109-Configurable-default-collar-color.patch b/patches/server/0111-Configurable-default-collar-color.patch similarity index 100% rename from patches/server/0109-Configurable-default-collar-color.patch rename to patches/server/0111-Configurable-default-collar-color.patch diff --git a/patches/server/0110-Phantom-flames-on-swoop.patch b/patches/server/0112-Phantom-flames-on-swoop.patch similarity index 100% rename from patches/server/0110-Phantom-flames-on-swoop.patch rename to patches/server/0112-Phantom-flames-on-swoop.patch diff --git a/patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 94% rename from patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch index ec055c788..c2d638857 100644 --- a/patches/server/0111-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0113-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,7 +17,7 @@ index edef8fc62f8dba1b57214d8d7d805ff0d83f4114..663eb96b8227f000448957b5d8ea13ca return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7e32f0ec92b9309ca61a0c773d75b996768d3b74..bae2bb894cc068cbf738849b9e46ce8d8b78f919 100644 +index 739402d4e7b2b99ced75f62df33e4f4b4b9bdd6c..012bdd66052eb30a185804a36e4cbde323bb1d68 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -376,6 +376,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0112-Implement-TPSBar.patch b/patches/server/0114-Implement-TPSBar.patch similarity index 97% rename from patches/server/0112-Implement-TPSBar.patch rename to patches/server/0114-Implement-TPSBar.patch index d3bc68616..4876b7dbc 100644 --- a/patches/server/0112-Implement-TPSBar.patch +++ b/patches/server/0114-Implement-TPSBar.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 24c2568db30f970aed1a4897cfbc7d07297047d3..5d94b71bd54f99040b76cca74964a32d55339767 100644 +index 02c7b57eef9a4462af413415ff268b9daeea0b93..632fd1b7d3474889b700b153d9cb49676f801b07 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -258,6 +258,7 @@ public class Commands { @@ -17,10 +17,10 @@ index 24c2568db30f970aed1a4897cfbc7d07297047d3..5d94b71bd54f99040b76cca74964a32d if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a094ca4ba0b1b8e671c9337df4cd22d3d5be17de..76ad795439dbaf8c39975639f3b9b5a7419391e6 100644 +index d0f1ca68d25cdac127dc6385b29aa1e99438b866..3b5121bf06ea5ae528778ae643bc5e4c3bb736ae 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1156,6 +1156,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop byteAllowed) { diff --git a/patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0117-Full-netherite-armor-grants-fire-resistance.patch similarity index 97% rename from patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0117-Full-netherite-armor-grants-fire-resistance.patch index 8589146b5..9d0818491 100644 --- a/patches/server/0115-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0117-Full-netherite-armor-grants-fire-resistance.patch @@ -27,7 +27,7 @@ index 773be9c116a664e4d0349c58c00df34f203f8ebf..ae5f7c275003b6fb9f6c5a0277482b4f this.updatePlayerPose(); if (this.currentImpulseContextResetGraceTime > 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd61cf137bfe39633414c59beaf7e4fb303fa2f1..afd52da926501e8a99b7d889e8fdbb8c5d20f5cc 100644 +index c0b9a7a7cd1e4acf151b12d308627d4ff2202018..19c6572a82de81b5a3aacad4bd77878d6c21ddc8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -285,6 +285,19 @@ public class PurpurWorldConfig { diff --git a/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0118-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 97% rename from patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0118-Add-mobGriefing-bypass-to-everything-affected.patch index 2306b9343..e8805486c 100644 --- a/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0118-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ 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 8baea988394e16e826bd8696af138babf31adec4..07a72184dedccbc366e93ad49824fc48acaa528a 100644 +index f8ec83a135feab4140ec075ee45250ebfc511993..0b9ece407fb90636d3869e85cd8c6c0a5626e8fa 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1890,7 +1890,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1903,7 +1903,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,10 +18,10 @@ index 8baea988394e16e826bd8696af138babf31adec4..07a72184dedccbc366e93ad49824fc48 BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 43a37611c046c70833349c2ff5313f312bebf25b..081ba208be712263de22d06f3b20326509b226fc 100644 +index 784bf7754c43b02d337da61d6dd7bed134465d11..01da954d982b59bca8d8b76e66021ee04138a923 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -704,7 +704,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -706,7 +706,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab Level world = this.level(); if (world instanceof ServerLevel worldserver) { @@ -144,10 +144,10 @@ index f356110850dd71d066243ec29853f547d94e4400..cb9f73605e5cfbbff9935340529a2daa // flag1 = worldserver.removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 2ec12ec298446b556132785d4d376130594a7cb6..1786d3978c8a9d66dd16b667de4d4604c35231db 100644 +index e808cd292afc9531d5ec6025e1e83076ba487c0f..92711d5460b128310739188347f68be884635ec3 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -492,7 +492,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -499,7 +499,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; @@ -157,10 +157,10 @@ index 2ec12ec298446b556132785d4d376130594a7cb6..1786d3978c8a9d66dd16b667de4d4604 j = Mth.floor(this.getBbWidth() / 2.0F + 1.0F); 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 02336ee7a002a620cd76570c84d1d53194a23668..025f6b327b63f4e71490f01cd22fc043400a882a 100644 +index a8e2a2096f209fcd24e7921947556691fe6c254a..b150e41077ecf23dca828a519a545f93d256eb7c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -516,7 +516,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -522,7 +522,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -177,7 +177,7 @@ index 02336ee7a002a620cd76570c84d1d53194a23668..025f6b327b63f4e71490f01cd22fc043 } @Override -@@ -562,7 +570,15 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -568,7 +576,15 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -249,10 +249,10 @@ index c31a72bad0b75940ea550acf47fab2220ff669ff..9c58d01fc7ba148d4e5d50731eaee71a BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection); BlockState iblockdata = this.mob.level().getBlockState(blockposition); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 33326839175d2826eaa61eb7bc1e110d1ff6bc94..c58fe83deb0d5cb9e4f5700b75b7073ff261f051 100644 +index 23673d9ce87acda718d12fce9af0ef5f27983f1a..f0decc0f4421a6dcd640ad8f0bfb56249bf31944 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -429,7 +429,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -430,7 +430,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ServerLevel world, ItemStack stack) { @@ -291,10 +291,10 @@ index 2f00676f62478897ae4931ea06e047567c407535..55ea7f82fac9a3de6d7e0725a9b6ea08 // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 6c2d4d6f3a36ab452dfd3c33f66e54f152906639..0c38b139f9b92219bc4af2bbd4840eb846cfea1e 100644 +index af8dc4a57987cc84cb1002f2e5f25c28ec98173f..a7df9c2a3f210bc944cf76cdcc8d2a9484704bd1 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -480,7 +480,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -510,7 +510,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { public boolean mayInteract(ServerLevel world, BlockPos pos) { Entity entity = this.getOwner(); diff --git a/patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0119-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 96% rename from patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0119-Config-to-allow-Note-Block-sounds-when-blocked.patch index 3b172052e..47931c0fe 100644 --- a/patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0119-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,7 +22,7 @@ index 6582db84c5307257f16c321453491cf24e40c9c7..f9015d4e478efeec8a796b7a897638f7 // 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 9b0bdd1d70f7c50e81d273612919e7ccf7721df8..6843771f4946ca459ade3617d7320a05cc57e24d 100644 +index 4f31d65962618a29b0a52ec7c51fba2267d63a05..a71a380f20dad2f43183d128e7a487420248a671 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -124,6 +124,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0118-Add-EntityTeleportHinderedEvent.patch b/patches/server/0120-Add-EntityTeleportHinderedEvent.patch similarity index 99% rename from patches/server/0118-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0120-Add-EntityTeleportHinderedEvent.patch index d472f9ac8..16d595c91 100644 --- a/patches/server/0118-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0120-Add-EntityTeleportHinderedEvent.patch @@ -83,7 +83,7 @@ index 0d835621a7af64563c86c17358632aa26ac281cd..ac4064172f982a6efc25378fbd088cca } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5aa46971f19cfac6d2d3a2947badedcbc32711ba..67a3bc89c790a436310972f2fe08b73bafd01070 100644 +index 358f42585c865efbd814787879f919f70234e5c4..6abf043faf27d1385ad45c264822a9f49974863d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1440,6 +1440,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0119-Farmland-trampling-changes.patch b/patches/server/0121-Farmland-trampling-changes.patch similarity index 94% rename from patches/server/0119-Farmland-trampling-changes.patch rename to patches/server/0121-Farmland-trampling-changes.patch index 2847186fe..086d795e7 100644 --- a/patches/server/0119-Farmland-trampling-changes.patch +++ b/patches/server/0121-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 e1abec46177887a92726de80f66226fe7fbbb4a2..bc149eb17695ac727aa8db08db6209497f7d20bf 100644 +index 0c990005661762245426e90c464bd84ae81eb3ca..af135f8b70b0e2af470afce9053976c3a1e03477 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java @@ -127,12 +127,20 @@ public class FarmBlock extends Block { @@ -37,7 +37,7 @@ index e1abec46177887a92726de80f66226fe7fbbb4a2..bc149eb17695ac727aa8db08db620949 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 4fcb78a5dee5c7a12ba443c4d52b39a28ea9c061..2431777ccdf0e2aa0f8488e13da3f64baa079c11 100644 +index 07bbe52a858fa3f0cc9c9de709bf2ef013ac33f5..3739561c633627ba3fe80f89bce84a243705f4bc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -418,10 +418,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0120-Movement-options-for-armor-stands.patch b/patches/server/0122-Movement-options-for-armor-stands.patch similarity index 96% rename from patches/server/0120-Movement-options-for-armor-stands.patch rename to patches/server/0122-Movement-options-for-armor-stands.patch index 216c0bac4..1d4bf9307 100644 --- a/patches/server/0120-Movement-options-for-armor-stands.patch +++ b/patches/server/0122-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ 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 59000a7519071010d03063359c4508426753fe7c..41237e06a0053b0a61af83b4c1d7cb4d18825884 100644 +index c5880e627ff48e5e176baf483c08f35a1af488f8..70581da7310da5c78e20c6257c3423168704fbc4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2014,7 +2014,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2017,7 +2017,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } diff --git a/patches/server/0121-Fix-stuck-in-portals.patch b/patches/server/0123-Fix-stuck-in-portals.patch similarity index 96% rename from patches/server/0121-Fix-stuck-in-portals.patch rename to patches/server/0123-Fix-stuck-in-portals.patch index 53303fc78..0fdc5f365 100644 --- a/patches/server/0121-Fix-stuck-in-portals.patch +++ b/patches/server/0123-Fix-stuck-in-portals.patch @@ -17,10 +17,10 @@ index 80426ba728016273990f00db638ea327b75c1883..70a82e80d686337cbe19365ec2d858fe this.connection.internalTeleport(PositionMoveRotation.of(teleportTarget), teleportTarget.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 41237e06a0053b0a61af83b4c1d7cb4d18825884..e613dd28453795184049e7dfcf2ce9e9e978c5ca 100644 +index 70581da7310da5c78e20c6257c3423168704fbc4..a8884300f2b9483e74036cacd98356c818578bd4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3435,14 +3435,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3438,14 +3438,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0124-Toggle-for-water-sensitive-mob-damage.patch similarity index 99% rename from patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0124-Toggle-for-water-sensitive-mob-damage.patch index c0976c8a6..984702312 100644 --- a/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0124-Toggle-for-water-sensitive-mob-damage.patch @@ -21,7 +21,7 @@ index 0f5be53c6f6a66c61dc3f2bebeb18ca61d06c10d..a83187312422b0e087785d89f4a49b4c protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index e16eea0be67c59e4b5af9e387e1acaa258cf1fce..a65286044be79e351bd5c80114a2f9fc5dacc11b 100644 +index 656088e81781a5711521edec565f4e34313b7bc6..29445156f8660d84bb9840c6ac85e0e2188f443d 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -281,6 +281,11 @@ public class Bat extends AmbientCreature { @@ -411,7 +411,7 @@ index 89566a88a98af2e4ec2b062ed12d4828a32b576d..6e3ed974f6e55aed8ae83fc90e8ae8a7 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index b8077a31ed67050a45b5668ea759cf386f085271..0d22a05cf611569d69a26b04a6db01dffc4ad9f3 100644 +index f6b3bb53a0f6ad596322d6270bf27c5749d13c7b..aca3c02c6d23d9666cf7e0e06dd2e8b6455eb2ac 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -126,6 +126,11 @@ public class Axolotl extends Animal implements VariantHolder, B @@ -427,7 +427,7 @@ index b8077a31ed67050a45b5668ea759cf386f085271..0d22a05cf611569d69a26b04a6db01df @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 54e880fb1c03a8b578fd1d2929bc174edb9918c5..4f7b2511a401e0c8818f11fba7b39ef2f1b4797f 100644 +index 3d862b7a0acc75b4f5ac502e5ef756fde8fe183e..89dcb65db9993cfba6a6563eb9ad39501fac5bde 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -115,6 +115,11 @@ public class Goat extends Animal { @@ -571,7 +571,7 @@ index cb9f73605e5cfbbff9935340529a2daa782ed10b..9aeee3b61bb33d378d7ace77c1cb02bb return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } 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 1786d3978c8a9d66dd16b667de4d4604c35231db..6124c72380f2a95ad70b453a1e4f1b416bc8bfe6 100644 +index 92711d5460b128310739188347f68be884635ec3..6e65fbad43baa8338b6732d8f78422e80f82331c 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -120,6 +120,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -673,7 +673,7 @@ index 1cfb85a72e270a953c13102490dc38f3dbfb76d1..a0c76ffa16edffdfa75fd539e58282d3 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 025f6b327b63f4e71490f01cd22fc043400a882a..6d437ddf91444a4dc1bbbfa0d02783d023047497 100644 +index b150e41077ecf23dca828a519a545f93d256eb7c..62a2249e9611bd3801b8adb880929e3ba9693b73 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -92,7 +92,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -1119,7 +1119,7 @@ index cb47b15d197b1167dcbac1b989903bbf84b079b4..4cd470db5a427e0c0bec0fe2a7c7307c 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 0220fb517d99e8c9629d191eb554799a1dc8d7bc..f3f77e5e219d6a3a831ac9b1a642e77ec67ce770 100644 +index e7f762682a57f13b3a1c00d37d88eb80233baace..c01813b752ee2d23062806cf14b586807cc056d3 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 @@ -125,6 +125,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1135,7 +1135,7 @@ index 0220fb517d99e8c9629d191eb554799a1dc8d7bc..f3f77e5e219d6a3a831ac9b1a642e77e public boolean canBeLeashed() { return true; 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 c58fe83deb0d5cb9e4f5700b75b7073ff261f051..6cef7eb84ddb02a273024f6b30bc7e33712d742a 100644 +index f0decc0f4421a6dcd640ad8f0bfb56249bf31944..39cf09e03cd178471757e51334b07b4daffb43be 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -119,6 +119,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1167,10 +1167,10 @@ index 6459e588e6feb6d7bcf999e36b658bbad4069af2..9c196b0cf49cb6f69bd17748fd13ce59 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.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 55472c14eec2c3c08a42af865ae044a5a0a115d3..35622b60a6b98251080fec444b335ecf617a4cce 100644 +index 280f35782e4b336465ed45373e7843dd9f697d85..22a015f46aa1bb7ef8076fe34d2b69d9870780f1 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -191,6 +191,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -193,6 +193,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.getAttribute(Attributes.TEMPT_RANGE).setBaseValue(this.level().purpurConfig.villagerTemptRange); // Purpur } diff --git a/patches/server/0123-Config-to-always-tame-in-Creative.patch b/patches/server/0125-Config-to-always-tame-in-Creative.patch similarity index 96% rename from patches/server/0123-Config-to-always-tame-in-Creative.patch rename to patches/server/0125-Config-to-always-tame-in-Creative.patch index 279e6a049..26e3292f4 100644 --- a/patches/server/0123-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0125-Config-to-always-tame-in-Creative.patch @@ -46,7 +46,7 @@ index b3dab2eda7aa109c4715e027fd6bba6ac320a106..9c7e29307b811d859a0d743b232463e1 this.level().broadcastEntityEvent(this, (byte) 7); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 91474a8a795a278493c07002bd99ec75effa659c..15675dd5df0ec88636019ac57fd0540bef3af5f6 100644 +index 6e3ed974f6e55aed8ae83fc90e8ae8a7ee2bb8a8..5fea6f7e9b7c5d2b4845effdd1b9d40b5b8033b3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -637,7 +637,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7751488ea7c2ebce1b51567e144e519781f2d060..f271660fb1cdace49ec050fb1ea55e3791336eba 100644 +index 8d0e578c5ee54af4e9f183b2865573881a3f9062..c1ba5eab15bb4b7599c1e5e23b90dfb361af93b6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -575,6 +575,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -578,6 +578,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end @@ -33,7 +33,7 @@ index 7751488ea7c2ebce1b51567e144e519781f2d060..f271660fb1cdace49ec050fb1ea55e37 this.id = Entity.ENTITY_COUNTER.incrementAndGet(); this.despawnTime = type == EntityType.PLAYER ? -1 : world.paperConfig().entities.spawning.despawnTime.getOrDefault(type, io.papermc.paper.configuration.type.number.IntOr.Disabled.DISABLED).or(-1); // Paper - entity despawn time limit diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7aed6ce92a6cb7e70525688d9f07d974e01879a8..4e737547c0082d30837ac1a68d31dde62d2375d5 100644 +index 0b99628d51df2c4df7ddf1c4c9f54e6dc3612533..3dade05c9299f339f94b8a29475dc5ba646b26c8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -297,6 +297,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -44,7 +44,7 @@ index 7aed6ce92a6cb7e70525688d9f07d974e01879a8..4e737547c0082d30837ac1a68d31dde6 @Override public float getBukkitYaw() { -@@ -839,6 +840,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -852,6 +853,7 @@ public abstract class LivingEntity extends Entity implements Attackable { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -52,7 +52,7 @@ index 7aed6ce92a6cb7e70525688d9f07d974e01879a8..4e737547c0082d30837ac1a68d31dde6 } @Override -@@ -927,6 +929,11 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -940,6 +942,11 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -64,7 +64,7 @@ index 7aed6ce92a6cb7e70525688d9f07d974e01879a8..4e737547c0082d30837ac1a68d31dde6 } // CraftBukkit start -@@ -3777,6 +3784,34 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3804,6 +3811,34 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -100,10 +100,10 @@ index 7aed6ce92a6cb7e70525688d9f07d974e01879a8..4e737547c0082d30837ac1a68d31dde6 public boolean isSensitiveToWater() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 081ba208be712263de22d06f3b20326509b226fc..d0babc1b7b8cf1feacc279a6a32cb6e218df55d6 100644 +index 01da954d982b59bca8d8b76e66021ee04138a923..7ca12a1128661ea36e2e33cda204c7d2df55a21c 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1770,17 +1770,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1776,17 +1776,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab protected void playAttackSound() {} public boolean isSunBurnTick() { diff --git a/patches/server/0167-Config-MobEffect-by-world.patch b/patches/server/0169-Config-MobEffect-by-world.patch similarity index 98% rename from patches/server/0167-Config-MobEffect-by-world.patch rename to patches/server/0169-Config-MobEffect-by-world.patch index d3fd4c516..367e8410c 100644 --- a/patches/server/0167-Config-MobEffect-by-world.patch +++ b/patches/server/0169-Config-MobEffect-by-world.patch @@ -72,7 +72,7 @@ index 303cefba51e19ac43b1f6188ad64ef480715ebaf..98ec88751b3e71c2e7aad633096b7f41 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 398cb3dfc7baac5ee610475b3709fdd3252c02e9..54cc4795be1f76bcd00294a8a9a84c2d24f99c4b 100644 +index 1083c6cc35206e09b57ae993623bffa5eecfb1f6..cf3480e98912271cc057d944c8e6931651e9da33 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -324,6 +324,21 @@ public class PurpurWorldConfig { diff --git a/patches/server/0168-Beacon-Activation-Range-Configurable.patch b/patches/server/0170-Beacon-Activation-Range-Configurable.patch similarity index 96% rename from patches/server/0168-Beacon-Activation-Range-Configurable.patch rename to patches/server/0170-Beacon-Activation-Range-Configurable.patch index a970877ab..80500d956 100644 --- a/patches/server/0168-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0170-Beacon-Activation-Range-Configurable.patch @@ -26,7 +26,7 @@ index 0e0d178f2793ab014358f534c8dc53218b89f083..fbc6b0099af34b0247f6144a9cef020f } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 54cc4795be1f76bcd00294a8a9a84c2d24f99c4b..91620b1d72e8109422946efa97e60c386baa6e4f 100644 +index cf3480e98912271cc057d944c8e6931651e9da33..f6f645b2d7449fdf3e6bdc618ad2fb38c05846ae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -464,6 +464,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0169-Make-lightning-rod-range-configurable.patch b/patches/server/0171-Make-lightning-rod-range-configurable.patch similarity index 93% rename from patches/server/0169-Make-lightning-rod-range-configurable.patch rename to patches/server/0171-Make-lightning-rod-range-configurable.patch index 68b1c49c4..a9dc77207 100644 --- a/patches/server/0169-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0171-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a244a37e573bbadf1fbb83b89ab766ab2a6f9a1e..a4370361d9f834fbb475f881adae5ff50b25cf14 100644 +index ad4f51ed28c797cae83a80234837203ac5dd9017..cbca8b51a38f54caa81a6265eef2cdf93205f55b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1072,7 +1072,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1086,7 +1086,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 98% rename from patches/server/0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 67601846a..499ed123b 100644 --- a/patches/server/0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0172-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -80,7 +80,7 @@ index 648c2510beb162e73aed236a3169d0bbb8fc5050..3563a241c0b697dc0167cf7b1aa73fef } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 91620b1d72e8109422946efa97e60c386baa6e4f..8f075735eaefe238cd776e0bb8ee848f2f2b78d4 100644 +index f6f645b2d7449fdf3e6bdc618ad2fb38c05846ae..8fb83dae4c835ffbdd77fb55c518e37124815743 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -381,6 +381,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0171-Allow-player-join-full-server-by-permission.patch b/patches/server/0173-Allow-player-join-full-server-by-permission.patch similarity index 93% rename from patches/server/0171-Allow-player-join-full-server-by-permission.patch rename to patches/server/0173-Allow-player-join-full-server-by-permission.patch index 5ba758362..6d33d24eb 100644 --- a/patches/server/0171-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0173-Allow-player-join-full-server-by-permission.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 5476701392abb1b6fb70ab90e72b59a8bfbef02b..7d57f9b7fc4837f0f44f5c1cb76a5751a15b9254 100644 +index af6ddb3231083244455d750f91bd3e4b2b4b5a0d..d823c9dc6d898f55e677dc320c84a4d8696671b1 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -711,7 +711,7 @@ public abstract class PlayerList { diff --git a/patches/server/0172-Add-portal-permission-bypass.patch b/patches/server/0174-Add-portal-permission-bypass.patch similarity index 96% rename from patches/server/0172-Add-portal-permission-bypass.patch rename to patches/server/0174-Add-portal-permission-bypass.patch index d03a1a846..917381934 100644 --- a/patches/server/0172-Add-portal-permission-bypass.patch +++ b/patches/server/0174-Add-portal-permission-bypass.patch @@ -30,7 +30,7 @@ index 10e747edebd6463cdfcea592cec1c232d837f21b..02bcba52e28f757b59e2f384d5744834 return 0; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index 4312290ad970f71e1dc25b707ab312c597a481a9..e0cbf2e2c17c87af23495e6365ff9378f7c861da 100644 +index e345cdbfab44a0f5da80d738798dbb4424b7ab5c..856f12eb276c214f2f57a58a89a4da9eea34db2d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java @@ -273,6 +273,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { diff --git a/patches/server/0173-Shulker-spawn-from-bullet-options.patch b/patches/server/0175-Shulker-spawn-from-bullet-options.patch similarity index 98% rename from patches/server/0173-Shulker-spawn-from-bullet-options.patch rename to patches/server/0175-Shulker-spawn-from-bullet-options.patch index d4b62d144..7d010504e 100644 --- a/patches/server/0173-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0175-Shulker-spawn-from-bullet-options.patch @@ -68,7 +68,7 @@ index 79dc7cf5bfe92b4df21d164f39726dfe618331e4..6721432f9cdd11c9658c34f0ac407be2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6bbde7e866410de77eabc0295518e89be45ca825..7b076c637f85107883c889d1b5e2639d58a91cd8 100644 +index 8fb83dae4c835ffbdd77fb55c518e37124815743..54c9a86cea5978215159c59fc882bf003143eec2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1991,6 +1991,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0174-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch similarity index 97% rename from patches/server/0174-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0176-Eating-glow-berries-adds-glow-effect.patch index 67116c030..819332d97 100644 --- a/patches/server/0174-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0176-Eating-glow-berries-adds-glow-effect.patch @@ -18,7 +18,7 @@ index bf7d12594375d5b252db540a6d669a6e6aca7de8..580bd63fdbf9555f867362d3c1f39f41 public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index adb3a868bac580e65a72560c863f0d948bc6e5b5..35f0bd3947ef9152ee0392d87a1d2abb64ca6d43 100644 +index 54c9a86cea5978215159c59fc882bf003143eec2..18cf2be9270623e6088e02aaeace6b9b4711fe0a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -213,6 +213,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0175-Option-to-make-drowned-break-doors.patch b/patches/server/0177-Option-to-make-drowned-break-doors.patch similarity index 96% rename from patches/server/0175-Option-to-make-drowned-break-doors.patch rename to patches/server/0177-Option-to-make-drowned-break-doors.patch index bae279106..905476de4 100644 --- a/patches/server/0175-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0177-Option-to-make-drowned-break-doors.patch @@ -17,7 +17,7 @@ index 1f41e4a88fb41347b8b1ac6b3d1c454ad35ebfc4..ec00c6b2a8b6a5e0ef030d65f86d4a7d this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Drowned.class).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (target, world) -> this.okTarget(target))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46c953354b9c37de378408b18cddd8d1dbd44d7a..84f9031091bbdbd42247d4ecf10894e029bff141 100644 +index 18cf2be9270623e6088e02aaeace6b9b4711fe0a..acbe91bba0b245fcd4940ea19795babaaf438c80 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1081,6 +1081,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0176-Configurable-hunger-starvation-damage.patch b/patches/server/0178-Configurable-hunger-starvation-damage.patch similarity index 95% rename from patches/server/0176-Configurable-hunger-starvation-damage.patch rename to patches/server/0178-Configurable-hunger-starvation-damage.patch index b3045016a..5f112ab89 100644 --- a/patches/server/0176-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0178-Configurable-hunger-starvation-damage.patch @@ -18,7 +18,7 @@ index 4f8ee2e5db3352306f3c035052866d95630f4aaf..b8b0b89b7f0a21ecff4ab6286f8a114e this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 84f9031091bbdbd42247d4ecf10894e029bff141..60aa7a970cd43ce82a26b06e45f36a077acfa15b 100644 +index acbe91bba0b245fcd4940ea19795babaaf438c80..51aee36c56a8fc36c3f827ea972ed10dc7130c17 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2703,4 +2703,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0177-Enhance-SysoutCatcher.patch b/patches/server/0179-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0177-Enhance-SysoutCatcher.patch rename to patches/server/0179-Enhance-SysoutCatcher.patch diff --git a/patches/server/0178-Add-uptime-command.patch b/patches/server/0180-Add-uptime-command.patch similarity index 97% rename from patches/server/0178-Add-uptime-command.patch rename to patches/server/0180-Add-uptime-command.patch index cbd163144..464266444 100644 --- a/patches/server/0178-Add-uptime-command.patch +++ b/patches/server/0180-Add-uptime-command.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add uptime command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 5d94b71bd54f99040b76cca74964a32d55339767..0090243f7e1a966534e489cebb88d71d9cbab7bb 100644 +index 632fd1b7d3474889b700b153d9cb49676f801b07..068fa5baf5b031358a1ff71e7ac376448c0ec95c 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -258,6 +258,7 @@ public class Commands { @@ -17,7 +17,7 @@ index 5d94b71bd54f99040b76cca74964a32d55339767..0090243f7e1a966534e489cebb88d71d } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 509175e1dd9f64d1a4f343cc21e0dc6d04dea68d..11a93d772164bd104be860ac9e8855ba5b6904c3 100644 +index 3b5121bf06ea5ae528778ae643bc5e4c3bb736ae..6d843cf9b326ded0152702802e2c7bd94b0fe936 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -314,6 +314,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { // Paper if (!level.isClientSide()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8c065c6a4c26cd048fbaebb47f844837fe772b0c..ab67708d127cb4309d40969fb8064360da5199b8 100644 +index 51aee36c56a8fc36c3f827ea972ed10dc7130c17..ff9bb8f21d6da7f8d3b0a726098227d95e6e3207 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -463,6 +463,280 @@ public class PurpurWorldConfig { diff --git a/patches/server/0180-Store-placer-on-Block-when-placed.patch b/patches/server/0182-Store-placer-on-Block-when-placed.patch similarity index 100% rename from patches/server/0180-Store-placer-on-Block-when-placed.patch rename to patches/server/0182-Store-placer-on-Block-when-placed.patch diff --git a/patches/server/0181-Summoner-API.patch b/patches/server/0183-Summoner-API.patch similarity index 98% rename from patches/server/0181-Summoner-API.patch rename to patches/server/0183-Summoner-API.patch index b7ac71f2e..91ee02057 100644 --- a/patches/server/0181-Summoner-API.patch +++ b/patches/server/0183-Summoner-API.patch @@ -49,7 +49,7 @@ index db8420f6d1356d400699bd09e67e580546295af7..c6e638cf4463db972a99054cb11b0799 } diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 0d6eca127532cf0bc2a4495df1fcd50e3d97f85e..798aafe6153a711b979f05745d1cd65e6f43192b 100644 +index 02cf5a92ff56ada1198e157e0f87f243ad65e488..f445a96eb3991410103225d1b9289261399182ff 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -50,6 +50,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -93,7 +93,7 @@ index 0d6eca127532cf0bc2a4495df1fcd50e3d97f85e..798aafe6153a711b979f05745d1cd65e } 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 8ecb72f6cd12d1e12f5ae9b240ccd6d9e4f6c248..4e59cbd95d2ee1b69a38fc23015a6262d1a2c53b 100644 +index f94bb66eb1118a2de2aa89a1b42c3ba24b769d4d..f19d9fc0a993739e34a2d55bbab9f4736f7688b8 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -86,6 +86,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { diff --git a/patches/server/0182-Customizable-sleeping-actionbar-messages.patch b/patches/server/0184-Customizable-sleeping-actionbar-messages.patch similarity index 95% rename from patches/server/0182-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0184-Customizable-sleeping-actionbar-messages.patch index b1a235c84..477bba82c 100644 --- a/patches/server/0182-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0184-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a4370361d9f834fbb475f881adae5ff50b25cf14..679066abd94261fc49b749a4e3dc91cc24d5cd5d 100644 +index cbca8b51a38f54caa81a6265eef2cdf93205f55b..139bc93411fb8bafedf283c92161bc5905e7e982 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1121,11 +1121,27 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1135,11 +1135,27 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -38,7 +38,7 @@ index a4370361d9f834fbb475f881adae5ff50b25cf14..679066abd94261fc49b749a4e3dc91cc } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 50c78ed8197eb1dc7a1d9a54b0d720602c3a895b..0191f47b2f02fe7b13474c5d5ba5a80ec9432917 100644 +index 76c6624ba6233b951f7ded4e0ecc1a93fc81b331..6a4ced206570f8c1c609e772c0b7d1cf5a6ff9ce 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1839,7 +1839,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple diff --git a/patches/server/0183-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 96% rename from patches/server/0183-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch index 123ebbe04..3e583a17f 100644 --- a/patches/server/0183-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0185-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -18,7 +18,7 @@ index b5b7f1db21a22f16f06ced775c8173f90e36a91c..33d9b5fb6897fefb0f7b9009df733934 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ab67708d127cb4309d40969fb8064360da5199b8..0d6385d74468307d4b9e151bf1ce8e0eaf86220b 100644 +index ff9bb8f21d6da7f8d3b0a726098227d95e6e3207..277c1be1ede46b50f865a2c1d1b38ab22cae9ef9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -214,6 +214,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0184-Big-dripleaf-tilt-delay.patch b/patches/server/0186-Big-dripleaf-tilt-delay.patch similarity index 96% rename from patches/server/0184-Big-dripleaf-tilt-delay.patch rename to patches/server/0186-Big-dripleaf-tilt-delay.patch index f9e982b45..91dfbb94b 100644 --- a/patches/server/0184-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0186-Big-dripleaf-tilt-delay.patch @@ -24,7 +24,7 @@ index 9e3f1441d62128535112621bf259c24f1a90595b..2535e6d71b690f8dfde41a7d9cb76b6f if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d6385d74468307d4b9e151bf1ce8e0eaf86220b..366f19dd6622dec26d856ca1e7f0ee42f37da038 100644 +index 277c1be1ede46b50f865a2c1d1b38ab22cae9ef9..133ffdbb1d042bca487b2fe74e66a6dad9165966 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -778,6 +778,22 @@ public class PurpurWorldConfig { diff --git a/patches/server/0185-Player-ridable-in-water-option.patch b/patches/server/0187-Player-ridable-in-water-option.patch similarity index 96% rename from patches/server/0185-Player-ridable-in-water-option.patch rename to patches/server/0187-Player-ridable-in-water-option.patch index aa55c4630..cac1c9248 100644 --- a/patches/server/0185-Player-ridable-in-water-option.patch +++ b/patches/server/0187-Player-ridable-in-water-option.patch @@ -23,7 +23,7 @@ index 81f88c838f35860fdb7d7f62ed1b98f5734c766e..d7d5ce7ea223248ebda0a3e4b104baed if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 366f19dd6622dec26d856ca1e7f0ee42f37da038..e70f67fe1c038490983026fc21ccaed8b761d279 100644 +index 133ffdbb1d042bca487b2fe74e66a6dad9165966..5ae832b108c05e8940e2dc0c7d6094742915fb1e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -387,6 +387,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 90% rename from patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 71e940e77..b9516e183 100644 --- a/patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0188-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to disable Enderman teleport on projectile hit diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 6f3ccd2d437bacf7a7e828b62b51533eebc82b02..dcc3b145aaaa208f4949d673333625928468717c 100644 +index 7adfc08d511efcb69f954fc1f4b4eba90b9d15df..5d2ac5334899935e032f7c882710914906ddc94d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -424,6 +424,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -430,6 +430,7 @@ public class EnderMan extends Monster implements NeutralMob { } else { flag1 = flag && this.hurtWithCleanWater(world, source, (ThrownPotion) source.getDirectEntity(), amount); @@ -17,7 +17,7 @@ index 6f3ccd2d437bacf7a7e828b62b51533eebc82b02..dcc3b145aaaa208f4949d67333362592 for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ef15b1c0502634da03ed239ee9bc12b395c58693..21841f15aae1816dab5a3fb81148e54877a3419c 100644 +index 5ae832b108c05e8940e2dc0c7d6094742915fb1e..36d6d52a83f4b5b9273661d816424025f76f4596 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1455,6 +1455,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0187-Add-compass-command.patch b/patches/server/0189-Add-compass-command.patch similarity index 99% rename from patches/server/0187-Add-compass-command.patch rename to patches/server/0189-Add-compass-command.patch index 058dc085e..1765a9cb9 100644 --- a/patches/server/0187-Add-compass-command.patch +++ b/patches/server/0189-Add-compass-command.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add compass command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 0090243f7e1a966534e489cebb88d71d9cbab7bb..d8ee4422a13c7f09b84e9bbe8b57f0c139caac32 100644 +index 068fa5baf5b031358a1ff71e7ac376448c0ec95c..eedb3707523b47ab79db326f6d7382cca60c5393 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -260,6 +260,7 @@ public class Commands { diff --git a/patches/server/0188-Toggle-for-kinetic-damage.patch b/patches/server/0190-Toggle-for-kinetic-damage.patch similarity index 88% rename from patches/server/0188-Toggle-for-kinetic-damage.patch rename to patches/server/0190-Toggle-for-kinetic-damage.patch index 90b3ae885..419982cd2 100644 --- a/patches/server/0188-Toggle-for-kinetic-damage.patch +++ b/patches/server/0190-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b3be740bbffc16622da64d7ea609adacdab176bd..58be94a164c3413dad4b3a7bb1a1544edb88e9ba 100644 +index 3dade05c9299f339f94b8a29475dc5ba646b26c8..c23ca02f9adbbbf32b0bf9f8a82f55781468aade 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3201,6 +3201,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3228,6 +3228,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f > 0.0F) { this.playSound(this.getFallDamageSound((int) f), 1.0F, 1.0F); @@ -17,7 +17,7 @@ index b3be740bbffc16622da64d7ea609adacdab176bd..58be94a164c3413dad4b3a7bb1a1544e } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b621943e9cdeaa6a547216c9525978e6d0f7c02f..ff6da1fcbae5c41aeaf4a21eee77541f5e80df43 100644 +index 74515ad36cae0e838224caee3853d2f3d8bc0b11..1522df03dab1e9e8e6d471f62067a15350b909d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -182,11 +182,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0189-Add-Option-for-disable-observer-clocks.patch b/patches/server/0191-Add-Option-for-disable-observer-clocks.patch similarity index 95% rename from patches/server/0189-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0191-Add-Option-for-disable-observer-clocks.patch index 4cbb1e122..ce40ddde1 100644 --- a/patches/server/0189-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0191-Add-Option-for-disable-observer-clocks.patch @@ -18,7 +18,7 @@ index 93ed9406c34804831b86d006dbd6087db9948f08..26cb9990b91991e0a2eadc2dcbbf229e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff6da1fcbae5c41aeaf4a21eee77541f5e80df43..7066d1b294ef907cdfe49359a610a48171fb1ba8 100644 +index 1522df03dab1e9e8e6d471f62067a15350b909d9..1dcd7031ba7f5e759b98533736218c5c0e28be23 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -362,6 +362,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch similarity index 96% rename from patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch index f7784531d..a8b06aa05 100644 --- a/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0192-Customizeable-Zombie-Villager-curing-times.patch @@ -18,7 +18,7 @@ index 7298ba35cb27269e778de6b265933baed3077b36..623e8ef53d6336b3e3c83fd37eda1324 return InteractionResult.SUCCESS_SERVER; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3aa4cc24ca6465c2cc475c9473548f0b6680d51f..e12bbc0974890eea0f5fbeebeeb0a713e8e698d2 100644 +index 1dcd7031ba7f5e759b98533736218c5c0e28be23..2710709349c9d32b4b7e83bbb1cc9b1fde29310a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2961,6 +2961,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0191-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 96% rename from patches/server/0191-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch index c3eb1f40e..3f92a8a7a 100644 --- a/patches/server/0191-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0193-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,7 +30,7 @@ index d82c62cdb219cee0bbc3083e38e18b7615ad09ef..4c5bc71fef307d13b640e534ace0b441 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5b0bea76d109d7dcf3fe20aab5e2d0e7efb87713..019ca3f4a506b5b964f78b4efb79111ea1b5fd76 100644 +index 2710709349c9d32b4b7e83bbb1cc9b1fde29310a..afad9ec6ea76ba66cad2f895ce04cc704e8d3235 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -964,9 +964,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch similarity index 89% rename from patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch index 5f02cb3ce..368feb102 100644 --- a/patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0194-Toggle-for-Wither-s-spawn-sound.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for Wither's spawn sound diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 780aa3e8580f9df24c56af1f2eb474d3ccf7a823..8f78d9a45770bd7114c6d08a4e818442e329eee4 100644 +index f19d9fc0a993739e34a2d55bbab9f4736f7688b8..a1be1d02bfd8155752e5ea66aa2aaa29361a213a 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -424,7 +424,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -431,7 +431,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { } // CraftBukkit end @@ -18,7 +18,7 @@ index 780aa3e8580f9df24c56af1f2eb474d3ccf7a823..8f78d9a45770bd7114c6d08a4e818442 // worldserver.globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = world.getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 89a4e9f78f71f2b3e853a555bb8d8284cf6a6cb0..9111f026f6499eeada8a7c22d3c433e41a72d869 100644 +index afad9ec6ea76ba66cad2f895ce04cc704e8d3235..5ffcb25ea8c96c5087ece87a67802e25312cccc9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2796,6 +2796,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0193-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch similarity index 95% rename from patches/server/0193-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch index afb026cda..bcfa418ed 100644 --- a/patches/server/0193-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0195-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,7 +18,7 @@ index c045b1cccf0047dbef8c04d5a28d31d53389054f..bbfd8f5d404d0add94f0d8ac89a29646 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 28a444c0ed6b8dffedf00a4bc95d6351d4a08212..a2ee88ca23bbaad1e4566ae3b18d0ef549636580 100644 +index 5ffcb25ea8c96c5087ece87a67802e25312cccc9..081a8a388b354210f3ea04e8a4b6428fc97a9d84 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -805,6 +805,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0194-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 96% rename from patches/server/0194-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch index e1d3da093..c1b9d0408 100644 --- a/patches/server/0194-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0196-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,7 +18,7 @@ index 6c0b6abb1698fac9bb902f695b725d4ab783ee90..091e3c3514fcb378b68098114106d09f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a2ee88ca23bbaad1e4566ae3b18d0ef549636580..eb09366f743a2f471f126259e2ef608d14639377 100644 +index 081a8a388b354210f3ea04e8a4b6428fc97a9d84..55d2c1729f639ef2bbb41e72ddd0945dd5662aaf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -397,6 +397,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0195-Conduit-behavior-configuration.patch b/patches/server/0197-Conduit-behavior-configuration.patch similarity index 98% rename from patches/server/0195-Conduit-behavior-configuration.patch rename to patches/server/0197-Conduit-behavior-configuration.patch index ec1b9eb5d..3cffc1546 100644 --- a/patches/server/0195-Conduit-behavior-configuration.patch +++ b/patches/server/0197-Conduit-behavior-configuration.patch @@ -97,7 +97,7 @@ index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b36 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 915dcd176f058dd04ea980fd3790ac339ffd2de4..7161b90c101062bd9e30639c782c514aac15202c 100644 +index 55d2c1729f639ef2bbb41e72ddd0945dd5662aaf..d42047c0e5495a52d324eb6ec2f293bec4b6c472 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -3030,4 +3030,27 @@ public class PurpurWorldConfig { diff --git a/patches/server/0196-Cauldron-fill-chances.patch b/patches/server/0198-Cauldron-fill-chances.patch similarity index 97% rename from patches/server/0196-Cauldron-fill-chances.patch rename to patches/server/0198-Cauldron-fill-chances.patch index a563dbc50..3daf2f1ed 100644 --- a/patches/server/0196-Cauldron-fill-chances.patch +++ b/patches/server/0198-Cauldron-fill-chances.patch @@ -47,7 +47,7 @@ index 53cea36ec931de89e0060613acf87beb51dc16ec..fd5489993dca0f940da69e9163f78e5c if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7161b90c101062bd9e30639c782c514aac15202c..970954ee212526c767fe1dd84bbaaa459f071398 100644 +index d42047c0e5495a52d324eb6ec2f293bec4b6c472..7b9bf48039c457f95f23b4d0b80f095a65c55e22 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -3053,4 +3053,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0197-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 96% rename from patches/server/0197-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch index b9b8046b0..f69ddd658 100644 --- a/patches/server/0197-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0199-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,7 +18,7 @@ index c84fd369d92932903c76bb2012602617d3e2d213..f6291ff377b38cb84692a9fd564b4b1a && pathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 87374995aef0061ffbd64a1ee7a88e21935e6759..8392bed4344d6880b2e2a00e42e12b705095b3cd 100644 +index 7b9bf48039c457f95f23b4d0b80f095a65c55e22..3cf70e3e79b581d97a0e76e88075600aaa2af7d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -139,6 +139,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0198-Shulker-change-color-with-dye.patch b/patches/server/0200-Shulker-change-color-with-dye.patch similarity index 96% rename from patches/server/0198-Shulker-change-color-with-dye.patch rename to patches/server/0200-Shulker-change-color-with-dye.patch index a431c4ca3..539c8d324 100644 --- a/patches/server/0198-Shulker-change-color-with-dye.patch +++ b/patches/server/0200-Shulker-change-color-with-dye.patch @@ -29,7 +29,7 @@ index 79bf3d04fa2c7bcadfff08dc9a464e589866f7db..131c7d7e85a3d9ac0e485fd8e56bd419 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a2e3f6781ec6af4874d5c08d387f3e57409418cb..c74d3cec817ebedd2cb4cdb0d8781510335c6963 100644 +index 3cf70e3e79b581d97a0e76e88075600aaa2af7d4..cf0ca3f712e825898cda9ca0a8d6699195d6f26c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2318,6 +2318,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0199-Extended-OfflinePlayer-API.patch b/patches/server/0201-Extended-OfflinePlayer-API.patch similarity index 99% rename from patches/server/0199-Extended-OfflinePlayer-API.patch rename to patches/server/0201-Extended-OfflinePlayer-API.patch index 95a468bf4..3a73bd938 100644 --- a/patches/server/0199-Extended-OfflinePlayer-API.patch +++ b/patches/server/0201-Extended-OfflinePlayer-API.patch @@ -243,7 +243,7 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..a138e1b6b66d99f2035de054137a607a + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 67a3bc89c790a436310972f2fe08b73bafd01070..3d824ed7b53b30493d0fc1714fc1b247f4a9ad9c 100644 +index 6abf043faf27d1385ad45c264822a9f49974863d..7be5b26b3d9e4d38838ecca8f65f8671c3c17ed2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2775,6 +2775,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0200-Added-the-ability-to-add-combustible-items.patch b/patches/server/0202-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/server/0200-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0202-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/server/0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 90% rename from patches/server/0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index db2fa8ee9..9b6817cbb 100644 --- a/patches/server/0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0203-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 679066abd94261fc49b749a4e3dc91cc24d5cd5d..0188f1e9c571a6949f922c53047ccc32253454f5 100644 +index 139bc93411fb8bafedf283c92161bc5905e7e982..4c076428c85e66fae9bf658cc816c2f9ef6b47c4 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1281,6 +1281,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1295,6 +1295,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index 679066abd94261fc49b749a4e3dc91cc24d5cd5d..0188f1e9c571a6949f922c53047ccc32 this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1288,6 +1289,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1302,6 +1303,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -25,7 +25,7 @@ index 679066abd94261fc49b749a4e3dc91cc24d5cd5d..0188f1e9c571a6949f922c53047ccc32 // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cff0dfea430955ea4211d06ea2cff8db7ca4159a..316beb19c6ee2e5b1f2bd1e7b849992c69a26b94 100644 +index cf0ca3f712e825898cda9ca0a8d6699195d6f26c..16d2dbafb996932dd99edbe6eea37c7036f4b77e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -140,6 +140,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 97% rename from patches/server/0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index c2e00aabc..503fb7766 100644 --- a/patches/server/0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0204-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,7 +50,7 @@ index 66a07f7cbf1c1d6ecbe055cbf4f63eb07d93e90c..63d67d46d30ed8ed57cdc0e59b6cb6b7 .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 316beb19c6ee2e5b1f2bd1e7b849992c69a26b94..3083bfce93ea0b059c0abe823920eca75872f916 100644 +index 16d2dbafb996932dd99edbe6eea37c7036f4b77e..ea1314eb2ac0f8c1dd681b85951bcdd2cead1bf6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -765,6 +765,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0203-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch similarity index 94% rename from patches/server/0203-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch index b0a35cb5f..ff1898ae1 100644 --- a/patches/server/0203-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0205-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index 7315e604a2f9cb068eb5bbca744e44eeabac09c9..88eb3774f688bcff383efa7f113bd0b1 + // 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 37515387f91c9493dd259b677e9a6aa2dc19912d..35b9951554a41213003badfa38e6db7825097055 100644 +index abec164f413342bf1d2d25479ea8a42fce6a66c7..1e1b42f60679c8b8b27b3255feda4c6cf77d5536 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2093,6 +2093,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2094,6 +2094,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -48,7 +48,7 @@ index 37515387f91c9493dd259b677e9a6aa2dc19912d..35b9951554a41213003badfa38e6db78 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3083bfce93ea0b059c0abe823920eca75872f916..948712e75fe4f0083178a8f5bcd918e9fcabd8df 100644 +index ea1314eb2ac0f8c1dd681b85951bcdd2cead1bf6..e351feee5916492edebb92f9af47c87e582b239d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -404,6 +404,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 98% rename from patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch index d515a8f71..b12f651ba 100644 --- a/patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0206-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,7 +48,7 @@ index bcc6435c177189aa59a3fbe67795ae5092685133..fad0b8157a9c30a0e9b35fe32b6a9f2e public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4075b1c719007965d487a6c033dc7198bc4cfc08..7fd68ad9c8506d45e000172f8cc97eca33c3af3a 100644 +index e351feee5916492edebb92f9af47c87e582b239d..2fd6f601524f8fc748be73a38edf4df06c5e9459 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1358,6 +1358,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch similarity index 98% rename from patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch index 0d34eb3cb..2f132fc44 100644 --- a/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0207-Cows-naturally-aggressive-to-players-chance.patch @@ -61,7 +61,7 @@ index 4ad3571403ee8044d17f53987bd47b6c43d42f0e..380bd41336d8d24bffd4e10885e46c95 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f3029600ef5eb73166a220f405bf5f8b62933436..4a3b4711aa82149299fb88301d69a23ada34e116 100644 +index 2fd6f601524f8fc748be73a38edf4df06c5e9459..26c7ccd547430f04dad6495ba7db5be5c0349a8f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1290,7 +1290,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 90% rename from patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch index 579927300..8e0f6b390 100644 --- a/patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0208-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 9efd57ffc088e5239a0c94bd8da30c6fd32a5ad6..ba42a5643f3cae5dcf392927733fa79e2b47f822 100644 +index fd319cf5ac1a3aa8f3562bbab4bf2a8e15b10ae2..b2ea56e3e2a0b7534bd9e16106402c6581057e43 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1073,6 +1073,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1080,6 +1080,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { @@ -22,7 +22,7 @@ index 9efd57ffc088e5239a0c94bd8da30c6fd32a5ad6..ba42a5643f3cae5dcf392927733fa79e this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0522131a030e9a461716e0696939312169032914..6f2f173c386ffba9b2e104612ee5e9c3c8957eb0 100644 +index 26c7ccd547430f04dad6495ba7db5be5c0349a8f..efecfd2379d5e955d78c48fb9771197f52263fd6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -784,6 +784,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0207-Halloween-options-and-optimizations.patch b/patches/server/0209-Halloween-options-and-optimizations.patch similarity index 89% rename from patches/server/0207-Halloween-options-and-optimizations.patch rename to patches/server/0209-Halloween-options-and-optimizations.patch index aa6907eab..7eff0c6eb 100644 --- a/patches/server/0207-Halloween-options-and-optimizations.patch +++ b/patches/server/0209-Halloween-options-and-optimizations.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Halloween options and optimizations diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index a65286044be79e351bd5c80114a2f9fc5dacc11b..25c877481f3006afcdeb3634739e8f37accd27cd 100644 +index 29445156f8660d84bb9840c6ac85e0e2188f443d..7b773edc6fa661e75964a80dcb6820d1b5def54d 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -305,7 +305,7 @@ public class Bat extends AmbientCreature { @@ -17,18 +17,14 @@ index a65286044be79e351bd5c80114a2f9fc5dacc11b..25c877481f3006afcdeb3634739e8f37 b0 = 7; } else if (random.nextBoolean()) { return false; -@@ -315,6 +315,11 @@ public class Bat extends AmbientCreature { - } - } - -+ // Pufferfish start - only check for spooky season once an hour -+ private static boolean isSpookySeason = false; -+ private static final int ONE_HOUR = 20 * 60 * 60; -+ private static int lastSpookyCheck = -ONE_HOUR; +@@ -319,6 +319,7 @@ public class Bat extends AmbientCreature { + private static boolean isSpookySeason = false; + private static final int ONE_HOUR = 20 * 60 * 60; + private static int lastSpookyCheck = -ONE_HOUR; + public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur private static boolean isHalloween() { + if (net.minecraft.server.MinecraftServer.currentTick - lastSpookyCheck > ONE_HOUR) { LocalDate localdate = LocalDate.now(); - int i = localdate.get(ChronoField.DAY_OF_MONTH); diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java index bbe4c1cb4244ab813ef7d56c46c3ae62701c4824..2cadbc0d56908ca978e1735eff07f5e634548606 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -64,7 +60,7 @@ index b34dec421adc3ce56c0720a839a43ce42faeefaf..98e7b57a45ae3cae704c65ec6db5f715 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 55574dcdf112a3310c23425060009b1394449c3a..0e698fa909db87571ed4985840517abba39ab668 100644 +index efecfd2379d5e955d78c48fb9771197f52263fd6..8c2fa8ef4630f69998cb8e893a94a6470b035506 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1721,6 +1721,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0208-Config-for-grindstones.patch b/patches/server/0210-Config-for-grindstones.patch similarity index 100% rename from patches/server/0208-Config-for-grindstones.patch rename to patches/server/0210-Config-for-grindstones.patch diff --git a/patches/server/0209-UPnP-Port-Forwarding.patch b/patches/server/0211-UPnP-Port-Forwarding.patch similarity index 93% rename from patches/server/0209-UPnP-Port-Forwarding.patch rename to patches/server/0211-UPnP-Port-Forwarding.patch index 365a26172..e9b26ac94 100644 --- a/patches/server/0209-UPnP-Port-Forwarding.patch +++ b/patches/server/0211-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 3ae09a3459c804c57ce08001216120ee2d0fead2..3901b66cb8f3c2629b8f6094160498610e7686b9 100644 +index 6d843cf9b326ded0152702802e2c7bd94b0fe936..93a6edc65513753db7ee4127451a495ea3f45548 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -330,6 +330,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop, B @@ -421,7 +421,7 @@ index 0d22a05cf611569d69a26b04a6db01dffc4ad9f3..91768d49c3cbef0a135cfd0e60bdb4e8 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 4f7b2511a401e0c8818f11fba7b39ef2f1b4797f..7f196e8a8b5094375c9b13fe6e7311a3450dbb5f 100644 +index 89dcb65db9993cfba6a6563eb9ad39501fac5bde..752f44048ed4f61ce8e2cce67d0680b7837cdd29 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -120,6 +120,11 @@ public class Goat extends Animal { @@ -549,7 +549,7 @@ index 5ffb2ca8dd4cd1d32f7d239a767ac68d01ab3d3a..2b7b0d766ceba4b2261be2d8308170ae 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 8f78d9a45770bd7114c6d08a4e818442e329eee4..ac8f05e20e810e61e4c77aa7a6e41008779563dc 100644 +index a1be1d02bfd8155752e5ea66aa2aaa29361a213a..5e134b3cf939fe396c060797883613812ad73c31 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -135,6 +135,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -645,7 +645,7 @@ index a0c76ffa16edffdfa75fd539e58282d3115f473b..a000304e3ac4c34b020f7457aa2589c8 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index dcc3b145aaaa208f4949d673333625928468717c..1016ddd75b783484865fa814bb267eff9ae2ceb5 100644 +index 5d2ac5334899935e032f7c882710914906ddc94d..476aaa0d9899eb56ea29b1fcf15565b58f78479d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -118,6 +118,11 @@ public class EnderMan extends Monster implements NeutralMob { @@ -1077,7 +1077,7 @@ index 4cd470db5a427e0c0bec0fe2a7c7307cac47b39b..8c3271dcc8c9aa58e2e007eba282c11e 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 f3f77e5e219d6a3a831ac9b1a642e77ec67ce770..7520ab7ec5902f083aefd68895a7d9c47bf4e418 100644 +index c01813b752ee2d23062806cf14b586807cc056d3..9550fd212bdf53a566940a42d85cc3f8a729b20b 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 @@ -130,6 +130,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1093,7 +1093,7 @@ index f3f77e5e219d6a3a831ac9b1a642e77ec67ce770..7520ab7ec5902f083aefd68895a7d9c4 public boolean canBeLeashed() { return true; 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 6cef7eb84ddb02a273024f6b30bc7e33712d742a..7aca25b8d898b97fd331d61ab901f2ebc0ed7039 100644 +index 39cf09e03cd178471757e51334b07b4daffb43be..20608fb46a0af85739e3c0caa843c1a9d45c9659 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -124,6 +124,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1125,10 +1125,10 @@ index 9c196b0cf49cb6f69bd17748fd13ce5960094f88..bc3b0eb21200eae7e419b2571871b36f return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.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 0504d4d562205d6628cef970ef1a2aedcde974c9..0f79a5560a6bacde786a1eacbdcbe0d946e03674 100644 +index b2ea56e3e2a0b7534bd9e16106402c6581057e43..32479bf58040ee980b20e99bb384bb84ef92624f 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -196,6 +196,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -198,6 +198,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerTakeDamageFromWater; } diff --git a/patches/server/0217-Grindstone-API.patch b/patches/server/0219-Grindstone-API.patch similarity index 100% rename from patches/server/0217-Grindstone-API.patch rename to patches/server/0219-Grindstone-API.patch diff --git a/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0220-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 96% rename from patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0220-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index dff0db32f..eebdee1ee 100644 --- a/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0220-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -34,7 +34,7 @@ index eb324fda54ada3ed7941713a784ed2d686ec8c4b..09cc76f3fee4a767c9ec3fa592f2c3c6 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java -index ab58c4dbe9deb8807478a8e66e01f81a30221532..4f64011262eef6a24a8e8595ace1e4d1d82923e5 100644 +index 3f7440eb164ea7593844de6c496ee1a998759347..33c27909290ff3ab483226cf65b1a1bc2e983cbc 100644 --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java @@ -216,4 +216,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @@ -74,7 +74,7 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce2c25871cacd7de0f22ac8942ada42daab2ebab..46c55ace74524aacaba1bbc453b16821b7922e0c 100644 +index 744730583ec613adc8e31565780fbcae72a9b69c..931e2a3d04e2ec43b5389144c675914cb595b04d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -507,6 +507,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0221-Turtle-eggs-random-tick-crack-chance.patch similarity index 91% rename from patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0221-Turtle-eggs-random-tick-crack-chance.patch index 8efd358f7..2f552ce6f 100644 --- a/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0221-Turtle-eggs-random-tick-crack-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Turtle eggs random tick crack chance diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 4eb0f7a9cf6b12c02d0bd42980ae302dd56c1b8a..e1c984ec64565584c78fe0a6c7db3537108bac59 100644 +index a265c5bf1a4d6f3c84cad20f9b3c285dcebd0372..72c89f14977844e1460e9a914f39e896c9d498fd 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java @@ -171,7 +171,7 @@ public class TurtleEggBlock extends Block { @@ -18,7 +18,7 @@ index 4eb0f7a9cf6b12c02d0bd42980ae302dd56c1b8a..e1c984ec64565584c78fe0a6c7db3537 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46c55ace74524aacaba1bbc453b16821b7922e0c..212ae6988d67fac1354ebd6a8cb7cd252f261c2f 100644 +index 931e2a3d04e2ec43b5389144c675914cb595b04d..0e3c1b37d386a7115cdfa027a5afb235ec4d363f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1034,11 +1034,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0220-Mob-head-visibility-percent.patch b/patches/server/0222-Mob-head-visibility-percent.patch similarity index 96% rename from patches/server/0220-Mob-head-visibility-percent.patch rename to patches/server/0222-Mob-head-visibility-percent.patch index bb98ce0ce..0949000c0 100644 --- a/patches/server/0220-Mob-head-visibility-percent.patch +++ b/patches/server/0222-Mob-head-visibility-percent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d3adb23808c110862cd7090229c459deb6a34fa2..ccde673f203ca17f726c67d009ea4cf4eb9040ac 100644 +index c23ca02f9adbbbf32b0bf9f8a82f55781468aade..19cc0ba32472384bf10662d41fecf23ebfc9876c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1069,9 +1069,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1082,9 +1082,20 @@ public abstract class LivingEntity extends Entity implements Attackable { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); @@ -32,7 +32,7 @@ index d3adb23808c110862cd7090229c459deb6a34fa2..ccde673f203ca17f726c67d009ea4cf4 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 535f310811ae11878d3a6c5bd90c5b1ffd1097ca..516d20e07dba216e82cbbba6aea67a8b758de512 100644 +index 0e3c1b37d386a7115cdfa027a5afb235ec4d363f..b49d8ef5fe4a3b4bd99124cca2e5e661762552ff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1392,6 +1392,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0221-Configurable-valid-characters-for-usernames.patch b/patches/server/0223-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0221-Configurable-valid-characters-for-usernames.patch rename to patches/server/0223-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0222-Stop-bees-from-dying-after-stinging.patch b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch similarity index 95% rename from patches/server/0222-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0224-Stop-bees-from-dying-after-stinging.patch index 65eddc8d3..e69c912c4 100644 --- a/patches/server/0222-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch @@ -17,7 +17,7 @@ index db382cf32d215f1b98b960e0c1a8dfaf6e19422f..4b32a783cabf05f5bae0dba22eea8ac7 ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7863dda1663e2d6794e0c5fa6ee4fe1628c5afd3..cd53426663b15a1c077b27db6fc28f722cd2bb41 100644 +index b49d8ef5fe4a3b4bd99124cca2e5e661762552ff..01306ed51e4ca205bc58c171e6df5594c96aa22e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1153,6 +1153,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 95% rename from patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 1290313bd..148810f80 100644 --- a/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3901b66cb8f3c2629b8f6094160498610e7686b9..4c46d084befe48ec1f98a956033a58ee2f2c0bbc 100644 +index 93a6edc65513753db7ee4127451a495ea3f45548..66cbaad4c92750ecf0c74ab52e6eae4a818da972 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1168,6 +1168,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> { diff --git a/patches/server/0229-Configurable-minimum-demand-for-trades.patch b/patches/server/0231-Configurable-minimum-demand-for-trades.patch similarity index 92% rename from patches/server/0229-Configurable-minimum-demand-for-trades.patch rename to patches/server/0231-Configurable-minimum-demand-for-trades.patch index a258a0aec..699196ea1 100644 --- a/patches/server/0229-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0231-Configurable-minimum-demand-for-trades.patch @@ -9,10 +9,10 @@ This patch adds a config option to allow the minimum demand to instead be configurable. diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 0f79a5560a6bacde786a1eacbdcbe0d946e03674..e9032364c78514e7a0a2aa162ba564dc0598a3c4 100644 +index 32479bf58040ee980b20e99bb384bb84ef92624f..5943b0c059b41ab84d7841a764ff2ace6e6ca89b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -540,7 +540,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -547,7 +547,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler while (iterator.hasNext()) { MerchantOffer merchantrecipe = (MerchantOffer) iterator.next(); @@ -40,7 +40,7 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b16d7e3f76d05fd834a62c564b2b8688397c2832..c49e93d6afd7fe6c7c8397154a9580ab023ed529 100644 +index af9e6ee31e0ad8436a0a43b6d914445ca7737d9d..70258ae10d19f0aac01e3a550ec0d538f598d077 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2905,6 +2905,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0230-Lobotomize-stuck-villagers.patch b/patches/server/0232-Lobotomize-stuck-villagers.patch similarity index 92% rename from patches/server/0230-Lobotomize-stuck-villagers.patch rename to patches/server/0232-Lobotomize-stuck-villagers.patch index d1991cc28..54e859285 100644 --- a/patches/server/0230-Lobotomize-stuck-villagers.patch +++ b/patches/server/0232-Lobotomize-stuck-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index e9032364c78514e7a0a2aa162ba564dc0598a3c4..f787aec8bfa291447b3bca297239f44a9fe342a7 100644 +index 5943b0c059b41ab84d7841a764ff2ace6e6ca89b..ca5504ba8a10a3ed384cb9f5a3c550466c2688f1 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -141,6 +141,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -15,9 +15,9 @@ index e9032364c78514e7a0a2aa162ba564dc0598a3c4..f787aec8bfa291447b3bca297239f44a + private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur + private int notLobotomizedCount = 0; // Purpur - public Villager(EntityType entityType, Level world) { - this(entityType, world, VillagerType.PLAINS); -@@ -201,6 +203,48 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + public long nextGolemPanic = -1; // Pufferfish + +@@ -203,6 +205,48 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return this.level().purpurConfig.villagerAlwaysDropExp; } @@ -66,7 +66,7 @@ index e9032364c78514e7a0a2aa162ba564dc0598a3c4..f787aec8bfa291447b3bca297239f44a @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -295,11 +339,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -298,11 +342,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper start - EAR 2 this.customServerAiStep(world, false); } @@ -84,9 +84,9 @@ index e9032364c78514e7a0a2aa162ba564dc0598a3c4..f787aec8bfa291447b3bca297239f44a + this.isLobotomized = false; + } + // Purpur end - if (!inactive && (getRider() == null || !this.isControllable())) this.getBrain().tick(world, this); // Purpur - gameprofilerfiller.pop(); - if (this.assignProfessionWhenSpawned) { + // Pufferfish start + if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { + this.getBrain().tick(world, this); // Paper // Purpur diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java index 8e895d6f84f7d84b219f2424909dd42e5f08dec4..53dcce0701d713c5dd097340a91b8be4806de4b8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java @@ -104,7 +104,7 @@ index 8e895d6f84f7d84b219f2424909dd42e5f08dec4..53dcce0701d713c5dd097340a91b8be4 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c49e93d6afd7fe6c7c8397154a9580ab023ed529..a1c3e7d57d716f785e9ba677c8f259ffe030a165 100644 +index 70258ae10d19f0aac01e3a550ec0d538f598d077..f23ac725c57006176564c97b30d348551dd9444f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2906,6 +2906,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0231-Option-for-villager-display-trade-item.patch b/patches/server/0233-Option-for-villager-display-trade-item.patch similarity index 96% rename from patches/server/0231-Option-for-villager-display-trade-item.patch rename to patches/server/0233-Option-for-villager-display-trade-item.patch index d4b820b7d..49e1c4a79 100644 --- a/patches/server/0231-Option-for-villager-display-trade-item.patch +++ b/patches/server/0233-Option-for-villager-display-trade-item.patch @@ -17,7 +17,7 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a1c3e7d57d716f785e9ba677c8f259ffe030a165..18874f9a5bc41d312059c553ae4d188c76b94936 100644 +index f23ac725c57006176564c97b30d348551dd9444f..fc357473f30258a54a2ee36dc0d63c2a52f2eaea 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2909,6 +2909,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 95% rename from patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 35918ac1a..ac1de5cf8 100644 --- a/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,7 +17,7 @@ index 8c4532a250f8679d729a35c17e9b5bd339264450..2b8336bd88641cfb29e94c8f01abfbdb } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 19624a2e4f6cf83b9e43f338cb8fcafb2dfa562e..e414b6d00b67d902ac782753a3c1ad84228de3d1 100644 +index fc357473f30258a54a2ee36dc0d63c2a52f2eaea..f4584785ce8b16d3acc27c848eb79cc55bf08a18 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1021,8 +1021,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch similarity index 93% rename from patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch index a2ef132f8..e9dbed438 100644 --- a/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9790c3ad54ff28ccb85db224b799bbdb08a34ba5..199a2619de1b6754edf89ffe0c63c0e5104e3055 100644 +index 19cc0ba32472384bf10662d41fecf23ebfc9876c..71f735d2c91d08ab652ddc8f3fe37bbb3b425ba4 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1601,13 +1601,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1614,13 +1614,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entity1 instanceof net.minecraft.world.entity.player.Player) { net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; @@ -38,7 +38,7 @@ index bf84c9664ca6d6c3d862e592c39bcc59374b63fe..051ffc663317fe5a4fafe0750c89fafd // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e414b6d00b67d902ac782753a3c1ad84228de3d1..5e8476fd89a1cf12ec5baa94c41fda8c494db694 100644 +index f4584785ce8b16d3acc27c848eb79cc55bf08a18..74373b7875906bd79595ca02b86add222d9645e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -144,6 +144,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0234-Anvil-repair-damage-options.patch b/patches/server/0236-Anvil-repair-damage-options.patch similarity index 98% rename from patches/server/0234-Anvil-repair-damage-options.patch rename to patches/server/0236-Anvil-repair-damage-options.patch index d8cfcd68b..c6788bfe3 100644 --- a/patches/server/0234-Anvil-repair-damage-options.patch +++ b/patches/server/0236-Anvil-repair-damage-options.patch @@ -63,7 +63,7 @@ index 50c907c962f936d2035bb7550750cdbd220b29c2..f9a2d2d4f798efa0d691996ec5ff7fe0 protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (!world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e8476fd89a1cf12ec5baa94c41fda8c494db694..68585a9a1a1c62e7e6b075c6b12ca0397d43eb5a 100644 +index 74373b7875906bd79595ca02b86add222d9645e0..f34de537ab3bd3727572313f7e8004703c73f641 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -788,9 +788,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 96% rename from patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch index d7aca65c2..4827bbbd0 100644 --- a/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,7 +24,7 @@ index 72c89f14977844e1460e9a914f39e896c9d498fd..f1dfb23160ff70e0da4dd2af2d83e879 return world.purpurConfig.turtleEggsBypassMobGriefing ^ world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index def9267df2cf09e2f2798581e7bb98ee358f7f16..a81fdeb38abaf03eb7231ed2ba4e8b693e378a4f 100644 +index f34de537ab3bd3727572313f7e8004703c73f641..a50e634a83234a3396a5e1471706f77dcfbb5d7c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1049,12 +1049,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0236-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0238-Add-toggle-for-enchant-level-clamping.patch similarity index 100% rename from patches/server/0236-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0238-Add-toggle-for-enchant-level-clamping.patch diff --git a/patches/server/0237-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0239-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0237-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0239-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch similarity index 91% rename from patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch index 3d76570dd..ff77f240d 100644 --- a/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index f787aec8bfa291447b3bca297239f44a9fe342a7..38594d3f520b4d75db441cfdde121ac65d2295cc 100644 +index ca5504ba8a10a3ed384cb9f5a3c550466c2688f1..0ee456972923e90905732ffc5d77bb027cf6c0fc 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1066,6 +1066,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1073,6 +1073,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { @@ -18,7 +18,7 @@ index f787aec8bfa291447b3bca297239f44a9fe342a7..38594d3f520b4d75db441cfdde121ac6 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e1fb914b6569d3061321cfe9a42b873b9aee247c..c57b4ed2f136c290ee5a323bd343ddc04bd7e60a 100644 +index a50e634a83234a3396a5e1471706f77dcfbb5d7c..011ac10466da8720800f2764a316a9cc9bb50fd9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2920,6 +2920,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0239-Stonecutter-damage.patch b/patches/server/0241-Stonecutter-damage.patch similarity index 97% rename from patches/server/0239-Stonecutter-damage.patch rename to patches/server/0241-Stonecutter-damage.patch index f0b810f67..bb9114b57 100644 --- a/patches/server/0239-Stonecutter-damage.patch +++ b/patches/server/0241-Stonecutter-damage.patch @@ -115,7 +115,7 @@ index f6291ff377b38cb84692a9fd564b4b1a9780cf4f..224896124706764412033c8726c822e1 } else if (blockState.is(Blocks.HONEY_BLOCK)) { return PathType.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 26d7e7ace4491c444c31dc11359427259c04f93c..1f22e7cf584bf7361f3ca078b9935a096d1acba6 100644 +index e3013916952012e69a23ac2efe9fc5e31a2b3d87..763d06265c7d0000e4c641c3aaba785bb0efb23e 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1140,7 +1140,7 @@ public class CraftEventFactory { @@ -143,7 +143,7 @@ index 2090ecfebe8bc164239d198c1c50b134c7bc60c5..dba6a69891f50ba057187a8138ff227a public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3bfdb3c2c1f67a1281cfca44eb1eae6c888d8e92..52cb5982fc9550c5aea98b6926fbefbe32051b3c 100644 +index 011ac10466da8720800f2764a316a9cc9bb50fd9..30b11ecbf75e5a4752d6d117f738828273b63b2f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1044,6 +1044,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch similarity index 95% rename from patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch index 1ce277c74..f6ee0cdc9 100644 --- a/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch @@ -18,7 +18,7 @@ index 7ffdcf18bf4bd8b5325c76945b2d80ca3fe52958..dfa931316fde0b2e80068a0edd1427ff } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 52cb5982fc9550c5aea98b6926fbefbe32051b3c..21898260e674dc1508a9c0689479be36826834b6 100644 +index 30b11ecbf75e5a4752d6d117f738828273b63b2f..8893ce54385e8b6d9de6b87ebf203efde140fff4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -985,6 +985,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0241-Add-config-for-snow-on-blue-ice.patch b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch similarity index 95% rename from patches/server/0241-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0243-Add-config-for-snow-on-blue-ice.patch index a5bfa21c1..31a57db21 100644 --- a/patches/server/0241-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch @@ -22,7 +22,7 @@ index 9908a0b5b1fec5f9de518a733f7abbbff7e1a9f9..0ad444cf7f798f63e9140a42c5d5d8ca } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 21898260e674dc1508a9c0689479be36826834b6..7ac4f4f07fc6a7421706526d940ed22c28c2cf8d 100644 +index 8893ce54385e8b6d9de6b87ebf203efde140fff4..4a6646711c1aa32a7123396126933d74d2cb5173 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -966,9 +966,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0242-Skeletons-eat-wither-roses.patch b/patches/server/0244-Skeletons-eat-wither-roses.patch similarity index 98% rename from patches/server/0242-Skeletons-eat-wither-roses.patch rename to patches/server/0244-Skeletons-eat-wither-roses.patch index 36f06db57..d061e8efc 100644 --- a/patches/server/0242-Skeletons-eat-wither-roses.patch +++ b/patches/server/0244-Skeletons-eat-wither-roses.patch @@ -90,7 +90,7 @@ index 61b5f27c1125ed1b183dd3b86b44a10b7098f91c..3cbe4c1ed514936a00e0181cb1e647fb + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec4ceb85458391697d348030ea7775f2cfa7caeb..61420c97c19eb7b72cb80d2b3c5170831f9c919a 100644 +index 4a6646711c1aa32a7123396126933d74d2cb5173..647852226244c862735c113e16fcf4410d39698d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2580,6 +2580,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0243-Enchantment-Table-Persists-Lapis.patch b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch similarity index 98% rename from patches/server/0243-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0245-Enchantment-Table-Persists-Lapis.patch index 4b8b22884..7cc5ca196 100644 --- a/patches/server/0243-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch @@ -136,7 +136,7 @@ index 39aac959775afeaeea211f21d498cb0ddf0a3fcb..6349a342c023f378af431a73a62fb017 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 61420c97c19eb7b72cb80d2b3c5170831f9c919a..7cee836cbc33fcc604fbb864d38315be2e56ceb8 100644 +index 647852226244c862735c113e16fcf4410d39698d..37dc3ba688e546f3feb64927134b6ef926929a5f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1556,6 +1556,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 100% rename from patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch diff --git a/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch similarity index 95% rename from patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch index 4e201b760..cadf9a2bb 100644 --- a/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,7 +18,7 @@ index 0e05bfef55dcacb50766bba8328ffeb8a5394c31..e00fcea07e74de647c26ff9eb32bc682 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9b777b356044241951fed1990e166735100ff1fb..92d6494169e34d5d7c29dd60835c647ce0dd36df 100644 +index 37dc3ba688e546f3feb64927134b6ef926929a5f..1b55aacef555565308b9182a7664bed4d98ac18c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1023,6 +1023,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0246-Config-to-not-let-coral-die.patch b/patches/server/0248-Config-to-not-let-coral-die.patch similarity index 96% rename from patches/server/0246-Config-to-not-let-coral-die.patch rename to patches/server/0248-Config-to-not-let-coral-die.patch index 4145370bc..0231549f0 100644 --- a/patches/server/0246-Config-to-not-let-coral-die.patch +++ b/patches/server/0248-Config-to-not-let-coral-die.patch @@ -29,7 +29,7 @@ index a59b23f4062fa896836dec72cbd5097411774ad1..c526ea13a726624adaa654f09ff84c89 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 92d6494169e34d5d7c29dd60835c647ce0dd36df..26b8f6f80e06e5c71c41c438e96de84e4cd59024 100644 +index 1b55aacef555565308b9182a7664bed4d98ac18c..e13d1e6d15cdfc58f4655ff288d9393e4c134a51 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -872,6 +872,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0247-Add-local-difficulty-api.patch b/patches/server/0249-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0247-Add-local-difficulty-api.patch rename to patches/server/0249-Add-local-difficulty-api.patch diff --git a/patches/server/0248-Add-toggle-for-RNG-manipulation.patch b/patches/server/0250-Add-toggle-for-RNG-manipulation.patch similarity index 95% rename from patches/server/0248-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0250-Add-toggle-for-RNG-manipulation.patch index a71330b30..df00ac4b4 100644 --- a/patches/server/0248-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0250-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f271660fb1cdace49ec050fb1ea55e3791336eba..9d81ae0320426f20d7078a3d1fe8b3ff31ccfebc 100644 +index c1ba5eab15bb4b7599c1e5e23b90dfb361af93b6..2b612bfe6da7cc6d6447c60aa6f4b72b2616b72d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -599,7 +599,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -602,7 +602,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; diff --git a/patches/server/0249-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0251-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 94% rename from patches/server/0249-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0251-Add-more-logger-output-for-invalid-movement-kicks.patch index c4b0a4622..eeec00f5d 100644 --- a/patches/server/0249-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0251-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 35b9951554a41213003badfa38e6db7825097055..50bc64000f24aa2ae0df2ce7fc77f27d760b8764 100644 +index 1e1b42f60679c8b8b27b3255feda4c6cf77d5536..9ae16e24013ea5664d4ea6d52ed7dd188404890f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -761,6 +761,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -16,7 +16,7 @@ index 35b9951554a41213003badfa38e6db7825097055..50bc64000f24aa2ae0df2ce7fc77f27d this.disconnect((Component) Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1371,7 +1372,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1372,7 +1373,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0250-Add-Bee-API.patch b/patches/server/0252-Add-Bee-API.patch similarity index 100% rename from patches/server/0250-Add-Bee-API.patch rename to patches/server/0252-Add-Bee-API.patch diff --git a/patches/server/0251-Debug-Marker-API.patch b/patches/server/0253-Debug-Marker-API.patch similarity index 98% rename from patches/server/0251-Debug-Marker-API.patch rename to patches/server/0253-Debug-Marker-API.patch index 22bb205fe..8a2db1a13 100644 --- a/patches/server/0251-Debug-Marker-API.patch +++ b/patches/server/0253-Debug-Marker-API.patch @@ -99,7 +99,7 @@ index 10413e550895f21cac43f5a15eaf51e51313b06f..bbd2da3a646421d1b05e7c8154a7aa7f @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3d824ed7b53b30493d0fc1714fc1b247f4a9ad9c..8369c1b9a7330ae3649a4ca644868c68d251ad10 100644 +index 7be5b26b3d9e4d38838ecca8f65f8671c3c17ed2..674df8d09988b2509adf93d75b2b37009a709410 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3629,5 +3629,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0252-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch similarity index 92% rename from patches/server/0252-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch index aa743a75b..e818a14f2 100644 --- a/patches/server/0252-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0254-mob-spawning-option-to-ignore-creative-players.patch @@ -5,7 +5,7 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 5297798c2be1ba85569c2b92ed221956bf75477a..e9e919fdcd61cb59e8b02a0ac5b33c8a1c7ca240 100644 +index c1b76a1ebc1eea7ab70cf61d8175a31794dd122a..dc15c15951e4ca30b8341d24f813259a77f41c77 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -280,7 +280,7 @@ public final class NaturalSpawner { @@ -18,7 +18,7 @@ index 5297798c2be1ba85569c2b92ed221956bf75477a..e9e919fdcd61cb59e8b02a0ac5b33c8a if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aa68b09686aec0ea58e04835baa33ddc7a5b5bad..92b5eecbb2474f5dbb4a9eca55bde27abced5680 100644 +index 47b29febec2af1f3a8ef7b9afc6a4982df08eb47..e94c9fb93191d880b7cbd1b293a8da5c1074aba4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -378,6 +378,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0253-Add-skeleton-bow-accuracy-option.patch b/patches/server/0255-Add-skeleton-bow-accuracy-option.patch similarity index 97% rename from patches/server/0253-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0255-Add-skeleton-bow-accuracy-option.patch index 8ec4bac6d..bc59e9a17 100644 --- a/patches/server/0253-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0255-Add-skeleton-bow-accuracy-option.patch @@ -18,7 +18,7 @@ index 2cadbc0d56908ca978e1735eff07f5e634548606..39d02cf0e31832e30c4f034b0b5385e3 // CraftBukkit end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a9fcd289a68c7f3d7d858eade65cc414880cd8d..f28ad02b026e25a560ed24f236627113a55066c1 100644 +index e94c9fb93191d880b7cbd1b293a8da5c1074aba4..b38c114e063c3f49cdf19f9c489ee92bcb7006ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2600,6 +2600,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0254-Add-death-screen-API.patch b/patches/server/0256-Add-death-screen-API.patch similarity index 92% rename from patches/server/0254-Add-death-screen-API.patch rename to patches/server/0256-Add-death-screen-API.patch index 9c39bba21..22e53757c 100644 --- a/patches/server/0254-Add-death-screen-API.patch +++ b/patches/server/0256-Add-death-screen-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 8369c1b9a7330ae3649a4ca644868c68d251ad10..68afb2464069f1ee8220df6d4e474be45d0ce8ef 100644 +index 674df8d09988b2509adf93d75b2b37009a709410..02339cdd1e8cd6496cb466eb4b1c7ce2d9b6f064 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3667,5 +3667,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/unapplied-server/0260-Make-pufferfish-config-relocatable.patch b/patches/server/0257-Make-pufferfish-config-relocatable.patch similarity index 85% rename from patches/unapplied-server/0260-Make-pufferfish-config-relocatable.patch rename to patches/server/0257-Make-pufferfish-config-relocatable.patch index 6df9e6105..4b22dded7 100644 --- a/patches/unapplied-server/0260-Make-pufferfish-config-relocatable.patch +++ b/patches/server/0257-Make-pufferfish-config-relocatable.patch @@ -5,10 +5,10 @@ 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 bcaf4932c82b0e6702450e2feb09828edf58cbf0..8f1645573780d12bf29d441d31eab1b76cd9e70f 100644 +index 3175d421e39bf1315cf699f2df7c63a6535bb5b9..411c81a88b8a008b2aaf0ca62fb7ffa1dd9e32a4 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 { +@@ -25,6 +25,7 @@ public class PufferfishConfig { private static final YamlFile config = new YamlFile(); private static int updates = 0; @@ -16,7 +16,7 @@ index bcaf4932c82b0e6702450e2feb09828edf58cbf0..8f1645573780d12bf29d441d31eab1b7 private static ConfigurationSection convertToBukkit(org.simpleyaml.configuration.ConfigurationSection section) { ConfigurationSection newSection = new MemoryConfiguration(); -@@ -50,7 +51,7 @@ public class PufferfishConfig { +@@ -47,7 +48,7 @@ public class PufferfishConfig { } public static void load() throws IOException { @@ -26,10 +26,10 @@ index bcaf4932c82b0e6702450e2feb09828edf58cbf0..8f1645573780d12bf29d441d31eab1b7 if (configFile.exists()) { try { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 430418990e218bca55fd7c817086bf7a6866fa1a..4bd75f2a4f932fc63efd4e4d884aa834184250fa 100644 +index 8eb51119d60979f85bc98a9413d318522c732693..08a81a45371fd273fb35956bef3bb7947bb4c5b6 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -248,6 +248,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -245,6 +245,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now @@ -38,7 +38,7 @@ index 430418990e218bca55fd7c817086bf7a6866fa1a..4bd75f2a4f932fc63efd4e4d884aa834 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 316c5e1460ccf3386c4c8623eabb7f087df8c4b9..e35a562eec4b65335723c50180fe1471f858ae60 100644 +index 5bce26e9671aab15ac4bac9a0d00b5184bef74ea..430407b0cf06ba337c59cd576c7e40a8e5fe8229 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -182,6 +182,12 @@ public class Main { diff --git a/patches/server/0255-Implement-ram-and-rambar-commands.patch b/patches/server/0258-Implement-ram-and-rambar-commands.patch similarity index 99% rename from patches/server/0255-Implement-ram-and-rambar-commands.patch rename to patches/server/0258-Implement-ram-and-rambar-commands.patch index 514fca4fc..bd842583a 100644 --- a/patches/server/0255-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0258-Implement-ram-and-rambar-commands.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement ram and rambar commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index d8ee4422a13c7f09b84e9bbe8b57f0c139caac32..96449b0d153ce4124403368e406354fb2412e353 100644 +index eedb3707523b47ab79db326f6d7382cca60c5393..db455a0fc7e1fc004215b718ff470bd2f74eae1b 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -261,6 +261,8 @@ public class Commands { diff --git a/patches/server/0256-Configurable-block-blast-resistance.patch b/patches/server/0259-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0256-Configurable-block-blast-resistance.patch rename to patches/server/0259-Configurable-block-blast-resistance.patch diff --git a/patches/server/0257-Configurable-block-fall-damage-modifiers.patch b/patches/server/0260-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0257-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0260-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0258-Language-API.patch b/patches/server/0261-Language-API.patch similarity index 100% rename from patches/server/0258-Language-API.patch rename to patches/server/0261-Language-API.patch diff --git a/patches/server/0259-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch similarity index 91% rename from patches/server/0259-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0262-Milk-Keeps-Beneficial-Effects.patch index 1776f4b91..854e0a880 100644 --- a/patches/server/0259-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0262-Milk-Keeps-Beneficial-Effects.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 34f3ae000a794da60bdfe3072071143b3fdfd971..1e312afb4abcc9581c2a6097532a8dfbe67c019f 100644 +index 71f735d2c91d08ab652ddc8f3fe37bbb3b425ba4..f4604e543a980d6aeb485252da5a4e755aa12bfa 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1149,6 +1149,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1162,6 +1162,7 @@ public abstract class LivingEntity extends Entity implements Attackable { while (iterator.hasNext()) { MobEffectInstance effect = iterator.next(); @@ -17,7 +17,7 @@ index 34f3ae000a794da60bdfe3072071143b3fdfd971..1e312afb4abcc9581c2a6097532a8dfb if (event.isCancelled()) { continue; diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index a8cbf8cc21b0835a040901ee34f240cd327ad073..b6a866438b582adabe8395e0d4167d2187042e65 100644 +index 37ba31724fb3630c9c7d8040f47be36e037d4e48..42c91e52060fad4a7a598f9e9ef88fd0e0ff8475 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -123,7 +123,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -30,7 +30,7 @@ index a8cbf8cc21b0835a040901ee34f240cd327ad073..b6a866438b582adabe8395e0d4167d21 this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2ef8e8de90e2e0ebc92f060264c9353906763516..11b79fae9ea84d6e25b4f69aa428faa75c4f9aac 100644 +index b38c114e063c3f49cdf19f9c489ee92bcb7006ed..446cdd50d4b5d5ed2e58f4bc4fbb13810399754d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -145,6 +145,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0260-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0260-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0263-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0261-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0264-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0261-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0264-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0262-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 96% rename from patches/server/0262-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 8a7fa6705..62b9e1c03 100644 --- a/patches/server/0262-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0265-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting) diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 75d65b795a7802c0c5b5bd4a6ed429209f987452..f91519f73e766cf891351a95d76abb416da2f957 100644 +index b7dccbf33feb978b3937522bb0d62d154699ae9f..d8b69ed256c18e264cffc0097936029e5bd33dd8 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java @@ -80,6 +80,7 @@ public abstract class AbstractArrow extends Projectile { @@ -43,7 +43,7 @@ index 78ba170a83f8c026bd110eae494c52577182ed61..c2ae50872cead7202246b9cce4db6e0a } diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index 4e863ae1f94291b391a142e04e0c41e83417ab70..d7eb680b977656556a618431b1511c1050f6db5e 100644 +index 9134c4aada4e0cd7b51810a59405c07d433f7c78..23e04d0d68ffa0e07ab295e7121f8a4963f4914a 100644 --- a/src/main/java/net/minecraft/world/item/TridentItem.java +++ b/src/main/java/net/minecraft/world/item/TridentItem.java @@ -100,6 +100,9 @@ public class TridentItem extends Item implements ProjectileItem { diff --git a/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 96% rename from patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 578c66492..e9f26f096 100644 --- a/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0266-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,7 +24,7 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 913efd04720e7321fafe75c0f9eceed03e91044e..d617a76d673370286c5a55e3a02f2ed4f5fdc9c3 100644 +index 446cdd50d4b5d5ed2e58f4bc4fbb13810399754d..342d5111bd3d4b434071f7499467a860a278ee08 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1439,6 +1439,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0264-Fire-Immunity-API.patch b/patches/server/0267-Fire-Immunity-API.patch similarity index 84% rename from patches/server/0264-Fire-Immunity-API.patch rename to patches/server/0267-Fire-Immunity-API.patch index 84d23d2b5..cff36eb81 100644 --- a/patches/server/0264-Fire-Immunity-API.patch +++ b/patches/server/0267-Fire-Immunity-API.patch @@ -5,18 +5,18 @@ 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 9d81ae0320426f20d7078a3d1fe8b3ff31ccfebc..c377339088c536255e319ee058e30d68e00c30f5 100644 +index 2b612bfe6da7cc6d6447c60aa6f4b72b2616b72d..193c888d0ff2a8c2ef1a7fc8fd8af5d26e701092 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -390,6 +390,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - public boolean freezeLocked = false; // Paper - Freeze Tick Lock API - public boolean fixedPose = false; // Paper - Expand Pose API - private final int despawnTime; // Paper - entity despawn time limit +@@ -393,6 +393,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + public boolean activatedPriorityReset = false; // Pufferfish - DAB + public int activatedPriority = gg.pufferfish.pufferfish.PufferfishConfig.maximumActivationPrio; // Pufferfish - DAB (golf score) + public final BlockPos.MutableBlockPos cachedBlockPos = new BlockPos.MutableBlockPos(); // Pufferfish - reduce entity allocations + public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1957,7 +1958,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1960,7 +1961,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -25,7 +25,7 @@ index 9d81ae0320426f20d7078a3d1fe8b3ff31ccfebc..c377339088c536255e319ee058e30d68 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2712,6 +2713,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2715,6 +2716,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index 9d81ae0320426f20d7078a3d1fe8b3ff31ccfebc..c377339088c536255e319ee058e30d68 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2860,6 +2866,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2863,6 +2869,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end diff --git a/patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 93% rename from patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 32f6094a1..0cee4abec 100644 --- a/patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c377339088c536255e319ee058e30d68e00c30f5..31326cc83130e4226aee443be880c00c2adc7ab0 100644 +index 193c888d0ff2a8c2ef1a7fc8fd8af5d26e701092..aa171a1afb9800e6ec84f6b4f1b28e44177752f7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -997,6 +997,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1000,6 +1000,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage diff --git a/patches/server/0266-Added-got-ram-event.patch b/patches/server/0269-Added-got-ram-event.patch similarity index 86% rename from patches/server/0266-Added-got-ram-event.patch rename to patches/server/0269-Added-got-ram-event.patch index c5bdff62e..df9927329 100644 --- a/patches/server/0266-Added-got-ram-event.patch +++ b/patches/server/0269-Added-got-ram-event.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 7f196e8a8b5094375c9b13fe6e7311a3450dbb5f..0a7042924aca35722fba4b46086a34c7e3ec04ad 100644 +index 752f44048ed4f61ce8e2cce67d0680b7837cdd29..d508cb2a61866c8fd7f381f8deb558ed86f7c845 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -432,6 +432,7 @@ public class Goat extends Animal { +@@ -433,6 +433,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/patches/server/0267-Log-skipped-entity-s-position.patch b/patches/server/0270-Log-skipped-entity-s-position.patch similarity index 86% rename from patches/server/0267-Log-skipped-entity-s-position.patch rename to patches/server/0270-Log-skipped-entity-s-position.patch index 70ff6ce7b..a18c62cbf 100644 --- a/patches/server/0267-Log-skipped-entity-s-position.patch +++ b/patches/server/0270-Log-skipped-entity-s-position.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 5796f9bdde43d5b681ee2aaa7bc47076114af321..c1a870fd22b193388513aad0ac4f3ce0ad7c8195 100644 +index 40ae00146381a9a1ec70ffae5c683b46c72c56ff..1d50b03246d114c6583815205eeacb7ac8549aec 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -682,6 +682,12 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -683,6 +683,12 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(nbt); }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); diff --git a/patches/server/0268-End-Crystal-Cramming.patch b/patches/server/0271-End-Crystal-Cramming.patch similarity index 96% rename from patches/server/0268-End-Crystal-Cramming.patch rename to patches/server/0271-End-Crystal-Cramming.patch index 97205e860..9b1469291 100644 --- a/patches/server/0268-End-Crystal-Cramming.patch +++ b/patches/server/0271-End-Crystal-Cramming.patch @@ -17,7 +17,7 @@ index 305c3350116f656c3d0e6134e4d8023eac50f3ad..b1db1e92de3a88a0f0e0fdb42b0bf973 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f083d0efb0f0aee24779fc866204cbb936d3f55f..ed1089ac29f9c8d19f69ac64974bfbe64fa8de41 100644 +index 89e80073eb911e72d0bac5b50119421a91cd3a16..991d13948d90039a4a344b51317b52f882b34e5f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -915,6 +915,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 97% rename from patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 0c4daaaa5..65e8b4064 100644 --- a/patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0272-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,7 +36,7 @@ index fbc6b0099af34b0247f6144a9cef020f9ccddeef..2d190b3a6378b8cbadfa65510df1ccfb BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ed1089ac29f9c8d19f69ac64974bfbe64fa8de41..5030f8e746cf92619483a4b93f0398aa05182784 100644 +index 991d13948d90039a4a344b51317b52f882b34e5f..5fb1b4ca45faaf9d172adb8f3a7879322ae29117 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -814,11 +814,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0273-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch similarity index 96% rename from patches/server/0271-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0274-Config-to-remove-explosion-radius-clamp.patch index e30da58f8..cb419f62f 100644 --- a/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0274-Config-to-remove-explosion-radius-clamp.patch @@ -27,7 +27,7 @@ index bbbd451ff184be8fa13bd93d53c89a9502f9951a..913f7d5fd9823eea9fad2d4e6689511f } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5030f8e746cf92619483a4b93f0398aa05182784..0c6e22dffa5e286ded2ca277c3c0a3a60014305c 100644 +index 5fb1b4ca45faaf9d172adb8f3a7879322ae29117..12ccac3893097d428c3c7f9cfdfc67e78dd9d691 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -225,6 +225,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch index b75a9c9be..fa46c7cbb 100644 --- a/patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0275-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,7 +137,7 @@ index 547ea09ed84595286c97c128b3b96f6d387ae25f..d0f8a13f27132257ece6dadf736c2dc6 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0c6e22dffa5e286ded2ca277c3c0a3a60014305c..be88a9c0847349d3460d1e7b851c2e9d673ff093 100644 +index 12ccac3893097d428c3c7f9cfdfc67e78dd9d691..4ef5aaa033f6ba5a4260345df12426954b8d6fbe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -868,8 +868,20 @@ public class PurpurWorldConfig { diff --git a/patches/server/0273-Add-PreExplodeEvents.patch b/patches/server/0276-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0273-Add-PreExplodeEvents.patch rename to patches/server/0276-Add-PreExplodeEvents.patch diff --git a/patches/server/0274-Improve-output-of-plugins-command.patch b/patches/server/0277-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0274-Improve-output-of-plugins-command.patch rename to patches/server/0277-Improve-output-of-plugins-command.patch diff --git a/patches/server/0275-Make-GUI-Great-Again.patch b/patches/server/0278-Make-GUI-Great-Again.patch similarity index 99% rename from patches/server/0275-Make-GUI-Great-Again.patch rename to patches/server/0278-Make-GUI-Great-Again.patch index 930449976..f4e7508d5 100644 --- a/patches/server/0275-Make-GUI-Great-Again.patch +++ b/patches/server/0278-Make-GUI-Great-Again.patch @@ -96,7 +96,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 3ddc5f213954f181e0e3b8d44808ea12765e8e55..e9ad8e2ac267c46df80e884308df8bb12d0deeff 100644 +index 08a81a45371fd273fb35956bef3bb7947bb4c5b6..7a442fb4cf78bcb1268359ee41a6de138edb76b6 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -111,6 +111,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface diff --git a/patches/server/0276-Stored-Bee-API.patch b/patches/server/0279-Stored-Bee-API.patch similarity index 100% rename from patches/server/0276-Stored-Bee-API.patch rename to patches/server/0279-Stored-Bee-API.patch diff --git a/patches/server/0277-Shears-can-defuse-TNT.patch b/patches/server/0280-Shears-can-defuse-TNT.patch similarity index 97% rename from patches/server/0277-Shears-can-defuse-TNT.patch rename to patches/server/0280-Shears-can-defuse-TNT.patch index 34320e7f5..f3c819cc2 100644 --- a/patches/server/0277-Shears-can-defuse-TNT.patch +++ b/patches/server/0280-Shears-can-defuse-TNT.patch @@ -44,7 +44,7 @@ index de87483600e55d88176fe25db621bbd3e464729f..287ba483614e79e78022e703ef891f59 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 869e6dc3dad0591af777762a4560c9b6e205feb4..9dc7eef416a0c97364d6db7f0a9e2fcadeb06a45 100644 +index 4ef5aaa033f6ba5a4260345df12426954b8d6fbe..f8c49f69297fac41f65c3d37ba0e1020fa3f0736 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -3414,4 +3414,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0278-Explorer-Map-API.patch b/patches/server/0281-Explorer-Map-API.patch similarity index 100% rename from patches/server/0278-Explorer-Map-API.patch rename to patches/server/0281-Explorer-Map-API.patch diff --git a/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 95% rename from patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch index d17f79ea6..671fa61b4 100644 --- a/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0282-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,7 +18,7 @@ index 14634de26c218a3d26afd3e7e6ca89c1a0595178..dee59cb4b87845c940ee089aa932aa69 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9dc7eef416a0c97364d6db7f0a9e2fcadeb06a45..14bcd0038c9d16e9de9c16d0edbdde0c0e614d97 100644 +index f8c49f69297fac41f65c3d37ba0e1020fa3f0736..29c934fa57da481730d80601bf86a90d5b8def09 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2150,6 +2150,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 96% rename from patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 8bf85a006..5a27bad09 100644 --- a/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0283-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,7 +29,7 @@ index e283b1296c1e831376bfe9491cbf02ed4b3fffe4..27a6de70530c2a1cbe2f77a7fb493038 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 14bcd0038c9d16e9de9c16d0edbdde0c0e614d97..14346bf253cf1f420e024eb119ea26e45a7c9a59 100644 +index 29c934fa57da481730d80601bf86a90d5b8def09..a040f13bd39bd9e0b24ac9be4a95a093930977d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2327,6 +2327,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0281-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0281-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0284-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0282-place-end-crystal-on-any-block.patch b/patches/server/0285-place-end-crystal-on-any-block.patch similarity index 92% rename from patches/server/0282-place-end-crystal-on-any-block.patch rename to patches/server/0285-place-end-crystal-on-any-block.patch index f64fdeef0..75ce23242 100644 --- a/patches/server/0282-place-end-crystal-on-any-block.patch +++ b/patches/server/0285-place-end-crystal-on-any-block.patch @@ -5,7 +5,7 @@ Subject: [PATCH] place end crystal on any block diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index b62db8c7c8c57e43869ee239ebf4b02f112355d9..f60e39e56a5dab2de62ae9cfd7a30a70b4985c09 100644 +index 2bee342e59e600426c8681a3ce641a12f22790be..e75930f26604b772a141a93c6f4b77828abc4503 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -27,7 +27,7 @@ public class EndCrystalItem extends Item { @@ -18,7 +18,7 @@ index b62db8c7c8c57e43869ee239ebf4b02f112355d9..f60e39e56a5dab2de62ae9cfd7a30a70 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 80561650178b5cb3c49422fb2b0d30aeca55fdd0..cc3258704c5093bc6005d5d807c16a0bb3748052 100644 +index a040f13bd39bd9e0b24ac9be4a95a093930977d1..c9ad3129146f5f29f1a1d0afbbc911d92bb4e8fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -935,6 +935,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 96% rename from patches/server/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch index 13ce167d0..82df86634 100644 --- a/patches/server/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0286-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,7 +18,7 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cc3258704c5093bc6005d5d807c16a0bb3748052..6bf2555fb77163f0a8243809095b72f2d13bc95d 100644 +index c9ad3129146f5f29f1a1d0afbbc911d92bb4e8fb..9b3e2d1ab8ad0b388a0bd3947feea43e602b8781 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -146,6 +146,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0284-register-minecraft-debug-commands.patch b/patches/server/0287-register-minecraft-debug-commands.patch similarity index 96% rename from patches/server/0284-register-minecraft-debug-commands.patch rename to patches/server/0287-register-minecraft-debug-commands.patch index 66d6ddad8..21200a889 100644 --- a/patches/server/0284-register-minecraft-debug-commands.patch +++ b/patches/server/0287-register-minecraft-debug-commands.patch @@ -5,7 +5,7 @@ Subject: [PATCH] register minecraft debug commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 96449b0d153ce4124403368e406354fb2412e353..6a8248b43bf739b691c7e888ebf964cad0a92623 100644 +index db455a0fc7e1fc004215b718ff470bd2f74eae1b..8d82425ccbc30b3f4a59767ca72bf37311ddeda0 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -226,8 +226,8 @@ public class Commands { diff --git a/patches/server/0285-Configurable-villager-search-radius.patch b/patches/server/0288-Configurable-villager-search-radius.patch similarity index 97% rename from patches/server/0285-Configurable-villager-search-radius.patch rename to patches/server/0288-Configurable-villager-search-radius.patch index 19b05c0ed..4fc65ed59 100644 --- a/patches/server/0285-Configurable-villager-search-radius.patch +++ b/patches/server/0288-Configurable-villager-search-radius.patch @@ -31,7 +31,7 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // 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 77947debf981eb44cc116b6bb930a9f07ffaef16..e863b5cc35bbef332f430b6a7eaab53996b2d574 100644 +index 9b3e2d1ab8ad0b388a0bd3947feea43e602b8781..d396a9fee2326620a0222ff91dba63f187907525 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -3004,6 +3004,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch similarity index 96% rename from patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch rename to patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch index a3744efb9..ae28a292c 100644 --- a/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0289-option-to-make-ravagers-afraid-of-rabbits.patch @@ -18,7 +18,7 @@ index 1c8cb19a8b25593d16518006247bdf0e71e16ab1..98c1934b4895a86cd8748edf906aaa72 this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e863b5cc35bbef332f430b6a7eaab53996b2d574..b7743b7b37293fd458b56f5e17359d2383719c90 100644 +index d396a9fee2326620a0222ff91dba63f187907525..57ddb4e6a464567cc67e09ce06218cc25af4ddf9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2485,6 +2485,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0287-config-for-startup-commands.patch b/patches/server/0290-config-for-startup-commands.patch similarity index 93% rename from patches/server/0287-config-for-startup-commands.patch rename to patches/server/0290-config-for-startup-commands.patch index c5de60f51..7d4d91f0b 100644 --- a/patches/server/0287-config-for-startup-commands.patch +++ b/patches/server/0290-config-for-startup-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] config for startup commands diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 4c46d084befe48ec1f98a956033a58ee2f2c0bbc..2274a9c6c6db0a04a6e7ba6783a55db67f80e5ba 100644 +index 66cbaad4c92750ecf0c74ab52e6eae4a818da972..74504331648e016a5f0233f1b5311b558f6cb611 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1291,6 +1291,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop