From c9917352de40f391011b2e6c237721926ee2f42c Mon Sep 17 00:00:00 2001 From: Krakenied <46192742+Krakenied@users.noreply.github.com> Date: Mon, 17 Jun 2024 01:52:10 +0200 Subject: [PATCH] Fix compilation issues (#1530) --- build.gradle.kts | 2 +- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- ...atch => 0016-ChatColor-conveniences.patch} | 0 ...atch => 0017-Item-entity-immunities.patch} | 0 ...-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...lf-API.patch => 0019-Rabid-Wolf-API.patch} | 0 ...tch => 0020-PlayerBookTooLargeEvent.patch} | 0 ...herite-armor-grants-fire-resistance.patch} | 0 ...022-Add-EntityTeleportHinderedEvent.patch} | 0 ...tment-target-for-bows-and-crossbows.patch} | 0 ...24-API-for-any-mob-to-burn-daylight.patch} | 11 +- ...d-back-player-spawned-endermite-API.patch} | 0 ... 0026-Fix-default-permission-system.patch} | 0 ...oner-API.patch => 0027-Summoner-API.patch} | 0 ...028-Clean-up-version-command-output.patch} | 0 ... => 0029-Extended-OfflinePlayer-API.patch} | 0 ...he-ability-to-add-combustible-items.patch} | 0 ...ne-API.patch => 0031-Grindstone-API.patch} | 0 ...Shears-can-have-looting-enchantment.patch} | 0 ... => 0033-Lobotomize-stuck-villagers.patch} | 0 ...ch => 0034-Add-local-difficulty-api.patch} | 0 ...imings.patch => 0035-Remove-Timings.patch} | 0 ...d-Bee-API.patch => 0036-Add-Bee-API.patch} | 0 ...-API.patch => 0037-Debug-Marker-API.patch} | 0 ....patch => 0038-Add-death-screen-API.patch} | 0 ...uage-API.patch => 0039-Language-API.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...API.patch => 0041-Fire-Immunity-API.patch} | 0 ....patch => 0042-Added-goat-ram-event.patch} | 0 ....patch => 0043-Add-PreExplodeEvents.patch} | 0 ...ee-API.patch => 0044-Stored-Bee-API.patch} | 0 ...-API.patch => 0045-Explorer-Map-API.patch} | 0 ...ge.patch => 0046-Stonecutter-damage.patch} | 0 ...0016-LivingEntity-broadcastItemBreak.patch | 0 ...0082-LivingEntity-broadcastItemBreak.patch | 0 patches/server/0002-Purpur-config-files.patch | 6 +- .../0005-Component-related-conveniences.patch | 6 +- patches/server/0006-Ridables.patch | 45 +++--- ...-Configurable-entity-base-attributes.patch | 8 +- .../0008-Barrels-and-enderchests-6-rows.patch | 4 +- patches/server/0010-AFK-API.patch | 4 +- .../0012-Configurable-server-mod-name.patch | 4 +- patches/server/0013-Lagging-threshold.patch | 4 +- ...014-PlayerSetSpawnerTypeWithEggEvent.patch | 8 +- patches/server/0015-Anvil-API.patch | 100 +++++++------ .../0016-Alternative-Keepalive-Handling.patch | 4 +- ...ods-to-deal-with-enchantments-a-bit-.patch | 25 ++++ ...s.patch => 0018-Silk-touch-spawners.patch} | 4 +- ...> 0019-Add-turtle-egg-block-options.patch} | 2 +- ...settings-suppressing-pointless-logs.patch} | 4 +- ...> 0021-Disable-outdated-build-check.patch} | 0 ...gs.patch => 0022-Giants-AI-settings.patch} | 6 +- ...> 0023-Zombie-horse-naturally-spawn.patch} | 6 +- ...024-Charged-creeper-naturally-spawn.patch} | 2 +- ...it-naturally-spawn-toast-and-killer.patch} | 2 +- ...er-showing-in-ping-before-server-fu.patch} | 0 ...atch => 0027-Tulips-change-fox-type.patch} | 2 +- ...patch => 0028-Breedable-Polar-Bears.patch} | 4 +- ...atch => 0029-Chickens-can-retaliate.patch} | 2 +- ...ption-to-set-armorstand-step-height.patch} | 6 +- ....patch => 0031-Cat-spawning-options.patch} | 2 +- ...ms.patch => 0032-Cows-eat-mushrooms.patch} | 9 +- ...ow-rotation-when-shearing-mooshroom.patch} | 0 ...patch => 0034-Pigs-give-saddle-back.patch} | 2 +- ...5-Snowman-drop-and-put-back-pumpkin.patch} | 2 +- ...6-Ender-dragon-always-drop-full-exp.patch} | 2 +- ...oisten-from-water-directly-under-it.patch} | 2 +- ...Minecart-settings-and-WASD-controls.patch} | 4 +- ...ble-loot-drops-on-death-by-cramming.patch} | 4 +- ...tion-to-toggle-milk-curing-bad-omen.patch} | 2 +- ...Skip-events-if-there-s-no-listeners.patch} | 2 +- ... 0042-Add-permission-for-F3-N-debug.patch} | 2 +- ...ch => 0043-Configurable-TPS-Catchup.patch} | 4 +- ...ow-loyalty-on-tridents-to-work-in-t.patch} | 2 +- ...erman-and-creeper-griefing-controls.patch} | 2 +- ...046-Villagers-follow-emerald-blocks.patch} | 4 +- ...ch => 0047-Allow-leashing-villagers.patch} | 6 +- ... => 0048-Implement-infinite-liquids.patch} | 2 +- ...9-Make-lava-flow-speed-configurable.patch} | 2 +- ...dd-player-death-exp-control-options.patch} | 2 +- ...rable-void-damage-height-and-damage.patch} | 8 +- ...=> 0052-Add-canSaveToDisk-to-Entity.patch} | 10 +- ...spenser-curse-of-binding-protection.patch} | 32 ++-- ...-for-boats-to-eject-players-on-land.patch} | 2 +- ...g-mends-most-damages-equipment-first.patch | 110 -------------- ...g-mends-most-damages-equipment-first.patch | 134 +++++++++++++++++ ...056-Add-5-second-tps-average-in-tps.patch} | 0 ...h => 0057-Implement-elytra-settings.patch} | 8 +- ...atch => 0058-Item-entity-immunities.patch} | 10 +- ...mand.patch => 0059-Add-ping-command.patch} | 6 +- ...mand.patch => 0060-Add-demo-command.patch} | 6 +- ...d.patch => 0061-Add-credits-command.patch} | 6 +- ...=> 0062-Configurable-jockey-options.patch} | 2 +- ...d-to-crystals-and-crystals-shoot-ph.patch} | 2 +- ...> 0064-Add-phantom-spawning-options.patch} | 2 +- ...065-Implement-bed-explosion-options.patch} | 2 +- ...nt-respawn-anchor-explosion-options.patch} | 2 +- ...Add-allow-water-in-end-world-option.patch} | 4 +- ... => 0068-Allow-color-codes-in-books.patch} | 0 ...espan.patch => 0069-Entity-lifespan.patch} | 14 +- ...eport-to-spawn-if-outside-world-bor.patch} | 10 +- ...ty.patch => 0071-Squid-EAR-immunity.patch} | 2 +- ...atch => 0072-Phantoms-burn-in-light.patch} | 2 +- ...0073-Configurable-villager-breeding.patch} | 2 +- ... 0074-Redstone-deactivates-spawners.patch} | 2 +- ...ch => 0075-Totems-work-in-inventory.patch} | 2 +- ...-Add-vindicator-johnny-spawn-chance.patch} | 2 +- ...0077-Dispensers-place-anvils-option.patch} | 2 +- ...rs.patch => 0078-Allow-anvil-colors.patch} | 6 +- ...-disable-dolphin-treasure-searching.patch} | 2 +- ...patch => 0080-Short-enderman-height.patch} | 6 +- ...top-squids-floating-on-top-of-water.patch} | 8 +- ...ng-obsidian-valid-for-portal-frames.patch} | 6 +- ...stomizable-wither-health-and-healing.patch | 6 +- ...ggling-special-MobSpawners-per-world.patch | 6 +- .../server/0085-Raid-cooldown-setting.patch | 2 +- ...e-config-options-per-projectile-type.patch | 2 +- ...sable-zombie-aggressiveness-towards-.patch | 2 +- patches/server/0089-Flying-squids-Oh-my.patch | 4 +- .../0090-Configurable-daylight-cycle.patch | 10 +- ...91-Furnace-uses-lava-from-underneath.patch | 2 +- ...ows-should-not-reset-despawn-counter.patch | 2 +- ...re-add-farmland-mechanics-from-Alpha.patch | 2 +- ...justable-breeding-cooldown-to-config.patch | 2 +- ...e-entity-breeding-times-configurable.patch | 8 +- ...mes-from-item-forms-of-entities-to-e.patch | 2 +- ...-when-using-a-Name-Tag-on-an-Armor-S.patch | 2 +- ...llowing-Endermen-to-despawn-even-whi.patch | 2 +- ...099-Add-configurable-snowball-damage.patch | 2 +- ...00-Changeable-Mob-Left-Handed-Chance.patch | 6 +- .../0101-Add-boat-fall-damage-config.patch | 4 +- .../0102-Snow-Golem-rate-of-fire-config.patch | 2 +- ...C-Configurable-disable-give-dropping.patch | 4 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 2 +- ...fied-Piglin-death-always-counting-as.patch | 2 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 2 +- ...07-Configurable-default-collar-color.patch | 2 +- .../server/0108-Phantom-flames-on-swoop.patch | 2 +- ...s-to-open-even-with-a-solid-block-on.patch | 2 +- patches/server/0110-Implement-TPSBar.patch | 14 +- .../0111-Striders-give-saddle-back.patch | 2 +- .../server/0112-PlayerBookTooLargeEvent.patch | 6 +- ...therite-armor-grants-fire-resistance.patch | 2 +- ...iefing-bypass-to-everything-affected.patch | 8 +- ...allow-Note-Block-sounds-when-blocked.patch | 2 +- .../0116-Farmland-trampling-changes.patch | 2 +- ...17-Movement-options-for-armor-stands.patch | 6 +- .../server/0118-Fix-stuck-in-portals.patch | 8 +- ...oggle-for-water-sensitive-mob-damage.patch | 14 +- ...20-Config-to-always-tame-in-Creative.patch | 4 +- .../0121-End-crystal-explosion-options.patch | 2 +- ...ither-Ender-Dragon-can-ride-vehicles.patch | 6 +- .../server/0123-Dont-run-with-scissors.patch | 10 +- patches/server/0124-One-Punch-Man.patch | 2 +- ...er-Pearl-cooldown-damage-and-Endermi.patch | 2 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 4 +- ...an-aggressiveness-towards-Endermites.patch | 2 +- ...-Dragon-Head-wearers-and-stare-aggro.patch | 2 +- patches/server/0130-Tick-fluids-config.patch | 2 +- ...131-Config-to-disable-Llama-caravans.patch | 2 +- ...ig-to-make-Creepers-explode-on-death.patch | 32 ++-- ...urable-ravager-griefable-blocks-list.patch | 4 +- ...0134-Sneak-to-bulk-process-composter.patch | 6 +- .../0135-Config-for-skipping-night.patch | 6 +- ...0136-Add-config-for-villager-trading.patch | 2 +- patches/server/0137-Drowning-Settings.patch | 8 +- ...Break-individual-slabs-when-sneaking.patch | 2 +- ...-to-disable-hostile-mob-spawn-on-ice.patch | 2 +- ...ig-to-show-Armor-Stand-arms-on-spawn.patch | 2 +- ...ption-to-make-doors-require-redstone.patch | 4 +- ...142-Config-to-allow-unsafe-enchants.patch} | 74 ++++----- .../0143-Configurable-sponge-absorption.patch | 2 +- .../0144-Projectile-offset-config.patch | 2 +- ...for-powered-rail-activation-distance.patch | 2 +- .../0146-Piglin-portal-spawn-modifier.patch | 2 +- ...-Config-to-change-max-number-of-bees.patch | 6 +- ...8-Config-for-wither-explosion-radius.patch | 2 +- .../0149-Gamemode-extra-permissions.patch | 6 +- .../0150-Configurable-piston-push-limit.patch | 2 +- ...0151-Configurable-broadcast-settings.patch | 6 +- .../0152-Configurable-mob-blindness.patch | 2 +- ...-hidden-players-from-entity-selector.patch | 6 +- ...h-to-impact-Creeper-explosion-radius.patch | 8 +- .../0155-Iron-golem-calm-anger-options.patch | 2 +- patches/server/0156-Breedable-parrots.patch | 6 +- ...igurable-powered-rail-boost-modifier.patch | 2 +- ...nge-multiplier-critical-damage-value.patch | 2 +- ...on-to-disable-dragon-egg-teleporting.patch | 2 +- ...nfig-for-unverified-username-message.patch | 6 +- ...e-anvil-cumulative-cost-configurable.patch | 12 +- ...ee-can-work-when-raining-or-at-night.patch | 2 +- ...163-API-for-any-mob-to-burn-daylight.patch | 140 +++++++++--------- .../0164-Config-MobEffect-by-world.patch | 2 +- ...Beacon-Activation-Range-Configurable.patch | 2 +- ...ake-lightning-rod-range-configurable.patch | 10 +- ...after-eating-food-fills-hunger-bar-c.patch | 2 +- ...70-Shulker-spawn-from-bullet-options.patch | 2 +- ...Eating-glow-berries-adds-glow-effect.patch | 2 +- ...2-Option-to-make-drowned-break-doors.patch | 2 +- ...onfigurable-hunger-starvation-damage.patch | 2 +- patches/server/0175-Add-uptime-command.patch | 10 +- .../server/0176-Tool-actionable-options.patch | 32 ++-- ...77-Store-placer-on-Block-when-placed.patch | 2 +- patches/server/0178-Summoner-API.patch | 6 +- ...omizable-sleeping-actionbar-messages.patch | 12 +- ...e-shulker-box-items-from-dropping-co.patch | 2 +- .../server/0181-Big-dripleaf-tilt-delay.patch | 2 +- .../0182-Player-ridable-in-water-option.patch | 2 +- ...e-Enderman-teleport-on-projectile-hi.patch | 2 +- patches/server/0184-Add-compass-command.patch | 12 +- .../0185-Toggle-for-kinetic-damage.patch | 2 +- ...d-Option-for-disable-observer-clocks.patch | 2 +- ...izeable-Zombie-Villager-curing-times.patch | 2 +- ...-for-sponges-to-work-on-lava-and-mud.patch | 2 +- ...0189-Toggle-for-Wither-s-spawn-sound.patch | 6 +- ...s-breaks-from-solid-neighbors-config.patch | 2 +- ...emove-curse-of-binding-with-weakness.patch | 2 +- .../0192-Conduit-behavior-configuration.patch | 4 +- .../server/0193-Cauldron-fill-chances.patch | 2 +- ...to-allow-mobs-to-pathfind-over-rails.patch | 2 +- .../0195-Shulker-change-color-with-dye.patch | 2 +- ...ain-and-thunder-should-stop-on-sleep.patch | 8 +- ...a-blocks-to-grow-into-trees-naturall.patch | 2 +- ...t-right-click-to-use-exp-for-mending.patch | 8 +- ...turally-aggressive-to-players-chance.patch | 2 +- ...turally-aggressive-to-players-chance.patch | 4 +- ...or-beds-to-explode-on-villager-sleep.patch | 2 +- ...-Halloween-options-and-optimizations.patch | 2 +- .../server/0205-Config-for-grindstones.patch | 10 +- .../server/0206-UPnP-Port-Forwarding.patch | 4 +- ...-Campfire-option-for-lit-when-placed.patch | 2 +- ...xtinguish-fire-blocks-with-snowballs.patch | 2 +- ...ion-to-disable-zombie-villagers-cure.patch | 2 +- ...ent-BlockEntity-Lore-and-DisplayName.patch | 2 +- .../server/0211-Signs-allow-color-codes.patch | 4 +- ...g-and-twisting-vines-configurable-ma.patch | 6 +- .../0213-Mobs-always-drop-experience.patch | 18 +-- ...oe-to-replant-crops-and-nether-warts.patch | 2 +- ...Turtle-eggs-random-tick-crack-chance.patch | 2 +- .../0217-Mob-head-visibility-percent.patch | 2 +- ...rable-valid-characters-for-usernames.patch | 4 +- ...-Shears-can-have-looting-enchantment.patch | 18 +-- ...-Stop-bees-from-dying-after-stinging.patch | 2 +- ...counts-in-beehives-to-Purpur-clients.patch | 12 +- ...Configurable-farmland-trample-height.patch | 2 +- ...Configurable-player-pickup-exp-delay.patch | 6 +- patches/server/0224-Allow-void-trading.patch | 6 +- .../0225-Configurable-phantom-size.patch | 2 +- .../server/0226-Max-joins-per-second.patch | 4 +- ...nfigurable-minimum-demand-for-trades.patch | 2 +- .../0228-Lobotomize-stuck-villagers.patch | 2 +- ...tion-for-villager-display-trade-item.patch | 2 +- ...awner-not-spawning-water-animals-cor.patch | 2 +- ...fig-for-mob-last-hurt-by-player-time.patch | 4 +- .../0232-Anvil-repair-damage-options.patch | 2 +- ...e-turtle-egg-trampling-with-feather-.patch | 2 +- ...dd-toggle-for-enchant-level-clamping.patch | 6 +- ...urable-search-radius-for-villagers-t.patch | 2 +- patches/server/0237-Stonecutter-damage.patch | 6 +- ...ble-damage-settings-for-magma-blocks.patch | 2 +- ...0239-Add-config-for-snow-on-blue-ice.patch | 2 +- .../0240-Skeletons-eat-wither-roses.patch | 10 +- ...241-Enchantment-Table-Persists-Lapis.patch | 2 +- ...o-disable-kick-for-out-of-order-chat.patch | 4 +- ...-for-sculk-shrieker-can_summon-state.patch | 2 +- .../0245-Config-to-not-let-coral-die.patch | 2 +- ...0247-Add-toggle-for-RNG-manipulation.patch | 8 +- patches/server/0248-Remove-Timings.patch | 44 +++--- .../server/0249-Remove-Mojang-Profiler.patch | 104 +++++++------ ...ng-option-to-ignore-creative-players.patch | 2 +- ...254-Add-skeleton-bow-accuracy-option.patch | 2 +- ...56-Implement-ram-and-rambar-commands.patch | 14 +- ...-Configurable-block-blast-resistance.patch | 4 +- ...igurable-block-fall-damage-modifiers.patch | 6 +- .../0260-Milk-Keeps-Beneficial-Effects.patch | 2 +- ...dd-log-suppression-for-LibraryLoader.patch | 4 +- ...on-to-fix-MC-3304-projectile-looting.patch | 89 +++++++++++ ...ow-creeper-to-encircle-target-when-.patch} | 2 +- ...API.patch => 0265-Fire-Immunity-API.patch} | 14 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 6 +- ...t.patch => 0267-Added-got-ram-event.patch} | 0 ... 0268-Log-skipped-entity-s-position.patch} | 2 +- ....patch => 0269-End-Crystal-Cramming.patch} | 2 +- ...eacon-effects-when-covered-by-tinte.patch} | 2 +- ...ute-clamping-and-armor-limit-config.patch} | 6 +- ...ig-to-remove-explosion-radius-clamp.patch} | 2 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 2 +- ....patch => 0274-Add-PreExplodeEvents.patch} | 0 ...5-Improve-output-of-plugins-command.patch} | 0 ....patch => 0276-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0277-Stored-Bee-API.patch} | 0 ...patch => 0278-Shears-can-defuse-TNT.patch} | 2 +- ...-API.patch => 0279-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} | 4 +- ...0283-place-end-crystal-on-any-block.patch} | 2 +- ...able-the-copper-oxidation-proximity.patch} | 2 +- ...5-register-minecraft-debug-commands.patch} | 4 +- ...Configurable-villager-search-radius.patch} | 2 +- ...-to-make-ravagers-afraid-of-rabbits.patch} | 2 +- ...=> 0288-config-for-startup-commands.patch} | 4 +- ...onfig-to-reverse-bubble-column-flow.patch} | 6 +- ...tch => 0290-Adopt-MaterialRerouting.patch} | 0 ...on-to-fix-MC-3304-projectile-looting.patch | 101 ------------- 306 files changed, 1065 insertions(+), 1005 deletions(-) rename patches/api/{0017-ChatColor-conveniences.patch => 0016-ChatColor-conveniences.patch} (100%) rename patches/api/{0018-Item-entity-immunities.patch => 0017-Item-entity-immunities.patch} (100%) rename patches/api/{0019-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0018-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/api/{0020-Rabid-Wolf-API.patch => 0019-Rabid-Wolf-API.patch} (100%) rename patches/api/{0021-PlayerBookTooLargeEvent.patch => 0020-PlayerBookTooLargeEvent.patch} (100%) rename patches/api/{0022-Full-netherite-armor-grants-fire-resistance.patch => 0021-Full-netherite-armor-grants-fire-resistance.patch} (100%) rename patches/api/{0023-Add-EntityTeleportHinderedEvent.patch => 0022-Add-EntityTeleportHinderedEvent.patch} (100%) rename patches/api/{0024-Add-enchantment-target-for-bows-and-crossbows.patch => 0023-Add-enchantment-target-for-bows-and-crossbows.patch} (100%) rename patches/api/{0025-API-for-any-mob-to-burn-daylight.patch => 0024-API-for-any-mob-to-burn-daylight.patch} (81%) rename patches/api/{0026-Add-back-player-spawned-endermite-API.patch => 0025-Add-back-player-spawned-endermite-API.patch} (100%) rename patches/api/{0027-Fix-default-permission-system.patch => 0026-Fix-default-permission-system.patch} (100%) rename patches/api/{0028-Summoner-API.patch => 0027-Summoner-API.patch} (100%) rename patches/api/{0029-Clean-up-version-command-output.patch => 0028-Clean-up-version-command-output.patch} (100%) rename patches/api/{0030-Extended-OfflinePlayer-API.patch => 0029-Extended-OfflinePlayer-API.patch} (100%) rename patches/api/{0031-Added-the-ability-to-add-combustible-items.patch => 0030-Added-the-ability-to-add-combustible-items.patch} (100%) rename patches/api/{0032-Grindstone-API.patch => 0031-Grindstone-API.patch} (100%) rename patches/api/{0033-Shears-can-have-looting-enchantment.patch => 0032-Shears-can-have-looting-enchantment.patch} (100%) rename patches/api/{0034-Lobotomize-stuck-villagers.patch => 0033-Lobotomize-stuck-villagers.patch} (100%) rename patches/api/{0035-Add-local-difficulty-api.patch => 0034-Add-local-difficulty-api.patch} (100%) rename patches/api/{0036-Remove-Timings.patch => 0035-Remove-Timings.patch} (100%) rename patches/api/{0037-Add-Bee-API.patch => 0036-Add-Bee-API.patch} (100%) rename patches/api/{0038-Debug-Marker-API.patch => 0037-Debug-Marker-API.patch} (100%) rename patches/api/{0039-Add-death-screen-API.patch => 0038-Add-death-screen-API.patch} (100%) rename patches/api/{0040-Language-API.patch => 0039-Language-API.patch} (100%) rename patches/api/{0041-Add-log-suppression-for-LibraryLoader.patch => 0040-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/api/{0042-Fire-Immunity-API.patch => 0041-Fire-Immunity-API.patch} (100%) rename patches/api/{0043-Added-goat-ram-event.patch => 0042-Added-goat-ram-event.patch} (100%) rename patches/api/{0044-Add-PreExplodeEvents.patch => 0043-Add-PreExplodeEvents.patch} (100%) rename patches/api/{0045-Stored-Bee-API.patch => 0044-Stored-Bee-API.patch} (100%) rename patches/api/{0046-Explorer-Map-API.patch => 0045-Explorer-Map-API.patch} (100%) rename patches/api/{0047-Stonecutter-damage.patch => 0046-Stonecutter-damage.patch} (100%) rename patches/{api => dropped-api}/0016-LivingEntity-broadcastItemBreak.patch (100%) rename patches/{server => dropped-server}/0082-LivingEntity-broadcastItemBreak.patch (100%) create mode 100644 patches/server/0017-Add-utility-methods-to-deal-with-enchantments-a-bit-.patch rename patches/server/{0017-Silk-touch-spawners.patch => 0018-Silk-touch-spawners.patch} (98%) rename patches/server/{0018-Add-turtle-egg-block-options.patch => 0019-Add-turtle-egg-block-options.patch} (96%) rename patches/server/{0019-Logger-settings-suppressing-pointless-logs.patch => 0020-Logger-settings-suppressing-pointless-logs.patch} (97%) rename patches/server/{0020-Disable-outdated-build-check.patch => 0021-Disable-outdated-build-check.patch} (100%) rename patches/server/{0021-Giants-AI-settings.patch => 0022-Giants-AI-settings.patch} (95%) rename patches/server/{0022-Zombie-horse-naturally-spawn.patch => 0023-Zombie-horse-naturally-spawn.patch} (93%) rename patches/server/{0023-Charged-creeper-naturally-spawn.patch => 0024-Charged-creeper-naturally-spawn.patch} (96%) rename patches/server/{0024-Rabbit-naturally-spawn-toast-and-killer.patch => 0025-Rabbit-naturally-spawn-toast-and-killer.patch} (96%) rename patches/server/{0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch => 0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (100%) rename patches/server/{0026-Tulips-change-fox-type.patch => 0027-Tulips-change-fox-type.patch} (97%) rename patches/server/{0027-Breedable-Polar-Bears.patch => 0028-Breedable-Polar-Bears.patch} (95%) rename patches/server/{0028-Chickens-can-retaliate.patch => 0029-Chickens-can-retaliate.patch} (97%) rename patches/server/{0029-Add-option-to-set-armorstand-step-height.patch => 0030-Add-option-to-set-armorstand-step-height.patch} (90%) rename patches/server/{0030-Cat-spawning-options.patch => 0031-Cat-spawning-options.patch} (97%) rename patches/server/{0031-Cows-eat-mushrooms.patch => 0032-Cows-eat-mushrooms.patch} (91%) rename patches/server/{0032-Fix-cow-rotation-when-shearing-mooshroom.patch => 0033-Fix-cow-rotation-when-shearing-mooshroom.patch} (100%) rename patches/server/{0033-Pigs-give-saddle-back.patch => 0034-Pigs-give-saddle-back.patch} (96%) rename patches/server/{0034-Snowman-drop-and-put-back-pumpkin.patch => 0035-Snowman-drop-and-put-back-pumpkin.patch} (96%) rename patches/server/{0035-Ender-dragon-always-drop-full-exp.patch => 0036-Ender-dragon-always-drop-full-exp.patch} (95%) rename patches/server/{0036-Allow-soil-to-moisten-from-water-directly-under-it.patch => 0037-Allow-soil-to-moisten-from-water-directly-under-it.patch} (94%) rename patches/server/{0037-Minecart-settings-and-WASD-controls.patch => 0038-Minecart-settings-and-WASD-controls.patch} (98%) rename patches/server/{0038-Disable-loot-drops-on-death-by-cramming.patch => 0039-Disable-loot-drops-on-death-by-cramming.patch} (93%) rename patches/server/{0039-Option-to-toggle-milk-curing-bad-omen.patch => 0040-Option-to-toggle-milk-curing-bad-omen.patch} (95%) rename patches/server/{0040-Skip-events-if-there-s-no-listeners.patch => 0041-Skip-events-if-there-s-no-listeners.patch} (93%) rename patches/server/{0041-Add-permission-for-F3-N-debug.patch => 0042-Add-permission-for-F3-N-debug.patch} (89%) rename patches/server/{0042-Configurable-TPS-Catchup.patch => 0043-Configurable-TPS-Catchup.patch} (93%) rename patches/server/{0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch => 0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch} (96%) rename patches/server/{0044-Add-enderman-and-creeper-griefing-controls.patch => 0045-Add-enderman-and-creeper-griefing-controls.patch} (98%) rename patches/server/{0045-Villagers-follow-emerald-blocks.patch => 0046-Villagers-follow-emerald-blocks.patch} (96%) rename patches/server/{0046-Allow-leashing-villagers.patch => 0047-Allow-leashing-villagers.patch} (95%) rename patches/server/{0047-Implement-infinite-liquids.patch => 0048-Implement-infinite-liquids.patch} (97%) rename patches/server/{0048-Make-lava-flow-speed-configurable.patch => 0049-Make-lava-flow-speed-configurable.patch} (95%) rename patches/server/{0049-Add-player-death-exp-control-options.patch => 0050-Add-player-death-exp-control-options.patch} (97%) rename patches/server/{0050-Configurable-void-damage-height-and-damage.patch => 0051-Configurable-void-damage-height-and-damage.patch} (89%) rename patches/server/{0051-Add-canSaveToDisk-to-Entity.patch => 0052-Add-canSaveToDisk-to-Entity.patch} (90%) rename patches/server/{0052-Dispenser-curse-of-binding-protection.patch => 0053-Dispenser-curse-of-binding-protection.patch} (57%) rename patches/server/{0053-Add-option-for-boats-to-eject-players-on-land.patch => 0054-Add-option-for-boats-to-eject-players-on-land.patch} (95%) delete mode 100644 patches/server/0054-Mending-mends-most-damages-equipment-first.patch create mode 100644 patches/server/0055-Mending-mends-most-damages-equipment-first.patch rename patches/server/{0055-Add-5-second-tps-average-in-tps.patch => 0056-Add-5-second-tps-average-in-tps.patch} (100%) rename patches/server/{0056-Implement-elytra-settings.patch => 0057-Implement-elytra-settings.patch} (96%) rename patches/server/{0057-Item-entity-immunities.patch => 0058-Item-entity-immunities.patch} (94%) rename patches/server/{0058-Add-ping-command.patch => 0059-Add-ping-command.patch} (95%) rename patches/server/{0059-Add-demo-command.patch => 0060-Add-demo-command.patch} (95%) rename patches/server/{0060-Add-credits-command.patch => 0061-Add-credits-command.patch} (95%) rename patches/server/{0061-Configurable-jockey-options.patch => 0062-Configurable-jockey-options.patch} (99%) rename patches/server/{0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (99%) rename patches/server/{0063-Add-phantom-spawning-options.patch => 0064-Add-phantom-spawning-options.patch} (98%) rename patches/server/{0064-Implement-bed-explosion-options.patch => 0065-Implement-bed-explosion-options.patch} (97%) rename patches/server/{0065-Implement-respawn-anchor-explosion-options.patch => 0066-Implement-respawn-anchor-explosion-options.patch} (97%) rename patches/server/{0066-Add-allow-water-in-end-world-option.patch => 0067-Add-allow-water-in-end-world-option.patch} (97%) rename patches/server/{0067-Allow-color-codes-in-books.patch => 0068-Allow-color-codes-in-books.patch} (100%) rename patches/server/{0068-Entity-lifespan.patch => 0069-Entity-lifespan.patch} (87%) rename patches/server/{0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch => 0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch} (83%) rename patches/server/{0070-Squid-EAR-immunity.patch => 0071-Squid-EAR-immunity.patch} (95%) rename patches/server/{0071-Phantoms-burn-in-light.patch => 0072-Phantoms-burn-in-light.patch} (98%) rename patches/server/{0072-Configurable-villager-breeding.patch => 0073-Configurable-villager-breeding.patch} (95%) rename patches/server/{0073-Redstone-deactivates-spawners.patch => 0074-Redstone-deactivates-spawners.patch} (94%) rename patches/server/{0074-Totems-work-in-inventory.patch => 0075-Totems-work-in-inventory.patch} (96%) rename patches/server/{0075-Add-vindicator-johnny-spawn-chance.patch => 0076-Add-vindicator-johnny-spawn-chance.patch} (96%) rename patches/server/{0076-Dispensers-place-anvils-option.patch => 0077-Dispensers-place-anvils-option.patch} (96%) rename patches/server/{0077-Allow-anvil-colors.patch => 0078-Allow-anvil-colors.patch} (95%) rename patches/server/{0078-Add-option-to-disable-dolphin-treasure-searching.patch => 0079-Add-option-to-disable-dolphin-treasure-searching.patch} (95%) rename patches/server/{0079-Short-enderman-height.patch => 0080-Short-enderman-height.patch} (92%) rename patches/server/{0080-Stop-squids-floating-on-top-of-water.patch => 0081-Stop-squids-floating-on-top-of-water.patch} (91%) rename patches/server/{0081-Crying-obsidian-valid-for-portal-frames.patch => 0082-Crying-obsidian-valid-for-portal-frames.patch} (92%) rename patches/server/{0142-Config-to-allow-for-unsafe-enchants.patch => 0142-Config-to-allow-unsafe-enchants.patch} (64%) create mode 100644 patches/server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename patches/server/{0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (96%) rename patches/server/{0264-Fire-Immunity-API.patch => 0265-Fire-Immunity-API.patch} (87%) rename patches/server/{0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (91%) rename patches/server/{0266-Added-got-ram-event.patch => 0267-Added-got-ram-event.patch} (100%) rename patches/server/{0267-Log-skipped-entity-s-position.patch => 0268-Log-skipped-entity-s-position.patch} (91%) rename patches/server/{0268-End-Crystal-Cramming.patch => 0269-End-Crystal-Cramming.patch} (96%) rename patches/server/{0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (97%) rename patches/server/{0270-Add-attribute-clamping-and-armor-limit-config.patch => 0271-Add-attribute-clamping-and-armor-limit-config.patch} (91%) rename patches/server/{0271-Config-to-remove-explosion-radius-clamp.patch => 0272-Config-to-remove-explosion-radius-clamp.patch} (95%) rename patches/server/{0272-bonemealable-sugarcane-cactus-and-netherwart.patch => 0273-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0273-Add-PreExplodeEvents.patch => 0274-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0274-Improve-output-of-plugins-command.patch => 0275-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0275-Make-GUI-Great-Again.patch => 0276-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0276-Stored-Bee-API.patch => 0277-Stored-Bee-API.patch} (100%) rename patches/server/{0277-Shears-can-defuse-TNT.patch => 0278-Shears-can-defuse-TNT.patch} (97%) rename patches/server/{0278-Explorer-Map-API.patch => 0279-Explorer-Map-API.patch} (100%) rename patches/server/{0279-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0280-Option-Ocelot-Spawn-Under-Sea-Level.patch} (95%) rename patches/server/{0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0281-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 => 0282-Add-option-for-always-showing-item-in-player-death-m.patch} (95%) rename patches/server/{0282-place-end-crystal-on-any-block.patch => 0283-place-end-crystal-on-any-block.patch} (96%) rename patches/server/{0283-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0284-Add-option-to-disable-the-copper-oxidation-proximity.patch} (96%) rename patches/server/{0284-register-minecraft-debug-commands.patch => 0285-register-minecraft-debug-commands.patch} (95%) rename patches/server/{0285-Configurable-villager-search-radius.patch => 0286-Configurable-villager-search-radius.patch} (97%) rename patches/server/{0286-option-to-make-ravagers-afraid-of-rabbits.patch => 0287-option-to-make-ravagers-afraid-of-rabbits.patch} (96%) rename patches/server/{0287-config-for-startup-commands.patch => 0288-config-for-startup-commands.patch} (94%) rename patches/server/{0288-Config-to-reverse-bubble-column-flow.patch => 0289-Config-to-reverse-bubble-column-flow.patch} (93%) rename patches/server/{0289-Adopt-MaterialRerouting.patch => 0290-Adopt-MaterialRerouting.patch} (100%) delete mode 100644 patches/unapplied-server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch diff --git a/build.gradle.kts b/build.gradle.kts index f9c414929..a2c970179 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -56,7 +56,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.10.1:fat") + remapper("net.fabricmc:tiny-remapper:0.10.3:fat") decompiler("org.vineflower:vineflower:1.10.1") paperclip("io.papermc:paperclip:3.0.3") } diff --git a/gradle.properties b/gradle.properties index f9f4a786d..6234e47d9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21-R0.1-SNAPSHOT mcVersion = 1.21 -paperCommit = f873bcee24264ea91a3350af871222b09c4ee228 +paperCommit = a7f66333625febf891e5126bbd432707d38d1b1c org.gradle.caching = true org.gradle.parallel = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23a4..a4413138c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/patches/api/0017-ChatColor-conveniences.patch b/patches/api/0016-ChatColor-conveniences.patch similarity index 100% rename from patches/api/0017-ChatColor-conveniences.patch rename to patches/api/0016-ChatColor-conveniences.patch diff --git a/patches/api/0018-Item-entity-immunities.patch b/patches/api/0017-Item-entity-immunities.patch similarity index 100% rename from patches/api/0018-Item-entity-immunities.patch rename to patches/api/0017-Item-entity-immunities.patch diff --git a/patches/api/0019-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/api/0018-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/api/0019-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/api/0018-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/api/0020-Rabid-Wolf-API.patch b/patches/api/0019-Rabid-Wolf-API.patch similarity index 100% rename from patches/api/0020-Rabid-Wolf-API.patch rename to patches/api/0019-Rabid-Wolf-API.patch diff --git a/patches/api/0021-PlayerBookTooLargeEvent.patch b/patches/api/0020-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/api/0021-PlayerBookTooLargeEvent.patch rename to patches/api/0020-PlayerBookTooLargeEvent.patch diff --git a/patches/api/0022-Full-netherite-armor-grants-fire-resistance.patch b/patches/api/0021-Full-netherite-armor-grants-fire-resistance.patch similarity index 100% rename from patches/api/0022-Full-netherite-armor-grants-fire-resistance.patch rename to patches/api/0021-Full-netherite-armor-grants-fire-resistance.patch diff --git a/patches/api/0023-Add-EntityTeleportHinderedEvent.patch b/patches/api/0022-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from patches/api/0023-Add-EntityTeleportHinderedEvent.patch rename to patches/api/0022-Add-EntityTeleportHinderedEvent.patch diff --git a/patches/api/0024-Add-enchantment-target-for-bows-and-crossbows.patch b/patches/api/0023-Add-enchantment-target-for-bows-and-crossbows.patch similarity index 100% rename from patches/api/0024-Add-enchantment-target-for-bows-and-crossbows.patch rename to patches/api/0023-Add-enchantment-target-for-bows-and-crossbows.patch diff --git a/patches/api/0025-API-for-any-mob-to-burn-daylight.patch b/patches/api/0024-API-for-any-mob-to-burn-daylight.patch similarity index 81% rename from patches/api/0025-API-for-any-mob-to-burn-daylight.patch rename to patches/api/0024-API-for-any-mob-to-burn-daylight.patch index 7e51c8eea..b687e7184 100644 --- a/patches/api/0025-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0024-API-for-any-mob-to-burn-daylight.patch @@ -23,14 +23,15 @@ index 514611cf71cafc8e7e07ef901c2ccad03cd5f31b..8c9c4183785a47b64f084f4b8cdac53d // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index e1079c5c4be99e75a646c090189678dd131f210e..544b1d8aa5665fd2567605014adee6222d2cb312 100644 +index 5c29956c6db53440322330ff723c7087193641f1..05123a4833b8908d8ceee3e72d42f2289e33999a 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1455,5 +1455,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource - * @param slot Equipment slot to play break animation for +@@ -1447,4 +1447,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ - void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); + void setBodyYaw(float bodyYaw); + // Paper end - body yaw API + ++ // Purpur start - API for any mob to burn daylight + /** + * If this mob will burn in the sunlight + * @@ -44,5 +45,5 @@ index e1079c5c4be99e75a646c090189678dd131f210e..544b1d8aa5665fd2567605014adee622 + * @param shouldBurnInDay True to burn in sunlight + */ + void setShouldBurnInDay(boolean shouldBurnInDay); - // Purpur end ++ // Purpur end - API for any mob to burn daylight } diff --git a/patches/api/0026-Add-back-player-spawned-endermite-API.patch b/patches/api/0025-Add-back-player-spawned-endermite-API.patch similarity index 100% rename from patches/api/0026-Add-back-player-spawned-endermite-API.patch rename to patches/api/0025-Add-back-player-spawned-endermite-API.patch diff --git a/patches/api/0027-Fix-default-permission-system.patch b/patches/api/0026-Fix-default-permission-system.patch similarity index 100% rename from patches/api/0027-Fix-default-permission-system.patch rename to patches/api/0026-Fix-default-permission-system.patch diff --git a/patches/api/0028-Summoner-API.patch b/patches/api/0027-Summoner-API.patch similarity index 100% rename from patches/api/0028-Summoner-API.patch rename to patches/api/0027-Summoner-API.patch diff --git a/patches/api/0029-Clean-up-version-command-output.patch b/patches/api/0028-Clean-up-version-command-output.patch similarity index 100% rename from patches/api/0029-Clean-up-version-command-output.patch rename to patches/api/0028-Clean-up-version-command-output.patch diff --git a/patches/api/0030-Extended-OfflinePlayer-API.patch b/patches/api/0029-Extended-OfflinePlayer-API.patch similarity index 100% rename from patches/api/0030-Extended-OfflinePlayer-API.patch rename to patches/api/0029-Extended-OfflinePlayer-API.patch diff --git a/patches/api/0031-Added-the-ability-to-add-combustible-items.patch b/patches/api/0030-Added-the-ability-to-add-combustible-items.patch similarity index 100% rename from patches/api/0031-Added-the-ability-to-add-combustible-items.patch rename to patches/api/0030-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/api/0032-Grindstone-API.patch b/patches/api/0031-Grindstone-API.patch similarity index 100% rename from patches/api/0032-Grindstone-API.patch rename to patches/api/0031-Grindstone-API.patch diff --git a/patches/api/0033-Shears-can-have-looting-enchantment.patch b/patches/api/0032-Shears-can-have-looting-enchantment.patch similarity index 100% rename from patches/api/0033-Shears-can-have-looting-enchantment.patch rename to patches/api/0032-Shears-can-have-looting-enchantment.patch diff --git a/patches/api/0034-Lobotomize-stuck-villagers.patch b/patches/api/0033-Lobotomize-stuck-villagers.patch similarity index 100% rename from patches/api/0034-Lobotomize-stuck-villagers.patch rename to patches/api/0033-Lobotomize-stuck-villagers.patch diff --git a/patches/api/0035-Add-local-difficulty-api.patch b/patches/api/0034-Add-local-difficulty-api.patch similarity index 100% rename from patches/api/0035-Add-local-difficulty-api.patch rename to patches/api/0034-Add-local-difficulty-api.patch diff --git a/patches/api/0036-Remove-Timings.patch b/patches/api/0035-Remove-Timings.patch similarity index 100% rename from patches/api/0036-Remove-Timings.patch rename to patches/api/0035-Remove-Timings.patch diff --git a/patches/api/0037-Add-Bee-API.patch b/patches/api/0036-Add-Bee-API.patch similarity index 100% rename from patches/api/0037-Add-Bee-API.patch rename to patches/api/0036-Add-Bee-API.patch diff --git a/patches/api/0038-Debug-Marker-API.patch b/patches/api/0037-Debug-Marker-API.patch similarity index 100% rename from patches/api/0038-Debug-Marker-API.patch rename to patches/api/0037-Debug-Marker-API.patch diff --git a/patches/api/0039-Add-death-screen-API.patch b/patches/api/0038-Add-death-screen-API.patch similarity index 100% rename from patches/api/0039-Add-death-screen-API.patch rename to patches/api/0038-Add-death-screen-API.patch diff --git a/patches/api/0040-Language-API.patch b/patches/api/0039-Language-API.patch similarity index 100% rename from patches/api/0040-Language-API.patch rename to patches/api/0039-Language-API.patch diff --git a/patches/api/0041-Add-log-suppression-for-LibraryLoader.patch b/patches/api/0040-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/api/0041-Add-log-suppression-for-LibraryLoader.patch rename to patches/api/0040-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/api/0042-Fire-Immunity-API.patch b/patches/api/0041-Fire-Immunity-API.patch similarity index 100% rename from patches/api/0042-Fire-Immunity-API.patch rename to patches/api/0041-Fire-Immunity-API.patch diff --git a/patches/api/0043-Added-goat-ram-event.patch b/patches/api/0042-Added-goat-ram-event.patch similarity index 100% rename from patches/api/0043-Added-goat-ram-event.patch rename to patches/api/0042-Added-goat-ram-event.patch diff --git a/patches/api/0044-Add-PreExplodeEvents.patch b/patches/api/0043-Add-PreExplodeEvents.patch similarity index 100% rename from patches/api/0044-Add-PreExplodeEvents.patch rename to patches/api/0043-Add-PreExplodeEvents.patch diff --git a/patches/api/0045-Stored-Bee-API.patch b/patches/api/0044-Stored-Bee-API.patch similarity index 100% rename from patches/api/0045-Stored-Bee-API.patch rename to patches/api/0044-Stored-Bee-API.patch diff --git a/patches/api/0046-Explorer-Map-API.patch b/patches/api/0045-Explorer-Map-API.patch similarity index 100% rename from patches/api/0046-Explorer-Map-API.patch rename to patches/api/0045-Explorer-Map-API.patch diff --git a/patches/api/0047-Stonecutter-damage.patch b/patches/api/0046-Stonecutter-damage.patch similarity index 100% rename from patches/api/0047-Stonecutter-damage.patch rename to patches/api/0046-Stonecutter-damage.patch diff --git a/patches/api/0016-LivingEntity-broadcastItemBreak.patch b/patches/dropped-api/0016-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/api/0016-LivingEntity-broadcastItemBreak.patch rename to patches/dropped-api/0016-LivingEntity-broadcastItemBreak.patch diff --git a/patches/server/0082-LivingEntity-broadcastItemBreak.patch b/patches/dropped-server/0082-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/server/0082-LivingEntity-broadcastItemBreak.patch rename to patches/dropped-server/0082-LivingEntity-broadcastItemBreak.patch diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch index 17987e9a5..42a1dc007 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -179,10 +179,10 @@ index 6e1f92b45504cef0c4dcbbebf3df339ef4cad0a1..48e8b7405270632130721e87579ee243 .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..4f015144be0a7a448c6c2b0765232c02ad405d09 +index 0000000000000000000000000000000000000000..f06fed3ae5631d46a953617cfdd766a02e628515 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -0,0 +1,175 @@ +@@ -0,0 +1,177 @@ +package org.purpurmc.purpur; + +import com.google.common.base.Throwables; @@ -190,7 +190,9 @@ index 0000000000000000000000000000000000000000..4f015144be0a7a448c6c2b0765232c02 +import com.mojang.datafixers.util.Pair; +import net.kyori.adventure.bossbar.BossBar; +import net.kyori.adventure.text.minimessage.MiniMessage; ++import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; ++import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.effect.MobEffect; diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch index 341262efc..764e047f8 100644 --- a/patches/server/0005-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -36,7 +36,7 @@ index 92e9a5e38cc60e3ef6d7e2216bf4a85cb2464cdd..47afcbc699a992358871fe90929f71b4 public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0d0b07c9199be9ca0d5ac3feb1d44f149ba69283..b708323c6ad3ff40e6f2af5bd24988a63918f37c 100644 +index 3d30427e75bdfb9cf453fb5cd2a344227da1641a..18c19b6029a167658623c3cf9814bb0857338117 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1015,6 +1015,20 @@ public abstract class PlayerList { @@ -81,10 +81,10 @@ index bb1a60180e58c1333e7bb33e8acf1b0225eda8a8..c83e80ebdbbfb2d0e08561a44486a308 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 14db8510af7465eb663501008ca35f8ec63bfe30..134af1086b63bcdcca4bce9f3534bd19a82db774 100644 +index 437956b18d5bffd93c46e0be34cf413e9c704e5a..9e5eda675411916f40a82d7c60e488cf790381e3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3995,6 +3995,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4015,6 +4015,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return SlotAccess.NULL; } diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 27d407c47..0a70acb37 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -34,7 +34,7 @@ index 7e32eecacf6f5e832dbfd0455e4bab1302a33d46..32d574d1f52577c67883d99309ff03a9 this.profiler.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 fb0db51493e343c781876b9db773fa3fc9a8d666..e8ed80cf7d7519eab614e5ae5326755b40c76623 100644 +index b81ac6db8ba1ee0722e9e85f8de8ef91169a3198..bb61ccf3246ea69cf1eb097a95c3324d0802dae1 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -229,6 +229,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -66,10 +66,10 @@ index 47afcbc699a992358871fe90929f71b4d47d9601..ae41c955ec6cfe284fec5f8e79cb827e 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 be2e97e4de911ad9570a9b4e9f3c5fafa93f6203..224a4d09bca571e6b440ea3011fbd13f785c78db 100644 +index 7796e191747be545e744564a2b0b65790f69114d..82f60de72bc0f9b01eb97dbc0e296e80579b0968 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2716,6 +2716,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2717,6 +2717,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -77,9 +77,9 @@ index be2e97e4de911ad9570a9b4e9f3c5fafa93f6203..224a4d09bca571e6b440ea3011fbd13f + // Entity in bucket - SPIGOT-4048 and SPIGOT-6859a 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.getBukkitEntity().update(ServerGamePacketListenerImpl.this.player); + 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 134af1086b63bcdcca4bce9f3534bd19a82db774..67aa0563c33bc9a98facfff6bf5a1a8ace483d99 100644 +index 9e5eda675411916f40a82d7c60e488cf790381e3..f332458dbc26bb0e77ca9b7446f4ae800c359d13 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -383,7 +383,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -91,7 +91,7 @@ index 134af1086b63bcdcca4bce9f3534bd19a82db774..67aa0563c33bc9a98facfff6bf5a1a8a private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2933,6 +2933,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2964,6 +2964,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index 134af1086b63bcdcca4bce9f3534bd19a82db774..67aa0563c33bc9a98facfff6bf5a1a8a this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -2972,6 +2979,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3003,6 +3010,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -120,7 +120,7 @@ index 134af1086b63bcdcca4bce9f3534bd19a82db774..67aa0563c33bc9a98facfff6bf5a1a8a if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4814,4 +4829,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4834,4 +4849,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end - Expose entity id counter @@ -190,7 +190,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..aa76a24421cdb3908a3544d92eb3d1e3 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 25a7dfddb44a11f6e20c459141a61270c0c12d4c..6b5d09b34c9fe88548a14e64e9aa42841e9031f5 100644 +index e980c8c356b30d25e2fc5a73b91ad2c6edd4fe05..661db9eb343b32f97d6e7ccb93e56e24213b6367 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -237,9 +237,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1333,7 +1333,7 @@ index e108f876d3f129c6287f13d68427aed2a6f0c5b1..fff8abfe14be823867aa9bd145146763 } } diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 97931bfd360725945ab9606ff698b518ae101076..0549fafbd6e76cf1b0d4e56e4fc745c4773f4c5d 100644 +index 97931bfd360725945ab9606ff698b518ae101076..eecf37d4dba41cb96d0893c905567130e00b66e9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -124,12 +124,68 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } -@@ -263,6 +377,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -263,6 +378,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected void customServerAiStep() { @@ -2999,7 +3000,7 @@ index d3b4d492aee380dc17f4232d90eaae4f07bb9f86..57a91dc073739b81d5acb973bf8c9c74 int i; if (this.getInvulnerableTicks() > 0) { -@@ -580,11 +704,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -580,11 +705,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } public int getAlternativeTarget(int headIndex) { @@ -5084,10 +5085,10 @@ index 55fd997a4e894eeab24de269d59e486196ffbe8d..63f48841c849ff49d9d43efc5de8952c public boolean hurt(DamageSource source, float amount) { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index b8eb9166e44da8745a056bf68f2f9316ce25d7a7..3629a6f99e99ca686446a23eea0329771c4d11cc 100644 +index 2cde808bfa797256409879505ba205a71f381981..84479dad6078a2a12e6b977185bdbbe7f6b36576 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1293,4 +1293,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1297,4 +1297,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name @@ -5144,10 +5145,10 @@ index bd6fee3e3ad9116802ff8bb57bfa741b881c4057..9e5d4e8a70aec8619db68d75ef3447cf event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4f015144be0a7a448c6c2b0765232c02ad405d09..169722178ba7cd9543a029741e81d025a659ffe2 100644 +index f06fed3ae5631d46a953617cfdd766a02e628515..08f38c2a87feb138b202f0934abb3724ef79c4c1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -172,4 +172,9 @@ public class PurpurConfig { +@@ -174,4 +174,9 @@ public class PurpurConfig { } return builder.build(); } diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index 780bce834..1d3ead096 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -269,7 +269,7 @@ index fff8abfe14be823867aa9bd145146763cfe83148..0fd0358d287604d0ff1f52f0c7163358 if (this.isLazy()) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 0549fafbd6e76cf1b0d4e56e4fc745c4773f4c5d..17983481386709110b7c4749ec8432866454492d 100644 +index eecf37d4dba41cb96d0893c905567130e00b66e9..d9e1ff687bb478af4d9c669379477737d053e83d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -186,6 +186,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder= items.length) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 169722178ba7cd9543a029741e81d025a659ffe2..db0d57060cae1f5fd51087a15134ca5f389511bc 100644 +index 08f38c2a87feb138b202f0934abb3724ef79c4c1..5f51a9d16912ecbd9d015f5158d50563904a461f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -177,4 +177,39 @@ public class PurpurConfig { +@@ -179,4 +179,39 @@ public class PurpurConfig { private static void messages() { cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); } diff --git a/patches/server/0010-AFK-API.patch b/patches/server/0010-AFK-API.patch index 616810528..d8d3a0518 100644 --- a/patches/server/0010-AFK-API.patch +++ b/patches/server/0010-AFK-API.patch @@ -265,10 +265,10 @@ index e099eb16dbe2bdf73874199ad57c7027498dd4ba..2fba6458aa097d9375df7d2f38efd100 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index db0d57060cae1f5fd51087a15134ca5f389511bc..d2f3e864aa4d1c5d3ee8bb8f1e36787b1ca45f2e 100644 +index 5f51a9d16912ecbd9d015f5158d50563904a461f..d80e5f2280aa156bbe455f9638d84f8243dbdaf7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -174,8 +174,18 @@ public class PurpurConfig { +@@ -176,8 +176,18 @@ public class PurpurConfig { } public static String cannotRideMob = "You cannot mount that mob"; diff --git a/patches/server/0012-Configurable-server-mod-name.patch b/patches/server/0012-Configurable-server-mod-name.patch index 07415d6f5..59f6826f7 100644 --- a/patches/server/0012-Configurable-server-mod-name.patch +++ b/patches/server/0012-Configurable-server-mod-name.patch @@ -18,10 +18,10 @@ index 32d574d1f52577c67883d99309ff03a9fae123dc..c8616c6c9f555079cb8433da4dd9dcf9 public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d2f3e864aa4d1c5d3ee8bb8f1e36787b1ca45f2e..fdf726c455f9a4de822644c703de7ffeab6b3702 100644 +index d80e5f2280aa156bbe455f9638d84f8243dbdaf7..9960d7791d37fb7b43e8ffc3351528510ac537ca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -188,6 +188,11 @@ public class PurpurConfig { +@@ -190,6 +190,11 @@ public class PurpurConfig { afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix))); } diff --git a/patches/server/0013-Lagging-threshold.patch b/patches/server/0013-Lagging-threshold.patch index f09e73d35..28e7c5ccc 100644 --- a/patches/server/0013-Lagging-threshold.patch +++ b/patches/server/0013-Lagging-threshold.patch @@ -40,10 +40,10 @@ index 90e12b1eb1180d066e7162bef0adeb9d3dec8721..3afa845c073aec1f60a932dc825f5338 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index fdf726c455f9a4de822644c703de7ffeab6b3702..f80414b9bb7fb1f2849749481209648516fb28fb 100644 +index 9960d7791d37fb7b43e8ffc3351528510ac537ca..9e6bcdaa2b3dabb2a7c50034eed81f0064a2f98f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -193,6 +193,11 @@ public class PurpurConfig { +@@ -195,6 +195,11 @@ public class PurpurConfig { serverModName = getString("settings.server-mod-name", serverModName); } diff --git a/patches/server/0014-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/server/0014-PlayerSetSpawnerTypeWithEggEvent.patch index adfe8bbfd..60163416e 100644 --- a/patches/server/0014-PlayerSetSpawnerTypeWithEggEvent.patch +++ b/patches/server/0014-PlayerSetSpawnerTypeWithEggEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerSetSpawnerTypeWithEggEvent diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 842b0cec0397d7ae5166617627340ffac0e35db1..76d0c482f1ab251963ca2e0c312acad52a7f9901 100644 +index 842b0cec0397d7ae5166617627340ffac0e35db1..02257d9c7ceb81b8fccca0013ef5090feac1e19e 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -330,6 +330,16 @@ public class EntityType implements FeatureElement, EntityTypeT @@ -14,7 +14,7 @@ index 842b0cec0397d7ae5166617627340ffac0e35db1..76d0c482f1ab251963ca2e0c312acad5 + // Purpur start + public static EntityType getFromBukkitType(org.bukkit.entity.EntityType bukkitType) { -+ return getFromKey(new ResourceLocation(bukkitType.getKey().toString())); ++ return getFromKey(ResourceLocation.parse(bukkitType.getKey().toString())); + } + + public static EntityType getFromKey(ResourceLocation location) { @@ -43,7 +43,7 @@ index 842b0cec0397d7ae5166617627340ffac0e35db1..76d0c482f1ab251963ca2e0c312acad5 if (this.descriptionId == null) { this.descriptionId = Util.makeDescriptionId("entity", BuiltInRegistries.ENTITY_TYPE.getKey(this)); diff --git a/src/main/java/net/minecraft/world/item/SpawnEggItem.java b/src/main/java/net/minecraft/world/item/SpawnEggItem.java -index 9cea8da84f39bb3f687139ef213ccea358724dee..076e6858222b92f8409f1f5cad398582c1fd6bcb 100644 +index 9cea8da84f39bb3f687139ef213ccea358724dee..d43be19fdb4ca917d08f84cda5a67667960f28fe 100644 --- a/src/main/java/net/minecraft/world/item/SpawnEggItem.java +++ b/src/main/java/net/minecraft/world/item/SpawnEggItem.java @@ -74,6 +74,15 @@ public class SpawnEggItem extends Item { @@ -53,7 +53,7 @@ index 9cea8da84f39bb3f687139ef213ccea358724dee..076e6858222b92f8409f1f5cad398582 + + // Purpur start + org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); -+ org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent event = new org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), bukkitBlock, (org.bukkit.block.CreatureSpawner) bukkitBlock.getState(), org.bukkit.entity.EntityType.fromName(entitytypes.getName())); ++ org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent event = new org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), bukkitBlock, (org.bukkit.block.CreatureSpawner) bukkitBlock.getState(), org.bukkit.entity.EntityType.fromName(entitytypes.getName())); + if (!event.callEvent()) { + return InteractionResult.FAIL; + } diff --git a/patches/server/0015-Anvil-API.patch b/patches/server/0015-Anvil-API.patch index d824ef17e..0f77bfc16 100644 --- a/patches/server/0015-Anvil-API.patch +++ b/patches/server/0015-Anvil-API.patch @@ -5,136 +5,138 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -index 32910f677b0522ac8ec513fa0d00b714b52cfae4..f85eef14b91a0ada1f6f4b13ab3966f051ff92d3 100644 +index 32910f677b0522ac8ec513fa0d00b714b52cfae4..c491291b522aebf34c7d990d2b485d1a0d19cdcd 100644 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -76,6 +76,7 @@ public abstract class AbstractContainerMenu { @Nullable private ContainerSynchronizer synchronizer; private boolean suppressRemoteUpdates; -+ @javax.annotation.Nullable protected ItemStack activeQuickItem = null; // Purpur ++ @Nullable protected ItemStack activeQuickItem = null; // Purpur - Anvil API // CraftBukkit start public boolean checkReachable = true; diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..2348ee0065367ade5354d54aac53ab23d43d0622 100644 +index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..99bfa7cdc58c690d6f0c742dafedd40cace3223f 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -25,6 +25,13 @@ import org.slf4j.Logger; +@@ -25,6 +25,12 @@ import org.slf4j.Logger; import org.bukkit.craftbukkit.inventory.CraftInventoryView; // CraftBukkit end -+// Purpur start -+import net.minecraft.nbt.IntTag; ++// Purpur start - Anvil API +import net.minecraft.network.protocol.game.ClientboundContainerSetDataPacket; +import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket; +import net.minecraft.server.level.ServerPlayer; -+// Purpur end ++// Purpur end - Anvil API + public class AnvilMenu extends ItemCombinerMenu { public static final int INPUT_SLOT = 0; -@@ -53,6 +60,8 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -53,6 +59,10 @@ public class AnvilMenu extends ItemCombinerMenu { public int maximumRepairCost = 40; private CraftInventoryView bukkitEntity; // CraftBukkit end -+ public boolean bypassCost = false; // Purpur -+ public boolean canDoUnsafeEnchants = false; // Purpur ++ // Purpur start - Anvil API ++ public boolean bypassCost = false; ++ public boolean canDoUnsafeEnchants = false; ++ // Purpur end - Anvil API public AnvilMenu(int syncId, Inventory inventory) { this(syncId, inventory, ContainerLevelAccess.NULL); -@@ -80,12 +89,15 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -80,12 +90,17 @@ public class AnvilMenu extends ItemCombinerMenu { @Override protected boolean mayPickup(Player player, boolean present) { - return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST && present; // CraftBukkit - allow cost 0 like a free item -+ return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur ++ return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && (this.bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur - Anvil API } @Override protected void onTake(Player player, ItemStack stack) { -+ ItemStack itemstack = activeQuickItem == null ? stack : activeQuickItem; // Purpur -+ if (org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent.getHandlerList().getRegisteredListeners().length > 0) new org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack)).callEvent(); // Purpur ++ // Purpur start - Anvil API ++ ItemStack itemstack = this.activeQuickItem != null ? this.activeQuickItem : stack; ++ if (org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent.getHandlerList().getRegisteredListeners().length > 0) new org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack)).callEvent(); ++ // Purpur end - Anvil API if (!player.getAbilities().instabuild) { -+ if (bypassCost) ((ServerPlayer) player).lastSentExp = -1; else // Purpur ++ if (this.bypassCost) ((ServerPlayer) player).lastSentExp = -1; else // Purpur - Anvil API player.giveExperienceLevels(-this.cost.get()); } -@@ -136,6 +148,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -136,6 +151,12 @@ public class AnvilMenu extends ItemCombinerMenu { @Override public void createResult() { -+ // Purpur start -+ bypassCost = false; -+ canDoUnsafeEnchants = false; ++ // Purpur start - Anvil API ++ this.bypassCost = false; ++ this.canDoUnsafeEnchants = false; + if (org.purpurmc.purpur.event.inventory.AnvilUpdateResultEvent.getHandlerList().getRegisteredListeners().length > 0) new org.purpurmc.purpur.event.inventory.AnvilUpdateResultEvent(getBukkitView()).callEvent(); -+ // Purpur end ++ // Purpur end - Anvil API + ItemStack itemstack = this.inputSlots.getItem(0); this.cost.set(1); -@@ -143,7 +161,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -143,7 +164,7 @@ public class AnvilMenu extends ItemCombinerMenu { long j = 0L; byte b0 = 0; - if (!itemstack.isEmpty() && EnchantmentHelper.canStoreEnchantments(itemstack)) { -+ if (!itemstack.isEmpty() && canDoUnsafeEnchants || EnchantmentHelper.canStoreEnchantments(itemstack)) { // Purpur ++ if (!itemstack.isEmpty() && this.canDoUnsafeEnchants || EnchantmentHelper.canStoreEnchantments(itemstack)) { // Purpur - Anvil API ItemStack itemstack1 = itemstack.copy(); ItemStack itemstack2 = this.inputSlots.getItem(1); ItemEnchantments.Mutable itemenchantments_a = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemstack1)); -@@ -221,8 +239,8 @@ public class AnvilMenu extends ItemCombinerMenu { - while (iterator1.hasNext()) { +@@ -222,7 +243,7 @@ public class AnvilMenu extends ItemCombinerMenu { Holder holder1 = (Holder) iterator1.next(); -- if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) { + if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) { - flag3 = false; -+ if (!holder1.equals(holder) && !enchantment.isCompatibleWith((Enchantment) holder1.value())) { -+ flag3 = canDoUnsafeEnchants; // Purpur ++ flag3 = this.canDoUnsafeEnchants; // Purpur - Anvil API ++i; } } -@@ -280,6 +298,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -280,6 +301,12 @@ public class AnvilMenu extends ItemCombinerMenu { this.cost.set(this.maximumRepairCost - 1); // CraftBukkit } -+ // Purpur start -+ if (bypassCost && cost.get() >= maximumRepairCost) { -+ cost.set(maximumRepairCost - 1); ++ // Purpur start - Anvil API ++ if (this.bypassCost && this.cost.get() >= this.maximumRepairCost) { ++ this.cost.set(this.maximumRepairCost - 1); + } -+ // Purpur end ++ // Purpur end - Anvil API + if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit itemstack1 = ItemStack.EMPTY; } -@@ -301,6 +325,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -301,6 +328,13 @@ public class AnvilMenu extends ItemCombinerMenu { org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemstack1); // CraftBukkit this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); -+ // Purpur start -+ if (canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) { -+ ((ServerPlayer) player).connection.send(new ClientboundContainerSetSlotPacket(containerId, incrementStateId(), 2, itemstack1)); -+ ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); ++ ++ // Purpur start - Anvil API ++ if (this.canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) { ++ ((ServerPlayer) this.player).connection.send(new ClientboundContainerSetSlotPacket(this.containerId, this.incrementStateId(), 2, itemstack1)); ++ ((ServerPlayer) this.player).connection.send(new ClientboundContainerSetDataPacket(this.containerId, 0, this.cost.get())); + } -+ // Purpur end ++ // Purpur end - Anvil API } else { org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), ItemStack.EMPTY); // CraftBukkit this.cost.set(AnvilMenu.DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item diff --git a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java -index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..7215af6cc91f48b040c23c54536d4aac8d293497 100644 +index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..b3bd9bbd96efc4784b86c2be6bb857da4db919b8 100644 --- a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java @@ -178,7 +178,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { return ItemStack.EMPTY; } -+ this.activeQuickItem = itemstack; // Purpur ++ this.activeQuickItem = itemstack; // Purpur - Anvil API slot1.onTake(player, itemstack1); -+ this.activeQuickItem = null; // Purpur ++ this.activeQuickItem = null; // Purpur - Anvil API } return itemstack; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..0a5841fa26698e60bdeadbb58b9343fe1ff08a28 100644 +index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..062783f30f41761c34d7679844e443e9a55c6011 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java @@ -9,7 +9,7 @@ import org.bukkit.inventory.AnvilInventory; @@ -142,7 +144,7 @@ index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..0a5841fa26698e60bdeadbb58b9343fe private final Location location; - private final AnvilMenu container; -+ public final AnvilMenu container; // Purpur - private -> public ++ public final AnvilMenu container; // Purpur - private -> public - Anvil API public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory, AnvilMenu container) { super(inventory, resultInventory); @@ -151,25 +153,25 @@ index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..0a5841fa26698e60bdeadbb58b9343fe this.container.maximumRepairCost = levels; } + -+ // Purpur start ++ // Purpur start - Anvil API + @Override + public boolean canBypassCost() { -+ return container.bypassCost; ++ return this.container.bypassCost; + } + + @Override + public void setBypassCost(boolean bypassCost) { -+ container.bypassCost = bypassCost; ++ this.container.bypassCost = bypassCost; + } + + @Override + public boolean canDoUnsafeEnchants() { -+ return container.canDoUnsafeEnchants; ++ return this.container.canDoUnsafeEnchants; + } + + @Override + public void setDoUnsafeEnchants(boolean canDoUnsafeEnchants) { -+ container.canDoUnsafeEnchants = canDoUnsafeEnchants; ++ this.container.canDoUnsafeEnchants = canDoUnsafeEnchants; + } -+ // Purpur end ++ // Purpur end - Anvil API } diff --git a/patches/server/0016-Alternative-Keepalive-Handling.patch b/patches/server/0016-Alternative-Keepalive-Handling.patch index 43382c339..8d5fe3362 100644 --- a/patches/server/0016-Alternative-Keepalive-Handling.patch +++ b/patches/server/0016-Alternative-Keepalive-Handling.patch @@ -56,10 +56,10 @@ index b66d4047b5e529f5f737efb0ff1edda805de1316..e7075e0c59fe99229142ecb518fadc5b if (this.keepAlivePending && !this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // Paper - check keepalive limit, don't fire if already disconnected this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f80414b9bb7fb1f2849749481209648516fb28fb..e4c01fc54f832f895adec75ac855b614ff77d19a 100644 +index 9e6bcdaa2b3dabb2a7c50034eed81f0064a2f98f..4ddeff1d34f5e3f7f9c6cfe1c517be0e2d57f86f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -198,6 +198,11 @@ public class PurpurConfig { +@@ -200,6 +200,11 @@ public class PurpurConfig { laggingThreshold = getDouble("settings.lagging-threshold", laggingThreshold); } diff --git a/patches/server/0017-Add-utility-methods-to-deal-with-enchantments-a-bit-.patch b/patches/server/0017-Add-utility-methods-to-deal-with-enchantments-a-bit-.patch new file mode 100644 index 000000000..fe495013e --- /dev/null +++ b/patches/server/0017-Add-utility-methods-to-deal-with-enchantments-a-bit-.patch @@ -0,0 +1,25 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Krakenied +Date: Sat, 15 Jun 2024 14:31:48 +0200 +Subject: [PATCH] Add utility methods to deal with enchantments a bit easier + + +diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +index fce49b17905ab97e691aa8499a5dfed67adf0c40..97542361144a950f5b60021874688775226f292d 100644 +--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java ++++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +@@ -559,4 +559,14 @@ public class EnchantmentHelper { + interface EnchantmentVisitor { + void accept(Holder enchantment, int level); + } ++ ++ // Purpur start - Add utility methods to deal with enchantments a bit easier ++ public static Holder.Reference getEnchantmentHolder(ResourceKey enchantment) { ++ return net.minecraft.server.MinecraftServer.getServer().registryAccess().lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(enchantment); ++ } ++ ++ public static int getItemEnchantmentLevel(ResourceKey enchantment, ItemStack stack) { ++ return getItemEnchantmentLevel(getEnchantmentHolder(enchantment), stack); ++ } ++ // Purpur end - Add utility methods to deal with enchantments a bit easier + } diff --git a/patches/server/0017-Silk-touch-spawners.patch b/patches/server/0018-Silk-touch-spawners.patch similarity index 98% rename from patches/server/0017-Silk-touch-spawners.patch rename to patches/server/0018-Silk-touch-spawners.patch index 44c5985f2..004f17b3d 100644 --- a/patches/server/0017-Silk-touch-spawners.patch +++ b/patches/server/0018-Silk-touch-spawners.patch @@ -100,7 +100,7 @@ index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..66c17bdfecdfbcfb2d853e561432dd51 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 2f2986f9f7a241c4d7a1e065126dbbae601f7fe5..4beb1df3b5bdeb2e3de7f8e7ca9a53bf0f6be277 100644 +index 2f2986f9f7a241c4d7a1e065126dbbae601f7fe5..b51c96bdc9871d7ef7d7eff2b24b0f516bb97236 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -108,6 +108,38 @@ public class PurpurWorldConfig { @@ -134,7 +134,7 @@ index 2f2986f9f7a241c4d7a1e065126dbbae601f7fe5..4beb1df3b5bdeb2e3de7f8e7ca9a53bf + "minecraft:diamond_pickaxe", + "minecraft:netherite_pickaxe" + )).forEach(key -> { -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); + if (item != Items.AIR) silkTouchTools.add(item); + }); + } diff --git a/patches/server/0018-Add-turtle-egg-block-options.patch b/patches/server/0019-Add-turtle-egg-block-options.patch similarity index 96% rename from patches/server/0018-Add-turtle-egg-block-options.patch rename to patches/server/0019-Add-turtle-egg-block-options.patch index 42a33af4c..7fe1c45b2 100644 --- a/patches/server/0018-Add-turtle-egg-block-options.patch +++ b/patches/server/0019-Add-turtle-egg-block-options.patch @@ -36,7 +36,7 @@ index a6f408e56fa6c9de82fd93555fe21e1b11ce1022..c7377d04ceac3ea624117439783a443c } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4beb1df3b5bdeb2e3de7f8e7ca9a53bf0f6be277..aba1a09a949da1e1c70caf665b078c8979a5f746 100644 +index b51c96bdc9871d7ef7d7eff2b24b0f516bb97236..9c0362396ae2646ee9caf6756ecdef3a605328a7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -140,6 +140,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0019-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch similarity index 97% rename from patches/server/0019-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0020-Logger-settings-suppressing-pointless-logs.patch index 0f615ed60..43bc7fbe9 100644 --- a/patches/server/0019-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch @@ -53,10 +53,10 @@ index dc591702d1ad41209bb80e8d05f4ca11f20816f2..a63f090e75cf7d6561276c4297305d92 if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) { new Exception().printStackTrace(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e4c01fc54f832f895adec75ac855b614ff77d19a..321a10764b2a0787a49d7b8948e40cfe0a73f591 100644 +index 4ddeff1d34f5e3f7f9c6cfe1c517be0e2d57f86f..49737a87b75c971b823bc1f3a20c17faee9d537c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -237,4 +237,15 @@ public class PurpurConfig { +@@ -239,4 +239,15 @@ public class PurpurConfig { org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } diff --git a/patches/server/0020-Disable-outdated-build-check.patch b/patches/server/0021-Disable-outdated-build-check.patch similarity index 100% rename from patches/server/0020-Disable-outdated-build-check.patch rename to patches/server/0021-Disable-outdated-build-check.patch diff --git a/patches/server/0021-Giants-AI-settings.patch b/patches/server/0022-Giants-AI-settings.patch similarity index 95% rename from patches/server/0021-Giants-AI-settings.patch rename to patches/server/0022-Giants-AI-settings.patch index 779886f0a..688067e53 100644 --- a/patches/server/0021-Giants-AI-settings.patch +++ b/patches/server/0022-Giants-AI-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..ca53c5b45c119dce1c713dbf931251f89c90cb8d 100644 +index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..0d211d4c120186667682dbb5f320ec45ef6c235d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -30,8 +30,23 @@ public class Giant extends Monster { @@ -43,7 +43,7 @@ index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..ca53c5b45c119dce1c713dbf931251f8 + net.minecraft.world.entity.SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData); + if (groupData == null) { + populateDefaultEquipmentSlots(this.random, difficulty); -+ populateDefaultEquipmentEnchantments(this.random, difficulty); ++ populateDefaultEquipmentEnchantments(world, this.random, difficulty); + } + return groupData; + } @@ -71,7 +71,7 @@ index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..ca53c5b45c119dce1c713dbf931251f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aba1a09a949da1e1c70caf665b078c8979a5f746..a4e540f63746bf36d679fd632e0cf9924a0d2370 100644 +index 9c0362396ae2646ee9caf6756ecdef3a605328a7..d60746b2a05a93683be845bdf36131c71091ed9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -576,6 +576,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0022-Zombie-horse-naturally-spawn.patch b/patches/server/0023-Zombie-horse-naturally-spawn.patch similarity index 93% rename from patches/server/0022-Zombie-horse-naturally-spawn.patch rename to patches/server/0023-Zombie-horse-naturally-spawn.patch index 964a198c7..2221026ca 100644 --- a/patches/server/0022-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0023-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 e8ed80cf7d7519eab614e5ae5326755b40c76623..c9efd62cba540f7cdd8a7ce37d455c9b190c5a12 100644 +index bb61ccf3246ea69cf1eb097a95c3324d0802dae1..cad36bdd7463e23f23ed77f1b430031a19145de4 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -815,10 +815,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -814,10 +814,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. 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) { @@ -30,7 +30,7 @@ index e8ed80cf7d7519eab614e5ae5326755b40c76623..c9efd62cba540f7cdd8a7ce37d455c9b entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a4e540f63746bf36d679fd632e0cf9924a0d2370..72172293aedfef696b6649946746d39edf056363 100644 +index d60746b2a05a93683be845bdf36131c71091ed9b..f0ea2bcb88630395d6f2bf2e7a658abcad124be4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1509,6 +1509,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0023-Charged-creeper-naturally-spawn.patch b/patches/server/0024-Charged-creeper-naturally-spawn.patch similarity index 96% rename from patches/server/0023-Charged-creeper-naturally-spawn.patch rename to patches/server/0024-Charged-creeper-naturally-spawn.patch index 33380e4a7..53c19fb8b 100644 --- a/patches/server/0023-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0024-Charged-creeper-naturally-spawn.patch @@ -24,7 +24,7 @@ index 4cb68050f93027225b63176724b2c882902d8b71..a3b8b874dba75b0b2dfb89d8a31f875c protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 72172293aedfef696b6649946746d39edf056363..4a05d99d81fd487fda33ec2aee7f981bb24766aa 100644 +index f0ea2bcb88630395d6f2bf2e7a658abcad124be4..7d3380eb407c463327f82d06b24b94af8d4754ae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -367,6 +367,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 96% rename from patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch index f551a7d70..daf1feeca 100644 --- a/patches/server/0024-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch @@ -33,7 +33,7 @@ index 826484123d864172a73e3d0d6e16923533748ea1..6cb70392a86b166c8f8a8f3944f7abe8 int i = world.getRandom().nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4a05d99d81fd487fda33ec2aee7f981bb24766aa..0a3a3a776e533b56ee3f67fca64bf76f514b1ab0 100644 +index 7d3380eb407c463327f82d06b24b94af8d4754ae..567d2760551326764a3d62f7a933a767f0579227 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1010,6 +1010,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 100% rename from patches/server/0025-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch diff --git a/patches/server/0026-Tulips-change-fox-type.patch b/patches/server/0027-Tulips-change-fox-type.patch similarity index 97% rename from patches/server/0026-Tulips-change-fox-type.patch rename to patches/server/0027-Tulips-change-fox-type.patch index a790148c9..dd800bb8b 100644 --- a/patches/server/0026-Tulips-change-fox-type.patch +++ b/patches/server/0027-Tulips-change-fox-type.patch @@ -59,7 +59,7 @@ index 473c857b83b87d824800eb91b2019bcf106189ae..52c11b3621a9b834de8305ff98ad7671 // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(ServerLevel world, DamageSource damageSource) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0a3a3a776e533b56ee3f67fca64bf76f514b1ab0..7d1dd19a08ff1d57f9c9bd4b19851804427d6ef9 100644 +index 567d2760551326764a3d62f7a933a767f0579227..e1da2a710808ecfc30c8b5594b3673518a475b0b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -531,6 +531,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0027-Breedable-Polar-Bears.patch b/patches/server/0028-Breedable-Polar-Bears.patch similarity index 95% rename from patches/server/0027-Breedable-Polar-Bears.patch rename to patches/server/0028-Breedable-Polar-Bears.patch index 5d01a3431..8ec868790 100644 --- a/patches/server/0027-Breedable-Polar-Bears.patch +++ b/patches/server/0028-Breedable-Polar-Bears.patch @@ -59,7 +59,7 @@ index 9bb4fd13e3c60ed889f4acd941b48922c9a4e8df..590b015102bd1ea22da34448de2f1b75 this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7d1dd19a08ff1d57f9c9bd4b19851804427d6ef9..5b161e6d980f44183e3a6c532bb330e82ff228b1 100644 +index e1da2a710808ecfc30c8b5594b3673518a475b0b..56198935e7df874abcd6801e351a5e56e89daf13 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -982,6 +982,8 @@ public class PurpurWorldConfig { @@ -76,7 +76,7 @@ index 7d1dd19a08ff1d57f9c9bd4b19851804427d6ef9..5b161e6d980f44183e3a6c532bb330e8 } polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth); + polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); + if (item != Items.AIR) polarBearBreedableItem = item; } diff --git a/patches/server/0028-Chickens-can-retaliate.patch b/patches/server/0029-Chickens-can-retaliate.patch similarity index 97% rename from patches/server/0028-Chickens-can-retaliate.patch rename to patches/server/0029-Chickens-can-retaliate.patch index 917b03726..d5da9d83b 100644 --- a/patches/server/0028-Chickens-can-retaliate.patch +++ b/patches/server/0029-Chickens-can-retaliate.patch @@ -51,7 +51,7 @@ index ca213cb0b8618b85c67066236eaba87c0439376f..1ff256f2a40403f0fbefc714e3609890 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5b161e6d980f44183e3a6c532bb330e82ff228b1..ef4f35a59d716b7927a280c4da372268ad2ff395 100644 +index 56198935e7df874abcd6801e351a5e56e89daf13..b343a05b3d8b09e761bafcfa960d9b769c168c77 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -321,6 +321,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0029-Add-option-to-set-armorstand-step-height.patch b/patches/server/0030-Add-option-to-set-armorstand-step-height.patch similarity index 90% rename from patches/server/0029-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0030-Add-option-to-set-armorstand-step-height.patch index 5d584691c..26f46b91f 100644 --- a/patches/server/0029-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0030-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 4c7439645974fd20f9f23196c5fbdce6ce324d13..de93640d0b458bafac8f661fb73c99c0bb596551 100644 +index 6ff9e8bb038e7e1b89796a2e9d271371052ccf22..66f971c14efe9ecac26e84d031334f9bdeb87095 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -343,6 +343,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -16,7 +16,7 @@ index 4c7439645974fd20f9f23196c5fbdce6ce324d13..de93640d0b458bafac8f661fb73c99c0 public boolean noPhysics; public final RandomSource random; public int tickCount; -@@ -4637,7 +4638,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4657,7 +4658,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public float maxUpStep() { @@ -38,7 +38,7 @@ index 2f398750bfee5758ad8b1367b6fc14364e4de776..9e6e29b9eddc94b50a32713e8ba1a53d if (!this.canTick) { if (this.noTickPoseDirty) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ef4f35a59d716b7927a280c4da372268ad2ff395..bc42fbcb073b8b6f278e256ac66fd514e747a1fe 100644 +index b343a05b3d8b09e761bafcfa960d9b769c168c77..b6e8c4d1814ab07c961e736e2d1b9155c5339a52 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -90,6 +90,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0030-Cat-spawning-options.patch b/patches/server/0031-Cat-spawning-options.patch similarity index 97% rename from patches/server/0030-Cat-spawning-options.patch rename to patches/server/0031-Cat-spawning-options.patch index 3ec8a9339..c1168d1f2 100644 --- a/patches/server/0030-Cat-spawning-options.patch +++ b/patches/server/0031-Cat-spawning-options.patch @@ -46,7 +46,7 @@ index e0e5046c84941a8d17e18c177f3daea9cb631940..d503d7a5837dbeb98e58dbe8f7e5de45 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bc42fbcb073b8b6f278e256ac66fd514e747a1fe..ebf1e3abed78f8a2d90764b8f0c5481bcfbc8de5 100644 +index b6e8c4d1814ab07c961e736e2d1b9155c5339a52..17f54a4de62555e2c6d86275ee9dd7ca51dea147 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -294,6 +294,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0031-Cows-eat-mushrooms.patch b/patches/server/0032-Cows-eat-mushrooms.patch similarity index 91% rename from patches/server/0031-Cows-eat-mushrooms.patch rename to patches/server/0032-Cows-eat-mushrooms.patch index 42311fabb..9c913850d 100644 --- a/patches/server/0031-Cows-eat-mushrooms.patch +++ b/patches/server/0032-Cows-eat-mushrooms.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..bf5935fbd8e3edfb1221dd06ea1e1a2c8fb887fd 100644 +index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..a1036e44116ef0848fbb438526f9a117ee2bfaa9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -73,7 +73,7 @@ public class Cow extends Animal { @@ -28,7 +28,7 @@ index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..bf5935fbd8e3edfb1221dd06ea1e1a2c } else { return super.mobInteract(player, hand); } -@@ -150,4 +154,69 @@ public class Cow extends Animal { +@@ -150,4 +154,66 @@ public class Cow extends Animal { public EntityDimensions getDefaultDimensions(Pose pose) { return this.isBaby() ? Cow.BABY_DIMENSIONS : super.getDefaultDimensions(pose); } @@ -81,9 +81,6 @@ index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..bf5935fbd8e3edfb1221dd06ea1e1a2c + if (CraftEventFactory.callEntityTransformEvent(this, mooshroom, org.bukkit.event.entity.EntityTransformEvent.TransformReason.INFECTION).isCancelled()) { + return InteractionResult.PASS; + } -+ if (!new com.destroystokyo.paper.event.entity.EntityTransformedEvent(this.getBukkitEntity(), mooshroom.getBukkitEntity(), com.destroystokyo.paper.event.entity.EntityTransformedEvent.TransformedReason.INFECTED).callEvent()) { -+ return InteractionResult.PASS; -+ } + this.level().addFreshEntity(mooshroom); + this.remove(RemovalReason.DISCARDED, org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + if (!player.getAbilities().instabuild) { @@ -99,7 +96,7 @@ index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..bf5935fbd8e3edfb1221dd06ea1e1a2c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ebf1e3abed78f8a2d90764b8f0c5481bcfbc8de5..ebffa181f84ed8d2c246e104727186231061b5e2 100644 +index 17f54a4de62555e2c6d86275ee9dd7ca51dea147..7177f38088d262e4be8718d234f895990bbd7887 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -364,6 +364,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0032-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 100% rename from patches/server/0032-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch diff --git a/patches/server/0033-Pigs-give-saddle-back.patch b/patches/server/0034-Pigs-give-saddle-back.patch similarity index 96% rename from patches/server/0033-Pigs-give-saddle-back.patch rename to patches/server/0034-Pigs-give-saddle-back.patch index 1c8f7d8f4..b7de90255 100644 --- a/patches/server/0033-Pigs-give-saddle-back.patch +++ b/patches/server/0034-Pigs-give-saddle-back.patch @@ -27,7 +27,7 @@ index 0f7e77e4f72be611a34ebe00d9979179519c54d9..7b5080993904a41083aa534a87a6eed2 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ebffa181f84ed8d2c246e104727186231061b5e2..65924f91027841a91ed10de7301b39646ab1696c 100644 +index 7177f38088d262e4be8718d234f895990bbd7887..2cc17c7991c645e5cd2d13cecc552baf91b7bc8a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -933,6 +933,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch similarity index 96% rename from patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch rename to patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch index 1319a1674..a1c33994a 100644 --- a/patches/server/0034-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0035-Snowman-drop-and-put-back-pumpkin.patch @@ -24,7 +24,7 @@ index a54893d51cc1ce204e59a6ffe8b84228775af4da..0060414b1d5afde56372ce121e9d37a1 return tryRide(player, hand); // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 65924f91027841a91ed10de7301b39646ab1696c..bc428f01d431b9d63d6a64607fa2e294c4b122f3 100644 +index 2cc17c7991c645e5cd2d13cecc552baf91b7bc8a..8b5a4141e414bf1e58237532bbc47729af07c4e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1198,6 +1198,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0035-Ender-dragon-always-drop-full-exp.patch b/patches/server/0036-Ender-dragon-always-drop-full-exp.patch similarity index 95% rename from patches/server/0035-Ender-dragon-always-drop-full-exp.patch rename to patches/server/0036-Ender-dragon-always-drop-full-exp.patch index 184f5f011..ad87f5035 100644 --- a/patches/server/0035-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0036-Ender-dragon-always-drop-full-exp.patch @@ -18,7 +18,7 @@ index 4218c84f3bef499bd6ebd4df224d4dcc95f5ce6c..bf2591f163b8482d35a6e53200467719 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bc428f01d431b9d63d6a64607fa2e294c4b122f3..2e851587620aca4366da17f3fe1fd79eb4d48ca0 100644 +index 8b5a4141e414bf1e58237532bbc47729af07c4e8..382214ecf9a3d58b2df9cc46a45c0e24c56fe74f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -477,6 +477,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch similarity index 94% rename from patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch rename to patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch index e230dff25..823c25b37 100644 --- a/patches/server/0036-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0037-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -18,7 +18,7 @@ index d59e33e7326489c6d55d316d0130f22235f4c63c..da85fabd75e9bd5ebece7127ef5b512d } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2e851587620aca4366da17f3fe1fd79eb4d48ca0..8665e24197df9001c58389c8b79716510d17743b 100644 +index 382214ecf9a3d58b2df9cc46a45c0e24c56fe74f..9a463e1e47033509cc1fb874f6046f46c66ae172 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -145,6 +145,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0037-Minecart-settings-and-WASD-controls.patch b/patches/server/0038-Minecart-settings-and-WASD-controls.patch similarity index 98% rename from patches/server/0037-Minecart-settings-and-WASD-controls.patch rename to patches/server/0038-Minecart-settings-and-WASD-controls.patch index 8a96b6df8..0009b0c92 100644 --- a/patches/server/0037-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0038-Minecart-settings-and-WASD-controls.patch @@ -149,7 +149,7 @@ index a768b07dae4bf75b68e3bc1d3de4b68fc7d23842..1b825b9012e24b12f83883f2056839c1 protected ResourceKey drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8665e24197df9001c58389c8b79716510d17743b..ce11e8ffb0853a4d1beb91248b255d785138893b 100644 +index 9a463e1e47033509cc1fb874f6046f46c66ae172..ef94bc1dc4e4145d5691c6a6d78e67a580a744e1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,68 @@ public class PurpurWorldConfig { @@ -207,7 +207,7 @@ index 8665e24197df9001c58389c8b79716510d17743b..ce11e8ffb0853a4d1beb91248b255d78 + ConfigurationSection section = getConfigurationSection("gameplay-mechanics.minecart.controllable.block-speed"); + if (section != null) { + for (String key : section.getKeys(false)) { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(key)); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(key)); + if (block != Blocks.AIR) { + minecartControllableBlockSpeeds.put(block, section.getDouble(key, minecartControllableBaseSpeed)); + } diff --git a/patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch similarity index 93% rename from patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch rename to patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch index b98bd3801..a57041d01 100644 --- a/patches/server/0038-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch @@ -5,7 +5,7 @@ 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 8f9756736b08fbaa78b7cff9fa78657c9877e89d..fa30e935c939c3aa7dab562a25aefb8370155da3 100644 +index 8bad6672c689c7bc65e5941887b3826ad99e36bb..a3f400336e0013dab8845492b0e124f4414cf59f 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1831,7 +1831,8 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -27,7 +27,7 @@ index 8f9756736b08fbaa78b7cff9fa78657c9877e89d..fa30e935c939c3aa7dab562a25aefb83 // 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 ce11e8ffb0853a4d1beb91248b255d785138893b..aec526d7d148c815cd724ea886486ac7508f4440 100644 +index ef94bc1dc4e4145d5691c6a6d78e67a580a744e1..9faca17345d8ea25e19ebb89fda97f5552e3f8d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch similarity index 95% rename from patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch index 816792061..d6d491f7f 100644 --- a/patches/server/0039-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch @@ -19,7 +19,7 @@ index 43c9dea6b0db7f8d6070dedcb472883ab46d9eaf..15a1f9ffbf640bffadca97e28f72b6a5 if (user instanceof Player entityhuman) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aec526d7d148c815cd724ea886486ac7508f4440..8f219c6074c2ee882686f59ef5128e94d2e61578 100644 +index 9faca17345d8ea25e19ebb89fda97f5552e3f8d6..c297a379867f56f6b9d3c5487a9d666daf7cc78d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,8 +96,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0040-Skip-events-if-there-s-no-listeners.patch b/patches/server/0041-Skip-events-if-there-s-no-listeners.patch similarity index 93% rename from patches/server/0040-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0041-Skip-events-if-there-s-no-listeners.patch index b4b8bc2aa..9f01970ee 100644 --- a/patches/server/0040-Skip-events-if-there-s-no-listeners.patch +++ b/patches/server/0041-Skip-events-if-there-s-no-listeners.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skip events if there's no listeners diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index d0a2581bc87df5335c064fa7854caf0bab512e91..f12f208c1c4669b0aae35cb86b122bbf06fd884a 100644 +index eb488f598de412849ad6fd83161cfaebe043be14..f5989a4e4a9f6d983d664a9f74ccdfebf91ed4d9 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -518,6 +518,7 @@ public class Commands { diff --git a/patches/server/0041-Add-permission-for-F3-N-debug.patch b/patches/server/0042-Add-permission-for-F3-N-debug.patch similarity index 89% rename from patches/server/0041-Add-permission-for-F3-N-debug.patch rename to patches/server/0042-Add-permission-for-F3-N-debug.patch index 411826e8d..b1d185ca7 100644 --- a/patches/server/0041-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0042-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 27391592eca984295c648edefce50f3360f5be1e..09595bbd536fc84d309163923317a860f606ea7c 100644 +index 3db05bb52fef8e465e6d3575c8126521141c18c9..fe0f7f6a1b9a4c2b298a0e0d9172fc8f04d16459 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1132,6 +1132,7 @@ public abstract class PlayerList { diff --git a/patches/server/0042-Configurable-TPS-Catchup.patch b/patches/server/0043-Configurable-TPS-Catchup.patch similarity index 93% rename from patches/server/0042-Configurable-TPS-Catchup.patch rename to patches/server/0043-Configurable-TPS-Catchup.patch index e612738c8..5c8616638 100644 --- a/patches/server/0042-Configurable-TPS-Catchup.patch +++ b/patches/server/0043-Configurable-TPS-Catchup.patch @@ -22,10 +22,10 @@ index 0f53f5d5c25f115cf6bc7b0fdd844521a15ccfbd..709611a974f957c101aeba9002b38283 this.waitUntilNextTick(); this.finishMeasuringTaskExecutionTime(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 321a10764b2a0787a49d7b8948e40cfe0a73f591..29d7c792277ff17f5119cf391c4fe4b86797adf0 100644 +index 49737a87b75c971b823bc1f3a20c17faee9d537c..5fc5ae6f6e04e1fe4edfd22379bbfa52b5af0bc2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -248,4 +248,9 @@ public class PurpurConfig { +@@ -250,4 +250,9 @@ public class PurpurConfig { loggerSuppressUnrecognizedRecipeErrors = getBoolean("settings.logger.suppress-unrecognized-recipe-errors", loggerSuppressUnrecognizedRecipeErrors); loggerSuppressSetBlockFarChunk = getBoolean("settings.logger.suppress-setblock-in-far-chunk-errors", loggerSuppressSetBlockFarChunk); } diff --git a/patches/server/0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch b/patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch similarity index 96% rename from patches/server/0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch rename to patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch index 83681af5e..2f8d9c421 100644 --- a/patches/server/0043-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch +++ b/patches/server/0044-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch @@ -18,7 +18,7 @@ index cb71f468e90f076caf2c0dcc5f2ba2745c737c22..c8dbca9573060f7d9c2a0a96a532f06d if (!this.level().isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) { this.spawnAtLocation(this.getPickupItem(), 0.1F); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8f219c6074c2ee882686f59ef5128e94d2e61578..ce91250794af7d121f6752509135f37d68cd3e7c 100644 +index c297a379867f56f6b9d3c5487a9d666daf7cc78d..d1058d129a7b1167092a35f6f1ab489e699d1510 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -97,9 +97,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0044-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch similarity index 98% rename from patches/server/0044-Add-enderman-and-creeper-griefing-controls.patch rename to patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch index d5f9d08c4..ec28a8e04 100644 --- a/patches/server/0044-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0045-Add-enderman-and-creeper-griefing-controls.patch @@ -38,7 +38,7 @@ index 37b1d81f6a77affe345a78fefbd86a156e9db193..12422c069c64bae0e16b3edd39e8dbe5 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce91250794af7d121f6752509135f37d68cd3e7c..d5e4e2fbee5061d4ea267310e0458dff3f905e32 100644 +index d1058d129a7b1167092a35f6f1ab489e699d1510..a35d9ed67ce320b996981696dc9f515712f52204 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -459,6 +459,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0045-Villagers-follow-emerald-blocks.patch b/patches/server/0046-Villagers-follow-emerald-blocks.patch similarity index 96% rename from patches/server/0045-Villagers-follow-emerald-blocks.patch rename to patches/server/0046-Villagers-follow-emerald-blocks.patch index 619eae6e2..c44ea3b85 100644 --- a/patches/server/0045-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0046-Villagers-follow-emerald-blocks.patch @@ -30,7 +30,7 @@ index 49b35fab8ee98a384ee12d36bbe2ac813342f1d6..142bcf71448e2c54991fd144269f74c7 // CraftBukkit start private CraftMerchant craftMerchant; 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 cd024c26d0658aa150a7d516b9b447eb72ebf26a..4a8da72d81a1938fa82dd1d2d861defd2bdac4b7 100644 +index 97071390c66aaeb37c41778d6b7f8a5af4522274..4ae45a7dae279cb1b8048ce4eff2aa1ae4e19f68 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -154,6 +154,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -54,7 +54,7 @@ index a4ca761f6e8e6e8f86fc20ce5e3dcf92a66b3f2a..6990d6dc306b1d25544793b365fd6f7b this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d5e4e2fbee5061d4ea267310e0458dff3f905e32..851014c5c02491cdbe778844251d3ec6a4236ff8 100644 +index a35d9ed67ce320b996981696dc9f515712f52204..7dfe1afed783938308d8f89629cf91fb34f358ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1457,6 +1457,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0046-Allow-leashing-villagers.patch b/patches/server/0047-Allow-leashing-villagers.patch similarity index 95% rename from patches/server/0046-Allow-leashing-villagers.patch rename to patches/server/0047-Allow-leashing-villagers.patch index b3a444270..687d50483 100644 --- a/patches/server/0046-Allow-leashing-villagers.patch +++ b/patches/server/0047-Allow-leashing-villagers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow leashing villagers diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index de93640d0b458bafac8f661fb73c99c0bb596551..289a516b56a6a6c97ecda3768ea08b91348a79ed 100644 +index e8ccd831c629418d96f81ef3be03e8a5d43f7213..b65ae7b4ddc7a1f3d2f66d63a62b766f5803b5ad 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2731,6 +2731,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2762,6 +2762,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -49,7 +49,7 @@ index 6990d6dc306b1d25544793b365fd6f7be8a37201..0d5e828a7fb6fd6facc04a27175541ac @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 851014c5c02491cdbe778844251d3ec6a4236ff8..28ca277a383eefbc96f07e05d98d4a9f460807af 100644 +index 7dfe1afed783938308d8f89629cf91fb34f358ee..a15dd3994240a4b48558f8d92a546a24153419e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1458,6 +1458,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0047-Implement-infinite-liquids.patch b/patches/server/0048-Implement-infinite-liquids.patch similarity index 97% rename from patches/server/0047-Implement-infinite-liquids.patch rename to patches/server/0048-Implement-infinite-liquids.patch index 33071e8a2..d020b08b6 100644 --- a/patches/server/0047-Implement-infinite-liquids.patch +++ b/patches/server/0048-Implement-infinite-liquids.patch @@ -67,7 +67,7 @@ index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe @Override protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 28ca277a383eefbc96f07e05d98d4a9f460807af..de44c8ffa61bb5d694cd635ebf3a5ce8ac9ef414 100644 +index a15dd3994240a4b48558f8d92a546a24153419e8..40402d33fe13a779cd84977ea1c8eb13484c76d2 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/0048-Make-lava-flow-speed-configurable.patch b/patches/server/0049-Make-lava-flow-speed-configurable.patch similarity index 95% rename from patches/server/0048-Make-lava-flow-speed-configurable.patch rename to patches/server/0049-Make-lava-flow-speed-configurable.patch index 71fafd7bc..397c70479 100644 --- a/patches/server/0048-Make-lava-flow-speed-configurable.patch +++ b/patches/server/0049-Make-lava-flow-speed-configurable.patch @@ -18,7 +18,7 @@ index 4c230136d832d50ae16ffa037b0b30ff1101b50a..2d492d849ff73a738dfbcb16507feb89 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index de44c8ffa61bb5d694cd635ebf3a5ce8ac9ef414..b9a1a8497b5d5a55d7547da5755ceeb4fd35f3c8 100644 +index 40402d33fe13a779cd84977ea1c8eb13484c76d2..9206ea37f1122a878952516ac23bc68811276735 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -222,8 +222,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0049-Add-player-death-exp-control-options.patch b/patches/server/0050-Add-player-death-exp-control-options.patch similarity index 97% rename from patches/server/0049-Add-player-death-exp-control-options.patch rename to patches/server/0050-Add-player-death-exp-control-options.patch index e98c594fd..68e518e9c 100644 --- a/patches/server/0049-Add-player-death-exp-control-options.patch +++ b/patches/server/0050-Add-player-death-exp-control-options.patch @@ -32,7 +32,7 @@ index 9ef4ab973508eb139f7a44feb4bd484d8e0e03cd..025309a47e9683ec29cd94f997663b7f return 0; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b9a1a8497b5d5a55d7547da5755ceeb4fd35f3c8..c6c38f53357f79c984e3e5d23298067a7688efcd 100644 +index 9206ea37f1122a878952516ac23bc68811276735..990aa0a71076789af0eba7ed22c2f52536a0fbae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -171,6 +171,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0050-Configurable-void-damage-height-and-damage.patch b/patches/server/0051-Configurable-void-damage-height-and-damage.patch similarity index 89% rename from patches/server/0050-Configurable-void-damage-height-and-damage.patch rename to patches/server/0051-Configurable-void-damage-height-and-damage.patch index 5406f98e5..d55c2f4a5 100644 --- a/patches/server/0050-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0051-Configurable-void-damage-height-and-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable void damage height and damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 289a516b56a6a6c97ecda3768ea08b91348a79ed..0056b23f6e883a057c267b4ca4c807b8a929a515 100644 +index b65ae7b4ddc7a1f3d2f66d63a62b766f5803b5ad..0989543cd39e337b2a4abb3184a623fc0ae39202 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -881,7 +881,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -912,7 +912,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -18,7 +18,7 @@ index 289a516b56a6a6c97ecda3768ea08b91348a79ed..0056b23f6e883a057c267b4ca4c807b8 && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a3f400336e0013dab8845492b0e124f4414cf59f..6f7188ccba2675264ba8fbfd05cacc1c60211157 100644 +index d6c550b11c99dcc5beced14f03317e5973de6550..f51d4d93ce91eff11889f814256fdef36115cc04 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2576,7 +2576,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -31,7 +31,7 @@ index a3f400336e0013dab8845492b0e124f4414cf59f..6f7188ccba2675264ba8fbfd05cacc1c protected void updateSwingTime() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c6c38f53357f79c984e3e5d23298067a7688efcd..be57857fc31ba32b47bd5d50d2898c5eb1ff9bd8 100644 +index 990aa0a71076789af0eba7ed22c2f52536a0fbae..ee683604d94476bdeaac73d6b34091b44b47128f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,10 +98,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0051-Add-canSaveToDisk-to-Entity.patch b/patches/server/0052-Add-canSaveToDisk-to-Entity.patch similarity index 90% rename from patches/server/0051-Add-canSaveToDisk-to-Entity.patch rename to patches/server/0052-Add-canSaveToDisk-to-Entity.patch index ec74ae3a1..e0facc237 100644 --- a/patches/server/0051-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0052-Add-canSaveToDisk-to-Entity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add canSaveToDisk to Entity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0056b23f6e883a057c267b4ca4c807b8a929a515..92c7c8e75a8d8d97496b24bf0b6719aeeb1440dc 100644 +index 0989543cd39e337b2a4abb3184a623fc0ae39202..93d69b90b22a167eb8e64c0882e42258c2d6c101 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -530,6 +530,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -37,12 +37,12 @@ index 63f48841c849ff49d9d43efc5de8952c5a9bba3a..e472df057d087fe46bd40b798c050ed6 @Override diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -index 503ac0374e0c9f9993ad37bb8bd8cf1570d3615a..8987312954f17465b0a6f39f83aa29a727ad1125 100644 +index d4a505ef4af9ded02aeb1a817bcbe5b1a912a5b3..97a310f042db1a838a744d2909d261aaf253ea17 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -94,6 +94,7 @@ public class EntityStorage implements EntityPersistentStorage { - ListTag listTag = new ListTag(); - dataList.getEntities().forEach(entity -> { +@@ -105,6 +105,7 @@ public class EntityStorage implements EntityPersistentStorage { + } + // Paper end - Entity load/save limit per chunk CompoundTag compoundTagx = new CompoundTag(); + if (!entity.canSaveToDisk()) return; // Purpur if (entity.save(compoundTagx)) { diff --git a/patches/server/0052-Dispenser-curse-of-binding-protection.patch b/patches/server/0053-Dispenser-curse-of-binding-protection.patch similarity index 57% rename from patches/server/0052-Dispenser-curse-of-binding-protection.patch rename to patches/server/0053-Dispenser-curse-of-binding-protection.patch index 9609ff1c3..28572f984 100644 --- a/patches/server/0052-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0053-Dispenser-curse-of-binding-protection.patch @@ -4,25 +4,25 @@ Date: Sun, 25 Aug 2019 00:09:52 -0500 Subject: [PATCH] Dispenser curse of binding protection -diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 091d2b1646068657120ee4244d79cbf7867a9cf7..28ff18c341703148e880e4d4a64b73daa136c32a 100644 ---- a/src/main/java/net/minecraft/world/entity/Mob.java -+++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1307,6 +1307,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - +diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java +index f51d4d93ce91eff11889f814256fdef36115cc04..e7853a16674ee748ebbf378044cb484cfdf6b73e 100644 +--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java ++++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +@@ -4497,6 +4497,12 @@ public abstract class LivingEntity extends Entity implements Attackable { + return EquipmentSlot.MAINHAND; } -+ // Purpur start -+ public static @Nullable EquipmentSlot getSlotForDispenser(ItemStack itemstack) { -+ return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : getEquipmentSlotForItem(itemstack); ++ // Purpur start - Dispenser curse of binding protection ++ public @Nullable EquipmentSlot getEquipmentSlotForDispenserItem(ItemStack itemstack) { ++ return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : this.getEquipmentSlotForItem(itemstack); + } -+ // Purpur end ++ // Purpur end - Dispenser curse of binding protection + - @Nullable - public static Item getEquipmentForSlot(EquipmentSlot equipmentSlot, int equipmentLevel) { - switch (equipmentSlot) { + private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) { + return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND ? SlotAccess.forEquipmentSlot(entity, slot, (itemstack) -> { + return itemstack.isEmpty() || entity.getEquipmentSlotForItem(itemstack) == slot; diff --git a/src/main/java/net/minecraft/world/item/ArmorItem.java b/src/main/java/net/minecraft/world/item/ArmorItem.java -index 647a4601deace52f8d855f512a73671f82b4762a..d6bdd6313e0e5be3ddfa04f40cf035e72e09f1ea 100644 +index 647a4601deace52f8d855f512a73671f82b4762a..d05b1e129eee07434d162e1b949fd5633418ef66 100644 --- a/src/main/java/net/minecraft/world/item/ArmorItem.java +++ b/src/main/java/net/minecraft/world/item/ArmorItem.java @@ -60,7 +60,7 @@ public class ArmorItem extends Item implements Equipable { @@ -30,12 +30,12 @@ index 647a4601deace52f8d855f512a73671f82b4762a..d6bdd6313e0e5be3ddfa04f40cf035e7 } else { LivingEntity entityliving = (LivingEntity) list.get(0); - EquipmentSlot enumitemslot = entityliving.getEquipmentSlotForItem(armor); -+ EquipmentSlot enumitemslot = pointer.level().purpurConfig.dispenserApplyCursedArmor ? entityliving.getEquipmentSlotForItem(armor) : Mob.getSlotForDispenser(armor); if (enumitemslot == null) return false; // Purpur ++ EquipmentSlot enumitemslot = pointer.level().purpurConfig.dispenserApplyCursedArmor ? entityliving.getEquipmentSlotForItem(armor) : entityliving.getEquipmentSlotForDispenserItem(armor); if (enumitemslot == null) return false; // Purpur - Dispenser curse of binding protection ItemStack itemstack1 = armor.copyWithCount(1); // Paper - shrink below and single item in event // CraftBukkit start Level world = pointer.level(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index be57857fc31ba32b47bd5d50d2898c5eb1ff9bd8..4e4f037c6b1c75467a4f2c58001c8a1cb7a9d79f 100644 +index ee683604d94476bdeaac73d6b34091b44b47128f..7096fd85e1c46097aa6d1c2e1bd511d36a9c486e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -224,6 +224,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0053-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch similarity index 95% rename from patches/server/0053-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch index ca772507e..decb91421 100644 --- a/patches/server/0053-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch @@ -17,7 +17,7 @@ index 907f751c859855484151fb5d607acee2f2a35076..4e1b2d65182f7d562a8470449b9f7c2e } else { return Boat.Status.IN_AIR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4e4f037c6b1c75467a4f2c58001c8a1cb7a9d79f..240c34bd95be07f19fb92d9b6678e6feffe2430e 100644 +index 7096fd85e1c46097aa6d1c2e1bd511d36a9c486e..94df007142fc6dc1c9dbbd9af5219b87ace4d65d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,12 +95,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0054-Mending-mends-most-damages-equipment-first.patch b/patches/server/0054-Mending-mends-most-damages-equipment-first.patch deleted file mode 100644 index 1442d8bb4..000000000 --- a/patches/server/0054-Mending-mends-most-damages-equipment-first.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sun, 14 Jul 2019 19:52:47 -0500 -Subject: [PATCH] Mending mends most damages equipment first - - -diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 15844971ce2cca8c679ad3aaa2dfe160e6d0b564..6598a737db11fb0c7e7a95b9bbfaabd75895cbdd 100644 ---- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -20,6 +20,7 @@ import net.minecraft.world.item.ItemStack; - import net.minecraft.world.item.enchantment.EnchantedItemInUse; - import net.minecraft.world.item.enchantment.EnchantmentEffectComponents; - import net.minecraft.world.item.enchantment.EnchantmentHelper; -+import net.minecraft.world.item.enchantment.Enchantments; - import net.minecraft.world.level.Level; - import net.minecraft.world.level.entity.EntityTypeTest; - import net.minecraft.world.phys.AABB; -@@ -347,7 +348,7 @@ public class ExperienceOrb extends Entity { - } - - private int repairPlayerItems(ServerPlayer player, int amount) { -- Optional optional = EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged); -+ Optional optional = level().purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedEquipment(Enchantments.MENDING, player) : EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged); // Purpur - - if (optional.isPresent()) { - ItemStack itemstack = ((EnchantedItemInUse) optional.get()).itemStack(); -diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 312b57b4ef340935f4335989ce1d6a4b8b61532c..930cc4c38a7c7631b140f7735cb03f4c82553375 100644 ---- a/src/main/java/net/minecraft/world/item/ItemStack.java -+++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -643,6 +643,16 @@ public final class ItemStack implements DataComponentHolder { - return this.isDamageableItem() && this.getDamageValue() > 0; - } - -+ // Purpur start -+ public float getDamagePercent() { -+ if (isDamaged()) { -+ return (float) getDamageValue() / (float) getMaxDamage(); -+ } else { -+ return 0F; -+ } -+ } -+ // Purpur end -+ - public int getDamageValue() { - return Mth.clamp((Integer) this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); - } -diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index fce49b17905ab97e691aa8499a5dfed67adf0c40..5ef8f69a4271c0a70380b5bd321735ff3e2b8cdd 100644 ---- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; - import java.util.ArrayList; - import java.util.Collection; - import java.util.List; -+import java.util.Map; - import java.util.Optional; - import java.util.function.BiConsumer; - import java.util.function.Consumer; -@@ -380,6 +381,29 @@ public class EnchantmentHelper { - return false; - } - -+ // Purpur start -+ @Nullable -+ public static Map.Entry getMostDamagedEquipment(Enchantment enchantment, LivingEntity entity) { -+ Map map = enchantment.getSlotItems(entity); -+ if (map.isEmpty()) { -+ return null; -+ } -+ Map.Entry item = null; -+ float maxPercent = 0F; -+ for (Map.Entry entry : map.entrySet()) { -+ ItemStack itemstack = entry.getValue(); -+ if (!itemstack.isEmpty() && itemstack.isDamaged() && getItemEnchantmentLevel(enchantment, itemstack) > 0) { -+ float percent = itemstack.getDamagePercent(); -+ if (item == null || percent > maxPercent) { -+ item = entry; -+ maxPercent = percent; -+ } -+ } -+ } -+ return item; -+ } -+ // Purpur end -+ - public static boolean has(ItemStack stack, DataComponentType componentType) { - MutableBoolean mutableBoolean = new MutableBoolean(false); - runIterationOnItem(stack, (enchantment, level) -> { -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 240c34bd95be07f19fb92d9b6678e6feffe2430e..9c87144050ed62ca030e51ae08d8a977e935ba68 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -95,6 +95,7 @@ public class PurpurWorldConfig { - armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); - } - -+ public boolean useBetterMending = false; - public boolean boatEjectPlayersOnLand = false; - public boolean disableDropsOnCrammingDeath = false; - public boolean milkCuresBadOmen = true; -@@ -102,6 +103,7 @@ public class PurpurWorldConfig { - public double voidDamageHeight = -64.0D; - public double voidDamageDealt = 4.0D; - private void miscGameplayMechanicsSettings() { -+ useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); - boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); - disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); - milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0055-Mending-mends-most-damages-equipment-first.patch b/patches/server/0055-Mending-mends-most-damages-equipment-first.patch new file mode 100644 index 000000000..4bdc93989 --- /dev/null +++ b/patches/server/0055-Mending-mends-most-damages-equipment-first.patch @@ -0,0 +1,134 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sun, 14 Jul 2019 19:52:47 -0500 +Subject: [PATCH] Mending mends most damages equipment first + + +diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +index 15844971ce2cca8c679ad3aaa2dfe160e6d0b564..9743e3ed1bbccc44c39df864e980e64fc5e32e1d 100644 +--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java ++++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +@@ -347,7 +347,7 @@ public class ExperienceOrb extends Entity { + } + + private int repairPlayerItems(ServerPlayer player, int amount) { +- Optional optional = EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged); ++ Optional optional = level().purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player) : EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged); // Purpur - Add option to mend the most damaged equipment first + + if (optional.isPresent()) { + ItemStack itemstack = ((EnchantedItemInUse) optional.get()).itemStack(); +diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java +index 312b57b4ef340935f4335989ce1d6a4b8b61532c..00665c3e81264b440cd27431f7632f3bc2b1ceef 100644 +--- a/src/main/java/net/minecraft/world/item/ItemStack.java ++++ b/src/main/java/net/minecraft/world/item/ItemStack.java +@@ -643,6 +643,26 @@ public final class ItemStack implements DataComponentHolder { + return this.isDamageableItem() && this.getDamageValue() > 0; + } + ++ // Purpur start - Add option to mend the most damaged equipment first ++ public float getDamagePercent() { ++ if (this.has(DataComponents.UNBREAKABLE)) { ++ return 0.0F; ++ } ++ ++ final int maxDamage = this.getOrDefault(DataComponents.MAX_DAMAGE, 0); ++ if (maxDamage == 0) { ++ return 0.0F; ++ } ++ ++ final int damage = this.getOrDefault(DataComponents.DAMAGE, 0); ++ if (damage == 0) { ++ return 0.0F; ++ } ++ ++ return (float) damage / maxDamage; ++ } ++ // Purpur end - Add option to mend the most damaged equipment first ++ + public int getDamageValue() { + return Mth.clamp((Integer) this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); + } +diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +index 97542361144a950f5b60021874688775226f292d..a33419a7a15aec82c7eaecffd927bd8fb8285c0b 100644 +--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java ++++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +@@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; + import java.util.ArrayList; + import java.util.Collection; + import java.util.List; ++import java.util.Map; + import java.util.Optional; + import java.util.function.BiConsumer; + import java.util.function.Consumer; +@@ -569,4 +570,51 @@ public class EnchantmentHelper { + return getItemEnchantmentLevel(getEnchantmentHolder(enchantment), stack); + } + // Purpur end - Add utility methods to deal with enchantments a bit easier ++ ++ // Purpur start - Add option to mend the most damaged equipment first ++ public static Optional getMostDamagedItemWith(DataComponentType componentType, LivingEntity entity) { ++ ItemStack maxStack = null; ++ EquipmentSlot maxSlot = null; ++ float maxPercent = 0.0F; ++ ++ equipmentSlotLoop: ++ for (EquipmentSlot equipmentSlot : EquipmentSlot.values()) { ++ ItemStack stack = entity.getItemBySlot(equipmentSlot); ++ ++ // do not even check enchantments for item with lower or equal damage percent ++ float percent = stack.getDamagePercent(); ++ if (percent <= maxPercent) { ++ continue; ++ } ++ ++ ItemEnchantments itemEnchantments = stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); ++ ++ for (Entry> entry : itemEnchantments.entrySet()) { ++ Enchantment enchantment = entry.getKey().value(); ++ ++ net.minecraft.core.component.DataComponentMap effects = enchantment.effects(); ++ if (!effects.has(componentType)) { ++ // try with another enchantment ++ continue; ++ } ++ ++ List slotGroups = enchantment.definition().slots(); ++ for (EquipmentSlotGroup slotGroup : slotGroups) { ++ if (slotGroup.test(equipmentSlot)) { ++ maxStack = stack; ++ maxSlot = equipmentSlot; ++ maxPercent = percent; ++ ++ // check another slot now ++ continue equipmentSlotLoop; ++ } ++ } ++ } ++ } ++ ++ return maxStack != null ++ ? Optional.of(new EnchantedItemInUse(maxStack, maxSlot, entity)) ++ : Optional.empty(); ++ } ++ // 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 94df007142fc6dc1c9dbbd9af5219b87ace4d65d..f980e39b09f38e1c8265a8fe65de91178579326f 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -95,6 +95,7 @@ public class PurpurWorldConfig { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); + } + ++ public boolean useBetterMending = false; + public boolean boatEjectPlayersOnLand = false; + public boolean disableDropsOnCrammingDeath = false; + public boolean milkCuresBadOmen = true; +@@ -102,6 +103,7 @@ public class PurpurWorldConfig { + public double voidDamageHeight = -64.0D; + public double voidDamageDealt = 4.0D; + private void miscGameplayMechanicsSettings() { ++ useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); + boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); + disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0055-Add-5-second-tps-average-in-tps.patch b/patches/server/0056-Add-5-second-tps-average-in-tps.patch similarity index 100% rename from patches/server/0055-Add-5-second-tps-average-in-tps.patch rename to patches/server/0056-Add-5-second-tps-average-in-tps.patch diff --git a/patches/server/0056-Implement-elytra-settings.patch b/patches/server/0057-Implement-elytra-settings.patch similarity index 96% rename from patches/server/0056-Implement-elytra-settings.patch rename to patches/server/0057-Implement-elytra-settings.patch index 8cf62b22c..f6137ee1f 100644 --- a/patches/server/0056-Implement-elytra-settings.patch +++ b/patches/server/0057-Implement-elytra-settings.patch @@ -46,10 +46,10 @@ index 218f2f085309f04438f8b07bc41cf242583db2dc..ea8e49b42b9dde74784189430be66ed6 itemStack.shrink(1); } else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 930cc4c38a7c7631b140f7735cb03f4c82553375..bb9f480e5a2083633ddde5607b05048bab5f1b52 100644 +index 00665c3e81264b440cd27431f7632f3bc2b1ceef..d36b5ddc360e4f4cca3ef5c1b5b3d0cbad02614b 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -675,6 +675,7 @@ public final class ItemStack implements DataComponentHolder { +@@ -685,6 +685,7 @@ public final class ItemStack implements DataComponentHolder { if (player == null || !player.hasInfiniteMaterials() || force) { // Paper if (amount > 0) { int originalDamage = amount; // Paper - Expand PlayerItemDamageEvent @@ -57,7 +57,7 @@ index 930cc4c38a7c7631b140f7735cb03f4c82553375..bb9f480e5a2083633ddde5607b05048b amount = EnchantmentHelper.processDurabilityChange(world, this, amount); // CraftBukkit start if (player instanceof ServerPlayer serverPlayer) { // Paper - Add EntityDamageItemEvent -@@ -740,6 +741,12 @@ public final class ItemStack implements DataComponentHolder { +@@ -750,6 +751,12 @@ public final class ItemStack implements DataComponentHolder { } this.hurtAndBreak(amount, worldserver, entity, (item) -> { // Paper - Add EntityDamageItemEvent @@ -90,7 +90,7 @@ index f1b2d388a1a40a1d909a2e726f32d6c15e1eb0eb..4934bae61114b49a9f8d0ed044fbb881 entityhuman.startAutoSpinAttack(20, 8.0F, stack); if (entityhuman.onGround()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9c87144050ed62ca030e51ae08d8a977e935ba68..e408d9753b6e2bae9bf276e60c3670654ab4782f 100644 +index f980e39b09f38e1c8265a8fe65de91178579326f..4d7a85f1ece3a60404474ad492edb2d8f097a6a0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,19 @@ public class PurpurWorldConfig { diff --git a/patches/server/0057-Item-entity-immunities.patch b/patches/server/0058-Item-entity-immunities.patch similarity index 94% rename from patches/server/0057-Item-entity-immunities.patch rename to patches/server/0058-Item-entity-immunities.patch index b45acf6dd..0b2d53140 100644 --- a/patches/server/0057-Item-entity-immunities.patch +++ b/patches/server/0058-Item-entity-immunities.patch @@ -117,7 +117,7 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..01e4395f1669d21c30465aa1366bd2f1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063146181f3 100644 +index 4d7a85f1ece3a60404474ad492edb2d8f097a6a0..d020ee719367487302d57a2806524f15f5401289 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -125,6 +125,49 @@ public class PurpurWorldConfig { @@ -135,7 +135,7 @@ index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063 + BuiltInRegistries.ITEM.stream().filter(item -> item != Items.AIR).forEach((item) -> itemImmuneToCactus.add(item)); + return; + } -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); + if (item != Items.AIR) itemImmuneToCactus.add(item); + }); + itemImmuneToExplosion.clear(); @@ -144,7 +144,7 @@ index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063 + BuiltInRegistries.ITEM.stream().filter(item -> item != Items.AIR).forEach((item) -> itemImmuneToExplosion.add(item)); + return; + } -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); + if (item != Items.AIR) itemImmuneToExplosion.add(item); + }); + itemImmuneToFire.clear(); @@ -153,7 +153,7 @@ index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063 + BuiltInRegistries.ITEM.stream().filter(item -> item != Items.AIR).forEach((item) -> itemImmuneToFire.add(item)); + return; + } -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); + if (item != Items.AIR) itemImmuneToFire.add(item); + }); + itemImmuneToLightning.clear(); @@ -162,7 +162,7 @@ index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063 + BuiltInRegistries.ITEM.stream().filter(item -> item != Items.AIR).forEach((item) -> itemImmuneToLightning.add(item)); + return; + } -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); + if (item != Items.AIR) itemImmuneToLightning.add(item); + }); + } diff --git a/patches/server/0058-Add-ping-command.patch b/patches/server/0059-Add-ping-command.patch similarity index 95% rename from patches/server/0058-Add-ping-command.patch rename to patches/server/0059-Add-ping-command.patch index 2c0a77539..06213be9e 100644 --- a/patches/server/0058-Add-ping-command.patch +++ b/patches/server/0059-Add-ping-command.patch @@ -17,10 +17,10 @@ index f5989a4e4a9f6d983d664a9f74ccdfebf91ed4d9..3bb11eeff4e855ae9a57f8179491c175 if (environment.includeIntegrated) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 29d7c792277ff17f5119cf391c4fe4b86797adf0..d6a1e2c21fb3b09e602ac6abe267c752d1f742eb 100644 +index 5fc5ae6f6e04e1fe4edfd22379bbfa52b5af0bc2..34e71243b66977b631e45df7b7f11f9b91474fe8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -179,6 +179,7 @@ public class PurpurConfig { +@@ -181,6 +181,7 @@ public class PurpurConfig { public static boolean afkBroadcastUseDisplayName = false; public static String afkTabListPrefix = "[AFK] "; public static String afkTabListSuffix = ""; @@ -28,7 +28,7 @@ index 29d7c792277ff17f5119cf391c4fe4b86797adf0..d6a1e2c21fb3b09e602ac6abe267c752 private static void messages() { cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -@@ -186,6 +187,7 @@ public class PurpurConfig { +@@ -188,6 +189,7 @@ public class PurpurConfig { afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName); afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix))); afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix))); diff --git a/patches/server/0059-Add-demo-command.patch b/patches/server/0060-Add-demo-command.patch similarity index 95% rename from patches/server/0059-Add-demo-command.patch rename to patches/server/0060-Add-demo-command.patch index 9d9c4185f..e688f4113 100644 --- a/patches/server/0059-Add-demo-command.patch +++ b/patches/server/0060-Add-demo-command.patch @@ -17,10 +17,10 @@ index 3bb11eeff4e855ae9a57f8179491c1756d14e04e..1da5184311b51494ca0cf426ba466404 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d6a1e2c21fb3b09e602ac6abe267c752d1f742eb..6d266f2096deca638ceebd2ca1fd4dce83e1e9a8 100644 +index 34e71243b66977b631e45df7b7f11f9b91474fe8..8c4b83835f7e93225592de2328a01152bb400781 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -179,6 +179,7 @@ public class PurpurConfig { +@@ -181,6 +181,7 @@ public class PurpurConfig { public static boolean afkBroadcastUseDisplayName = false; public static String afkTabListPrefix = "[AFK] "; public static String afkTabListSuffix = ""; @@ -28,7 +28,7 @@ index d6a1e2c21fb3b09e602ac6abe267c752d1f742eb..6d266f2096deca638ceebd2ca1fd4dce public static String pingCommandOutput = "%s's ping is %sms"; private static void messages() { cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); -@@ -187,6 +188,7 @@ public class PurpurConfig { +@@ -189,6 +190,7 @@ public class PurpurConfig { afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName); afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix))); afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix))); diff --git a/patches/server/0060-Add-credits-command.patch b/patches/server/0061-Add-credits-command.patch similarity index 95% rename from patches/server/0060-Add-credits-command.patch rename to patches/server/0061-Add-credits-command.patch index 4cc792c51..184b2950c 100644 --- a/patches/server/0060-Add-credits-command.patch +++ b/patches/server/0061-Add-credits-command.patch @@ -17,10 +17,10 @@ index 1da5184311b51494ca0cf426ba466404599b8d2c..c44832599a95039f9ca0f772e7b405e4 org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 6d266f2096deca638ceebd2ca1fd4dce83e1e9a8..7ed1b8048c6f1f198c45337ae5f9ddd2de5c02ab 100644 +index 8c4b83835f7e93225592de2328a01152bb400781..58812f062486ae34ad448bb1fe404c4fb05ad4ff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -179,6 +179,7 @@ public class PurpurConfig { +@@ -181,6 +181,7 @@ public class PurpurConfig { public static boolean afkBroadcastUseDisplayName = false; public static String afkTabListPrefix = "[AFK] "; public static String afkTabListSuffix = ""; @@ -28,7 +28,7 @@ index 6d266f2096deca638ceebd2ca1fd4dce83e1e9a8..7ed1b8048c6f1f198c45337ae5f9ddd2 public static String demoCommandOutput = "%s has been shown the demo screen"; public static String pingCommandOutput = "%s's ping is %sms"; private static void messages() { -@@ -188,6 +189,7 @@ public class PurpurConfig { +@@ -190,6 +191,7 @@ public class PurpurConfig { afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName); afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix))); afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix))); diff --git a/patches/server/0061-Configurable-jockey-options.patch b/patches/server/0062-Configurable-jockey-options.patch similarity index 99% rename from patches/server/0061-Configurable-jockey-options.patch rename to patches/server/0062-Configurable-jockey-options.patch index 988c51d2c..119e737b4 100644 --- a/patches/server/0061-Configurable-jockey-options.patch +++ b/patches/server/0062-Configurable-jockey-options.patch @@ -167,7 +167,7 @@ index 883cd9a96a1d4276ca10c5558b553c36a1bb0d79..0dcf5638e12c7670e6a5e577210e2542 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 06acffbb57d961d1c8a48bce5983b063146181f3..803387f232c25ed43c252fa05335e5e1915048ff 100644 +index d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529a1efa849 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -610,6 +610,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 99% rename from patches/server/0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 42053e2f9..e3571cf44 100644 --- a/patches/server/0062-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -256,7 +256,7 @@ index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac private float speed = 0.1F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 803387f232c25ed43c252fa05335e5e1915048ff..bfa1ed9e0927f919648ab67ae49681fcd1286e3a 100644 +index 5fa2939889d7a294d4e0afe444bf0529a1efa849..49ac8f8b8c33560dfae7871eb325ef47127d3654 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1087,6 +1087,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0063-Add-phantom-spawning-options.patch b/patches/server/0064-Add-phantom-spawning-options.patch similarity index 98% rename from patches/server/0063-Add-phantom-spawning-options.patch rename to patches/server/0064-Add-phantom-spawning-options.patch index 63bf22cea..e689962ce 100644 --- a/patches/server/0063-Add-phantom-spawning-options.patch +++ b/patches/server/0064-Add-phantom-spawning-options.patch @@ -40,7 +40,7 @@ index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f for (int l = 0; l < k; ++l) { // Paper start - PhantomPreSpawnEvent diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bfa1ed9e0927f919648ab67ae49681fcd1286e3a..07f3b64e5d117957262ce6c8290052d707d17508 100644 +index 49ac8f8b8c33560dfae7871eb325ef47127d3654..812a95f388302a0c860cd9addec24697be50b781 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1090,6 +1090,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0064-Implement-bed-explosion-options.patch b/patches/server/0065-Implement-bed-explosion-options.patch similarity index 97% rename from patches/server/0064-Implement-bed-explosion-options.patch rename to patches/server/0065-Implement-bed-explosion-options.patch index 9a8b35ef0..944c2f536 100644 --- a/patches/server/0064-Implement-bed-explosion-options.patch +++ b/patches/server/0065-Implement-bed-explosion-options.patch @@ -27,7 +27,7 @@ index 85d598c3354ee62f0fd1b26e485e0084967c0380..b59dd6b512021c335f3c21999958e2ea } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 07f3b64e5d117957262ce6c8290052d707d17508..6c4ada076bcabfbf0622e66ccaeaf3508ec6826c 100644 +index 812a95f388302a0c860cd9addec24697be50b781..35d387e70b2bb75b68b01199be617888036957fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -284,6 +284,27 @@ public class PurpurWorldConfig { diff --git a/patches/server/0065-Implement-respawn-anchor-explosion-options.patch b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch similarity index 97% rename from patches/server/0065-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0066-Implement-respawn-anchor-explosion-options.patch index 0c6e14778..cbfd0fd46 100644 --- a/patches/server/0065-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0066-Implement-respawn-anchor-explosion-options.patch @@ -18,7 +18,7 @@ index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c4ada076bcabfbf0622e66ccaeaf3508ec6826c..709afe70fccfc31457a4743f441cdeb9f6abb9f9 100644 +index 35d387e70b2bb75b68b01199be617888036957fa..f91548d91fbe690bdddcc63da8459f0a30a72899 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -324,6 +324,27 @@ public class PurpurWorldConfig { diff --git a/patches/server/0066-Add-allow-water-in-end-world-option.patch b/patches/server/0067-Add-allow-water-in-end-world-option.patch similarity index 97% rename from patches/server/0066-Add-allow-water-in-end-world-option.patch rename to patches/server/0067-Add-allow-water-in-end-world-option.patch index 98c53a0f6..e5c5353a0 100644 --- a/patches/server/0066-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0067-Add-allow-water-in-end-world-option.patch @@ -67,10 +67,10 @@ index ac775afb265430ac202cfa3900a036d11a308b1e..87ce003dfeca975d8e6af26fd341f3ab } else { world.setBlockAndUpdate(pos, IceBlock.meltsInto()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7ed1b8048c6f1f198c45337ae5f9ddd2de5c02ab..b15769f1e5b6cb2afc63402e540683253b7e3284 100644 +index 58812f062486ae34ad448bb1fe404c4fb05ad4ff..67f883f1681b7a7c2eed60309634cb4cb32e56a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -244,6 +244,11 @@ public class PurpurConfig { +@@ -246,6 +246,11 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } diff --git a/patches/server/0067-Allow-color-codes-in-books.patch b/patches/server/0068-Allow-color-codes-in-books.patch similarity index 100% rename from patches/server/0067-Allow-color-codes-in-books.patch rename to patches/server/0068-Allow-color-codes-in-books.patch diff --git a/patches/server/0068-Entity-lifespan.patch b/patches/server/0069-Entity-lifespan.patch similarity index 87% rename from patches/server/0068-Entity-lifespan.patch rename to patches/server/0069-Entity-lifespan.patch index f2215900b..79ce86497 100644 --- a/patches/server/0068-Entity-lifespan.patch +++ b/patches/server/0069-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 a2381960e213ade5ade22ad180666e4b74185beb..7c55d86901eb591554703e6c83bdfb67dfded0b1 100644 +index 086cb752a2d1e667a73840bb1599e73a08293b71..94f8e4c9f44b2cd82108eb1c213cc33497cc200d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2751,6 +2751,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2752,6 +2752,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (this.player.canInteractWithEntity(axisalignedbb, 1.0D)) { @@ -17,7 +17,7 @@ index a2381960e213ade5ade22ad180666e4b74185beb..7c55d86901eb591554703e6c83bdfb67 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 28ff18c341703148e880e4d4a64b73daa136c32a..1ebc4a8a54081ac9b3ba01e651d611f0237a8970 100644 +index 091d2b1646068657120ee4244d79cbf7867a9cf7..149d272775783aab243f0707ee11f702b35fa075 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -146,6 +146,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -32,7 +32,7 @@ index 28ff18c341703148e880e4d4a64b73daa136c32a..1ebc4a8a54081ac9b3ba01e651d611f0 entityliving = null; } } -+ if (entityliving instanceof ServerPlayer) this.ticksSinceLastInteraction = 0; // Purpur ++ if (entityliving instanceof net.minecraft.server.level.ServerPlayer) this.ticksSinceLastInteraction = 0; // Purpur this.target = entityliving; return true; // CraftBukkit end @@ -85,16 +85,16 @@ index 28ff18c341703148e880e4d4a64b73daa136c32a..1ebc4a8a54081ac9b3ba01e651d611f0 } @Override -@@ -1751,6 +1779,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1745,6 +1773,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.playAttackSound(); } -+ if (target instanceof ServerPlayer) this.ticksSinceLastInteraction = 0; // Purpur ++ if (target instanceof net.minecraft.server.level.ServerPlayer) this.ticksSinceLastInteraction = 0; // Purpur return flag; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 709afe70fccfc31457a4743f441cdeb9f6abb9f9..ccd571d2e4971a281479c24c7f84388ba3fbbf65 100644 +index f91548d91fbe690bdddcc63da8459f0a30a72899..7c7d8e3d3e2a9dca29d489fa2ce3cf101a07e124 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -125,6 +125,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 83% rename from patches/server/0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 6c6ac98a6..624637757 100644 --- a/patches/server/0069-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 71d96fad8cceb9f5699620510b9b8cc4a6fa94f2..b891e9ce0e0dcb7353f512a10ee0660c75f18e44 100644 +index 71d96fad8cceb9f5699620510b9b8cc4a6fa94f2..3833be24c44c0da3ffcfc1929e2c4a4b2ef40a1b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -3026,4 +3026,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3026,4 +3026,28 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -30,7 +30,9 @@ index 71d96fad8cceb9f5699620510b9b8cc4a6fa94f2..b891e9ce0e0dcb7353f512a10ee0660c + if (this.level() == toLevel) { + this.connection.internalTeleport(to.getX(), to.getY(), to.getZ(), to.getYaw(), to.getPitch(), java.util.EnumSet.noneOf(net.minecraft.world.entity.RelativeMovement.class)); + } else { -+ this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); ++ // TODO: 1-21: check later - Paper removed it from "Expand PlayerRespawnEvent, fix passed parameter issues" path ++ //this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); ++ this.server.getPlayerList().respawn(this, true, RemovalReason.KILLED, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH, to); + } + } + // Purpur end @@ -48,7 +50,7 @@ index b183a9e42178ff02c5d70abacee3cfaa7b7b93c3..d9215a42c8dd761fa04269c936ed0cca } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ccd571d2e4971a281479c24c7f84388ba3fbbf65..859ea7beb9f9644d45f805c1ecc18e7b87be67a7 100644 +index 7c7d8e3d3e2a9dca29d489fa2ce3cf101a07e124..9ffa9b0f96787f80d755afa793e4548fb80a0cd5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -242,6 +242,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0070-Squid-EAR-immunity.patch b/patches/server/0071-Squid-EAR-immunity.patch similarity index 95% rename from patches/server/0070-Squid-EAR-immunity.patch rename to patches/server/0071-Squid-EAR-immunity.patch index 46b98e6fb..7ff56d3c1 100644 --- a/patches/server/0070-Squid-EAR-immunity.patch +++ b/patches/server/0071-Squid-EAR-immunity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 859ea7beb9f9644d45f805c1ecc18e7b87be67a7..1da67c207b18e4c0eaf9a822360dbbe3215e7a6d 100644 +index 9ffa9b0f96787f80d755afa793e4548fb80a0cd5..bc41aa68be7298b7b1f89490e53d38f3bc34e56b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1475,6 +1475,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0071-Phantoms-burn-in-light.patch b/patches/server/0072-Phantoms-burn-in-light.patch similarity index 98% rename from patches/server/0071-Phantoms-burn-in-light.patch rename to patches/server/0072-Phantoms-burn-in-light.patch index ace26bcf6..8af7e6a91 100644 --- a/patches/server/0071-Phantoms-burn-in-light.patch +++ b/patches/server/0072-Phantoms-burn-in-light.patch @@ -51,7 +51,7 @@ index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1da67c207b18e4c0eaf9a822360dbbe3215e7a6d..2c6167946e8186f378142b0cd02b71abf1780bea 100644 +index bc41aa68be7298b7b1f89490e53d38f3bc34e56b..a63b86feb48621698794029ec42404ba5bad9aca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1145,6 +1145,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0072-Configurable-villager-breeding.patch b/patches/server/0073-Configurable-villager-breeding.patch similarity index 95% rename from patches/server/0072-Configurable-villager-breeding.patch rename to patches/server/0073-Configurable-villager-breeding.patch index 86805b5a0..f1058b872 100644 --- a/patches/server/0072-Configurable-villager-breeding.patch +++ b/patches/server/0073-Configurable-villager-breeding.patch @@ -18,7 +18,7 @@ index 33c0ac18fa4c5b47d60cc774fe72d2d68c14e025..ad3e340c2487aa1dc2ed3ab08fa8747b private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2c6167946e8186f378142b0cd02b71abf1780bea..2a8ec23926af200a8bd8d33ecd930387117fc71b 100644 +index a63b86feb48621698794029ec42404ba5bad9aca..6ed32f868a3bb6e7674a4a901dfbda20768d5d55 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1633,6 +1633,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0073-Redstone-deactivates-spawners.patch b/patches/server/0074-Redstone-deactivates-spawners.patch similarity index 94% rename from patches/server/0073-Redstone-deactivates-spawners.patch rename to patches/server/0074-Redstone-deactivates-spawners.patch index dad11ae23..d4b835764 100644 --- a/patches/server/0073-Redstone-deactivates-spawners.patch +++ b/patches/server/0074-Redstone-deactivates-spawners.patch @@ -17,7 +17,7 @@ index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2a8ec23926af200a8bd8d33ecd930387117fc71b..03586ea6d669022461e02ead826596167f5bd1ae 100644 +index 6ed32f868a3bb6e7674a4a901dfbda20768d5d55..f904a4142262e27ebc6e3cc44a277a07f3a45e00 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -352,6 +352,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0074-Totems-work-in-inventory.patch b/patches/server/0075-Totems-work-in-inventory.patch similarity index 96% rename from patches/server/0074-Totems-work-in-inventory.patch rename to patches/server/0075-Totems-work-in-inventory.patch index 15ee7c024..114772769 100644 --- a/patches/server/0074-Totems-work-in-inventory.patch +++ b/patches/server/0075-Totems-work-in-inventory.patch @@ -28,7 +28,7 @@ index d9215a42c8dd761fa04269c936ed0cca3d96ff84..7fa56c1bb7ba6a535a486cd452358b6d 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 03586ea6d669022461e02ead826596167f5bd1ae..1c4446ce2ca2e9c9d3d85a38752a6f27f8121d12 100644 +index f904a4142262e27ebc6e3cc44a277a07f3a45e00..1b3e2b9dc1f4a005c43a3ec52d182d4a4c08b84a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -243,6 +243,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0075-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch similarity index 96% rename from patches/server/0075-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0076-Add-vindicator-johnny-spawn-chance.patch index efef76b65..8ccaf53ef 100644 --- a/patches/server/0075-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch @@ -21,7 +21,7 @@ index eb6dce8b2dcc7f4e63c69cfa6acbd9b36a923706..feb7eb93bd20e141ff86ed2e91b9cd0f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c4446ce2ca2e9c9d3d85a38752a6f27f8121d12..8df777ce71b649de697bbf9b77636f3a30df3d1c 100644 +index 1b3e2b9dc1f4a005c43a3ec52d182d4a4c08b84a..d734ee6416b2549740dc60bb3bd2d7f894a5328a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1660,6 +1660,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0076-Dispensers-place-anvils-option.patch b/patches/server/0077-Dispensers-place-anvils-option.patch similarity index 96% rename from patches/server/0076-Dispensers-place-anvils-option.patch rename to patches/server/0077-Dispensers-place-anvils-option.patch index df856f765..1cb5e18d1 100644 --- a/patches/server/0076-Dispensers-place-anvils-option.patch +++ b/patches/server/0077-Dispensers-place-anvils-option.patch @@ -32,7 +32,7 @@ index 7bf250bba4179a506c0a39b7866a9389552d2905..6548e595ab5c06044be438bc7eac181f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8df777ce71b649de697bbf9b77636f3a30df3d1c..913238de812cdb9e745201a28f5200f4c457d537 100644 +index d734ee6416b2549740dc60bb3bd2d7f894a5328a..7a5432738f06500735647e30077ca58bcba2aeb9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -315,8 +315,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0077-Allow-anvil-colors.patch b/patches/server/0078-Allow-anvil-colors.patch similarity index 95% rename from patches/server/0077-Allow-anvil-colors.patch rename to patches/server/0078-Allow-anvil-colors.patch index 80b79488e..993cf4e80 100644 --- a/patches/server/0077-Allow-anvil-colors.patch +++ b/patches/server/0078-Allow-anvil-colors.patch @@ -5,10 +5,10 @@ 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 2348ee0065367ade5354d54aac53ab23d43d0622..48d803a3e8419a04fce934263f7a01dbfd335e2e 100644 +index 99bfa7cdc58c690d6f0c742dafedd40cace3223f..2d300905c05c7c23a4da30b3651b331381a1dc0d 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -279,6 +279,54 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -282,6 +282,54 @@ public class AnvilMenu extends ItemCombinerMenu { if (!this.itemName.equals(itemstack.getHoverName().getString())) { b0 = 1; i += b0; @@ -64,7 +64,7 @@ index 2348ee0065367ade5354d54aac53ab23d43d0622..48d803a3e8419a04fce934263f7a01db } } 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 913238de812cdb9e745201a28f5200f4c457d537..d6ebaed09f0b84ec7641ad660f47aed95fdac1b9 100644 +index 7a5432738f06500735647e30077ca58bcba2aeb9..a17f35a72227ad4c149434a294c6d63d8e3c8f9b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -293,6 +293,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 95% rename from patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch index d068a0e3d..4a1dfa306 100644 --- a/patches/server/0078-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,7 +17,7 @@ index e60464efd9986e1cf857d8595b13535df7ffc7b1..30da8d977d5b591d6bce619eba71181c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d6ebaed09f0b84ec7641ad660f47aed95fdac1b9..dff99dafb0869106fc8f70ee583ba8e269e07777 100644 +index a17f35a72227ad4c149434a294c6d63d8e3c8f9b..dab4fb7e985e6b087c0f617685ac30a28f535e51 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -632,6 +632,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0079-Short-enderman-height.patch b/patches/server/0080-Short-enderman-height.patch similarity index 92% rename from patches/server/0079-Short-enderman-height.patch rename to patches/server/0080-Short-enderman-height.patch index a408fa6d9..9d059893b 100644 --- a/patches/server/0079-Short-enderman-height.patch +++ b/patches/server/0080-Short-enderman-height.patch @@ -5,7 +5,7 @@ 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 76d0c482f1ab251963ca2e0c312acad52a7f9901..831da897fd422df8e57487017871e841cbc95d00 100644 +index 02257d9c7ceb81b8fccca0013ef5090feac1e19e..43e7670ab6f22afbf112e430394a95bdc951371a 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -322,7 +322,8 @@ public class EntityType implements FeatureElement, EntityTypeT @@ -31,10 +31,10 @@ index 12422c069c64bae0e16b3edd39e8dbe574704584..8604db61d2c8042d0399262cb60b9845 boolean flag = source.getDirectEntity() instanceof ThrownPotion; boolean flag1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b15769f1e5b6cb2afc63402e540683253b7e3284..1a38fbffb797088ff3debe119893411f1615735c 100644 +index 67f883f1681b7a7c2eed60309634cb4cb32e56a1..b5822e634147e8c6e6508324442ce2b4dec3824a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -244,6 +244,12 @@ public class PurpurConfig { +@@ -246,6 +246,12 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } diff --git a/patches/server/0080-Stop-squids-floating-on-top-of-water.patch b/patches/server/0081-Stop-squids-floating-on-top-of-water.patch similarity index 91% rename from patches/server/0080-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0081-Stop-squids-floating-on-top-of-water.patch index 06d817abc..af997c3c2 100644 --- a/patches/server/0080-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0081-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 92c7c8e75a8d8d97496b24bf0b6719aeeb1440dc..501684ad04b5ecfb20570284cf1031a84544a4c6 100644 +index a90bee7735b4b12371a28e57c6cc4ab88e0c9f9c..f23e932e86a92a796e56d1e994d3d631ad39c8ff 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4299,6 +4299,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4319,6 +4319,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Mth.lerp(delta, this.yRotO, this.yRot); } @@ -22,7 +22,7 @@ index 92c7c8e75a8d8d97496b24bf0b6719aeeb1440dc..501684ad04b5ecfb20570284cf1031a8 if (this.touchingUnloadedChunk()) { return false; diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index eb85356f0e2d1dc2eeecb30a36f88df900eb5caa..df071be3179898b77ba82ce8697da18196f16ad8 100644 +index f66b283612671a3c6d4b33b32284259bcfd9331e..2b84322a622454c58c6481abbb13031a2e5c488f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -72,6 +72,12 @@ public class Squid extends WaterAnimal { @@ -54,7 +54,7 @@ index c8f7c43134e7c51ce8af5b3c1a28c11db67715a2..5b98889715bf62eb4f15c0b45ada2c70 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dff99dafb0869106fc8f70ee583ba8e269e07777..0ca54a08809ff058912a82e3a8e611cbfe61b682 100644 +index dab4fb7e985e6b087c0f617685ac30a28f535e51..5c94f235d1979833e77692646f67b39db7347938 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1500,6 +1500,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0081-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch similarity index 92% rename from patches/server/0081-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch index e1944bc4b..a4830134c 100644 --- a/patches/server/0081-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch @@ -18,10 +18,10 @@ index 57139a0b8adcd1ea25cd100be78402681856ee75..e8793e11e94eea41ea9be615f0d46c7a private static final float SAFE_TRAVEL_MAX_ENTITY_XY = 4.0F; private static final double SAFE_TRAVEL_MAX_VERTICAL_DELTA = 1.0D; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1a38fbffb797088ff3debe119893411f1615735c..b1dec36f0446773b066a4f08cc4045c312f64259 100644 +index b5822e634147e8c6e6508324442ce2b4dec3824a..ce7ef9b4149021812c325bfd24cd6b9d4dc610a6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -212,6 +212,7 @@ public class PurpurConfig { +@@ -214,6 +214,7 @@ public class PurpurConfig { public static int barrelRows = 3; public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; @@ -29,7 +29,7 @@ index 1a38fbffb797088ff3debe119893411f1615735c..b1dec36f0446773b066a4f08cc4045c3 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -242,6 +243,7 @@ public class PurpurConfig { +@@ -244,6 +245,7 @@ public class PurpurConfig { enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows); org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); diff --git a/patches/server/0083-Customizable-wither-health-and-healing.patch b/patches/server/0083-Customizable-wither-health-and-healing.patch index 01d88df79..606658db3 100644 --- a/patches/server/0083-Customizable-wither-health-and-healing.patch +++ b/patches/server/0083-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 c4894f62a2c3d84d063e5caa5a38df80575660cb..8f1458d250bb875396c6318a7abc520f3563b8ef 100644 +index 4b1821ad50103cb996bb3ff9b9668f22ffff518f..402f67ca333e09c684ae083071715734e0767bf5 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 -@@ -520,8 +520,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -521,8 +521,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } } @@ -23,7 +23,7 @@ index c4894f62a2c3d84d063e5caa5a38df80575660cb..8f1458d250bb875396c6318a7abc520f this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ca54a08809ff058912a82e3a8e611cbfe61b682..07160ebf5890dbbd1daa590055f7f6c03fdcae78 100644 +index 5c94f235d1979833e77692646f67b39db7347938..bb3b087b752d8de36c6e7aed01c83cba4607c74d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1737,6 +1737,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch index 054a6307a..1e8a2cc29 100644 --- a/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0084-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c9efd62cba540f7cdd8a7ce37d455c9b190c5a12..6a2e5d18039310f8fbb3021db92d8f8f79c5c423 100644 +index cad36bdd7463e23f23ed77f1b430031a19145de4..6a010ebf844a37d3dc767e4a828e0a525d66aa9f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -520,7 +520,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -519,7 +519,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; @@ -59,7 +59,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573 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 07160ebf5890dbbd1daa590055f7f6c03fdcae78..f517a050e7634b0c7616a5c9878b78a3c0706cfa 100644 +index bb3b087b752d8de36c6e7aed01c83cba4607c74d..5cb22affc431441619af3d4e48ea546e694e9d30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -69,6 +69,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0085-Raid-cooldown-setting.patch b/patches/server/0085-Raid-cooldown-setting.patch index 923a4964b..556a7b217 100644 --- a/patches/server/0085-Raid-cooldown-setting.patch +++ b/patches/server/0085-Raid-cooldown-setting.patch @@ -49,7 +49,7 @@ index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e267948 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 f517a050e7634b0c7616a5c9878b78a3c0706cfa..bd6d7f795d81095d22e975e37835e53685c56f54 100644 +index 5cb22affc431441619af3d4e48ea546e694e9d30..6572269ca6907c384d5798b91ca1851ece5e8070 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/0086-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch index f8e5d3131..927adb12d 100644 --- a/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0086-Despawn-rate-config-options-per-projectile-type.patch @@ -7,7 +7,7 @@ This patch's implementation has been removed in favor of Pufferfish's entity-tim The config remains for migration purposes. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bd6d7f795d81095d22e975e37835e53685c56f54..16b591138dc14414535ad48230a824597383a2fc 100644 +index 6572269ca6907c384d5798b91ca1851ece5e8070..578ae5e0fb1810085f13e83cad320fa5325abfff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -316,6 +316,40 @@ public class PurpurWorldConfig { diff --git a/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 48c69b555..4c07aa514 100644 --- a/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -70,7 +70,7 @@ index 43c48bb14957b93ee3b0191360c09f710bc008e0..b39d8ee4c6e9483a15991be3b1440384 this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 16b591138dc14414535ad48230a824597383a2fc..45ff2269cad6a54a2bcb5a46000555d6f56e77b9 100644 +index 578ae5e0fb1810085f13e83cad320fa5325abfff..bd390f5201dd8129213048e7e2fc6b3e9763934a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1871,6 +1871,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0089-Flying-squids-Oh-my.patch b/patches/server/0089-Flying-squids-Oh-my.patch index da2e6eab8..320735f82 100644 --- a/patches/server/0089-Flying-squids-Oh-my.patch +++ b/patches/server/0089-Flying-squids-Oh-my.patch @@ -21,7 +21,7 @@ index 8211c152e6f4232e82e452b08047e4579465d770..4cd57672c548950cb4e0aa97af75ecca protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index df071be3179898b77ba82ce8697da18196f16ad8..b4cb9fc3f543b70233fe88a31565252eefdb4ce9 100644 +index 2b84322a622454c58c6481abbb13031a2e5c488f..8ed02b9737c47a19aa6a38789c19947e7aae36a3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -78,6 +78,15 @@ public class Squid extends WaterAnimal { @@ -58,7 +58,7 @@ index df071be3179898b77ba82ce8697da18196f16ad8..b4cb9fc3f543b70233fe88a31565252e float g = Mth.cos(f) * 0.2F; float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 45ff2269cad6a54a2bcb5a46000555d6f56e77b9..ea071ec327ccfc524b3f6aefb46828e8cfc640c8 100644 +index bd390f5201dd8129213048e7e2fc6b3e9763934a..4160c8c73a0fe7714a5e4aaff787fd642365aec9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -923,10 +923,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0090-Configurable-daylight-cycle.patch b/patches/server/0090-Configurable-daylight-cycle.patch index adfe4367c..17c1f222a 100644 --- a/patches/server/0090-Configurable-daylight-cycle.patch +++ b/patches/server/0090-Configurable-daylight-cycle.patch @@ -31,7 +31,7 @@ index cb13595ddb9662e41909b0068a02bbc298912deb..2bc6190f17f2874eabcf4606066e4c18 } ServerPlayer entityplayer = (ServerPlayer) entityhuman; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6a2e5d18039310f8fbb3021db92d8f8f79c5c423..ce843a15043fb8bb40d96351ee00f0440d0a53d4 100644 +index 6a010ebf844a37d3dc767e4a828e0a525d66aa9f..613cf0562d2a82e2a7b9bf1d3143e9c4e4a75bea 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -221,6 +221,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -43,7 +43,7 @@ index 6a2e5d18039310f8fbb3021db92d8f8f79c5c423..ce843a15043fb8bb40d96351ee00f044 private final RandomSequences randomSequences; // CraftBukkit start -@@ -608,6 +610,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -607,6 +609,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.chunkTaskScheduler = new ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler((ServerLevel)(Object)this, ca.spottedleaf.moonrise.common.util.MoonriseCommon.WORKER_POOL); // Paper end - rewrite chunk system this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit @@ -51,7 +51,7 @@ index 6a2e5d18039310f8fbb3021db92d8f8f79c5c423..ce843a15043fb8bb40d96351ee00f044 } // Paper start -@@ -784,6 +787,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -783,6 +786,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.serverLevelData.setGameTime(i); this.serverLevelData.getScheduledEvents().tick(this.server, i); if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -65,7 +65,7 @@ index 6a2e5d18039310f8fbb3021db92d8f8f79c5c423..ce843a15043fb8bb40d96351ee00f044 this.setDayTime(this.levelData.getDayTime() + 1L); } -@@ -792,7 +802,21 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -791,7 +801,21 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. public void setDayTime(long timeOfDay) { this.serverLevelData.setDayTime(timeOfDay); @@ -88,7 +88,7 @@ index 6a2e5d18039310f8fbb3021db92d8f8f79c5c423..ce843a15043fb8bb40d96351ee00f044 public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { Iterator iterator = this.customSpawners.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ea071ec327ccfc524b3f6aefb46828e8cfc640c8..17295e0bebe94f76a18c71f5261ac99484e08bc9 100644 +index 4160c8c73a0fe7714a5e4aaff787fd642365aec9..98c20224bae71c46878a93d7d05de0c650d45dae 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -120,6 +120,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0091-Furnace-uses-lava-from-underneath.patch b/patches/server/0091-Furnace-uses-lava-from-underneath.patch index 2acc5ddc7..506778fc8 100644 --- a/patches/server/0091-Furnace-uses-lava-from-underneath.patch +++ b/patches/server/0091-Furnace-uses-lava-from-underneath.patch @@ -39,7 +39,7 @@ index 730aca233f6e7564d4cb85b5b628d23c4f01d2f4..699bdc1f01a95ecdfe899493c8d81ec3 private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder recipe, NonNullList slots, int count) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 17295e0bebe94f76a18c71f5261ac99484e08bc9..6398f3df493c6257398100ac92a6f65ae8740260 100644 +index 98c20224bae71c46878a93d7d05de0c650d45dae..47c3cd2dcf3b2afbf30a9a4e89a83a6ad728a614 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -397,6 +397,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0092-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0092-Arrows-should-not-reset-despawn-counter.patch index 9254d7b16..73a1e7ff5 100644 --- a/patches/server/0092-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0092-Arrows-should-not-reset-despawn-counter.patch @@ -20,7 +20,7 @@ index ddf47dab1ab92c45e3eea09239d418a9798ed59e..8d8944a0455b3401d84cab636d61447e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6398f3df493c6257398100ac92a6f65ae8740260..fb942c024ee94f5d1b898a2b1c53b0cce9b9e0fd 100644 +index 47c3cd2dcf3b2afbf30a9a4e89a83a6ad728a614..5f4801b9e8fa7a6e34a818eadac6d59473b7696e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -101,6 +101,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index eef53e64f..5e709bd8a 100644 --- a/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,7 +24,7 @@ index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fb942c024ee94f5d1b898a2b1c53b0cce9b9e0fd..bce60b7f11b614cba639e716fdea5082a9f24722 100644 +index 5f4801b9e8fa7a6e34a818eadac6d59473b7696e..3f4a2f169e8e0437fccc7c6c8d577a84ce50d7b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -398,8 +398,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch index 2dfdd95b6..2a5d53bcf 100644 --- a/patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch @@ -104,7 +104,7 @@ index 1da37b076fbbbd4b756fc30c5995995528653ddf..6b1dc40787e53723ff48b1ed4d408bb9 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bce60b7f11b614cba639e716fdea5082a9f24722..faa6058548379cf38cdc8b6d4996eb44f5086700 100644 +index 3f4a2f169e8e0437fccc7c6c8d577a84ce50d7b4..5009e08e818e69b814e67a40bdc129f3ec64c183 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -114,6 +114,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0095-Make-entity-breeding-times-configurable.patch b/patches/server/0095-Make-entity-breeding-times-configurable.patch index f908682d8..9fd7caa36 100644 --- a/patches/server/0095-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0095-Make-entity-breeding-times-configurable.patch @@ -95,7 +95,7 @@ index 1ff256f2a40403f0fbefc714e3609890be3d60b6..bfc29d6fafb1956bca64ea89be226749 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index bf5935fbd8e3edfb1221dd06ea1e1a2c8fb887fd..06014b84e99ce2e8c019de921891590e151b2c56 100644 +index a1036e44116ef0848fbb438526f9a117ee2bfaa9..bf7ea4da6bd047b54e86b1853b9dad714a6e5e16 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -66,6 +66,11 @@ public class Cow extends Animal { @@ -188,7 +188,7 @@ index 0fd0358d287604d0ff1f52f0c71633586d100e3e..925bed4503a4023c01d8b9ffd0704783 public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = this.getEquipmentSlotForItem(stack); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 17983481386709110b7c4749ec8432866454492d..d2cdb2d14dc8fe3cf6ffb14668f848e5dd020827 100644 +index d9e1ff687bb478af4d9c669379477737d053e83d..13259f5f00aa0fc12254b954c3e21f19198bed8e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -191,6 +191,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder 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 4dd085fe116dbb965292485fddd0bc48410435ab..602db405b6675dd200386082b5f8256d7b2254a6 100644 +index c17a99a7f700d996dfcd81e47f1981726843f509..9796cc9969840e92a3376f0ceef58e297e2b4f8e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -112,6 +112,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0102-Snow-Golem-rate-of-fire-config.patch b/patches/server/0102-Snow-Golem-rate-of-fire-config.patch index 27e3f13f2..7a55dc50e 100644 --- a/patches/server/0102-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0102-Snow-Golem-rate-of-fire-config.patch @@ -23,7 +23,7 @@ index 0060414b1d5afde56372ce121e9d37a1668cd03b..ee4d4a4fe314ee9bce69c96dd65d84ed this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 602db405b6675dd200386082b5f8256d7b2254a6..16934efeea6a2da0adab1ff0bde9b80ebe1dcf7c 100644 +index 9796cc9969840e92a3376f0ceef58e297e2b4f8e..3f9ff605b9b7260fa3837624ac2c87d631a96031 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1618,6 +1618,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0103-EMC-Configurable-disable-give-dropping.patch b/patches/server/0103-EMC-Configurable-disable-give-dropping.patch index 7b76066dc..109fd9380 100644 --- a/patches/server/0103-EMC-Configurable-disable-give-dropping.patch +++ b/patches/server/0103-EMC-Configurable-disable-give-dropping.patch @@ -20,10 +20,10 @@ index 0d9de4c61c7b26a6ff37c12fde629161fd0c3d5a..2f7897744f4aea718170698881773e90 entityitem = entityplayer.drop(itemstack, false, false, false); // CraftBukkit - SPIGOT-2942: Add boolean to call event if (entityitem != null) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b1dec36f0446773b066a4f08cc4045c312f64259..70b9981d739881190cb45bd64369651358bf3447 100644 +index ce7ef9b4149021812c325bfd24cd6b9d4dc610a6..7800c63fad9e2b0ce33d03e7e061fffa45d5effc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -209,6 +209,11 @@ public class PurpurConfig { +@@ -211,6 +211,11 @@ public class PurpurConfig { useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive); } diff --git a/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 09db7c9a8..3d8d38cfa 100644 --- a/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -174,7 +174,7 @@ index 8734ab1bd8299bbf43906d81a349c2a13e0981a7..3ca83269311cbc18c9ef3ce62cff6a2d "farmer", PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 16934efeea6a2da0adab1ff0bde9b80ebe1dcf7c..154daa28ec56b4fbb2dc52ad69f30aaa5b96b1a7 100644 +index 3f9ff605b9b7260fa3837624ac2c87d631a96031..f73ef11133266e5f5a87a5df469ae4fb3bb6af37 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1820,6 +1820,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index ffcf27412..d5885b8df 100644 --- a/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,7 +35,7 @@ index 0dcf5638e12c7670e6a5e577210e2542de1fd38b..47419219d4f435a17344361f4a60d5aa } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 154daa28ec56b4fbb2dc52ad69f30aaa5b96b1a7..efaa50fa5ac586ca8b5ed3a977b812b0899d83d7 100644 +index f73ef11133266e5f5a87a5df469ae4fb3bb6af37..6c31c3c85ece5e90da951069336bdb9a58d2d39b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2066,6 +2066,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch index 40e6dc674..41cc9d5fb 100644 --- a/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -182,7 +182,7 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index efaa50fa5ac586ca8b5ed3a977b812b0899d83d7..4f32c632cc47de6c45b7d490ffdeab4e2e35323c 100644 +index 6c31c3c85ece5e90da951069336bdb9a58d2d39b..ae2f7dcf51d9d6d357fff4de6e6dc63dd262afd8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1949,6 +1949,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0107-Configurable-default-collar-color.patch b/patches/server/0107-Configurable-default-collar-color.patch index 900c7db62..478c1354d 100644 --- a/patches/server/0107-Configurable-default-collar-color.patch +++ b/patches/server/0107-Configurable-default-collar-color.patch @@ -43,7 +43,7 @@ index 04d7e4bc6cc1deda5f53f6ae5f46d2402e0d0c10..5dd146d318851ce581a0d7841bd87ae9 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4f32c632cc47de6c45b7d490ffdeab4e2e35323c..0ff20cfbaf874a11ee04df4010d4d9d2f6dd3b4f 100644 +index ae2f7dcf51d9d6d357fff4de6e6dc63dd262afd8..c74c86def59daa2c940c64b19ccc1c3cde5d36f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -633,6 +633,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0108-Phantom-flames-on-swoop.patch b/patches/server/0108-Phantom-flames-on-swoop.patch index 9963e0238..525b448fc 100644 --- a/patches/server/0108-Phantom-flames-on-swoop.patch +++ b/patches/server/0108-Phantom-flames-on-swoop.patch @@ -17,7 +17,7 @@ index 8f221fe016ea7221eb3a2116a2213139cf961797..88725e6f8c6490253e110485f5a62e9d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ff20cfbaf874a11ee04df4010d4d9d2f6dd3b4f..fb808af2199abb6e15873be345a4d6e1e0cfe53a 100644 +index c74c86def59daa2c940c64b19ccc1c3cde5d36f4..0cdd2837b85fd975d68c8fc035eba82e52ce4ddf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1311,6 +1311,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 433f3ed74..b507f0bea 100644 --- a/patches/server/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0109-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,7 +17,7 @@ index 8fbfd18b3caeed769396b3ffb1b1778b2f38edc0..dbfe8f5d4df244cb694b73ea8763628c return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fb808af2199abb6e15873be345a4d6e1e0cfe53a..82bf342f90cd47c110c8554abe8d1c10a32d9bd2 100644 +index 0cdd2837b85fd975d68c8fc035eba82e52ce4ddf..909fa6725bd387414218f0612ac2da52b0f4e765 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -407,6 +407,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0110-Implement-TPSBar.patch b/patches/server/0110-Implement-TPSBar.patch index ce9c719a2..e0097f2b7 100644 --- a/patches/server/0110-Implement-TPSBar.patch +++ b/patches/server/0110-Implement-TPSBar.patch @@ -41,7 +41,7 @@ index 36351e029c55ccd67b460e90f8c74e3d87f8ae5a..70b0d8f18df7380d54a9c28e0d906096 } } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8a439ba84c5a27e24adfe47acee10a694c177bdb..ae8235ed2a817776d052173c94a54ede9d2d275e 100644 +index 98c4acedee3521f115cbc51cbc594e6af28a1912..c23fed2780098e87dd74e7d4cb099678d3bd989a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -302,6 +302,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -68,8 +68,8 @@ index 8a439ba84c5a27e24adfe47acee10a694c177bdb..ae8235ed2a817776d052173c94a54ede } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -3056,5 +3059,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple - this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); +@@ -3058,5 +3061,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple + this.server.getPlayerList().respawn(this, true, RemovalReason.KILLED, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH, to); } } + @@ -103,10 +103,10 @@ index fe0f7f6a1b9a4c2b298a0e0d9172fc8f04d16459..a8f8b3da5d1fe661f4c6a2487e81dd6b entityplayer.awardStat(Stats.LEAVE_GAME); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 70b9981d739881190cb45bd64369651358bf3447..4e5e04915f912d873eb5c86037e6b78c82c2ca53 100644 +index 7800c63fad9e2b0ce33d03e7e061fffa45d5effc..f9d5718193f4b886a118d5a8b9191a3a4469d6d8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -182,6 +182,7 @@ public class PurpurConfig { +@@ -184,6 +184,7 @@ public class PurpurConfig { public static String creditsCommandOutput = "%s has been shown the end credits"; public static String demoCommandOutput = "%s has been shown the demo screen"; public static String pingCommandOutput = "%s's ping is %sms"; @@ -114,7 +114,7 @@ index 70b9981d739881190cb45bd64369651358bf3447..4e5e04915f912d873eb5c86037e6b78c private static void messages() { cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -@@ -192,6 +193,7 @@ public class PurpurConfig { +@@ -194,6 +195,7 @@ public class PurpurConfig { creditsCommandOutput = getString("settings.messages.credits-command-output", creditsCommandOutput); demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput); pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); @@ -122,7 +122,7 @@ index 70b9981d739881190cb45bd64369651358bf3447..4e5e04915f912d873eb5c86037e6b78c } public static String serverModName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); -@@ -214,6 +216,29 @@ public class PurpurConfig { +@@ -216,6 +218,29 @@ public class PurpurConfig { disableGiveCommandDrops = getBoolean("settings.disable-give-dropping", disableGiveCommandDrops); } diff --git a/patches/server/0111-Striders-give-saddle-back.patch b/patches/server/0111-Striders-give-saddle-back.patch index 5d0c7187f..9f3d9bf3e 100644 --- a/patches/server/0111-Striders-give-saddle-back.patch +++ b/patches/server/0111-Striders-give-saddle-back.patch @@ -29,7 +29,7 @@ index 0a297368678cafb92eb0374d1d410271c0d10033..13d40773ff8272ca081e852d4ae3dc09 if (!this.level().isClientSide) { player.startRiding(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 82bf342f90cd47c110c8554abe8d1c10a32d9bd2..436e89cac054e1ceebddc1fe14492a9f6d0b627b 100644 +index 909fa6725bd387414218f0612ac2da52b0f4e765..c4302416ca765a5387766ed7f508c750e68af074 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1723,6 +1723,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0112-PlayerBookTooLargeEvent.patch b/patches/server/0112-PlayerBookTooLargeEvent.patch index 1cbedbe7e..6c981c556 100644 --- a/patches/server/0112-PlayerBookTooLargeEvent.patch +++ b/patches/server/0112-PlayerBookTooLargeEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7c55d86901eb591554703e6c83bdfb67dfded0b1..010c03f9ec0b5fca563ce62bbb785af9cc28fad2 100644 +index 94f8e4c9f44b2cd82108eb1c213cc33497cc200d..9279ba2572afd5ea62c52fae6e24b642f957def2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1152,10 +1152,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -21,7 +21,7 @@ index 7c55d86901eb591554703e6c83bdfb67dfded0b1..010c03f9ec0b5fca563ce62bbb785af9 if (byteLength > 256 * 4) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send a book with with a page too large!"); + org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent event = new org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), itemstack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur - server.scheduleOnMain(() -> this.disconnect(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause + this.disconnect(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause return; } @@ -1179,6 +1184,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -29,6 +29,6 @@ index 7c55d86901eb591554703e6c83bdfb67dfded0b1..010c03f9ec0b5fca563ce62bbb785af9 if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); + org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent event = new org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), itemstack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur - server.scheduleOnMain(() -> this.disconnect(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause + this.disconnect(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause return; } diff --git a/patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch index b649a6481..79d494e47 100644 --- a/patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0113-Full-netherite-armor-grants-fire-resistance.patch @@ -26,7 +26,7 @@ index 025309a47e9683ec29cd94f997663b7faec1acb4..2dafba96353c208b89da7b65c0d56a51 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 436e89cac054e1ceebddc1fe14492a9f6d0b627b..f6628c2bee53f73d6471de1bf8108385900311ba 100644 +index c4302416ca765a5387766ed7f508c750e68af074..cd321796cf555647ebece5bdcf2f1efe1fcde35f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -282,6 +282,19 @@ public class PurpurWorldConfig { diff --git a/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch index 0d6734a13..eaf0f3abd 100644 --- a/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch @@ -18,7 +18,7 @@ index 7fa56c1bb7ba6a535a486cd452358b6d2dc59d9b..897e9da03a4e1cc0cac5da542c9e695f 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 df5c13451e065a19cf195be4ddfd8d414b3427b1..d69dc2f390b1afcbb2b3c57143e2181c879bb256 100644 +index 694aaaf1c07e63e8e95831d0c8daa0dde0cf9634..1186bdd1f49fd5bef712912e816b151adb1326cf 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -707,7 +707,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -144,10 +144,10 @@ index bf2591f163b8482d35a6e532004677199685a593..b078d1922db9f0db561d6e824794bc45 // flag1 = this.level().removeBlock(blockposition, false) || flag1; flag1 = true; diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 8f1458d250bb875396c6318a7abc520f3563b8ef..ed262a905a1a0bf4247538f1db210ed41c73809c 100644 +index 402f67ca333e09c684ae083071715734e0767bf5..9bd615ef8f7de16f823954af3ecf76897dec90df 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 -@@ -493,7 +493,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -494,7 +494,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; @@ -375,7 +375,7 @@ index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f6628c2bee53f73d6471de1bf8108385900311ba..34de8ed25ee4f7c5bd95a004e83c6016ede396bc 100644 +index cd321796cf555647ebece5bdcf2f1efe1fcde35f..866e2f625472c6dac1305b84b3cb8ce96b1d36a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -114,8 +114,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch index 766387582..59fe950b9 100644 --- a/patches/server/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,7 +22,7 @@ index 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..43dd972b374daa1072608f3a68e812e7 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 34de8ed25ee4f7c5bd95a004e83c6016ede396bc..4440d17e6f375c6687273ae8172f6ac593ec16b0 100644 +index 866e2f625472c6dac1305b84b3cb8ce96b1d36a1..dbcc1ba3b0fe58cc8b78b57c71bdde23163c0aef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,6 +117,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0116-Farmland-trampling-changes.patch b/patches/server/0116-Farmland-trampling-changes.patch index 3177619e4..08b37470e 100644 --- a/patches/server/0116-Farmland-trampling-changes.patch +++ b/patches/server/0116-Farmland-trampling-changes.patch @@ -37,7 +37,7 @@ index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bb if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4440d17e6f375c6687273ae8172f6ac593ec16b0..ac1c901b023c3d21f1f4cb258c3eeebe71979d82 100644 +index dbcc1ba3b0fe58cc8b78b57c71bdde23163c0aef..87945b9d75d95ad18ac28f459d4a57dd0c8fbe99 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -443,10 +443,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0117-Movement-options-for-armor-stands.patch b/patches/server/0117-Movement-options-for-armor-stands.patch index 5f6863ff7..212392336 100644 --- a/patches/server/0117-Movement-options-for-armor-stands.patch +++ b/patches/server/0117-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 501684ad04b5ecfb20570284cf1031a84544a4c6..10aaa05948839d43933a2de32bfc6fe54f61fbff 100644 +index 20df35377d21e6db7e0f1ca03e531a44129702e7..020f42105e2fd04b109932dbd04d4d3d0274e2c9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1791,7 +1791,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1822,7 +1822,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } @@ -66,7 +66,7 @@ index a37054d39ee142e5f3ca3c5e1e3a15c150a3ba32..ea3cad6c9cc561b225cd41f04bd204c9 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ac1c901b023c3d21f1f4cb258c3eeebe71979d82..fc653ee2afaae715a4c57a3cc764079c58e692c0 100644 +index 87945b9d75d95ad18ac28f459d4a57dd0c8fbe99..8d3b7626e5f60eb3356bc8b9dead1b72b15e441b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,10 +99,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0118-Fix-stuck-in-portals.patch b/patches/server/0118-Fix-stuck-in-portals.patch index 399c55d94..120877c9b 100644 --- a/patches/server/0118-Fix-stuck-in-portals.patch +++ b/patches/server/0118-Fix-stuck-in-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ae8235ed2a817776d052173c94a54ede9d2d275e..cf48fb43c2a648077f7a093c3bc550de659f6ece 100644 +index c23fed2780098e87dd74e7d4cb099678d3bd989a..dbfc8585340c8ddb8c706773b02346ca97663e3b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1424,6 +1424,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -17,10 +17,10 @@ index ae8235ed2a817776d052173c94a54ede9d2d275e..cf48fb43c2a648077f7a093c3bc550de this.connection.teleport(exit); // 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 10aaa05948839d43933a2de32bfc6fe54f61fbff..240ffb9d697f23b4080d48ec3b10de713a84a511 100644 +index 020f42105e2fd04b109932dbd04d4d3d0274e2c9..23ffd93138490ff591deaf3a28416a401e04eee6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3072,13 +3072,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3103,13 +3103,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } @@ -38,7 +38,7 @@ index 10aaa05948839d43933a2de32bfc6fe54f61fbff..240ffb9d697f23b4080d48ec3b10de71 this.portalProcess = new PortalProcessor(portal, pos.immutable()); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fc653ee2afaae715a4c57a3cc764079c58e692c0..5eb5d8d8a818e74b0b92b2ce4e65dccbc1b4f5f3 100644 +index 8d3b7626e5f60eb3356bc8b9dead1b72b15e441b..a4965866cc687a04cf12dbcf9f6ceff8218c0dee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -318,6 +318,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch index d7e3ed830..5e706410c 100644 --- a/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0119-Toggle-for-water-sensitive-mob-damage.patch @@ -110,7 +110,7 @@ index 3d61c2d5da103de68242c16d85c703813979d179..2343325fa9a771de7b9445cda24a2bcd public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 06014b84e99ce2e8c019de921891590e151b2c56..c519883f4ed3772378b5563401b8c557dc315ace 100644 +index bf7ea4da6bd047b54e86b1853b9dad714a6e5e16..dfb8bc50ceb8eab6752fab62cb81efda569d2fbb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -71,6 +71,11 @@ public class Cow extends Animal { @@ -222,7 +222,7 @@ index 925bed4503a4023c01d8b9ffd07047831e5e96e5..6ea8ecf8672b71533c9b979a3d46bd94 public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = this.getEquipmentSlotForItem(stack); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index d2cdb2d14dc8fe3cf6ffb14668f848e5dd020827..aefb5624409e7c31944d897d52f3a71ea85e1923 100644 +index 13259f5f00aa0fc12254b954c3e21f19198bed8e..ef16a21ec3626a0db0b2d0ed3cdf1acc16212f43 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -196,6 +196,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder()).forEach(key -> { @@ -219,6 +223,10 @@ public class PurpurWorldConfig { - Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString())); + Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); + dontRunWithScissors = getBoolean("gameplay-mechanics.item.shears.damage-if-sprinting", dontRunWithScissors); diff --git a/patches/server/0124-One-Punch-Man.patch b/patches/server/0124-One-Punch-Man.patch index c88410f7b..f9d7ec134 100644 --- a/patches/server/0124-One-Punch-Man.patch +++ b/patches/server/0124-One-Punch-Man.patch @@ -35,7 +35,7 @@ index 897e9da03a4e1cc0cac5da542c9e695f49ae60e4..583e0cfc3478df74188526a10494d81b float f1 = amount; boolean flag = amount > 0.0F && this.isDamageSourceBlocked(source); // Copied from below diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index edf8678ee1cb8c073fba2b0d4f333c8e4658dc8c..63bf4b2c8f997467a8d916a4fe4fd2bebbab5674 100644 +index a0e613d5e99eafb1f79d0ca493d8d67f9d086d71..0d6e782d65f8b927776231b59dd3f05bf94ab153 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -329,6 +329,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 562d1d48b..fed31db30 100644 --- a/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0125-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -43,7 +43,7 @@ index 20a91d798d31a71b3c05efa2cc5bda55494e26cc..fc62754f93bd11a10c28b8b7b116e9ff // Paper end - PlayerLaunchProjectileEvent if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 63bf4b2c8f997467a8d916a4fe4fd2bebbab5674..7b0895c7e49d1b66564ace8afdbe501b78f4e8e7 100644 +index 0d6e782d65f8b927776231b59dd3f05bf94ab153..51dafefe5fa9d89ec61c355beb66e78ead64ca6d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -186,6 +186,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch index a43d0ca91..d53501342 100644 --- a/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0126-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index cf48fb43c2a648077f7a093c3bc550de659f6ece..e7b07482d7a00bc1704b79b102cc1ad36fb06368 100644 +index dbfc8585340c8ddb8c706773b02346ca97663e3b..8bb9692f37f2f0cfa7964963aacbc57b67a2708b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1529,7 +1529,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -18,7 +18,7 @@ index cf48fb43c2a648077f7a093c3bc550de659f6ece..e7b07482d7a00bc1704b79b102cc1ad3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b0895c7e49d1b66564ace8afdbe501b78f4e8e7..5f93f100b7be42c0819c94862d960f9232040f55 100644 +index 51dafefe5fa9d89ec61c355beb66e78ead64ca6d..12048de4a283835d887a8b5a27aa1d3a99248b2e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -338,6 +338,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch index 6e5c8fd02..29e1744e9 100644 --- a/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0128-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,7 +18,7 @@ index 75d462d7f55dedfa62844549fa6690a4a652bd1f..cc9da5134ece550e8a1902e90282090f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f93f100b7be42c0819c94862d960f9232040f55..bf7e744a23d48b9931eab6fd5e3a835c979046e9 100644 +index 12048de4a283835d887a8b5a27aa1d3a99248b2e..c112dab4f1a56d8108a218106b399b462209cd5a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1007,6 +1007,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index ac05e54d5..ec35235e7 100644 --- a/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0129-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -20,7 +20,7 @@ index cc9da5134ece550e8a1902e90282090f05818fd8..f2e21c9d3cefb635c4eb583ac9355b46 } else { Vec3 vec3d = player.getViewVector(1.0F).normalize(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bf7e744a23d48b9931eab6fd5e3a835c979046e9..917190e2ddfdd4a0fb391100dff94abd988ef3b3 100644 +index c112dab4f1a56d8108a218106b399b462209cd5a..23762b5df538e8e2b042495e20381a94dd910cc0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1009,6 +1009,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0130-Tick-fluids-config.patch b/patches/server/0130-Tick-fluids-config.patch index d5fca0de2..058be67d7 100644 --- a/patches/server/0130-Tick-fluids-config.patch +++ b/patches/server/0130-Tick-fluids-config.patch @@ -36,7 +36,7 @@ index 84623c632d8c2f0fa7ec939c711316d757117d23..1851035b9fdcc076442d0699567a3b02 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 917190e2ddfdd4a0fb391100dff94abd988ef3b3..d3d030349ddc538e7c552c0bf63e4ff153c823b5 100644 +index 23762b5df538e8e2b042495e20381a94dd910cc0..a3559e01d93872750af81881295bcb12538dc33e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -127,6 +127,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0131-Config-to-disable-Llama-caravans.patch b/patches/server/0131-Config-to-disable-Llama-caravans.patch index 75d868481..5c0d40e8d 100644 --- a/patches/server/0131-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0131-Config-to-disable-Llama-caravans.patch @@ -32,7 +32,7 @@ index 96f1eba4a356e131a8f3c689bedc9eb8821e1a72..8edfc34a17d8c05cfa2928738306c1ab this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d3d030349ddc538e7c552c0bf63e4ff153c823b5..33532fe272fee29e3d2be2f0715c1f7f84b5e896 100644 +index a3559e01d93872750af81881295bcb12538dc33e..a1f177f63d2826659d6106621c5c5bccfde5445d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1341,6 +1341,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0132-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0132-Config-to-make-Creepers-explode-on-death.patch index 4d5c1efb5..5126ed826 100644 --- a/patches/server/0132-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0132-Config-to-make-Creepers-explode-on-death.patch @@ -6,51 +6,53 @@ Subject: [PATCH] Config to make Creepers explode on death Creepers exploded after being killed in the alpha days. This brings that back. diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index d68897b167918ba1e28b083b665ce70aaec437df..a194cc234e24094da0cbee8c6c4fe123c9b100be 100644 +index d68897b167918ba1e28b083b665ce70aaec437df..2834994506948d02abf228cfb9ffbb3bfd801a40 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -65,6 +65,7 @@ public class Creeper extends Monster implements PowerableMob { - private int spacebarCharge = 0; +@@ -66,6 +66,7 @@ public class Creeper extends Monster implements PowerableMob { private int prevSpacebarCharge = 0; private int powerToggleDelay = 0; -+ private boolean exploding = false; // Purpur end ++ private boolean exploding = false; // Purpur - Config to make Creepers explode on death public Creeper(EntityType type, Level world) { -@@ -270,6 +271,14 @@ public class Creeper extends Monster implements PowerableMob { + super(type, world); +@@ -270,6 +271,16 @@ public class Creeper extends Monster implements PowerableMob { return this.level().purpurConfig.creeperTakeDamageFromWater; } ++ // Purpur start - Config to make Creepers explode on death + @Override -+ protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource damagesource) { -+ if (!exploding && this.level().purpurConfig.creeperExplodeWhenKilled && damagesource.getEntity() instanceof net.minecraft.server.level.ServerPlayer) { ++ protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(ServerLevel world, DamageSource damageSource) { ++ if (!this.exploding && this.level().purpurConfig.creeperExplodeWhenKilled && damageSource.getEntity() instanceof net.minecraft.server.level.ServerPlayer) { + this.explodeCreeper(); + } -+ return super.dropAllDeathLoot(damagesource); ++ return super.dropAllDeathLoot(world, damageSource); + } ++ // Purpur end - Config to make Creepers explode on death + @Override protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; -@@ -358,6 +367,7 @@ public class Creeper extends Monster implements PowerableMob { +@@ -358,6 +369,8 @@ public class Creeper extends Monster implements PowerableMob { } public void explodeCreeper() { -+ this.exploding = true; // Purpur ++ this.exploding = true; // Purpur - Config to make Creepers explode on death ++ if (!this.level().isClientSide) { float f = this.isPowered() ? 2.0F : 1.0F; -@@ -377,7 +387,7 @@ public class Creeper extends Monster implements PowerableMob { - } +@@ -378,6 +391,7 @@ public class Creeper extends Monster implements PowerableMob { // CraftBukkit end } -- -+ this.exploding = false; // Purpur + ++ this.exploding = false; // Purpur - Config to make Creepers explode on death } private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 33532fe272fee29e3d2be2f0715c1f7f84b5e896..b491ad49c6cb0a180a06c5d8786691764350caf8 100644 +index a1f177f63d2826659d6106621c5c5bccfde5445d..9f339076cb36860e1e38b7fbef2c1f5915cc5fb4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -861,6 +861,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0133-Configurable-ravager-griefable-blocks-list.patch b/patches/server/0133-Configurable-ravager-griefable-blocks-list.patch index a04e9e043..4a86caa6a 100644 --- a/patches/server/0133-Configurable-ravager-griefable-blocks-list.patch +++ b/patches/server/0133-Configurable-ravager-griefable-blocks-list.patch @@ -31,7 +31,7 @@ index 2af4c365743b2956939335512f74e0a1d84298f7..a69e7e8da81bd13578d230cc1e3f0f90 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b491ad49c6cb0a180a06c5d8786691764350caf8..371112ae0f7b38ef818b3fa4d3549abcd0772834 100644 +index 9f339076cb36860e1e38b7fbef2c1f5915cc5fb4..f912a2eecf56c50ab445260dbeb20bbcd1874427 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1713,6 +1713,7 @@ public class PurpurWorldConfig { @@ -58,7 +58,7 @@ index b491ad49c6cb0a180a06c5d8786691764350caf8..371112ae0f7b38ef818b3fa4d3549abc + add("minecraft:potatoes"); + add("minecraft:wheat"); + }}).forEach(key -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(key.toString())); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(key.toString())); + if (!block.defaultBlockState().isAir()) { + ravagerGriefableBlocks.add(block); + } diff --git a/patches/server/0134-Sneak-to-bulk-process-composter.patch b/patches/server/0134-Sneak-to-bulk-process-composter.patch index 5052c40b3..ce5b17b3e 100644 --- a/patches/server/0134-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0134-Sneak-to-bulk-process-composter.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Sneak to bulk process composter diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index e9dcdb1e09e84a9b451034ff4bdfa6eae2dd1c04..e7c2dac1bb987103bb6404f3f8d7c487ca340fda 100644 +index 24b1715397ba8e6f5e9841a030d0e3d964356f89..1ab35b3123c25a80706e6557b4152279bfe8f50f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -577,7 +577,7 @@ public class ServerPlayerGameMode { +@@ -578,7 +578,7 @@ public class ServerPlayerGameMode { ItemStack itemstack1 = stack.copy(); InteractionResult enuminteractionresult; @@ -87,7 +87,7 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0 protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { int i = (Integer) state.getValue(ComposterBlock.LEVEL); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 371112ae0f7b38ef818b3fa4d3549abcd0772834..a28b84a7364c9c716b96061e8ff3acb79c672ffc 100644 +index f912a2eecf56c50ab445260dbeb20bbcd1874427..e741a679f65158a80f3472b8b231036abe8d38c3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -465,6 +465,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0135-Config-for-skipping-night.patch b/patches/server/0135-Config-for-skipping-night.patch index 60cfb10f5..291869f98 100644 --- a/patches/server/0135-Config-for-skipping-night.patch +++ b/patches/server/0135-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ce843a15043fb8bb40d96351ee00f0440d0a53d4..e8e5704937350cc65ae24980c56a3a898debd4f2 100644 +index 613cf0562d2a82e2a7b9bf1d3143e9c4e4a75bea..97e18801ae774d4e7b5154912a1a82810fc3d0b9 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -661,7 +661,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -660,7 +660,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; @@ -18,7 +18,7 @@ index ce843a15043fb8bb40d96351ee00f0440d0a53d4..e8e5704937350cc65ae24980c56a3a89 j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a28b84a7364c9c716b96061e8ff3acb79c672ffc..98999579180465597986bf97da3bda8fca8ec835 100644 +index e741a679f65158a80f3472b8b231036abe8d38c3..86fb66b5d0ad557efca1004372528d467c162d1d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -341,6 +341,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0136-Add-config-for-villager-trading.patch b/patches/server/0136-Add-config-for-villager-trading.patch index 74d6d6fd7..f7f9d4f4b 100644 --- a/patches/server/0136-Add-config-for-villager-trading.patch +++ b/patches/server/0136-Add-config-for-villager-trading.patch @@ -32,7 +32,7 @@ index 05c63eb6cf8a7067105c58d244c7cc27d6bf1125..7c2d5d28f8c2aba2cd8255a4aef22247 return InteractionResult.sidedSuccess(this.level().isClientSide); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98999579180465597986bf97da3bda8fca8ec835..4b69dd2ec74855ef91c5a6d6ce0326d330eaf66a 100644 +index 86fb66b5d0ad557efca1004372528d467c162d1d..ffd28d32ef891747160dece1f347f72b12917bdf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2133,6 +2133,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0137-Drowning-Settings.patch b/patches/server/0137-Drowning-Settings.patch index 7b6bdb137..b7eb95851 100644 --- a/patches/server/0137-Drowning-Settings.patch +++ b/patches/server/0137-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 240ffb9d697f23b4080d48ec3b10de713a84a511..09ca45c5b369195b24e5f574217f709cae932137 100644 +index 3e9bb7916e6440b3831871e2b8bcffbfc9172562..62a3086a980685c8210bb6b3ec987ce125a99116 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3302,7 +3302,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3322,7 +3322,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public int getMaxAirSupply() { @@ -18,7 +18,7 @@ index 240ffb9d697f23b4080d48ec3b10de713a84a511..09ca45c5b369195b24e5f574217f709c public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 583e0cfc3478df74188526a10494d81ba4303054..d76c5014ad03471874f945f58c8eb7a553739c94 100644 +index d76e8cf2a2d48548b0ad33c78dbf435b61bf91c4..da28941d9a374be39cf7c1620f48ddaaa89a9010 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -474,7 +474,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -40,7 +40,7 @@ index 583e0cfc3478df74188526a10494d81ba4303054..d76c5014ad03471874f945f58c8eb7a5 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b69dd2ec74855ef91c5a6d6ce0326d330eaf66a..d5d0f7f4bba99b96b9fe7525eb3d50506f4042c9 100644 +index ffd28d32ef891747160dece1f347f72b12917bdf..0eebec70223af219cec5806cd617144fdcaf161c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -160,6 +160,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0138-Break-individual-slabs-when-sneaking.patch b/patches/server/0138-Break-individual-slabs-when-sneaking.patch index 6d7b39ac2..42437e256 100644 --- a/patches/server/0138-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0138-Break-individual-slabs-when-sneaking.patch @@ -47,7 +47,7 @@ index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d5d0f7f4bba99b96b9fe7525eb3d50506f4042c9..db94fb6924b7e140462aca78e70e56808fe47830 100644 +index 0eebec70223af219cec5806cd617144fdcaf161c..de0ea739cd15bd2a99f7f6cde0ff83abb0732c77 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -586,6 +586,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch b/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch index 795a8c6c7..5cca87296 100644 --- a/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch +++ b/patches/server/0139-Config-to-disable-hostile-mob-spawn-on-ice.patch @@ -24,7 +24,7 @@ index 759839e912c54598b257ad738481364940f88a18..e60e6b3e5ae5a468cfe649ed2222412f return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db94fb6924b7e140462aca78e70e56808fe47830..ecd3542acf269cee6557034417f8e80c551daf02 100644 +index de0ea739cd15bd2a99f7f6cde0ff83abb0732c77..d59dad166be3503f32a03d82850d3da686678dff 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -551,6 +551,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0140-Config-to-show-Armor-Stand-arms-on-spawn.patch b/patches/server/0140-Config-to-show-Armor-Stand-arms-on-spawn.patch index 3aaa9a948..cf4139c51 100644 --- a/patches/server/0140-Config-to-show-Armor-Stand-arms-on-spawn.patch +++ b/patches/server/0140-Config-to-show-Armor-Stand-arms-on-spawn.patch @@ -17,7 +17,7 @@ index ea3cad6c9cc561b225cd41f04bd204c99ecd66ec..ad1ec2578fa428baa6b172c44b6c17e5 public ArmorStand(Level world, double x, double y, double z) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ecd3542acf269cee6557034417f8e80c551daf02..ce36b50d9627cf5e4da3b1e7c823255d60323385 100644 +index d59dad166be3503f32a03d82850d3da686678dff..d5b5cf30aede8615b19f11c3d874c5fb24aa7f29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -102,6 +102,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0141-Option-to-make-doors-require-redstone.patch b/patches/server/0141-Option-to-make-doors-require-redstone.patch index 3c4f5d09b..20cf0ab0e 100644 --- a/patches/server/0141-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0141-Option-to-make-doors-require-redstone.patch @@ -82,7 +82,7 @@ index 6dd75bc722f9c20b4869e6353115c3b02dd79f99..dfaf82f5b0180cf08c4125347867d37a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce36b50d9627cf5e4da3b1e7c823255d60323385..09a4f67a3f998592b00fb4bee10a3dc5ca00c243 100644 +index d5b5cf30aede8615b19f11c3d874c5fb24aa7f29..83af7ddbaaccdcb3cda680e87b984eeb0d1bda4d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -490,6 +490,16 @@ public class PurpurWorldConfig { @@ -92,7 +92,7 @@ index ce36b50d9627cf5e4da3b1e7c823255d60323385..09a4f67a3f998592b00fb4bee10a3dc5 + public List doorRequiresRedstone = new ArrayList<>(); + private void doorSettings() { + getList("blocks.door.requires-redstone", new ArrayList()).forEach(key -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(key.toString())); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(key.toString())); + if (!block.defaultBlockState().isAir()) { + doorRequiresRedstone.add(block); + } diff --git a/patches/server/0142-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0142-Config-to-allow-unsafe-enchants.patch similarity index 64% rename from patches/server/0142-Config-to-allow-for-unsafe-enchants.patch rename to patches/server/0142-Config-to-allow-unsafe-enchants.patch index 2c295fa70..e56c2231e 100644 --- a/patches/server/0142-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0142-Config-to-allow-unsafe-enchants.patch @@ -1,11 +1,11 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Encode42 Date: Wed, 24 Mar 2021 17:59:54 -0400 -Subject: [PATCH] Config to allow for unsafe enchants +Subject: [PATCH] Config to allow unsafe enchants diff --git a/src/main/java/net/minecraft/server/commands/EnchantCommand.java b/src/main/java/net/minecraft/server/commands/EnchantCommand.java -index 99695e38b6a10c3cffda6e453f9f0619c7406cc0..6e63b838de2edeab03ae25fc34e6004830fb7349 100644 +index 99695e38b6a10c3cffda6e453f9f0619c7406cc0..2283f69607cb769545c85bcae940ac956779e80b 100644 --- a/src/main/java/net/minecraft/server/commands/EnchantCommand.java +++ b/src/main/java/net/minecraft/server/commands/EnchantCommand.java @@ -70,7 +70,7 @@ public class EnchantCommand { @@ -13,7 +13,7 @@ index 99695e38b6a10c3cffda6e453f9f0619c7406cc0..6e63b838de2edeab03ae25fc34e60048 private static int enchant(CommandSourceStack source, Collection targets, Holder enchantment, int level) throws CommandSyntaxException { Enchantment enchantment2 = enchantment.value(); - if (level > enchantment2.getMaxLevel()) { -+ if (!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && level > enchantment2.getMaxLevel()) { // Purpur ++ if (!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && level > enchantment2.getMaxLevel()) { // Purpur - Config to allow unsafe enchants throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment2.getMaxLevel()); } else { int i = 0; @@ -22,83 +22,83 @@ index 99695e38b6a10c3cffda6e453f9f0619c7406cc0..6e63b838de2edeab03ae25fc34e60048 if (!itemStack.isEmpty()) { if (enchantment2.canEnchant(itemStack) - && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(itemStack).keySet(), enchantment)) { -+ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(itemStack).keySet(), enchantment) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment2))) { // Purpur ++ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(itemStack).keySet(), enchantment) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment))) { // Purpur - Config to allow unsafe enchants itemStack.enchant(enchantment, level); i++; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 48d803a3e8419a04fce934263f7a01dbfd335e2e..26951cc5fb64a8d6c99d450dbe236f28b56e44a7 100644 +index 2d300905c05c7c23a4da30b3651b331381a1dc0d..30746b3ae45840206bf23e811a9819f3b31c9814 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -228,7 +228,8 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -231,7 +231,10 @@ public class AnvilMenu extends ItemCombinerMenu { i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1); Enchantment enchantment = (Enchantment) holder.value(); - boolean flag3 = enchantment.canEnchant(itemstack); -+ boolean flag3 = canDoUnsafeEnchants || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && org.purpurmc.purpur.PurpurConfig.allowInapplicableEnchants) || enchantment.canEnchant(itemstack); // Purpur -+ boolean flag4 = true; // Purpur ++ // Purpur start - Config to allow unsafe enchants ++ boolean flag3 = this.canDoUnsafeEnchants || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && org.purpurmc.purpur.PurpurConfig.allowInapplicableEnchants) || enchantment.canEnchant(itemstack); // whether the enchantment can be applied on specific item type ++ boolean flag4 = true; // whether two incompatible enchantments can be applied on a single item ++ // Purpur end - Config to allow unsafe enchants if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) { flag3 = true; -@@ -240,16 +241,20 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -243,16 +246,22 @@ public class AnvilMenu extends ItemCombinerMenu { Holder holder1 = (Holder) iterator1.next(); - if (!holder1.equals(holder) && !enchantment.isCompatibleWith((Enchantment) holder1.value())) { -- flag3 = canDoUnsafeEnchants; // Purpur -+ flag4 = canDoUnsafeEnchants || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && org.purpurmc.purpur.PurpurConfig.allowIncompatibleEnchants); // Purpur flag3 -> flag4 -+ if (!flag4 && org.purpurmc.purpur.PurpurConfig.replaceIncompatibleEnchants) { -+ iterator1.remove(); -+ flag4 = true; -+ } + if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) { +- flag3 = this.canDoUnsafeEnchants; // Purpur - Anvil API ++ flag4 = this.canDoUnsafeEnchants || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && org.purpurmc.purpur.PurpurConfig.allowIncompatibleEnchants); // Purpur - Anvil API // Purpur - flag3 -> flag4 - Config to allow unsafe enchants ++ // Purpur start - Config to allow unsafe enchants ++ if (!flag4 && org.purpurmc.purpur.PurpurConfig.replaceIncompatibleEnchants) { ++ iterator1.remove(); // replace current enchant with the incompatible one trying to be applied ++ flag4 = true; ++ } ++ // Purpur end - Config to allow unsafe enchants ++i; } } - if (!flag3) { -+ if (!flag3 || !flag4) { // Purpur ++ if (!flag3 || !flag4) { // Purpur - Config to allow unsafe enchants flag2 = true; } else { flag1 = true; - if (i2 > enchantment.getMaxLevel()) { -+ if ((!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants || !org.purpurmc.purpur.PurpurConfig.allowHigherEnchantsLevels) && i2 > enchantment.getMaxLevel()) { // Purpur ++ if ((!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants || !org.purpurmc.purpur.PurpurConfig.allowHigherEnchantsLevels) && i2 > enchantment.getMaxLevel()) { // Purpur - Config to allow unsafe enchants i2 = enchantment.getMaxLevel(); } -@@ -374,7 +379,7 @@ public class AnvilMenu extends ItemCombinerMenu { - this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client +@@ -378,7 +387,7 @@ public class AnvilMenu extends ItemCombinerMenu { this.broadcastChanges(); - // Purpur start -- if (canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) { -+ if ((canDoUnsafeEnchants || org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants) && itemstack1 != ItemStack.EMPTY) { - ((ServerPlayer) player).connection.send(new ClientboundContainerSetSlotPacket(containerId, incrementStateId(), 2, itemstack1)); - ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); + + // Purpur start - Anvil API +- if (this.canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) { ++ if ((this.canDoUnsafeEnchants || org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants) && itemstack1 != ItemStack.EMPTY) { // Purpur - Config to allow unsafe enchants + ((ServerPlayer) this.player).connection.send(new ClientboundContainerSetSlotPacket(this.containerId, this.incrementStateId(), 2, itemstack1)); + ((ServerPlayer) this.player).connection.send(new ClientboundContainerSetDataPacket(this.containerId, 0, this.cost.get())); } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index bb9f480e5a2083633ddde5607b05048bab5f1b52..c3056e06a2dfb35ed8302af78525a3336433fa94 100644 +index d36b5ddc360e4f4cca3ef5c1b5b3d0cbad02614b..a5cdb7f100d161676570a5728e1cfc0e18b7d2cf 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1246,6 +1246,16 @@ public final class ItemStack implements DataComponentHolder { +@@ -1256,6 +1256,12 @@ public final class ItemStack implements DataComponentHolder { return !((ItemEnchantments) this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY)).isEmpty(); } -+ // Purpur start -+ public boolean hasEnchantment(Enchantment enchantment) { -+ if (isEnchanted()) { -+ ItemEnchantments enchantments = this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); -+ return new net.minecraft.advancements.critereon.EnchantmentPredicate(enchantment, net.minecraft.advancements.critereon.MinMaxBounds.Ints.atLeast(1)).containedIn(enchantments); -+ } -+ return false; ++ // Purpur start - Config to allow unsafe enchants ++ public boolean hasEnchantment(Holder enchantment) { ++ return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).getLevel(enchantment) > 0; + } -+ // Purpur end ++ // Purpur end - Config to allow unsafe enchants + public ItemEnchantments getEnchantments() { return (ItemEnchantments) this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a601f18f94e80b16ae22d077a405d685803529a8..01f192f911dfd4c4afcd942196fce62e35cdbacf 100644 +index 3c1b41f0ae58669d6fae640e8763c43e74bd0239..e19346e82ace64d5439d2607709682a9381edfe7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -283,6 +283,29 @@ public class PurpurConfig { +@@ -285,6 +285,29 @@ public class PurpurConfig { cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); } diff --git a/patches/server/0143-Configurable-sponge-absorption.patch b/patches/server/0143-Configurable-sponge-absorption.patch index 19f78477f..5bf810422 100644 --- a/patches/server/0143-Configurable-sponge-absorption.patch +++ b/patches/server/0143-Configurable-sponge-absorption.patch @@ -21,7 +21,7 @@ index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09a4f67a3f998592b00fb4bee10a3dc5ca00c243..ec593c9d86ac6c1cd60532620806a16d184b182b 100644 +index 83af7ddbaaccdcb3cda680e87b984eeb0d1bda4d..aaa0fa4a738adf8ffe45cd446d49777d1ef8d05b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -615,6 +615,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0144-Projectile-offset-config.patch b/patches/server/0144-Projectile-offset-config.patch index e17388ac1..86a434339 100644 --- a/patches/server/0144-Projectile-offset-config.patch +++ b/patches/server/0144-Projectile-offset-config.patch @@ -96,7 +96,7 @@ index 4934bae61114b49a9f8d0ed044fbb881210df32a..1be074074283f12543ac771ac9201580 entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec593c9d86ac6c1cd60532620806a16d184b182b..045a0dee051d68ae3764da72e66e5dd1a4893a25 100644 +index aaa0fa4a738adf8ffe45cd446d49777d1ef8d05b..fe9da4a79133bf2b3945abb8086f7c59898eb787 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -440,6 +440,23 @@ public class PurpurWorldConfig { diff --git a/patches/server/0145-Config-for-powered-rail-activation-distance.patch b/patches/server/0145-Config-for-powered-rail-activation-distance.patch index dd08adbdc..9804e92b2 100644 --- a/patches/server/0145-Config-for-powered-rail-activation-distance.patch +++ b/patches/server/0145-Config-for-powered-rail-activation-distance.patch @@ -18,7 +18,7 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2 } else { int j = pos.getX(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 045a0dee051d68ae3764da72e66e5dd1a4893a25..3b257b75bd278a3adc14102177ba5ba6988cc9cf 100644 +index fe9da4a79133bf2b3945abb8086f7c59898eb787..1320729aa1d2653db32fc446942071bf436217a1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -601,6 +601,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0146-Piglin-portal-spawn-modifier.patch b/patches/server/0146-Piglin-portal-spawn-modifier.patch index b821ac159..9eccf60c9 100644 --- a/patches/server/0146-Piglin-portal-spawn-modifier.patch +++ b/patches/server/0146-Piglin-portal-spawn-modifier.patch @@ -31,7 +31,7 @@ index caa22afb0781671b901c23ebcc89e5bb0d2bd615..259f7e162968714e2959b199c7b1ab84 pos = pos.below(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3b257b75bd278a3adc14102177ba5ba6988cc9cf..e55977b2f830d6165bb70e1b861e0bec2c9efe40 100644 +index 1320729aa1d2653db32fc446942071bf436217a1..878ac85b96b4c253cb7928b080aa089bfb840f3f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1657,6 +1657,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0147-Config-to-change-max-number-of-bees.patch b/patches/server/0147-Config-to-change-max-number-of-bees.patch index 25eca8590..7ebf46b10 100644 --- a/patches/server/0147-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0147-Config-to-change-max-number-of-bees.patch @@ -18,10 +18,10 @@ index 7b263fab4f0014400b3b8e7e33db32f9a125f6ba..f52823146944d333f2d050e90261b570 public BeehiveBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BEEHIVE, pos, state); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 01f192f911dfd4c4afcd942196fce62e35cdbacf..d1dcaaec7731e24cad3e3566fd5bb4dbe0b7336d 100644 +index e19346e82ace64d5439d2607709682a9381edfe7..499c04781546e8e0bf6d6251e0670cfcff049246 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -250,6 +250,7 @@ public class PurpurConfig { +@@ -252,6 +252,7 @@ public class PurpurConfig { public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; @@ -29,7 +29,7 @@ index 01f192f911dfd4c4afcd942196fce62e35cdbacf..d1dcaaec7731e24cad3e3566fd5bb4db private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -281,6 +282,7 @@ public class PurpurConfig { +@@ -283,6 +284,7 @@ public class PurpurConfig { org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); diff --git a/patches/server/0148-Config-for-wither-explosion-radius.patch b/patches/server/0148-Config-for-wither-explosion-radius.patch index ebe664319..29c5108c9 100644 --- a/patches/server/0148-Config-for-wither-explosion-radius.patch +++ b/patches/server/0148-Config-for-wither-explosion-radius.patch @@ -18,7 +18,7 @@ index e472df057d087fe46bd40b798c050ed6e38a283c..999453409c19abf7f5b5c2dc39969985 if (!event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e55977b2f830d6165bb70e1b861e0bec2c9efe40..53522994b7f55158cec339a1db67853b014c7453 100644 +index 878ac85b96b4c253cb7928b080aa089bfb840f3f..2133dc7583cdc6ff7a9f7e46e461606786186fc1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2300,6 +2300,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0149-Gamemode-extra-permissions.patch b/patches/server/0149-Gamemode-extra-permissions.patch index fe0293f51..a5dc61d08 100644 --- a/patches/server/0149-Gamemode-extra-permissions.patch +++ b/patches/server/0149-Gamemode-extra-permissions.patch @@ -73,10 +73,10 @@ index 52649f82351ab4f675c3cc3cd6640956b0f76b91..eb51c88c7a0658190d3a8bfd5d18dca7 DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "defaultgamemode", "Allows the user to change the default gamemode of the server", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "seed", "Allows the user to view the seed of the world", PermissionDefault.OP, commands); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d1dcaaec7731e24cad3e3566fd5bb4dbe0b7336d..62b375aee2703d573b728872d6b2f9d35e9c1f24 100644 +index 499c04781546e8e0bf6d6251e0670cfcff049246..40f1a5aeea97c192488bedb00b7e565f6a32c9f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -233,6 +233,7 @@ public class PurpurConfig { +@@ -235,6 +235,7 @@ public class PurpurConfig { public static String commandTPSBarTextColorMedium = ""; public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; @@ -84,7 +84,7 @@ index d1dcaaec7731e24cad3e3566fd5bb4dbe0b7336d..62b375aee2703d573b728872d6b2f9d3 private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -244,6 +245,7 @@ public class PurpurConfig { +@@ -246,6 +247,7 @@ public class PurpurConfig { commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium); commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); diff --git a/patches/server/0150-Configurable-piston-push-limit.patch b/patches/server/0150-Configurable-piston-push-limit.patch index 22fe73436..8c068eb09 100644 --- a/patches/server/0150-Configurable-piston-push-limit.patch +++ b/patches/server/0150-Configurable-piston-push-limit.patch @@ -36,7 +36,7 @@ index 205e223c356634bd6bc6bd58c6f0b7fda61a6f5f..bea05cb928d540a2f19b51bb7352d032 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 53522994b7f55158cec339a1db67853b014c7453..e19c693460eb75e31f19e3759cde7228ef4e8662 100644 +index 2133dc7583cdc6ff7a9f7e46e461606786186fc1..98dea97b699acdcb4a398eefd534142a603c3247 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -596,6 +596,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0151-Configurable-broadcast-settings.patch b/patches/server/0151-Configurable-broadcast-settings.patch index 9d32600b8..00ce3d526 100644 --- a/patches/server/0151-Configurable-broadcast-settings.patch +++ b/patches/server/0151-Configurable-broadcast-settings.patch @@ -17,7 +17,7 @@ index b286b157bba78021efa18f01bc91b067b0bd5874..fc87e3cfff1221a6cbaf3463ce972870 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e7b07482d7a00bc1704b79b102cc1ad36fb06368..f7402093e00e2d0f0fdd7ce81b91ae59ddae0005 100644 +index 8bb9692f37f2f0cfa7964963aacbc57b67a2708b..f3255cdfe9ff77be2b781056e39f35d506aafeb2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1081,6 +1081,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -29,10 +29,10 @@ index e7b07482d7a00bc1704b79b102cc1ad36fb06368..f7402093e00e2d0f0fdd7ce81b91ae59 if (scoreboardteam.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 62b375aee2703d573b728872d6b2f9d35e9c1f24..8c7295297830cdcab87ac8bb1f1e04987a5f0f25 100644 +index 40f1a5aeea97c192488bedb00b7e565f6a32c9f1..6bf78e331f654ef8795bbc739dc310d366fddd19 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -203,6 +203,18 @@ public class PurpurConfig { +@@ -205,6 +205,18 @@ public class PurpurConfig { deathMsgRunWithScissors = getString("settings.messages.death-message.run-with-scissors", deathMsgRunWithScissors); } diff --git a/patches/server/0152-Configurable-mob-blindness.patch b/patches/server/0152-Configurable-mob-blindness.patch index f65a97714..a0b73d0d0 100644 --- a/patches/server/0152-Configurable-mob-blindness.patch +++ b/patches/server/0152-Configurable-mob-blindness.patch @@ -28,7 +28,7 @@ index d76c5014ad03471874f945f58c8eb7a553739c94..aa89957fd6b7fdf75ae4a98747f2032c return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e19c693460eb75e31f19e3759cde7228ef4e8662..db71ad4e411d088e0de410ec726e7c2822a34c7b 100644 +index 98dea97b699acdcb4a398eefd534142a603c3247..54d3b8ecdb43d847598dc12cb2dc442fde66ee30 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -130,6 +130,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0153-Hide-hidden-players-from-entity-selector.patch b/patches/server/0153-Hide-hidden-players-from-entity-selector.patch index 355d55008..1276ce2ee 100644 --- a/patches/server/0153-Hide-hidden-players-from-entity-selector.patch +++ b/patches/server/0153-Hide-hidden-players-from-entity-selector.patch @@ -59,10 +59,10 @@ index c8d39e6e1c570c9219f6066da273dc0130920519..b455c7e9d18bac3654daa8510f85cc21 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8c7295297830cdcab87ac8bb1f1e04987a5f0f25..e55db78a18a79a5de7320d8902ea2b9e3f6e9880 100644 +index 6bf78e331f654ef8795bbc739dc310d366fddd19..6488121131e6cde24af3b316512f8c7b2f953756 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -246,6 +246,7 @@ public class PurpurConfig { +@@ -248,6 +248,7 @@ public class PurpurConfig { public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; public static boolean commandGamemodeRequiresPermission = false; @@ -70,7 +70,7 @@ index 8c7295297830cdcab87ac8bb1f1e04987a5f0f25..e55db78a18a79a5de7320d8902ea2b9e private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -258,6 +259,7 @@ public class PurpurConfig { +@@ -260,6 +261,7 @@ public class PurpurConfig { commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission); diff --git a/patches/server/0154-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0154-Config-for-health-to-impact-Creeper-explosion-radius.patch index 36b3c3188..4df054cec 100644 --- a/patches/server/0154-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0154-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Config for health to impact Creeper explosion radius diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index a194cc234e24094da0cbee8c6c4fe123c9b100be..904c3af4809877165a0981f76572d7f0dd0662e0 100644 +index 2834994506948d02abf228cfb9ffbb3bfd801a40..d2816554dc3a8bec79f5d517562cd04e7246fb07 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -370,9 +370,10 @@ public class Creeper extends Monster implements PowerableMob { - this.exploding = true; // Purpur +@@ -373,9 +373,10 @@ public class Creeper extends Monster implements PowerableMob { + if (!this.level().isClientSide) { float f = this.isPowered() ? 2.0F : 1.0F; + float multiplier = this.level().purpurConfig.creeperHealthRadius ? this.getHealth() / this.getMaxHealth() : 1; // Purpur @@ -21,7 +21,7 @@ index a194cc234e24094da0cbee8c6c4fe123c9b100be..904c3af4809877165a0981f76572d7f0 // CraftBukkit end this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index db71ad4e411d088e0de410ec726e7c2822a34c7b..e082cc14623db737e8899642ccc86ffa3c428712 100644 +index 54d3b8ecdb43d847598dc12cb2dc442fde66ee30..f6befc456881e9ea151c1a4297782ef921f08399 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -938,6 +938,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0155-Iron-golem-calm-anger-options.patch b/patches/server/0155-Iron-golem-calm-anger-options.patch index dbfbcd637..3048fdd27 100644 --- a/patches/server/0155-Iron-golem-calm-anger-options.patch +++ b/patches/server/0155-Iron-golem-calm-anger-options.patch @@ -25,7 +25,7 @@ index 65232a2cb23eb4757abdc8741d55e0faccf4c0bb..a820bbbe89dee9e6de2e7d5f72f43d1d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e082cc14623db737e8899642ccc86ffa3c428712..38a2ffbe258fac97b4b740d395683f0b87cad234 100644 +index f6befc456881e9ea151c1a4297782ef921f08399..065cfe73aeff8a57d6c827012164b56f5965afbd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1396,6 +1396,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0156-Breedable-parrots.patch b/patches/server/0156-Breedable-parrots.patch index abbfb1c33..dd6870311 100644 --- a/patches/server/0156-Breedable-parrots.patch +++ b/patches/server/0156-Breedable-parrots.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Breedable parrots diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index c4aa5b254ad2a1b82f8f738ebf64a5a985857b36..e486b3a73277582bc9c63b6f8ed4dfd995e34cb9 100644 +index 49a162cc5ccdb160064b6de20a030175d5248070..4050cc4c93cbe33d3e4cc2f7aed5dfc26018e510 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -221,6 +221,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 09ca45c5b369195b24e5f574217f709cae932137..1be8cf8d8457dcabab313e4b329c0831df6c57ce 100644 +index b0db81b3ebf17f6834716b09d6c30c8d19dc1dec..7b3b76cb9dd8b7f6254baffcd0f94aa70918ff04 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -534,6 +534,21 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - public boolean canSaveToDisk() { - return true; +@@ -536,6 +536,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } -+ // copied from Mob + // Purpur end + ++ // Purpur start - copied from Mob - API for any mob to burn daylight + public boolean isSunBurnTick() { + if (this.level().isDay() && !this.level().isClientSide) { + float f = this.getLightLevelDependentMagicValue(); @@ -27,19 +27,20 @@ index 09ca45c5b369195b24e5f574217f709cae932137..1be8cf8d8457dcabab313e4b329c0831 + + return false; + } ++ // Purpur end - copied from Mob - API for any mob to burn daylight + - // Purpur end - public Entity(EntityType type, Level world) { + this.id = Entity.ENTITY_COUNTER.incrementAndGet(); + this.passengers = ImmutableList.of(); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index aa89957fd6b7fdf75ae4a98747f2032c23c84b2e..3b77111bdf50cd836d6e4199e6224b594430b147 100644 +index ee48e98e6981225b486ea933d51fb4b9cc73fa18..9367e0f148d3aa9a60dfd8881a3c337630a53129 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API -+ protected boolean shouldBurnInDay = false; public boolean shouldBurnInDay() { return this.shouldBurnInDay; } public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Purpur ++ protected boolean shouldBurnInDay = false; public boolean shouldBurnInDay() { return this.shouldBurnInDay; } public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Purpur - API for any mob to burn daylight @Override public float getBukkitYaw() { @@ -47,7 +48,7 @@ index aa89957fd6b7fdf75ae4a98747f2032c23c84b2e..3b77111bdf50cd836d6e4199e6224b59 dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); -+ nbt.putBoolean("Purpur.ShouldBurnInDay", shouldBurnInDay); // Purpur ++ nbt.putBoolean("Purpur.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - API for any mob to burn daylight } @Override @@ -55,21 +56,21 @@ index aa89957fd6b7fdf75ae4a98747f2032c23c84b2e..3b77111bdf50cd836d6e4199e6224b59 this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } -+ // Purpur start ++ // Purpur start - API for any mob to burn daylight + if (nbt.contains("Purpur.ShouldBurnInDay")) { -+ shouldBurnInDay = nbt.getBoolean("Purpur.ShouldBurnInDay"); ++ this.shouldBurnInDay = nbt.getBoolean("Purpur.ShouldBurnInDay"); + } -+ // Purpur end ++ // Purpur end - API for any mob to burn daylight } // CraftBukkit start -@@ -3580,6 +3587,33 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3580,6 +3587,34 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } -+ // Purpur start - copied from Zombie ++ // Purpur start - copied from Zombie - API for any mob to burn daylight + if (this.isAlive()) { -+ boolean flag = shouldBurnInDay && this.isSunBurnTick(); // Paper - shouldBurnInDay API ++ boolean flag = this.shouldBurnInDay() && this.isSunBurnTick(); // Paper - shouldBurnInDay API // Purpur - use shouldBurnInDay() method to handle Phantoms properly - API for any mob to burn daylight + + if (flag) { + ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); @@ -89,19 +90,20 @@ index aa89957fd6b7fdf75ae4a98747f2032c23c84b2e..3b77111bdf50cd836d6e4199e6224b59 + } + + if (flag) { ++ if (getRider() == null || !this.isControllable()) // Purpur - ignore mobs which are uncontrollable or without rider - API for any mob to burn daylight + this.igniteForSeconds(8.0F); + } + } + } -+ // Purpur end ++ // Purpur end - copied from Zombie - API for any mob to burn daylight } 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 d69dc2f390b1afcbb2b3c57143e2181c879bb256..84827f266bddd75ee91e7e88e49caf6d66c58d2b 100644 +index 8b2dd71177b011c2a31e4959ca16057ad5288b22..6dfb13eef96ff43d368cd8163ae5883571cec604 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1786,17 +1786,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1780,17 +1780,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab protected void playAttackSound() {} public boolean isSunBurnTick() { @@ -116,19 +118,20 @@ index d69dc2f390b1afcbb2b3c57143e2181c879bb256..84827f266bddd75ee91e7e88e49caf6d - } - - return false; ++ // Purpur - implemented in Entity - API for any mob to burn daylight + return super.isSunBurnTick(); } @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 5c1aa5859ac411098054be9f52bac0860ee667a5..f56580bdae043fa4e5e195481ae3d344fc725621 100644 +index 5c1aa5859ac411098054be9f52bac0860ee667a5..1d06c612eaba8b595fa3d094577f700989d1e224 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -66,6 +66,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo protected AbstractSkeleton(EntityType type, Level world) { super(type, world); this.reassessWeaponGoal(); -+ this.setShouldBurnInDay(true); // Purpur ++ this.setShouldBurnInDay(true); // Purpur - API for any mob to burn daylight } @Override @@ -137,7 +140,7 @@ index 5c1aa5859ac411098054be9f52bac0860ee667a5..f56580bdae043fa4e5e195481ae3d344 // Paper start - shouldBurnInDay API - private boolean shouldBurnInDay = true; -+ // private boolean shouldBurnInDay = true; // Purpur - moved to LivingEntity - keep methods for ABI compatibility ++ //private boolean shouldBurnInDay = true; // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight public boolean shouldBurnInDay() { return shouldBurnInDay; } public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Paper end - shouldBurnInDay API @@ -168,37 +171,37 @@ index 5c1aa5859ac411098054be9f52bac0860ee667a5..f56580bdae043fa4e5e195481ae3d344 - } - } - -+ // Purpur start - implemented in LivingEntity ++ // Purpur - implemented in LivingEntity - API for any mob to burn daylight super.aiStep(); } -@@ -242,7 +220,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -241,7 +219,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo + super.readAdditionalSaveData(nbt); this.reassessWeaponGoal(); // Paper start - shouldBurnInDay API - if (nbt.contains("Paper.ShouldBurnInDay")) { -- this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); -+ // this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); // Purpur - implemented in LivingEntity +- if (nbt.contains("Paper.ShouldBurnInDay")) { ++ if (false && nbt.contains("Paper.ShouldBurnInDay")) { // Purpur - implemented in LivingEntity - API for any mob to burn daylight + this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); } // Paper end - shouldBurnInDay API - } @@ -251,7 +229,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @Override public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); - nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); -+ // nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity ++ //nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight } // Paper end - shouldBurnInDay API diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index cb96bd5769159e6c25968673ea07cd6d107cff46..440c90feeae3a55c98e2011ecb27c28d58f11e6e 100644 +index cb96bd5769159e6c25968673ea07cd6d107cff46..cbfb5bf945b747328746d21395e66d523c268468 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -20,6 +20,7 @@ public class Husk extends Zombie { public Husk(EntityType type, Level world) { super(type, world); -+ this.setShouldBurnInDay(false); // Purpur ++ this.setShouldBurnInDay(false); // Purpur - API for any mob to burn daylight } // Purpur start @@ -207,19 +210,19 @@ index cb96bd5769159e6c25968673ea07cd6d107cff46..440c90feeae3a55c98e2011ecb27c28d @Override public boolean isSunSensitive() { - return false; -+ return this.shouldBurnInDay; // Purpur - moved to LivingEntity - keep methods for ABI compatibility ++ return this.shouldBurnInDay; // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight } @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 554e01cf4fb3b15549c8c381274014c4735e08c6..df85753709271a6ad1f802da63f189200ead9a3a 100644 +index 554e01cf4fb3b15549c8c381274014c4735e08c6..f6b2e0797554baa3bc74e886e22d5bac67c424f6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -59,6 +59,7 @@ public class Phantom extends FlyingMob implements Enemy { this.xpReward = 5; this.moveControl = new Phantom.PhantomMoveControl(this); this.lookControl = new Phantom.PhantomLookControl(this, this); -+ this.setShouldBurnInDay(true); // Purpur ++ this.setShouldBurnInDay(true); // Purpur - API for any mob to burn daylight } // Purpur start @@ -236,7 +239,7 @@ index 554e01cf4fb3b15549c8c381274014c4735e08c6..df85753709271a6ad1f802da63f18920 - this.igniteForSeconds(8.0F); - } - -+ // Purpur - moved down to shouldBurnInDay() ++ // Purpur - implemented in LivingEntity; moved down to shouldBurnInDay() - API for any mob to burn daylight super.aiStep(); } @@ -245,7 +248,7 @@ index 554e01cf4fb3b15549c8c381274014c4735e08c6..df85753709271a6ad1f802da63f18920 this.spawningEntity = nbt.getUUID("Paper.SpawningEntity"); } - if (nbt.contains("Paper.ShouldBurnInDay")) { -+ if (false && nbt.contains("Paper.ShouldBurnInDay")) { // Purpur - implemented in LivingEntity ++ if (false && nbt.contains("Paper.ShouldBurnInDay")) { // Purpur - implemented in LivingEntity - API for any mob to burn daylight this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); } // Paper end @@ -254,35 +257,29 @@ index 554e01cf4fb3b15549c8c381274014c4735e08c6..df85753709271a6ad1f802da63f18920 nbt.putUUID("Paper.SpawningEntity", this.spawningEntity); } - nbt.putBoolean("Paper.ShouldBurnInDay", shouldBurnInDay); -+ // nbt.putBoolean("Paper.ShouldBurnInDay", shouldBurnInDay); // Purpur - implemented in LivingEntity ++ //nbt.putBoolean("Paper.ShouldBurnInDay", shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight // Paper end } -@@ -356,8 +349,20 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -356,8 +349,14 @@ public class Phantom extends FlyingMob implements Enemy { return this.spawningEntity; } public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; } - private boolean shouldBurnInDay = true; - public boolean shouldBurnInDay() { return shouldBurnInDay; } -+ -+ // private boolean shouldBurnInDay = true; // Purpur - moved to LivingEntity - keep methods for ABI compatibility -+ // Purpur start ++ //private boolean shouldBurnInDay = true; // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight ++ // Purpur start - API for any mob to burn daylight + public boolean shouldBurnInDay() { -+ // Purpur start -+ boolean burnFromDaylight = this.shouldBurnInDay && this.isSunBurnTick() && this.level().purpurConfig.phantomBurnInDaylight; ++ boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight; + boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level().getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight; -+ if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - shouldBurnInDay API -+ // Purpur end -+ if (getRider() == null || !this.isControllable()) // Purpur -+ this.igniteForSeconds(8.0F); -+ } ++ return burnFromDaylight || burnFromLightSource; + } -+ // Purpur End ++ // Purpur end - API for any mob to burn daylight public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Paper end diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 1c2291c8a20541cc1e306efdd5263e5d8b3e0b16..c8a664447f19e437eb7c615563add92715be9650 100644 +index 1c2291c8a20541cc1e306efdd5263e5d8b3e0b16..dd3890d405c9eb5ad2630fc555f7c74fd3d76f6e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -97,11 +97,12 @@ public class Zombie extends Monster { @@ -290,12 +287,12 @@ index 1c2291c8a20541cc1e306efdd5263e5d8b3e0b16..c8a664447f19e437eb7c615563add927 public int conversionTime; private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field - private boolean shouldBurnInDay = true; // Paper - Add more Zombie API -+ // private boolean shouldBurnInDay = true; // Paper - Add more Zombie API // Purpur - implemented in LivingEntity ++ //private boolean shouldBurnInDay = true; // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight public Zombie(EntityType type, Level world) { super(type, world); this.breakDoorGoal = new BreakDoorGoal(this, com.google.common.base.Predicates.in(world.paperConfig().entities.behavior.doorBreakingDifficulty.getOrDefault(type, world.paperConfig().entities.behavior.doorBreakingDifficulty.get(EntityType.ZOMBIE)))); // Paper - Configurable door breaking difficulty -+ this.setShouldBurnInDay(true); // Purpur ++ this.setShouldBurnInDay(true); // Purpur - API for any mob to burn daylight } public Zombie(Level world) { @@ -329,7 +326,7 @@ index 1c2291c8a20541cc1e306efdd5263e5d8b3e0b16..c8a664447f19e437eb7c615563add927 - } - } - -+ // Purpur - implemented in LivingEntity ++ // Purpur - implemented in LivingEntity - API for any mob to burn daylight super.aiStep(); } @@ -337,7 +334,7 @@ index 1c2291c8a20541cc1e306efdd5263e5d8b3e0b16..c8a664447f19e437eb7c615563add927 } -+ public boolean shouldBurnInDay() { return isSunSensitive(); } // Purpur - for ABI compatibility ++ public boolean shouldBurnInDay() { return this.isSunSensitive(); } // Purpur - for ABI compatibility - API for any mob to burn daylight public boolean isSunSensitive() { return this.shouldBurnInDay; // Paper - Add more Zombie API } @@ -346,52 +343,55 @@ index 1c2291c8a20541cc1e306efdd5263e5d8b3e0b16..c8a664447f19e437eb7c615563add927 nbt.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1); nbt.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1); - nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Paper - Add more Zombie API -+ // nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Paper - Add more Zombie API // Purpur - implemented in LivingEntity ++ //nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight } @Override -@@ -502,7 +479,7 @@ public class Zombie extends Monster { +@@ -501,7 +478,7 @@ public class Zombie extends Monster { + this.startUnderWaterConversion(nbt.getInt("DrownedConversionTime")); } // Paper start - Add more Zombie API - if (nbt.contains("Paper.ShouldBurnInDay")) { -- this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); -+ // this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); // Purpur - implemented in LivingEntity +- if (nbt.contains("Paper.ShouldBurnInDay")) { ++ if (false && nbt.contains("Paper.ShouldBurnInDay")) { // Purpur - implemented in LivingEntity - API for any mob to burn daylight + this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay"); } // Paper end - Add more Zombie API - diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 3629a6f99e99ca686446a23eea0329771c4d11cc..4c1303c5b9f631efd9497cf893a6ca0348157f2c 100644 +index 84479dad6078a2a12e6b977185bdbbe7f6b36576..ef550741b2173a1a6f24c3bc532bb530eccd6217 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -86,6 +86,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -86,6 +86,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } ++ // Purpur start - API for any mob to burn daylight + @Override + public boolean isInDaylight() { + return getHandle().isSunBurnTick(); + } ++ // Purpur end - API for any mob to burn daylight + public static CraftEntity getEntity(CraftServer server, T entity) { Preconditions.checkArgument(entity != null, "Unknown entity"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 386647f6000c71c59ab8d7875219eefdc5a3d7ef..88be8ebe619f2e42bdffab534da4f269b802cf41 100644 +index a1e715629313346f670bce92483996122b0f1d7b..26eaf4d9b931bfe51482e1f5d2350fc591778acc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1188,5 +1188,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - if (slot == null) return; - getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); +@@ -1181,4 +1181,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { + this.getHandle().setYBodyRot(bodyYaw); } + // Paper end - body yaw API + ++ // Purpur start - API for any mob to burn daylight + @Override + public boolean shouldBurnInDay() { -+ return getHandle().shouldBurnInDay(); ++ return this.getHandle().shouldBurnInDay(); + } + + @Override -+ public void setShouldBurnInDay(boolean shouldBurnInDay) { -+ getHandle().setShouldBurnInDay(shouldBurnInDay); ++ public void setShouldBurnInDay(final boolean shouldBurnInDay) { ++ this.getHandle().setShouldBurnInDay(shouldBurnInDay); + } - // Purpur end ++ // Purpur end - API for any mob to burn daylight } diff --git a/patches/server/0164-Config-MobEffect-by-world.patch b/patches/server/0164-Config-MobEffect-by-world.patch index 5331916a2..864bd22a0 100644 --- a/patches/server/0164-Config-MobEffect-by-world.patch +++ b/patches/server/0164-Config-MobEffect-by-world.patch @@ -72,7 +72,7 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 337274787b041e23ae068b5bd00e978a5e53df81..fa699e512caf3c959c1ea655751f476df8eed216 100644 +index 370540330a9457bbc9b084716fa4461da58a72a6..b273cc14dce9c4f1f98cb3623bfacf5adbfbf4f6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -316,6 +316,21 @@ public class PurpurWorldConfig { diff --git a/patches/server/0165-Beacon-Activation-Range-Configurable.patch b/patches/server/0165-Beacon-Activation-Range-Configurable.patch index 8abababa0..aeb145faf 100644 --- a/patches/server/0165-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0165-Beacon-Activation-Range-Configurable.patch @@ -26,7 +26,7 @@ index 814e70f558d7a6186233da0ff86c94c95d390e09..d1fb77d83d48183a9a37dbeec7bb0fda } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fa699e512caf3c959c1ea655751f476df8eed216..b8a7ef1d69e1ea25b5efe3b8d7f5a937a36a3e45 100644 +index b273cc14dce9c4f1f98cb3623bfacf5adbfbf4f6..aabffb08cdec317dc5533b6d8ca535806a8318f1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -490,6 +490,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0166-Make-lightning-rod-range-configurable.patch b/patches/server/0166-Make-lightning-rod-range-configurable.patch index 5c9612533..6379736ad 100644 --- a/patches/server/0166-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0166-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 e8e5704937350cc65ae24980c56a3a898debd4f2..b8d80e04eea132d9671026e93e7c666d33dfeb25 100644 +index 97e18801ae774d4e7b5154912a1a82810fc3d0b9..b2f066db2ac90ba53e0cc3c995316f49f7bc62ea 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -978,7 +978,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -977,7 +977,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; @@ -18,10 +18,10 @@ index e8e5704937350cc65ae24980c56a3a898debd4f2..b8d80e04eea132d9671026e93e7c666d return optional.map((blockposition1) -> { return blockposition1.above(1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 04be61a14d33dad94d7193c13ccefdd05a4620d0..2e886467a77857bcbc156443068ef4b19815e8df 100644 +index 7b78896803290d89cbdcbc2d68eccc97d07a0fba..45e75e35e6fb6507fc1322267c05a7a41e0320b8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -270,6 +270,7 @@ public class PurpurConfig { +@@ -272,6 +272,7 @@ public class PurpurConfig { public static boolean cryingObsidianValidForPortalFrame = false; public static int beeInsideBeeHive = 3; public static boolean anvilCumulativeCost = true; @@ -29,7 +29,7 @@ index 04be61a14d33dad94d7193c13ccefdd05a4620d0..2e886467a77857bcbc156443068ef4b1 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -303,6 +304,7 @@ public class PurpurConfig { +@@ -305,6 +306,7 @@ public class PurpurConfig { cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); diff --git a/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 1368cb54b..07717fbe9 100644 --- a/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0167-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -54,7 +54,7 @@ index bd3f78e6453cfe18aa3da38176b04d734d83bb4b..515dd3b769917c4aa60ce180ef24f38c public void eat(FoodProperties foodComponent) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b8a7ef1d69e1ea25b5efe3b8d7f5a937a36a3e45..b96466cb65ae24e4095fa182a43cf01d40ee59d8 100644 +index aabffb08cdec317dc5533b6d8ca535806a8318f1..7628e4bfa494c9773a44080cada66d1bce2f1d05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -373,6 +373,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0170-Shulker-spawn-from-bullet-options.patch b/patches/server/0170-Shulker-spawn-from-bullet-options.patch index b07eba232..5272d6e23 100644 --- a/patches/server/0170-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0170-Shulker-spawn-from-bullet-options.patch @@ -68,7 +68,7 @@ index 0d04a0107bd1a8a2b9aeb4be55025cd554e8fb79..a050d76233e179a1456b83ccc02bb9a5 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b96466cb65ae24e4095fa182a43cf01d40ee59d8..d07ad8fcaeb819e1e3e468f232d6f2ea75b81738 100644 +index 7628e4bfa494c9773a44080cada66d1bce2f1d05..905e3d7b8a051f693936c81695c3bda6fd872c60 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1917,6 +1917,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0171-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0171-Eating-glow-berries-adds-glow-effect.patch index c2465f969..7118e6c89 100644 --- a/patches/server/0171-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0171-Eating-glow-berries-adds-glow-effect.patch @@ -18,7 +18,7 @@ index 4eef61323ba54f513e6f251ef7c804b2c91ff477..6b2235281dca67a80cb651e9f8e9bf25 public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d07ad8fcaeb819e1e3e468f232d6f2ea75b81738..a36ddbfa600a3beb794f95d6870610f96b42870a 100644 +index 905e3d7b8a051f693936c81695c3bda6fd872c60..ff4a50643c52a199b3c16812223062a9ea2f100f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -205,6 +205,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0172-Option-to-make-drowned-break-doors.patch b/patches/server/0172-Option-to-make-drowned-break-doors.patch index 8c8951740..0f5f66b55 100644 --- a/patches/server/0172-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0172-Option-to-make-drowned-break-doors.patch @@ -26,7 +26,7 @@ index f037d50f26f7532f11a71790448de7a71644b6ca..b3a79dc4357ad4392101353fbc99aac1 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a36ddbfa600a3beb794f95d6870610f96b42870a..d4deac6bc7444e67cc82520506ee579d4d378117 100644 +index ff4a50643c52a199b3c16812223062a9ea2f100f..83cf123c29fb8dc6e3998dbf1779b1d3e724af59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1063,6 +1063,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0173-Configurable-hunger-starvation-damage.patch b/patches/server/0173-Configurable-hunger-starvation-damage.patch index 0eb7f2690..43e051edb 100644 --- a/patches/server/0173-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0173-Configurable-hunger-starvation-damage.patch @@ -18,7 +18,7 @@ index 515dd3b769917c4aa60ce180ef24f38ca12e6848..c7ad716f607afe382436d088a2b2e622 this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d4deac6bc7444e67cc82520506ee579d4d378117..a08b58f67684f20a0eb5b65c7e201c60ee079c39 100644 +index 83cf123c29fb8dc6e3998dbf1779b1d3e724af59..7cf5c1d883b62abea2d855136c6c3c95bdd6e73f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2576,4 +2576,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0175-Add-uptime-command.patch b/patches/server/0175-Add-uptime-command.patch index 7687bfbfa..6e5dc0da3 100644 --- a/patches/server/0175-Add-uptime-command.patch +++ b/patches/server/0175-Add-uptime-command.patch @@ -29,10 +29,10 @@ index d8194ec9b676582fe5684d1330674ef847a04682..02bec087837783892db667883db89263 public int autosavePeriod; // Paper - don't store the vanilla dispatcher diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2e886467a77857bcbc156443068ef4b19815e8df..c77691aeb9d0c35fe042a6e375e12d042091d17a 100644 +index 45e75e35e6fb6507fc1322267c05a7a41e0320b8..1e84cbc4184234a83ed972fc449f2e0dd40f36ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -184,6 +184,7 @@ public class PurpurConfig { +@@ -186,6 +186,7 @@ public class PurpurConfig { public static String pingCommandOutput = "%s's ping is %sms"; public static String tpsbarCommandOutput = "Tpsbar toggled for "; public static String dontRunWithScissors = "Don't run with scissors!"; @@ -40,7 +40,7 @@ index 2e886467a77857bcbc156443068ef4b19815e8df..c77691aeb9d0c35fe042a6e375e12d04 public static String unverifiedUsername = "default"; private static void messages() { cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); -@@ -197,6 +198,7 @@ public class PurpurConfig { +@@ -199,6 +200,7 @@ public class PurpurConfig { pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput); dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors); @@ -48,7 +48,7 @@ index 2e886467a77857bcbc156443068ef4b19815e8df..c77691aeb9d0c35fe042a6e375e12d04 unverifiedUsername = getString("settings.messages.unverified-username", unverifiedUsername); } -@@ -249,6 +251,15 @@ public class PurpurConfig { +@@ -251,6 +253,15 @@ public class PurpurConfig { public static int commandTPSBarTickInterval = 20; public static boolean commandGamemodeRequiresPermission = false; public static boolean hideHiddenPlayersFromEntitySelector = false; @@ -64,7 +64,7 @@ index 2e886467a77857bcbc156443068ef4b19815e8df..c77691aeb9d0c35fe042a6e375e12d04 private static void commandSettings() { commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -262,6 +273,15 @@ public class PurpurConfig { +@@ -264,6 +275,15 @@ public class PurpurConfig { commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission); hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); diff --git a/patches/server/0176-Tool-actionable-options.patch b/patches/server/0176-Tool-actionable-options.patch index 0ec076417..f0ae350be 100644 --- a/patches/server/0176-Tool-actionable-options.patch +++ b/patches/server/0176-Tool-actionable-options.patch @@ -157,7 +157,7 @@ index 24f6a158e4759aac3be8da4cf5e0d40bd295355b..6b7dbb570f8a698c87c6bce992d84d87 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a08b58f67684f20a0eb5b65c7e201c60ee079c39..49243adbc25e5d1141c9cf8b4118d600862b3d17 100644 +index 7cf5c1d883b62abea2d855136c6c3c95bdd6e73f..e355fa02cdb19cb9aaccb6ac35b936e44e506f64 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -489,6 +489,280 @@ public class PurpurWorldConfig { @@ -271,17 +271,17 @@ index a08b58f67684f20a0eb5b65c7e201c60ee079c39..49243adbc25e5d1141c9cf8b4118d600 + Map.entry("minecraft:crimson_stem", Map.of("into", "minecraft:stripped_crimson_stem", "drops", new HashMap())), + Map.entry("minecraft:crimson_hyphae", Map.of("into", "minecraft:stripped_crimson_hyphae", "drops", new HashMap()))) + ).forEach((blockId, obj) -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(blockId)); + if (block == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.strippables`: " + blockId); return; } + if (!(obj instanceof Map map)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.axe.strippables." + blockId + "`"); return; } + String intoId = (String) map.get("into"); -+ Block into = BuiltInRegistries.BLOCK.get(new ResourceLocation(intoId)); ++ Block into = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(intoId)); + if (into == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.strippables." + blockId + ".into`: " + intoId); return; } + Object dropsObj = map.get("drops"); + if (!(dropsObj instanceof Map dropsMap)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.axe.strippables." + blockId + ".drops`"); return; } + Map drops = new HashMap<>(); + dropsMap.forEach((itemId, chance) -> { -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(itemId.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(itemId.toString())); + if (item == Items.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid item for `tools.axe.strippables." + blockId + ".drops`: " + itemId); return; } + drops.put(item, (double) chance); + }); @@ -325,17 +325,17 @@ index a08b58f67684f20a0eb5b65c7e201c60ee079c39..49243adbc25e5d1141c9cf8b4118d600 + Map.entry("minecraft:waxed_weathered_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap())), + Map.entry("minecraft:waxed_oxidized_copper_bulb", Map.of("into", "minecraft:oxidized_copper_bulb", "drops", new HashMap()))) + ).forEach((blockId, obj) -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(blockId)); + if (block == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.waxables`: " + blockId); return; } + if (!(obj instanceof Map map)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.axe.waxables." + blockId + "`"); return; } + String intoId = (String) map.get("into"); -+ Block into = BuiltInRegistries.BLOCK.get(new ResourceLocation(intoId)); ++ Block into = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(intoId)); + if (into == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.waxables." + blockId + ".into`: " + intoId); return; } + Object dropsObj = map.get("drops"); + if (!(dropsObj instanceof Map dropsMap)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.axe.waxables." + blockId + ".drops`"); return; } + Map drops = new HashMap<>(); + dropsMap.forEach((itemId, chance) -> { -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(itemId.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(itemId.toString())); + if (item == Items.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid item for `tools.axe.waxables." + blockId + ".drops`: " + itemId); return; } + drops.put(item, (double) chance); + }); @@ -370,17 +370,17 @@ index a08b58f67684f20a0eb5b65c7e201c60ee079c39..49243adbc25e5d1141c9cf8b4118d600 + Map.entry("minecraft:weathered_copper_bulb", Map.of("into", "minecraft:exposed_copper_bulb", "drops", new HashMap())), + Map.entry("minecraft:oxidized_copper_bulb", Map.of("into", "minecraft:weathered_copper_bulb", "drops", new HashMap()))) + ).forEach((blockId, obj) -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(blockId)); + if (block == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.weatherables`: " + blockId); return; } + if (!(obj instanceof Map map)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.axe.weatherables." + blockId + "`"); return; } + String intoId = (String) map.get("into"); -+ Block into = BuiltInRegistries.BLOCK.get(new ResourceLocation(intoId)); ++ Block into = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(intoId)); + if (into == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.axe.weatherables." + blockId + ".into`: " + intoId); return; } + Object dropsObj = map.get("drops"); + if (!(dropsObj instanceof Map dropsMap)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.axe.weatherables." + blockId + ".drops`"); return; } + Map drops = new HashMap<>(); + dropsMap.forEach((itemId, chance) -> { -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(itemId.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(itemId.toString())); + if (item == Items.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid item for `tools.axe.weatherables." + blockId + ".drops`: " + itemId); return; } + drops.put(item, (double) chance); + }); @@ -393,20 +393,20 @@ index a08b58f67684f20a0eb5b65c7e201c60ee079c39..49243adbc25e5d1141c9cf8b4118d600 + Map.entry("minecraft:coarse_dirt", Map.of("condition", "air_above", "into", "minecraft:dirt", "drops", new HashMap())), + Map.entry("minecraft:rooted_dirt", Map.of("condition", "always", "into", "minecraft:dirt", "drops", Map.of("minecraft:hanging_roots", 1.0D)))) + ).forEach((blockId, obj) -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(blockId)); + if (block == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.hoe.tillables`: " + blockId); return; } + if (!(obj instanceof Map map)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.hoe.tillables." + blockId + "`"); return; } + String conditionId = (String) map.get("condition"); + Tillable.Condition condition = Tillable.Condition.get(conditionId); + if (condition == null) { PurpurConfig.log(Level.SEVERE, "Invalid condition for `tools.hoe.tillables." + blockId + ".condition`: " + conditionId); return; } + String intoId = (String) map.get("into"); -+ Block into = BuiltInRegistries.BLOCK.get(new ResourceLocation(intoId)); ++ Block into = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(intoId)); + if (into == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.hoe.tillables." + blockId + ".into`: " + intoId); return; } + Object dropsObj = map.get("drops"); + if (!(dropsObj instanceof Map dropsMap)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.hoe.tillables." + blockId + ".drops`"); return; } + Map drops = new HashMap<>(); + dropsMap.forEach((itemId, chance) -> { -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(itemId.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(itemId.toString())); + if (item == Items.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid item for `tools.hoe.tillables." + blockId + ".drops`: " + itemId); return; } + drops.put(item, (double) chance); + }); @@ -420,17 +420,17 @@ index a08b58f67684f20a0eb5b65c7e201c60ee079c39..49243adbc25e5d1141c9cf8b4118d600 + Map.entry("minecraft:mycelium", Map.of("into", "minecraft:dirt_path", "drops", new HashMap())), + Map.entry("minecraft:rooted_dirt", Map.of("into", "minecraft:dirt_path", "drops", new HashMap()))) + ).forEach((blockId, obj) -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(blockId)); + if (block == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.shovel.flattenables`: " + blockId); return; } + if (!(obj instanceof Map map)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.shovel.flattenables." + blockId + "`"); return; } + String intoId = (String) map.get("into"); -+ Block into = BuiltInRegistries.BLOCK.get(new ResourceLocation(intoId)); ++ Block into = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(intoId)); + if (into == Blocks.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid block for `tools.shovel.flattenables." + blockId + ".into`: " + intoId); return; } + Object dropsObj = map.get("drops"); + if (!(dropsObj instanceof Map dropsMap)) { PurpurConfig.log(Level.SEVERE, "Invalid yaml for `tools.shovel.flattenables." + blockId + ".drops`"); return; } + Map drops = new HashMap<>(); + dropsMap.forEach((itemId, chance) -> { -+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(itemId.toString())); ++ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(itemId.toString())); + if (item == Items.AIR) { PurpurConfig.log(Level.SEVERE, "Invalid item for `tools.shovel.flattenables." + blockId + ".drops`: " + itemId); return; } + drops.put(item, (double) chance); + }); diff --git a/patches/server/0177-Store-placer-on-Block-when-placed.patch b/patches/server/0177-Store-placer-on-Block-when-placed.patch index a614bf2c8..c9953ea65 100644 --- a/patches/server/0177-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0177-Store-placer-on-Block-when-placed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index c3056e06a2dfb35ed8302af78525a3336433fa94..6196e3c7a6c3fb43402870b6b35d05404beee292 100644 +index a9a4ba95b21af47e770f9daecc2f099c1d113bd8..68b9d2d8121091dadfdd54416b1a3a047b603b8d 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -497,6 +497,7 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0178-Summoner-API.patch b/patches/server/0178-Summoner-API.patch index 4ced7c540..ce7c32b34 100644 --- a/patches/server/0178-Summoner-API.patch +++ b/patches/server/0178-Summoner-API.patch @@ -93,7 +93,7 @@ index 9f20eae7449c670b913cc3bbe1a89254a1d8cde2..8f2348a7fe830a85985ce2b19cb2a915 } 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 962ab1025f42734c11e3ce4c792d17958b14bdfe..0a8466fa93d4955c3d9a1d5a57eeb0751d20a8d4 100644 +index ab0ed16663ac72924d2a4f139705e551ac9db777..15c9321763ad9f3bb31d7a05cb7ed9cb64e9a8a4 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 @@ -88,6 +88,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -120,7 +120,7 @@ index 962ab1025f42734c11e3ce4c792d17958b14bdfe..0a8466fa93d4955c3d9a1d5a57eeb075 @Override protected PathNavigation createNavigation(Level world) { FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); -@@ -260,6 +270,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -261,6 +271,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putInt("Invul", this.getInvulnerableTicks()); @@ -128,7 +128,7 @@ index 962ab1025f42734c11e3ce4c792d17958b14bdfe..0a8466fa93d4955c3d9a1d5a57eeb075 } @Override -@@ -269,6 +280,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -270,6 +281,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } diff --git a/patches/server/0179-Customizable-sleeping-actionbar-messages.patch b/patches/server/0179-Customizable-sleeping-actionbar-messages.patch index 7c4092cc9..2525ce27a 100644 --- a/patches/server/0179-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0179-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 b8d80e04eea132d9671026e93e7c666d33dfeb25..74200fab686750cd53fc30edd050189cb11fe857 100644 +index b2f066db2ac90ba53e0cc3c995316f49f7bc62ea..d1c98dcf2acb0a25f2537ee7f5cc183a0db2e64e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1027,11 +1027,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1026,11 +1026,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. 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 b8d80e04eea132d9671026e93e7c666d33dfeb25..74200fab686750cd53fc30edd050189c } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f7402093e00e2d0f0fdd7ce81b91ae59ddae0005..cc902880e421260129d8daca6a9a9d7a13f27860 100644 +index f3255cdfe9ff77be2b781056e39f35d506aafeb2..136635fa74c099e74d75f1d3ca093514329bf3dc 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1570,7 +1570,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -63,10 +63,10 @@ index f7402093e00e2d0f0fdd7ce81b91ae59ddae0005..cc902880e421260129d8daca6a9a9d7a ((ServerLevel) this.level()).updateSleepingPlayerList(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c77691aeb9d0c35fe042a6e375e12d042091d17a..74b1153454ae75653706913c993781c462d95689 100644 +index 1e84cbc4184234a83ed972fc449f2e0dd40f36ef..e61adb459d148390851607c6ea7cf710344b26e8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -186,6 +186,9 @@ public class PurpurConfig { +@@ -188,6 +188,9 @@ public class PurpurConfig { public static String dontRunWithScissors = "Don't run with scissors!"; public static String uptimeCommandOutput = "Server uptime is "; public static String unverifiedUsername = "default"; @@ -76,7 +76,7 @@ index c77691aeb9d0c35fe042a6e375e12d042091d17a..74b1153454ae75653706913c993781c4 private static void messages() { cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -@@ -200,6 +203,9 @@ public class PurpurConfig { +@@ -202,6 +205,9 @@ public class PurpurConfig { dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors); uptimeCommandOutput = getString("settings.messages.uptime-command-output", uptimeCommandOutput); unverifiedUsername = getString("settings.messages.unverified-username", unverifiedUsername); diff --git a/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch index 134e7f53a..242f575bb 100644 --- a/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0180-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -18,7 +18,7 @@ index 3253361d91e2a2e68d354eaf3dd3e3cd486e191d..2649188930653610b8aaaeb18797c808 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 49243adbc25e5d1141c9cf8b4118d600862b3d17..aba76fc1be5271883308d8127c6266ae1333d4fd 100644 +index e355fa02cdb19cb9aaccb6ac35b936e44e506f64..91b2f4b6a24ea07835cf6caa4994fadbeee97b46 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -206,6 +206,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0181-Big-dripleaf-tilt-delay.patch b/patches/server/0181-Big-dripleaf-tilt-delay.patch index a6e496f18..5493d8cb8 100644 --- a/patches/server/0181-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0181-Big-dripleaf-tilt-delay.patch @@ -24,7 +24,7 @@ index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae0 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aba76fc1be5271883308d8127c6266ae1333d4fd..91adbbf51559e03942eefef7a535e52e75963626 100644 +index 91b2f4b6a24ea07835cf6caa4994fadbeee97b46..36becc96a815ebd0dde7e8b9b8072948df4ee758 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -804,6 +804,22 @@ public class PurpurWorldConfig { diff --git a/patches/server/0182-Player-ridable-in-water-option.patch b/patches/server/0182-Player-ridable-in-water-option.patch index 7321c334a..fbfcb94e8 100644 --- a/patches/server/0182-Player-ridable-in-water-option.patch +++ b/patches/server/0182-Player-ridable-in-water-option.patch @@ -23,7 +23,7 @@ index 2fe3af832a228b1352b9b85dec06115009ef658f..cb6f161d32fe9642e9e9b1efc47d8861 if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 91adbbf51559e03942eefef7a535e52e75963626..f5bdf319a4f8cb8582b68306a14cc12aea10ab2e 100644 +index 36becc96a815ebd0dde7e8b9b8072948df4ee758..ba419b8681659ca1b3cc619915b3a07bdd4abe29 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -379,6 +379,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index a17eede01..914a23fd0 100644 --- a/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0183-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,7 +17,7 @@ index f2e21c9d3cefb635c4eb583ac9355b46675c94e7..2855efc4670c58219ca1e78770ac289a for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f5bdf319a4f8cb8582b68306a14cc12aea10ab2e..6c0dacb0a8ab5cfbba9880f2f9c8c6f1c60f3744 100644 +index ba419b8681659ca1b3cc619915b3a07bdd4abe29..af53cf014a45bd012b735e73f44dfcb661fdbb3f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1434,6 +1434,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0184-Add-compass-command.patch b/patches/server/0184-Add-compass-command.patch index e6730412f..9cfa4bc2d 100644 --- a/patches/server/0184-Add-compass-command.patch +++ b/patches/server/0184-Add-compass-command.patch @@ -17,7 +17,7 @@ index 938f0cc6631e5fdf687f43c1adc850d778227e98..1beb75aa960c766344f00fa898f905d5 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index cc902880e421260129d8daca6a9a9d7a13f27860..4ab562eaeb21b0ed8ee4fdedfe22259e76dd3e68 100644 +index 136635fa74c099e74d75f1d3ca093514329bf3dc..4af01ae458e5a79c20725b22b532710a66ba8f43 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -303,6 +303,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -44,7 +44,7 @@ index cc902880e421260129d8daca6a9a9d7a13f27860..4ab562eaeb21b0ed8ee4fdedfe22259e } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -3081,5 +3084,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3083,5 +3086,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } @@ -59,10 +59,10 @@ index cc902880e421260129d8daca6a9a9d7a13f27860..4ab562eaeb21b0ed8ee4fdedfe22259e // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 74b1153454ae75653706913c993781c462d95689..c1e7dc324237eea16e88a1fc636d5bcdf49a2b0c 100644 +index e61adb459d148390851607c6ea7cf710344b26e8..21dff6a902b3c4e0fb40e61b4974ead7a6c920f2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -255,6 +255,11 @@ public class PurpurConfig { +@@ -257,6 +257,11 @@ public class PurpurConfig { public static String commandTPSBarTextColorMedium = ""; public static String commandTPSBarTextColorLow = ""; public static int commandTPSBarTickInterval = 20; @@ -74,7 +74,7 @@ index 74b1153454ae75653706913c993781c462d95689..c1e7dc324237eea16e88a1fc636d5bcd public static boolean commandGamemodeRequiresPermission = false; public static boolean hideHiddenPlayersFromEntitySelector = false; public static String uptimeFormat = ""; -@@ -277,6 +282,13 @@ public class PurpurConfig { +@@ -279,6 +284,13 @@ public class PurpurConfig { commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium); commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); @@ -89,7 +89,7 @@ index 74b1153454ae75653706913c993781c462d95689..c1e7dc324237eea16e88a1fc636d5bcd hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6c0dacb0a8ab5cfbba9880f2f9c8c6f1c60f3744..4b42e9f08914a94fe208fb3d4eba8ade0c7f23de 100644 +index af53cf014a45bd012b735e73f44dfcb661fdbb3f..96e366d6f12671b580f83f428e07d08c221b888b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -207,6 +207,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0185-Toggle-for-kinetic-damage.patch b/patches/server/0185-Toggle-for-kinetic-damage.patch index 21e64f030..9f7d1afbf 100644 --- a/patches/server/0185-Toggle-for-kinetic-damage.patch +++ b/patches/server/0185-Toggle-for-kinetic-damage.patch @@ -17,7 +17,7 @@ index 3b77111bdf50cd836d6e4199e6224b594430b147..bc31065aed8d09b5242310de52f895a0 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b42e9f08914a94fe208fb3d4eba8ade0c7f23de..98ede0ab5caf0b4901f5e879e1a35596738bc620 100644 +index 96e366d6f12671b580f83f428e07d08c221b888b..4d9ae3f9312b7427f1e4e4583bb5ecfa57f09f20 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -178,12 +178,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0186-Add-Option-for-disable-observer-clocks.patch b/patches/server/0186-Add-Option-for-disable-observer-clocks.patch index 0e7f4df88..8b87ac81b 100644 --- a/patches/server/0186-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0186-Add-Option-for-disable-observer-clocks.patch @@ -18,7 +18,7 @@ index b38fbe5121f293f425d7673a6ce49b11d0ced0d9..2a74f42672b92393b52a61c27c5b8af7 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 98ede0ab5caf0b4901f5e879e1a35596738bc620..2ef2eaa9a6d6ee89b9c8132500ee4f4e27fe320a 100644 +index 4d9ae3f9312b7427f1e4e4583bb5ecfa57f09f20..d78268f4b1740c922bc979de7d5f1f8ccec3af2f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -354,6 +354,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch index 995b47286..b4b735eb5 100644 --- a/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0187-Customizeable-Zombie-Villager-curing-times.patch @@ -18,7 +18,7 @@ index 3c4cff3f095cdf2dd74df7bf4bb8f3d5600b342d..9bb75b49ea2d0bd8aafbe537b65f86eb return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2ef2eaa9a6d6ee89b9c8132500ee4f4e27fe320a..78c88c86da467cc1c214de1e335878df29ee1f2e 100644 +index d78268f4b1740c922bc979de7d5f1f8ccec3af2f..863fa41dc970b59e31aa0fe78729eb305780cf19 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2837,6 +2837,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch index 1ff4b1e36..8f82362e0 100644 --- a/patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0188-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,7 +30,7 @@ index a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff..6fe44572e34ad3e3a1851e73138bd8b7 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 78c88c86da467cc1c214de1e335878df29ee1f2e..6ddf71e286bb0ddaf73191821046853727624c17 100644 +index 863fa41dc970b59e31aa0fe78729eb305780cf19..93faa1e96703c32bc19a235479ba271ef1f2aa06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -990,9 +990,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch index 902405916..4c28583a0 100644 --- a/patches/server/0189-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0189-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 0a8466fa93d4955c3d9a1d5a57eeb0751d20a8d4..adfadd75f29a82f606824f7d98f3abec8e8591c3 100644 +index 15c9321763ad9f3bb31d7a05cb7ed9cb64e9a8a4..c37c27eec9d0b293063fc8841ac85810cd9af711 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 -@@ -425,7 +425,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -426,7 +426,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } // CraftBukkit end @@ -18,7 +18,7 @@ index 0a8466fa93d4955c3d9a1d5a57eeb0751d20a8d4..adfadd75f29a82f606824f7d98f3abec // this.level().globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6ddf71e286bb0ddaf73191821046853727624c17..1faa6fae7931401bda9174b92e1e025836f051fb 100644 +index 93faa1e96703c32bc19a235479ba271ef1f2aa06..e0ed820f2b2369d2c2892683c99feb0e84831f5a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2682,6 +2682,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch index 0adc43741..4eb39c3c4 100644 --- a/patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0190-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,7 +18,7 @@ index ff4dda48116a2969704b355ff96407ba869b466e..9200d75b05ce535f7b7f5c1572cd8f62 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1faa6fae7931401bda9174b92e1e025836f051fb..6052c3609796a90e73f8531ec1e9940cf4ebaf4c 100644 +index e0ed820f2b2369d2c2892683c99feb0e84831f5a..c9e9f39d9583cac71f9703f5f8a8bcf621a9a70a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -831,6 +831,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch index cd080992e..dc5f821ec 100644 --- a/patches/server/0191-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0191-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 6052c3609796a90e73f8531ec1e9940cf4ebaf4c..58a1fcf60b157ca1b135500218bdc42063d4fe9d 100644 +index c9e9f39d9583cac71f9703f5f8a8bcf621a9a70a..0b06d64ca0fe0d33345526e9b62e58ec073e610b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -389,6 +389,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0192-Conduit-behavior-configuration.patch b/patches/server/0192-Conduit-behavior-configuration.patch index 4983ffef0..e7b1eccaa 100644 --- a/patches/server/0192-Conduit-behavior-configuration.patch +++ b/patches/server/0192-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 58a1fcf60b157ca1b135500218bdc42063d4fe9d..8176952dcff842039c7782f489fbf6160bc12379 100644 +index 0b06d64ca0fe0d33345526e9b62e58ec073e610b..fc4d67cb6e8f730cfd141818bc7a6380c872f605 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2903,4 +2903,27 @@ public class PurpurWorldConfig { @@ -120,7 +120,7 @@ index 58a1fcf60b157ca1b135500218bdc42063d4fe9d..8176952dcff842039c7782f489fbf616 + add("minecraft:sea_lantern"); + add("minecraft:dark_prismarine"); + }}).forEach(key -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(key.toString())); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(key.toString())); + if (!block.defaultBlockState().isAir()) { + conduitBlockList.add(block); + } diff --git a/patches/server/0193-Cauldron-fill-chances.patch b/patches/server/0193-Cauldron-fill-chances.patch index d47d58172..d9f6b18bb 100644 --- a/patches/server/0193-Cauldron-fill-chances.patch +++ b/patches/server/0193-Cauldron-fill-chances.patch @@ -47,7 +47,7 @@ index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb3 if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8176952dcff842039c7782f489fbf6160bc12379..08f5759ad14f22e1af5bae16f5e978ad321df7c2 100644 +index fc4d67cb6e8f730cfd141818bc7a6380c872f605..dc98e302cbe5ad2f016913d2b41c6d68d94b589e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2926,4 +2926,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0194-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0194-Config-to-allow-mobs-to-pathfind-over-rails.patch index b7082594d..ba48b3343 100644 --- a/patches/server/0194-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0194-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,7 +18,7 @@ index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b2669 && pathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 08f5759ad14f22e1af5bae16f5e978ad321df7c2..792299ec1ed47a7eda31464b17da33a30f09c82b 100644 +index dc98e302cbe5ad2f016913d2b41c6d68d94b589e..b953cf6ff70684ef4735ea4f328f647649ea9ce4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -136,6 +136,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0195-Shulker-change-color-with-dye.patch b/patches/server/0195-Shulker-change-color-with-dye.patch index b82bf6436..dab5235ea 100644 --- a/patches/server/0195-Shulker-change-color-with-dye.patch +++ b/patches/server/0195-Shulker-change-color-with-dye.patch @@ -29,7 +29,7 @@ index fde6bae8a5d9eba7ec87c73047a6e3f91629828e..0e9a4e473b1f1887804507cfadfdeeed protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 792299ec1ed47a7eda31464b17da33a30f09c82b..d191b3401194b6a00f82f1e7bed8eef4f26f9875 100644 +index b953cf6ff70684ef4735ea4f328f647649ea9ce4..faf2b37977bb0b3d1b8a95f31159ab4b142bf56a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2244,6 +2244,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0198-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0198-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 9f0e26827..b2751b1a2 100644 --- a/patches/server/0198-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0198-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 74200fab686750cd53fc30edd050189cb11fe857..9e3dc4bf5ad390e6e49a5193c7788d0c0c536f0f 100644 +index d1c98dcf2acb0a25f2537ee7f5cc183a0db2e64e..31642e0667b4086fdc05626806da6d5c5c24baeb 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1187,6 +1187,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1186,6 +1186,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index 74200fab686750cd53fc30edd050189cb11fe857..9e3dc4bf5ad390e6e49a5193c7788d0c 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.... -@@ -1194,6 +1195,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1193,6 +1194,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -25,7 +25,7 @@ index 74200fab686750cd53fc30edd050189cb11fe857..9e3dc4bf5ad390e6e49a5193c7788d0c // 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 d191b3401194b6a00f82f1e7bed8eef4f26f9875..5e8f6c9542358888f897dc67af20efb2022e7be1 100644 +index faf2b37977bb0b3d1b8a95f31159ab4b142bf56a..3a8c99464eaff70be5695cafd83caa3d1c6f7a03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -137,6 +137,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 47d5a2386..2b7d8016a 100644 --- a/patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0199-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,7 +50,7 @@ index 223259e7a09ada681b6181c898f6857888594f85..7d58a95f7ae8983b466b275f4f82597d .sound(SoundType.FLOWERING_AZALEA) .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e8f6c9542358888f897dc67af20efb2022e7be1..3f9da1c367a397c9e386517d690f048a93787686 100644 +index 3a8c99464eaff70be5695cafd83caa3d1c6f7a03..0a854ab320f008eed19b9bd77d29a62c7dafdec5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -791,6 +791,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch index 81855e402..bc4e17027 100644 --- a/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0200-Shift-right-click-to-use-exp-for-mending.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 5f140eba20078aabfb484223fb9d113db201b07f..a72222c515a804299a781083baaf032bf64251af 100644 +index 7e96d06e498ee8a5b3f237e70516552d0cf24388..89eef5b3c964668e3be53cce6551a6faa8f1cca9 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -518,6 +518,7 @@ public class ServerPlayerGameMode { @@ -16,7 +16,7 @@ index 5f140eba20078aabfb484223fb9d113db201b07f..a72222c515a804299a781083baaf032b BlockPos blockposition = hitResult.getBlockPos(); BlockState iblockdata = world.getBlockState(blockposition); boolean cancelledBlock = false; -@@ -621,4 +622,18 @@ public class ServerPlayerGameMode { +@@ -627,4 +628,18 @@ public class ServerPlayerGameMode { public void setLevel(ServerLevel world) { this.level = world; } @@ -36,7 +36,7 @@ index 5f140eba20078aabfb484223fb9d113db201b07f..a72222c515a804299a781083baaf032b + // 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 22979d8531fd9732b1fd5eaf76aec52b22fdf6bb..d0672ed5abf3488fc3ec6ea8b153e2d22ff3e9ab 100644 +index 50adefb7297d959bc4005a9418c09eabf76e2746..1f18c8256e1b9eda82946c33d79e8303344e575d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2004,6 +2004,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -48,7 +48,7 @@ index 22979d8531fd9732b1fd5eaf76aec52b22fdf6bb..d0672ed5abf3488fc3ec6ea8b153e2d2 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 3f9da1c367a397c9e386517d690f048a93787686..205b3ec04cc2e713b474242fae0792317ce708c9 100644 +index 0a854ab320f008eed19b9bd77d29a62c7dafdec5..1ffae4a0da032cf4a2c2e0bed30059b20b63ad05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -396,6 +396,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch index 3c1a3cfd7..372a64be6 100644 --- a/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0201-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,7 +48,7 @@ index 439fa9a5070889a4dee48786509940c4d56b6806..f2e1954a1e80862ec3818af448cf4096 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 205b3ec04cc2e713b474242fae0792317ce708c9..0f5fc85cdd9210627b09e31d6f5d9b8f7cbed691 100644 +index 1ffae4a0da032cf4a2c2e0bed30059b20b63ad05..42152013c0c242427fc9ba95a65e8b1b62547a2f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1342,6 +1342,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch index f91522915..7f726fbb8 100644 --- a/patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0202-Cows-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index c519883f4ed3772378b5563401b8c557dc315ace..78f00014c034949b6559ca948b1b78fa90f45334 100644 +index dfb8bc50ceb8eab6752fab62cb81efda569d2fbb..dd66868e9b9f807a5e20420987336b4ddea22b9c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -37,6 +37,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; @@ -61,7 +61,7 @@ index c519883f4ed3772378b5563401b8c557dc315ace..78f00014c034949b6559ca948b1b78fa @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0f5fc85cdd9210627b09e31d6f5d9b8f7cbed691..6db545951f0923ba14a06f2a98b6f39ec3c31f9f 100644 +index 42152013c0c242427fc9ba95a65e8b1b62547a2f..efd3b1aa485b404ac46cbb74f642793ec5186b98 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1291,7 +1291,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch index 1395fb042..7764d2e36 100644 --- a/patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0203-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,7 +22,7 @@ index 1e100de8d30777e83907c523ffc1a3a54c670205..a9f6016b76dce5ca63b3a1093241c9e6 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6db545951f0923ba14a06f2a98b6f39ec3c31f9f..38768c545488f6062a2af68a2f744f07ef00541c 100644 +index efd3b1aa485b404ac46cbb74f642793ec5186b98..0e3c847d474651c8b3f5ad0a8e0cd6912a3af3df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -810,6 +810,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0204-Halloween-options-and-optimizations.patch b/patches/server/0204-Halloween-options-and-optimizations.patch index 46f36f5b5..5be168b31 100644 --- a/patches/server/0204-Halloween-options-and-optimizations.patch +++ b/patches/server/0204-Halloween-options-and-optimizations.patch @@ -60,7 +60,7 @@ index c8a664447f19e437eb7c615563add92715be9650..fc6914d459b1985a2cba0f963a7d79eb 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 38768c545488f6062a2af68a2f744f07ef00541c..5b9671669fef3844a02e2c79b965d3eea1bea87a 100644 +index 0e3c847d474651c8b3f5ad0a8e0cd6912a3af3df..7bf7ae192d2423c6818075bed4c862848a94cef4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1684,6 +1684,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0205-Config-for-grindstones.patch b/patches/server/0205-Config-for-grindstones.patch index 887bc1ecc..e07556eac 100644 --- a/patches/server/0205-Config-for-grindstones.patch +++ b/patches/server/0205-Config-for-grindstones.patch @@ -123,10 +123,10 @@ index 1678f6c8b2c7db761783e53043169bf12bc2cb29..5d47ffc3fd31930c7dd2f23bc0e6b7da } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c1e7dc324237eea16e88a1fc636d5bcdf49a2b0c..95fd67671ad690052f7d697ef11e327969af5ef8 100644 +index 21dff6a902b3c4e0fb40e61b4974ead7a6c920f2..34bcb00ba8fab7ad1422fc2c07017b464afc6f09 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -309,6 +309,9 @@ public class PurpurConfig { +@@ -311,6 +311,9 @@ public class PurpurConfig { public static int beeInsideBeeHive = 3; public static boolean anvilCumulativeCost = true; public static int lightningRodRange = 128; @@ -136,7 +136,7 @@ index c1e7dc324237eea16e88a1fc636d5bcdf49a2b0c..95fd67671ad690052f7d697ef11e3279 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -343,6 +346,19 @@ public class PurpurConfig { +@@ -345,6 +348,21 @@ public class PurpurConfig { beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); lightningRodRange = getInt("settings.blocks.lightning_rod.range", lightningRodRange); @@ -148,7 +148,9 @@ index c1e7dc324237eea16e88a1fc636d5bcdf49a2b0c..95fd67671ad690052f7d697ef11e3279 + defaultCurses.clear(); + } + getList("settings.blocks.grindstone.ignored-enchants", defaultCurses).forEach(key -> { -+ Enchantment enchantment = BuiltInRegistries.ENCHANTMENT.get(new ResourceLocation(key.toString())); ++ Registry registry = MinecraftServer.getServer().registryAccess().registryOrThrow(Registries.ENCHANTMENT); ++ Enchantment enchantment = registry.get(ResourceLocation.parse(key.toString())); ++ if (enchantment == null) return; + grindstoneIgnoredEnchants.add(enchantment); + }); + grindstoneRemoveAttributes = getBoolean("settings.blocks.grindstone.remove-attributes", grindstoneRemoveAttributes); diff --git a/patches/server/0206-UPnP-Port-Forwarding.patch b/patches/server/0206-UPnP-Port-Forwarding.patch index 32948eb40..ade42dda8 100644 --- a/patches/server/0206-UPnP-Port-Forwarding.patch +++ b/patches/server/0206-UPnP-Port-Forwarding.patch @@ -67,10 +67,10 @@ index 70b0d8f18df7380d54a9c28e0d9060964e338993..1331b58b60142513708c8188f04c6818 // CraftBukkit start // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 95fd67671ad690052f7d697ef11e327969af5ef8..d1e825e11727a6923ffd9a524dadde3ed9436821 100644 +index 34bcb00ba8fab7ad1422fc2c07017b464afc6f09..ccc2b99c8aec56e6434b7b83ebee6e286b6b22d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -410,4 +410,9 @@ public class PurpurConfig { +@@ -414,4 +414,9 @@ public class PurpurConfig { private static void tpsCatchup() { tpsCatchup = getBoolean("settings.tps-catchup", tpsCatchup); } diff --git a/patches/server/0207-Campfire-option-for-lit-when-placed.patch b/patches/server/0207-Campfire-option-for-lit-when-placed.patch index 9eed1ebbb..ce4e1269c 100644 --- a/patches/server/0207-Campfire-option-for-lit-when-placed.patch +++ b/patches/server/0207-Campfire-option-for-lit-when-placed.patch @@ -18,7 +18,7 @@ index 7f6058f4def83867971121751acd51c398583651..5a49daf7b6bf9e0ec3d50494287a620d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5b9671669fef3844a02e2c79b965d3eea1bea87a..786c880cb4bb0be0b3ddbfadfd1a3b4dcf72e1a2 100644 +index 7bf7ae192d2423c6818075bed4c862848a94cef4..1be459af4a0032e87d2515f5e04cca618ae9cf9c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -853,6 +853,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch b/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch index 5cc021b9f..7eef4b2a4 100644 --- a/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch +++ b/patches/server/0208-options-to-extinguish-fire-blocks-with-snowballs.patch @@ -46,7 +46,7 @@ index f59a2903bfb8ae591a638ea5bb387caaa93ce664..1b9d0e28e518c501b4b93ae385ddd64a protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 786c880cb4bb0be0b3ddbfadfd1a3b4dcf72e1a2..56607d301b0d5a0cca98f93d371709d998458a19 100644 +index 1be459af4a0032e87d2515f5e04cca618ae9cf9c..d2f915440403f26c0e8d2839e64a4bd982eacf32 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -216,6 +216,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch index 7b70e5a63..891fce02f 100644 --- a/patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0209-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,7 +18,7 @@ index 9bb75b49ea2d0bd8aafbe537b65f86eb04f6cfe2..612907fe87e46b5b13ed80635f203fa9 if (!this.level().isClientSide) { this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 56607d301b0d5a0cca98f93d371709d998458a19..af752f79ae28224b114afac6ba0dee1eed1590df 100644 +index d2f915440403f26c0e8d2839e64a4bd982eacf32..5f4b85e6a22243f208f677289e13aae3f08f4f4c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2903,6 +2903,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0210-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0210-Persistent-BlockEntity-Lore-and-DisplayName.patch index e81c8bb7e..34524424e 100644 --- a/patches/server/0210-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0210-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -135,7 +135,7 @@ index c0563260277f9f4bd9ff08993b2efb4bca9a0c60..cd0e43f4c53a746dd6183a8406269f9b + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af752f79ae28224b114afac6ba0dee1eed1590df..f637f01551cb83303d97716f50c93ab60923a1da 100644 +index 5f4b85e6a22243f208f677289e13aae3f08f4f4c..aa36fb820d30bca238c5842817593267d475534f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -128,6 +128,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0211-Signs-allow-color-codes.patch b/patches/server/0211-Signs-allow-color-codes.patch index 7a938bb9b..a57b2e8b6 100644 --- a/patches/server/0211-Signs-allow-color-codes.patch +++ b/patches/server/0211-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 4ab562eaeb21b0ed8ee4fdedfe22259e76dd3e68..fceb216d553763db971115ed4c30535bf52e80f6 100644 +index 4af01ae458e5a79c20725b22b532710a66ba8f43..a7dced47c7946152740e906882d79b5910c5d9d5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1707,6 +1707,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -84,7 +84,7 @@ index a28be7a332659be655f419d969e0c64e659b6c21..8cd812a25b1cc05ea14675658bf9c150 public ClientboundBlockEntityDataPacket getUpdatePacket() { return ClientboundBlockEntityDataPacket.create(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f637f01551cb83303d97716f50c93ab60923a1da..a188ef9206211d4a0071255b90b740ce08199c84 100644 +index aa36fb820d30bca238c5842817593267d475534f..537e8e2502ac5ca286e5b6313bbc4294a82cdea9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1026,6 +1026,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0212-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0212-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch index b8d159530..0ac352de4 100644 --- a/patches/server/0212-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch +++ b/patches/server/0212-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch @@ -135,10 +135,10 @@ index 3dec5a082606ee35a8c8d7f746480262d6a189c5..b2f6ccae9576c176263e51a232e17a08 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d1e825e11727a6923ffd9a524dadde3ed9436821..a44abb0b8d9a1a8222e6a198ab9c190558ec54fd 100644 +index ccc2b99c8aec56e6434b7b83ebee6e286b6b22d2..d0683af41c56ed485da11ff2a74f0cf282cf00d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -312,6 +312,10 @@ public class PurpurConfig { +@@ -314,6 +314,10 @@ public class PurpurConfig { public static Set grindstoneIgnoredEnchants = new HashSet<>(); public static boolean grindstoneRemoveAttributes = false; public static boolean grindstoneRemoveDisplay = false; @@ -149,7 +149,7 @@ index d1e825e11727a6923ffd9a524dadde3ed9436821..a44abb0b8d9a1a8222e6a198ab9c1905 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -359,6 +363,30 @@ public class PurpurConfig { +@@ -363,6 +367,30 @@ public class PurpurConfig { }); grindstoneRemoveAttributes = getBoolean("settings.blocks.grindstone.remove-attributes", grindstoneRemoveAttributes); grindstoneRemoveDisplay = getBoolean("settings.blocks.grindstone.remove-name-and-lore", grindstoneRemoveDisplay); diff --git a/patches/server/0213-Mobs-always-drop-experience.patch b/patches/server/0213-Mobs-always-drop-experience.patch index 9f7a82a40..f263a5e57 100644 --- a/patches/server/0213-Mobs-always-drop-experience.patch +++ b/patches/server/0213-Mobs-always-drop-experience.patch @@ -101,7 +101,7 @@ index 2343325fa9a771de7b9445cda24a2bcd7a7c1761..f0b6118a9995bb41836685bbf94d2e7f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 78f00014c034949b6559ca948b1b78fa90f45334..97bdd48d8fa6b04e86f2db2be612dc8af1a4cb90 100644 +index dd66868e9b9f807a5e20420987336b4ddea22b9c..1dc83dd82d371321f43c1d6135e3330f7b5e4bc0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -84,6 +84,11 @@ public class Cow extends Animal { @@ -213,7 +213,7 @@ index 6ea8ecf8672b71533c9b979a3d46bd947fbc4b73..a27f33b7bbf7f7d5cfb3dbb0bf5b93a6 public boolean canTakeItem(ItemStack stack) { EquipmentSlot enumitemslot = this.getEquipmentSlotForItem(stack); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index e486b3a73277582bc9c63b6f8ed4dfd995e34cb9..2cd961e4831bc018c46f929b302ebe7e5932637e 100644 +index 4050cc4c93cbe33d3e4cc2f7aed5dfc26018e510..eac0c3f8ee77099af65e823fc687e4236b3d2746 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -201,6 +201,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder drops = this.generateDefaultDrops(); -+ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur ++ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.LOOTING, itemstack)); // Purpur org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { @@ -61,7 +61,7 @@ index 06fac8dae42451f912c2db14d792461cee3dba83..a7c95199234231db14faa4a07953bcde } return dropEntities; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index a3d0991dcf570a009c5404ddbd7118895dc18c9d..9730fa382fd6b0bced858e0e4c26a1b51a0e0bd0 100644 +index a3d0991dcf570a009c5404ddbd7118895dc18c9d..774c392583111c0c211ca14bea0ad04b677f7151 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -295,7 +295,7 @@ public class Sheep extends Animal implements Shearable { @@ -69,7 +69,7 @@ index a3d0991dcf570a009c5404ddbd7118895dc18c9d..9730fa382fd6b0bced858e0e4c26a1b5 // CraftBukkit start // Paper start - custom shear drops - java.util.List drops = this.generateDefaultDrops(); -+ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur ++ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.LOOTING, itemstack)); // Purpur org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { @@ -90,7 +90,7 @@ index a3d0991dcf570a009c5404ddbd7118895dc18c9d..9730fa382fd6b0bced858e0e4c26a1b5 for (int j = 0; j < count; ++j) { dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.getColor()))); 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 69cdccca01fe7d10e6d958e16d91efe08f699505..3b74931ae4e3a869d8db38c119e57b44af887859 100644 +index 69cdccca01fe7d10e6d958e16d91efe08f699505..0a301d09b59130d741ea9549ac9d967c8f78366d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -189,7 +189,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -98,7 +98,7 @@ index 69cdccca01fe7d10e6d958e16d91efe08f699505..3b74931ae4e3a869d8db38c119e57b44 // CraftBukkit start // Paper start - custom shear drops - java.util.List drops = this.generateDefaultDrops(); -+ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur ++ java.util.List drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.LOOTING, itemstack)); // Purpur org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); if (event != null) { if (event.isCancelled()) { @@ -139,10 +139,10 @@ index 8f08b45b7e6279e2f57e3921ebe879082a5fd261..a39ea8cf75adbf84388b74222b3417a4 this.generateShearedMushrooms(drops::add); return drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1baa623b0e2040556b53e25cac7b99f2a101ed42..0dead6b5e2ec8f46767a86640c78374bfa2fdaa5 100644 +index 3032944e7ae61f31ceb72ad688add99f2451f33e..346113abdc8da4a2fe69650642515460086a357a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -389,6 +389,7 @@ public class PurpurConfig { +@@ -393,6 +393,7 @@ public class PurpurConfig { } } @@ -150,7 +150,7 @@ index 1baa623b0e2040556b53e25cac7b99f2a101ed42..0dead6b5e2ec8f46767a86640c78374b public static boolean allowUnsafeEnchants = false; public static boolean allowInapplicableEnchants = true; public static boolean allowIncompatibleEnchants = true; -@@ -404,6 +405,7 @@ public class PurpurConfig { +@@ -408,6 +409,7 @@ public class PurpurConfig { set("settings.enchantment.anvil.allow-higher-enchants-levels", true); set("settings.enchantment.allow-unsafe-enchants", null); } diff --git a/patches/server/0220-Stop-bees-from-dying-after-stinging.patch b/patches/server/0220-Stop-bees-from-dying-after-stinging.patch index bf18b1d6d..ff5b5bac2 100644 --- a/patches/server/0220-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0220-Stop-bees-from-dying-after-stinging.patch @@ -17,7 +17,7 @@ index ca56f5781c1c02e40179a4dd359c5d167d3160dc..0dfdecff129a6b34833eb3fb7d7d967b ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ed9442312b07887bff555896525fc6249508ee2..d902ebbbc8144c344342d24aae2e34279ad77e7f 100644 +index 2a37cf8ef4416523c30be5bb80a282970625d0dc..60b463e782ccf4de6fa4d27afe81507b793367c6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1168,6 +1168,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch index cd386dfd1..47a6bccc9 100644 --- a/patches/server/0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -29,10 +29,10 @@ index 1331b58b60142513708c8188f04c6818d75d6160..7a579cdb6bb9dced485f86d1bfe8ab43 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 0dead6b5e2ec8f46767a86640c78374bfa2fdaa5..cb5831c4ec2231d22da495c0e827b4b1694c16da 100644 +index 346113abdc8da4a2fe69650642515460086a357a..a36b5d9c61a99ce217ad4bea82ea7478821b867c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -425,6 +425,11 @@ public class PurpurConfig { +@@ -429,6 +429,11 @@ public class PurpurConfig { allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd); } @@ -46,7 +46,7 @@ index 0dead6b5e2ec8f46767a86640c78374bfa2fdaa5..cb5831c4ec2231d22da495c0e827b4b1 public static boolean loggerSuppressUnrecognizedRecipeErrors = false; diff --git a/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java b/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java new file mode 100644 -index 0000000000000000000000000000000000000000..57e195fd2d457295cda6c366684be5577aeef071 +index 0000000000000000000000000000000000000000..793a3ea45fe04e84725926f17615c26e008b0ce4 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/network/ClientboundBeehivePayload.java @@ -0,0 +1,27 @@ @@ -61,7 +61,7 @@ index 0000000000000000000000000000000000000000..57e195fd2d457295cda6c366684be557 + +public record ClientboundBeehivePayload(BlockPos pos, int numOfBees) implements CustomPacketPayload { + public static final StreamCodec STREAM_CODEC = CustomPacketPayload.codec(ClientboundBeehivePayload::write, ClientboundBeehivePayload::new); -+ public static final Type TYPE = new Type<>(new ResourceLocation("purpur", "beehive_s2c")); ++ public static final Type TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath("purpur", "beehive_s2c")); + + public ClientboundBeehivePayload(FriendlyByteBuf friendlyByteBuf) { + this(friendlyByteBuf.readBlockPos(), friendlyByteBuf.readInt()); @@ -79,7 +79,7 @@ index 0000000000000000000000000000000000000000..57e195fd2d457295cda6c366684be557 +} diff --git a/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java b/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java new file mode 100644 -index 0000000000000000000000000000000000000000..27689754565bf048d1206d540913495d7194a54d +index 0000000000000000000000000000000000000000..fa72769e06061609e1e658a0250e99c8cb026c0e --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/network/ServerboundBeehivePayload.java @@ -0,0 +1,26 @@ @@ -94,7 +94,7 @@ index 0000000000000000000000000000000000000000..27689754565bf048d1206d540913495d + +public record ServerboundBeehivePayload(BlockPos pos) implements CustomPacketPayload { + public static final StreamCodec STREAM_CODEC = CustomPacketPayload.codec(ServerboundBeehivePayload::write, ServerboundBeehivePayload::new); -+ public static final Type TYPE = new Type<>(new ResourceLocation("purpur", "beehive_c2s")); ++ public static final Type TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath("purpur", "beehive_c2s")); + + public ServerboundBeehivePayload(FriendlyByteBuf friendlyByteBuf) { + this(friendlyByteBuf.readBlockPos()); diff --git a/patches/server/0222-Configurable-farmland-trample-height.patch b/patches/server/0222-Configurable-farmland-trample-height.patch index c7faf3e5b..dc098ec57 100644 --- a/patches/server/0222-Configurable-farmland-trample-height.patch +++ b/patches/server/0222-Configurable-farmland-trample-height.patch @@ -35,7 +35,7 @@ index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d902ebbbc8144c344342d24aae2e34279ad77e7f..658f6b01f27c3559e2d8965c16975f3badfc00a2 100644 +index 60b463e782ccf4de6fa4d27afe81507b793367c6..61b299dea4432d3c4ac18b4c4a035da88b669453 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -953,6 +953,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0223-Configurable-player-pickup-exp-delay.patch b/patches/server/0223-Configurable-player-pickup-exp-delay.patch index cca557bf8..2cc950971 100644 --- a/patches/server/0223-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0223-Configurable-player-pickup-exp-delay.patch @@ -9,10 +9,10 @@ players still only pick up one orb every tick. However, setting this to any negative number will pick up all orbs instantly. diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 6598a737db11fb0c7e7a95b9bbfaabd75895cbdd..ad69ef7fb8e68027c6f41618ee2585659b7dae16 100644 +index 9743e3ed1bbccc44c39df864e980e64fc5e32e1d..3003f2ab38008b761bee49823b49edae67cd5292 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -330,7 +330,7 @@ public class ExperienceOrb extends Entity { +@@ -329,7 +329,7 @@ public class ExperienceOrb extends Entity { public void playerTouch(Player player) { if (player instanceof ServerPlayer entityplayer) { if (player.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(entityplayer.getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent @@ -35,7 +35,7 @@ index cb6f161d32fe9642e9e9b1efc47d88612041ea15..92df67d9e1d32c8a7aaeaaa46c7641af } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 658f6b01f27c3559e2d8965c16975f3badfc00a2..f1d59fd5d9f624319b96f7f5d815ec4341d24f38 100644 +index 61b299dea4432d3c4ac18b4c4a035da88b669453..f7957a2e4c7708af0616500792e95a395330f770 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -413,6 +413,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0224-Allow-void-trading.patch b/patches/server/0224-Allow-void-trading.patch index 51b876f6a..cae4844f1 100644 --- a/patches/server/0224-Allow-void-trading.patch +++ b/patches/server/0224-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 9e3dc4bf5ad390e6e49a5193c7788d0c0c536f0f..49f77274309befcdef1548e875480b9f667a414e 100644 +index 31642e0667b4086fdc05626806da6d5c5c24baeb..fda301c5bb53bc04d9cb133c45d791fa2b30169c 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2572,7 +2572,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -2571,7 +2571,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start - Fix merchant inventory not closing on entity removal @@ -18,7 +18,7 @@ index 9e3dc4bf5ad390e6e49a5193c7788d0c0c536f0f..49f77274309befcdef1548e875480b9f } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f1d59fd5d9f624319b96f7f5d815ec4341d24f38..5c92d0b952100deb3b721565bbd73c8c603b43ed 100644 +index f7957a2e4c7708af0616500792e95a395330f770..7e525564d0806cc5433c59480a3f19e7b1bd6ba3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -414,6 +414,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0225-Configurable-phantom-size.patch b/patches/server/0225-Configurable-phantom-size.patch index fe2609e07..b5180ed8f 100644 --- a/patches/server/0225-Configurable-phantom-size.patch +++ b/patches/server/0225-Configurable-phantom-size.patch @@ -22,7 +22,7 @@ index 98b4eecf1685dcf43880b983493597bd22de4877..260c5d22ee10582974a5006cfeefa067 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c92d0b952100deb3b721565bbd73c8c603b43ed..589ee97f28f24de35fd755fcae4ec35b8d0e0cba 100644 +index 7e525564d0806cc5433c59480a3f19e7b1bd6ba3..55fd2e8aa85e7d27dc06c7a5c68d380738d4b360 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2121,6 +2121,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0226-Max-joins-per-second.patch b/patches/server/0226-Max-joins-per-second.patch index 9b54501a1..a21098396 100644 --- a/patches/server/0226-Max-joins-per-second.patch +++ b/patches/server/0226-Max-joins-per-second.patch @@ -31,10 +31,10 @@ index 90a2c61c42cba7e38f167eccdd7a951a947963c4..f37857eb3973a0cf1a02041effd5491d } // Paper end - Buffer joins to world diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index cb5831c4ec2231d22da495c0e827b4b1694c16da..b0d7d0a72ff28a973a61a1a2d317402cdfe2e024 100644 +index a36b5d9c61a99ce217ad4bea82ea7478821b867c..da1be83cec7c92a75f345a8879520503c563d280 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -447,8 +447,10 @@ public class PurpurConfig { +@@ -451,8 +451,10 @@ public class PurpurConfig { } public static boolean useUPnP = false; diff --git a/patches/server/0227-Configurable-minimum-demand-for-trades.patch b/patches/server/0227-Configurable-minimum-demand-for-trades.patch index cb140dbd1..42757c40d 100644 --- a/patches/server/0227-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0227-Configurable-minimum-demand-for-trades.patch @@ -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 589ee97f28f24de35fd755fcae4ec35b8d0e0cba..cb09de7b27e4bcc8594a901a3c19abd2c06c4813 100644 +index 55fd2e8aa85e7d27dc06c7a5c68d380738d4b360..60181091bf2e215f5f47a86eb4f16ba14951bfdc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2802,6 +2802,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0228-Lobotomize-stuck-villagers.patch b/patches/server/0228-Lobotomize-stuck-villagers.patch index 629bcbef4..7ae20873d 100644 --- a/patches/server/0228-Lobotomize-stuck-villagers.patch +++ b/patches/server/0228-Lobotomize-stuck-villagers.patch @@ -104,7 +104,7 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cb09de7b27e4bcc8594a901a3c19abd2c06c4813..4912f510b8245db1627dad910824e8157a88aaec 100644 +index 60181091bf2e215f5f47a86eb4f16ba14951bfdc..9c8af5e8984629b0171f8a9d809041b451b712ec 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2803,6 +2803,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0229-Option-for-villager-display-trade-item.patch b/patches/server/0229-Option-for-villager-display-trade-item.patch index 7df5f9cf1..b8803cf33 100644 --- a/patches/server/0229-Option-for-villager-display-trade-item.patch +++ b/patches/server/0229-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 4912f510b8245db1627dad910824e8157a88aaec..bf0d87f68ca561e01b1a5f839f74879d8e7d4013 100644 +index 9c8af5e8984629b0171f8a9d809041b451b712ec..e85563ab651fb3ba360f501bcb5c8e99bf996ded 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2806,6 +2806,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index c393339c6..40d7b804a 100644 --- a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,7 +17,7 @@ index c9cabb061ebc9172647304431cc3fb2593dd47ba..565408c03849fb3011fb708478a99ec6 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bf0d87f68ca561e01b1a5f839f74879d8e7d4013..572feb00a0a580d05145b1b2d65c13e09bd079fc 100644 +index e85563ab651fb3ba360f501bcb5c8e99bf996ded..c8cd6f76e2ea7c2d6650a97901daadde155320f4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1047,8 +1047,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch index a54cc65bd..d34e278e1 100644 --- a/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch @@ -25,7 +25,7 @@ index aa8997468c50810c3c9713c98a7786f2f0ab7a72..0c89b32f868bfdeb995c9652f15de7b1 if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 88be8ebe619f2e42bdffab534da4f269b802cf41..ed594f9446646e30de3d4e8afa22f67222da8d87 100644 +index 26eaf4d9b931bfe51482e1f5d2350fc591778acc..db9962ef89829bb14d84cc8495117ff4509c01cf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -513,7 +513,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -38,7 +38,7 @@ index 88be8ebe619f2e42bdffab534da4f269b802cf41..ed594f9446646e30de3d4e8afa22f672 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 572feb00a0a580d05145b1b2d65c13e09bd079fc..85ffa8bdfc6ce0fa6a79d8b1bd84a37ec63f6786 100644 +index c8cd6f76e2ea7c2d6650a97901daadde155320f4..3dd9a6585012e52ed9eab0b7c4b0ccf3661f6666 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -141,6 +141,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0232-Anvil-repair-damage-options.patch b/patches/server/0232-Anvil-repair-damage-options.patch index c7041e484..0d7fcae1d 100644 --- a/patches/server/0232-Anvil-repair-damage-options.patch +++ b/patches/server/0232-Anvil-repair-damage-options.patch @@ -63,7 +63,7 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 85ffa8bdfc6ce0fa6a79d8b1bd84a37ec63f6786..b996cb0703671233645caae1986464b0b45b0b38 100644 +index 3dd9a6585012e52ed9eab0b7c4b0ccf3661f6666..a031f93d14be3afb689e9a464de39e6ecf10851e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -814,9 +814,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 83e2da995..6d3111ac9 100644 --- a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,7 +24,7 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b996cb0703671233645caae1986464b0b45b0b38..d03790ab14b90871cf52f0cd7d1662ec103d05ff 100644 +index a031f93d14be3afb689e9a464de39e6ecf10851e..7ef7de3d4051257064914e48117e76aa4e7c7a6f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1075,12 +1075,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch index f0128c8b1..8c059779b 100644 --- a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch @@ -59,10 +59,10 @@ index 8ac485d82c2d2b32f4d54e02c18c2cb2c3df4fa4..9ebe6a5f31ceacd33d9c111966ad941b } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b0d7d0a72ff28a973a61a1a2d317402cdfe2e024..08b10246b4cb7374a230bea470d737670dae5edd 100644 +index da1be83cec7c92a75f345a8879520503c563d280..8569054673f43a339694dec3bc02eb05019a5571 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -396,6 +396,7 @@ public class PurpurConfig { +@@ -400,6 +400,7 @@ public class PurpurConfig { public static boolean allowHigherEnchantsLevels = true; public static boolean allowUnsafeEnchantCommand = false; public static boolean replaceIncompatibleEnchants = false; @@ -70,7 +70,7 @@ index b0d7d0a72ff28a973a61a1a2d317402cdfe2e024..08b10246b4cb7374a230bea470d73767 private static void enchantmentSettings() { if (version < 30) { boolean oldValue = getBoolean("settings.enchantment.allow-unsafe-enchants", false); -@@ -412,6 +413,7 @@ public class PurpurConfig { +@@ -416,6 +417,7 @@ public class PurpurConfig { allowHigherEnchantsLevels = getBoolean("settings.enchantment.anvil.allow-higher-enchants-levels", allowHigherEnchantsLevels); allowUnsafeEnchantCommand = getBoolean("settings.enchantment.allow-unsafe-enchant-command", allowUnsafeEnchants); // allowUnsafeEnchants as default for backwards compatability replaceIncompatibleEnchants = getBoolean("settings.enchantment.anvil.replace-incompatible-enchants", replaceIncompatibleEnchants); diff --git a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch index 2755e775a..456face56 100644 --- a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,7 +18,7 @@ index 1f1d6fcdf89051761715f2422efe74e432a8d27a..2b55f05b727f862ea79ab2c200a756f6 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d03790ab14b90871cf52f0cd7d1662ec103d05ff..83f8cea30ba4120a2f7036ac4ceead678fd25a75 100644 +index 7ef7de3d4051257064914e48117e76aa4e7c7a6f..b0171d10c521ba23b103c9b7689021f14661f055 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2817,6 +2817,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0237-Stonecutter-damage.patch b/patches/server/0237-Stonecutter-damage.patch index 3952b3cb9..aca5cb7c0 100644 --- a/patches/server/0237-Stonecutter-damage.patch +++ b/patches/server/0237-Stonecutter-damage.patch @@ -128,10 +128,10 @@ index 9e5d4e8a70aec8619db68d75ef3447cf39e239b9..f6dfc393cc444a794dca891bf5a73c46 } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 08b10246b4cb7374a230bea470d737670dae5edd..8aa2354bee8de0193863628c2d928699949dbc10 100644 +index 8569054673f43a339694dec3bc02eb05019a5571..a78dcf4e4298a02b8bef3519eecbfb1c880563d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -209,8 +209,10 @@ public class PurpurConfig { +@@ -211,8 +211,10 @@ public class PurpurConfig { } public static String deathMsgRunWithScissors = " slipped and fell on their shears"; @@ -143,7 +143,7 @@ index 08b10246b4cb7374a230bea470d737670dae5edd..8aa2354bee8de0193863628c2d928699 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 83f8cea30ba4120a2f7036ac4ceead678fd25a75..d9bdb889d6318cb3ca4ff1b49d9d58b3d3abe5bc 100644 +index b0171d10c521ba23b103c9b7689021f14661f055..e57cb2bff686f0f921a377fba1cb5dd382e916b0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1070,6 +1070,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch index 163c05d28..13e22d3eb 100644 --- a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch @@ -18,7 +18,7 @@ index 02d59789c09f58045fea302ea6f2ee3856114de3..8072713da7ed8b7a44b63c241050c3a9 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d9bdb889d6318cb3ca4ff1b49d9d58b3d3abe5bc..5af650db85969f069b79cda43f411a32282cdee9 100644 +index e57cb2bff686f0f921a377fba1cb5dd382e916b0..378ea5e6795ee89395fe9d3f9fa1c086c589d5e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1011,6 +1011,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch b/patches/server/0239-Add-config-for-snow-on-blue-ice.patch index 1ec106d9b..3ca4c4424 100644 --- a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0239-Add-config-for-snow-on-blue-ice.patch @@ -22,7 +22,7 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5af650db85969f069b79cda43f411a32282cdee9..df45bdd528517a8e832bf6151e35c328447c6d3f 100644 +index 378ea5e6795ee89395fe9d3f9fa1c086c589d5e4..fe147c450fa638272033fc0c45ed0f36913d0192 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -992,9 +992,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0240-Skeletons-eat-wither-roses.patch b/patches/server/0240-Skeletons-eat-wither-roses.patch index 7be0a610b..bb761d19d 100644 --- a/patches/server/0240-Skeletons-eat-wither-roses.patch +++ b/patches/server/0240-Skeletons-eat-wither-roses.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skeletons eat wither roses diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java -index 3f81faffc1a54ab1148c410ef80964d9876e4b77..dfa8bd613c7575338c6bb76234b7cb4ac391a4cd 100644 +index 3f81faffc1a54ab1148c410ef80964d9876e4b77..cb714f78ad73f709967d7449c411c5b1385a9440 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java @@ -15,6 +15,16 @@ import net.minecraft.world.item.Items; @@ -25,7 +25,7 @@ index 3f81faffc1a54ab1148c410ef80964d9876e4b77..dfa8bd613c7575338c6bb76234b7cb4a public class Skeleton extends AbstractSkeleton { private static final int TOTAL_CONVERSION_TIME = 300; -@@ -175,4 +185,67 @@ public class Skeleton extends AbstractSkeleton { +@@ -175,4 +185,63 @@ public class Skeleton extends AbstractSkeleton { } } @@ -74,10 +74,6 @@ index 3f81faffc1a54ab1148c410ef80964d9876e4b77..dfa8bd613c7575338c6bb76234b7cb4a + return InteractionResult.PASS; + } + -+ if (!new com.destroystokyo.paper.event.entity.EntityTransformedEvent(this.getBukkitEntity(), skeleton.getBukkitEntity(), com.destroystokyo.paper.event.entity.EntityTransformedEvent.TransformedReason.INFECTED).callEvent()) { -+ return InteractionResult.PASS; -+ } -+ + this.level().addFreshEntity(skeleton); + this.remove(RemovalReason.DISCARDED, org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); + if (!player.getAbilities().instabuild) { @@ -94,7 +90,7 @@ index 3f81faffc1a54ab1148c410ef80964d9876e4b77..dfa8bd613c7575338c6bb76234b7cb4a + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df45bdd528517a8e832bf6151e35c328447c6d3f..48cc255a35e24dfa3b7563b92f791237eb4e7904 100644 +index fe147c450fa638272033fc0c45ed0f36913d0192..0a891d7fb109276753f226e0ae4b5dceb2d14972 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2498,6 +2498,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0241-Enchantment-Table-Persists-Lapis.patch b/patches/server/0241-Enchantment-Table-Persists-Lapis.patch index b25c52893..07befa002 100644 --- a/patches/server/0241-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0241-Enchantment-Table-Persists-Lapis.patch @@ -137,7 +137,7 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 48cc255a35e24dfa3b7563b92f791237eb4e7904..f8eedeb83261aaf7346e4111a46fc6bc1c8f5f19 100644 +index 0a891d7fb109276753f226e0ae4b5dceb2d14972..dd6e2b25a89027daf10688b6e8c9ee8234ff8178 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1535,6 +1535,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch index 19836d665..90c669fc6 100644 --- a/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0243-Option-to-disable-kick-for-out-of-order-chat.patch @@ -18,10 +18,10 @@ index d0672ed5abf3488fc3ec6ea8b153e2d22ff3e9ab..86ee80021010b5cbae088aff73eb53d0 voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8aa2354bee8de0193863628c2d928699949dbc10..bbb7afbfb84b0d8e45f6e0de61f4f3e8c9315431 100644 +index a78dcf4e4298a02b8bef3519eecbfb1c880563d9..3750c8b3e011772700a1d07145f81625fd2c1b01 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -452,9 +452,11 @@ public class PurpurConfig { +@@ -456,9 +456,11 @@ public class PurpurConfig { public static boolean useUPnP = false; public static boolean maxJoinsPerSecond = false; diff --git a/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch index 7d370a860..6d9d03cf9 100644 --- a/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0244-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,7 +18,7 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f8eedeb83261aaf7346e4111a46fc6bc1c8f5f19..08ec112edbd29823d2c9ecca9c6808f7dc8101f2 100644 +index dd6e2b25a89027daf10688b6e8c9ee8234ff8178..cfeaffea12260e5c7093968d433051262e198519 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1049,6 +1049,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0245-Config-to-not-let-coral-die.patch b/patches/server/0245-Config-to-not-let-coral-die.patch index af9f3b44d..0363af797 100644 --- a/patches/server/0245-Config-to-not-let-coral-die.patch +++ b/patches/server/0245-Config-to-not-let-coral-die.patch @@ -29,7 +29,7 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 08ec112edbd29823d2c9ecca9c6808f7dc8101f2..ce0438a45cff8829d62f008323a72a8717ee12cd 100644 +index cfeaffea12260e5c7093968d433051262e198519..48ad8eef034bb286babb4fbb0c74ae8e1f157b18 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -898,6 +898,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0247-Add-toggle-for-RNG-manipulation.patch b/patches/server/0247-Add-toggle-for-RNG-manipulation.patch index cb89cea33..279675d22 100644 --- a/patches/server/0247-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0247-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 1be8cf8d8457dcabab313e4b329c0831df6c57ce..fccf206ed36c26665aad8831fe284a973d56cdce 100644 +index 7b3b76cb9dd8b7f6254baffcd0f94aa70918ff04..8d39a07832879230906f0b6af374ad4d69621132 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -558,7 +558,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -559,7 +559,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -20,7 +20,7 @@ index 1be8cf8d8457dcabab313e4b329c0831df6c57ce..fccf206ed36c26665aad8831fe284a97 this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index b9c8fe36c6a6256097ea69383bef678bbfb6c45b..8ec27ee82cd6f31bee722852c5fc6e7ca64a3a77 100644 +index 4874d51405ce43e570ffcbf8eba4bf4aef185e50..e6244d8c7745570099638d96fafa6b4971c4beb8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -41,7 +41,7 @@ public class Squid extends WaterAnimal { @@ -33,7 +33,7 @@ index b9c8fe36c6a6256097ea69383bef678bbfb6c45b..8ec27ee82cd6f31bee722852c5fc6e7c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce0438a45cff8829d62f008323a72a8717ee12cd..b26d42857eec11d92372bd9c6a0df4ef3dadb140 100644 +index 48ad8eef034bb286babb4fbb0c74ae8e1f157b18..3aa0c702d6d76541fb0d4ca34745ba163bbed9e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -208,9 +208,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0248-Remove-Timings.patch b/patches/server/0248-Remove-Timings.patch index de30ae8e1..d054a2d44 100644 --- a/patches/server/0248-Remove-Timings.patch +++ b/patches/server/0248-Remove-Timings.patch @@ -238,10 +238,10 @@ index df00ea382915480be1279a5347872cf7a1417341..b27cb90a52bc7d96d4318979c678a49a } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 7dc2ecd8a80b063cec922021bd978ba2c6f8c0fb..8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b 100644 +index 681fdab250d924a29ca160acffbcbf7f8a3ca78a..fbb1753425a1cd456e4096b9fe506264e3dac505 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -418,9 +418,9 @@ public class ServerChunkCache extends ChunkSource { +@@ -436,9 +436,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon public void save(boolean flush) { // Paper - rewrite chunk system @@ -253,7 +253,7 @@ index 7dc2ecd8a80b063cec922021bd978ba2c6f8c0fb..8bead89ad6f54f5dbc6b03d90b6bb111 } @Override -@@ -448,26 +448,25 @@ public class ServerChunkCache extends ChunkSource { +@@ -466,26 +466,25 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @Override public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { this.level.getProfiler().push("purge"); @@ -286,7 +286,7 @@ index 7dc2ecd8a80b063cec922021bd978ba2c6f8c0fb..8bead89ad6f54f5dbc6b03d90b6bb111 this.level.getProfiler().pop(); this.clearCache(); } -@@ -484,7 +483,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -502,7 +501,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon gameprofilerfiller.push("filteringLoadedChunks"); List list = Lists.newArrayListWithCapacity(this.chunkMap.size()); Iterator iterator = this.chunkMap.getChunks().iterator(); @@ -295,7 +295,7 @@ index 7dc2ecd8a80b063cec922021bd978ba2c6f8c0fb..8bead89ad6f54f5dbc6b03d90b6bb111 while (iterator.hasNext()) { ChunkHolder playerchunk = (ChunkHolder) iterator.next(); -@@ -497,7 +496,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -515,7 +514,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon if (this.level.tickRateManager().runsNormally()) { gameprofilerfiller.popPush("naturalSpawnCount"); @@ -304,7 +304,7 @@ index 7dc2ecd8a80b063cec922021bd978ba2c6f8c0fb..8bead89ad6f54f5dbc6b03d90b6bb111 int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - Optional per player mob spawns int naturalSpawnChunkCount = k; -@@ -522,7 +521,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -540,7 +539,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); } // Paper end - Optional per player mob spawns @@ -313,7 +313,7 @@ index 7dc2ecd8a80b063cec922021bd978ba2c6f8c0fb..8bead89ad6f54f5dbc6b03d90b6bb111 this.lastSpawnState = spawnercreature_d; gameprofilerfiller.popPush("spawnAndTick"); -@@ -558,21 +557,21 @@ public class ServerChunkCache extends ChunkSource { +@@ -576,21 +575,21 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } } } @@ -341,10 +341,10 @@ index 7dc2ecd8a80b063cec922021bd978ba2c6f8c0fb..8bead89ad6f54f5dbc6b03d90b6bb111 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca64f73e52 100644 +index fda301c5bb53bc04d9cb133c45d791fa2b30169c..55446501a3bc42e4881eb38b13d1de5d03d22c0d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -687,7 +687,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -686,7 +686,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } gameprofilerfiller.popPush("tickPending"); @@ -353,7 +353,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca if (!this.isDebug() && flag) { j = this.getGameTime(); gameprofilerfiller.push("blockTicks"); -@@ -696,24 +696,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -695,24 +695,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.fluidTicks.tick(j, paperConfig().environment.maxFluidTicks, this::tickFluid); // Paper - configurable max fluid ticks gameprofilerfiller.pop(); } @@ -385,7 +385,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca } this.handlingTick = false; -@@ -726,7 +726,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -725,7 +725,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (flag1 || this.emptyTime++ < 300) { gameprofilerfiller.push("entities"); @@ -394,7 +394,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca if (this.dragonFight != null && flag) { gameprofilerfiller.push("dragonFight"); this.dragonFight.tick(); -@@ -734,7 +734,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -733,7 +733,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } org.spigotmc.ActivationRange.activateEntities(this); // Spigot @@ -403,7 +403,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca this.entityTickList.forEach((entity) -> { if (!entity.isRemoved()) { if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed -@@ -761,8 +761,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -760,8 +760,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } }); @@ -414,7 +414,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -895,7 +895,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -894,7 +894,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } // Paper - Option to disable ice and snow gameprofilerfiller.popPush("tickBlocks"); @@ -423,7 +423,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca if (randomTickSpeed > 0) { LevelChunkSection[] achunksection = chunk.getSections(); -@@ -928,7 +928,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -927,7 +927,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } @@ -432,7 +432,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca gameprofilerfiller.pop(); } -@@ -1242,8 +1242,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1241,8 +1241,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -443,7 +443,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1259,7 +1259,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1258,7 +1258,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -452,7 +452,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1276,8 +1276,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1275,8 +1275,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -463,7 +463,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1307,7 +1307,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1306,7 +1306,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.tickPassenger(passenger, entity2); } @@ -472,7 +472,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca } } else { passenger.stopRiding(); -@@ -1329,7 +1329,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1328,7 +1328,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit @@ -481,7 +481,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1339,10 +1339,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1338,10 +1338,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -496,7 +496,7 @@ index 49f77274309befcdef1548e875480b9f667a414e..e78d3a8e286a0f62b0211dec91cac1ca } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index f4f965a51628a096f6697f4008ec9dba04d30fd2..224ee4649a8e2d3c99ac5ca298233bcb89248fc3 100644 +index b9c48dfa9c1e091cd674d6168b230ad25b66e94d..51cb32a67f81422fd59ef072633c3de523ff7405 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1220,11 +1220,11 @@ public abstract class PlayerList { diff --git a/patches/server/0249-Remove-Mojang-Profiler.patch b/patches/server/0249-Remove-Mojang-Profiler.patch index 9690364a8..e64569415 100644 --- a/patches/server/0249-Remove-Mojang-Profiler.patch +++ b/patches/server/0249-Remove-Mojang-Profiler.patch @@ -468,10 +468,10 @@ index b27cb90a52bc7d96d4318979c678a49a884562b2..686f3d8c91e1ffc0c7ffe1cd9bcf5df5 public boolean hasWork() { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b..9bdcc6ee612c4e684482f3ff49d1eafd6690bbe0 100644 +index fbb1753425a1cd456e4096b9fe506264e3dac505..adf79eb40c62e56311533de6c919f77e81ab4284 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -435,26 +435,26 @@ public class ServerChunkCache extends ChunkSource { +@@ -453,26 +453,26 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon // CraftBukkit start - modelled on below public void purgeUnload() { @@ -503,7 +503,7 @@ index 8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b..9bdcc6ee612c4e684482f3ff49d1eafd if (tickChunks) { //this.level.timings.chunks.startTiming(); // Paper - timings // Purpur ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getPlayerChunkLoader().tick(); // Paper - rewrite chunk system -@@ -464,10 +464,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -482,10 +482,10 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } //this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur @@ -516,7 +516,7 @@ index 8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b..9bdcc6ee612c4e684482f3ff49d1eafd this.clearCache(); } -@@ -477,10 +477,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -495,10 +495,10 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon this.lastInhabitedUpdate = i; if (!this.level.isDebug()) { @@ -530,7 +530,7 @@ index 8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b..9bdcc6ee612c4e684482f3ff49d1eafd List list = Lists.newArrayListWithCapacity(this.chunkMap.size()); Iterator iterator = this.chunkMap.getChunks().iterator(); //if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur -@@ -495,7 +495,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -513,7 +513,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } if (this.level.tickRateManager().runsNormally()) { @@ -539,7 +539,7 @@ index 8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b..9bdcc6ee612c4e684482f3ff49d1eafd //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - Optional per player mob spawns -@@ -524,7 +524,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -542,7 +542,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur this.lastSpawnState = spawnercreature_d; @@ -548,7 +548,7 @@ index 8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b..9bdcc6ee612c4e684482f3ff49d1eafd boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit Util.shuffle(list, this.level.random); -@@ -559,7 +559,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -577,7 +577,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur @@ -557,7 +557,7 @@ index 8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b..9bdcc6ee612c4e684482f3ff49d1eafd if (flag) { //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); -@@ -567,14 +567,14 @@ public class ServerChunkCache extends ChunkSource { +@@ -585,14 +585,14 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } } @@ -575,7 +575,7 @@ index 8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b..9bdcc6ee612c4e684482f3ff49d1eafd } } -@@ -755,7 +755,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -773,7 +773,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @Override protected void doRunTask(Runnable task) { @@ -585,10 +585,10 @@ index 8bead89ad6f54f5dbc6b03d90b6bb111fd2c983b..9bdcc6ee612c4e684482f3ff49d1eafd } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41edbc39ca77 100644 +index 55446501a3bc42e4881eb38b13d1de5d03d22c0d..500a735113f9f16f9d336c2bb1cad1447e5d64c4 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -645,16 +645,16 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -644,16 +644,16 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } public void tick(BooleanSupplier shouldKeepTicking) { @@ -608,7 +608,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed this.advanceWeatherCycle(); } -@@ -686,30 +686,30 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -685,30 +685,30 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.tickTime(); } @@ -646,7 +646,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed if (flag) { // this.timings.doSounds.startTiming(); // Spigot // Purpur this.runBlockEvents(); -@@ -717,7 +717,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -716,7 +716,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } this.handlingTick = false; @@ -655,7 +655,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed boolean flag1 = !paperConfig().unsupportedSettings.disableWorldTickingWhenEmpty || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players // Paper - restore this if (flag1) { -@@ -725,12 +725,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -724,12 +724,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } if (flag1 || this.emptyTime++ < 300) { @@ -671,7 +671,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -740,9 +740,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -739,9 +739,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else if (!tickratemanager.isEntityFrozen(entity)) { @@ -683,7 +683,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - rewrite chunk system Entity entity1 = entity.getVehicle(); -@@ -754,22 +754,22 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -753,22 +753,22 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. entity.stopRiding(); } @@ -711,7 +711,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed } @Override -@@ -845,9 +845,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -844,9 +844,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -723,7 +723,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed 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 BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); -@@ -884,7 +884,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -883,7 +883,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } @@ -732,7 +732,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow for (int l = 0; l < randomTickSpeed; ++l) { -@@ -894,7 +894,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -893,7 +893,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } // Paper - Option to disable ice and snow @@ -741,7 +741,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { LevelChunkSection[] achunksection = chunk.getSections(); -@@ -909,7 +909,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -908,7 +908,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. for (int l1 = 0; l1 < randomTickSpeed; ++l1) { BlockPos blockposition1 = this.getBlockRandomPos(j, k1, k, 15); @@ -750,7 +750,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed BlockState iblockdata = chunksection.getBlockState(blockposition1.getX() - j, blockposition1.getY() - k1, blockposition1.getZ() - k); if (iblockdata.isRandomlyTicking()) { -@@ -922,14 +922,14 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -921,14 +921,14 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. fluid.randomTick(this, blockposition1, this.random); } @@ -767,7 +767,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed } @VisibleForTesting -@@ -1246,19 +1246,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1245,19 +1245,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -792,7 +792,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1281,12 +1281,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1280,12 +1280,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -809,7 +809,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1298,7 +1298,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1297,7 +1297,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -819,7 +819,7 @@ index e78d3a8e286a0f62b0211dec91cac1ca64f73e52..b37c54afb68c4c78cc86703b7cdb41ed while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index fceb216d553763db971115ed4c30535bf52e80f6..f7d1310b3c3b35d835e7a292b1356b46b1b72024 100644 +index a7dced47c7946152740e906882d79b5910c5d9d5..b95044ac3db41f3c4f9404b139ec58eb59d8139e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1398,7 +1398,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1078,10 +1078,10 @@ index a715ecf4a8ac91d3e5e5c6269d89e54b2c1cd279..223c3665126c576eddb1a8f7c9f5bc60 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e5553471ed76f9e 100644 +index 496551820d0357da9c5e89dd989d31b43fbfeb18..99c01f0328fab0a71a888dd57c74e9771e9e6bb8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -827,7 +827,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -859,7 +859,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end public void baseTick() { @@ -1090,7 +1090,7 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups this.inBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -892,7 +892,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -924,7 +924,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess Leashable.tickLeash((Entity & Leashable) this); // CraftBukkit - decompile error } @@ -1099,7 +1099,7 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 } public void setSharedFlagOnFire(boolean onFire) { -@@ -1070,7 +1070,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1102,7 +1102,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1108,7 +1108,7 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1079,7 +1079,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1111,7 +1111,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1117,7 +1117,7 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 return; } // Paper end -@@ -1100,8 +1100,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1132,8 +1132,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1128,7 +1128,7 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1120,7 +1120,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1152,7 +1152,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1137,7 +1137,7 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1223,7 +1223,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1255,7 +1255,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1146,16 +1146,16 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 } } } -@@ -3111,7 +3111,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3143,7 +3143,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.processPortalCooldown(); if (this.portalProcess != null) { if (this.portalProcess.processPortalTeleportation(worldserver, this, this.canUsePortal(false))) { - worldserver.getProfiler().push("portal"); + //worldserver.getProfiler().push("portal"); // Purpur - // Paper start - Add EntityPortalReadyEvent - ServerLevel changedTarget = worldserver.getServer().getLevel(worldserver.getTypeKey() == net.minecraft.world.level.dimension.LevelStem.NETHER ? Level.OVERWORLD : Level.NETHER); - if (this.portalProcess.isSamePortal(((net.minecraft.world.level.block.NetherPortalBlock) net.minecraft.world.level.block.Blocks.NETHER_PORTAL))) { -@@ -3134,7 +3134,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + this.setPortalCooldown(); + DimensionTransition dimensiontransition = this.portalProcess.getPortalDestination(worldserver, this); + +@@ -3155,7 +3155,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1164,7 +1164,7 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 } else if (this.portalProcess.hasExpired()) { this.portalProcess = null; } -@@ -3635,7 +3635,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3656,7 +3656,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1173,7 +1173,7 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 Entity entity2 = worldserver1.dimension() == worldserver.dimension() ? this : this.getType().create(worldserver1); if (entity2 != null) { -@@ -3671,7 +3671,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3692,7 +3692,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess teleportTarget.postDimensionTransition().onTransition(entity2); } @@ -1183,7 +1183,7 @@ index fccf206ed36c26665aad8831fe284a973d56cdce..59d75a40b2d6dd3ce8bdcf2b5e555347 } } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0c89b32f868bfdeb995c9652f15de7b1816e7bfe..3f0d3229ec4727c0d176a2e603c3f9e933f3395e 100644 +index a9833d805aa51755a15fd98ca546c119e7e4bdf9..c8c931135133ef3d1d491034d578d9af47d9a9bd 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -445,7 +445,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1294,7 +1294,7 @@ index 0c89b32f868bfdeb995c9652f15de7b1816e7bfe..3f0d3229ec4727c0d176a2e603c3f9e9 // Purpur start if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 84827f266bddd75ee91e7e88e49caf6d66c58d2b..1612da157bc59799ab98eba673049c046cffa38f 100644 +index 6dfb13eef96ff43d368cd8163ae5883571cec604..a07cadcbd73f7058a5cf8535fb317ac0e493eeeb 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -370,13 +370,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -1806,9 +1806,27 @@ index bff83fe413c7baef4ba56a3270ea4463a58c792f..3ee7bf7e10f8120258baaae8f77cdcbb if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e94e6cc538094de4ce0fc0f615e6fed8bcdcb828..c6760eb6ad0b4cedd5a2b22e9c460a76d10cb5b6 100644 +index e94e6cc538094de4ce0fc0f615e6fed8bcdcb828..629f35eda2f31b17025fd9d0e594cdebabc0a504 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java +@@ -268,7 +268,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + + @Override + public final List getEntitiesOfClass(final Class entityClass, final AABB boundingBox, final Predicate predicate) { +- this.getProfiler().incrementCounter("getEntities"); ++ //this.getProfiler().incrementCounter("getEntities"); // Purpur + final List ret = new java.util.ArrayList<>(); + + ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getEntities(entityClass, null, boundingBox, ret, predicate); +@@ -278,7 +278,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + + @Override + public final List moonrise$getHardCollidingEntities(final Entity entity, final AABB box, final Predicate predicate) { +- this.getProfiler().incrementCounter("getEntities"); ++ //this.getProfiler().incrementCounter("getEntities"); // Purpur + final List ret = new java.util.ArrayList<>(); + + ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getHardCollidingEntities(entity, box, ret, predicate); @@ -984,9 +984,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } diff --git a/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch index 004122fca..a23468601 100644 --- a/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0253-mob-spawning-option-to-ignore-creative-players.patch @@ -18,7 +18,7 @@ index 35e94c06361795d032f995e8282f8b35c075dae7..0f90a6803851eba51e164772c984b1cd if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b26d42857eec11d92372bd9c6a0df4ef3dadb140..d1ca8b4947faf6114492626a298ee0dd46f6fe32 100644 +index 3aa0c702d6d76541fb0d4ca34745ba163bbed9e0..17f3e53c58fbb076ca0a7d3257584b439c3fd375 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -370,6 +370,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0254-Add-skeleton-bow-accuracy-option.patch b/patches/server/0254-Add-skeleton-bow-accuracy-option.patch index 922d7c3f1..907a6d3ce 100644 --- a/patches/server/0254-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0254-Add-skeleton-bow-accuracy-option.patch @@ -18,7 +18,7 @@ index 63cbec52bc4637a0b787cbc22041188691527def..45b09f79a0ae8b7ebdd015d6edfa1fe0 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d1ca8b4947faf6114492626a298ee0dd46f6fe32..987e61dc9f1688b378005f95850841bf896e9cf9 100644 +index 17f3e53c58fbb076ca0a7d3257584b439c3fd375..33c41bf3b4e1462c34fa9210dbdcee81503b6b97 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2518,6 +2518,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0256-Implement-ram-and-rambar-commands.patch b/patches/server/0256-Implement-ram-and-rambar-commands.patch index 3bc3bad9b..e740cfad3 100644 --- a/patches/server/0256-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0256-Implement-ram-and-rambar-commands.patch @@ -18,7 +18,7 @@ index 6daecb014fea4e0a4fb00aec28e0ab6779bad9ae..13c084e250f298b2181abebe2c391dc1 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f7d1310b3c3b35d835e7a292b1356b46b1b72024..706ad5a88d754e96b3c00c017000757fe5e19c18 100644 +index b95044ac3db41f3c4f9404b139ec58eb59d8139e..7cb982a651bd73d0f5763925499107c0e85b1b8f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -304,6 +304,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -45,7 +45,7 @@ index f7d1310b3c3b35d835e7a292b1356b46b1b72024..706ad5a88d754e96b3c00c017000757f nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -3093,5 +3096,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3095,5 +3098,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void compassBar(boolean compassBar) { this.compassBar = compassBar; } @@ -60,10 +60,10 @@ index f7d1310b3c3b35d835e7a292b1356b46b1b72024..706ad5a88d754e96b3c00c017000757f // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index bbb7afbfb84b0d8e45f6e0de61f4f3e8c9315431..0278beb0746db9a8b25eefeacbb4f8f4e5e6d38b 100644 +index 3750c8b3e011772700a1d07145f81625fd2c1b01..78234e8369e478800a4dc81084c8e1084c3bbd20 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -182,6 +182,8 @@ public class PurpurConfig { +@@ -184,6 +184,8 @@ public class PurpurConfig { public static String creditsCommandOutput = "%s has been shown the end credits"; public static String demoCommandOutput = "%s has been shown the demo screen"; public static String pingCommandOutput = "%s's ping is %sms"; @@ -72,7 +72,7 @@ index bbb7afbfb84b0d8e45f6e0de61f4f3e8c9315431..0278beb0746db9a8b25eefeacbb4f8f4 public static String tpsbarCommandOutput = "Tpsbar toggled for "; public static String dontRunWithScissors = "Don't run with scissors!"; public static String uptimeCommandOutput = "Server uptime is "; -@@ -199,6 +201,8 @@ public class PurpurConfig { +@@ -201,6 +203,8 @@ public class PurpurConfig { creditsCommandOutput = getString("settings.messages.credits-command-output", creditsCommandOutput); demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput); pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); @@ -81,7 +81,7 @@ index bbb7afbfb84b0d8e45f6e0de61f4f3e8c9315431..0278beb0746db9a8b25eefeacbb4f8f4 tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput); dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors); uptimeCommandOutput = getString("settings.messages.uptime-command-output", uptimeCommandOutput); -@@ -247,6 +251,15 @@ public class PurpurConfig { +@@ -249,6 +253,15 @@ public class PurpurConfig { disableGiveCommandDrops = getBoolean("settings.disable-give-dropping", disableGiveCommandDrops); } @@ -97,7 +97,7 @@ index bbb7afbfb84b0d8e45f6e0de61f4f3e8c9315431..0278beb0746db9a8b25eefeacbb4f8f4 public static String commandTPSBarTitle = "TPS: MSPT: Ping: ms"; public static BossBar.Overlay commandTPSBarProgressOverlay = BossBar.Overlay.NOTCHED_20; public static TPSBarTask.FillMode commandTPSBarProgressFillMode = TPSBarTask.FillMode.MSPT; -@@ -274,6 +287,16 @@ public class PurpurConfig { +@@ -276,6 +289,16 @@ public class PurpurConfig { public static String uptimeSecond = "%02d second"; public static String uptimeSeconds = "%02d seconds"; private static void commandSettings() { diff --git a/patches/server/0257-Configurable-block-blast-resistance.patch b/patches/server/0257-Configurable-block-blast-resistance.patch index a96c31d2d..a4d48b562 100644 --- a/patches/server/0257-Configurable-block-blast-resistance.patch +++ b/patches/server/0257-Configurable-block-blast-resistance.patch @@ -18,10 +18,10 @@ index 1b825b9012e24b12f83883f2056839c102802e4b..155a099eb9b0196385947f5765fad4e5 protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 0278beb0746db9a8b25eefeacbb4f8f4e5e6d38b..7d33bdb2592f7977aff21804c837c9eff5827f5f 100644 +index 78234e8369e478800a4dc81084c8e1084c3bbd20..f3bd0ee46effea1cd8aec953107565bfe95cbf7b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -488,4 +488,19 @@ public class PurpurConfig { +@@ -492,4 +492,19 @@ public class PurpurConfig { String setPattern = getString("settings.username-valid-characters", defaultPattern); usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } diff --git a/patches/server/0258-Configurable-block-fall-damage-modifiers.patch b/patches/server/0258-Configurable-block-fall-damage-modifiers.patch index 18a4987a7..72adbc615 100644 --- a/patches/server/0258-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0258-Configurable-block-fall-damage-modifiers.patch @@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7d33bdb2592f7977aff21804c837c9eff5827f5f..3f4584ede9fc039ecdb770a0d6fcb824abc03388 100644 +index f3bd0ee46effea1cd8aec953107565bfe95cbf7b..eac4ad715b8b5c97802763aee0ff2941cf0afb8d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -503,4 +503,50 @@ public class PurpurConfig { +@@ -507,4 +507,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } @@ -81,7 +81,7 @@ index 7d33bdb2592f7977aff21804c837c9eff5827f5f..3f4584ede9fc039ecdb770a0d6fcb824 + Map.entry("minecraft:purple_bed", Map.of("distance", 0.5F)), + Map.entry("minecraft:magenta_bed", Map.of("distance", 0.5F)) + )).forEach((blockId, value) -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(blockId)); + if (block == Blocks.AIR) { + log(Level.SEVERE, "Invalid block for `settings.block-fall-multipliers`: " + blockId); + return; diff --git a/patches/server/0260-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0260-Milk-Keeps-Beneficial-Effects.patch index 9db3d1cff..ddaf4a2d6 100644 --- a/patches/server/0260-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0260-Milk-Keeps-Beneficial-Effects.patch @@ -30,7 +30,7 @@ index d342752271c76b447bb8cde50d57407259b93c43..360514d5afcafcf6dd83335938bfa09b this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 987e61dc9f1688b378005f95850841bf896e9cf9..f3a83c902a5d4fd66ef2af78ac180fc629d405fe 100644 +index 33c41bf3b4e1462c34fa9210dbdcee81503b6b97..dda5640ed69277965356d2efdcd571fd4c22b55f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -126,6 +126,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0262-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0262-Add-log-suppression-for-LibraryLoader.patch index 66454ce3c..ec6d8feef 100644 --- a/patches/server/0262-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0262-Add-log-suppression-for-LibraryLoader.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3f4584ede9fc039ecdb770a0d6fcb824abc03388..c6757db82626e98a76ad430dcca1f20c2a9c9684 100644 +index eac4ad715b8b5c97802763aee0ff2941cf0afb8d..72e918ad137dbfe8cde8b179f352224c8b2a1dad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -461,11 +461,14 @@ public class PurpurConfig { +@@ -465,11 +465,14 @@ public class PurpurConfig { public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; public static boolean loggerSuppressSetBlockFarChunk = false; diff --git a/patches/server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch new file mode 100644 index 000000000..31fd7fcae --- /dev/null +++ b/patches/server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -0,0 +1,89 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MelnCat +Date: Sat, 1 Oct 2022 11:33:15 -0700 +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 8d8944a0455b3401d84cab636d61447e7d51ab19..0a7aa715674e5577e7f2327f6d0d253e5e6ec234 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 { + public ItemStack pickupItemStack; + @Nullable + public ItemStack firedFromWeapon; ++ public net.minecraft.world.item.enchantment.ItemEnchantments actualEnchantments = net.minecraft.world.item.enchantment.ItemEnchantments.EMPTY; // Purpur - Add an option to fix MC-3304 projectile looting + + // Spigot Start + @Override +@@ -589,6 +590,12 @@ public abstract class AbstractArrow extends Projectile { + return this.firedFromWeapon; + } + ++ // Purpur start - Add an option to fix MC-3304 projectile looting ++ public void setActualEnchantments(net.minecraft.world.item.enchantment.ItemEnchantments actualEnchantments) { ++ this.actualEnchantments = actualEnchantments; ++ } ++ // Purpur end - Add an option to fix MC-3304 projectile looting ++ + protected SoundEvent getDefaultHitGroundSoundEvent() { + return SoundEvents.ARROW_HIT; + } +diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +index 32dd0b13a0819f597d8a93c6bc3a155781067544..9751eea2d8aa3a45da34f09377d2fc81fe9a90d8 100644 +--- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java ++++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +@@ -110,6 +110,8 @@ public abstract class ProjectileWeaponItem extends Item { + entityarrow.setCritArrow(true); + } + ++ entityarrow.setActualEnchantments(weaponStack.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting ++ + return entityarrow; + } + +diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java +index 1be074074283f12543ac771ac9201580e7736289..8cf0b69fee110af05b89afa8e3236575aa6850e2 100644 +--- a/src/main/java/net/minecraft/world/item/TridentItem.java ++++ b/src/main/java/net/minecraft/world/item/TridentItem.java +@@ -86,6 +86,8 @@ public class TridentItem extends Item implements ProjectileItem { + entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; + } + ++ entitythrowntrident.setActualEnchantments(stack.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting ++ + // CraftBukkit start + // Paper start - PlayerLaunchProjectileEvent + com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) entitythrowntrident.getBukkitEntity()); +diff --git a/src/main/java/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java b/src/main/java/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java +index d86189bd446c7cd7215cfbcef72b2125a064e3d1..53608b9dbb81c58819b9ae6bc676ffb3ed01ce70 100644 +--- a/src/main/java/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java ++++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java +@@ -66,6 +66,11 @@ public class EnchantedCountIncreaseFunction extends LootItemConditionalFunction + Entity entity = context.getParamOrNull(LootContextParams.ATTACKING_ENTITY); + if (entity instanceof LivingEntity livingEntity) { + int i = EnchantmentHelper.getEnchantmentLevel(this.enchantment, livingEntity); ++ // Purpur start - Add an option to fix MC-3304 projectile looting ++ if (org.purpurmc.purpur.PurpurConfig.fixProjectileLootingTransfer && context.getParamOrNull(LootContextParams.DIRECT_ATTACKING_ENTITY) instanceof net.minecraft.world.entity.projectile.AbstractArrow arrow) { ++ i = arrow.actualEnchantments.getLevel(this.enchantment); ++ } ++ // Purpur end - Add an option to fix MC-3304 projectile looting + if (i == 0) { + return stack; + } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index 72e918ad137dbfe8cde8b179f352224c8b2a1dad..2f05f9c7f86a30b75b4fcaff8a95d0563ed8c9ad 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -496,6 +496,11 @@ public class PurpurConfig { + usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); + } + ++ public static boolean fixProjectileLootingTransfer = false; ++ private static void fixProjectileLootingTransfer() { ++ fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); ++ } ++ + private static void blastResistanceSettings() { + getMap("settings.blast-resistance-overrides", Collections.emptyMap()).forEach((blockId, value) -> { + Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.withDefaultNamespace(blockId)); diff --git a/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0264-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/0264-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 10d6396f6..48e63a7cc 100644 --- a/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0264-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 f3a83c902a5d4fd66ef2af78ac180fc629d405fe..4101ffc947d55fec0870046d95ca8796d814bc3a 100644 +index dda5640ed69277965356d2efdcd571fd4c22b55f..cefca593841723dea30c3c1f5b171c7b581a8f16 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1425,6 +1425,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0264-Fire-Immunity-API.patch b/patches/server/0265-Fire-Immunity-API.patch similarity index 87% rename from patches/server/0264-Fire-Immunity-API.patch rename to patches/server/0265-Fire-Immunity-API.patch index 7e5a3fa19..89e213dad 100644 --- a/patches/server/0264-Fire-Immunity-API.patch +++ b/patches/server/0265-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 59d75a40b2d6dd3ce8bdcf2b5e5553471ed76f9e..eb6ec199cb61f91b32144f51388785d355e2fce0 100644 +index 5763b9536b85371ed74906df6a13938fd46bd815..6d12da56f191c2889418200397a84b2467b60f17 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -430,6 +430,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -16,7 +16,7 @@ index 59d75a40b2d6dd3ce8bdcf2b5e5553471ed76f9e..eb6ec199cb61f91b32144f51388785d3 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1733,7 +1734,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1765,7 +1766,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -25,7 +25,7 @@ index 59d75a40b2d6dd3ce8bdcf2b5e5553471ed76f9e..eb6ec199cb61f91b32144f51388785d3 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2443,6 +2444,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2475,6 +2476,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index 59d75a40b2d6dd3ce8bdcf2b5e5553471ed76f9e..eb6ec199cb61f91b32144f51388785d3 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2590,6 +2596,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2622,6 +2628,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,13 +50,13 @@ index 59d75a40b2d6dd3ce8bdcf2b5e5553471ed76f9e..eb6ec199cb61f91b32144f51388785d3 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 4c1303c5b9f631efd9497cf893a6ca0348157f2c..31a696de166e1f4d8e5a67cd92427cbda2b8eeb2 100644 +index ef550741b2173a1a6f24c3bc532bb530eccd6217..becc6768857e0968b76988deb8a42b32eb3a6190 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -86,6 +86,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); +@@ -87,6 +87,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } + // Purpur start - API for any mob to burn daylight + @Override + public boolean isImmuneToFire() { + return getHandle().fireImmune(); diff --git a/patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 91% rename from patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0266-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 6ea9cec24..d29cd4690 100644 --- a/patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0266-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 eb6ec199cb61f91b32144f51388785d355e2fce0..1d1b7a9b8f40610d19faaff876e2f725acfa91d8 100644 +index 6d12da56f191c2889418200397a84b2467b60f17..722208d61c6e363b4e4af0433b8d6390bbdc3eb3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -906,6 +906,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -938,6 +938,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 @@ -17,7 +17,7 @@ index eb6ec199cb61f91b32144f51388785d355e2fce0..1d1b7a9b8f40610d19faaff876e2f725 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4101ffc947d55fec0870046d95ca8796d814bc3a..161ecb87855a2450c5b7dffdf26a761c3a86f351 100644 +index cefca593841723dea30c3c1f5b171c7b581a8f16..e1354ba9666bd0369eb01c1996c487856bd38e47 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -410,6 +410,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0266-Added-got-ram-event.patch b/patches/server/0267-Added-got-ram-event.patch similarity index 100% rename from patches/server/0266-Added-got-ram-event.patch rename to patches/server/0267-Added-got-ram-event.patch diff --git a/patches/server/0267-Log-skipped-entity-s-position.patch b/patches/server/0268-Log-skipped-entity-s-position.patch similarity index 91% rename from patches/server/0267-Log-skipped-entity-s-position.patch rename to patches/server/0268-Log-skipped-entity-s-position.patch index b7d7fb25f..7667df401 100644 --- a/patches/server/0267-Log-skipped-entity-s-position.patch +++ b/patches/server/0268-Log-skipped-entity-s-position.patch @@ -5,7 +5,7 @@ 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 831da897fd422df8e57487017871e841cbc95d00..d2e98ad9db7c0fc8c516f64febe9be0425b0e774 100644 +index 9cac9f5989cd8f73f247e4a3f901a54c03bc00ef..b4f4addfd35a1961a237fc0ab83e6285a0faeaee 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -625,6 +625,12 @@ public class EntityType implements FeatureElement, EntityTypeT diff --git a/patches/server/0268-End-Crystal-Cramming.patch b/patches/server/0269-End-Crystal-Cramming.patch similarity index 96% rename from patches/server/0268-End-Crystal-Cramming.patch rename to patches/server/0269-End-Crystal-Cramming.patch index e0971c7f2..cfa4b5f5c 100644 --- a/patches/server/0268-End-Crystal-Cramming.patch +++ b/patches/server/0269-End-Crystal-Cramming.patch @@ -17,7 +17,7 @@ index 02f1d0418395b100cabfad7294466aaad34ac7c6..c0275197cc9aab2a49d88476e072a94f // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 161ecb87855a2450c5b7dffdf26a761c3a86f351..9001cedb13c057a17de9bc778c755cced6676e07 100644 +index e1354ba9666bd0369eb01c1996c487856bd38e47..cda3c024277c355050c26eb752ef39cb8f22cbd7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -941,6 +941,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0270-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/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 3a6e6015c..fa212c693 100644 --- a/patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0270-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,7 +36,7 @@ index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc9 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9001cedb13c057a17de9bc778c755cced6676e07..d7b6ee51f1e9e5bf33cecedbeb27bb12ad332916 100644 +index cda3c024277c355050c26eb752ef39cb8f22cbd7..1ff6772cd0f32182b2e06a8df5a3538b57a528fe 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -840,11 +840,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch similarity index 91% rename from patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch index 60c97a0c0..6049b4a5d 100644 --- a/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0271-Add-attribute-clamping-and-armor-limit-config.patch @@ -39,11 +39,11 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c6757db82626e98a76ad430dcca1f20c2a9c9684..920dc26d4485f3c12d237c2b55e3d70671246ddc 100644 +index 2f05f9c7f86a30b75b4fcaff8a95d0563ed8c9ad..111250146a1db4d0e2497c0dce0d9f0f1f298ab6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -492,6 +492,16 @@ public class PurpurConfig { - usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); +@@ -501,6 +501,16 @@ public class PurpurConfig { + fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); } + public static boolean clampAttributes = true; diff --git a/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch similarity index 95% rename from patches/server/0271-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0272-Config-to-remove-explosion-radius-clamp.patch index 6397cc945..4740cf103 100644 --- a/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0272-Config-to-remove-explosion-radius-clamp.patch @@ -27,7 +27,7 @@ index 3ee7bf7e10f8120258baaae8f77cdcbb6a781f78..754373da9a5246c11f3c33a8907d387e } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d7b6ee51f1e9e5bf33cecedbeb27bb12ad332916..46e49af0af0f4e0a6023543059d5d0bb1e3807df 100644 +index 1ff6772cd0f32182b2e06a8df5a3538b57a528fe..d736c73f10ad63fb29dbca832f3d4b66c3880f67 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -217,6 +217,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch index ec6ed51ee..857b23458 100644 --- a/patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0273-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,7 +137,7 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 46e49af0af0f4e0a6023543059d5d0bb1e3807df..efd50934c728bb5dd7e54a22aafeca77fb0588b5 100644 +index d736c73f10ad63fb29dbca832f3d4b66c3880f67..d4cd6c80d724d2d930f734980452c964687aea36 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -894,8 +894,20 @@ public class PurpurWorldConfig { diff --git a/patches/server/0273-Add-PreExplodeEvents.patch b/patches/server/0274-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0273-Add-PreExplodeEvents.patch rename to patches/server/0274-Add-PreExplodeEvents.patch diff --git a/patches/server/0274-Improve-output-of-plugins-command.patch b/patches/server/0275-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0274-Improve-output-of-plugins-command.patch rename to patches/server/0275-Improve-output-of-plugins-command.patch diff --git a/patches/server/0275-Make-GUI-Great-Again.patch b/patches/server/0276-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0275-Make-GUI-Great-Again.patch rename to patches/server/0276-Make-GUI-Great-Again.patch diff --git a/patches/server/0276-Stored-Bee-API.patch b/patches/server/0277-Stored-Bee-API.patch similarity index 100% rename from patches/server/0276-Stored-Bee-API.patch rename to patches/server/0277-Stored-Bee-API.patch diff --git a/patches/server/0277-Shears-can-defuse-TNT.patch b/patches/server/0278-Shears-can-defuse-TNT.patch similarity index 97% rename from patches/server/0277-Shears-can-defuse-TNT.patch rename to patches/server/0278-Shears-can-defuse-TNT.patch index 77c938a4a..4aa3ad19a 100644 --- a/patches/server/0277-Shears-can-defuse-TNT.patch +++ b/patches/server/0278-Shears-can-defuse-TNT.patch @@ -42,7 +42,7 @@ index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..2a4425d04917b32c7ae5af3e7422c0ba + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index efd50934c728bb5dd7e54a22aafeca77fb0588b5..c37f67a58d8e0877f7c7e2f732cf21b711c5bb7b 100644 +index d4cd6c80d724d2d930f734980452c964687aea36..23326e0f05f4006936e241a9bf703b813495e58d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -3287,4 +3287,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0278-Explorer-Map-API.patch b/patches/server/0279-Explorer-Map-API.patch similarity index 100% rename from patches/server/0278-Explorer-Map-API.patch rename to patches/server/0279-Explorer-Map-API.patch diff --git a/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0280-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/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch index cd70cb051..6642110d5 100644 --- a/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0280-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,7 +18,7 @@ index e09ca4aa99f2e58f97159a40e33ed863fa2ae7df..6e866ec44a83ec9064ac3228bd96eb25 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c37f67a58d8e0877f7c7e2f732cf21b711c5bb7b..c0b7362de8d5296c728d8485e33726e6252a8371 100644 +index 23326e0f05f4006936e241a9bf703b813495e58d..d91e9e848cc582b544ef0957b3f02f20a8deaf09 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2102,6 +2102,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0281-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/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index f267162a6..4f27a2a57 100644 --- a/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0281-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,7 +29,7 @@ index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c0b7362de8d5296c728d8485e33726e6252a8371..a93f224baa7b5894094acbf6a7963b0ad1015e6a 100644 +index d91e9e848cc582b544ef0957b3f02f20a8deaf09..f3096a1c7663f8cc614e2f99288dcf22e6c03eaf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2271,6 +2271,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0281-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 95% rename from patches/server/0281-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch index 1af1d0de4..09f7d07ed 100644 --- a/patches/server/0281-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0282-Add-option-for-always-showing-item-in-player-death-m.patch @@ -31,10 +31,10 @@ index d95d122601dd47a27e8d82a13b071919c360fe68..4a96d914f8aa6f0c5f13fc85369a311f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 920dc26d4485f3c12d237c2b55e3d70671246ddc..f93224fe05c29cdecf5e04afec1624a4edfbb77b 100644 +index 111250146a1db4d0e2497c0dce0d9f0f1f298ab6..8c1b21f6bfb6d92cdd461c8ef7b2dd98b8f7db40 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -562,4 +562,9 @@ public class PurpurConfig { +@@ -571,4 +571,9 @@ public class PurpurConfig { block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue(); }); } diff --git a/patches/server/0282-place-end-crystal-on-any-block.patch b/patches/server/0283-place-end-crystal-on-any-block.patch similarity index 96% rename from patches/server/0282-place-end-crystal-on-any-block.patch rename to patches/server/0283-place-end-crystal-on-any-block.patch index cf030b0d7..4c168a7c7 100644 --- a/patches/server/0282-place-end-crystal-on-any-block.patch +++ b/patches/server/0283-place-end-crystal-on-any-block.patch @@ -18,7 +18,7 @@ index 5f51e64cb0611a4ba6bdcdcacbcba1063a7f3a5c..8fb564f43e2f1194d2ad68d35c4df6b9 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a93f224baa7b5894094acbf6a7963b0ad1015e6a..e82fb81d8b48597a3933e250510604c09662e340 100644 +index f3096a1c7663f8cc614e2f99288dcf22e6c03eaf..5143da56ec64eaa44f3d88387455762d62740508 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -961,6 +961,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0284-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/0284-Add-option-to-disable-the-copper-oxidation-proximity.patch index 3aad27675..293a24d5e 100644 --- a/patches/server/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0284-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 e82fb81d8b48597a3933e250510604c09662e340..3f36995a2f5135c3e9014ffa021d8ef3fc2d40bd 100644 +index 5143da56ec64eaa44f3d88387455762d62740508..762c75c68ab51e7cb09ffdeceeb24f79c508d5b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -143,6 +143,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0284-register-minecraft-debug-commands.patch b/patches/server/0285-register-minecraft-debug-commands.patch similarity index 95% rename from patches/server/0284-register-minecraft-debug-commands.patch rename to patches/server/0285-register-minecraft-debug-commands.patch index d567dd5d9..8263eb438 100644 --- a/patches/server/0284-register-minecraft-debug-commands.patch +++ b/patches/server/0285-register-minecraft-debug-commands.patch @@ -32,10 +32,10 @@ index 824afdc486a50952bf5e32b06509f7952da9bba5..abb60e5cf3ecdb40561510dc53294e30 io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f93224fe05c29cdecf5e04afec1624a4edfbb77b..a6681c9e0ba0544bf1fd80d73be7f22f4fed1157 100644 +index 8c1b21f6bfb6d92cdd461c8ef7b2dd98b8f7db40..7e1ffdf66be384e68c2ab005a1b439609e4a1a13 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -567,4 +567,9 @@ public class PurpurConfig { +@@ -576,4 +576,9 @@ public class PurpurConfig { private static void playerDeathsAlwaysShowItem() { playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem); } diff --git a/patches/server/0285-Configurable-villager-search-radius.patch b/patches/server/0286-Configurable-villager-search-radius.patch similarity index 97% rename from patches/server/0285-Configurable-villager-search-radius.patch rename to patches/server/0286-Configurable-villager-search-radius.patch index a6f1ac9f0..73464b5e1 100644 --- a/patches/server/0285-Configurable-villager-search-radius.patch +++ b/patches/server/0286-Configurable-villager-search-radius.patch @@ -31,7 +31,7 @@ index d5a549f08b98c80a5cf0eef02cb8a389c32dfecb..222c87e80cb089867ce9a7d2dceebe21 .collect(Collectors.toSet()); Path path = AcquirePoi.findPathToPois(entity, set); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3f36995a2f5135c3e9014ffa021d8ef3fc2d40bd..d6ccc6cb1d89279c1786403f4288d33bf89b5546 100644 +index 762c75c68ab51e7cb09ffdeceeb24f79c508d5b7..6836cb01846f6a95c8d53ba5fcf98151b7f51e73 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2901,6 +2901,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0287-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/0287-option-to-make-ravagers-afraid-of-rabbits.patch index 49480249a..660aa856e 100644 --- a/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0287-option-to-make-ravagers-afraid-of-rabbits.patch @@ -18,7 +18,7 @@ index 714a37974e3256913c15193f2bd292fe45072c7f..0c494a8c71e316307af2c0e256ccfd23 this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d6ccc6cb1d89279c1786403f4288d33bf89b5546..574a690070fe19d77d2f6b5f711bbf65b6357278 100644 +index 6836cb01846f6a95c8d53ba5fcf98151b7f51e73..0c60dfaee719d2099d88ddde4904ba9c231bcff9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2417,6 +2417,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0287-config-for-startup-commands.patch b/patches/server/0288-config-for-startup-commands.patch similarity index 94% rename from patches/server/0287-config-for-startup-commands.patch rename to patches/server/0288-config-for-startup-commands.patch index 718d5a4e0..4a6b6bb61 100644 --- a/patches/server/0287-config-for-startup-commands.patch +++ b/patches/server/0288-config-for-startup-commands.patch @@ -26,10 +26,10 @@ index 3df64fa31137116aed8b7993cb82164d8d5172cd..40a4273275822a8b3013807a9dd0716a long i; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a6681c9e0ba0544bf1fd80d73be7f22f4fed1157..fd4081662aa71d508b2f1bc1dbd70b1b28687848 100644 +index 7e1ffdf66be384e68c2ab005a1b439609e4a1a13..10f15a76e9443db84d2443dfe5cf9856e0472630 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -572,4 +572,16 @@ public class PurpurConfig { +@@ -581,4 +581,16 @@ public class PurpurConfig { private static void registerMinecraftDebugCommands() { registerMinecraftDebugCommands = getBoolean("settings.register-minecraft-debug-commands", registerMinecraftDebugCommands); } diff --git a/patches/server/0288-Config-to-reverse-bubble-column-flow.patch b/patches/server/0289-Config-to-reverse-bubble-column-flow.patch similarity index 93% rename from patches/server/0288-Config-to-reverse-bubble-column-flow.patch rename to patches/server/0289-Config-to-reverse-bubble-column-flow.patch index cd9ff2a88..039a301d4 100644 --- a/patches/server/0288-Config-to-reverse-bubble-column-flow.patch +++ b/patches/server/0289-Config-to-reverse-bubble-column-flow.patch @@ -22,10 +22,10 @@ index 4c1f20fafdbd86011959cc2d4983b6c2f8e87a5f..78679c2c26a36cf08cf3ffe78617d97d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index fd4081662aa71d508b2f1bc1dbd70b1b28687848..c10293aec83128e0bb4954690d6973a115607775 100644 +index 10f15a76e9443db84d2443dfe5cf9856e0472630..aea73061f4bd47c7307d6fdf0929765f5258cafc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -341,6 +341,8 @@ public class PurpurConfig { +@@ -343,6 +343,8 @@ public class PurpurConfig { public static int kelpMaxGrowthAge = 25; public static int twistingVinesMaxGrowthAge = 25; public static int weepingVinesMaxGrowthAge = 25; @@ -34,7 +34,7 @@ index fd4081662aa71d508b2f1bc1dbd70b1b28687848..c10293aec83128e0bb4954690d6973a1 private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); -@@ -412,6 +414,8 @@ public class PurpurConfig { +@@ -416,6 +418,8 @@ public class PurpurConfig { log(Level.WARNING, "blocks.weeping_vines.max-growth-age is set to above maximum allowed value of 25"); log(Level.WARNING, "Using value of 25 to prevent issues"); } diff --git a/patches/server/0289-Adopt-MaterialRerouting.patch b/patches/server/0290-Adopt-MaterialRerouting.patch similarity index 100% rename from patches/server/0289-Adopt-MaterialRerouting.patch rename to patches/server/0290-Adopt-MaterialRerouting.patch diff --git a/patches/unapplied-server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/unapplied-server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch deleted file mode 100644 index 6755dbff9..000000000 --- a/patches/unapplied-server/0263-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: MelnCat -Date: Sat, 1 Oct 2022 11:33:15 -0700 -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 342eaa0e3b053e9b39dc58fa92cd18cac446a844..06f7bc4d8d6679d6625a8d392777722fc97739ba 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -77,6 +77,7 @@ public abstract class AbstractArrow extends Projectile { - @Nullable - private List piercedAndKilledEntities; - public ItemStack pickupItemStack; -+ public int lootingLevel; // Purpur - - // Spigot Start - @Override -@@ -655,6 +656,12 @@ public abstract class AbstractArrow extends Projectile { - this.knockback = punch; - } - -+ // Purpur start -+ public void setLootingLevel(int looting) { -+ this.lootingLevel = looting; -+ } -+ // Purpur end -+ - public int getKnockback() { - return this.knockback; - } -diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java -index d27e83c08c45b8514207f26e48ceb1a91ded94be..8f01772a7b06b2acf96a3f922cb9b481f634680b 100644 ---- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java -+++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java -@@ -131,6 +131,14 @@ public abstract class ProjectileWeaponItem extends Item { - entityarrow.setPierceLevel((byte) k); - } - -+ // Purpur start -+ int lootingLevel = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.LOOTING, weaponStack); -+ -+ if (lootingLevel > 0) { -+ entityarrow.setLootingLevel(lootingLevel); -+ } -+ // Purpur end -+ - return entityarrow; - } - -diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java -index 85dc79b9b969fa0cbf6964cb26bac139fa55710a..905a020dd7b365d51d5addadbbeb9555d03c5238 100644 ---- a/src/main/java/net/minecraft/world/item/TridentItem.java -+++ b/src/main/java/net/minecraft/world/item/TridentItem.java -@@ -81,6 +81,14 @@ public class TridentItem extends Item implements ProjectileItem { - entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; - } - -+ // Purpur start -+ int lootingLevel = EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.LOOTING, stack); -+ -+ if (lootingLevel > 0) { -+ entitythrowntrident.setLootingLevel(lootingLevel); -+ } -+ // Purpur end -+ - // CraftBukkit start - // Paper start - PlayerLaunchProjectileEvent - com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) entitythrowntrident.getBukkitEntity()); -diff --git a/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java b/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java -index cfe953bc924f46b570e37395ac0f05ebcb82eb39..5500e7ada2dd783cc1317968a3e54696bdd73bf8 100644 ---- a/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java -+++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java -@@ -57,6 +57,13 @@ public class LootingEnchantFunction extends LootItemConditionalFunction { - - if (entity instanceof LivingEntity) { - int i = EnchantmentHelper.getMobLooting((LivingEntity) entity); -+ // Purpur start -+ if (org.purpurmc.purpur.PurpurConfig.fixProjectileLootingTransfer && -+ context.getParamOrNull(LootContextParams.DIRECT_KILLER_ENTITY) -+ instanceof net.minecraft.world.entity.projectile.AbstractArrow arrow) { -+ i = arrow.lootingLevel; -+ } -+ // Purpur end - // CraftBukkit start - use lootingModifier if set by plugin - if (context.hasParam(LootContextParams.LOOTING_MOD)) { - i = context.getParamOrNull(LootContextParams.LOOTING_MOD); -diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 62612451c23bb146e82f4082ca8677e5dc57a08f..3b3d5bd9e645f440e033abd3c234a017972efa59 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -497,4 +497,9 @@ public class PurpurConfig { - String setPattern = getString("settings.username-valid-characters", defaultPattern); - usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); - } -+ -+ public static boolean fixProjectileLootingTransfer = false; -+ private static void fixProjectileLootingTransfer() { -+ fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); -+ } - }