From 89e388c3a2c40b61e8e34ec03fcf1af735396af2 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 28 Oct 2024 00:04:05 -0700 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@bcf52fe Delete some old patches PaperMC/Paper@348c855 Readd last API patch (with TODO) PaperMC/Paper@b630564 More patches PaperMC/Paper@3cb16c9 Add back per player mob spawning PaperMC/Paper@fe7b741 Another one PaperMC/Paper@12ed021 Update material tags and entity effect PaperMC/Paper@02bca1e Remove timings impl PaperMC/Paper@4d87302 Fix NPE and StackOverflowError for dispensers PaperMC/Paper@f8f230a Remove unnecessary AT PaperMC/Paper@29bf7be Fix unused parameter in PlayerList#remove PaperMC/Paper@9e35192 Execute spark tasks during tick sleep (#11525) PaperMC/Paper@e35f199 Use declaration order for state holder property iteration PaperMC/Paper@6288adb Remove leftover missed timings calls (#11527) --- gradle.properties | 2 +- patches/api/0004-Purpur-config-files.patch | 4 +- patches/api/0012-Bring-back-server-name.patch | 8 +- patches/api/0014-Lagging-threshold.patch | 8 +- ...the-ability-to-add-combustible-items.patch | 8 +- patches/api/0037-Remove-Timings.patch | 37 +- patches/api/0039-Debug-Marker-API.patch | 8 +- patches/server/0001-Rebrand.patch | 10 +- patches/server/0002-Purpur-config-files.patch | 20 +- .../server/0003-Purpur-client-support.patch | 4 +- .../0006-Component-related-conveniences.patch | 8 +- patches/server/0007-Ridables.patch | 32 +- ...-Configurable-entity-base-attributes.patch | 18 +- patches/server/0011-AFK-API.patch | 16 +- .../server/0012-Bring-back-server-name.patch | 4 +- .../0013-Configurable-server-mod-name.patch | 4 +- patches/server/0014-Lagging-threshold.patch | 10 +- ...015-PlayerSetSpawnerTypeWithEggEvent.patch | 4 +- .../0024-Zombie-horse-naturally-spawn.patch | 6 +- ...-Minecart-settings-and-WASD-controls.patch | 4 +- ...able-loot-drops-on-death-by-cramming.patch | 8 +- .../0043-Configurable-TPS-Catchup.patch | 4 +- ...urable-void-damage-height-and-damage.patch | 10 +- ...ispenser-curse-of-binding-protection.patch | 10 +- ...0056-Add-5-second-tps-average-in-tps.patch | 12 +- .../0057-Implement-elytra-settings.patch | 8 +- ...-Add-allow-water-in-end-world-option.patch | 4 +- .../0068-Allow-color-codes-in-books.patch | 12 +- patches/server/0069-Entity-lifespan.patch | 8 +- ...leport-to-spawn-if-outside-world-bor.patch | 8 +- patches/server/0071-Squid-EAR-immunity.patch | 6 +- .../0075-Totems-work-in-inventory.patch | 6 +- ...ggling-special-MobSpawners-per-world.patch | 6 +- .../0090-Configurable-daylight-cycle.patch | 14 +- ...justable-breeding-cooldown-to-config.patch | 8 +- .../0101-Add-boat-fall-damage-config.patch | 6 +- patches/server/0110-Implement-TPSBar.patch | 22 +- .../server/0112-PlayerBookTooLargeEvent.patch | 6 +- ...iefing-bypass-to-everything-affected.patch | 4 +- .../server/0119-Fix-stuck-in-portals.patch | 8 +- .../server/0124-Dont-run-with-scissors.patch | 12 +- patches/server/0125-One-Punch-Man.patch | 6 +- ...-to-ignore-nearby-mobs-when-sleeping.patch | 6 +- .../0136-Config-for-skipping-night.patch | 6 +- patches/server/0138-Drowning-Settings.patch | 10 +- ...0152-Configurable-broadcast-settings.patch | 4 +- .../0153-Configurable-mob-blindness.patch | 6 +- ...164-API-for-any-mob-to-burn-daylight.patch | 16 +- ...ake-lightning-rod-range-configurable.patch | 4 +- patches/server/0176-Add-uptime-command.patch | 4 +- ...78-Store-placer-on-Block-when-placed.patch | 4 +- ...omizable-sleeping-actionbar-messages.patch | 8 +- patches/server/0185-Add-compass-command.patch | 10 +- .../0186-Toggle-for-kinetic-damage.patch | 6 +- ...the-ability-to-add-combustible-items.patch | 4 +- ...ain-and-thunder-should-stop-on-sleep.patch | 8 +- ...t-right-click-to-use-exp-for-mending.patch | 8 +- .../server/0207-UPnP-Port-Forwarding.patch | 12 +- ...ent-BlockEntity-Lore-and-DisplayName.patch | 18 +- .../server/0212-Signs-allow-color-codes.patch | 6 +- .../0218-Mob-head-visibility-percent.patch | 6 +- ...counts-in-beehives-to-Purpur-clients.patch | 8 +- patches/server/0224-Allow-void-trading.patch | 6 +- ...fig-for-mob-last-hurt-by-player-time.patch | 6 +- ...atch => 0247-Remove-Mojang-Profiler.patch} | 206 +++-- patches/server/0247-Remove-Timings.patch | 710 ------------------ ...r-output-for-invalid-movement-kicks.patch} | 6 +- ...d-Bee-API.patch => 0249-Add-Bee-API.patch} | 0 ...-API.patch => 0250-Debug-Marker-API.patch} | 4 +- ...g-option-to-ignore-creative-players.patch} | 6 +- ...52-Add-skeleton-bow-accuracy-option.patch} | 2 +- ....patch => 0253-Add-death-screen-API.patch} | 0 ...4-Implement-ram-and-rambar-commands.patch} | 10 +- ...Configurable-block-blast-resistance.patch} | 0 ...gurable-block-fall-damage-modifiers.patch} | 6 +- ...uage-API.patch => 0257-Language-API.patch} | 2 +- ... 0258-Milk-Keeps-Beneficial-Effects.patch} | 6 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 0 ...n-to-fix-MC-3304-projectile-looting.patch} | 0 ...ow-creeper-to-encircle-target-when-.patch} | 2 +- ...API.patch => 0263-Fire-Immunity-API.patch} | 2 +- ...eport-to-spawn-on-nether-ceiling-da.patch} | 4 +- ...t.patch => 0265-Added-got-ram-event.patch} | 0 ... 0266-Log-skipped-entity-s-position.patch} | 4 +- ....patch => 0267-End-Crystal-Cramming.patch} | 2 +- ...eacon-effects-when-covered-by-tinte.patch} | 2 +- ...ute-clamping-and-armor-limit-config.patch} | 0 ...ig-to-remove-explosion-radius-clamp.patch} | 2 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 2 +- ....patch => 0272-Add-PreExplodeEvents.patch} | 0 ...3-Improve-output-of-plugins-command.patch} | 0 ....patch => 0274-Make-GUI-Great-Again.patch} | 4 +- ...ee-API.patch => 0275-Stored-Bee-API.patch} | 0 ...patch => 0276-Shears-can-defuse-TNT.patch} | 0 ...-API.patch => 0277-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 2 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 0 ...ways-showing-item-in-player-death-m.patch} | 0 ...0281-place-end-crystal-on-any-block.patch} | 2 +- ...able-the-copper-oxidation-proximity.patch} | 2 +- ...3-register-minecraft-debug-commands.patch} | 0 ...Configurable-villager-search-radius.patch} | 41 +- ...-to-make-ravagers-afraid-of-rabbits.patch} | 2 +- ...=> 0286-config-for-startup-commands.patch} | 4 +- ...onfig-to-reverse-bubble-column-flow.patch} | 0 ...tch => 0288-Adopt-MaterialRerouting.patch} | 0 ...rtHinderedEvent-when-attempting-to-.patch} | 0 ... 0290-ItemStack-convenience-methods.patch} | 0 109 files changed, 427 insertions(+), 1177 deletions(-) rename patches/server/{0248-Remove-Mojang-Profiler.patch => 0247-Remove-Mojang-Profiler.patch} (91%) delete mode 100644 patches/server/0247-Remove-Timings.patch rename patches/server/{0249-Add-more-logger-output-for-invalid-movement-kicks.patch => 0248-Add-more-logger-output-for-invalid-movement-kicks.patch} (92%) rename patches/server/{0250-Add-Bee-API.patch => 0249-Add-Bee-API.patch} (100%) rename patches/server/{0251-Debug-Marker-API.patch => 0250-Debug-Marker-API.patch} (97%) rename patches/server/{0252-mob-spawning-option-to-ignore-creative-players.patch => 0251-mob-spawning-option-to-ignore-creative-players.patch} (90%) rename patches/server/{0253-Add-skeleton-bow-accuracy-option.patch => 0252-Add-skeleton-bow-accuracy-option.patch} (97%) rename patches/server/{0254-Add-death-screen-API.patch => 0253-Add-death-screen-API.patch} (100%) rename patches/server/{0255-Implement-ram-and-rambar-commands.patch => 0254-Implement-ram-and-rambar-commands.patch} (98%) rename patches/server/{0256-Configurable-block-blast-resistance.patch => 0255-Configurable-block-blast-resistance.patch} (100%) rename patches/server/{0257-Configurable-block-fall-damage-modifiers.patch => 0256-Configurable-block-fall-damage-modifiers.patch} (96%) rename patches/server/{0258-Language-API.patch => 0257-Language-API.patch} (93%) rename patches/server/{0259-Milk-Keeps-Beneficial-Effects.patch => 0258-Milk-Keeps-Beneficial-Effects.patch} (93%) rename patches/server/{0260-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0259-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0261-Add-log-suppression-for-LibraryLoader.patch => 0260-Add-log-suppression-for-LibraryLoader.patch} (100%) rename patches/server/{0262-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (100%) rename patches/server/{0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0262-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (96%) rename patches/server/{0264-Fire-Immunity-API.patch => 0263-Fire-Immunity-API.patch} (97%) rename patches/server/{0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0264-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (93%) rename patches/server/{0266-Added-got-ram-event.patch => 0265-Added-got-ram-event.patch} (100%) rename patches/server/{0267-Log-skipped-entity-s-position.patch => 0266-Log-skipped-entity-s-position.patch} (86%) rename patches/server/{0268-End-Crystal-Cramming.patch => 0267-End-Crystal-Cramming.patch} (96%) rename patches/server/{0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0268-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (97%) rename patches/server/{0270-Add-attribute-clamping-and-armor-limit-config.patch => 0269-Add-attribute-clamping-and-armor-limit-config.patch} (100%) rename patches/server/{0271-Config-to-remove-explosion-radius-clamp.patch => 0270-Config-to-remove-explosion-radius-clamp.patch} (96%) rename patches/server/{0272-bonemealable-sugarcane-cactus-and-netherwart.patch => 0271-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0273-Add-PreExplodeEvents.patch => 0272-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0274-Improve-output-of-plugins-command.patch => 0273-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0275-Make-GUI-Great-Again.patch => 0274-Make-GUI-Great-Again.patch} (99%) rename patches/server/{0276-Stored-Bee-API.patch => 0275-Stored-Bee-API.patch} (100%) rename patches/server/{0277-Shears-can-defuse-TNT.patch => 0276-Shears-can-defuse-TNT.patch} (100%) rename patches/server/{0278-Explorer-Map-API.patch => 0277-Explorer-Map-API.patch} (100%) rename patches/server/{0279-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0278-Option-Ocelot-Spawn-Under-Sea-Level.patch} (95%) rename patches/server/{0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0279-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (100%) rename patches/server/{0281-Add-option-for-always-showing-item-in-player-death-m.patch => 0280-Add-option-for-always-showing-item-in-player-death-m.patch} (100%) rename patches/server/{0282-place-end-crystal-on-any-block.patch => 0281-place-end-crystal-on-any-block.patch} (96%) rename patches/server/{0283-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0282-Add-option-to-disable-the-copper-oxidation-proximity.patch} (96%) rename patches/server/{0284-register-minecraft-debug-commands.patch => 0283-register-minecraft-debug-commands.patch} (100%) rename patches/server/{0285-Configurable-villager-search-radius.patch => 0284-Configurable-villager-search-radius.patch} (53%) rename patches/server/{0286-option-to-make-ravagers-afraid-of-rabbits.patch => 0285-option-to-make-ravagers-afraid-of-rabbits.patch} (96%) rename patches/server/{0287-config-for-startup-commands.patch => 0286-config-for-startup-commands.patch} (93%) rename patches/server/{0288-Config-to-reverse-bubble-column-flow.patch => 0287-Config-to-reverse-bubble-column-flow.patch} (100%) rename patches/server/{0289-Adopt-MaterialRerouting.patch => 0288-Adopt-MaterialRerouting.patch} (100%) rename patches/server/{0290-Fire-EntityTeleportHinderedEvent-when-attempting-to-.patch => 0289-Fire-EntityTeleportHinderedEvent-when-attempting-to-.patch} (100%) rename patches/server/{0291-ItemStack-convenience-methods.patch => 0290-ItemStack-convenience-methods.patch} (100%) diff --git a/gradle.properties b/gradle.properties index 16ea87bd1..e3c257238 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.3-R0.1-SNAPSHOT mcVersion = 1.21.3 -paperCommit = 09718757bfae5296edbd61b70938fffd2b11f1a2 +paperCommit = 6288adb001b71a2f2a0a1866fc406016ada06bb5 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0004-Purpur-config-files.patch b/patches/api/0004-Purpur-config-files.patch index f0645df75..d47595f4b 100644 --- a/patches/api/0004-Purpur-config-files.patch +++ b/patches/api/0004-Purpur-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 20750c09d819d62f32491db8672936b929e1098e..959d6ec728ac6cb4d0b8e31056ab3a417c684a92 100644 +index 6246251caf2c6f025c824b8e7a944b8d48751fa1..5dc0529a49d67e6f3ebb89edb3b5798b2bc5fb49 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2214,6 +2214,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2265,6 +2265,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/patches/api/0012-Bring-back-server-name.patch b/patches/api/0012-Bring-back-server-name.patch index 90344c35f..d0c7b7556 100644 --- a/patches/api/0012-Bring-back-server-name.patch +++ b/patches/api/0012-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 2d466b308b2f8bd31c50f5d05416eadf20c9cb71..1f60816b6cd7a7bde13a49a0440ece2eb531fcd0 100644 +index e20e4239a5a1f952e1c70e899549989d5e42f73c..f34df50f0e3ab8b986354476037c22fa953141c2 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2869,4 +2869,15 @@ public final class Bukkit { +@@ -2921,4 +2921,15 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -25,10 +25,10 @@ index 2d466b308b2f8bd31c50f5d05416eadf20c9cb71..1f60816b6cd7a7bde13a49a0440ece2e + // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 959d6ec728ac6cb4d0b8e31056ab3a417c684a92..a300a50fc32497d9a33e3caa8142fb1f52d71afc 100644 +index 5dc0529a49d67e6f3ebb89edb3b5798b2bc5fb49..f1aa030319ed85607d74a80519f2eadde508ae46 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2515,4 +2515,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2566,4 +2566,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ boolean isOwnedByCurrentRegion(@NotNull Entity entity); // Paper end - Folia region threading API diff --git a/patches/api/0014-Lagging-threshold.patch b/patches/api/0014-Lagging-threshold.patch index 3ca1381d3..91c69346b 100644 --- a/patches/api/0014-Lagging-threshold.patch +++ b/patches/api/0014-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 1f60816b6cd7a7bde13a49a0440ece2eb531fcd0..5fe1896c9d8c5848b1ba1220e52cbe4cfae75603 100644 +index f34df50f0e3ab8b986354476037c22fa953141c2..8613a8c752d1e38e53582462c7b1fd137f2093b2 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2879,5 +2879,14 @@ public final class Bukkit { +@@ -2931,5 +2931,14 @@ public final class Bukkit { public static String getServerName() { return server.getServerName(); } @@ -24,10 +24,10 @@ index 1f60816b6cd7a7bde13a49a0440ece2eb531fcd0..5fe1896c9d8c5848b1ba1220e52cbe4c // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index a300a50fc32497d9a33e3caa8142fb1f52d71afc..7bef0845de3a3e51b375df735520ac8cc0f08636 100644 +index f1aa030319ed85607d74a80519f2eadde508ae46..ce85e1fd5ae1403a043d9482b3ed4b8cce5baff9 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2523,5 +2523,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2574,5 +2574,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull String getServerName(); diff --git a/patches/api/0032-Added-the-ability-to-add-combustible-items.patch b/patches/api/0032-Added-the-ability-to-add-combustible-items.patch index 4246762ec..689c4fc7c 100644 --- a/patches/api/0032-Added-the-ability-to-add-combustible-items.patch +++ b/patches/api/0032-Added-the-ability-to-add-combustible-items.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Added the ability to add combustible items diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 5fe1896c9d8c5848b1ba1220e52cbe4cfae75603..676cddfc8ae317ed750701af06964a22a0c03e10 100644 +index 8613a8c752d1e38e53582462c7b1fd137f2093b2..b08482b4e9f5d62882512eada787e876c4c21746 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2888,5 +2888,24 @@ public final class Bukkit { +@@ -2940,5 +2940,24 @@ public final class Bukkit { public static boolean isLagging() { return server.isLagging(); } @@ -34,10 +34,10 @@ index 5fe1896c9d8c5848b1ba1220e52cbe4cfae75603..676cddfc8ae317ed750701af06964a22 // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 7bef0845de3a3e51b375df735520ac8cc0f08636..dd90bdfdf82073f87a9dfda92f743b6682d4a1b8 100644 +index ce85e1fd5ae1403a043d9482b3ed4b8cce5baff9..5c0dbd534aaab560a4f327f48e1359de0bf7d3c9 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2530,5 +2530,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2581,5 +2581,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @return True if lagging */ boolean isLagging(); diff --git a/patches/api/0037-Remove-Timings.patch b/patches/api/0037-Remove-Timings.patch index 8671481c1..5087679a8 100644 --- a/patches/api/0037-Remove-Timings.patch +++ b/patches/api/0037-Remove-Timings.patch @@ -71,7 +71,7 @@ index 4195efcfe044618052bb03dea34a4fb2ca7c44f0..8709c955bac34bc546a8e022cfac808b void close(); } diff --git a/src/main/java/co/aikar/timings/Timings.java b/src/main/java/co/aikar/timings/Timings.java -index e81d0bc309de877ed2b5da6122f55c162e9b5f10..3d663104c8e3089abdb9dc4d7309f873ac182e98 100644 +index 95b7cdf0677ef71e6885fa78aa5c75bb500f5f53..27a02f0c3261067d8e4ee6169c62cecbbfe50d42 100644 --- a/src/main/java/co/aikar/timings/Timings.java +++ b/src/main/java/co/aikar/timings/Timings.java @@ -124,7 +124,7 @@ public final class Timings { @@ -83,23 +83,17 @@ index e81d0bc309de877ed2b5da6122f55c162e9b5f10..3d663104c8e3089abdb9dc4d7309f873 return timing; } -@@ -145,9 +145,11 @@ public final class Timings { - * @param enabled Should timings be reported +@@ -146,7 +146,7 @@ public final class Timings { */ public static void setTimingsEnabled(boolean enabled) { -- timingsEnabled = enabled; -- warnAboutDeprecationOnEnable(); -- reset(); -+ // Purpur start - we don't do that here... -+ timingsEnabled = false; -+ //warnAboutDeprecationOnEnable(); -+ //reset(); -+ // Purpur end + if (enabled && !warnedAboutDeprecationOnEnable) { +- Bukkit.getLogger().severe(PlainTextComponentSerializer.plainText().serialize(deprecationMessage())); ++ //Bukkit.getLogger().severe(PlainTextComponentSerializer.plainText().serialize(deprecationMessage())); + warnedAboutDeprecationOnEnable = true; + } } - - private static void warnAboutDeprecationOnEnable() { diff --git a/src/main/java/co/aikar/timings/TimingsCommand.java b/src/main/java/co/aikar/timings/TimingsCommand.java -index 95d87c9dbf2b237787294dfbe7fed87a36e6dedf..9e165525c4c4c07c783ae2899e07c37ae49ec2de 100644 +index b83e5ff7ada8771fdf27ba9807c77ba6a4ce12da..f28eec202237461cb489a2b13289d813381a25bc 100644 --- a/src/main/java/co/aikar/timings/TimingsCommand.java +++ b/src/main/java/co/aikar/timings/TimingsCommand.java @@ -47,7 +47,7 @@ public class TimingsCommand extends BukkitCommand { @@ -111,24 +105,19 @@ index 95d87c9dbf2b237787294dfbe7fed87a36e6dedf..9e165525c4c4c07c783ae2899e07c37a this.setPermission("bukkit.command.timings"); } -@@ -56,8 +56,14 @@ public class TimingsCommand extends BukkitCommand { - if (!testPermission(sender)) { +@@ -57,7 +57,10 @@ public class TimingsCommand extends BukkitCommand { return true; } -- if (false) { + if (true) { - sender.sendMessage(Timings.deprecationMessage()); -+ // Purpur start -+ if (true) { + net.kyori.adventure.text.minimessage.MiniMessage mm = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage(); + sender.sendMessage(mm.deserialize("Purpur has removed timings to save your performance. Please use /spark instead")); + sender.sendMessage(mm.deserialize("For more information, view its documentation at")); -+ sender.sendMessage(mm.deserialize("https://spark.lucko.me/docs/Command-Usage")); -+ return true; -+ // Purpur end ++ sender.sendMessage(mm.deserialize("https://spark.lucko.me/docs/Command-Usage")); // Purpur + return true; } if (args.length < 1) { - sender.sendMessage(text("Usage: " + this.usageMessage, NamedTextColor.RED)); -@@ -117,7 +123,7 @@ public class TimingsCommand extends BukkitCommand { +@@ -118,7 +121,7 @@ public class TimingsCommand extends BukkitCommand { Preconditions.checkNotNull(args, "Arguments cannot be null"); Preconditions.checkNotNull(alias, "Alias cannot be null"); diff --git a/patches/api/0039-Debug-Marker-API.patch b/patches/api/0039-Debug-Marker-API.patch index dd22267a7..24065fe9d 100644 --- a/patches/api/0039-Debug-Marker-API.patch +++ b/patches/api/0039-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 676cddfc8ae317ed750701af06964a22a0c03e10..b3667b1699f6ec23697a65cd8c0cb18b07e6675f 100644 +index b08482b4e9f5d62882512eada787e876c4c21746..3a71f8fe73a2309f57cb06dedf204d3e37b46b03 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2907,5 +2907,89 @@ public final class Bukkit { +@@ -2959,5 +2959,89 @@ public final class Bukkit { public static void removeFuel(@NotNull Material material) { server.removeFuel(material); } @@ -99,10 +99,10 @@ index 676cddfc8ae317ed750701af06964a22a0c03e10..b3667b1699f6ec23697a65cd8c0cb18b // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index dd90bdfdf82073f87a9dfda92f743b6682d4a1b8..bda870841507e3ce728064e446cf92caa2d803a1 100644 +index 5c0dbd534aaab560a4f327f48e1359de0bf7d3c9..eb29794f6ca2efc9cde4dd1685822f9a3a73f3b9 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2545,5 +2545,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2596,5 +2596,75 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi * @param material The material that will no longer be a fuel */ public void removeFuel(@NotNull Material material); diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 7ecd60403..3c84f13d8 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -254,10 +254,10 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee @Override diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 5fc88196b2c873427c817e9802ad3b12009f265f..4178f48c1614af8e6796cf07fd018b9c6e67dcd0 100644 +index 6fef86e47e37eab6721cfd67d494afb25a2ded68..c914e1e13c4f64f24efa5f825e58efb69632bfa6 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -@@ -492,7 +492,7 @@ public class CraftScheduler implements BukkitScheduler { +@@ -491,7 +491,7 @@ public class CraftScheduler implements BukkitScheduler { this.parsePending(); } else { // this.debugTail = this.debugTail.setNext(new CraftAsyncDebugger(this.currentTick + CraftScheduler.RECENT_TICKS, task.getOwner(), task.getTaskClass())); // Paper @@ -267,11 +267,11 @@ index 5fc88196b2c873427c817e9802ad3b12009f265f..4178f48c1614af8e6796cf07fd018b9c // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index bc53c263682ada9eebcaccc13e741844d310a7a6..8a96f77d16eb0c977fd6212bece419ef4860e95e 100644 +index 05a62b2cf9ca8e0141274bd7f44ef8fb703466d1..fcb5bc76955edd773488dd3e476ea5e6fd09ca9b 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -489,7 +489,7 @@ public final class CraftMagicNumbers implements UnsafeValues { - +@@ -494,7 +494,7 @@ public final class CraftMagicNumbers implements UnsafeValues { + // Paper start @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { - return new com.destroystokyo.paper.PaperVersionFetcher(); diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch index 5dda2ad22..1f2b4dead 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -72,10 +72,10 @@ index 13bd145b1e8006a53c22f5dc0c78f29b540c7663..ae2d9c91afe13d07fd0de6d455b90a2a boolean flag1 = this.source.acceptsSuccess() && !this.silent; boolean flag2 = broadcastToOps && this.source.shouldInformAdmins() && !this.silent; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index f8ee4b6c481d3fe15f48bf4a93696dd23e4f01a4..7bd2c48cecfc07b95798f09d8f8b3e1e826651ea 100644 +index 17a158ff6ce6520b69a5a0032ba4c05449dd0cf8..c4d6ffd9b1afee8405914bda5834bb3e7d909811 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -237,6 +237,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -235,6 +235,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics @@ -92,7 +92,7 @@ index f8ee4b6c481d3fe15f48bf4a93696dd23e4f01a4..7bd2c48cecfc07b95798f09d8f8b3e1e this.setPvpAllowed(dedicatedserverproperties.pvp); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 044985030607bc20a61666dee7dd2659ae4553b5..580ddacce37e50e392999d45fdfa9f42f555aa6a 100644 +index 022de445bbbb869c38be4972c98dcf1c665539ec..eff31601c2fd692a129b6990d9f3d2969ea8bbdb 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -174,6 +174,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -100,10 +100,10 @@ index 044985030607bc20a61666dee7dd2659ae4553b5..580ddacce37e50e392999d45fdfa9f42 public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray + public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur - public final co.aikar.timings.WorldTimingsHandler timings; // Paper public static BlockPos lastPhysicsProblem; // Spigot private org.spigotmc.TickLimiter entityLimiter; -@@ -843,6 +844,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + private org.spigotmc.TickLimiter tileLimiter; +@@ -842,6 +843,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl // Paper end - getblock optimisations - cache world height/sections this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -112,10 +112,10 @@ index 044985030607bc20a61666dee7dd2659ae4553b5..580ddacce37e50e392999d45fdfa9f42 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 742d4cd3b42c1f4807c8ecb27ffa6df905d7f0ac..db8f42d4b9f434641df67c6f6cc272a8820a8094 100644 +index 9f9eefc7346838a9effcda861cecd098092efb0f..95946df639196063e0f9ac6788a8a5c7050e13d8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1075,6 +1075,7 @@ public final class CraftServer implements Server { +@@ -1074,6 +1074,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -123,7 +123,7 @@ index 742d4cd3b42c1f4807c8ecb27ffa6df905d7f0ac..db8f42d4b9f434641df67c6f6cc272a8 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1090,6 +1091,7 @@ public final class CraftServer implements Server { +@@ -1089,6 +1090,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -131,7 +131,7 @@ index 742d4cd3b42c1f4807c8ecb27ffa6df905d7f0ac..db8f42d4b9f434641df67c6f6cc272a8 } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1107,6 +1109,7 @@ public final class CraftServer implements Server { +@@ -1106,6 +1108,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -139,7 +139,7 @@ index 742d4cd3b42c1f4807c8ecb27ffa6df905d7f0ac..db8f42d4b9f434641df67c6f6cc272a8 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2972,6 +2975,18 @@ public final class CraftServer implements Server { +@@ -3009,6 +3012,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch index 6e9554e5f..dc7853d70 100644 --- a/patches/server/0003-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8ceeebb561046933cba0725e15732fa074226884..eb6f95a37b26ac077423accc93492d9957456a1a 100644 +index 4e4e5b7e8c387cf13cf5bc5e39d334c3222c9103..8640965d238d2983942ba3a3f08b048e84656cdd 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -323,6 +323,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -329,6 +329,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event diff --git a/patches/server/0006-Component-related-conveniences.patch b/patches/server/0006-Component-related-conveniences.patch index 8945cc0cd..dd6b39e65 100644 --- a/patches/server/0006-Component-related-conveniences.patch +++ b/patches/server/0006-Component-related-conveniences.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index eb6f95a37b26ac077423accc93492d9957456a1a..894f330399282c9db0b5c5dadc1d8502a06bac3e 100644 +index 8640965d238d2983942ba3a3f08b048e84656cdd..2de732451096f13d5df160500267cb2db0101c63 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2246,6 +2246,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2252,6 +2252,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -35,7 +35,7 @@ index eb6f95a37b26ac077423accc93492d9957456a1a..894f330399282c9db0b5c5dadc1d8502 @Override public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); -@@ -2470,6 +2490,20 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2476,6 +2496,20 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple return new CommandSourceStack(this.commandSource(), this.position(), this.getRotationVector(), this.serverLevel(), this.getPermissionLevel(), this.getName().getString(), this.getDisplayName(), this.server, this); } @@ -57,7 +57,7 @@ index eb6f95a37b26ac077423accc93492d9957456a1a..894f330399282c9db0b5c5dadc1d8502 this.sendSystemMessage(message, false); } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 511e7254d938733aca508efd5de82e61678c7620..75e5e540f03d28b64fa5fef1f342a157598c3fa7 100644 +index cf42042c754b30e41c0ec8a6a15195369bdbd199..0423eb224f21ad482d7bc9916f8f7597d80060d4 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -985,6 +985,20 @@ public abstract class PlayerList { diff --git a/patches/server/0007-Ridables.patch b/patches/server/0007-Ridables.patch index 918bad13d..dd836eda0 100644 --- a/patches/server/0007-Ridables.patch +++ b/patches/server/0007-Ridables.patch @@ -22,22 +22,22 @@ index f58a94efafbc01d402cd03a108bb90f60930a316..21ea63da99c5b3e2e1ab9cc1049c903b super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index de80ac827c8ac3630d68b73cb425d4b56f7d2cd7..42b18348a27fa74f042f906eb58785b1b6c5ae23 100644 +index af7c6f56444c0e495fd39da872f8030199afc634..02220b87234d32518daffca6c76db7d5a8c13464 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1854,6 +1854,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent +@@ -1844,6 +1844,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers + worldserver.updateLagCompensationTick(); // Paper - lag compensation + worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur gameprofilerfiller.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a7420e4522e0dff72ce7f8a791b9cd4bfa270106..0fa5e0c80ad09e03452c4d412390cb8f52060c01 100644 +index e65cfb1132f5f0c9e1fa5ae4a46a8abed0c56be1..43c976c5b61f26662d6e57b5cd39c3e153985db3 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -231,6 +231,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -230,6 +230,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe public final UUID uuid; public boolean hasPhysicsEvent = true; // Paper - BlockPhysicsEvent public boolean hasEntityMoveEvent; // Paper - Add EntityMoveEvent @@ -46,10 +46,10 @@ index a7420e4522e0dff72ce7f8a791b9cd4bfa270106..0fa5e0c80ad09e03452c4d412390cb8f public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 894f330399282c9db0b5c5dadc1d8502a06bac3e..d7b828937e58eea5f095863129a0844f25a25336 100644 +index 2de732451096f13d5df160500267cb2db0101c63..b345e0eb7145b5a3800dc9c73508e53d83ea0171 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1026,6 +1026,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1032,6 +1032,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this); @@ -66,10 +66,10 @@ index 894f330399282c9db0b5c5dadc1d8502a06bac3e..d7b828937e58eea5f095863129a0844f 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 eef96e946b80064fe211039a65db4192ea7a52d3..352ade7acc9052e4d74ef840e085a86f24c66c00 100644 +index c4b016a2fb5c79fb3f191e243712bee7cbe5cd2c..e670a3d04fca7bea2bc732d10e7865b76e396586 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2748,6 +2748,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2820,6 +2820,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -190,10 +190,10 @@ index b851c3ee1426bc0a259bf6c4a662af0c9883dd71..7c11b5e73d4f3c0be7c467f7522c2d97 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 22b3d3d945cbddae25abfca7d900324c79d32293..7f896777fcff72230142fbe231471782eed4b6c7 100644 +index 0831d69d6ac1aa112dfe8243b01adcf5e8eba6a0..56613c25850f89d125cb213d37fd5fed9deee7f7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -248,9 +248,9 @@ public abstract class LivingEntity extends Entity implements Attackable { protected int deathScore; public float lastHurt; public boolean jumping; @@ -206,7 +206,7 @@ index 22b3d3d945cbddae25abfca7d900324c79d32293..7f896777fcff72230142fbe231471782 protected int lerpSteps; protected double lerpX; protected double lerpY; -@@ -327,7 +327,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -325,7 +325,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.lastClimbablePos = Optional.empty(); this.activeLocationDependentEnchantments = new EnumMap(EquipmentSlot.class); this.appliedScale = 1.0F; @@ -215,7 +215,7 @@ index 22b3d3d945cbddae25abfca7d900324c79d32293..7f896777fcff72230142fbe231471782 this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -377,6 +377,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -375,6 +375,7 @@ public abstract class LivingEntity extends Entity implements Attackable { public static AttributeSupplier.Builder createLivingAttributes() { return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS).add(Attributes.MAX_ABSORPTION).add(Attributes.STEP_HEIGHT).add(Attributes.SCALE).add(Attributes.GRAVITY).add(Attributes.SAFE_FALL_DISTANCE).add(Attributes.FALL_DAMAGE_MULTIPLIER).add(Attributes.JUMP_STRENGTH).add(Attributes.OXYGEN_BONUS).add(Attributes.BURNING_TIME).add(Attributes.EXPLOSION_KNOCKBACK_RESISTANCE).add(Attributes.WATER_MOVEMENT_EFFICIENCY).add(Attributes.MOVEMENT_EFFICIENCY).add(Attributes.ATTACK_KNOCKBACK); } @@ -223,7 +223,7 @@ index 22b3d3d945cbddae25abfca7d900324c79d32293..7f896777fcff72230142fbe231471782 @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -3671,8 +3672,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3669,8 +3670,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); gameprofilerfiller.pop(); // Paper start - Add EntityMoveEvent @@ -236,7 +236,7 @@ index 22b3d3d945cbddae25abfca7d900324c79d32293..7f896777fcff72230142fbe231471782 Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3682,6 +3685,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3680,6 +3683,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -5112,7 +5112,7 @@ index 179886dcbda29c5cdb7dbd43e44951ae38d9df96..cf1797c6ba877c510bba5c8016e57003 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 6c60bb4f4d1133844a4232df518c062216847fdc..c9f5047bfa48c12a9090cb8da4bb9045e38e8f89 100644 +index 1e98f68e51618606f1178c12be77c1a945362630..4046f911b1f0da909dbb4d8ff856fb869f61a0f8 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -602,6 +602,15 @@ public class CraftEventFactory { diff --git a/patches/server/0008-Configurable-entity-base-attributes.patch b/patches/server/0008-Configurable-entity-base-attributes.patch index 195772a94..e6f0e7cd4 100644 --- a/patches/server/0008-Configurable-entity-base-attributes.patch +++ b/patches/server/0008-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a897a9f371d44cc6d1fcc19f2da5450e61858527..e8f21091fe1d6043dcc4588d571f20f7bbda0901 100644 +index aa73875d8cb701d233ffa79c9bda4b7b474ba667..90434afec7a896473624901c6b00bf7c81572930 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -176,7 +176,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,10 +34,10 @@ index 7c11b5e73d4f3c0be7c467f7522c2d974ab330f3..27aee968718af1ae78e2076ddc890114 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7f896777fcff72230142fbe231471782eed4b6c7..2e6701b5dc8bd67cf018b65a7ce5cb2ed6925aa0 100644 +index 56613c25850f89d125cb213d37fd5fed9deee7f7..0b1d31bcbe398ecd2e1ddd881c2f602a1a4f73d9 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -328,6 +328,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -326,6 +326,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.activeLocationDependentEnchantments = new EnumMap(EquipmentSlot.class); this.appliedScale = 1.0F; this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur @@ -45,7 +45,7 @@ index 7f896777fcff72230142fbe231471782eed4b6c7..2e6701b5dc8bd67cf018b65a7ce5cb2e this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -342,6 +343,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -340,6 +341,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (Tag) dynamicopsnbt.emptyMap())))); } @@ -411,7 +411,7 @@ index 3a0b71cad2c68e972c5989bd37de83953335e324..607c6c5fa38892d8c1d1f9fffc9ccc86 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 93c16d7522d76f35de2c87cab0e7db3d6f7ab6c7..db0d03fe2d2891efb3284d5c597d7c8279f2db94 100644 +index 4144d82ca0a9c5b5384d4ab080013ad76014199b..6275cb4ca2b06d8b1b3d53a2b79115bd36da4129 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 AgeableWaterCreature { @@ -667,7 +667,7 @@ index 0ec18aecb7774db219a8ca5ed60ae999b4b588a9..b0392780b35866bf1903f49cb16c4ab7 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index f373728d357faf68a576dc2f6363e36f5ac2a4b4..eab57ab99168b1b9ae8df6c8b2b6dd623b1871fb 100644 +index 29b4c4ba7e80fe58a005064da4b0479e367d90b0..f9774491bd49bb37d3581cebbcedfc1878cf15b5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -123,6 +123,21 @@ public class Llama extends AbstractChestedHorse implements VariantHolder implements FeatureElement, EntityTypeT @@ -25,7 +25,7 @@ index e56050bef4a5aaa0fca17192dab4cf5e6a55fbae..d0efef43b71298491b2e03b9ce550572 public static ResourceLocation getKey(EntityType type) { return BuiltInRegistries.ENTITY_TYPE.getKey(type); } -@@ -613,6 +623,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -604,6 +614,16 @@ public class EntityType implements FeatureElement, EntityTypeT return this.category; } diff --git a/patches/server/0024-Zombie-horse-naturally-spawn.patch b/patches/server/0024-Zombie-horse-naturally-spawn.patch index e1c3b8780..4b97fd4ba 100644 --- a/patches/server/0024-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0024-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index fc400624a9896f8fd29984c21df70e67b0c32c1d..c4d8ef23a5e384ce554cc3e63e7be3e027d60e44 100644 +index 43c976c5b61f26662d6e57b5cd39c3e153985db3..943ef063efa000da0810b079b47ec18ed2aa5a63 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -934,10 +934,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -932,10 +932,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses if (flag1) { @@ -30,7 +30,7 @@ index fc400624a9896f8fd29984c21df70e67b0c32c1d..c4d8ef23a5e384ce554cc3e63e7be3e0 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 22248cd0752812739df8e7ab911ef04b3d2ed458..3b6089eaf8a9af932c7bcc9a37fc7c077eb79870 100644 +index 0fe6b4e57a57388df51893f22c8e8cb1be633623..80eb2df74d226f7419354e73b6350f5444c8ae0b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1644,6 +1644,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0039-Minecart-settings-and-WASD-controls.patch b/patches/server/0039-Minecart-settings-and-WASD-controls.patch index ae3388dab..282aa5301 100644 --- a/patches/server/0039-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0039-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f0a2c618fb2040282406af90ff0d2ac5a63b0c35..9b7cbd9ece37d7a5f5532861c1b226ca75eb2345 100644 +index 3403d74ec3ef30ec110031f3972a8482eea0bf41..cc586ae7c58ff5a662c572af47e22468fe301152 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1435,6 +1435,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1441,6 +1441,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple if (this.isInvulnerableTo(world, source)) { return false; } else { diff --git a/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch index d2e309bfb..84753183c 100644 --- a/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0040-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 2e6701b5dc8bd67cf018b65a7ce5cb2ed6925aa0..8ebd43c8088523396a4f46b8b0083f91e2b55e27 100644 +index 0b1d31bcbe398ecd2e1ddd881c2f602a1a4f73d9..4fc0aa48e4e0e291ba3f8291a2dfa671fbe553e5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1910,6 +1910,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1908,6 +1908,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(world); // CraftBukkit - from below if (this.shouldDropLoot() && world.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index 2e6701b5dc8bd67cf018b65a7ce5cb2ed6925aa0..8ebd43c8088523396a4f46b8b0083f91 this.dropFromLootTable(world, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1918,6 +1919,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1916,6 +1917,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(world, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -25,7 +25,7 @@ index 2e6701b5dc8bd67cf018b65a7ce5cb2ed6925aa0..8ebd43c8088523396a4f46b8b0083f91 // 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 2591b4f0d0e4e4d9e77efb821c9ae775182713b6..830ba18f1695bbf4099a9579166e29618206ba83 100644 +index a97dadd4c0b04833282f9fc484ef760da712974d..03f5aea7bc98984ced82c7dce93cc4ea4c48179f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,6 +96,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0043-Configurable-TPS-Catchup.patch b/patches/server/0043-Configurable-TPS-Catchup.patch index f0524be80..4bd58258f 100644 --- a/patches/server/0043-Configurable-TPS-Catchup.patch +++ b/patches/server/0043-Configurable-TPS-Catchup.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f702adb26c19a91b3874c773d540973296b97a97..8b92b8543eba058a86ca21024b7a95a607f753c3 100644 +index 941463daa771010031765818fcec4fe541b96659..a1ba1896963ab0127de00f5906351872760e5439 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1343,6 +1343,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return itemstack.isEmpty() || entity.getEquipmentSlotForItem(itemstack) == slot; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 364321ea60e256edb10fea8efe4bfb3cdf33f3fb..4b3727f9c4e4f1de2745e4984ad660b6a0ac7797 100644 +index cd90555354713be9a26c0a0abed43535a61281e8..680a89bff31861c25d76bf7ab59d87232228b34c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -219,6 +219,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0056-Add-5-second-tps-average-in-tps.patch b/patches/server/0056-Add-5-second-tps-average-in-tps.patch index 1e0949745..eea79596b 100644 --- a/patches/server/0056-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0056-Add-5-second-tps-average-in-tps.patch @@ -26,10 +26,10 @@ index 12b327eea95e0de9e9c39b7d039badee8ec46508..849ecc5af70901f1e40cb6c419f33f1c } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index b3fd8afe889b3eff5b2065de031f0852763250cd..498849b2efec782fed822dc3e6685f5e903fa828 100644 +index 5b917da2009c31f62a21b3064c865dc181986843..49ed4f9d930b50bb11a9ecbfff0b99ea2ccd29c7 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -325,7 +325,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pages, int slotId) { @@ -45,7 +45,7 @@ index 0ffad0fee921ac302f31894766594921751fbff9..62fdb1e8b84facec3ce69d5001e7d626 itemstack.set(DataComponents.WRITABLE_BOOK_CONTENT, new WritableBookContent(list1)); this.player.getInventory().setItem(slotId, CraftEventFactory.handleEditBookEvent(this.player, slotId, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) -@@ -1239,6 +1248,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1273,6 +1282,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } private void signBook(FilteredText title, List pages, int slotId) { @@ -57,7 +57,7 @@ index 0ffad0fee921ac302f31894766594921751fbff9..62fdb1e8b84facec3ce69d5001e7d626 ItemStack itemstack = this.player.getInventory().getItem(slotId); if (itemstack.has(DataComponents.WRITABLE_BOOK_CONTENT)) { -@@ -1246,10 +1260,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1280,10 +1294,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.remove(DataComponents.WRITABLE_BOOK_CONTENT); List> list1 = (List>) (List) pages.stream().map((filteredtext1) -> { // CraftBukkit - decompile error @@ -70,7 +70,7 @@ index 0ffad0fee921ac302f31894766594921751fbff9..62fdb1e8b84facec3ce69d5001e7d626 CraftEventFactory.handleEditBookEvent(this.player, slotId, itemstack, itemstack1); // CraftBukkit this.player.getInventory().setItem(slotId, itemstack); // CraftBukkit - event factory updates the hand book } -@@ -1259,6 +1273,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1293,6 +1307,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return this.player.isTextFilteringEnabled() ? Filterable.passThrough(message.filteredOrEmpty()) : Filterable.from(message); } diff --git a/patches/server/0069-Entity-lifespan.patch b/patches/server/0069-Entity-lifespan.patch index 665b52a43..749ed8586 100644 --- a/patches/server/0069-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 62fdb1e8b84facec3ce69d5001e7d626d74a37ce..8c1f21892a96ed1cf1ef8b76ff8a52f1a8caca6e 100644 +index fc3eda4b692482d95aade888e624ba0343a541f8..d6ba87cd80abe6126a21df0aafc208a8a2260322 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2783,6 +2783,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2855,6 +2855,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (this.player.canInteractWithEntity(axisalignedbb, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0D))) { // Paper - configurable lenience value for interact range @@ -17,7 +17,7 @@ index 62fdb1e8b84facec3ce69d5001e7d626d74a37ce..8c1f21892a96ed1cf1ef8b76ff8a52f1 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 cd456edd2caf087d1dbeb97d3373bd2bf9112fc2..17e6e4a858d3a2332c14d2860d2f5d1e87e1c629 100644 +index bc2380a71aa65c40f326c1f6bdf15ee25346ffee..8ce316292850353231e529f75630d3fde290a161 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -148,6 +148,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -94,7 +94,7 @@ index cd456edd2caf087d1dbeb97d3373bd2bf9112fc2..17e6e4a858d3a2332c14d2860d2f5d1e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a168eb5c1f08ad4def8421e298512c532ec06988..8832a5491303d4189155ec56f81e37f99efaa28e 100644 +index cc890a4ac7cb6fc24f5903538d0f002e1df09d37..1bf4fa7b9652347a48010a0713190aec9a5fc166 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -118,6 +118,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0070-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 index 663a55e78..2b894b42b 100644 --- a/patches/server/0070-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 9b7cbd9ece37d7a5f5532861c1b226ca75eb2345..76a4ccf07791a16abdc4396e8a91a93957e0b293 100644 +index cc586ae7c58ff5a662c572af47e22468fe301152..a0f3371520702a3a1643abd45bf6754336385397 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -3406,4 +3406,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3412,4 +3412,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,10 +36,10 @@ index 9b7cbd9ece37d7a5f5532861c1b226ca75eb2345..76a4ccf07791a16abdc4396e8a91a939 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a58c8ed64eab56c4a4a0688e0731a232fb5f7269..c0ac2801321ca1813804214cc0ceecc1b557865e 100644 +index e49b530e8bdcff5aacc693f6e859c9c98fd50a19..418456bb08e00c6a9af492bda4f0600921fc5b77 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -481,6 +481,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -479,6 +479,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (d1 < 0.0D) { d0 = this.level().getWorldBorder().getDamagePerBlock(); if (d0 > 0.0D) { diff --git a/patches/server/0071-Squid-EAR-immunity.patch b/patches/server/0071-Squid-EAR-immunity.patch index 70e1c5417..ebdfb0439 100644 --- a/patches/server/0071-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 20242b58cc3af8d58c51919d637ec258df308a60..5f686584f2f9205c3594daa52c4b3daf32f8e57b 100644 +index 0111b9e3484df5958ed5dee55a9b510ef4a1f35e..c0cb7399a1a8753bd5a5c390cb6f334d5aaf3907 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1571,6 +1571,7 @@ public class PurpurWorldConfig { @@ -25,10 +25,10 @@ index 20242b58cc3af8d58c51919d637ec258df308a60..5f686584f2f9205c3594daa52c4b3daf public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index bcb591ba54522ed70ca051429363f3a5517460af..ca05c37dad39808683429276d85d970b7cc63f82 100644 +index 64cf620bde9807d77658c9f17015445070a3e634..813b8aeb7bf39e03346fd9ca63c4c6498e162965 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -381,6 +381,7 @@ public class ActivationRange +@@ -377,6 +377,7 @@ public class ActivationRange */ public static boolean checkIfActive(Entity entity) { diff --git a/patches/server/0075-Totems-work-in-inventory.patch b/patches/server/0075-Totems-work-in-inventory.patch index 62aa91314..c87929005 100644 --- a/patches/server/0075-Totems-work-in-inventory.patch +++ b/patches/server/0075-Totems-work-in-inventory.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c0ac2801321ca1813804214cc0ceecc1b557865e..06ccf6daaf5e7affe505c75cdbf85c1c29c3ebf9 100644 +index 418456bb08e00c6a9af492bda4f0600921fc5b77..cccd99d642ea14eb175946656d4dead436268d01 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1709,6 +1709,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1707,6 +1707,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -28,7 +28,7 @@ index c0ac2801321ca1813804214cc0ceecc1b557865e..06ccf6daaf5e7affe505c75cdbf85c1c 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 0c8ec8f1f6a79a0764ff05d34b40cf18c5590862..bd3c6364051419544cc1c5db110920ad51c1dbc7 100644 +index dc158fefad2a9d0b9be693ba892ddd1fa5189e8e..c03ded82f52f53e8d0e7b138e2fa34f86f46f180 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -236,6 +236,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch index 72b1115e8..f74d9522e 100644 --- a/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0085-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 c4d8ef23a5e384ce554cc3e63e7be3e027d60e44..9538510ac96d97b8e3cdfcc9873bb3d274c351ad 100644 +index 943ef063efa000da0810b079b47ec18ed2aa5a63..54f7545f35ba615ac942c82a2602b9466646f012 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -588,7 +588,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -598,7 +598,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // CraftBukkit end this.tickTime = flag1; this.server = minecraftserver; @@ -59,7 +59,7 @@ index a728dcbf956f108f01c966c7531449a506a14a87..4c1378132201c1e5d1bc01f8c0cbba91 if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 119904f2c4e9f8c4b3596a26220833d457bb60df..668ea98aee2f74ff6ac961b61360fb2e48513ebf 100644 +index f82f5405f3ff0bc91806da3b1ffdeb30206b6297..9ddd1796c83a68e1837cbdfe8db0baf9e3b1fdfa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -70,6 +70,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0090-Configurable-daylight-cycle.patch b/patches/server/0090-Configurable-daylight-cycle.patch index 94e27d433..56f6f2a51 100644 --- a/patches/server/0090-Configurable-daylight-cycle.patch +++ b/patches/server/0090-Configurable-daylight-cycle.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable daylight cycle diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 498849b2efec782fed822dc3e6685f5e903fa828..b201fb88391a12a5bd569457cf25734d320bf2cb 100644 +index 49ed4f9d930b50bb11a9ecbfff0b99ea2ccd29c7..3c901f5597e4bb2a77168eb5ad1d14e13142983f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1853,7 +1853,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions public java.util.ArrayDeque redstoneUpdateInfos; // Paper - Faster redstone torch rapid clock removal; Move from Map in BlockRedstoneTorch to here @@ -95,7 +95,7 @@ index 82025f6dd73366a259418c2039638a6dcc6d4fc1..85ae5c9c873dab19f897fe50b70c62e3 public CraftWorld getWorld() { return this.world; } -@@ -845,6 +888,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -844,6 +887,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur @@ -104,7 +104,7 @@ index 82025f6dd73366a259418c2039638a6dcc6d4fc1..85ae5c9c873dab19f897fe50b70c62e3 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 0e05ebe9ee52033d86373bd2ad1c6f12503b3128..c02b8212cb56912e0eb244f47aa094c7879be89b 100644 +index c2d7b2787704614d2e3a3a8512a994e5434c093f..2640c1f0079f7f340e57d8f9e75f04185da064e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -113,6 +113,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0101-Add-boat-fall-damage-config.patch b/patches/server/0101-Add-boat-fall-damage-config.patch index 9724e020c..6c6962790 100644 --- a/patches/server/0101-Add-boat-fall-damage-config.patch +++ b/patches/server/0101-Add-boat-fall-damage-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 5f86f0b46e91ac41820931a9d64a7240d3ddd8d4..14640ed95dbbf99150ef1f41ff1046c2c034e552 100644 +index a0f3371520702a3a1643abd45bf6754336385397..0823fd91cbee711847c4a3d06f46c7d3b694833c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1435,7 +1435,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1441,7 +1441,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple if (this.isInvulnerableTo(world, source)) { return false; } else { @@ -27,7 +27,7 @@ index 5f86f0b46e91ac41820931a9d64a7240d3ddd8d4..14640ed95dbbf99150ef1f41ff1046c2 if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5f51c2dff32452ad5dda0623dda90da358fe322..d5a546191014dc1cc9ed8b314c67983b0401d37b 100644 +index 0ac20878dfa363c3a28b784e3cba8cba8874a105..13107decd92901bae038ca5bfa69a83adabd3e3d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -113,6 +113,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0110-Implement-TPSBar.patch b/patches/server/0110-Implement-TPSBar.patch index 012d07e2e..138640eb6 100644 --- a/patches/server/0110-Implement-TPSBar.patch +++ b/patches/server/0110-Implement-TPSBar.patch @@ -17,10 +17,10 @@ index 24c2568db30f970aed1a4897cfbc7d07297047d3..5d94b71bd54f99040b76cca74964a32d if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index b201fb88391a12a5bd569457cf25734d320bf2cb..4f639042a3036b3cba23052f4be66db0e1dd62b5 100644 +index 3c901f5597e4bb2a77168eb5ad1d14e13142983f..3c28590feaec355d94b1a8c7228c3b62e9d815ad 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1157,6 +1157,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop byteAllowed) { 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 f1a19476a..d93d8c92a 100644 --- a/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 06ccf6daaf5e7affe505c75cdbf85c1c29c3ebf9..7c60a938850e5db62022217168a075e2b88fa22d 100644 +index cccd99d642ea14eb175946656d4dead436268d01..beb573d8fdc5f9e07146a7bd4d7c51d596a791a1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1886,7 +1886,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1884,7 +1884,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper diff --git a/patches/server/0119-Fix-stuck-in-portals.patch b/patches/server/0119-Fix-stuck-in-portals.patch index 77d7801d1..4a91d7ded 100644 --- a/patches/server/0119-Fix-stuck-in-portals.patch +++ b/patches/server/0119-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d1a4eca112ad8698aa9025cec1b38bca01805e3f..c64b2386f35c55e3484df2d193f712a1728dc745 100644 +index a3d163500999dae1552da9cccea06d58f735c9cf..ddce8eb3ac5962c0e93c879ede1bbb34f7b72166 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1680,6 +1680,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1686,6 +1686,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -17,7 +17,7 @@ index d1a4eca112ad8698aa9025cec1b38bca01805e3f..c64b2386f35c55e3484df2d193f712a1 this.connection.internalTeleport(PositionMoveRotation.of(teleportTarget), teleportTarget.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 89d4d749336b2947b0ac12d7df140c0240f67636..a942f6b9404f72c1c0af1bfc2325ddbfd5e6f255 100644 +index ba080a23e88d6eafc2af97acef415c736eb1cc28..f90e6a515a0d614f0b784c4ee37819bc14bf3af3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3470,14 +3470,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -39,7 +39,7 @@ index 89d4d749336b2947b0ac12d7df140c0240f67636..a942f6b9404f72c1c0af1bfc2325ddbf } else { 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 63b38c9c0862a5bd00468024015e62d0485b2619..b700c52f74cbae8f99bc721b9b594845a1c1ee6d 100644 +index b1c53b3f490ee39184ce868bdb38eaa69e35e7f2..f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -325,6 +325,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0124-Dont-run-with-scissors.patch b/patches/server/0124-Dont-run-with-scissors.patch index c8bda99af..183bff580 100644 --- a/patches/server/0124-Dont-run-with-scissors.patch +++ b/patches/server/0124-Dont-run-with-scissors.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Dont run with scissors! inspired by https://modrinth.com/mod/dont-run-with-scissors diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d61c4cc0a4f957ef4bf2f7124644c63380e28473..c3fd22396eaf85ac4d7a0aeba67b5c26a748be4c 100644 +index a29a06a11fd44219742ee621fcd090e9cc710012..e3a67829d6d3e2594387e7e02ad619dc373f305a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1621,6 +1621,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1666,6 +1666,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.tryResetCurrentImpulseContext(); } @@ -23,7 +23,7 @@ index d61c4cc0a4f957ef4bf2f7124644c63380e28473..c3fd22396eaf85ac4d7a0aeba67b5c26 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1660,6 +1667,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1705,6 +1712,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } @@ -35,9 +35,9 @@ index d61c4cc0a4f957ef4bf2f7124644c63380e28473..c3fd22396eaf85ac4d7a0aeba67b5c26 + } + // Purpur end + - private boolean isPlayerCollidingWithAnythingNew(LevelReader world, AABB box, double newX, double newY, double newZ) { - AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ()); - Iterable iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); + // Paper start - optimise out extra getCubes + private boolean hasNewCollision(final ServerLevel world, final Entity entity, final AABB oldBox, final AABB newBox) { + final List collisionsBB = new java.util.ArrayList<>(); diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java index 99a7e9eb75231c15bd8bb24fbb4e296bc9fdedff..a375d40ec6365ba8704ba3ece22dd5b2de9857b5 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java diff --git a/patches/server/0125-One-Punch-Man.patch b/patches/server/0125-One-Punch-Man.patch index a59f27af2..3ead264f6 100644 --- a/patches/server/0125-One-Punch-Man.patch +++ b/patches/server/0125-One-Punch-Man.patch @@ -6,10 +6,10 @@ Subject: [PATCH] One Punch Man! inspired by https://modrinth.com/mod/creative-one-punch diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7c60a938850e5db62022217168a075e2b88fa22d..698340b3934a500ebd2cc50bc8818914d53af92d 100644 +index beb573d8fdc5f9e07146a7bd4d7c51d596a791a1..42755171ccaf9cb23494d3bd53154d934fe68a77 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1457,6 +1457,24 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1455,6 +1455,24 @@ public abstract class LivingEntity extends Entity implements Attackable { this.stopSleeping(); } @@ -35,7 +35,7 @@ index 7c60a938850e5db62022217168a075e2b88fa22d..698340b3934a500ebd2cc50bc8818914 if (amount < 0.0F) { amount = 0.0F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 77e6729051509bdf6d226206578a813b3e80cedc..bdf8bdf14cc54ddb44c6e6f7bc1572bb7920dd45 100644 +index dfea07d861779bc6f8c6041ac57bde1596a65e92..69f59d4d1cf30358f26f11e9c4cb9b8e2e6ce486 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -336,6 +336,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0127-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0127-Config-to-ignore-nearby-mobs-when-sleeping.patch index 0c5dfde44..154fb33c3 100644 --- a/patches/server/0127-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0127-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c64b2386f35c55e3484df2d193f712a1728dc745..8d4e50aade704403cd713506268a1711080f72a3 100644 +index ddce8eb3ac5962c0e93c879ede1bbb34f7b72166..813192b363dc59e2afa2289414726edf40123370 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1791,7 +1791,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1797,7 +1797,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple return entitymonster.isPreventingPlayerRest(this.serverLevel(), this); }); @@ -18,7 +18,7 @@ index c64b2386f35c55e3484df2d193f712a1728dc745..8d4e50aade704403cd713506268a1711 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 428fd6150856e3f247c37779891c5ccc92dddcc1..f032d27542b26797126a9b060fa52237349dbca5 100644 +index a53b1209743fc1944764436255bb1c8a195303d1..c3343c0ffcee58b8dffeef4f6ff14be2701df443 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -345,6 +345,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0136-Config-for-skipping-night.patch b/patches/server/0136-Config-for-skipping-night.patch index 631fc1726..5ace8f1a6 100644 --- a/patches/server/0136-Config-for-skipping-night.patch +++ b/patches/server/0136-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 8dd211d20a695164c2086c03c8b0237ba109fda4..29b8a57477032c85bc498e90af4bfb739926d03c 100644 +index 7715ecbe45e82079f5e2b2ad2bdf15a58f9a529c..bd2001cbc8aac2f00f643f1b98a42c4a0d0ec720 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -731,7 +731,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -741,7 +741,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; @@ -18,7 +18,7 @@ index 8dd211d20a695164c2086c03c8b0237ba109fda4..29b8a57477032c85bc498e90af4bfb73 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 3740c1390debbc660ecf31dee0dc7e58096bf1ba..c0341b91afa7eda863caec0395db2129dba59450 100644 +index fcadb8cd76d29c121c464ec8e712227034e770f6..25ab893d5c0e1fbe4260e980ba1f440f13b27bd3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -347,6 +347,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0138-Drowning-Settings.patch b/patches/server/0138-Drowning-Settings.patch index 50bb62067..5196693d5 100644 --- a/patches/server/0138-Drowning-Settings.patch +++ b/patches/server/0138-Drowning-Settings.patch @@ -5,7 +5,7 @@ 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 a942f6b9404f72c1c0af1bfc2325ddbfd5e6f255..58d9ad22790664d425d26b53f70fbc19e3963f65 100644 +index f90e6a515a0d614f0b784c4ee37819bc14bf3af3..ed34d94af712c945a35145bcb2d9603e5e6db1da 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3697,7 +3697,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -18,10 +18,10 @@ index a942f6b9404f72c1c0af1bfc2325ddbfd5e6f255..58d9ad22790664d425d26b53f70fbc19 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 698340b3934a500ebd2cc50bc8818914d53af92d..64e30f4b32484da95a5eb6d5556fdc8f66727410 100644 +index 42755171ccaf9cb23494d3bd53154d934fe68a77..86b964c6f3c2b259765feb9823701d9b04cd39d8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -493,7 +493,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -491,7 +491,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -30,7 +30,7 @@ index 698340b3934a500ebd2cc50bc8818914d53af92d..64e30f4b32484da95a5eb6d5556fdc8f this.setAirSupply(0); Vec3 vec3d = this.getDeltaMovement(); -@@ -505,7 +505,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -503,7 +503,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d0, this.getY() + d2, this.getZ() + d3, vec3d.x, vec3d.y, vec3d.z); } @@ -40,7 +40,7 @@ index 698340b3934a500ebd2cc50bc8818914d53af92d..64e30f4b32484da95a5eb6d5556fdc8f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dbaff51304eb9830ae2740e2274d7a5036880482..c0084a992ae74365e4da842795adee98ebd99a09 100644 +index f0e913ebf9903c54b8223e9082617a0f9a1ef5df..7115291fec1874558ab6cf3c520edeb6aef75b42 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -163,6 +163,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0152-Configurable-broadcast-settings.patch b/patches/server/0152-Configurable-broadcast-settings.patch index d170e4afa..8c3771183 100644 --- a/patches/server/0152-Configurable-broadcast-settings.patch +++ b/patches/server/0152-Configurable-broadcast-settings.patch @@ -17,10 +17,10 @@ index 0a16aa193ef24aa8f1716f9e089b8027fa3c0a3c..1e85c9318ede93b8e9fe548a8945324b // 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 a706fd393962973af8f0a88edd98deea235b8404..a3074c439b3255d2cfc174dbc7c5b01ef418a602 100644 +index 813192b363dc59e2afa2289414726edf40123370..2300d1e1b283efb897afba4cccd1d697400677a1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1335,6 +1335,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1341,6 +1341,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple })); PlayerTeam scoreboardteam = this.getTeam(); diff --git a/patches/server/0153-Configurable-mob-blindness.patch b/patches/server/0153-Configurable-mob-blindness.patch index 8428e8b59..2455108af 100644 --- a/patches/server/0153-Configurable-mob-blindness.patch +++ b/patches/server/0153-Configurable-mob-blindness.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Configurable mob blindness Ported from https://github.com/raltsmc/mobblindness diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 64e30f4b32484da95a5eb6d5556fdc8f66727410..e937eb4e89bf08e3fee8ea2ca0643b0206964de1 100644 +index 86b964c6f3c2b259765feb9823701d9b04cd39d8..0665b87872b8f5284d5947d68ca04a0850768a90 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1067,6 +1067,17 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1065,6 +1065,17 @@ public abstract class LivingEntity extends Entity implements Attackable { if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.PIGLIN && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.PIGLIN_BRUTE && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) { d0 *= 0.5D; } @@ -28,7 +28,7 @@ index 64e30f4b32484da95a5eb6d5556fdc8f66727410..e937eb4e89bf08e3fee8ea2ca0643b02 return d0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b7ea3706aa0a339c4197cbf6f62f1b9b7499002f..9ba71358ef10fcaf5339b7341483b037537a0f01 100644 +index f017a147789532dc4d8d2d6e4b4f4293d5c507b8..8be5ff1862e6681161d865a54addb1bdd9bd0425 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -137,6 +137,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0164-API-for-any-mob-to-burn-daylight.patch b/patches/server/0164-API-for-any-mob-to-burn-daylight.patch index 4e194f792..29730d65e 100644 --- a/patches/server/0164-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0164-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f3769da2422d98dec32ba252bde5d9467f1bd84f..d2f2301cff71b8ce64b803dadcb09610e8a2a289 100644 +index ed34d94af712c945a35145bcb2d9603e5e6db1da..01e3da9e5e6a27b3ee54f0b28b67637d8f9271d7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -617,6 +617,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -33,10 +33,10 @@ index f3769da2422d98dec32ba252bde5d9467f1bd84f..d2f2301cff71b8ce64b803dadcb09610 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 e937eb4e89bf08e3fee8ea2ca0643b0206964de1..5bc3556d437670801f5afda368c5d0e334869f33 100644 +index 0665b87872b8f5284d5947d68ca04a0850768a90..3177c786e927b8979da74c3144bee9d523155bc1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -299,6 +299,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -297,6 +297,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 @@ -44,7 +44,7 @@ index e937eb4e89bf08e3fee8ea2ca0643b0206964de1..5bc3556d437670801f5afda368c5d0e3 @Override public float getBukkitYaw() { -@@ -841,6 +842,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -839,6 +840,7 @@ public abstract class LivingEntity extends Entity implements Attackable { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -52,7 +52,7 @@ index e937eb4e89bf08e3fee8ea2ca0643b0206964de1..5bc3556d437670801f5afda368c5d0e3 } @Override -@@ -929,6 +931,11 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -927,6 +929,11 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -64,7 +64,7 @@ index e937eb4e89bf08e3fee8ea2ca0643b0206964de1..5bc3556d437670801f5afda368c5d0e3 } // CraftBukkit start -@@ -3756,6 +3763,34 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3754,6 +3761,34 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -100,7 +100,7 @@ index e937eb4e89bf08e3fee8ea2ca0643b0206964de1..5bc3556d437670801f5afda368c5d0e3 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 bc2beee267f535e23bd804d415019bab5ee2fd88..da1aefc4cdf2bca8e91c6c7833c24f3f0923f552 100644 +index 2ececba4f225589c5a38eaa24daf2481ad44a648..7978e307e7bb7f80993c49dcc5ada319a907c648 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1770,17 +1770,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -215,7 +215,7 @@ index 78e95f15de02cc0b2f2c6d71bf6c10828986c6f4..324fca775bacd06dcd521ce4b33d4f7d @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 2dc44d3b2609fef26925f2a4a21e0a8bdd14d24a..8f3408b60fce19680e3848b448a7eaddf96e91da 100644 +index 6e665d75f2c3a6cec6307a2befb07e73e48da5eb..cc84fbab113f5633df274deb48de2484b05bb3ff 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy { diff --git a/patches/server/0167-Make-lightning-rod-range-configurable.patch b/patches/server/0167-Make-lightning-rod-range-configurable.patch index 876cf9ce0..8277f9ce4 100644 --- a/patches/server/0167-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0167-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 51494dc0cca0819ee8df61144e70450facbba727..8d6a3309b6d20e51b056fbf030f27aa4f92640d7 100644 +index bd2001cbc8aac2f00f643f1b98a42c4a0d0ec720..3f43f52a977b4e7908021dd820fb1f818a4614a9 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1069,7 +1069,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1065,7 +1065,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0176-Add-uptime-command.patch b/patches/server/0176-Add-uptime-command.patch index c297b2d0d..5fc1c8e5c 100644 --- a/patches/server/0176-Add-uptime-command.patch +++ b/patches/server/0176-Add-uptime-command.patch @@ -17,10 +17,10 @@ index 5d94b71bd54f99040b76cca74964a32d55339767..0090243f7e1a966534e489cebb88d71d } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 874535bf55b76ca2df482a191d66924f8f228c97..e1cabc6af43e4342e8215a774483d5cd0db0aba8 100644 +index 3c28590feaec355d94b1a8c7228c3b62e9d815ad..ec8af36c230e36a59fe8a02a868fb36a8212cd8b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -315,6 +315,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0.0F) { this.playSound(this.getFallDamageSound((int) f), 1.0F, 1.0F); @@ -17,7 +17,7 @@ index 5bc3556d437670801f5afda368c5d0e334869f33..fcb024cc70c750887e6d6ce19692385a } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 75d5e129e9fb74181aed9d5bd57f19aea67dcfd2..35796c711fa4aaf2cd456b3f90cfafba1a27f886 100644 +index a563b33677d3067030d733aa5d66fc3f39eab782..70bedb84753cf404631a8747f06758ba1fa93e81 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -180,11 +180,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0198-Added-the-ability-to-add-combustible-items.patch b/patches/server/0198-Added-the-ability-to-add-combustible-items.patch index ca368e9ba..d52e9e18d 100644 --- a/patches/server/0198-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0198-Added-the-ability-to-add-combustible-items.patch @@ -37,10 +37,10 @@ index 61ef08ac941b1e8988d001241780d3a1582f7a2d..2eab5b43ab654966d26424597c1f3baa FuelValues(Object2IntSortedMap fuelValues) { this.values = fuelValues; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a6f937cf8d536eb401f3bb10d0f161b33d7d2740..0dd2f6c53047f122c769f8615fbaad692ffada29 100644 +index 6e92cc1832510a9ed776f54e43d596fe4f8831d9..7bc58c693db720ca75dc4925bfb8d41aa69f5b90 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1594,6 +1594,22 @@ public final class CraftServer implements Server { +@@ -1617,6 +1617,22 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0199-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0199-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 282e095f1..1107115d6 100644 --- a/patches/server/0199-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0199-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 c70a1ca4ed978df1b54363e966a8344a2fe6f277..de24307e48e7bc6cc39234fae55ddb404df243b3 100644 +index 70484e722a1cccb626edc55addc302b587c25c8e..adfd2ef5688049d039faa47b1616f1b382428d5b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1278,6 +1278,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1274,6 +1274,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index c70a1ca4ed978df1b54363e966a8344a2fe6f277..de24307e48e7bc6cc39234fae55ddb40 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.... -@@ -1285,6 +1286,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1281,6 +1282,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -25,7 +25,7 @@ index c70a1ca4ed978df1b54363e966a8344a2fe6f277..de24307e48e7bc6cc39234fae55ddb40 // 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 cce5813f0624fabf8a9e38d2eb9d1d1d63f15b70..91debf506c8f1ece992586a1d0328304e358d88a 100644 +index 1894c6c3b2949d8d7d3bf537750c57fcc44168c2..45cd8aa8f659538020980ba35c8126279cc3a775 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -139,6 +139,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0201-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0201-Shift-right-click-to-use-exp-for-mending.patch index 6e70d3e14..138c663db 100644 --- a/patches/server/0201-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0201-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 8ad07b6939831f57469bb6ad7c78b2c7e3b17fea..0f3dbe848ad923733e356c344a00667c6da0ab83 100644 +index 7315e604a2f9cb068eb5bbca744e44eeabac09c9..88eb3774f688bcff383efa7f113bd0b1b97d8a11 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -524,6 +524,7 @@ public class ServerPlayerGameMode { @@ -36,10 +36,10 @@ index 8ad07b6939831f57469bb6ad7c78b2c7e3b17fea..0f3dbe848ad923733e356c344a00667c + // 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 c3fd22396eaf85ac4d7a0aeba67b5c26a748be4c..8da850ab34e576caf89681171124f617f57d00a7 100644 +index e3a67829d6d3e2594387e7e02ad619dc373f305a..ec0849f3b26a8571323d1aa2be5357d00e45a63a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2020,6 +2020,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2092,6 +2092,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -48,7 +48,7 @@ index c3fd22396eaf85ac4d7a0aeba67b5c26a748be4c..8da850ab34e576caf89681171124f617 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 0a4626ea59c854d072972e78f06df3808797503f..025982aac35116320ff41203645e606504640940 100644 +index feabdb3fec0a8bb16cfe09e5f857d7b86211b234..7f9b948191a2160b8e1b11ff04468f47bf1a498e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -402,6 +402,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0207-UPnP-Port-Forwarding.patch b/patches/server/0207-UPnP-Port-Forwarding.patch index a9203658c..1ef739e62 100644 --- a/patches/server/0207-UPnP-Port-Forwarding.patch +++ b/patches/server/0207-UPnP-Port-Forwarding.patch @@ -5,10 +5,10 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a097b6e5ec9c340f0bb822e5d65c4951ba4caa88..ded4e4d120b4f0f803f48f590a6d9e39e8c210cf 100644 +index ec8af36c230e36a59fe8a02a868fb36a8212cd8b..95e1dbd7a423d57c2cfc8546aa6f5741f00e31bb 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -331,6 +331,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { @@ -41,7 +41,7 @@ index 135e59e549cbcb3806574f964947b6ff3ea517d1..e8c649d1db3dd82bb544aa6e96b6a19e }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); } -@@ -329,7 +329,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -322,7 +322,7 @@ public class Block extends BlockBehaviour implements ItemLike { event.setExpToDrop(block.getExpDrop(state, serverLevel, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping event.callEvent(); for (org.bukkit.inventory.ItemStack drop : event.getDrops()) { @@ -50,7 +50,7 @@ index 135e59e549cbcb3806574f964947b6ff3ea517d1..e8c649d1db3dd82bb544aa6e96b6a19e } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -346,13 +346,32 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -339,13 +339,32 @@ public class Block extends BlockBehaviour implements ItemLike { // Paper end - Properly handle xp dropping if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> { @@ -85,10 +85,10 @@ index 135e59e549cbcb3806574f964947b6ff3ea517d1..e8c649d1db3dd82bb544aa6e96b6a19e double d0 = (double) EntityType.ITEM.getHeight() / 2.0D; double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index fb00e5a02bb8c64e27d6d009068ba041098951d6..62b9e41cc35714428d7701d019b45c6ee429400c 100644 +index 1f929b467a0ece3143af58a657cf5983c07a8d51..eaa6ece956f90632831f0558924eaf18680a252b 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -100,6 +100,12 @@ public abstract class BlockEntity { +@@ -95,6 +95,12 @@ public abstract class BlockEntity { if (persistentDataTag instanceof CompoundTag) { this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); } @@ -101,7 +101,7 @@ index fb00e5a02bb8c64e27d6d009068ba041098951d6..62b9e41cc35714428d7701d019b45c6e } // CraftBukkit end -@@ -116,6 +122,15 @@ public abstract class BlockEntity { +@@ -111,6 +117,15 @@ public abstract class BlockEntity { this.loadAdditional(nbt, registries); } @@ -117,7 +117,7 @@ index fb00e5a02bb8c64e27d6d009068ba041098951d6..62b9e41cc35714428d7701d019b45c6e protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registries) {} public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registries) { -@@ -424,4 +439,16 @@ public abstract class BlockEntity { +@@ -419,4 +434,16 @@ public abstract class BlockEntity { T getOrDefault(DataComponentType type, T fallback); } @@ -135,7 +135,7 @@ index fb00e5a02bb8c64e27d6d009068ba041098951d6..62b9e41cc35714428d7701d019b45c6e + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4bd07e6ef30f6ff3e026492f36b0b3e8de363088..420b086c27f4c0d977f2fdaead4e45fc989bc9f8 100644 +index 56591fdf3bd5a407d938bcac243be0f03672bc06..340f1cde7eafdc3b6e2e2a4e84b54e93ff15eb1d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -141,6 +141,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0212-Signs-allow-color-codes.patch b/patches/server/0212-Signs-allow-color-codes.patch index d1b29cdc3..cdb39f1dd 100644 --- a/patches/server/0212-Signs-allow-color-codes.patch +++ b/patches/server/0212-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ 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 101f2db7d6e7eec85b21c576768224d6c3bba7e7..3f804ddb25aa03bdd964d390a1a1aab4d09abfde 100644 +index 5bbf3bb49d47b5b4acce00af4b9cdcffaa3be383..51229d600ea8a58e5c75bd97a1926f5cdf3704d4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1969,6 +1969,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1975,6 +1975,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @Override public void openTextEdit(SignBlockEntity sign, boolean front) { @@ -84,7 +84,7 @@ index 8ac19e1e052e73ff3fd09089bb8e3fd687390ee4..6da1eec98c08e4909ecbd48fe90b3fd6 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 420b086c27f4c0d977f2fdaead4e45fc989bc9f8..9cfee77da2b368c2be4a91902df8e9085d07974b 100644 +index 340f1cde7eafdc3b6e2e2a4e84b54e93ff15eb1d..b571a7224f91fe2fd3eeaca48939b7a9b373a4d9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -998,6 +998,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0218-Mob-head-visibility-percent.patch b/patches/server/0218-Mob-head-visibility-percent.patch index 4f9fdcc89..ef3dff7f4 100644 --- a/patches/server/0218-Mob-head-visibility-percent.patch +++ b/patches/server/0218-Mob-head-visibility-percent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index fcb024cc70c750887e6d6ce19692385ab5ac9d01..090f259115573f0ed2fb7ed79d191b3f09ac27cd 100644 +index 125b55068d017b96aa8410bf1936e71b593ce43f..c09ef8271f45e62629bcdca1b3885334fdb79211 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1071,9 +1071,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1069,9 +1069,20 @@ public abstract class LivingEntity extends Entity implements Attackable { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); @@ -32,7 +32,7 @@ index fcb024cc70c750887e6d6ce19692385ab5ac9d01..090f259115573f0ed2fb7ed79d191b3f // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 16fecadf20523f2a2bf72082bd558e59805e02ca..8e9c7d1d913e3ed5015f4016c96e56942ce07f5e 100644 +index eaa909e9d1923fac9cb7ab6de228df48519c7fcf..a4f0aba3f0ecf59fa915ef3b6c537e3eb8ab18fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1377,6 +1377,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 d15c86072..f1c618603 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 @@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ded4e4d120b4f0f803f48f590a6d9e39e8c210cf..f3b8478c29aec79cfc6fc7d0799b6147ad52f718 100644 +index 95e1dbd7a423d57c2cfc8546aa6f5741f00e31bb..9d2ece075144b036304025354e65d2cdcf5301fe 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1169,6 +1169,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return false; -@@ -1366,7 +1366,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur - gameprofilerfiller.push(() -> { @@ -257,8 +255,8 @@ index af8c8d3d2c92bede02fca6bebd05c4f5c1a98583..733020a0339129cf4bbe64e0c5718195 + //gameprofilerfiller.push("tick"); // Purpur try { - //worldserver.timings.doTick.startTiming(); // Spigot // Purpur -@@ -1914,16 +1914,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2935,37 +2935,38 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop chunks) { -@@ -558,15 +558,15 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - // Paper end - chunk tick iteration optimisation +@@ -550,7 +550,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } -- private void tickChunks(ProfilerFiller profiler, long timeDelta, List chunks) { + private void tickChunks(ProfilerFiller profiler, long timeDelta, List chunks) { - profiler.popPush("naturalSpawnCount"); -+ private void tickChunks(ProfilerFiller profiler, long timeDelta, List chunks) { // Purpur + //profiler.popPush("naturalSpawnCount"); // Purpur - //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur int j = this.distanceManager.getNaturalSpawnChunkCount(); - NaturalSpawner.SpawnState spawnercreature_d = NaturalSpawner.createState(j, this.level.getAllEntities(), this::getFullChunk, new LocalMobCapCalculator(this.chunkMap)); - // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur + // Paper start - Optional per player mob spawns + final int naturalSpawnChunkCount = j; +@@ -577,7 +577,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + // Paper end - Optional per player mob spawns this.lastSpawnState = spawnercreature_d; - profiler.popPush("spawnAndTick"); @@ -641,16 +629,16 @@ index 96f9d18eb22380cccd35b486713583d6dfa46646..1961b18a2b5e5985181f0ca930ab14ba boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING); List list1; -@@ -606,7 +606,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - - //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur +@@ -615,7 +615,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + } + } - profiler.popPush("customSpawners"); + //profiler.popPush("customSpawners"); // Purpur if (flag) { - //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); -@@ -806,7 +806,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon + } +@@ -813,7 +813,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @Override protected void doRunTask(Runnable task) { @@ -660,10 +648,10 @@ index 96f9d18eb22380cccd35b486713583d6dfa46646..1961b18a2b5e5985181f0ca930ab14ba } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d9884cbd8 100644 +index a8650040b69fe92f18606e5029ecd881961b39e7..4c11f0a23ee897691d8a8022baa134ef6f5e3d89 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -714,18 +714,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -724,18 +724,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } public void tick(BooleanSupplier shouldKeepTicking) { @@ -686,13 +674,12 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d } int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); -@@ -756,30 +756,30 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -766,30 +766,30 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.tickTime(); } - gameprofilerfiller.push("tickPending"); + //gameprofilerfiller.push("tickPending"); // Purpur - //this.timings.scheduledBlocks.startTiming(); // Paper // Purpur if (!this.isDebug() && flag) { j = this.getGameTime(); - gameprofilerfiller.push("blockTicks"); @@ -704,27 +691,20 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } - //this.timings.scheduledBlocks.stopTiming(); // Paper // Purpur - gameprofilerfiller.popPush("raid"); + //gameprofilerfiller.popPush("raid"); // Purpur if (flag) { - // this.timings.raids.startTiming(); // Paper - timings // Purpur this.raids.tick(); - // this.timings.raids.stopTiming(); // Paper - timings // Purpur } - gameprofilerfiller.popPush("chunkSource"); + //gameprofilerfiller.popPush("chunkSource"); // Purpur - //this.timings.chunkProviderTick.startTiming(); // Paper - timings // Purpur this.getChunkSource().tick(shouldKeepTicking, true); - //this.timings.chunkProviderTick.stopTiming(); // Paper - timings // Purpur - gameprofilerfiller.popPush("blockEvents"); + //gameprofilerfiller.popPush("blockEvents"); // Purpur if (flag) { - // this.timings.doSounds.startTiming(); // Spigot // Purpur this.runBlockEvents(); -@@ -787,7 +787,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } this.handlingTick = false; @@ -733,13 +713,12 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d 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) { -@@ -795,12 +795,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -797,20 +797,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } if (flag1 || this.emptyTime++ < 300) { - gameprofilerfiller.push("entities"); + //gameprofilerfiller.push("entities"); // Purpur - //this.timings.tickEntities.startTiming(); // Spigot // Purpur if (this.dragonFight != null && flag) { - gameprofilerfiller.push("dragonFight"); + //gameprofilerfiller.push("dragonFight"); // Purpur @@ -749,7 +728,6 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -808,9 +808,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.entityTickList.forEach((entity) -> { if (!entity.isRemoved()) { if (!tickratemanager.isEntityFrozen(entity)) { @@ -761,7 +739,7 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d if (true) { // Paper - rewrite chunk system Entity entity1 = entity.getVehicle(); -@@ -822,22 +822,22 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -822,20 +822,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe entity.stopRiding(); } @@ -774,8 +752,6 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d } } }); - //this.timings.entityTick.stopTiming(); // Spigot // Purpur - //this.timings.tickEntities.stopTiming(); // Spigot // Purpur - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur this.tickBlockEntities(); @@ -789,7 +765,7 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d } @Override -@@ -964,9 +964,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -962,9 +962,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -801,7 +777,7 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && simpleRandom.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder // Paper - optimise random ticking BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); -@@ -1003,7 +1003,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1001,7 +1001,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } } @@ -810,26 +786,24 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow for (int l = 0; l < randomTickSpeed; ++l) { -@@ -1013,14 +1013,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1011,12 +1011,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } } // Paper - Option to disable ice and snow - gameprofilerfiller.popPush("tickBlocks"); + //gameprofilerfiller.popPush("tickBlocks"); // Purpur - //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { this.optimiseRandomTick(chunk, randomTickSpeed); // Paper - optimise random ticking } - //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } @VisibleForTesting -@@ -1367,18 +1367,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - //try { // Purpur - // Paper end - timings +@@ -1355,18 +1355,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + // Spigot end + final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); // Paper - EAR 2 entity.setOldPosAndRot(); - ProfilerFiller gameprofilerfiller = Profiler.get(); + //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur @@ -848,10 +822,10 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d } else { entity.inactiveTick(); } // Paper - EAR 2 - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur - //} finally { timer.stopTiming(); } // Paper - timings // EAR 2 // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1402,12 +1402,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + while (iterator.hasNext()) { +@@ -1389,12 +1389,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (passenger instanceof Player || this.entityTickList.contains(passenger)) { passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -868,7 +842,7 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1419,7 +1419,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1406,7 +1406,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -878,10 +852,10 @@ index 47ae7af2a0ff8ab4181cf447c58410ccb0f37371..3083f3e0a17efc3a1dc7f50493ec646d 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 ce8b5dd01359344300d1a1a06e8207a768a846ce..2518ad5af51b944393e53508010a18df111c5c83 100644 +index 51229d600ea8a58e5c75bd97a1926f5cdf3704d4..0286b1bd461a5050cb78b9485bac84909ae91150 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1663,15 +1663,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1669,15 +1669,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.unsetRemoved(); */ // CraftBukkit end @@ -901,7 +875,7 @@ index ce8b5dd01359344300d1a1a06e8207a768a846ce..2518ad5af51b944393e53508010a18df // CraftBukkit start this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds LevelData worlddata = worldserver.getLevelData(); -@@ -1689,7 +1689,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1695,7 +1695,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.connection.internalTeleport(PositionMoveRotation.of(teleportTarget), teleportTarget.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); worldserver.addDuringTeleport(this); @@ -1304,10 +1278,10 @@ index cb123001b08c0772bacce87d022d236bc7eaa1d1..6474b375c05eebc1fa3468f2963770df } } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 60b0cf7cd5e4bcbe882590b79a70dafb23e6772f..38a7bde1bc2836352a62dfe1dd3b9a60877c20e2 100644 +index e2a5d66e4b945f69d9f2b538b95aa0b187749d8b..cd2fd85178acdfffc07b72bc0419a73e1d1bef64 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -459,9 +459,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -457,9 +457,9 @@ public abstract class LivingEntity extends Entity implements Attackable { } super.baseTick(); @@ -1319,7 +1293,7 @@ index 60b0cf7cd5e4bcbe882590b79a70dafb23e6772f..38a7bde1bc2836352a62dfe1dd3b9a60 if (this.fireImmune() || this.level().isClientSide) { this.clearFire(); } -@@ -569,7 +569,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -567,7 +567,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); @@ -1328,7 +1302,7 @@ index 60b0cf7cd5e4bcbe882590b79a70dafb23e6772f..38a7bde1bc2836352a62dfe1dd3b9a60 } @Override -@@ -3384,12 +3384,12 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3382,12 +3382,12 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1345,7 +1319,7 @@ index 60b0cf7cd5e4bcbe882590b79a70dafb23e6772f..38a7bde1bc2836352a62dfe1dd3b9a60 // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3401,7 +3401,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3399,7 +3399,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1354,7 +1328,7 @@ index 60b0cf7cd5e4bcbe882590b79a70dafb23e6772f..38a7bde1bc2836352a62dfe1dd3b9a60 this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3631,21 +3631,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3629,21 +3629,21 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1382,7 +1356,7 @@ index 60b0cf7cd5e4bcbe882590b79a70dafb23e6772f..38a7bde1bc2836352a62dfe1dd3b9a60 if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3672,8 +3672,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3670,8 +3670,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1393,7 +1367,7 @@ index 60b0cf7cd5e4bcbe882590b79a70dafb23e6772f..38a7bde1bc2836352a62dfe1dd3b9a60 this.xxa *= 0.98F; this.zza *= 0.98F; if (this.isFallFlying()) { -@@ -3706,8 +3706,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3704,8 +3704,8 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.calculateEntityAnimation(this instanceof FlyingAnimal); @@ -1404,7 +1378,7 @@ index 60b0cf7cd5e4bcbe882590b79a70dafb23e6772f..38a7bde1bc2836352a62dfe1dd3b9a60 if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3728,15 +3728,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3726,15 +3726,15 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -1960,10 +1934,10 @@ index c885b214f4d7d91627e98d8779aab8515f205636..b4ffad429ace965f16ebf47119c880b7 this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e14e9ae4f16dff8486c98f391c27ead816c2a080..224ad8e6553f019d5717d3bf70d11b034147fbdc 100644 +index c2aff2f03451b97f1ec6bd4ee987bb729177320a..7493262c2879af196e5585b15faad69ae42764e3 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -271,7 +271,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -270,7 +270,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @Override public final List getEntitiesOfClass(final Class entityClass, final AABB boundingBox, final Predicate predicate) { @@ -1972,7 +1946,7 @@ index e14e9ae4f16dff8486c98f391c27ead816c2a080..224ad8e6553f019d5717d3bf70d11b03 final List ret = new java.util.ArrayList<>(); ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getEntities(entityClass, null, boundingBox, ret, predicate); -@@ -281,7 +281,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -280,7 +280,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) { @@ -1981,7 +1955,7 @@ index e14e9ae4f16dff8486c98f391c27ead816c2a080..224ad8e6553f019d5717d3bf70d11b03 final List ret = new java.util.ArrayList<>(); ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getHardCollidingEntities(entity, box, ret, predicate); -@@ -1488,9 +1488,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1486,9 +1486,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } protected void tickBlockEntities() { @@ -1990,19 +1964,19 @@ index e14e9ae4f16dff8486c98f391c27ead816c2a080..224ad8e6553f019d5717d3bf70d11b03 - gameprofilerfiller.push("blockEntities"); + //gameprofilerfiller.push("blockEntities"); // Purpur - //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1533,7 +1533,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur + this.blockEntityTickers.addAll(this.pendingBlockEntityTickers); +@@ -1526,7 +1526,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 + this.tickingBlockEntities = false; - co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1703,7 +1703,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1696,7 +1696,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -2011,7 +1985,7 @@ index e14e9ae4f16dff8486c98f391c27ead816c2a080..224ad8e6553f019d5717d3bf70d11b03 List list = Lists.newArrayList(); // Paper start - rewrite chunk system -@@ -1733,7 +1733,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1726,7 +1726,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl public void getEntities(final EntityTypeTest entityTypeTest, final AABB boundingBox, final Predicate predicate, final List into, final int maxCount) { @@ -2021,20 +1995,20 @@ index e14e9ae4f16dff8486c98f391c27ead816c2a080..224ad8e6553f019d5717d3bf70d11b03 if (entityTypeTest instanceof net.minecraft.world.entity.EntityType byType) { if (maxCount != Integer.MAX_VALUE) { diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index f6fb4892c95f9716628ed8a90d1560b7c0a2e032..4bdfba6dbe88dbc7ce901b235a524ba28027f203 100644 +index 5297798c2be1ba85569c2b92ed221956bf75477a..fa47d14e17d9e7d1b62de7990c875245c3a445a3 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -171,7 +171,7 @@ public final class NaturalSpawner { +@@ -211,7 +211,7 @@ public final class NaturalSpawner { + } } - //world.timings.mobSpawn.stopTiming(); // Spigot // Purpur - gameprofilerfiller.pop(); + //gameprofilerfiller.pop(); // Purpur } // Paper start - Add mobcaps commands diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index c1ce5a43b5759f204c432cbfbcdcb14b5ef43dc0..b525ab58998f4ead44f8a2b37ac2391c7de81df4 100644 +index 4640baec5bed6c2d53cc0f8ca1d273cc115abe9b..15c83c6f5f56d6a27911d3bbd326cef1c21b1e58 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -407,11 +407,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -2052,7 +2026,7 @@ index c1ce5a43b5759f204c432cbfbcdcb14b5ef43dc0..b525ab58998f4ead44f8a2b37ac2391c } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1060,9 +1060,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1058,9 +1058,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p if (LevelChunk.this.isTicking(blockposition)) { try { @@ -2061,10 +2035,10 @@ index c1ce5a43b5759f204c432cbfbcdcb14b5ef43dc0..b525ab58998f4ead44f8a2b37ac2391c - gameprofilerfiller.push(this::getType); + //gameprofilerfiller.push(this::getType); - //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1079,7 +1079,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p + if (this.blockEntity.getType().isValid(iblockdata)) { +@@ -1076,7 +1076,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p // Paper end - Remove the Block Entity if it's invalid } diff --git a/patches/server/0247-Remove-Timings.patch b/patches/server/0247-Remove-Timings.patch deleted file mode 100644 index cddeee9cc..000000000 --- a/patches/server/0247-Remove-Timings.patch +++ /dev/null @@ -1,710 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Fri, 1 Jul 2022 04:03:37 -0500 -Subject: [PATCH] Remove Timings - - -diff --git a/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java b/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java -index 0c3c82b28e581286b798ee58ca4193efc2faff4a..24121a43aeb5e9bce013f30c92dddd15f99736c6 100644 ---- a/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java -+++ b/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java -@@ -80,16 +80,16 @@ public class BukkitCommandNode extends LiteralCommandNode { - - // Plugins do weird things to workaround normal registration - if (this.command.timings == null) { -- this.command.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, this.command); -+ //this.command.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, this.command); // Purpur - } - - String content = context.getRange().get(context.getInput()); - String[] args = org.apache.commons.lang3.StringUtils.split(content, ' '); // fix adjacent spaces (from console/plugins) causing empty array elements - -- try (Timing ignored = this.command.timings.startTiming()) { -+ //try (Timing ignored = this.command.timings.startTiming()) { // Purpur - // Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false) - this.command.execute(sender, this.literal, Arrays.copyOfRange(args, 1, args.length)); -- } -+ //} // Purpur - - // return true as command was handled - return 1; -diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -index e2c24813f59c2fd075c740ac1842a38f20ed8554..01efbc507b3d58f13f78ee286f93df40cdc3f0cb 100644 ---- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java -+++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -@@ -52,7 +52,7 @@ public class PacketUtils { - if (listener instanceof ServerCommonPacketListenerImpl serverCommonPacketListener && serverCommonPacketListener.processedDisconnect) return; // CraftBukkit - Don't handle sync packets for kicked players - if (listener.shouldHandleMessage(packet)) { - co.aikar.timings.Timing timing = co.aikar.timings.MinecraftTimings.getPacketTiming(packet); // Paper - timings -- try (co.aikar.timings.Timing ignored = timing.startTiming()) { // Paper - timings -+ try { // Paper - timings // Purpur - packet.handle(listener); - } catch (Exception exception) { - if (exception instanceof ReportedException) { -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f3b8478c29aec79cfc6fc7d0799b6147ad52f718..af8c8d3d2c92bede02fca6bebd05c4f5c1a98583 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1666,7 +1666,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - return !this.canOversleep(); - }); -- isOversleep = false;MinecraftTimings.serverOversleep.stopTiming(); -+ //isOversleep = false;MinecraftTimings.serverOversleep.stopTiming(); // Purpur - // Paper end - this.server.spark.tickStart(); // Paper - spark - new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events -@@ -1715,9 +1715,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - entityplayer.connection.suspendFlushing(); - }); -- MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Spigot // Paper -+ //MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Spigot // Paper // Purpur - this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit -- MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper -+ //MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper // Purpur - // Paper start - Folia scheduler API - ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); - getAllLevels().forEach(level -> { -@@ -1843,21 +1843,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = Lists.newArrayList(); - List list1 = this.level.players(); - ObjectIterator objectiterator = this.entityMap.values().iterator(); -- level.timings.tracker1.startTiming(); // Paper -+ //this.level.timings.tracker1.startTiming(); // Paper // Purpur - - ChunkMap.TrackedEntity playerchunkmap_entitytracker; - -@@ -986,17 +986,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - playerchunkmap_entitytracker.serverEntity.sendChanges(); - } - } -- level.timings.tracker1.stopTiming(); // Paper -+ //this.level.timings.tracker1.stopTiming(); // Paper // Purpur - - if (!list.isEmpty()) { - objectiterator = this.entityMap.values().iterator(); - -- level.timings.tracker2.startTiming(); // Paper -+ //this.level.timings.tracker2.startTiming(); // Paper // Purpur - while (objectiterator.hasNext()) { - playerchunkmap_entitytracker = (ChunkMap.TrackedEntity) objectiterator.next(); - playerchunkmap_entitytracker.updatePlayers(list); - } -- level.timings.tracker2.stopTiming(); // Paper -+ //this.level.timings.tracker2.stopTiming(); // Paper // Purpur - } - - } -diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 4b5985c284faac7b06c0f99d53065f5060ecff4a..96f9d18eb22380cccd35b486713583d6dfa46646 100644 ---- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java -+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -423,9 +423,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - - public void save(boolean flush) { - // Paper - rewrite chunk system -- try (co.aikar.timings.Timing timed = level.timings.chunkSaveData.startTiming()) { // Paper - Timings -+ //try (co.aikar.timings.Timing timed = level.timings.chunkSaveData.startTiming()) { // Paper - Timings // Purpur - this.chunkMap.saveAllChunks(flush); -- } // Paper - Timings -+ //} // Paper - Timings // Purpur - } - - @Override -@@ -461,26 +461,25 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - ProfilerFiller gameprofilerfiller = Profiler.get(); - - gameprofilerfiller.push("purge"); -- this.level.timings.doChunkMap.startTiming(); // Spigot -+ //this.level.timings.doChunkMap.startTiming(); // Spigot // Purpur - if (this.level.tickRateManager().runsNormally() || !tickChunks || this.level.spigotConfig.unloadFrozenChunks) { // Spigot - this.distanceManager.purgeStaleTickets(); - } -- - this.runDistanceManagerUpdates(); -- this.level.timings.doChunkMap.stopTiming(); // Spigot -+ //this.level.timings.doChunkMap.stopTiming(); // Spigot // Purpur - gameprofilerfiller.popPush("chunks"); - if (tickChunks) { -- this.level.timings.chunks.startTiming(); // Paper - timings -+ //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 - this.tickChunks(); -- this.level.timings.chunks.stopTiming(); // Paper - timings -+ //this.level.timings.chunks.stopTiming(); // Paper - timings // Purpur - this.chunkMap.tick(); - } - -- this.level.timings.doChunkUnload.startTiming(); // Spigot -+ //this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur - gameprofilerfiller.popPush("unload"); - this.chunkMap.tick(shouldKeepTicking); -- this.level.timings.doChunkUnload.stopTiming(); // Spigot -+ //this.level.timings.doChunkUnload.stopTiming(); // Spigot // Purpur - gameprofilerfiller.pop(); - this.clearCache(); - } -@@ -561,10 +560,10 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - - private void tickChunks(ProfilerFiller profiler, long timeDelta, List chunks) { - profiler.popPush("naturalSpawnCount"); -- this.level.timings.countNaturalMobs.startTiming(); // Paper - timings -+ //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur - int j = this.distanceManager.getNaturalSpawnChunkCount(); - NaturalSpawner.SpawnState spawnercreature_d = NaturalSpawner.createState(j, this.level.getAllEntities(), this::getFullChunk, new LocalMobCapCalculator(this.chunkMap)); -- this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings -+ // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur - - this.lastSpawnState = spawnercreature_d; - profiler.popPush("spawnAndTick"); -@@ -605,13 +604,13 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - } - } - -- this.level.timings.chunkTicks.stopTiming(); // Paper -+ //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur - - profiler.popPush("customSpawners"); - if (flag) { -- try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings -+ //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur - this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); -- } -+ //} // Purpur - } - - } -diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f598939777eb4ee2d8aff851e1a20a033d8aa02b..47ae7af2a0ff8ab4181cf447c58410ccb0f37371 100644 ---- a/src/main/java/net/minecraft/server/level/ServerLevel.java -+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -757,7 +757,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - } - - gameprofilerfiller.push("tickPending"); -- this.timings.scheduledBlocks.startTiming(); // Paper -+ //this.timings.scheduledBlocks.startTiming(); // Paper // Purpur - if (!this.isDebug() && flag) { - j = this.getGameTime(); - gameprofilerfiller.push("blockTicks"); -@@ -766,24 +766,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - this.fluidTicks.tick(j, paperConfig().environment.maxFluidTicks, this::tickFluid); // Paper - configurable max fluid ticks - gameprofilerfiller.pop(); - } -- this.timings.scheduledBlocks.stopTiming(); // Paper -+ //this.timings.scheduledBlocks.stopTiming(); // Paper // Purpur - - gameprofilerfiller.popPush("raid"); - if (flag) { -- this.timings.raids.startTiming(); // Paper - timings -+ // this.timings.raids.startTiming(); // Paper - timings // Purpur - this.raids.tick(); -- this.timings.raids.stopTiming(); // Paper - timings -+ // this.timings.raids.stopTiming(); // Paper - timings // Purpur - } - - gameprofilerfiller.popPush("chunkSource"); -- this.timings.chunkProviderTick.startTiming(); // Paper - timings -+ //this.timings.chunkProviderTick.startTiming(); // Paper - timings // Purpur - this.getChunkSource().tick(shouldKeepTicking, true); -- this.timings.chunkProviderTick.stopTiming(); // Paper - timings -+ //this.timings.chunkProviderTick.stopTiming(); // Paper - timings // Purpur - gameprofilerfiller.popPush("blockEvents"); - if (flag) { -- this.timings.doSounds.startTiming(); // Spigot -+ // this.timings.doSounds.startTiming(); // Spigot // Purpur - this.runBlockEvents(); -- this.timings.doSounds.stopTiming(); // Spigot -+ // this.timings.doSounds.stopTiming(); // Spigot // Purpur - } - - this.handlingTick = false; -@@ -796,7 +796,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - - if (flag1 || this.emptyTime++ < 300) { - gameprofilerfiller.push("entities"); -- this.timings.tickEntities.startTiming(); // Spigot -+ //this.timings.tickEntities.startTiming(); // Spigot // Purpur - if (this.dragonFight != null && flag) { - gameprofilerfiller.push("dragonFight"); - this.dragonFight.tick(); -@@ -804,7 +804,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - } - - org.spigotmc.ActivationRange.activateEntities(this); // Spigot -- this.timings.entityTick.startTiming(); // Spigot -+ //this.timings.entityTick.startTiming(); // Spigot // Purpur - this.entityTickList.forEach((entity) -> { - if (!entity.isRemoved()) { - if (!tickratemanager.isEntityFrozen(entity)) { -@@ -829,8 +829,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - } - } - }); -- this.timings.entityTick.stopTiming(); // Spigot -- this.timings.tickEntities.stopTiming(); // Spigot -+ //this.timings.entityTick.stopTiming(); // Spigot // Purpur -+ //this.timings.tickEntities.stopTiming(); // Spigot // Purpur - gameprofilerfiller.pop(); - this.tickBlockEntities(); - } -@@ -1014,12 +1014,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - } // Paper - Option to disable ice and snow - - gameprofilerfiller.popPush("tickBlocks"); -- timings.chunkTicksBlocks.startTiming(); // Paper -+ //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur - if (randomTickSpeed > 0) { - this.optimiseRandomTick(chunk, randomTickSpeed); // Paper - optimise random ticking - } - -- timings.chunkTicksBlocks.stopTiming(); // Paper -+ //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur - gameprofilerfiller.pop(); - } - -@@ -1363,8 +1363,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - // Spigot end - // Paper start- timings - final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); -- timer = isActive ? entity.getType().tickTimer.startTiming() : entity.getType().inactiveTickTimer.startTiming(); // Paper -- try { -+ //timer = isActive ? entity.getType().tickTimer.startTiming() : entity.getType().inactiveTickTimer.startTiming(); // Paper // Purpur -+ //try { // Purpur - // Paper end - timings - entity.setOldPosAndRot(); - ProfilerFiller gameprofilerfiller = Profiler.get(); -@@ -1379,7 +1379,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - entity.postTick(); // CraftBukkit - } else { entity.inactiveTick(); } // Paper - EAR 2 - gameprofilerfiller.pop(); -- } finally { timer.stopTiming(); } // Paper - timings // EAR 2 -+ //} finally { timer.stopTiming(); } // Paper - timings // EAR 2 // Purpur - Iterator iterator = entity.getPassengers().iterator(); - - while (iterator.hasNext()) { -@@ -1449,7 +1449,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - - if (!savingDisabled) { - org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit -- try (co.aikar.timings.Timing ignored = timings.worldSave.startTiming()) { // Paper -+ //try (co.aikar.timings.Timing ignored = timings.worldSave.startTiming()) { // Paper // Purpur // Purpur - if (progressListener != null) { - progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); - } -@@ -1459,10 +1459,10 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - progressListener.progressStage(Component.translatable("menu.savingChunks")); - } - -- timings.worldSaveChunks.startTiming(); // Paper -+ //timings.worldSaveChunks.startTiming(); // Paper // Purpur - if (!close) { chunkproviderserver.save(flush); } // Paper - add close param -- timings.worldSaveChunks.stopTiming(); // Paper -- }// Paper -+ //timings.worldSaveChunks.stopTiming(); // Paper // Purpur -+ //}// Paper // Purpur - // Paper - rewrite chunk system - - } -diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 479d493421453f875bd04ee6a734db62ef4ac816..99a20052536884ef78f55ddce4ddae369b1d53c2 100644 ---- a/src/main/java/net/minecraft/server/players/PlayerList.java -+++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1192,11 +1192,11 @@ public abstract class PlayerList { - - public void saveAll() { - io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main -- MinecraftTimings.savePlayers.startTiming(); // Paper -+ //MinecraftTimings.savePlayers.startTiming(); // Paper // Purpur - for (int i = 0; i < this.players.size(); ++i) { - this.save(this.players.get(i)); - } -- MinecraftTimings.savePlayers.stopTiming(); // Paper -+ //MinecraftTimings.savePlayers.stopTiming(); // Paper // Purpur - return null; }); // Paper - ensure main - } - -diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -index 9379dd4056018b52c93ed4888dcdc94579bd9691..612a14806ec63b0dcf31814396282f4b7f4a527c 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -@@ -59,9 +59,9 @@ public abstract class Behavior implements BehaviorContro - this.status = Behavior.Status.RUNNING; - int i = this.minDuration + world.getRandom().nextInt(this.maxDuration + 1 - this.minDuration); - this.endTimestamp = time + (long)i; -- this.timing.startTiming(); // Paper - behavior timings -+ //this.timing.startTiming(); // Paper - behavior timings // Purpur - this.start(world, entity, time); -- this.timing.stopTiming(); // Paper - behavior timings -+ //this.timing.stopTiming(); // Paper - behavior timings // Purpur - return true; - } else { - return false; -@@ -73,13 +73,13 @@ public abstract class Behavior implements BehaviorContro - - @Override - public final void tickOrStop(ServerLevel world, E entity, long time) { -- this.timing.startTiming(); // Paper - behavior timings -+ //this.timing.startTiming(); // Paper - behavior timings // Purpur - if (!this.timedOut(time) && this.canStillUse(world, entity, time)) { - this.tick(world, entity, time); - } else { - this.doStop(world, entity, time); - } -- this.timing.stopTiming(); // Paper - behavior timings -+ //this.timing.stopTiming(); // Paper - behavior timings // Purpur - } - - protected void tick(ServerLevel world, E entity, long time) { -diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -index 8bc7979fb9c2a796921a2a279b78294809f2ed03..043e078f2c108d9ff77d3b21f96a6a106bcea51d 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -@@ -56,11 +56,11 @@ public abstract class Sensor { - if (--this.timeToTick <= 0L) { - // Paper start - configurable sensor tick rate and timings - this.timeToTick = java.util.Objects.requireNonNullElse(world.paperConfig().tickRates.sensor.get(entity.getType(), this.configKey), this.scanRate); -- this.timing.startTiming(); -+ //this.timing.startTiming(); // Purpur - this.updateTargetingConditionRanges(entity); - // Paper end - this.doTick(world, entity); -- this.timing.stopTiming(); // Paper - sensor timings -+ //this.timing.stopTiming(); // Paper - sensor timings // Purpur - } - } - -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 3befc3c882b69ad27ef7b83d116781d740dbf4b7..e14e9ae4f16dff8486c98f391c27ead816c2a080 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1491,15 +1491,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - ProfilerFiller gameprofilerfiller = Profiler.get(); - - gameprofilerfiller.push("blockEntities"); -- this.timings.tileEntityPending.startTiming(); // Spigot -+ //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur - this.tickingBlockEntities = true; - if (!this.pendingBlockEntityTickers.isEmpty()) { - this.blockEntityTickers.addAll(this.pendingBlockEntityTickers); - this.pendingBlockEntityTickers.clear(); - } -- this.timings.tileEntityPending.stopTiming(); // Spigot -+ //this.timings.tileEntityPending.stopTiming(); // Spigot // Purpur - -- this.timings.tileEntityTick.startTiming(); // Spigot -+ //this.timings.tileEntityTick.startTiming(); // Spigot // Purpur - // Spigot start - // Iterator iterator = this.blockEntityTickers.iterator(); - boolean flag = this.tickRateManager().runsNormally(); -@@ -1530,7 +1530,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - } - this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 - -- this.timings.tileEntityTick.stopTiming(); // Spigot -+ //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur - this.tickingBlockEntities = false; - co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper - gameprofilerfiller.pop(); -diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 6eb69ebe688c1c52d5a5986dfc63cdd42e66687e..f6fb4892c95f9716628ed8a90d1560b7c0a2e032 100644 ---- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java -+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -155,7 +155,7 @@ public final class NaturalSpawner { - ProfilerFiller gameprofilerfiller = Profiler.get(); - - gameprofilerfiller.push("spawner"); -- world.timings.mobSpawn.startTiming(); // Spigot -+ //world.timings.mobSpawn.startTiming(); // Spigot // Purpur - Iterator iterator = spawnableGroups.iterator(); - - while (iterator.hasNext()) { -@@ -170,7 +170,7 @@ public final class NaturalSpawner { - } - } - -- world.timings.mobSpawn.stopTiming(); // Spigot -+ //world.timings.mobSpawn.stopTiming(); // Spigot // Purpur - gameprofilerfiller.pop(); - } - -diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 1313ac2ff9f1b9fccab54b0c200b9dfa7a4edd00..c1ce5a43b5759f204c432cbfbcdcb14b5ef43dc0 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -691,7 +691,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p - org.bukkit.craftbukkit.event.CraftEventFactory.callEntitiesLoadEvent(this.level, this.chunkPos, ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().getAllEntities()); // Paper - rewrite chunk system - - if (this.needsDecoration) { -- try (co.aikar.timings.Timing ignored = this.level.timings.chunkLoadPopulate.startTiming()) { // Paper -+ //try (co.aikar.timings.Timing ignored = this.level.timings.chunkLoadPopulate.startTiming()) { // Paper // Purpur - this.needsDecoration = false; - java.util.Random random = new java.util.Random(); - random.setSeed(this.level.getSeed()); -@@ -711,7 +711,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p - } - } - server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); -- } // Paper -+ //} // Paper // Purpur - } - } - } -@@ -1063,7 +1063,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p - ProfilerFiller gameprofilerfiller = Profiler.get(); - - gameprofilerfiller.push(this::getType); -- this.blockEntity.tickTimer.startTiming(); // Spigot -+ //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur - BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); - - if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1090,7 +1090,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p - // Paper end - Prevent block entity and entity crashes - // Spigot start - } finally { -- this.blockEntity.tickTimer.stopTiming(); -+ //this.blockEntity.tickTimer.stopTiming(); // Purpur - // Spigot end - } - } -diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 4178f48c1614af8e6796cf07fd018b9c6e67dcd0..c8eb39afabf6953c248b4d1dd4cac9948283aa47 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -@@ -504,10 +504,10 @@ public class CraftScheduler implements BukkitScheduler { - this.runners.remove(task.getTaskId()); - } - } -- MinecraftTimings.bukkitSchedulerFinishTimer.startTiming(); // Paper -+ //MinecraftTimings.bukkitSchedulerFinishTimer.startTiming(); // Paper // Purpur - this.pending.addAll(temp); - temp.clear(); -- MinecraftTimings.bukkitSchedulerFinishTimer.stopTiming(); // Paper -+ //MinecraftTimings.bukkitSchedulerFinishTimer.stopTiming(); // Paper // Purpur - //this.debugHead = this.debugHead.getNextHead(this.currentTick); // Paper - } - -@@ -550,7 +550,7 @@ public class CraftScheduler implements BukkitScheduler { - } - - void parsePending() { // Paper -- if (!this.isAsyncScheduler) MinecraftTimings.bukkitSchedulerPendingTimer.startTiming(); // Paper -+ //if (!this.isAsyncScheduler) MinecraftTimings.bukkitSchedulerPendingTimer.startTiming(); // Paper // Purpur - CraftTask head = this.head; - CraftTask task = head.getNext(); - CraftTask lastTask = head; -@@ -569,7 +569,7 @@ public class CraftScheduler implements BukkitScheduler { - task.setNext(null); - } - this.head = lastTask; -- if (!this.isAsyncScheduler) MinecraftTimings.bukkitSchedulerPendingTimer.stopTiming(); // Paper -+ //if (!this.isAsyncScheduler) MinecraftTimings.bukkitSchedulerPendingTimer.stopTiming(); // Paper // Purpur - } - - private boolean isReady(final int currentTick) { -diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -index ba369f3dcfdf498e971dc4405d39657a9b6e97cc..8f181e03eda734b18f8c9ee80ee6e45f8689d178 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -@@ -81,13 +81,13 @@ public class CraftTask implements BukkitTask, Runnable { // Spigot - - @Override - public void run() { -- try (Timing ignored = timings.startTiming()) { // Paper -+ //try (Timing ignored = timings.startTiming()) { // Paper // Purpur - if (this.rTask != null) { - this.rTask.run(); - } else { - this.cTask.accept(this); - } -- } // Paper -+ //} // Paper // Purpur - } - - long getCreatedAt() { -diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..d3ec817e95628f1fc8be4a29c9a0f13c7d5fd552 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -@@ -115,7 +115,7 @@ public final class CraftScoreboardManager implements ScoreboardManager { - public void forAllObjectives(ObjectiveCriteria criteria, ScoreHolder holder, Consumer consumer) { - // Paper start - add timings for scoreboard search - // plugins leaking scoreboards will make this very expensive, let server owners debug it easily -- co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.startTimingIfSync(); -+ //co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.startTimingIfSync(); // Purpur - try { - // Paper end - add timings for scoreboard search - for (CraftScoreboard scoreboard : this.scoreboards) { -@@ -123,7 +123,7 @@ public final class CraftScoreboardManager implements ScoreboardManager { - board.forAllObjectives(criteria, holder, (score) -> consumer.accept(score)); - } - } finally { // Paper start - add timings for scoreboard search -- co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.stopTimingIfSync(); -+ //co.aikar.timings.MinecraftTimings.scoreboardScoreSearch.stopTimingIfSync(); // Purpur - } - // Paper end - add timings for scoreboard search - } -diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index ca05c37dad39808683429276d85d970b7cc63f82..6936fa0d25377292a94ba694eaf50e4ea8277506 100644 ---- a/src/main/java/org/spigotmc/ActivationRange.java -+++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -167,7 +167,7 @@ public class ActivationRange - */ - public static void activateEntities(Level world) - { -- MinecraftTimings.entityActivationCheckTimer.startTiming(); -+ //MinecraftTimings.entityActivationCheckTimer.startTiming(); // Purpur - final int miscActivationRange = world.spigotConfig.miscActivationRange; - final int raiderActivationRange = world.spigotConfig.raiderActivationRange; - final int animalActivationRange = world.spigotConfig.animalActivationRange; -@@ -228,7 +228,7 @@ public class ActivationRange - } - // Paper end - } -- MinecraftTimings.entityActivationCheckTimer.stopTiming(); -+ //MinecraftTimings.entityActivationCheckTimer.stopTiming(); // Purpur - } - - /** diff --git a/patches/server/0249-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0248-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 92% rename from patches/server/0249-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0248-Add-more-logger-output-for-invalid-movement-kicks.patch index 4e89ceec2..bad0d8dbd 100644 --- a/patches/server/0249-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0248-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8da850ab34e576caf89681171124f617f57d00a7..06050ed59dde5c8a5291160cc890621083425963 100644 +index ec0849f3b26a8571323d1aa2be5357d00e45a63a..61b19f52aeb371abdd29f41291099f35a9b4c258 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -727,6 +727,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -761,6 +761,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { @@ -16,7 +16,7 @@ index 8da850ab34e576caf89681171124f617f57d00a7..06050ed59dde5c8a5291160cc8906210 this.disconnect((Component) Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1337,7 +1338,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1371,7 +1372,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0250-Add-Bee-API.patch b/patches/server/0249-Add-Bee-API.patch similarity index 100% rename from patches/server/0250-Add-Bee-API.patch rename to patches/server/0249-Add-Bee-API.patch diff --git a/patches/server/0251-Debug-Marker-API.patch b/patches/server/0250-Debug-Marker-API.patch similarity index 97% rename from patches/server/0251-Debug-Marker-API.patch rename to patches/server/0250-Debug-Marker-API.patch index 443f1a703..f064005de 100644 --- a/patches/server/0251-Debug-Marker-API.patch +++ b/patches/server/0250-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 0dd2f6c53047f122c769f8615fbaad692ffada29..d63629001dc92ae4b2055df58bde5d97c0ecc3bc 100644 +index 7bc58c693db720ca75dc4925bfb8d41aa69f5b90..e2d6bdac09fcef3f3c8a533139ae28c63df0241e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1608,6 +1608,42 @@ public final class CraftServer implements Server { +@@ -1631,6 +1631,42 @@ public final class CraftServer implements Server { net.minecraft.world.item.ItemStack itemStack = net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material)); MinecraftServer.getServer().fuelValues().values.keySet().removeIf(itemStack::is); } diff --git a/patches/server/0252-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0251-mob-spawning-option-to-ignore-creative-players.patch similarity index 90% rename from patches/server/0252-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0251-mob-spawning-option-to-ignore-creative-players.patch index 7d8fad8d8..2de471f6e 100644 --- a/patches/server/0252-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0251-mob-spawning-option-to-ignore-creative-players.patch @@ -5,10 +5,10 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 4bdfba6dbe88dbc7ce901b235a524ba28027f203..3741c0bb2e7c67cd2b0600f1e8ada38eda8698f8 100644 +index fa47d14e17d9e7d1b62de7990c875245c3a445a3..7f936a7ba994ccb51c17168c798b42dde0877a5d 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -230,7 +230,7 @@ public final class NaturalSpawner { +@@ -280,7 +280,7 @@ public final class NaturalSpawner { blockposition_mutableblockposition.set(l, i, i1); double d0 = (double) l + 0.5D; double d1 = (double) i1 + 0.5D; @@ -18,7 +18,7 @@ index 4bdfba6dbe88dbc7ce901b235a524ba28027f203..3741c0bb2e7c67cd2b0600f1e8ada38e 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 a647855f277d79d4ebbf370cff0d15991acbb308..6afa859dd0d18d57ba438e34a73b512a137d7cb0 100644 +index e15e7b977a91cb8a972f057b321a3382362d884c..a793533817368077d70d120f8f443b4a87b70e64 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -376,6 +376,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0253-Add-skeleton-bow-accuracy-option.patch b/patches/server/0252-Add-skeleton-bow-accuracy-option.patch similarity index 97% rename from patches/server/0253-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0252-Add-skeleton-bow-accuracy-option.patch index f3006fb16..9a0d671ab 100644 --- a/patches/server/0253-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0252-Add-skeleton-bow-accuracy-option.patch @@ -18,7 +18,7 @@ index 2cadbc0d56908ca978e1735eff07f5e634548606..39d02cf0e31832e30c4f034b0b5385e3 // CraftBukkit end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6afa859dd0d18d57ba438e34a73b512a137d7cb0..c5028b16ee9ae1ad042bb99f5398163e28c48d12 100644 +index a793533817368077d70d120f8f443b4a87b70e64..c9f1f1340f69250c82f3dfcac593274dad34645e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2585,6 +2585,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0254-Add-death-screen-API.patch b/patches/server/0253-Add-death-screen-API.patch similarity index 100% rename from patches/server/0254-Add-death-screen-API.patch rename to patches/server/0253-Add-death-screen-API.patch diff --git a/patches/server/0255-Implement-ram-and-rambar-commands.patch b/patches/server/0254-Implement-ram-and-rambar-commands.patch similarity index 98% rename from patches/server/0255-Implement-ram-and-rambar-commands.patch rename to patches/server/0254-Implement-ram-and-rambar-commands.patch index fdc889116..ecedd2674 100644 --- a/patches/server/0255-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0254-Implement-ram-and-rambar-commands.patch @@ -18,10 +18,10 @@ index 0ba926b6ff0bd54159765cc7f37d1753ded89dee..cbbddb924f46203bd600b838fc22902c 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 2518ad5af51b944393e53508010a18df111c5c83..f0414dd16a97461f65c2965c035da811a0d65c01 100644 +index 0286b1bd461a5050cb78b9485bac84909ae91150..627b69f08f609dc0a4d87327a187009651046cf4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -326,6 +326,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -332,6 +332,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public boolean purpurClient = false; // Purpur private boolean tpsBar = false; // Purpur private boolean compassBar = false; // Purpur @@ -29,7 +29,7 @@ index 2518ad5af51b944393e53508010a18df111c5c83..f0414dd16a97461f65c2965c035da811 // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -690,6 +691,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -696,6 +697,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur @@ -37,7 +37,7 @@ index 2518ad5af51b944393e53508010a18df111c5c83..f0414dd16a97461f65c2965c035da811 } @Override -@@ -742,6 +744,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -748,6 +750,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple } this.saveEnderPearls(nbt); @@ -45,7 +45,7 @@ index 2518ad5af51b944393e53508010a18df111c5c83..f0414dd16a97461f65c2965c035da811 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -3473,5 +3476,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3479,5 +3482,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void compassBar(boolean compassBar) { this.compassBar = compassBar; } diff --git a/patches/server/0256-Configurable-block-blast-resistance.patch b/patches/server/0255-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0256-Configurable-block-blast-resistance.patch rename to patches/server/0255-Configurable-block-blast-resistance.patch diff --git a/patches/server/0257-Configurable-block-fall-damage-modifiers.patch b/patches/server/0256-Configurable-block-fall-damage-modifiers.patch similarity index 96% rename from patches/server/0257-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0256-Configurable-block-fall-damage-modifiers.patch index 958f6de27..fc1e59e3e 100644 --- a/patches/server/0257-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0256-Configurable-block-fall-damage-modifiers.patch @@ -18,7 +18,7 @@ index 3b19395f2ddee654a77df5738a1942a08c20c179..c130d316e87f1f896d33ab43831063a8 @Override diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index e8c649d1db3dd82bb544aa6e96b6a19e96559b09..395a093c1daf8236faaa92405472a500afc3ce68 100644 +index d324eefa500c528776df698e7f9dcdeab76da167..1748aea6613e0c8081f70092c9431e7e04907383 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java @@ -88,6 +88,10 @@ public class Block extends BlockBehaviour implements ItemLike { @@ -29,10 +29,10 @@ index e8c649d1db3dd82bb544aa6e96b6a19e96559b09..395a093c1daf8236faaa92405472a500 + public float fallDamageMultiplier = 1.0F; + public float fallDistanceMultiplier = 1.0F; + // Purpur end - // Paper start + // Paper start - Protect Bedrock and End Portal/Frames from being destroyed public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -480,7 +484,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -473,7 +477,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { diff --git a/patches/server/0258-Language-API.patch b/patches/server/0257-Language-API.patch similarity index 93% rename from patches/server/0258-Language-API.patch rename to patches/server/0257-Language-API.patch index c89b4d79e..216708704 100644 --- a/patches/server/0258-Language-API.patch +++ b/patches/server/0257-Language-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d63629001dc92ae4b2055df58bde5d97c0ecc3bc..e690c1f423ee054b47ec080ba2f8e14c73128890 100644 +index e2d6bdac09fcef3f3c8a533139ae28c63df0241e..e7a4e019ce26b8fd21481e52356ee38130cbeeea 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -414,6 +414,20 @@ public final class CraftServer implements Server { diff --git a/patches/server/0259-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0258-Milk-Keeps-Beneficial-Effects.patch similarity index 93% rename from patches/server/0259-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0258-Milk-Keeps-Beneficial-Effects.patch index 6260f3dca..acb5afb01 100644 --- a/patches/server/0259-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0258-Milk-Keeps-Beneficial-Effects.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 38a7bde1bc2836352a62dfe1dd3b9a60877c20e2..ade67ca5e0b203f9554b792302da576c6d419ea5 100644 +index cd2fd85178acdfffc07b72bc0419a73e1d1bef64..18648eed57dca05d89692064dcf4aa3172cd5914 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1151,6 +1151,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1149,6 +1149,7 @@ public abstract class LivingEntity extends Entity implements Attackable { while (iterator.hasNext()) { MobEffectInstance effect = iterator.next(); @@ -30,7 +30,7 @@ index ac4b31ab1297b34b5105c7bdc30ddea6d2d5e9a3..959e10586cddaae2590d2d84f5fd809d 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 c5028b16ee9ae1ad042bb99f5398163e28c48d12..ebc20d82351dc6b9834a3dcb3ed61d22e821a45c 100644 +index c9f1f1340f69250c82f3dfcac593274dad34645e..5d32b12a6743a40d30fd38692ad6f677b0076397 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -144,6 +144,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0260-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0259-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0260-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0259-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0261-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0260-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0261-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0260-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0262-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 100% rename from patches/server/0262-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch diff --git a/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0262-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/0262-Add-option-to-allow-creeper-to-encircle-target-when-.patch index b8f7eefba..0d36509ad 100644 --- a/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0262-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 ebc20d82351dc6b9834a3dcb3ed61d22e821a45c..f8a0049919f7542d8eccf5f2b1b5d2ee1a696943 100644 +index 5d32b12a6743a40d30fd38692ad6f677b0076397..12e536b6c4f8c3b000802d2cc76aeca9e4cf7b21 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1424,6 +1424,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0264-Fire-Immunity-API.patch b/patches/server/0263-Fire-Immunity-API.patch similarity index 97% rename from patches/server/0264-Fire-Immunity-API.patch rename to patches/server/0263-Fire-Immunity-API.patch index 2d0420a44..fd3763e7d 100644 --- a/patches/server/0264-Fire-Immunity-API.patch +++ b/patches/server/0263-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 e5eadc68c1e1b0fe2b7d638d2630ab22c332b381..7976a517f56b8af3a7c2aab5a4fc829acd87fa64 100644 +index 6474b375c05eebc1fa3468f2963770dfff8dec5c..c32803af95324003e803847e7a64735663811e2f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -432,6 +432,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0264-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 93% rename from patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0264-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 13513ea71..382e5a0b3 100644 --- a/patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0264-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 285ef87b7088f905bb77c408465ccbca6644454f..49da1a25e39d6e58786f6f20177610d5aa7626f6 100644 +index c32803af95324003e803847e7a64735663811e2f..6b32cd1391f39b6fe61c3c8c00249d1d4278cbd0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1032,6 +1032,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -17,7 +17,7 @@ index 285ef87b7088f905bb77c408465ccbca6644454f..49da1a25e39d6e58786f6f20177610d5 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f8a0049919f7542d8eccf5f2b1b5d2ee1a696943..c6d307c69afd9fc58c4bde7f8b755d96d9bcf9d6 100644 +index 12e536b6c4f8c3b000802d2cc76aeca9e4cf7b21..d4bb4e5d6caa7848aeec284ed19b53bf34bfd5cf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -416,6 +416,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0266-Added-got-ram-event.patch b/patches/server/0265-Added-got-ram-event.patch similarity index 100% rename from patches/server/0266-Added-got-ram-event.patch rename to patches/server/0265-Added-got-ram-event.patch diff --git a/patches/server/0267-Log-skipped-entity-s-position.patch b/patches/server/0266-Log-skipped-entity-s-position.patch similarity index 86% rename from patches/server/0267-Log-skipped-entity-s-position.patch rename to patches/server/0266-Log-skipped-entity-s-position.patch index 1357e3005..70ff6ce7b 100644 --- a/patches/server/0267-Log-skipped-entity-s-position.patch +++ b/patches/server/0266-Log-skipped-entity-s-position.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 663dde75a9fc4fd7323ae9abe73cdb83aa74f2b3..f297e771e677ddefa3bf0d6f50d04f2e50197c30 100644 +index 5796f9bdde43d5b681ee2aaa7bc47076114af321..c1a870fd22b193388513aad0ac4f3ce0ad7c8195 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -691,6 +691,12 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -682,6 +682,12 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(nbt); }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); diff --git a/patches/server/0268-End-Crystal-Cramming.patch b/patches/server/0267-End-Crystal-Cramming.patch similarity index 96% rename from patches/server/0268-End-Crystal-Cramming.patch rename to patches/server/0267-End-Crystal-Cramming.patch index ce1a99167..2c0729ee0 100644 --- a/patches/server/0268-End-Crystal-Cramming.patch +++ b/patches/server/0267-End-Crystal-Cramming.patch @@ -17,7 +17,7 @@ index 305c3350116f656c3d0e6134e4d8023eac50f3ad..b1db1e92de3a88a0f0e0fdb42b0bf973 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c6d307c69afd9fc58c4bde7f8b755d96d9bcf9d6..91d4c39e72296147bc095c1fee943c63082cf848 100644 +index d4bb4e5d6caa7848aeec284ed19b53bf34bfd5cf..2dc5bf6ae677d6b78953f04fcfa2a937b9adde88 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -913,6 +913,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0268-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/0268-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index f9f8e15ee..d2157579c 100644 --- a/patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0268-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,7 +36,7 @@ index fbc6b0099af34b0247f6144a9cef020f9ccddeef..2d190b3a6378b8cbadfa65510df1ccfb BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 91d4c39e72296147bc095c1fee943c63082cf848..fc772f2be46eada82f6a3db52fef930c82a76e6c 100644 +index 2dc5bf6ae677d6b78953f04fcfa2a937b9adde88..2a44f924fbfaf175b1fd172d311bb4ea13f73e26 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -812,11 +812,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0269-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0269-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0270-Config-to-remove-explosion-radius-clamp.patch similarity index 96% rename from patches/server/0271-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0270-Config-to-remove-explosion-radius-clamp.patch index 1e7304e10..3ced0e34c 100644 --- a/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0270-Config-to-remove-explosion-radius-clamp.patch @@ -27,7 +27,7 @@ index bbbd451ff184be8fa13bd93d53c89a9502f9951a..913f7d5fd9823eea9fad2d4e6689511f } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fc772f2be46eada82f6a3db52fef930c82a76e6c..df551a65fbd722c15de5b5a14fb1dff60a839e85 100644 +index 2a44f924fbfaf175b1fd172d311bb4ea13f73e26..dc0759e6157aaaf1738c910848f2ccd4ae0a75b6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -223,6 +223,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0271-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0271-bonemealable-sugarcane-cactus-and-netherwart.patch index d8c014db7..8fdd9512f 100644 --- a/patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0271-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,7 +137,7 @@ index 547ea09ed84595286c97c128b3b96f6d387ae25f..d0f8a13f27132257ece6dadf736c2dc6 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df551a65fbd722c15de5b5a14fb1dff60a839e85..44f6d8b1b4653bf4398f914045deadb9c34a3d35 100644 +index dc0759e6157aaaf1738c910848f2ccd4ae0a75b6..777139fb7098a9df8877cfe2e74329685a6389e0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -866,8 +866,20 @@ public class PurpurWorldConfig { diff --git a/patches/server/0273-Add-PreExplodeEvents.patch b/patches/server/0272-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0273-Add-PreExplodeEvents.patch rename to patches/server/0272-Add-PreExplodeEvents.patch diff --git a/patches/server/0274-Improve-output-of-plugins-command.patch b/patches/server/0273-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0274-Improve-output-of-plugins-command.patch rename to patches/server/0273-Improve-output-of-plugins-command.patch diff --git a/patches/server/0275-Make-GUI-Great-Again.patch b/patches/server/0274-Make-GUI-Great-Again.patch similarity index 99% rename from patches/server/0275-Make-GUI-Great-Again.patch rename to patches/server/0274-Make-GUI-Great-Again.patch index d87d272a1..930449976 100644 --- a/patches/server/0275-Make-GUI-Great-Again.patch +++ b/patches/server/0274-Make-GUI-Great-Again.patch @@ -96,10 +96,10 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 71420de8a37b004dfa3940abb537321cc82e1993..b96c331ec8c196b2a08dc2b04db475426805ba6a 100644 +index 3ddc5f213954f181e0e3b8d44808ea12765e8e55..e9ad8e2ac267c46df80e884308df8bb12d0deeff 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -113,6 +113,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -111,6 +111,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface return; } // Paper start - Use TerminalConsoleAppender diff --git a/patches/server/0276-Stored-Bee-API.patch b/patches/server/0275-Stored-Bee-API.patch similarity index 100% rename from patches/server/0276-Stored-Bee-API.patch rename to patches/server/0275-Stored-Bee-API.patch diff --git a/patches/server/0277-Shears-can-defuse-TNT.patch b/patches/server/0276-Shears-can-defuse-TNT.patch similarity index 100% rename from patches/server/0277-Shears-can-defuse-TNT.patch rename to patches/server/0276-Shears-can-defuse-TNT.patch diff --git a/patches/server/0278-Explorer-Map-API.patch b/patches/server/0277-Explorer-Map-API.patch similarity index 100% rename from patches/server/0278-Explorer-Map-API.patch rename to patches/server/0277-Explorer-Map-API.patch diff --git a/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0278-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/0278-Option-Ocelot-Spawn-Under-Sea-Level.patch index 408df9232..c348487cf 100644 --- a/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0278-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,7 +18,7 @@ index 14634de26c218a3d26afd3e7e6ca89c1a0595178..dee59cb4b87845c940ee089aa932aa69 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1e561d12f4b04a536cc891e6a6d123c90e77266c..a433ca73bdc61aed436743daadaa58e818d54f50 100644 +index 463c8873ba1fcc8f081a1909c1fc8967589f4d4f..2f9a512a8e4162385ca1b28c91e805112c11949b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2135,6 +2135,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0279-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 100% rename from patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0279-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch diff --git a/patches/server/0281-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0280-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0281-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0280-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0282-place-end-crystal-on-any-block.patch b/patches/server/0281-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/0281-place-end-crystal-on-any-block.patch index 0a45aa69d..b8f0c5da9 100644 --- a/patches/server/0282-place-end-crystal-on-any-block.patch +++ b/patches/server/0281-place-end-crystal-on-any-block.patch @@ -18,7 +18,7 @@ index b62db8c7c8c57e43869ee239ebf4b02f112355d9..f60e39e56a5dab2de62ae9cfd7a30a70 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 10b7fabd0c04a62b328dfd8cf0ad6797e3d5e4ee..62beabc316c3faba3b1c4d471fb33e33cd4b1a3d 100644 +index 341397cdf45be30cffbc65453dc643868ce51bcc..9511547970d14bc779ba5afc3675439137c14ae6 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/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0282-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/0282-Add-option-to-disable-the-copper-oxidation-proximity.patch index 79ea65ee4..0ed8f6d26 100644 --- a/patches/server/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0282-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 62beabc316c3faba3b1c4d471fb33e33cd4b1a3d..84efc4ae58a3a33ac15282c462df72982248dac3 100644 +index 9511547970d14bc779ba5afc3675439137c14ae6..ac77bcccd70be1a83e4125ba848eb8e6d676406a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -145,6 +145,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0284-register-minecraft-debug-commands.patch b/patches/server/0283-register-minecraft-debug-commands.patch similarity index 100% rename from patches/server/0284-register-minecraft-debug-commands.patch rename to patches/server/0283-register-minecraft-debug-commands.patch diff --git a/patches/server/0285-Configurable-villager-search-radius.patch b/patches/server/0284-Configurable-villager-search-radius.patch similarity index 53% rename from patches/server/0285-Configurable-villager-search-radius.patch rename to patches/server/0284-Configurable-villager-search-radius.patch index 837e6f29a..c1b222613 100644 --- a/patches/server/0285-Configurable-villager-search-radius.patch +++ b/patches/server/0284-Configurable-villager-search-radius.patch @@ -5,36 +5,33 @@ Subject: [PATCH] Configurable-villager-search-radius diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index e8aa27547e3fa1a42720889c7038d4fb0273e7b5..928f7fb89329df8cc3192af122cf6644a869b48d 100644 +index e1b6fe9ecda25f86431baf414f1bfd3a26a8b2bd..3d7578605812021bc84b99d4db1672a682d897ad 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -72,7 +72,7 @@ public class AcquirePoi { - } +@@ -73,7 +73,7 @@ public class AcquirePoi { }; - Set, BlockPos>> set = poiManager.findAllClosestFirstWithType( -- poiPredicate, predicate2, entity.blockPosition(), 48, PoiManager.Occupancy.HAS_SPACE -+ poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE - ) - .limit(5L) - .collect(Collectors.toSet()); + // Paper start - optimise POI access + java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); +- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); ++ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); + Set, BlockPos>> set = new java.util.HashSet<>(poiposes); + // Paper end - optimise POI access + Path path = findPathToPois(entity, set); diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -index d5a549f08b98c80a5cf0eef02cb8a389c32dfecb..2903703a5fb09649dbbc8d640af15039cab42434 100644 +index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c53f76da2 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -@@ -54,9 +54,9 @@ public class NearestBedSensor extends Sensor { - } - }; - Set, BlockPos>> set = poiManager.findAllWithType( -- holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY -+ holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY - ) -- .collect(Collectors.toSet()); -+ .collect(Collectors.toSet()); // Purpur - Path path = AcquirePoi.findPathToPois(entity, set); +@@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor { + // Paper start - optimise POI access + java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); + // don't ask me why it's unbounded. ask mojang. +- io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); ++ io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur + Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); + // Paper end - optimise POI access if (path != null && path.canReach()) { - BlockPos blockPos = path.getTarget(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 84efc4ae58a3a33ac15282c462df72982248dac3..4b01853b4aaae722738e5d1e0256f87d468b0df7 100644 +index ac77bcccd70be1a83e4125ba848eb8e6d676406a..303feea75a2f4b2c11526cfa4013433be623f16f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2988,6 +2988,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0285-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/0285-option-to-make-ravagers-afraid-of-rabbits.patch index 89acf9e04..2c02c0abe 100644 --- a/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0285-option-to-make-ravagers-afraid-of-rabbits.patch @@ -18,7 +18,7 @@ index 06aa58b0e036ce4e9615365d03060eb9d9a518b7..487f21c6e6ffc0dc9c0733241a8ded8c 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 4b01853b4aaae722738e5d1e0256f87d468b0df7..b6b308735adc57e1cefeda63d90460716ee4a65f 100644 +index 303feea75a2f4b2c11526cfa4013433be623f16f..742a46ef95a5e46e9c338cedcecaf008a7108c58 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2470,6 +2470,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0287-config-for-startup-commands.patch b/patches/server/0286-config-for-startup-commands.patch similarity index 93% rename from patches/server/0287-config-for-startup-commands.patch rename to patches/server/0286-config-for-startup-commands.patch index 8c05f52fc..bb466875c 100644 --- a/patches/server/0287-config-for-startup-commands.patch +++ b/patches/server/0286-config-for-startup-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] config for startup commands diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 733020a0339129cf4bbe64e0c57181957dd0746c..d7194371ca11364831d566099a53dd9ce39915be 100644 +index 940a2aa8bd85d037792bc0ecb0d1f1a9e5456f0d..6acffd0d74f35ea9ec7e9937b65c3fc81c7769e5 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1292,6 +1292,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop