diff --git a/build.gradle.kts b/build.gradle.kts index 8cbd14ed0..7c9127a96 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,7 +2,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.10-SNAPSHOT" + id("io.papermc.paperweight.patcher") version "1.5.11-SNAPSHOT" } val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" diff --git a/gradle.properties b/gradle.properties index 626ee6267..78d21b288 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.dreeam.leaf version = 1.20.2-R0.1-SNAPSHOT -galeCommit = f54e07e42395f4a87725ffad4967bf46d62b0d24 +galeCommit = bb7c13fdcf3ead1b3a81ca19314085f1921c4f88 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 47bb96033..f97ab72a4 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 9ff34994f2a4dcf0b10262aacc912d7d283c121e..a5938b0a960121bd77a13e4c8fc8a053bea481c5 100644 +index 0f15d0f049e3bd7461c5ebd22686e638f9bfe653..74317f10d7f7b31eac50b4fcff5b3cc96c12bce1 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2174,6 +2174,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2243,6 +2243,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 5ed5ba349..ae0c5633b 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 d5d99ee9dca23783f5b70b96790143e689a49ae4..d6966b751c4ec3cae6f778f56ebb7ab52373959f 100644 +index 6be021dcdef8283db51baa25e74570473afb9063..11ffb490c10ccea6e1d5fefa607466c981a48154 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -46,6 +46,7 @@ dependencies { +@@ -47,6 +47,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-rc.1") // Pufferfish ++ api("io.sentry:sentry:7.0.0-rc.2") // Pufferfish implementation("org.ow2.asm:asm:9.4") implementation("org.ow2.asm:asm-commons:9.4") diff --git a/patches/api/0003-Purpur-API-Changes.patch b/patches/api/0003-Purpur-API-Changes.patch index 843e3f6f0..f638f79d0 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: ea2835bfe1e1625a02f7c7d26c06fe34a6674be1 +Commit: 4b1a082c94ebc090bbc74b9230e4f43075090a29 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 c0d0604e8d5d1ebf3a3d665a55a02ea12416465f..29f2fcfad0f563c3bd500b2ca7d84f453df23798 100644 +index 48808edcea2271d564390c637160881645f30489..8e6efa0dd4bc9ee4d20f6ef591f091e8e70faec0 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2823,4 +2823,127 @@ public final class Bukkit { +@@ -2899,4 +2899,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 da6e36a16e609272b60fc41ff69a6fa3c34926c0..eba4e7ebe3530fd8cb3ecbe72f703932df8721c9 100644 +index 8c4ba0028f5c350a2906add58d9bf3d127a16f58..8ef4fa47e6721f5154316e81c2173cc4a42f4901 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -11050,4 +11050,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla +@@ -11054,4 +11054,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 a5938b0a960121bd77a13e4c8fc8a053bea481c5..c55819f56b4a3850496feef6900c1ec8a0bb1a9d 100644 +index 74317f10d7f7b31eac50b4fcff5b3cc96c12bce1..6282d9fe1bdf0add7bbd2eaa8916d345fe923a8b 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2174,6 +2174,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2243,6 +2243,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi // Paper end @@ -465,7 +465,7 @@ index a5938b0a960121bd77a13e4c8fc8a053bea481c5..c55819f56b4a3850496feef6900c1ec8 // Leaf start @NotNull public org.bukkit.configuration.file.YamlConfiguration getLeafConfig() -@@ -2491,4 +2503,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2560,4 +2572,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi long getLastTickOversleepTime(); // Gale end - YAPFA - last tick time - API @@ -578,7 +578,7 @@ index a5938b0a960121bd77a13e4c8fc8a053bea481c5..c55819f56b4a3850496feef6900c1ec8 + // Purpur end } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 17d404d6d1a5b46b58d612fca38f17e71adee92e..b012cc979e38ef1ef1ec61e71a887b91eb3de223 100644 +index 5eb3521f5f91b0684b4beebf4f7ba2c795b41c42..cf63054e1b597b2bb13164722dd9a829ba7069ba 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java @@ -4160,6 +4160,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @@ -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 19e58e62ae442ef9be02ca7fa2f55e370a54afa4..994e026d68fcda9a4c34a8b161a06623f4437dff 100644 +index a599ed2795ba1baf2cbb465d1c7145580c27e1ea..298acbfb93663e40e627f6a47d51fd87a1551feb 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1192,4 +1192,41 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1243,4 +1243,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 da30f805556086c557bfd125c43f6ae791a8bdbd..d19e67b4a828727da0b8dcb8973c1deb09c28ade 100644 +index d7bbc3d4fbb049b8656b4f0970ced8b955cf56bd..69357a7e78ce8813eac0babdd869edf6804f5c50 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3322,4 +3322,123 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3319,4 +3319,123 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @Override Spigot spigot(); // Spigot end @@ -1298,13 +1298,13 @@ index c60be4fd24c7fdf65251dd6169e5e1ac3b588d95..569deccd2f1cf21da9b5906433ac493c + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java -index 1c4e0c7356047163a38f5ac4dd544129d0b36271..15bab5a00ebfde750b827569e407a5663d94411f 100644 +index 0217f98a74140bbae454d467de27c12b6060ca75..444b021691ea90ee3c87f4e47d4e8c48ef404a8f 100644 --- a/src/main/java/org/bukkit/inventory/ItemFactory.java +++ b/src/main/java/org/bukkit/inventory/ItemFactory.java -@@ -299,4 +299,15 @@ public interface ItemFactory { - @Deprecated - net.md_5.bungee.api.chat.hover.content.Content hoverContentOf(@NotNull org.bukkit.entity.Entity entity, @NotNull net.md_5.bungee.api.chat.BaseComponent[] customName); - // Paper end - bungee hover events +@@ -355,4 +355,15 @@ public interface ItemFactory { + */ + @NotNull ItemStack enchantWithLevels(@NotNull ItemStack itemStack, @org.jetbrains.annotations.Range(from = 1, to = 30) int levels, boolean allowTreasure, @NotNull java.util.Random random); + // Paper end - enchantWithLevels API + + // Purpur start + /** diff --git a/patches/api/0005-Bump-Dependencies.patch b/patches/api/0005-Bump-Dependencies.patch index 928b17926..84f24e071 100644 --- a/patches/api/0005-Bump-Dependencies.patch +++ b/patches/api/0005-Bump-Dependencies.patch @@ -5,21 +5,25 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index d6966b751c4ec3cae6f778f56ebb7ab52373959f..3d00401d4eac8461155916af09eb63242bd88e9a 100644 +index 11ffb490c10ccea6e1d5fefa607466c981a48154..b459a90ee4fe84566bc862a61dfbb6a5b9aaedc0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -11,8 +11,8 @@ java { - val annotationsVersion = "24.0.1" +@@ -9,11 +9,11 @@ java { + withJavadocJar() + } + +-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 slf4jVersion = "1.8.0-beta4" -val log4jVersion = "2.17.1" +val slf4jVersion = "2.0.9" // Leaf - Bump Dependencies -+val log4jVersion = "2.21.1" // Leaf - Bump Dependencies ++val log4jVersion = "2.22.0" // Leaf - Bump Dependencies val apiAndDocs: Configuration by configurations.creating { attributes { attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) -@@ -27,7 +27,7 @@ configurations.api { +@@ -28,7 +28,7 @@ configurations.api { dependencies { // api dependencies are listed transitively to API consumers @@ -28,7 +32,7 @@ index d6966b751c4ec3cae6f778f56ebb7ab52373959f..3d00401d4eac8461155916af09eb6324 api("com.google.code.gson:gson:2.10.1") api("net.md-5:bungeecord-chat:$bungeeCordChatVersion-deprecated+build.14") // Paper api("org.yaml:snakeyaml:2.2") -@@ -36,7 +36,7 @@ dependencies { +@@ -37,7 +37,7 @@ dependencies { api("com.googlecode.json-simple:json-simple:1.1.1") { isTransitive = false // includes junit } @@ -37,9 +41,9 @@ index d6966b751c4ec3cae6f778f56ebb7ab52373959f..3d00401d4eac8461155916af09eb6324 apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion")) apiAndDocs("net.kyori:adventure-api") apiAndDocs("net.kyori:adventure-text-minimessage") -@@ -48,30 +48,32 @@ dependencies { +@@ -49,30 +49,32 @@ dependencies { api("org.slf4j:slf4j-api:$slf4jVersion") - api("io.sentry:sentry:7.0.0-rc.1") // Pufferfish + api("io.sentry:sentry:7.0.0-rc.2") // Pufferfish - implementation("org.ow2.asm:asm:9.4") - implementation("org.ow2.asm:asm-commons:9.4") @@ -53,8 +57,8 @@ index d6966b751c4ec3cae6f778f56ebb7ab52373959f..3d00401d4eac8461155916af09eb6324 - compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3") - compileOnly("com.google.code.findbugs:jsr305:1.3.9") // Paper + api("org.apache.maven:maven-resolver-provider:3.9.5") -+ compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.16") -+ compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.16") ++ compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.17") ++ compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.17") + compileOnly("com.google.code.findbugs:jsr305:3.0.2") // Paper val annotations = "org.jetbrains:annotations:$annotationsVersion" // Paper - we don't want Java 5 annotations... @@ -70,7 +74,7 @@ index d6966b751c4ec3cae6f778f56ebb7ab52373959f..3d00401d4eac8461155916af09eb6324 - testImplementation("org.apache.commons:commons-lang3:3.12.0") - testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") -+ testImplementation("org.apache.commons:commons-lang3:3.13.0") ++ testImplementation("org.apache.commons:commons-lang3:3.14.0") + testImplementation("org.junit.jupiter:junit-jupiter:5.10.1") testImplementation("org.hamcrest:hamcrest:2.2") - testImplementation("org.mockito:mockito-core:5.5.0") @@ -80,8 +84,8 @@ index d6966b751c4ec3cae6f778f56ebb7ab52373959f..3d00401d4eac8461155916af09eb6324 + // Leaf end } - configure { -@@ -123,7 +125,7 @@ tasks.withType { + // Paper start +@@ -140,7 +142,7 @@ tasks.withType { options.use() options.isDocFilesSubDirs = true options.links( @@ -90,16 +94,16 @@ index d6966b751c4ec3cae6f778f56ebb7ab52373959f..3d00401d4eac8461155916af09eb6324 "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 -@@ -141,7 +143,7 @@ tasks.withType { +@@ -158,7 +160,7 @@ tasks.withType { "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", "https://javadoc.io/doc/org.apache.logging.log4j/log4j-api/$log4jVersion/", // Paper end - "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", // Paper -+ "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.9.16", // Paper // Leaf - Bump Dependencies ++ "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.9.17", // Paper // Leaf - Bump Dependencies ) options.tags("apiNote:a:API Note:") -@@ -184,6 +186,9 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks. +@@ -201,6 +203,9 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks. jarToScan.set(tasks.jar.flatMap { it.archiveFile }) classpath.from(configurations.compileClasspath) } diff --git a/patches/api/0007-KeYi-Player-Skull-API.patch b/patches/api/0007-KeYi-Player-Skull-API.patch index d74f58b60..0a2ae6a63 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 d19e67b4a828727da0b8dcb8973c1deb09c28ade..a1e823e36d4448f724cea187de146d8f7199acf3 100644 +index 69357a7e78ce8813eac0babdd869edf6804f5c50..f25043d5fa29c8c6b540bc5ab59efcb070820892 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -8,8 +8,11 @@ import java.util.Collection; @@ -23,7 +23,7 @@ index d19e67b4a828727da0b8dcb8973c1deb09c28ade..a1e823e36d4448f724cea187de146d8f import org.bukkit.DyeColor; import org.bukkit.Effect; import org.bukkit.GameMode; -@@ -3441,4 +3444,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3438,4 +3441,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 11e761805..ba69b1e65 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 a1e823e36d4448f724cea187de146d8f7199acf3..6c34bacb8f60b0e066191b5a33c4c2664d4678a9 100644 +index f25043d5fa29c8c6b540bc5ab59efcb070820892..54ff90d22cbaf44e9f6db2a6466934ef9f2ffbf3 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3184,6 +3184,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3181,6 +3181,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 71cdfce06..1400f02d1 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -76,7 +76,7 @@ index e45e6b44b2a8f2cdae6e0048a812b92126aa17ca..b5f3f213da8a40d5184098af017c8e26 .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 909e00c433fc869104dbe4a633c82f92304880d0..889886a949df9eb49a26c6fec9a32ddfbf938847 100644 +index 1fb4befc9fd770e2dcc31e9f32965f4510ecc316..a93db76e432d485690d996d821bf8ec68c599b48 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -898,7 +898,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> consumer, Set trackedPlayers) { this.trackedPlayers = trackedPlayers; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 7a63134b143e9ef67554bcfd6bcdaaf1ce2917d9..875c70c6358fa8b26c9db2ae6ccbfb68e70e18ab 100644 +index 643c889c4099fde0f64ed1fc72770de55adf9033..4f353e049252827a4e751817984746dfeb3b2659 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -213,6 +213,8 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1663,7 +1663,7 @@ index 9019bbc86f3e94b8f4033f2e5fb43dd7efac15f9..c2f73ac74d59f05cc4db657304de2613 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8adb7b3af8 100644 +index 477c343670599ba16dc34a5d4c07392ae1cc873b..b4e9a31d7c65fbee6eb83d2784313630a8d8fca9 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -334,6 +334,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1717,7 +1717,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a return; } -@@ -1141,10 +1164,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1142,10 +1165,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; @@ -1733,7 +1733,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1168,6 +1196,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1169,6 +1197,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); @@ -1741,7 +1741,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1221,13 +1250,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1222,13 +1251,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.setTag(nbttagcompound.copy()); } @@ -1761,7 +1761,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(Component.literal(s)); -@@ -1239,10 +1271,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1240,10 +1272,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -1777,7 +1777,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1252,11 +1287,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1253,11 +1288,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl for (int j = list.size(); i < j; ++i) { FilteredText filteredtext = (FilteredText) list.get(i); @@ -1791,7 +1791,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a } } -@@ -1269,6 +1304,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1270,6 +1305,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(this.player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } @@ -1808,7 +1808,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a @Override public void handleEntityTagQuery(ServerboundEntityTagQuery packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1298,8 +1343,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1299,8 +1344,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -1826,7 +1826,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a } else { ServerLevel worldserver = this.player.serverLevel(); -@@ -1482,7 +1535,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1483,7 +1536,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (!event.isAllowed()) { flag2 = true; // Paper - diff on change, this should be moved wrongly if (event.getLogWarning()) @@ -1835,7 +1835,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a } // Paper end } -@@ -1544,6 +1597,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1545,6 +1598,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -1844,7 +1844,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a // Skip the first time we do this if (from.getX() != Double.MAX_VALUE) { Location oldTo = to.clone(); -@@ -1582,6 +1637,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1583,6 +1638,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.resetFallDistance(); } @@ -1858,7 +1858,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1633,6 +1695,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1634,6 +1696,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return false; } // Paper end - optimise out extra getCubes @@ -1872,7 +1872,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a private boolean isPlayerCollidingWithAnythingNew(LevelReader world, AABB box, double newX, double newY, double newZ) { AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ()); Iterable iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); -@@ -1978,6 +2047,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1979,6 +2048,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -1880,7 +1880,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack, enumhand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2303,7 +2373,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2304,7 +2374,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { instant1 = (Instant) this.lastChatTimeStamp.get(); if (timestamp.isBefore(instant1)) { @@ -1889,7 +1889,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a } } while (!this.lastChatTimeStamp.compareAndSet(instant1, timestamp)); -@@ -2723,6 +2793,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2724,6 +2794,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (axisalignedbb.distanceToSqr(this.player.getEyePosition()) < ServerGamePacketListenerImpl.getMaxInteractionDistanceSquared(this.player.level())) { // Gale - make max interaction distance configurable @@ -1897,7 +1897,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a packet.dispatch(new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); -@@ -2736,6 +2807,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2737,6 +2808,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -1906,7 +1906,7 @@ index a69360a042457ce32a0ac22c1d678d0af5dca203..b1b1a91d691851e755b259d339c66d8a // Entity in bucket - SPIGOT-4048 and SPIGOT-6859a if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it. -@@ -3321,6 +3394,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3322,6 +3395,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } } @@ -2376,7 +2376,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 e8e7f56860720f560f5abf48ea91dc0ff5b34380..fbd449a30469e449744f085cf7a9e497d1198764 100644 +index 1e0e7fa54d058bf9faa4d1652a4cf6f5f6549254..67902da3d03cb794760db49b50408737f9c5f1c3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -156,7 +156,7 @@ import org.bukkit.plugin.PluginManager; @@ -2395,7 +2395,7 @@ index e8e7f56860720f560f5abf48ea91dc0ff5b34380..fbd449a30469e449744f085cf7a9e497 - private float maxUpStep; + public float maxUpStep; // Purpur - private -> public public boolean noPhysics; - protected final RandomSource random; + public final RandomSource random; public int tickCount; @@ -377,7 +377,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { private final Set tags; @@ -4074,7 +4074,7 @@ index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a double d = this.wantedX - this.fish.getX(); double e = this.wantedY - this.fish.getY(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index be105a4460e9bf2ef4b72a307fa31291c37d5e0e..2e268aa614522b40fbffabce4017b228db5bcba8 100644 +index a836bfd2ea8af8098a20fb37ca25a5a613226f67..a434d91b8dfff30cff81df964ea8149caa8cb604 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java @@ -42,6 +42,7 @@ public abstract class Animal extends AgeableMob { @@ -4091,10 +4091,10 @@ index be105a4460e9bf2ef4b72a307fa31291c37d5e0e..2e268aa614522b40fbffabce4017b228 - if (!this.level().isClientSide && i == 0 && this.canFallInLove()) { + if (!this.level().isClientSide && i == 0 && this.canFallInLove() && (this.level().purpurConfig.animalBreedingCooldownSeconds <= 0 || !this.level().hasBreedingCooldown(player.getUUID(), this.getClass()))) { // Purpur + final ItemStack breedCopy = itemstack.copy(); // Paper this.usePlayerItem(player, hand, itemstack); - this.setInLove(player); - return InteractionResult.SUCCESS; -@@ -231,12 +232,20 @@ public abstract class Animal extends AgeableMob { + this.setInLove(player, breedCopy); // Paper +@@ -240,12 +241,20 @@ public abstract class Animal extends AgeableMob { AgeableMob entityageable = this.getBreedOffspring(world, other); if (entityageable != null) { @@ -4118,7 +4118,7 @@ index be105a4460e9bf2ef4b72a307fa31291c37d5e0e..2e268aa614522b40fbffabce4017b228 int experience = this.getRandom().nextInt(7) + 1; EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience); if (entityBreedEvent.isCancelled()) { -@@ -264,8 +273,10 @@ public abstract class Animal extends AgeableMob { +@@ -273,8 +282,10 @@ public abstract class Animal extends AgeableMob { entityplayer.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, entityanimal, entityageable); } // Paper @@ -5382,7 +5382,7 @@ index 4300fab61765dd224fab084d118aae7294fc9de6..3c5f25300d1c7800144a459cc8bf5983 } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 683cc5f9f066d554383fcd30e3654ac06ec76510..505469cf6b7fa66c6cbac73a49e4eec850d5bfec 100644 +index 17e42c49fe6f1696a0b0b4b2537cabfe565692e5..97c38b72b998bdf397c72d3ea08fd93186585f30 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -114,6 +114,53 @@ public class Panda extends Animal { @@ -5476,8 +5476,8 @@ index 683cc5f9f066d554383fcd30e3654ac06ec76510..505469cf6b7fa66c6cbac73a49e4eec8 } else if (this.isOnBack()) { this.setOnBack(false); return InteractionResult.sidedSuccess(this.level().isClientSide); -@@ -653,7 +705,7 @@ public class Panda extends Animal { - this.setInLove(player); +@@ -654,7 +706,7 @@ public class Panda extends Animal { + this.setInLove(player, breedCopy); // Paper } else { if (this.level().isClientSide || this.isSitting() || this.isInWater()) { - return InteractionResult.PASS; @@ -5485,7 +5485,7 @@ index 683cc5f9f066d554383fcd30e3654ac06ec76510..505469cf6b7fa66c6cbac73a49e4eec8 } this.tryToSit(); -@@ -672,7 +724,7 @@ public class Panda extends Animal { +@@ -673,7 +725,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS; } else { @@ -5494,7 +5494,7 @@ index 683cc5f9f066d554383fcd30e3654ac06ec76510..505469cf6b7fa66c6cbac73a49e4eec8 } } -@@ -717,7 +769,7 @@ public class Panda extends Animal { +@@ -718,7 +770,7 @@ public class Panda extends Animal { return new Vector3f(0.0F, dimensions.height - (this.isBaby() ? 0.4375F : 0.0F) * scaleFactor, 0.0F); } @@ -5503,7 +5503,7 @@ index 683cc5f9f066d554383fcd30e3654ac06ec76510..505469cf6b7fa66c6cbac73a49e4eec8 private final Panda panda; -@@ -727,9 +779,9 @@ public class Panda extends Animal { +@@ -728,9 +780,9 @@ public class Panda extends Animal { } @Override @@ -7064,7 +7064,7 @@ index 26f0430a92aaa5dd5210b255ffb82291c5a7b278..b2035375e1eace2881ca33ba872dad37 } diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 796768ddc04a74792481efe9dacc0d83cbde746d..a4d5d57b29819d9a6a38e214af54e0c636ab49fb 100644 +index 9d147f34a7aba21a141fff4ccf1a079ed9f4881b..11181c0429b720381e7752f8a0d5e89615bcce4b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java @@ -86,6 +86,17 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -7328,7 +7328,7 @@ index 7b946ea210eebcab3d373b13e09ff839e49cfbe5..90e7c24eb50f333017e724ac56376fc5 brain.setMemory(MemoryModuleType.RAM_TARGET, entity.position()); brain.eraseMemory(MemoryModuleType.RAM_COOLDOWN_TICKS); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 09e9c0e55c789f03a4b64136f28154bd114db6f5..d3b655ccf40d24b7f5a09383fd5771bb275ac4b7 100644 +index a0628b9d74c29d02bfba583edf7ee6f2cde2cff6..bab9e413bd55d48e3e54bee66a6cd5be19a8f415 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -149,12 +149,60 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -7515,7 +7515,7 @@ index 5f5dc651d570989ec1294c31a14dcfede466b80a..3b1faa63e46a48e83ea672cf6da444a1 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 5f61c97478f005aaaaad1b027118079db7275cf7..9288327a365bc67c5bb8ed6aa23b78c725d5ba40 100644 +index 9120663b63fc0e365e8edb359892b0db1ee97875..b414572411e5b2b78fd66e860273656d53df9d9d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -75,9 +75,84 @@ public class Llama extends AbstractChestedHorse implements VariantHolder getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2878,6 +2944,7 @@ public final class CraftServer implements Server { +@@ -2941,6 +3007,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { @@ -17524,7 +17524,7 @@ index 2c64f9c8286d147a0a89781b69766e02b5e6e92d..82da14eda8f3b89932a1fdc26173a26d net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -2970,6 +3037,18 @@ public final class CraftServer implements Server { +@@ -3033,6 +3100,18 @@ public final class CraftServer implements Server { } // Gale end - Gale configuration - API @@ -17543,7 +17543,7 @@ index 2c64f9c8286d147a0a89781b69766e02b5e6e92d..82da14eda8f3b89932a1fdc26173a26d @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3206,4 +3285,15 @@ public final class CraftServer implements Server { +@@ -3269,4 +3348,15 @@ public final class CraftServer implements Server { } // Gale end - YAPFA - last tick time - API @@ -17560,7 +17560,7 @@ index 2c64f9c8286d147a0a89781b69766e02b5e6e92d..82da14eda8f3b89932a1fdc26173a26d + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 50e48d915572d2e77c5e69655760d81b9de7bba3..b42eae58ff3c085634671b72122b361869b52e88 100644 +index e00babef42bf7da243570aedaebbb1caf30edb7e..16c3922d7d33ec010170caf29b2605dfe99c6f12 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -2321,6 +2321,48 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -17613,10 +17613,10 @@ index 50e48d915572d2e77c5e69655760d81b9de7bba3..b42eae58ff3c085634671b72122b3618 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 ebdb90afa0ba716d27e195d763bf5f14db359d53..fc897f011f93ff7dd703bd54d0b164accc30d0d3 100644 +index e8f4e3620062a507f00c2b76a934ec48b0d5d89e..85f0ed9073dff0540e6eac26bc634f4d54a60db1 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -194,6 +194,14 @@ public class Main { +@@ -195,6 +195,14 @@ public class Main { .describedAs("Jar file"); // Paper end @@ -17631,7 +17631,7 @@ index ebdb90afa0ba716d27e195d763bf5f14db359d53..fc897f011f93ff7dd703bd54d0b164ac // Paper start acceptsAll(asList("server-name"), "Name of the server") .withRequiredArg() -@@ -313,7 +321,7 @@ public class Main { +@@ -314,7 +322,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } @@ -17753,7 +17753,7 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..aa8212432825db65cf485cd93f734ccd @Override diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -index 06a857ae432fc81737b53a6d2b8742c1e80e5f8a..615d19d62e04441304c4b552fde66db221143ad6 100644 +index 21e83238a0bad86ffacf60d5c5612771a49ef33d..a38149b8883195736ec6093aeb54971a89ec056c 100644 --- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java @@ -59,6 +59,7 @@ public class CraftEnchantment extends Enchantment { @@ -17784,7 +17784,7 @@ 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 90b04377088fcaf128cb35843702d2f5ead4b7f6..38ff078ae636218d157d4c885fca19be5666b52a 100644 +index 9f843b89dc20b91bf7243facee8486d525e4a1b3..7ca35289068dbece3f9f19384fe202fc844eceea 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -223,6 +223,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -17810,7 +17810,7 @@ index 90b04377088fcaf128cb35843702d2f5ead4b7f6..38ff078ae636218d157d4c885fca19be return false; } -@@ -1527,4 +1536,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1538,4 +1547,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name @@ -17924,7 +17924,7 @@ index f444e843535ec68ede0f05e7e7ef182ce872342b..6f967e1bce4d359efcdf2a82d4ab6f6b + // 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 030fd330b13197d752a2d4c48628b9efd2c2c776..bd6eb8db9cfbce18c4526e58577523bb6fa7c4a5 100644 +index 1992bd985d1beae77b88d71c5fa551a277943fdb..1af2a41d63c7ce775316b5adbdb073453e84d31a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -453,7 +453,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -17963,7 +17963,7 @@ index 030fd330b13197d752a2d4c48628b9efd2c2c776..bd6eb8db9cfbce18c4526e58577523bb } return effects; } -@@ -1099,4 +1099,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1115,4 +1115,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end @@ -18018,7 +18018,7 @@ 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 00bae5df87bcc1c75d4e2f430241579d3be82c11..692387ba5f313191ba324df666ea7086241153ee 100644 +index 83aaf3e6e377d731ce02f779f80b7bf5db46f89f..64aaea2b8c27c2b320f423b37dc0254bfe2fe015 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -519,10 +519,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -18231,10 +18231,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 249e3f703ef1b40b5401f167d4c30faafb69bb5b..70cb5d2aec1ad1cb071860e7a02f42f1ff0c1716 100644 +index 5dc160b743534665c6b3efb10b10f7c36e2da5ab..f33d6e9785acbd21a0b366587aa170cc1509bf58 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -592,6 +592,15 @@ public class CraftEventFactory { +@@ -594,6 +594,15 @@ public class CraftEventFactory { // Paper end craftServer.getPluginManager().callEvent(event); @@ -18250,7 +18250,7 @@ index 249e3f703ef1b40b5401f167d4c30faafb69bb5b..70cb5d2aec1ad1cb071860e7a02f42f1 return event; } -@@ -1059,6 +1068,7 @@ public class CraftEventFactory { +@@ -1061,6 +1070,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 @@ -18258,7 +18258,7 @@ index 249e3f703ef1b40b5401f167d4c30faafb69bb5b..70cb5d2aec1ad1cb071860e7a02f42f1 } event.setCancelled(cancelled); -@@ -1173,6 +1183,7 @@ public class CraftEventFactory { +@@ -1175,6 +1185,7 @@ public class CraftEventFactory { } else { entity.lastDamageCancelled = true; // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Keep track if the event was canceled } @@ -18266,7 +18266,7 @@ index 249e3f703ef1b40b5401f167d4c30faafb69bb5b..70cb5d2aec1ad1cb071860e7a02f42f1 return event; } -@@ -1236,6 +1247,7 @@ public class CraftEventFactory { +@@ -1238,6 +1249,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 @@ -18353,13 +18353,13 @@ index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..0a5841fa26698e60bdeadbb58b9343fe + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -index 57f4cf40359fe9bb427eb0134660d00839a63c86..7e66cab93d13c296433493da86c93aebca3622de 100644 +index 9469b0d5d8a46ac17c3998a4b537a4feb1deb3b0..89c10c309f0703711afdf4357cb72d0058b30e27 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -@@ -559,4 +559,17 @@ public final class CraftItemFactory implements ItemFactory { - return eggItem == null ? null : new net.minecraft.world.item.ItemStack(eggItem).asBukkitMirror(); +@@ -599,4 +599,17 @@ public final class CraftItemFactory implements ItemFactory { + return CraftItemStack.asCraftMirror(enchanted); } - // Paper end + // Paper end - enchantWithLevels API + + // Purpur start + @Override @@ -19136,10 +19136,10 @@ index 0000000000000000000000000000000000000000..1be93b19b51b0772bebc9add05583a46 +} diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..bdbf6efd723d93866b2d24f869b9e964c09fa9ab +index 0000000000000000000000000000000000000000..47e7e93dde48a75d61904bc7f40cb6a47cc79a15 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -0,0 +1,3223 @@ +@@ -0,0 +1,3227 @@ +package org.purpurmc.purpur; + +import net.minecraft.core.registries.BuiltInRegistries; @@ -21647,6 +21647,7 @@ index 0000000000000000000000000000000000000000..bdbf6efd723d93866b2d24f869b9e964 + } + } + ++ public boolean skeletonHorseRidable = false; + public boolean skeletonHorseRidableInWater = true; + public boolean skeletonHorseCanSwim = false; + public double skeletonHorseMaxHealthMin = 15.0D; @@ -21658,6 +21659,7 @@ index 0000000000000000000000000000000000000000..bdbf6efd723d93866b2d24f869b9e964 + public boolean skeletonHorseTakeDamageFromWater = false; + public boolean skeletonHorseAlwaysDropExp = false; + private void skeletonHorseSettings() { ++ skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); + skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); + skeletonHorseCanSwim = getBoolean("mobs.skeleton_horse.can-swim", skeletonHorseCanSwim); + if (PurpurConfig.version < 10) { @@ -22222,6 +22224,7 @@ index 0000000000000000000000000000000000000000..bdbf6efd723d93866b2d24f869b9e964 + zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent); + } + ++ public boolean zombieHorseRidable = false; + public boolean zombieHorseRidableInWater = false; + public boolean zombieHorseCanSwim = false; + public double zombieHorseMaxHealthMin = 15.0D; @@ -22234,6 +22237,7 @@ index 0000000000000000000000000000000000000000..bdbf6efd723d93866b2d24f869b9e964 + public boolean zombieHorseTakeDamageFromWater = false; + public boolean zombieHorseAlwaysDropExp = false; + private void zombieHorseSettings() { ++ zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); + zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); + zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); + if (PurpurConfig.version < 10) { diff --git a/patches/server/0011-Remove-Timings.patch b/patches/server/0011-Remove-Timings.patch index 63060dfc3..74747e8b6 100644 --- a/patches/server/0011-Remove-Timings.patch +++ b/patches/server/0011-Remove-Timings.patch @@ -1146,7 +1146,7 @@ index 0d1d4d2b1ed46a9f4ee383112ea20ac68295f026..662ad3887cc4a6fe3084ba63895e3f0c i = this.context.runTopCommand(customfunction1, source); } finally { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 3df4ec7b699055c87c8b3a04fc6340ef87d82f43..3cc0f68c54c89a57abd4af4a5718c1037a25c4cd 100644 +index 77e80f2a59a8a45138c2b8504842f6f50d4895ab..4edbbbf380d751cdddda51e4a863c90a6ff77e1c 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -57,7 +57,6 @@ import org.apache.logging.log4j.Level; @@ -1381,7 +1381,7 @@ index c466991236490bd05bde99e01862fb0e02ff41f1..cb5a808ff5902ddae52c400c0f60f02c this.chunkMap.tick(); } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 875c70c6358fa8b26c9db2ae6ccbfb68e70e18ab..fb7b3004fa97cd5b3d89db3f4ddcfcc6a8e8ddb9 100644 +index 4f353e049252827a4e751817984746dfeb3b2659..e1f2e1511e3a9452c428a19098dce19abb4d9405 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1,7 +1,6 @@ @@ -1559,10 +1559,10 @@ index 875c70c6358fa8b26c9db2ae6ccbfb68e70e18ab..fb7b3004fa97cd5b3d89db3f4ddcfcc6 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b1b1a91d691851e755b259d339c66d8adb7b3af8..33e7cff1208b1e21ca5ea68ae4a01513a3dc222f 100644 +index b4e9a31d7c65fbee6eb83d2784313630a8d8fca9..9c7fe1d04315423adb2ca8596175ddc94f7a81ef 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2483,7 +2483,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2484,7 +2484,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -1570,7 +1570,7 @@ index b1b1a91d691851e755b259d339c66d8adb7b3af8..33e7cff1208b1e21ca5ea68ae4a01513 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2493,7 +2492,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2494,7 +2493,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -1578,7 +1578,7 @@ index b1b1a91d691851e755b259d339c66d8adb7b3af8..33e7cff1208b1e21ca5ea68ae4a01513 return; } -@@ -2505,8 +2503,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2506,8 +2504,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl player.sendMessage(org.bukkit.ChatColor.RED + "An internal error occurred while attempting to perform this command"); java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; @@ -1901,10 +1901,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 82da14eda8f3b89932a1fdc26173a26dba4ae096..042ee3ec33bc42ded4a1490bd5acfb992f3627ca 100644 +index 5cbfa4ecb4c76cfda4fa42bfa6fdcec75ec1fe27..20f57d1e3e27f0a1d7daec67d7f615465cd90107 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -475,7 +475,6 @@ public final class CraftServer implements Server { +@@ -477,7 +477,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"); @@ -1913,10 +1913,10 @@ index 82da14eda8f3b89932a1fdc26173a26dba4ae096..042ee3ec33bc42ded4a1490bd5acfb99 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 fc897f011f93ff7dd703bd54d0b164accc30d0d3..ff89ba8a42d4ee8a539ba3541fae52c8a6c5ebad 100644 +index 85f0ed9073dff0540e6eac26bc634f4d54a60db1..602013bf66c5b1fd1c720ead4e14acfb2d90521b 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -371,8 +371,6 @@ public class Main { +@@ -372,8 +372,6 @@ public class Main { tryPreloadClass("org.jline.terminal.impl.MouseSupport"); tryPreloadClass("org.jline.terminal.impl.MouseSupport$1"); tryPreloadClass("org.jline.terminal.Terminal$MouseTracking"); diff --git a/patches/server/0012-Bump-Dependencies.patch b/patches/server/0012-Bump-Dependencies.patch index 0b9b880e2..fa0d59336 100644 --- a/patches/server/0012-Bump-Dependencies.patch +++ b/patches/server/0012-Bump-Dependencies.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index ab5aee09874e2258d05b22ca1be3c273cb1afb34..8e3fdb7720dde4e3983285099139c901e1aadb90 100644 +index ab5aee09874e2258d05b22ca1be3c273cb1afb34..238637b9bd22121124a4c4664ce1ac417a80bafa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { @@ -24,8 +24,8 @@ index ab5aee09874e2258d05b22ca1be3c273cb1afb34..8e3fdb7720dde4e3983285099139c901 - implementation("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - implementation - log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:2.19.0") // Paper - Needed to generate meta for our Log4j plugins + // Leaf start - Bump Dependencies -+ implementation("org.apache.logging.log4j:log4j-core:2.21.1") // Paper - implementation -+ log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:2.21.1") // Paper - Needed to generate meta for our Log4j plugins ++ implementation("org.apache.logging.log4j:log4j-core:2.22.0") // Paper - implementation ++ log4jPlugins.annotationProcessorConfigurationName("org.apache.logging.log4j:log4j-core:2.22.0") // Paper - Needed to generate meta for our Log4j plugins runtimeOnly(log4jPlugins.output) alsoShade(log4jPlugins.output) - implementation("io.netty:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol @@ -34,7 +34,7 @@ index ab5aee09874e2258d05b22ca1be3c273cb1afb34..8e3fdb7720dde4e3983285099139c901 - implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion - implementation("org.ow2.asm:asm:9.5") - implementation("org.ow2.asm:asm-commons:9.5") // Paper - ASM event executor generation -+ implementation("org.apache.logging.log4j:log4j-iostreams:2.21.1") // Paper - remove exclusion ++ implementation("org.apache.logging.log4j:log4j-iostreams:2.22.0") // Paper - remove exclusion + implementation("org.ow2.asm:asm:9.6") + implementation("org.ow2.asm:asm-commons:9.6") // Paper - ASM event executor generation implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files @@ -43,8 +43,8 @@ index ab5aee09874e2258d05b22ca1be3c273cb1afb34..8e3fdb7720dde4e3983285099139c901 - 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 -+ implementation("net.fabricmc:mapping-io:0.5.0-beta.3") // Paper - needed to read mappings for stacktrace deobfuscation -+ runtimeOnly("org.xerial:sqlite-jdbc:3.43.2.2") ++ implementation("net.fabricmc:mapping-io:0.5.0") // Paper - needed to read mappings for stacktrace deobfuscation ++ runtimeOnly("org.xerial:sqlite-jdbc:3.44.0.0") + runtimeOnly("com.mysql:mysql-connector-j:8.2.0") + runtimeOnly("com.lmax:disruptor:3.4.4") // Paper // Leaf - Bump Dependencies - Waiting Log4j 3.x that supported disruptor 4.0.0 + // Leaf end @@ -60,8 +60,8 @@ index ab5aee09874e2258d05b22ca1be3c273cb1afb34..8e3fdb7720dde4e3983285099139c901 - 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.5") -+ runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.16") -+ runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.16") ++ runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.17") ++ runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.17") + // Leaf end // Pufferfish start @@ -73,7 +73,7 @@ index ab5aee09874e2258d05b22ca1be3c273cb1afb34..8e3fdb7720dde4e3983285099139c901 - testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test - testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") + // Leaf start - Bump Dependencies -+ testImplementation("io.github.classgraph:classgraph:4.8.164") // Paper - mob goal test ++ testImplementation("io.github.classgraph:classgraph:4.8.165") // Paper - mob goal test + testImplementation("org.junit.jupiter:junit-jupiter:5.10.1") testImplementation("org.hamcrest:hamcrest:2.2") - testImplementation("org.mockito:mockito-core:5.5.0") diff --git a/patches/server/0015-Remove-UseItemOnPacket-Too-Far-Check.patch b/patches/server/0015-Remove-UseItemOnPacket-Too-Far-Check.patch index b7c5e166b..2acfff19c 100644 --- a/patches/server/0015-Remove-UseItemOnPacket-Too-Far-Check.patch +++ b/patches/server/0015-Remove-UseItemOnPacket-Too-Far-Check.patch @@ -7,10 +7,10 @@ This Check is added in 1.17.x -> 1.18.x update by Mojang. By removing this check, it enable hackers to use some modules of hack clients. diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 33e7cff1208b1e21ca5ea68ae4a01513a3dc222f..09ae63d9894ef7658ac32f1615d6a4836b9721c9 100644 +index 9c7fe1d04315423adb2ca8596175ddc94f7a81ef..47f2568bacb06ffc7d756bbe2ea36ef9582dd4f2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1980,7 +1980,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1981,7 +1981,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl Vec3 vec3d2 = vec3d.subtract(vec3d1); double d0 = 1.0000001D; diff --git a/patches/server/0026-Leaves-Protocol-Core.patch b/patches/server/0026-Leaves-Protocol-Core.patch index 1e27a3c4e..3fa53059e 100644 --- a/patches/server/0026-Leaves-Protocol-Core.patch +++ b/patches/server/0026-Leaves-Protocol-Core.patch @@ -78,10 +78,10 @@ index fa9264af129acc046822ac0a7769e45e42142baf..032a682d6be24bbb3bdef1447ccdfe7d 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 042ee3ec33bc42ded4a1490bd5acfb992f3627ca..4fe7326d3365b0055aefa5eea213420ac8ad9292 100644 +index 20f57d1e3e27f0a1d7daec67d7f615465cd90107..62fcfc26bd8b2a37e5345f3db080ad3eee029f77 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -487,6 +487,7 @@ public final class CraftServer implements Server { +@@ -489,6 +489,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 042ee3ec33bc42ded4a1490bd5acfb992f3627ca..4fe7326d3365b0055aefa5eea213420a } public boolean getCommandBlockOverride(String command) { -@@ -1092,6 +1093,7 @@ public final class CraftServer implements Server { +@@ -1094,6 +1095,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");