From 93e7010927e52a86da655be87bdaa2f20b2c5f01 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Tue, 26 Dec 2023 19:50:19 -0500 Subject: [PATCH] Updated Upstream (Gale/Purpur/Dependencies) --- build.gradle.kts | 2 +- gradle.properties | 2 +- patches/api/0001-Leaf-config-files.patch | 4 +- patches/api/0002-Pufferfish-Sentry.patch | 4 +- patches/api/0003-Purpur-API-Changes.patch | 28 +-- patches/api/0005-Bump-Dependencies.patch | 25 ++- patches/api/0007-KeYi-Player-Skull-API.patch | 4 +- patches/api/0008-Slice-Smooth-Teleports.patch | 4 +- patches/server/0001-Rebrand.patch | 12 +- patches/server/0002-Leaf-Config.patch | 8 +- ...005-Pufferfish-Optimize-mob-spawning.patch | 22 +-- ...fferfish-Dynamic-Activation-of-Brain.patch | 4 +- .../server/0008-Pufferfish-Entity-TTL.patch | 4 +- .../server/0009-Purpur-Server-Changes.patch | 180 ++++++++---------- patches/server/0011-Remove-Timings.patch | 37 ++-- patches/server/0012-Bump-Dependencies.patch | 40 ++-- ...eck-for-Broken-BungeeCord-Configurat.patch | 4 +- .../server/0017-KeYi-Player-Skull-API.patch | 8 +- .../server/0023-Slice-Smooth-Teleports.patch | 6 +- patches/server/0025-Leaves-Server-Utils.patch | 12 +- .../server/0026-Leaves-Protocol-Core.patch | 12 +- patches/server/0034-Fix-tracker-NPE.patch | 10 +- patches/server/0036-Reduce-canSee-work.patch | 8 +- .../0041-Fix-keepalive-kicked-name.patch | 4 +- ...oleAppender-NPE-error-on-server-clos.patch | 8 +- 25 files changed, 206 insertions(+), 246 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f29fa41a..fca3a799 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,7 +15,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.8.11:fat") + remapper("net.fabricmc:tiny-remapper:0.9.0:fat") decompiler("org.vineflower:vineflower:1.9.3") paperclip("io.papermc:paperclip:3.0.4-SNAPSHOT") } diff --git a/gradle.properties b/gradle.properties index 1f07d64b..ee3f2951 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.dreeam.leaf version = 1.20.4-R0.1-SNAPSHOT -galeCommit = 78098840227379410ccc610bddafa6a7956c6ddd +galeCommit = 993b4ec0aca9326ed9910c237d656673e83a3edb org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Leaf-config-files.patch b/patches/api/0001-Leaf-config-files.patch index f97ab72a..4d3d0135 100644 --- a/patches/api/0001-Leaf-config-files.patch +++ b/patches/api/0001-Leaf-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Leaf config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 0f15d0f049e3bd7461c5ebd22686e638f9bfe653..74317f10d7f7b31eac50b4fcff5b3cc96c12bce1 100644 +index 1e1028b4ac54e82b9bb30e958f651a0ca2b0dc86..b39a5ca6f4fa32d76acafd1fdd5b5af8954e34a4 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2243,6 +2243,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2251,6 +2251,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi // Paper end diff --git a/patches/api/0002-Pufferfish-Sentry.patch b/patches/api/0002-Pufferfish-Sentry.patch index a6fae2cd..78b73214 100644 --- a/patches/api/0002-Pufferfish-Sentry.patch +++ b/patches/api/0002-Pufferfish-Sentry.patch @@ -7,14 +7,14 @@ Original license: GPL v3 Original project: https://github.com/pufferfish-gg/Pufferfish diff --git a/build.gradle.kts b/build.gradle.kts -index 2149d23d695e0dd8ebab9f049ee6c3a164b5918b..8c1be45e89ca5ab6b59c2e9b4b0aad347464abfb 100644 +index 3f11b99f87eb380daeb1f660f63a8347958e1e0f..3f01a142439616c88c3b5da4d6cab80bfdaa2a76 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -51,6 +51,7 @@ dependencies { apiAndDocs("net.kyori:adventure-text-logger-slf4j") api("org.apache.logging.log4j:log4j-api:$log4jVersion") api("org.slf4j:slf4j-api:$slf4jVersion") -+ api("io.sentry:sentry:7.0.0") // Pufferfish ++ api("io.sentry:sentry:7.1.0") // Pufferfish implementation("org.ow2.asm:asm:9.5") implementation("org.ow2.asm:asm-commons:9.5") diff --git a/patches/api/0003-Purpur-API-Changes.patch b/patches/api/0003-Purpur-API-Changes.patch index b07fcc8d..f0545273 100644 --- a/patches/api/0003-Purpur-API-Changes.patch +++ b/patches/api/0003-Purpur-API-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 9e1216de506439171c08773730faea0f0a617a83 +Commit: 6f17a3da52ca57ed1647593b8b37e4306fff8b70 Patches below are removed in this patch: Pufferfish-API-Changes.patch @@ -57,10 +57,10 @@ index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48c @Override diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 9575de9c03f4db2b118f8cbf3b5f59d80e2a84f3..024372985abb5c896c44df58b47e6aafa1c9a663 100644 +index 097cecdf1a535539b660f2edf4776ba85458ce0a..85dd549064ddcdb51b6d26ba66985e15f23886f4 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2899,4 +2899,127 @@ public final class Bukkit { +@@ -2909,4 +2909,127 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -279,10 +279,10 @@ index 918a045165cdcde264bc24082b7afebb407271de..687d11619379aead7f665d4a5f8f8bcc + // Purpur end } diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 9f86ad25a57b3f6e6bda1ce657833837cb3b2292..7a8a2387d8ae5aae44325da9277e8284b4caa8c0 100644 +index f9af60356da4668cec8b24e73f5747ab82e35a91..b304ad1307cdd6785653b1eab9781e070fb14c5a 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -11500,4 +11500,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla +@@ -11557,4 +11557,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla public boolean isEnabledByFeature(@NotNull World world) { return Bukkit.getDataPackManager().isEnabledByFeature(this, world); } @@ -443,10 +443,10 @@ index bce07d84cafca677bb6fad78c21b82097f06430c..4ef0fa4f1ef72bb784674671473c6a32 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index fe897734148e4505bdcf99d6291f5c7411400e6a..3d11ac5b66dc9799f1a04d2151ca9d9a7eaeff13 100644 +index b39a5ca6f4fa32d76acafd1fdd5b5af8954e34a4..1e7e16d33a57d930276a07096a58be2f6178ccc7 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2243,6 +2243,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2251,6 +2251,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi // Paper end @@ -465,7 +465,7 @@ index fe897734148e4505bdcf99d6291f5c7411400e6a..3d11ac5b66dc9799f1a04d2151ca9d9a // Leaf start @NotNull public org.bukkit.configuration.file.YamlConfiguration getLeafConfig() -@@ -2560,4 +2572,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2568,4 +2580,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi long getLastTickOversleepTime(); // Gale end - YAPFA - last tick time - API @@ -578,10 +578,10 @@ index fe897734148e4505bdcf99d6291f5c7411400e6a..3d11ac5b66dc9799f1a04d2151ca9d9a + // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 567a36a4887da8994c9170e2885aa8cc357efa0c..405d60bd2c99ba741d2614b16f4bda5da48a0387 100644 +index d3081d4445af73c2c7b23c5fc60861f184ac808e..e4f0d5ee85371374453b837947c7f84c7731128c 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4235,6 +4235,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4174,6 +4174,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); @@ -956,10 +956,10 @@ index 58017fce436cdbda255f7172fbdadb726d4b113c..05600fc8bf2a61aca8094029bc4c208a + // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index a599ed2795ba1baf2cbb465d1c7145580c27e1ea..298acbfb93663e40e627f6a47d51fd87a1551feb 100644 +index e68c71047b2bc1b456c380db25b3ff376852b4a9..6b025794c34e1b4b47b4b5ae1375705bdedad078 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1243,4 +1243,41 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1270,4 +1270,41 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end @@ -1027,10 +1027,10 @@ index bc84b892cae5fe7019a3ad481e9da79956efa1fe..48eb5b00c460cccde29d327cef1d63fc + // Purpur end } diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index d323109ef01bcd31970a749854eeaf8805e8de6b..dd3726acb045b908053f1fdf3a06bf025823f8c3 100644 +index 2238cbe3f7680e759baa8c91e4db6ad5202e3cab..32fc5a73c79858e31c3de45e16179714d3bea667 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3494,4 +3494,123 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3545,4 +3545,123 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end diff --git a/patches/api/0005-Bump-Dependencies.patch b/patches/api/0005-Bump-Dependencies.patch index 8ca1ce54..6b10914d 100644 --- a/patches/api/0005-Bump-Dependencies.patch +++ b/patches/api/0005-Bump-Dependencies.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index 8c1be45e89ca5ab6b59c2e9b4b0aad347464abfb..240567146f24ac007409ab0fa73546f88592f46f 100644 +index 3f01a142439616c88c3b5da4d6cab80bfdaa2a76..dee13c231683420cc5e1c5bbae280020b40c36ae 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,11 +9,11 @@ java { @@ -15,7 +15,7 @@ index 8c1be45e89ca5ab6b59c2e9b4b0aad347464abfb..240567146f24ac007409ab0fa73546f8 -val annotationsVersion = "24.0.1" +val annotationsVersion = "24.1.0" // Leaf - Bump Dependencies val bungeeCordChatVersion = "1.20-R0.1" - val adventureVersion = "4.14.0" + val adventureVersion = "4.15.0" val slf4jVersion = "2.0.9" -val log4jVersion = "2.17.1" +val log4jVersion = "2.22.0" // Leaf - Bump Dependencies @@ -27,7 +27,7 @@ index 8c1be45e89ca5ab6b59c2e9b4b0aad347464abfb..240567146f24ac007409ab0fa73546f8 dependencies { // api dependencies are listed transitively to API consumers - api("com.google.guava:guava:32.1.2-jre") -+ api("com.google.guava:guava:32.1.3-jre") // Leaf - Bump Dependencies ++ api("com.google.guava:guava:33.0.0-jre") // Leaf - Bump Dependencies api("com.google.code.gson:gson:2.10.1") // Paper start - adventure api("net.md-5:bungeecord-chat:$bungeeCordChatVersion-deprecated+build.14") { @@ -40,9 +40,9 @@ index 8c1be45e89ca5ab6b59c2e9b4b0aad347464abfb..240567146f24ac007409ab0fa73546f8 apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion")) apiAndDocs("net.kyori:adventure-api") apiAndDocs("net.kyori:adventure-text-minimessage") -@@ -53,29 +53,31 @@ dependencies { +@@ -53,11 +53,12 @@ dependencies { api("org.slf4j:slf4j-api:$slf4jVersion") - api("io.sentry:sentry:7.0.0") // Pufferfish + api("io.sentry:sentry:7.1.0") // Pufferfish - implementation("org.ow2.asm:asm:9.5") - implementation("org.ow2.asm:asm-commons:9.5") @@ -51,20 +51,17 @@ index 8c1be45e89ca5ab6b59c2e9b4b0aad347464abfb..240567146f24ac007409ab0fa73546f8 + implementation("org.ow2.asm:asm-commons:9.6") // Paper end -- api("org.apache.maven:maven-resolver-provider:3.8.5") -- compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3") -- compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") +- api("org.apache.maven:maven-resolver-provider:3.9.6") // Paper - make API dependency for Paper Plugins + api("org.apache.maven:maven-resolver-provider:3.9.6") -+ compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") -+ compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") + compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") + compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") - val annotations = "org.jetbrains:annotations:$annotationsVersion" // Paper - we don't want Java 5 annotations... - compileOnly(annotations) +@@ -66,16 +67,17 @@ dependencies { testCompileOnly(annotations) // Paper start - add checker - val checkerQual = "org.checkerframework:checker-qual:3.33.0" -+ val checkerQual = "org.checkerframework:checker-qual:3.41.0" // Leaf - Bump Dependencies ++ val checkerQual = "org.checkerframework:checker-qual:3.42.0" // Leaf - Bump Dependencies compileOnlyApi(checkerQual) testCompileOnly(checkerQual) // Paper end @@ -87,7 +84,7 @@ index 8c1be45e89ca5ab6b59c2e9b4b0aad347464abfb..240567146f24ac007409ab0fa73546f8 options.isDocFilesSubDirs = true options.links( - "https://guava.dev/releases/32.1.2-jre/api/docs/", -+ "https://guava.dev/releases/32.1.3-jre/api/docs/", // Leaf - Bump Dependencies ++ "https://guava.dev/releases/33.0.0-jre/api/docs/", // Leaf - Bump Dependencies "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations // "https://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/", // Paper - don't link to bungee chat diff --git a/patches/api/0007-KeYi-Player-Skull-API.patch b/patches/api/0007-KeYi-Player-Skull-API.patch index bd341242..49f3fb8f 100644 --- a/patches/api/0007-KeYi-Player-Skull-API.patch +++ b/patches/api/0007-KeYi-Player-Skull-API.patch @@ -7,7 +7,7 @@ Original license: MIT Original project: https://github.com/KeYiMC/KeYi diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index dd3726acb045b908053f1fdf3a06bf025823f8c3..e13e160aa2a404db7b84a1bed1e66f6f2f9232bc 100644 +index 32fc5a73c79858e31c3de45e16179714d3bea667..a1584415383708b3e9693c91f21a7bf9daab1b25 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -9,6 +9,10 @@ import java.util.Date; @@ -21,7 +21,7 @@ index dd3726acb045b908053f1fdf3a06bf025823f8c3..e13e160aa2a404db7b84a1bed1e66f6f import org.bukkit.DyeColor; import org.bukkit.Effect; import org.bukkit.GameMode; -@@ -3613,4 +3617,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3664,4 +3668,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM sendDeathScreen(message); } // Purpur end diff --git a/patches/api/0008-Slice-Smooth-Teleports.patch b/patches/api/0008-Slice-Smooth-Teleports.patch index 86bb4cd9..d925250c 100644 --- a/patches/api/0008-Slice-Smooth-Teleports.patch +++ b/patches/api/0008-Slice-Smooth-Teleports.patch @@ -7,10 +7,10 @@ Original license: MIT Original project: https://github.com/Cryptite/Slice diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index e13e160aa2a404db7b84a1bed1e66f6f2f9232bc..3c5a76050deb45d15e3608d0a99350c09bd1e766 100644 +index a1584415383708b3e9693c91f21a7bf9daab1b25..a262d8bf4b6f17141246ecaa0cee4c778629f424 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3361,6 +3361,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3412,6 +3412,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM String getClientBrandName(); // Paper end diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 3788ca42..7034e5a4 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index e800e16e408d8a2f79c98bba229e878665b332db..40cd0233582c2f4e05c57853572eac7abc1f4015 100644 +index dfd92a33497785f28c7ade16da900f7bb851cada..941105ef0413f058a9a212a141ef8be9f5cce50f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -29,7 +29,7 @@ dependencies { - extraRuntime(platform("net.kyori:adventure-bom:4.15.0-SNAPSHOT")) +@@ -15,7 +15,7 @@ val alsoShade: Configuration by configurations.creating + dependencies { // Gale start - project setup // Depend on own API - implementation(project(":gale-api")) @@ -17,7 +17,7 @@ index e800e16e408d8a2f79c98bba229e878665b332db..40cd0233582c2f4e05c57853572eac7a // Depend on Paper MojangAPI implementation("io.papermc.paper:paper-mojangapi:${project.version}") { exclude("io.papermc.paper", "paper-api") -@@ -101,7 +101,7 @@ tasks.jar { +@@ -87,7 +87,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -86,10 +86,10 @@ index f1bf143d5a97a4afbba6b2e7c07a5f46678c3260..69d7ffeae56f4e9e8bd33b23c9322f1c while (this.getRunningThread().isAlive()) { this.getRunningThread().stop(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 15f1bccace7f03ab5fe63dd9d23441018835e7be..cae462613284bea0029e1087f80d758e89090c12 100644 +index 37ccd8632b4f78dedee322c12ed8aa580b817ae1..91bf517b233c4bfc10094db216d7dd2db2cbf958 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -273,7 +273,7 @@ import javax.annotation.Nullable; // Paper +@@ -267,7 +267,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { diff --git a/patches/server/0002-Leaf-Config.patch b/patches/server/0002-Leaf-Config.patch index 15fab76f..bc2b8ceb 100644 --- a/patches/server/0002-Leaf-Config.patch +++ b/patches/server/0002-Leaf-Config.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Leaf Config diff --git a/build.gradle.kts b/build.gradle.kts -index 40cd0233582c2f4e05c57853572eac7abc1f4015..2b6b85708f3464e3d65de298c6e120145868ad5a 100644 +index 941105ef0413f058a9a212a141ef8be9f5cce50f..60929e246b9347eb17162bace30106683fc45363 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -71,6 +71,13 @@ dependencies { - runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3") - runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") +@@ -57,6 +57,13 @@ dependencies { + runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") + runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") + // Pufferfish start + implementation("org.yaml:snakeyaml:2.2") diff --git a/patches/server/0005-Pufferfish-Optimize-mob-spawning.patch b/patches/server/0005-Pufferfish-Optimize-mob-spawning.patch index 51d4b2c6..c1ecdd59 100644 --- a/patches/server/0005-Pufferfish-Optimize-mob-spawning.patch +++ b/patches/server/0005-Pufferfish-Optimize-mob-spawning.patch @@ -45,10 +45,10 @@ index fc017f554147eaaee5c436ede2595bccd6b8fd7f..5f1d63343b1d7fbcf19b1ef189504e55 } } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 7fab09e8edf26bd841ab6e51ddf45ac316aa113b..f2070cc0c1a665520b7270b3d72d425535288f08 100644 +index 322fca6749d6f7fe432e3510c22ab369ad2db93f..104cdc470e337c382d51988cb6d47e1903fea4ce 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -244,7 +244,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -243,7 +243,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper end // Paper start - optimise chunk tick iteration public final it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet needsChangeBroadcasting = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<>(); @@ -58,7 +58,7 @@ index 7fab09e8edf26bd841ab6e51ddf45ac316aa113b..f2070cc0c1a665520b7270b3d72d4255 public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index b4b6f21556717900b7ac49f8bead34a95362d4de..c1a140b9d197c06451fe338c28adc5bdee1183a3 100644 +index 6dce2cb25a5e8b7c979a3f515e4c6c9cfbacd305..58f3d1f957ec85e69b80c78e533cedc3a7ac1937 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -72,6 +72,9 @@ public class ServerChunkCache extends ChunkSource { @@ -71,26 +71,24 @@ index b4b6f21556717900b7ac49f8bead34a95362d4de..c1a140b9d197c06451fe338c28adc5bd private static int getChunkCacheKey(int x, int z) { return x & 3 | ((z & 3) << 2); -@@ -550,6 +553,8 @@ public class ServerChunkCache extends ChunkSource { +@@ -518,6 +521,7 @@ public class ServerChunkCache extends ChunkSource { // Paper start - per player mob spawning int naturalSpawnChunkCount = k; if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled -+ // Pufferfish start - moved down when async processing -+ if (!org.dreeam.leaf.LeafConfig.enableAsyncMobSpawning) { ++ if (!org.dreeam.leaf.LeafConfig.enableAsyncMobSpawning) { // Pufferfish - moved down when async processing // re-set mob counts for (ServerPlayer player : this.level.players) { // Paper start - per player mob spawning backoff -@@ -564,17 +569,22 @@ public class ServerChunkCache extends ChunkSource { +@@ -532,17 +536,21 @@ public class ServerChunkCache extends ChunkSource { } // Paper end - per player mob spawning backoff } - spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, null, true); + lastSpawnState = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, null, true); -+ } -+ // Pufferfish end ++ } // Pufferfish - (endif) moved down when async processing } else { - spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); -+ // Pufferfish start ++ // Pufferfish start - async mob spawning + lastSpawnState = NaturalSpawner.createState(naturalSpawnChunkCount, this.level.getAllEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); + _pufferfish_spawnCountsReady.set(true); + // Pufferfish end @@ -107,7 +105,7 @@ index b4b6f21556717900b7ac49f8bead34a95362d4de..c1a140b9d197c06451fe338c28adc5bd } // Gale end - MultiPaper - skip unnecessary mob spawning computations -@@ -663,8 +673,8 @@ public class ServerChunkCache extends ChunkSource { +@@ -632,8 +640,8 @@ public class ServerChunkCache extends ChunkSource { if (tick && chunk1.chunkStatus.isOrAfter(net.minecraft.server.level.FullChunkStatus.ENTITY_TICKING)) { // Paper end - optimise chunk tick iteration chunk1.incrementInhabitedTime(j); @@ -118,7 +116,7 @@ index b4b6f21556717900b7ac49f8bead34a95362d4de..c1a140b9d197c06451fe338c28adc5bd } if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - optimise chunk tick iteration -@@ -707,6 +717,40 @@ public class ServerChunkCache extends ChunkSource { +@@ -676,6 +684,40 @@ public class ServerChunkCache extends ChunkSource { this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Paper - optimise chunk tick iteration } diff --git a/patches/server/0006-Pufferfish-Dynamic-Activation-of-Brain.patch b/patches/server/0006-Pufferfish-Dynamic-Activation-of-Brain.patch index 5f4a71fb..7dc28c3a 100644 --- a/patches/server/0006-Pufferfish-Dynamic-Activation-of-Brain.patch +++ b/patches/server/0006-Pufferfish-Dynamic-Activation-of-Brain.patch @@ -42,10 +42,10 @@ index b19571f838469dcaba5ecee06fe43de23bcdc776..1c9ba5d25d521126a912522aed8d220c if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 53275a3aef1f4c03324a368a9fef34ffc6307a7f..e3839453a62eb6b6b1272289ccde6a49593aa2f0 100644 +index a2d778cd804362e03ddc73d5e35569c3d5b8d187..e32c97853eb7e94c06a97ec1b1ac0e88dd4126f5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -441,6 +441,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -440,6 +440,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } // Paper end diff --git a/patches/server/0008-Pufferfish-Entity-TTL.patch b/patches/server/0008-Pufferfish-Entity-TTL.patch index 312e765c..20ec66b6 100644 --- a/patches/server/0008-Pufferfish-Entity-TTL.patch +++ b/patches/server/0008-Pufferfish-Entity-TTL.patch @@ -7,10 +7,10 @@ Original license: GPL v3 Original project: https://github.com/pufferfish-gg/Pufferfish diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e3839453a62eb6b6b1272289ccde6a49593aa2f0..b6efe398aa82e1095e6f14e5544e656ebd92ddad 100644 +index e32c97853eb7e94c06a97ec1b1ac0e88dd4126f5..80f210c04d3ae3a36ff46273b5cb7b4a95408ce3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -810,6 +810,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -809,6 +809,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public void tick() { diff --git a/patches/server/0009-Purpur-Server-Changes.patch b/patches/server/0009-Purpur-Server-Changes.patch index 581fa433..6d16a1fb 100644 --- a/patches/server/0009-Purpur-Server-Changes.patch +++ b/patches/server/0009-Purpur-Server-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 9e1216de506439171c08773730faea0f0a617a83 +Commit: 6f17a3da52ca57ed1647593b8b37e4306fff8b70 Patches below are removed in this patch: Metrics change in Purpur-config-files.patch @@ -26,12 +26,13 @@ MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch Remove-Timings.patch Remove-Mojang-Profiler.patch MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch +Fire-Immunity-API.patch diff --git a/build.gradle.kts b/build.gradle.kts -index 2b6b85708f3464e3d65de298c6e120145868ad5a..ee26e30a654cf8238069ba40d271e18b49ea99a3 100644 +index 60929e246b9347eb17162bace30106683fc45363..604ce3a289f33b051074aa0a5e2ff04b74986cb1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -78,6 +78,10 @@ dependencies { +@@ -64,6 +64,10 @@ dependencies { } // Pufferfish end @@ -42,7 +43,7 @@ index 2b6b85708f3464e3d65de298c6e120145868ad5a..ee26e30a654cf8238069ba40d271e18b testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -192,7 +196,7 @@ fun TaskContainer.registerRunTask( +@@ -178,7 +182,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -633,7 +634,7 @@ index e17090003988ad2c890d48666c2234b14d511345..433f1f11b8b92c7d48352416f79ab5a3 return true; } diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index e344fe0f2192f20f5d6d1594f7844b539fadcc7a..b82f4bdd45be544ae6e19ff97dea86bd03a83d7d 100644 +index 79ff5a76b382581c4125b859d9f00ee19d784100..ad203f259d8fbef6157d5580a1ee6950d0594f57 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java @@ -570,11 +570,20 @@ public class Connection extends SimpleChannelInboundHandler> { @@ -885,7 +886,7 @@ index 5cb15e2209d7b315904a1fc6d650ce1e75584271..7e21db60f3ace2a19686d6ea04b994ec for(ServerPlayer serverPlayer : targets) { diff --git a/src/main/java/net/minecraft/server/commands/GiveCommand.java b/src/main/java/net/minecraft/server/commands/GiveCommand.java -index d601d287e94a59ff93b8a83a44dac02544d211df..0ff3b06a98b2f4514b2d861b92dd70fe678ae86c 100644 +index 1b459a8ee8a6bc039e742d65796bc76660a1c765..599172b994d75484f7c7e0ce6d3d3d771c1c44d0 100644 --- a/src/main/java/net/minecraft/server/commands/GiveCommand.java +++ b/src/main/java/net/minecraft/server/commands/GiveCommand.java @@ -59,6 +59,7 @@ public class GiveCommand { @@ -895,7 +896,7 @@ index d601d287e94a59ff93b8a83a44dac02544d211df..0ff3b06a98b2f4514b2d861b92dd70fe + if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping if (flag && itemstack1.isEmpty()) { itemstack1.setCount(1); - entityitem = entityplayer.drop(itemstack1, false, false, false); // SPIGOT-2942: Add boolean to call event + entityitem = entityplayer.drop(itemstack1, false, false, false); // CraftBukkit - SPIGOT-2942: Add boolean to call event diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java index 5f1d63343b1d7fbcf19b1ef189504e55170dce34..f690b0b56bdaf78ce1e64445f14018b705eb3c37 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -1312,7 +1313,7 @@ index 1c9ba5d25d521126a912522aed8d220cc1bb68b4..dd677f1981abd5aaaf9c1ec79dbde176 } // 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 a9d6870abe34e929c476ae199549e26643ef3343..6096a1d08cb2018a178ed925e0a909ed8f5c3888 100644 +index 861213485bb8f2751cfb59ddf15f99360fff34d8..96ed7cb2f34718b7b1cb5abdc386b7c6abcfa6bd 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -282,6 +282,10 @@ public class ServerPlayer extends Player { @@ -1529,7 +1530,7 @@ index a9d6870abe34e929c476ae199549e26643ef3343..6096a1d08cb2018a178ed925e0a909ed public ServerStatsCounter getStats() { return this.stats; } -@@ -2758,4 +2882,50 @@ public class ServerPlayer extends Player { +@@ -2759,4 +2883,50 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -1629,10 +1630,10 @@ index c0b368b8137ca6d90c4e6ec931e07b7ea69f8d9b..d02fec293868dd288e0fa0a9d214774f + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index cb453c4db347b320f19a79ede2d8898106605e25..3eac8b20e31948f98a522a5f7e5088a032e36bed 100644 +index e716cbde9bbf3837b614ea1ddd4f881178d938d0..1ee6f597bbb8ba62b9fddde3fd7a91085dc0def2 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -63,6 +63,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -64,6 +64,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack private static final long KEEPALIVE_LIMIT = KEEPALIVE_LIMIT_IN_SECONDS * 1000; // Gale end - Purpur - send multiple keep-alive packets protected static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support @@ -1640,7 +1641,7 @@ index cb453c4db347b320f19a79ede2d8898106605e25..3eac8b20e31948f98a522a5f7e5088a0 public ServerCommonPacketListenerImpl(MinecraftServer minecraftserver, Connection networkmanager, CommonListenerCookie commonlistenercookie, ServerPlayer player) { // CraftBukkit this.server = minecraftserver; -@@ -156,6 +157,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -157,6 +158,13 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t register custom payload", ex); this.disconnect("Invalid payload REGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } @@ -1912,7 +1913,7 @@ index 7b955100e39a935259887475278b24cf29905577..ca8db3c11a6a794b23f760b7aaee6929 boolean flag1 = packet.getSlotNum() >= 1 && packet.getSlotNum() <= 45; boolean flag2 = itemstack.isEmpty() || itemstack.getDamageValue() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty(); diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index c4a681cdcd4d9e94fa7ef68562b9e41c2390852d..666239aaaec967fb6e1191a4cde58fd6afd44a0b 100644 +index 1fe07210973790dd1a084d330dcad46bb86ac267..d75ea980ef2333f5125f5935f2a139933d7a85c2 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java @@ -278,7 +278,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, @@ -2359,7 +2360,7 @@ index 1f9e0c139988c4c44a26552881647d36965aa4fa..b8d612d22aca74a08b53393c0723a2ae @Override diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f3173a8cdea 100644 +index 80f210c04d3ae3a36ff46273b5cb7b4a95408ce3..50267637d752b8216ee81e09945d7b8f08743c53 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -157,7 +157,7 @@ import org.bukkit.plugin.PluginManager; @@ -2389,7 +2390,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -499,6 +499,25 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -498,6 +498,25 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } @@ -2415,7 +2416,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 public final boolean hardCollides() { return this.hardCollides; } -@@ -581,7 +600,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -580,7 +599,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -2424,7 +2425,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 this.remainingFireTicks = -this.getFireImmuneTicks(); this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); -@@ -903,10 +922,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -902,10 +921,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -2437,7 +2438,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 this.onBelowWorld(); } -@@ -1883,7 +1903,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1878,7 +1898,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.isInWater() || flag; } @@ -2446,7 +2447,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 Entity entity = this.getVehicle(); if (entity instanceof Boat) { -@@ -3033,6 +3053,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3028,6 +3048,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.passengers = ImmutableList.copyOf(list); } @@ -2460,7 +2461,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3073,6 +3100,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3068,6 +3095,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } // Spigot end @@ -2475,7 +2476,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -3152,12 +3187,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3147,12 +3182,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return Vec3.directionFromRotation(this.getRotationVector()); } @@ -2492,7 +2493,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 } this.isInsidePortal = true; -@@ -3206,7 +3244,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3201,7 +3239,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } this.processPortalCooldown(); @@ -2501,7 +2502,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 } } -@@ -3396,7 +3434,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3391,7 +3429,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public int getMaxAirSupply() { @@ -2510,7 +2511,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 } public int getAirSupply() { -@@ -3864,7 +3902,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3859,7 +3897,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } public boolean canChangeDimensions() { @@ -2519,7 +2520,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 } public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { -@@ -4167,6 +4205,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4162,6 +4200,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return SlotAccess.NULL; } @@ -2540,7 +2541,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 @Override public void sendSystemMessage(Component message) {} -@@ -4440,6 +4492,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4435,6 +4487,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.yRotO = this.getYRot(); } @@ -2553,7 +2554,7 @@ index b6efe398aa82e1095e6f14e5544e656ebd92ddad..8d330441c3af704ef124599aaa237f31 public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { if (false && this.touchingUnloadedChunk()) { // Gale - Airplane - reduce entity fluid lookups if no fluids - cost of a lookup here is the same cost as below, so skip return false; -@@ -5015,4 +5073,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -5010,4 +5068,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -2756,7 +2757,7 @@ index 1bb8b6e91c44cd13411d96d749fa64835c75a267..b18cbe85330e26de6f6cbfcc3d51a741 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 dbf3f61227198a0ce5c0521fec933aafa3199154..8047aeddf587e2387359291d6640eb4a005ef944 100644 +index d8b32b29a8fb3cbe1c75af4501fc2d92334b5f22..6ca39830ead96eb18e9b5e637d1ea33c93e30198 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -217,9 +217,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -2773,7 +2774,7 @@ index dbf3f61227198a0ce5c0521fec933aafa3199154..8047aeddf587e2387359291d6640eb4a protected double lerpX; protected double lerpY; @@ -252,6 +252,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - private boolean skipDropExperience; + protected boolean skipDropExperience; // CraftBukkit start public int expToDrop; + public float safeFallDistance = 3.0F; // Purpur @@ -7176,7 +7177,7 @@ index d1458cec0313f7317134e7eb8bdabc31cea5df68..819445535895fbf79b99222bc6bf33cb super(entity); } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index c83dabddf93249a6477c10725622119c939db4d5..4492652085d579fc786fe16c1930c8cfe7be8bfa 100644 +index c83dabddf93249a6477c10725622119c939db4d5..b2a92648490ac54cd6ecc3bbfb9740db684284ce 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -45,13 +45,50 @@ public class Tadpole extends AbstractFish { @@ -7238,7 +7239,7 @@ index c83dabddf93249a6477c10725622119c939db4d5..4492652085d579fc786fe16c1930c8cf - if (this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish - this.getBrain().tick((ServerLevel) this.level(), this); + if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider -+ this.getBrain().tick((ServerLevel) this.level(), this); // Dreeam TODO - should remove this? ++ //this.getBrain().tick((ServerLevel) this.level(), this); // Dreeam TODO - should remove this? TadpoleAi.updateActivity(this); super.customServerAiStep(); } @@ -8923,7 +8924,7 @@ index 70d25bb45ad603095a1f5812cc396dfc5f16a1e1..c9bd400473166999479f5eef1edad529 public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index fd1b5a1beea7594fa65decfdcccfa15781fc005b..304ea7fdcd410a7c88ec61143364e14de8db0b0c 100644 +index 52eb3f6a73fa99d12d5fc75bab03e47a605c653a..64f6b5f44db4fd90e789032e3833da60cfcfbef1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -59,21 +59,99 @@ public class Creeper extends Monster implements PowerableMob { @@ -10706,7 +10707,7 @@ index 0c11d9bef8f0129c541e30ad057612e881703b24..c9c21c87e3bd1c404fbef6768761bcb5 if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state continue; diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 06ab07fb5d8d0e2f97325890218a11fef551a0ba..22669a188c1961783341b22551325e19aaeb8088 100644 +index b73dac8f68041f8a2e0752d70cc9d08b5cfd1cde..8a52c1ad5e2872e4b484eebc834fa42fd1930481 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -22,6 +22,8 @@ import net.minecraft.tags.DamageTypeTags; @@ -11215,7 +11216,7 @@ index cd964e5cded6a74cb9dcf27b4134f944764062cd..8b6f8fca8402c177c399824c6bf0bdef } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 6f12e342adf1a008709fd9a4fbbbe1da8ec31b83..43ce5ffc6fc1853875f446b543d5b57502a21dc7 100644 +index 9063f66b0497a3eb3893e307e685be692cc5c128..241a6851179cfa566417a655bff7b06bdb7f9f4b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -53,14 +53,48 @@ public class Spider extends Monster { @@ -13199,12 +13200,12 @@ index 31831811ce16265e9828fa34d9e67d8ac195d723..a1f74718240da3dfb0fc53f337ec3bf1 if (!this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index 48b1cddfca671ac8bcb93a1b60518a4ee9e977e2..0eca1c61991b0d344d0810239d9cab2873216f04 100644 +index c906ca07509939a06b9aaf2da0dafb172830a638..c809e370ab61811c7e2fa3d6f207ae04fcb6749b 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -105,12 +105,14 @@ public abstract class AbstractMinecart extends VehicleEntity { - private double flyingY = 0.949999988079071D; // Paper - restore vanilla precision - private double flyingZ = 0.949999988079071D; // Paper - restore vanilla precision + private double flyingY = 0.95; + private double flyingZ = 0.95; public double maxSpeed = 0.4D; + public double storedMaxSpeed; // Purpur // CraftBukkit end @@ -14797,7 +14798,7 @@ index ee76770b4f0cfadd2f7953c1328a2b6144379742..7bd894f302df5d900b15f2573305ae50 Set set = Sets.newHashSet(); boolean flag = true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d2a4e3326939c3c6dde7aba091d92ee84731d394..e79dbebe298289dcd63f03ebcc15dd409bfbf220 100644 +index 1bb82901903570ad8beb059110661d28b45dbacd..41c59c0828e0b6919e029f831ed22b305b2be470 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -178,6 +178,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -14867,7 +14868,7 @@ index d2a4e3326939c3c6dde7aba091d92ee84731d394..e79dbebe298289dcd63f03ebcc15dd40 this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); -@@ -1909,4 +1955,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1903,4 +1949,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } } // Paper end - notify observers even if grow failed @@ -16795,7 +16796,7 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e + // Purpur } diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -index bc01970c5ef9cde4a75394d6977837e924a38463..642e81d7ce763e3f983c83c967f7204164d260be 100644 +index a3ec2f522be2d02b9e37810799cecc2ba14f58f3..b0f3095a8eacf1c903c6190db440b21ca0d9acb1 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java @@ -200,16 +200,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C @@ -16862,7 +16863,7 @@ index bc01970c5ef9cde4a75394d6977837e924a38463..642e81d7ce763e3f983c83c967f72041 public CompoundTag getUpdateTag() { return this.saveWithoutMetadata(); diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index c7ebc50201a96b58dd3828a30eff1292a48a532e..df1a45f8cc21534dd4f7b54e47158564baa80655 100644 +index ff92b93dbffa6f3463c62d55cec535a3871ed7d8..5d9f25da1bd502b0047abc64ef7602968ee3cb20 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java @@ -178,6 +178,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { @@ -17359,11 +17360,11 @@ index 2bbc39c257965ad91ee360cdfcd3538a0f041c7e..91fbc0cfc84045e32a4ee16fba8164de + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index cae462613284bea0029e1087f80d758e89090c12..9ef1d6bf3b8ec431a7747c4edb4b61671758b7e9 100644 +index 91bf517b233c4bfc10094db216d7dd2db2cbf958..7c11bd348d00a1eb2c1c5cb25922aa51e8004e7a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -406,6 +406,20 @@ public final class CraftServer implements Server { - this.dataPackManager = new CraftDataPackManager(this.getServer().getPackRepository()); +@@ -402,6 +402,20 @@ public final class CraftServer implements Server { + this.serverTickManager = new CraftServerTickManager(console.tickRateManager()); Bukkit.setServer(this); + // Purpur start @@ -17383,7 +17384,7 @@ index cae462613284bea0029e1087f80d758e89090c12..9ef1d6bf3b8ec431a7747c4edb4b6167 CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1041,6 +1055,7 @@ public final class CraftServer implements Server { +@@ -1042,6 +1056,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); this.console.galeConfigurations.reloadConfigs(this.console); // Gale - Gale configuration @@ -17391,7 +17392,7 @@ index cae462613284bea0029e1087f80d758e89090c12..9ef1d6bf3b8ec431a7747c4edb4b6167 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1056,6 +1071,7 @@ public final class CraftServer implements Server { +@@ -1057,6 +1072,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -17399,7 +17400,7 @@ index cae462613284bea0029e1087f80d758e89090c12..9ef1d6bf3b8ec431a7747c4edb4b6167 } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1071,6 +1087,7 @@ public final class CraftServer implements Server { +@@ -1072,6 +1088,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -17407,7 +17408,7 @@ index cae462613284bea0029e1087f80d758e89090c12..9ef1d6bf3b8ec431a7747c4edb4b6167 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1573,6 +1590,55 @@ public final class CraftServer implements Server { +@@ -1574,6 +1591,55 @@ public final class CraftServer implements Server { return true; } @@ -17463,7 +17464,7 @@ index cae462613284bea0029e1087f80d758e89090c12..9ef1d6bf3b8ec431a7747c4edb4b6167 @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2973,6 +3039,7 @@ public final class CraftServer implements Server { +@@ -2974,6 +3040,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { @@ -17471,7 +17472,7 @@ index cae462613284bea0029e1087f80d758e89090c12..9ef1d6bf3b8ec431a7747c4edb4b6167 net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3065,6 +3132,18 @@ public final class CraftServer implements Server { +@@ -3066,6 +3133,18 @@ public final class CraftServer implements Server { } // Gale end - Gale configuration - API @@ -17490,7 +17491,7 @@ index cae462613284bea0029e1087f80d758e89090c12..9ef1d6bf3b8ec431a7747c4edb4b6167 @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3301,4 +3380,15 @@ public final class CraftServer implements Server { +@@ -3306,4 +3385,15 @@ public final class CraftServer implements Server { } // Gale end - YAPFA - last tick time - API @@ -17507,10 +17508,10 @@ index cae462613284bea0029e1087f80d758e89090c12..9ef1d6bf3b8ec431a7747c4edb4b6167 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 5c3d07151ff26377b4d0dbeff793fe7e27176ad8..cd342de8266237d49c143a4cdb803d09b8579986 100644 +index 8b1b8d0b653fd361358ace0d6ddcc509659cedb9..dad55726e798448b4e0e599bd5f8913c55059812 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2360,6 +2360,48 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2415,6 +2415,48 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } @@ -17560,7 +17561,7 @@ index 5c3d07151ff26377b4d0dbeff793fe7e27176ad8..cd342de8266237d49c143a4cdb803d09 public PersistentDataContainer getPersistentDataContainer() { return this.persistentDataContainer; diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 231ea6f9a149868163a124a0056c197dd9b3a48c..802f30f6bacac22e581fef0ff6a3e668d656607f 100644 +index 11b9aa315d6eecb6bfb2db3302f348270344ff6b..c90ec17f71bb1c9b2ee3ee45d36bc0909bc2945f 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -195,6 +195,14 @@ public class Main { @@ -17732,10 +17733,10 @@ index d657fd2c507a5b215aeab0a5f3e9c2ee892a27c8..985e9ec21c60a1f47973bd5fc53b96a6 // Paper start @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index aa4dbf91cf6da329fdcacbde98bb870eb48e8f5c..03b38dd69cd6932c17b9b2d832e67c14628a4918 100644 +index 1c3e1153d08b59d29b3613fc3b50a4780aa7a3ac..ea5ac1f53309fdd30aad40fd4a092f297d76fd61 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -228,6 +228,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -83,6 +83,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } @@ -17744,10 +17745,10 @@ index aa4dbf91cf6da329fdcacbde98bb870eb48e8f5c..03b38dd69cd6932c17b9b2d832e67c14 + return getHandle().isSunBurnTick(); + } + - public static CraftEntity getEntity(CraftServer server, Entity entity) { - /* - * Order is *EXTREMELY* important -- keep it right! =D -@@ -607,6 +612,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + public static CraftEntity getEntity(CraftServer server, T entity) { + Preconditions.checkArgument(entity != null, "Unknown entity"); + +@@ -252,6 +257,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { // Paper end if ((!ignorePassengers && this.entity.isVehicle()) || this.entity.isRemoved()) { // Paper - Teleport passenger API @@ -17758,7 +17759,7 @@ index aa4dbf91cf6da329fdcacbde98bb870eb48e8f5c..03b38dd69cd6932c17b9b2d832e67c14 return false; } -@@ -1582,4 +1591,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1227,4 +1236,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name @@ -17787,10 +17788,10 @@ index aa4dbf91cf6da329fdcacbde98bb870eb48e8f5c..03b38dd69cd6932c17b9b2d832e67c14 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index 8a1e765363aeb61078fd23980d3856dc680cb05e..aac60c61fc631c8ecac161eae513a305610a3dfb 100644 +index c3dbcb317b7d366feb31f707ad1199c60169f07f..0a14e5d9922836d42a03b496023e76c98fccd824 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -267,6 +267,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { +@@ -266,6 +266,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); @@ -17872,10 +17873,10 @@ index 81498941748d646ebe6495f4a7ce6953532144c6..df1f7bd8d2e1ef29cc65443bc8f929ac + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index ba2cd9c4cdbd5ddab1300320d7e0ede4d4b7a31a..f346ef373a1eeaa063a90302e20ee90821d63e40 100644 +index 1f1ef68a9a449a4a90c284f34a397ab4b6d905f6..d46fbc76fd6934e3c19a9ef237f759c0488da040 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -454,7 +454,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -452,7 +452,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); getHandle().lastHurtByPlayer = entityPlayer; getHandle().lastHurtByMob = entityPlayer; @@ -17884,34 +17885,7 @@ index ba2cd9c4cdbd5ddab1300320d7e0ede4d4b7a31a..f346ef373a1eeaa063a90302e20ee908 } // Paper end -@@ -466,7 +466,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - @Override - public boolean addPotionEffect(PotionEffect effect, boolean force) { - org.spigotmc.AsyncCatcher.catchOp("effect add"); // Paper -- this.getHandle().addEffect(CraftPotionUtil.fromBukkit(effect), EntityPotionEffectEvent.Cause.PLUGIN); // Paper - Don't ignore icon -+ this.getHandle().addEffect(new MobEffectInstance(CraftPotionEffectType.bukkitToMinecraft(effect.getType()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()), EntityPotionEffectEvent.Cause.PLUGIN); // Purpur - add key // Paper - Don't ignore icon - return true; - } - -@@ -487,7 +487,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - @Override - public PotionEffect getPotionEffect(PotionEffectType type) { - MobEffectInstance handle = this.getHandle().getEffect(CraftPotionEffectType.bukkitToMinecraft(type)); -- return (handle == null) ? null : CraftPotionUtil.toBukkit(handle); // Paper -+ return (handle == null) ? null : new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible()); - } - - @Override -@@ -499,7 +499,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - public Collection getActivePotionEffects() { - List effects = new ArrayList(); - for (MobEffectInstance handle : this.getHandle().activeEffects.values()) { -- effects.add(CraftPotionUtil.toBukkit(handle)); // Paper -+ effects.add(new PotionEffect(CraftPotionEffectType.minecraftToBukkit(handle.getEffect()), handle.getDuration(), handle.getAmplifier(), handle.isAmbient(), handle.isVisible())); - } - return effects; - } -@@ -1120,4 +1120,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1118,4 +1118,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end @@ -17966,10 +17940,10 @@ index 0ad16ee7b33582d214dab41eeee378d52c8e38ed..16bd1294c219f15ada653ef810bc2d74 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index fd84786f3e72875e79df46416f47f3403876cef3..dd3af429e9949a8dea09abf29bac226cc1f82e8c 100644 +index c54df6e4aed9b7b46a41af4108a8e90d96c1fe1f..df4f39d38f1ff4a5e499e227d93d98f531a01419 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -527,10 +527,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -524,10 +524,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setPlayerListName(String name) { @@ -17986,7 +17960,7 @@ index fd84786f3e72875e79df46416f47f3403876cef3..dd3af429e9949a8dea09abf29bac226c for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); -@@ -1366,6 +1371,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1363,6 +1368,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API @@ -17997,7 +17971,7 @@ index fd84786f3e72875e79df46416f47f3403876cef3..dd3af429e9949a8dea09abf29bac226c return false; } -@@ -2556,6 +2565,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2590,6 +2599,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -18026,7 +18000,7 @@ index fd84786f3e72875e79df46416f47f3403876cef3..dd3af429e9949a8dea09abf29bac226c private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3293,4 +3324,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3326,4 +3357,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.spigot; } // Spigot end @@ -18179,10 +18153,10 @@ index 38b6d2c377800134de592a780b737b45c8096a11..449acd9dc983be1cd51208bc8f8d843d + // 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 f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236db352ff65 100644 +index f67ec3f5f4b7e2f678609f2387cc8afa2adce161..51ed919b56ded23309be1093280a92331c090780 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -594,6 +594,15 @@ public class CraftEventFactory { +@@ -591,6 +591,15 @@ public class CraftEventFactory { // Paper end craftServer.getPluginManager().callEvent(event); @@ -18198,7 +18172,7 @@ index f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236d return event; } -@@ -1073,6 +1082,7 @@ public class CraftEventFactory { +@@ -1070,6 +1079,7 @@ public class CraftEventFactory { damageCause = DamageCause.ENTITY_EXPLOSION; } event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions, source.isCritical()); // Paper - add critical damage API @@ -18206,7 +18180,7 @@ index f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236d } event.setCancelled(cancelled); -@@ -1187,6 +1197,7 @@ public class CraftEventFactory { +@@ -1184,6 +1194,7 @@ public class CraftEventFactory { } else { entity.lastDamageCancelled = true; // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Keep track if the event was canceled } @@ -18214,7 +18188,7 @@ index f5a5ae30dfba21d5cf3990c046cfe41547e8a87a..7feace95794a2e1e4b0b14b5d0bc236d return event; } -@@ -1250,6 +1261,7 @@ public class CraftEventFactory { +@@ -1247,6 +1258,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, modifiers, modifierFunctions, critical); // Paper - add critical damage API diff --git a/patches/server/0011-Remove-Timings.patch b/patches/server/0011-Remove-Timings.patch index 043999bc..a5d09811 100644 --- a/patches/server/0011-Remove-Timings.patch +++ b/patches/server/0011-Remove-Timings.patch @@ -1166,7 +1166,7 @@ index f690b0b56bdaf78ce1e64445f14018b705eb3c37..3db403505f2829680648e9ff2bc2c128 // Paper start if (waitableArray[0] != null) { diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index f2070cc0c1a665520b7270b3d72d425535288f08..6c3c4ec6cef581da45f6cdbb68cb74ea099a93a0 100644 +index 104cdc470e337c382d51988cb6d47e1903fea4ce..016cd710902ab2d328a9358f8fd7da9f0ef2bcde 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -1,6 +1,5 @@ @@ -1176,7 +1176,7 @@ index f2070cc0c1a665520b7270b3d72d425535288f08..6c3c4ec6cef581da45f6cdbb68cb74ea import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; import com.google.common.collect.Iterables; -@@ -546,13 +545,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -545,13 +544,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } protected void tick(BooleanSupplier shouldKeepTicking) { @@ -1190,7 +1190,7 @@ index f2070cc0c1a665520b7270b3d72d425535288f08..6c3c4ec6cef581da45f6cdbb68cb74ea } } -@@ -1150,25 +1145,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1149,25 +1144,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper start - optimised tracker private final void processTrackQueue() { @@ -1216,7 +1216,7 @@ index f2070cc0c1a665520b7270b3d72d425535288f08..6c3c4ec6cef581da45f6cdbb68cb74ea } // Paper end - optimised tracker -@@ -1182,7 +1166,6 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1181,7 +1165,6 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider List list = Lists.newArrayList(); List list1 = this.level.players(); ObjectIterator objectiterator = this.entityMap.values().iterator(); @@ -1224,7 +1224,7 @@ index f2070cc0c1a665520b7270b3d72d425535288f08..6c3c4ec6cef581da45f6cdbb68cb74ea ChunkMap.TrackedEntity playerchunkmap_entitytracker; -@@ -1207,17 +1190,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1206,17 +1189,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker.serverEntity.sendChanges(); } } @@ -1243,7 +1243,7 @@ index f2070cc0c1a665520b7270b3d72d425535288f08..6c3c4ec6cef581da45f6cdbb68cb74ea } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index c1a140b9d197c06451fe338c28adc5bdee1183a3..76b64eb4a69e2d02c23d5375f1e80ab8ad19e403 100644 +index 58f3d1f957ec85e69b80c78e533cedc3a7ac1937..e04ab410b88f681032de4406dceac5ef51476ce1 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -291,10 +291,8 @@ public class ServerChunkCache extends ChunkSource { @@ -1297,15 +1297,16 @@ index c1a140b9d197c06451fe338c28adc5bdee1183a3..76b64eb4a69e2d02c23d5375f1e80ab8 this.clearCache(); } -@@ -503,7 +491,6 @@ public class ServerChunkCache extends ChunkSource { +@@ -503,8 +491,6 @@ public class ServerChunkCache extends ChunkSource { this.lastInhabitedUpdate = i; if (!this.level.isDebug()) { +- // Paper - optimise chunk tick iteration - if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper - // Paper start - optimise chunk tick iteration - ChunkMap playerChunkMap = this.chunkMap; -@@ -548,7 +535,6 @@ public class ServerChunkCache extends ChunkSource { + // Paper - optimise chunk tick iteration + +@@ -516,7 +502,6 @@ public class ServerChunkCache extends ChunkSource { boolean flagAndHasNaturalSpawn = flag && this.anySpawnCategoryIsSpawnedThisTick(); if (flagAndHasNaturalSpawn) { // Gale end - MultiPaper - skip unnecessary mob spawning computations @@ -1313,7 +1314,7 @@ index c1a140b9d197c06451fe338c28adc5bdee1183a3..76b64eb4a69e2d02c23d5375f1e80ab8 int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - per player mob spawning int naturalSpawnChunkCount = k; -@@ -579,7 +565,6 @@ public class ServerChunkCache extends ChunkSource { +@@ -545,7 +530,6 @@ public class ServerChunkCache extends ChunkSource { // Pufferfish end } // Paper end @@ -1321,7 +1322,7 @@ index c1a140b9d197c06451fe338c28adc5bdee1183a3..76b64eb4a69e2d02c23d5375f1e80ab8 //this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously // Gale start - MultiPaper - skip unnecessary mob spawning computations -@@ -690,17 +675,13 @@ public class ServerChunkCache extends ChunkSource { +@@ -657,17 +641,13 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -1339,7 +1340,7 @@ index c1a140b9d197c06451fe338c28adc5bdee1183a3..76b64eb4a69e2d02c23d5375f1e80ab8 // Paper start - optimise chunk tick iteration if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet copy = this.chunkMap.needsChangeBroadcasting.clone(); -@@ -714,7 +695,6 @@ public class ServerChunkCache extends ChunkSource { +@@ -681,7 +661,6 @@ public class ServerChunkCache extends ChunkSource { } } // Paper end - optimise chunk tick iteration @@ -1725,7 +1726,7 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..4de18d00cc464313b777874430da3f55 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e79dbebe298289dcd63f03ebcc15dd409bfbf220..afe0fa16ced3cae40737c8017875901e4809df24 100644 +index 41c59c0828e0b6919e029f831ed22b305b2be470..0b10bf781dc70c0ea3d5031ac2b5fe5395cb5269 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -179,7 +179,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -1760,7 +1761,7 @@ index e79dbebe298289dcd63f03ebcc15dd409bfbf220..afe0fa16ced3cae40737c8017875901e // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1368,9 +1363,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1362,9 +1357,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); @@ -1872,10 +1873,10 @@ index cd375184c63453829be96449c4df88372f905d9e..6e67591750ae8395f7f7b8a1299d6573 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 9ef1d6bf3b8ec431a7747c4edb4b61671758b7e9..7ae5e99e6cc8e88009688468f6d19b5af09da9e0 100644 +index 7c11bd348d00a1eb2c1c5cb25922aa51e8004e7a..1ae62fd0f67d6de02ffa196a634a3b8a868ff70d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -472,7 +472,6 @@ public final class CraftServer implements Server { +@@ -468,7 +468,6 @@ public final class CraftServer implements Server { this.saveCommandsConfig(); this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); @@ -1884,7 +1885,7 @@ index 9ef1d6bf3b8ec431a7747c4edb4b61671758b7e9..7ae5e99e6cc8e88009688468f6d19b5a console.autosavePeriod = this.configuration.getInt("ticks-per.autosave"); this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose")); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 802f30f6bacac22e581fef0ff6a3e668d656607f..a37998f9bec941287f51589fff33231046f05258 100644 +index c90ec17f71bb1c9b2ee3ee45d36bc0909bc2945f..6143f8ac8ebe7e4ad67c3386d220863a6acc3b27 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -372,8 +372,6 @@ public class Main { diff --git a/patches/server/0012-Bump-Dependencies.patch b/patches/server/0012-Bump-Dependencies.patch index 74516525..0e21c9a3 100644 --- a/patches/server/0012-Bump-Dependencies.patch +++ b/patches/server/0012-Bump-Dependencies.patch @@ -5,19 +5,22 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index ee26e30a654cf8238069ba40d271e18b49ea99a3..3d2439e90e1cb97b9b2c26c03f1dd03d5fd37552 100644 +index 604ce3a289f33b051074aa0a5e2ff04b74986cb1..eb622ea1c419bc0d514b77af0860ab08e0aa2822 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -36,7 +36,7 @@ dependencies { +@@ -22,9 +22,9 @@ dependencies { } // Gale end - project setup // Paper start - implementation("org.jline:jline-terminal-jansi:3.21.0") -+ implementation("org.jline:jline-terminal-jansi:3.24.1") // Leaf - Bump Dependencies ++ implementation("org.jline:jline-terminal-jansi:3.25.0") // Leaf - Bump Dependencies implementation("net.minecrell:terminalconsoleappender:1.3.0") - implementation("net.kyori:adventure-text-serializer-ansi:4.14.0") // Keep in sync with adventureVersion from Paper-API build file +- implementation("net.kyori:adventure-text-serializer-ansi:4.14.0") // Keep in sync with adventureVersion from Paper-API build file ++ implementation("net.kyori:adventure-text-serializer-ansi:4.15.0") // Keep in sync with adventureVersion from Paper-API build file // Leaf - Bump Dependencies implementation("net.kyori:ansi:1.0.3") // Manually bump beyond above transitive dep -@@ -46,30 +46,34 @@ dependencies { + /* + Required to add the missing Log4j2Plugins.dat file from log4j-core +@@ -32,23 +32,25 @@ dependencies { all its classes to check if they are plugins. Scanning takes about 1-2 seconds so adding this speeds up the server start. */ @@ -29,7 +32,7 @@ index ee26e30a654cf8238069ba40d271e18b49ea99a3..3d2439e90e1cb97b9b2c26c03f1dd03d runtimeOnly(log4jPlugins.output) alsoShade(log4jPlugins.output) - implementation("io.netty:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol -+ implementation("io.netty:netty-codec-haproxy:4.1.101.Final") // Paper - Add support for proxy protocol ++ implementation("io.netty:netty-codec-haproxy:4.1.104.Final") // Paper - Add support for proxy protocol // Paper end - implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion - implementation("org.ow2.asm:asm:9.5") @@ -41,32 +44,19 @@ index ee26e30a654cf8238069ba40d271e18b49ea99a3..3d2439e90e1cb97b9b2c26c03f1dd03d implementation("commons-lang:commons-lang:2.6") - implementation("net.fabricmc:mapping-io:0.5.0") // Paper - needed to read mappings for stacktrace deobfuscation - runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") -- runtimeOnly("com.mysql:mysql-connector-j:8.1.0") -- runtimeOnly("com.lmax:disruptor:3.4.4") // Paper ++ // Leaf end + implementation("net.fabricmc:mapping-io:0.5.1") // Paper - needed to read mappings for stacktrace deobfuscation + runtimeOnly("org.xerial:sqlite-jdbc:3.44.1.0") -+ runtimeOnly("com.mysql:mysql-connector-j:8.2.0") + runtimeOnly("com.mysql:mysql-connector-j:8.2.0") +- runtimeOnly("com.lmax:disruptor:3.4.4") // Paper + runtimeOnly("com.lmax:disruptor:3.4.4") // Paper // Leaf - Bump Dependencies - Waiting Log4j 3.x that supported disruptor 4.0.0 -+ // Leaf end // Paper start - Use Velocity cipher - implementation("com.velocitypowered:velocity-native:3.1.2-SNAPSHOT") { + implementation("com.velocitypowered:velocity-native:3.3.0-SNAPSHOT") { // Leaf - Bump Dependencies isTransitive = false } // Paper end - -- runtimeOnly("org.apache.maven:maven-resolver-provider:3.8.5") -- runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3") -- runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") -+ // Leaf start - Bump Dependencies -+ runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") -+ runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") -+ runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") -+ // Leaf end - - // Pufferfish start - implementation("org.yaml:snakeyaml:2.2") -@@ -82,10 +86,14 @@ dependencies { +@@ -68,10 +70,14 @@ dependencies { implementation("org.mozilla:rhino-engine:1.7.14") // Purpur implementation("dev.omega24:upnp4j:1.0") // Purpur @@ -79,12 +69,12 @@ index ee26e30a654cf8238069ba40d271e18b49ea99a3..3d2439e90e1cb97b9b2c26c03f1dd03d - testImplementation("org.mockito:mockito-core:5.5.0") + testImplementation("org.mockito:mockito-core:5.8.0") + -+ implementation("io.netty:netty-all:4.1.101.Final") ++ implementation("io.netty:netty-all:4.1.104.Final") + // Leaf end } val craftbukkitPackageVersion = "1_20_R3" // Paper -@@ -277,3 +285,7 @@ sourceSets { +@@ -263,3 +269,7 @@ sourceSets { } } // Gale end - package license into jar diff --git a/patches/server/0014-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch b/patches/server/0014-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch index 7502245f..12329ab5 100644 --- a/patches/server/0014-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch +++ b/patches/server/0014-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Remove Spigot Check for Broken BungeeCord Configurations diff --git a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java -index 8e7488277bc30f83fa39f7435ca9f1724452e92e..db3cee1f3d5d3ca090f5f4b1fd6ab01bf19f85d9 100644 +index 115877acb37da061a834ce8a7f9919383bb41abd..9b924907162e2bb11861539ef3fae03424819673 100644 --- a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java -@@ -145,7 +145,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL +@@ -147,7 +147,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL { this.connection.spoofedProfile = ServerHandshakePacketListenerImpl.gson.fromJson(split[3], com.mojang.authlib.properties.Property[].class); } diff --git a/patches/server/0017-KeYi-Player-Skull-API.patch b/patches/server/0017-KeYi-Player-Skull-API.patch index 8d585766..f8ace3ed 100644 --- a/patches/server/0017-KeYi-Player-Skull-API.patch +++ b/patches/server/0017-KeYi-Player-Skull-API.patch @@ -7,10 +7,10 @@ Original license: MIT Original project: https://github.com/KeYiMC/KeYi diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index dd3af429e9949a8dea09abf29bac226cc1f82e8c..c33661468d4f1e0cc668f5854b3df472c8646897 100644 +index df4f39d38f1ff4a5e499e227d93d98f531a01419..c9dd86c2d71d7281902ed5f4cfd8d4320ecd0563 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -30,6 +30,11 @@ import java.util.Optional; +@@ -29,6 +29,11 @@ import java.util.Optional; import java.util.Set; import java.util.UUID; import java.util.WeakHashMap; @@ -22,7 +22,7 @@ index dd3af429e9949a8dea09abf29bac226cc1f82e8c..c33661468d4f1e0cc668f5854b3df472 import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Nullable; -@@ -166,6 +171,7 @@ import org.bukkit.event.player.PlayerUnregisterChannelEvent; +@@ -163,6 +168,7 @@ import org.bukkit.event.player.PlayerUnregisterChannelEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.InventoryView.Property; import org.bukkit.inventory.ItemStack; @@ -30,7 +30,7 @@ index dd3af429e9949a8dea09abf29bac226cc1f82e8c..c33661468d4f1e0cc668f5854b3df472 import org.bukkit.map.MapCursor; import org.bukkit.map.MapView; import org.bukkit.metadata.MetadataValue; -@@ -3390,4 +3396,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3423,4 +3429,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); } // Purpur end diff --git a/patches/server/0023-Slice-Smooth-Teleports.patch b/patches/server/0023-Slice-Smooth-Teleports.patch index 118fcc9f..9e6d7b25 100644 --- a/patches/server/0023-Slice-Smooth-Teleports.patch +++ b/patches/server/0023-Slice-Smooth-Teleports.patch @@ -7,7 +7,7 @@ Original license: MIT Original project: https://github.com/Cryptite/Slice diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6096a1d08cb2018a178ed925e0a909ed8f5c3888..e3d27b570719839b461a99f6682c02722a3a18d7 100644 +index 96ed7cb2f34718b7b1cb5abdc386b7c6abcfa6bd..ca380b7dc4600264651d49b89cc398097f59ab8c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -286,6 +286,7 @@ public class ServerPlayer extends Player { @@ -36,10 +36,10 @@ index 4158800ce4f86d20213dfd9ccba38d4baf10aa02..9e66c884c9a00263cb8f723f0a94cebe entityplayer1.connection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked())); entityplayer1.connection.send(new ClientboundSetExperiencePacket(entityplayer1.experienceProgress, entityplayer1.totalExperience, entityplayer1.experienceLevel)); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c33661468d4f1e0cc668f5854b3df472c8646897..e89ecf6d99c4ca2e387774eedcd94959d00f1d6f 100644 +index c9dd86c2d71d7281902ed5f4cfd8d4320ecd0563..d45a8bed2a65f7efb93cfd6d714fe399c615bb1d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1281,6 +1281,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1278,6 +1278,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper end } diff --git a/patches/server/0025-Leaves-Server-Utils.patch b/patches/server/0025-Leaves-Server-Utils.patch index ae323a2d..59775bfb 100644 --- a/patches/server/0025-Leaves-Server-Utils.patch +++ b/patches/server/0025-Leaves-Server-Utils.patch @@ -7,18 +7,18 @@ Original license: GPLv3 Original project: https://github.com/LeavesMC/Leaves diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8d330441c3af704ef124599aaa237f3173a8cdea..510eb88b3d43da5f5e976a7affbdc79de9241130 100644 +index 50267637d752b8216ee81e09945d7b8f08743c53..0afe218612f16b04798fa5697ac40db95a6629ed 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -424,6 +424,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -423,6 +423,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S + private UUID originWorld; public boolean freezeLocked = false; // Paper - Freeze Tick Lock API - public boolean collidingWithWorldBorder; // Paper public boolean fixedPose = false; // Paper + private CompoundTag leavesData = new CompoundTag(); // Leaves - Leaves ex data public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -2530,6 +2531,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2525,6 +2526,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -26,7 +26,7 @@ index 8d330441c3af704ef124599aaa237f3173a8cdea..510eb88b3d43da5f5e976a7affbdc79d return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2677,6 +2679,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2672,6 +2674,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -38,7 +38,7 @@ index 8d330441c3af704ef124599aaa237f3173a8cdea..510eb88b3d43da5f5e976a7affbdc79d } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -@@ -5114,4 +5121,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -5109,4 +5116,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return false; } // Purpur end diff --git a/patches/server/0026-Leaves-Protocol-Core.patch b/patches/server/0026-Leaves-Protocol-Core.patch index 99aaaf9d..7d9805ae 100644 --- a/patches/server/0026-Leaves-Protocol-Core.patch +++ b/patches/server/0026-Leaves-Protocol-Core.patch @@ -38,10 +38,10 @@ index 138935ffe2f7852e8aa30a5fdea2d4ca340c4cdf..625822b060683bfdf3b79f82ed5eea68 ((Runnable) this.tickables.get(i)).run(); } diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 3eac8b20e31948f98a522a5f7e5088a032e36bed..9eebc93178929cb3e7bad202e6ff308e39863da0 100644 +index 1ee6f597bbb8ba62b9fddde3fd7a91085dc0def2..66255eeab8cae6ce150ca888b9db3c2f88c4b00b 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -135,6 +135,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -136,6 +136,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @Override public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { @@ -49,7 +49,7 @@ index 3eac8b20e31948f98a522a5f7e5088a032e36bed..9eebc93178929cb3e7bad202e6ff308e // Paper start - handle brand payload packet if (packet.payload() instanceof net.minecraft.network.protocol.common.custom.BrandPayload brandPayload) { this.player.clientBrandName = brandPayload.brand(); -@@ -152,6 +153,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -153,6 +154,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack String channels = payload.toString(com.google.common.base.Charsets.UTF_8); for (String channel : channels.split("\0")) { this.getCraftPlayer().addChannel(channel); @@ -78,10 +78,10 @@ index 9e66c884c9a00263cb8f723f0a94cebed7d788c9..7b184f16a7759ddfbdf430b2f79f1055 org.purpurmc.purpur.task.BossBarTask.removeFromAll(entityplayer.getBukkitEntity()); // Purpur ServerLevel worldserver = entityplayer.serverLevel(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 7ae5e99e6cc8e88009688468f6d19b5af09da9e0..65df49ab8b9407bbdd884d7122022284ca39501a 100644 +index 1ae62fd0f67d6de02ffa196a634a3b8a868ff70d..7419bc9ae4f254c4c758b6955f3ef4ba7da89a81 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -484,6 +484,7 @@ public final class CraftServer implements Server { +@@ -480,6 +480,7 @@ public final class CraftServer implements Server { MapPalette.setMapColorCache(new CraftMapColorCache(this.logger)); } datapackManager = new io.papermc.paper.datapack.PaperDatapackManager(console.getPackRepository()); // Paper @@ -89,7 +89,7 @@ index 7ae5e99e6cc8e88009688468f6d19b5af09da9e0..65df49ab8b9407bbdd884d7122022284 } public boolean getCommandBlockOverride(String command) { -@@ -1089,6 +1090,7 @@ public final class CraftServer implements Server { +@@ -1090,6 +1091,7 @@ public final class CraftServer implements Server { org.purpurmc.purpur.PurpurConfig.registerCommands(); // Purpur this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); diff --git a/patches/server/0034-Fix-tracker-NPE.patch b/patches/server/0034-Fix-tracker-NPE.patch index e08bfec6..2c1dd5d6 100644 --- a/patches/server/0034-Fix-tracker-NPE.patch +++ b/patches/server/0034-Fix-tracker-NPE.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix tracker NPE diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 6c3c4ec6cef581da45f6cdbb68cb74ea099a93a0..80badf34e9af7ef656f33e1bfe76208362778c3b 100644 +index 016cd710902ab2d328a9358f8fd7da9f0ef2bcde..cfe179378963d1f37e95ccd86bc65638def20189 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -242,7 +242,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -241,7 +241,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public final io.papermc.paper.util.player.NearbyPlayers nearbyPlayers; // Paper end // Paper start - optimise chunk tick iteration @@ -17,7 +17,7 @@ index 6c3c4ec6cef581da45f6cdbb68cb74ea099a93a0..80badf34e9af7ef656f33e1bfe762083 public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap = new gg.pufferfish.pufferfish.util.AsyncPlayerAreaMap(this.pooledLinkedPlayerHashSets); // Pufferfish // Paper end - optimise chunk tick iteration -@@ -1299,7 +1299,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1298,7 +1298,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider final Entity entity; private final int range; SectionPos lastSectionPos; @@ -27,7 +27,7 @@ index 6c3c4ec6cef581da45f6cdbb68cb74ea099a93a0..80badf34e9af7ef656f33e1bfe762083 public TrackedEntity(Entity entity, int i, int j, boolean flag) { this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, j, flag, this::broadcast, this.seenBy); // CraftBukkit diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 76b64eb4a69e2d02c23d5375f1e80ab8ad19e403..7be009953587e3beb0e823ea722cbfe01cc37041 100644 +index e04ab410b88f681032de4406dceac5ef51476ce1..02b517288ef0794ccfd46802bf76fa56af21c524 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -9,6 +9,7 @@ import java.io.IOException; @@ -38,7 +38,7 @@ index 76b64eb4a69e2d02c23d5375f1e80ab8ad19e403..7be009953587e3beb0e823ea722cbfe0 import java.util.Objects; import java.util.Optional; import java.util.concurrent.CompletableFuture; -@@ -684,7 +685,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -650,7 +651,7 @@ public class ServerChunkCache extends ChunkSource { // Paper - optimise chunk tick iteration // Paper start - optimise chunk tick iteration if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) { diff --git a/patches/server/0036-Reduce-canSee-work.patch b/patches/server/0036-Reduce-canSee-work.patch index ef18abe8..f874e5f6 100644 --- a/patches/server/0036-Reduce-canSee-work.patch +++ b/patches/server/0036-Reduce-canSee-work.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Reduce canSee work Credit by: Martijn Muijsers , MachineBreaker diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index afe0fa16ced3cae40737c8017875901e4809df24..3414b9f7d1908e264540306a2062d35462841033 100644 +index 0b10bf781dc70c0ea3d5031ac2b5fe5395cb5269..ddbc6340297d4d3e502d00bc3ab4f2b66438472e 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -386,11 +386,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -35,10 +35,10 @@ index afe0fa16ced3cae40737c8017875901e4809df24..3414b9f7d1908e264540306a2062d354 return false; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e89ecf6d99c4ca2e387774eedcd94959d00f1d6f..09f18678bb015c2109e087da4f9c1f9fe1776e9c 100644 +index d45a8bed2a65f7efb93cfd6d714fe399c615bb1d..c887f6c6f60acee37ff72568f95e5a34d4db53a2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -588,12 +588,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -585,12 +585,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.getHandle().connection.send(packet); } @@ -53,7 +53,7 @@ index e89ecf6d99c4ca2e387774eedcd94959d00f1d6f..09f18678bb015c2109e087da4f9c1f9f if ((this.getUniqueId() == null) || (other.getUniqueId() == null)) { return false; } -@@ -2116,6 +2118,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2113,6 +2115,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.canSee((org.bukkit.entity.Entity) player); } diff --git a/patches/server/0041-Fix-keepalive-kicked-name.patch b/patches/server/0041-Fix-keepalive-kicked-name.patch index db660e37..8c083f42 100644 --- a/patches/server/0041-Fix-keepalive-kicked-name.patch +++ b/patches/server/0041-Fix-keepalive-kicked-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix keepalive kicked name diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 9eebc93178929cb3e7bad202e6ff308e39863da0..f0e4a0ce4021d254ead091885a5006a1704ee901 100644 +index 66255eeab8cae6ce150ca888b9db3c2f88c4b00b..16d8b36c19a7209b8b6348622de351e51cb75470 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -228,7 +228,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -241,7 +241,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack if (GaleGlobalConfiguration.get().misc.keepalive.sendMultiple) { if (elapsedTime >= 1000L) { // 1 second if (!this.processedDisconnect && this.keepAlives.size() >= KEEPALIVE_LIMIT_IN_SECONDS) { diff --git a/patches/server/0043-Fix-TerminalConsoleAppender-NPE-error-on-server-clos.patch b/patches/server/0043-Fix-TerminalConsoleAppender-NPE-error-on-server-clos.patch index 6284888a..b42cac36 100644 --- a/patches/server/0043-Fix-TerminalConsoleAppender-NPE-error-on-server-clos.patch +++ b/patches/server/0043-Fix-TerminalConsoleAppender-NPE-error-on-server-clos.patch @@ -5,16 +5,16 @@ Subject: [PATCH] Fix TerminalConsoleAppender NPE error on server closed diff --git a/build.gradle.kts b/build.gradle.kts -index 3d2439e90e1cb97b9b2c26c03f1dd03d5fd37552..3eaf0bb6022f5891e643060be47a86c6240dc07a 100644 +index eb622ea1c419bc0d514b77af0860ab08e0aa2822..8f5648aa89f3a2a66d67cc8810dd9ace5436996f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -37,7 +37,7 @@ dependencies { +@@ -23,7 +23,7 @@ dependencies { // Gale end - project setup // Paper start - implementation("org.jline:jline-terminal-jansi:3.24.1") // Leaf - Bump Dependencies + implementation("org.jline:jline-terminal-jansi:3.25.0") // Leaf - Bump Dependencies - implementation("net.minecrell:terminalconsoleappender:1.3.0") + implementation("com.github.Dreeam-qwq:TerminalConsoleAppender:af5a442f") // Leaf - Fix TerminalConsoleAppender NPE error on server closed - implementation("net.kyori:adventure-text-serializer-ansi:4.14.0") // Keep in sync with adventureVersion from Paper-API build file + implementation("net.kyori:adventure-text-serializer-ansi:4.15.0") // Keep in sync with adventureVersion from Paper-API build file // Leaf - Bump Dependencies implementation("net.kyori:ansi:1.0.3") // Manually bump beyond above transitive dep /* diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java