diff --git a/build.gradle.kts b/build.gradle.kts index e69ad97f..3ea35793 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ plugins { java `maven-publish` - id("io.papermc.paperweight.patcher") version "1.6.4-SNAPSHOT" + id("io.papermc.paperweight.patcher") version "1.7.2-SNAPSHOT" } val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" @@ -15,7 +15,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.10.2:fat") + remapper("net.fabricmc:tiny-remapper:0.10.3:fat") decompiler("org.vineflower:vineflower:1.10.1") paperclip("cn.dreeam:quantumleaper:1.0.0-SNAPSHOT") } @@ -86,7 +86,6 @@ paperweight { tasks.generateDevelopmentBundle { apiCoordinates = "cn.dreeam.leaf:leaf-api" - mojangApiCoordinates = "io.papermc.paper:paper-mojangapi" libraryRepositories.set( listOf( "https://repo.maven.apache.org/maven2/", diff --git a/gradle.properties b/gradle.properties index d4555e33..ede657db 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = cn.dreeam.leaf version = 1.20.6-R0.1-SNAPSHOT -galeCommit = 06d5d34300bafadf7b2a6211171ba9b53bb47ab0 +galeCommit = c3d6cff782c0b3eba6311873327bac76669003e3 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0002-Pufferfish-Sentry.patch b/patches/api/0002-Pufferfish-Sentry.patch index e906ce35..1cd84dc1 100644 --- a/patches/api/0002-Pufferfish-Sentry.patch +++ b/patches/api/0002-Pufferfish-Sentry.patch @@ -7,10 +7,10 @@ Original license: GPL v3 Original project: https://github.com/pufferfish-gg/Pufferfish diff --git a/build.gradle.kts b/build.gradle.kts -index 05180de5beea923d9f96bbe70fae84fb48320643..a085f6fa2cfb3721752b38096a2c35fcdd114d02 100644 +index 64a5d2f43e6fb459ff30306467a4be1e2831c0b2..eccc64e2baa4c8d511b968f49ff23261f1c78f16 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -51,6 +51,7 @@ dependencies { +@@ -52,6 +52,7 @@ dependencies { apiAndDocs("net.kyori:adventure-text-logger-slf4j") api("org.apache.logging.log4j:log4j-api:$log4jVersion") api("org.slf4j:slf4j-api:$slf4jVersion") diff --git a/patches/api/0003-Purpur-API-Changes.patch b/patches/api/0003-Purpur-API-Changes.patch index 0085a067..032cb51c 100644 --- a/patches/api/0003-Purpur-API-Changes.patch +++ b/patches/api/0003-Purpur-API-Changes.patch @@ -6,11 +6,12 @@ Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 479a7d8583d27167f96d4a418fdb05797d364453 +Commit: 9dcfdf13c206866ec56b4044f4a7905886a669ea Patches below are removed in this patch: Pufferfish-API-Changes.patch Fix-pufferfish-issues.patch +Rebrand.patch Build-System-Changes.patch Remove-Timings.patch Add-log-suppression-for-LibraryLoader.patch @@ -33,10 +34,10 @@ index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48c @Override diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 8dfb22c3cf06c8037ca709ebd486a37c71a5a352..76dbc19ab0b87a3b081dbc38e8185268a50f4e3e 100644 +index 445b422c14af83cb5c88d36590ab2eca895515ac..60615e802a134adae9108210e4c669eeab304753 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2977,4 +2977,127 @@ public final class Bukkit { +@@ -2974,4 +2974,127 @@ public final class Bukkit { public static Server.Spigot spigot() { return server.spigot(); } @@ -255,12 +256,12 @@ index 918a045165cdcde264bc24082b7afebb407271de..687d11619379aead7f665d4a5f8f8bcc + // Purpur end } diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 7a337fe908915f8ea487a0b9236c511cb07d5e66..1dd02e2782364bf25521088cf8858d3443643447 100644 +index 81f9ad99699a78b97e4accaaf1a98eacf29493ce..e3e996d932db689ba62a43f7f01d6f003f8337d3 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -11657,4 +11657,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla - public boolean isEnabledByFeature(@NotNull World world) { - return Bukkit.getDataPackManager().isEnabledByFeature(this, world); +@@ -5701,4 +5701,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla + } + return Registry.BLOCK.get(material.key); } + + // Purpur start @@ -659,10 +660,10 @@ index 739911cda33b373f99df627a3a378b37d7d461aa..51e78c22cd021722b963fe31d1d9175d * Add an entity to the block. * diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java -index ac9a28922f8a556944a4c3649d74c32c622f0cb0..e842d13febca67ffa1c89fb2c1324d2609fb81fd 100644 +index c3a9cf65db73ed534bf20996c7f05b5eb0aaebe1..83f84a76cbfdf5138ecccf3a886d38151a500bf2 100644 --- a/src/main/java/org/bukkit/command/SimpleCommandMap.java +++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java -@@ -143,6 +143,19 @@ public class SimpleCommandMap implements CommandMap { +@@ -152,6 +152,19 @@ public class SimpleCommandMap implements CommandMap { return false; } @@ -682,7 +683,7 @@ index ac9a28922f8a556944a4c3649d74c32c622f0cb0..e842d13febca67ffa1c89fb2c1324d26 // Paper start - Plugins do weird things to workaround normal registration if (target.timings == null) { target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target); -@@ -152,7 +165,7 @@ public class SimpleCommandMap implements CommandMap { +@@ -161,7 +174,7 @@ public class SimpleCommandMap implements CommandMap { try { try (co.aikar.timings.Timing ignored = target.timings.startTiming()) { // Paper - use try with resources // Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false) @@ -1281,10 +1282,10 @@ index c60be4fd24c7fdf65251dd6169e5e1ac3b588d95..569deccd2f1cf21da9b5906433ac493c + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 84a7bf0936d35bf42b5ed038d295d5c31740f472..6e9b4cbc81878616b1c48add5db534286d267b05 100644 +index c64413a6740b604282984dea2a8430a6e7478d68..5c609d916e2d2f08ba90ebd23f13c5c9a14bc73c 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -17,6 +17,17 @@ import org.bukkit.inventory.meta.ItemMeta; +@@ -19,6 +19,17 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.material.MaterialData; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -1302,7 +1303,7 @@ index 84a7bf0936d35bf42b5ed038d295d5c31740f472..6e9b4cbc81878616b1c48add5db53428 /** * Represents a stack of items. -@@ -1073,4 +1084,565 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1079,4 +1090,565 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat return Bukkit.getUnsafe().computeTooltipLines(this, tooltipContext, player); } // Paper end - expose itemstack tooltip lines @@ -1869,7 +1870,7 @@ index 84a7bf0936d35bf42b5ed038d295d5c31740f472..6e9b4cbc81878616b1c48add5db53428 + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/RecipeChoice.java b/src/main/java/org/bukkit/inventory/RecipeChoice.java -index db8bcc66bdc4bedfffb4705db6338eda4c0ad29a..feda3ddfaaf37b6ee218a0e0b1fbc199899bd364 100644 +index c143b0d8b97d514566bac8413d0346cf50822aeb..032a21766ce91471cb7d91b663d70e0d9fa66a26 100644 --- a/src/main/java/org/bukkit/inventory/RecipeChoice.java +++ b/src/main/java/org/bukkit/inventory/RecipeChoice.java @@ -10,6 +10,7 @@ import java.util.function.Predicate; @@ -1880,7 +1881,7 @@ index db8bcc66bdc4bedfffb4705db6338eda4c0ad29a..feda3ddfaaf37b6ee218a0e0b1fbc199 /** * Represents a potential item match within a recipe. All choices within a -@@ -150,6 +151,7 @@ public interface RecipeChoice extends Predicate, Cloneable { +@@ -157,6 +158,7 @@ public interface RecipeChoice extends Predicate, Cloneable { public static class ExactChoice implements RecipeChoice { private List choices; @@ -1888,7 +1889,7 @@ index db8bcc66bdc4bedfffb4705db6338eda4c0ad29a..feda3ddfaaf37b6ee218a0e0b1fbc199 public ExactChoice(@NotNull ItemStack stack) { this(Arrays.asList(stack)); -@@ -194,6 +196,7 @@ public interface RecipeChoice extends Predicate, Cloneable { +@@ -206,6 +208,7 @@ public interface RecipeChoice extends Predicate, Cloneable { @Override public boolean test(@NotNull ItemStack t) { @@ -1896,7 +1897,7 @@ index db8bcc66bdc4bedfffb4705db6338eda4c0ad29a..feda3ddfaaf37b6ee218a0e0b1fbc199 for (ItemStack match : choices) { if (t.isSimilar(match)) { return true; -@@ -203,6 +206,17 @@ public interface RecipeChoice extends Predicate, Cloneable { +@@ -215,6 +218,17 @@ public interface RecipeChoice extends Predicate, Cloneable { return false; } diff --git a/patches/api/0004-Remove-Timings.patch b/patches/api/0004-Remove-Timings.patch index 4343639f..74fbd701 100644 --- a/patches/api/0004-Remove-Timings.patch +++ b/patches/api/0004-Remove-Timings.patch @@ -2830,10 +2830,10 @@ index 3e61a926620a67daec3af54b72a1b911eaef2ed4..00000000000000000000000000000000 - } -} diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index a3ba9249e636d1fb8dad98fab413436009fe04df..0a4d7e3b8eda50ec10a7cdb4110628b51b771ef8 100644 +index 0857a65ecbc36e0e4b8a7d0cda52be35f238f660..eabc229dd6c2cdfcc7d533e0eae44e97070922ba 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -142,7 +142,8 @@ public interface UnsafeValues { +@@ -151,7 +151,8 @@ public interface UnsafeValues { // Paper start /** @@ -2871,7 +2871,7 @@ index f9a00aecca5ec41b460bf41dfe1c69694768cf98..00000000000000000000000000000000 - } -} diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java -index b3a2c274f05156fd603bcc7a68ab41265f2eaf44..7c94976e6bac4a0adbe4bbdb25764040aa5c447d 100644 +index c7cdc2ad8a2c43e8c0fcaa1761d3b81726c5ebcb..3b73c0e59788f5f49ca2423032550f11855d52ae 100644 --- a/src/main/java/org/bukkit/command/Command.java +++ b/src/main/java/org/bukkit/command/Command.java @@ -33,8 +33,6 @@ public abstract class Command { @@ -2884,7 +2884,7 @@ index b3a2c274f05156fd603bcc7a68ab41265f2eaf44..7c94976e6bac4a0adbe4bbdb25764040 protected Command(@NotNull String name) { this(name, "", "/" + name, new ArrayList()); diff --git a/src/main/java/org/bukkit/command/FormattedCommandAlias.java b/src/main/java/org/bukkit/command/FormattedCommandAlias.java -index 9d4f553c04784cca63901a56a7aea62a5cae1d72..0f96873eff87ea267f9c1875b3893f357fab03f3 100644 +index abe256e1e45ce28036da4aa1586715bc8a1a3414..9eab8024e0675865f17669847759a26d28f74f3a 100644 --- a/src/main/java/org/bukkit/command/FormattedCommandAlias.java +++ b/src/main/java/org/bukkit/command/FormattedCommandAlias.java @@ -12,7 +12,6 @@ public class FormattedCommandAlias extends Command { @@ -2896,7 +2896,7 @@ index 9d4f553c04784cca63901a56a7aea62a5cae1d72..0f96873eff87ea267f9c1875b3893f35 } @@ -120,10 +119,6 @@ public class FormattedCommandAlias extends Command { - return formatString; + return formatString.trim(); // Paper - Causes an extra space at the end, breaks with brig commands } - @NotNull @@ -2907,10 +2907,10 @@ index 9d4f553c04784cca63901a56a7aea62a5cae1d72..0f96873eff87ea267f9c1875b3893f35 return i >= j && i <= k; } diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java -index e842d13febca67ffa1c89fb2c1324d2609fb81fd..3a146a9c2fc99ea8f9f6a8c2c1d053bf68aeb853 100644 +index 83f84a76cbfdf5138ecccf3a886d38151a500bf2..4ba2d258114259691a453c03751b5b7fa3d6b525 100644 --- a/src/main/java/org/bukkit/command/SimpleCommandMap.java +++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java -@@ -34,7 +34,6 @@ public class SimpleCommandMap implements CommandMap { +@@ -38,7 +38,6 @@ public class SimpleCommandMap implements CommandMap { register("bukkit", new VersionCommand("version")); register("bukkit", new ReloadCommand("reload")); //register("bukkit", new PluginsCommand("plugins")); // Paper @@ -2918,7 +2918,7 @@ index e842d13febca67ffa1c89fb2c1324d2609fb81fd..3a146a9c2fc99ea8f9f6a8c2c1d053bf } public void setFallbackCommands() { -@@ -66,7 +65,6 @@ public class SimpleCommandMap implements CommandMap { +@@ -70,7 +69,6 @@ public class SimpleCommandMap implements CommandMap { */ @Override public boolean register(@NotNull String label, @NotNull String fallbackPrefix, @NotNull Command command) { @@ -2926,7 +2926,7 @@ index e842d13febca67ffa1c89fb2c1324d2609fb81fd..3a146a9c2fc99ea8f9f6a8c2c1d053bf label = label.toLowerCase(java.util.Locale.ENGLISH).trim(); fallbackPrefix = fallbackPrefix.toLowerCase(java.util.Locale.ENGLISH).trim(); boolean registered = register(label, command, false, fallbackPrefix); -@@ -156,23 +154,13 @@ public class SimpleCommandMap implements CommandMap { +@@ -165,23 +163,13 @@ public class SimpleCommandMap implements CommandMap { parsedArgs = event.getArgs(); // Purpur end diff --git a/patches/api/0005-Bump-Dependencies.patch b/patches/api/0005-Bump-Dependencies.patch index 2ee0b45d..6116ac83 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 03ea85ce7d8724518ae0e07dcc6495e99f38f67c..01fd7ac998aef82923efc54c3341e46b2f19235c 100644 +index eccc64e2baa4c8d511b968f49ff23261f1c78f16..1106cdb5e07a879f7548bc17351ddf0fe9dbb107 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,8 +12,10 @@ java { @@ -21,16 +21,16 @@ index 03ea85ce7d8724518ae0e07dcc6495e99f38f67c..01fd7ac998aef82923efc54c3341e46b val apiAndDocs: Configuration by configurations.creating { attributes { attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) -@@ -28,7 +30,7 @@ configurations.api { - +@@ -29,7 +31,7 @@ configurations.api { dependencies { + api("com.mojang:brigadier:1.2.9") // Paper - Brigadier command api // api dependencies are listed transitively to API consumers - api("com.google.guava:guava:32.1.2-jre") + api("com.google.guava:guava:33.1.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.18") { -@@ -41,7 +43,7 @@ dependencies { +@@ -42,7 +44,7 @@ dependencies { api("com.googlecode.json-simple:json-simple:1.1.1") { isTransitive = false // includes junit } @@ -39,7 +39,7 @@ index 03ea85ce7d8724518ae0e07dcc6495e99f38f67c..01fd7ac998aef82923efc54c3341e46b apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion")) apiAndDocs("net.kyori:adventure-api") apiAndDocs("net.kyori:adventure-text-minimessage") -@@ -51,28 +53,32 @@ dependencies { +@@ -52,28 +54,32 @@ dependencies { apiAndDocs("net.kyori:adventure-text-logger-slf4j") api("org.apache.logging.log4j:log4j-api:$log4jVersion") api("org.slf4j:slf4j-api:$slf4jVersion") @@ -78,7 +78,7 @@ index 03ea85ce7d8724518ae0e07dcc6495e99f38f67c..01fd7ac998aef82923efc54c3341e46b testImplementation("org.hamcrest:hamcrest:2.2") testImplementation("org.mockito:mockito-core:5.11.0") testImplementation("org.ow2.asm:asm-tree:9.7") -@@ -143,12 +149,12 @@ tasks.withType { +@@ -164,12 +170,12 @@ tasks.withType { options.use() options.isDocFilesSubDirs = true options.links( @@ -93,7 +93,7 @@ index 03ea85ce7d8724518ae0e07dcc6495e99f38f67c..01fd7ac998aef82923efc54c3341e46b "https://www.javadoc.io/doc/com.google.code.gson/gson/2.10.1", // Paper end // Paper start -@@ -159,9 +165,9 @@ tasks.withType { +@@ -180,9 +186,9 @@ tasks.withType { "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/", "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/", "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", @@ -105,7 +105,7 @@ index 03ea85ce7d8724518ae0e07dcc6495e99f38f67c..01fd7ac998aef82923efc54c3341e46b ) options.tags("apiNote:a:API Note:") -@@ -204,6 +210,11 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks. +@@ -225,6 +231,11 @@ val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks. jarToScan.set(tasks.jar.flatMap { it.archiveFile }) classpath.from(configurations.compileClasspath) } diff --git a/patches/generated-api/0001-Purpur-generated-api-Changes.patch b/patches/generated-api/0001-Purpur-generated-api-Changes.patch index c425e9fb..d7fb5707 100644 --- a/patches/generated-api/0001-Purpur-generated-api-Changes.patch +++ b/patches/generated-api/0001-Purpur-generated-api-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur generated-api Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 479a7d8583d27167f96d4a418fdb05797d364453 +Commit: 9dcfdf13c206866ec56b4044f4a7905886a669ea diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java index 43f4deacef349502cbb207aafc4f9cb7a75177c5..6b692c24a62e2172116a6b9c371b1c0e2411c27e 100644 diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index b17a3e30..56613668 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,27 +5,38 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index e9b050f744391444714c8803835d78d0415f96ce..344b87ffcf53f21f8e1a25d1e35fa5246d37f99d 100644 +index e2cc87a762c88a6360c265e66ed3bb0592eab2e3..4ee48737f52e24f6e7148709068c568b36a736da 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -14,7 +14,7 @@ val alsoShade: Configuration by configurations.creating +@@ -13,7 +13,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { + val alsoShade: Configuration by configurations.creating + dependencies { - // Gale start - project setup - // Depend on own API -- implementation(project(":gale-api")) -+ implementation(project(":leaf-api")) // Leaf - // Depend on Paper MojangAPI - implementation("io.papermc.paper:paper-mojangapi:${project.version}") { - exclude("io.papermc.paper", "paper-api") -@@ -95,7 +95,7 @@ tasks.jar { +- implementation(project(":gale-api")) // Gale start - project setup - Depend on own API ++ implementation(project(":leaf-api")) // Gale start - project setup - Depend on own API // Leaf + // Paper start + implementation("org.jline:jline-terminal-jansi:3.21.0") + implementation("net.minecrell:terminalconsoleappender:1.3.0") +@@ -90,14 +90,14 @@ tasks.jar { + val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", - "Implementation-Title" to "CraftBukkit", -- "Implementation-Version" to "git-Gale-$implementationVersion", // Gale - branding changes -+ "Implementation-Version" to "git-Leaf-$implementationVersion", // Gale - branding changes // Leaf +- "Implementation-Title" to "Gale", // Gale - branding changes ++ "Implementation-Title" to "Leaf", // Gale - branding changes // Leaf + "Implementation-Version" to implementationVersion, "Implementation-Vendor" to date, // Paper - "Specification-Title" to "Bukkit", +- "Specification-Title" to "Gale", // Gale - branding changes ++ "Specification-Title" to "Leaf", // Gale - branding changes // Leaf "Specification-Version" to project.version, +- "Specification-Vendor" to "GaleMC Team", // Gale - branding changes +- "Brand-Id" to "galemc:gale", // Gale - branding changes +- "Brand-Name" to "Gale", // Gale - branding changes ++ "Specification-Vendor" to "Winds Studio", // Gale - branding changes // Leaf ++ "Brand-Id" to "winds-studio:leaf", // Gale - branding changes // Leaf ++ "Brand-Name" to "Leaf", // Gale - branding changes // Leaf + "Build-Number" to (build ?: ""), + "Build-Time" to Instant.now().toString(), + "Git-Branch" to gitBranch, // Paper diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java index 88102f6ba8352a080125512d0bbfacdf779f4f38..fe50cc484ebfe4d3ab8795c222b2abd45fe64310 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java @@ -72,6 +83,22 @@ index e45e6b44b2a8f2cdae6e0048a812b92126aa17ca..b5f3f213da8a40d5184098af017c8e26 .variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history")) .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); +diff --git a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java +index 7823cf3cdb11062491deaa0eae5aa5e9f5a3e3ba..5f54035bbb7567f595d2e1a96e56d57d3f1b976a 100644 +--- a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java ++++ b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java +@@ -42,9 +42,9 @@ public record ServerBuildInfoImpl( + this( + getManifestAttribute(manifest, ATTRIBUTE_BRAND_ID) + .map(Key::key) +- .orElse(Key.key("galemc", "gale")), // Gale - branding changes ++ .orElse(Key.key("winds-studio", "leaf")), // Gale - branding changes // Leaf + getManifestAttribute(manifest, ATTRIBUTE_BRAND_NAME) +- .orElse("Gale"), // Gale - branding changes ++ .orElse("Leaf"), // Gale - branding changes // Leaf + SharedConstants.getCurrentVersion().getId(), + SharedConstants.getCurrentVersion().getName(), + getManifestAttribute(manifest, ATTRIBUTE_BUILD_NUMBER) diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java index 4f3cc14d48690bb183d09bb7a5ba1e23e8a0c08a..d8ebcd1c94ce0f78e9d16c603a79a492263990fd 100644 --- a/src/main/java/net/minecraft/CrashReport.java @@ -88,10 +115,10 @@ index 4f3cc14d48690bb183d09bb7a5ba1e23e8a0c08a..d8ebcd1c94ce0f78e9d16c603a79a492 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a77d650fd3b58cc883f284e1d2e41459ae0a77cd..ff4603d4749afdd3ff388c4b5d02ae6620140d63 100644 +index 33f06c2cdc8727529b2547e1cb3cb15266be2602..17af0e5be9245573bfcd2ead2be3b6434cd8f576 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -950,7 +950,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop diff --git a/build.gradle.kts b/build.gradle.kts -index 344b87ffcf53f21f8e1a25d1e35fa5246d37f99d..34335e3c6aeee7c29ce968170ce4d7b6c9872149 100644 +index 4ee48737f52e24f6e7148709068c568b36a736da..2200d656214d5db35d15a6fe145982c3fe8573cc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -20,6 +20,9 @@ dependencies { - exclude("io.papermc.paper", "paper-api") - } - // Gale end - project setup +@@ -14,6 +14,9 @@ val alsoShade: Configuration by configurations.creating + + dependencies { + implementation(project(":leaf-api")) // Gale start - project setup - Depend on own API // Leaf + + implementation("com.electronwill.night-config:toml:3.6.7") // Leaf - Night config + diff --git a/patches/server/0003-Leaf-Config-legacy-converter.patch b/patches/server/0003-Leaf-Config-legacy-converter.patch index 69d5bb25..1c87da12 100644 --- a/patches/server/0003-Leaf-Config-legacy-converter.patch +++ b/patches/server/0003-Leaf-Config-legacy-converter.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Leaf Config legacy converter diff --git a/build.gradle.kts b/build.gradle.kts -index 34335e3c6aeee7c29ce968170ce4d7b6c9872149..663d5bfd7c541a193a1636e6f6f8ae5b656b080b 100644 +index 2200d656214d5db35d15a6fe145982c3fe8573cc..909b46295cf87fbc000cd7328c8d1322c8969ecf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -23,6 +23,13 @@ dependencies { +@@ -17,6 +17,13 @@ dependencies { implementation("com.electronwill.night-config:toml:3.6.7") // Leaf - Night config diff --git a/patches/server/0006-Pufferfish-Optimize-mob-spawning.patch b/patches/server/0006-Pufferfish-Optimize-mob-spawning.patch index 939f1cc3..1f870a36 100644 --- a/patches/server/0006-Pufferfish-Optimize-mob-spawning.patch +++ b/patches/server/0006-Pufferfish-Optimize-mob-spawning.patch @@ -20,10 +20,10 @@ and, in my opinion, worth the low risk of minor mob-spawning-related inconsistencies. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ff4603d4749afdd3ff388c4b5d02ae6620140d63..fffe9e1c307e83b0dcb6c40bf0820f9f9f5c4528 100644 +index 17af0e5be9245573bfcd2ead2be3b6434cd8f576..a976002437a5d9c761835691213e11b14d9a7d45 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -306,6 +306,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop atomicreference = new AtomicReference(); Thread thread = new io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index c58b52acafdc43f41bcc786de56d3d75eb220678..01ebdd21c29651e53d8f649926564a4815be0a9d 100644 +index 8c74652ffa2c1263c835381bc27ffdc6d272dbf7..05e214ca14240ba635927c9f2a71d19ba1e9aa45 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -365,6 +365,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -364,6 +364,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface DedicatedServer.LOGGER.info("JMX monitoring enabled"); } @@ -45,7 +45,7 @@ index c58b52acafdc43f41bcc786de56d3d75eb220678..01ebdd21c29651e53d8f649926564a48 } } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index a2c5b824a3126f0c7970550f509db9407c66ee28..c8b898e8482f846641505531e8286d9d113c92f9 100644 +index 7bac7112b520286ebe9e8d36dc0932900e76eb52..54c3e32c7ae869d55408d77ea2aa1635f980a39b 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -246,7 +246,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider diff --git a/patches/server/0010-Purpur-Server-Changes.patch b/patches/server/0010-Purpur-Server-Changes.patch index 23f40fbb..4865db89 100644 --- a/patches/server/0010-Purpur-Server-Changes.patch +++ b/patches/server/0010-Purpur-Server-Changes.patch @@ -9,7 +9,7 @@ Fix-pufferfish-issues.patch Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 479a7d8583d27167f96d4a418fdb05797d364453 +Commit: 9dcfdf13c206866ec56b4044f4a7905886a669ea Patches below are removed in this patch: Metrics changes in Purpur-config-files.patch @@ -32,10 +32,10 @@ Remove-Mojang-Profiler.patch MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/build.gradle.kts b/build.gradle.kts -index f9dc6deb2e5e94bfd4aff747699a90423c4391a1..aa9098d9a86ccac64777aeba875d724a6691c588 100644 +index 909b46295cf87fbc000cd7328c8d1322c8969ecf..431ac399769057642fdf4694b68d84b4423a7103 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -63,6 +63,12 @@ dependencies { +@@ -57,6 +57,12 @@ 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") @@ -149,30 +149,39 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index 03f5ec3c4f8eac9cecfef0f257b90090aece5017..77ee490b58f60cfea946cca4e335882dd324bd47 100644 +index 6fca13221ef3e0bbcad2ebbe74d6aadf8ed2c539..5ff732297a8697277ada5f25a20db6ad7775b143 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -@@ -4,6 +4,7 @@ import com.google.common.base.Charsets; +@@ -3,15 +3,12 @@ package com.destroystokyo.paper; + import com.google.common.base.Charsets; import com.google.common.io.Resources; import com.google.gson.Gson; - import com.google.gson.JsonArray; -+import com.google.gson.JsonElement; +-import com.google.gson.JsonArray; +-import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; + import io.papermc.paper.ServerBuildInfo; + import java.io.BufferedReader; + import java.io.IOException; + import java.net.URI; +-import java.util.stream.StreamSupport; + import org.checkerframework.checker.nullness.qual.NonNull; + import org.checkerframework.framework.qual.DefaultQualifier; import org.galemc.gale.version.AbstractPaperVersionFetcher; -@@ -44,11 +45,7 @@ public class PaperVersionFetcher extends AbstractPaperVersionFetcher { +@@ -46,11 +43,8 @@ public class PaperVersionFetcher extends AbstractPaperVersionFetcher { Charsets.UTF_8 ).openBufferedStream()) { - JsonObject json = new Gson().fromJson(reader, JsonObject.class); -- JsonArray builds = json.getAsJsonArray("builds"); -- int latest = StreamSupport.stream(builds.spliterator(), false) -- .mapToInt(e -> e.getAsInt()) + final JsonObject json = new Gson().fromJson(reader, JsonObject.class); +- final JsonArray builds = json.getAsJsonArray("builds"); +- final int latest = StreamSupport.stream(builds.spliterator(), false) +- .mapToInt(JsonElement::getAsInt) - .max() -- .getAsInt(); -+ int latest = json.getAsJsonObject("builds").getAsJsonPrimitive("latest").getAsInt(); // Purpur +- .orElseThrow(); ++ //final JsonArray builds = json.getAsJsonArray("builds"); // Purpur ++ final int latest = json.getAsJsonObject("builds").getAsJsonPrimitive("latest").getAsInt(); // Purpur return latest - jenkinsBuild; - } catch (JsonSyntaxException ex) { - ex.printStackTrace(); + } catch (final JsonSyntaxException ex) { + LOGGER.error("Error parsing json from Paper's downloads API", ex); diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java index c72d6bccf7d72d08d388c65936a89c92261c7860..ee746753515c9cea8dd246f4f56e6781956726c1 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -461,10 +470,10 @@ index 0000000000000000000000000000000000000000..cb78dac8e072b5cb3c6e52e17c9ecdf7 + } +} diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index e6c7f62ed379a78645933670299e4fcda8540ed1..7475aaac2673729091eabc741c8ebb561aeec8f1 100644 +index 59d7e8a3d83d3ab7aa28606401bb129ccaeff240..684536f600cca94ea346129a139ec4aac4d9f979 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java -@@ -230,6 +230,19 @@ public class CommandSourceStack implements ExecutionCommandSource processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); public int autosavePeriod; - public Commands vanillaCommandDispatcher; -@@ -301,6 +302,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers worldserver.updateLagCompensationTick(); // Paper - lag compensation @@ -881,7 +890,7 @@ index 47355158e5e762540a10dc67b23092a0fc53bce3..9f1c8a62bda242781a0966fa2fc01534 entityitem = entityplayer.drop(itemstack, false, false, false); // CraftBukkit - SPIGOT-2942: Add boolean to call event if (entityitem != null) { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 01ebdd21c29651e53d8f649926564a4815be0a9d..615a9dfe30d51bf0aeaec301e2c5a2c7fd98c5d2 100644 +index 05e214ca14240ba635927c9f2a71d19ba1e9aa45..0bba378572f01b8998fd4cad544e93b3da248f08 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -109,6 +109,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -906,9 +915,9 @@ index 01ebdd21c29651e53d8f649926564a4815be0a9d..615a9dfe30d51bf0aeaec301e2c5a2c7 + org.purpurmc.purpur.PurpurConfig.registerCommands(); + // Purpur end com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now - io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // Paper - init PaperBrigadierProvider -@@ -292,6 +302,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface + // Gale start - Pufferfish - SIMD support +@@ -291,6 +301,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface if (true) throw new IllegalStateException("Failed to bind to port", ioexception); // Paper - Propagate failed to bind to port error return false; } @@ -939,7 +948,7 @@ index 01ebdd21c29651e53d8f649926564a4815be0a9d..615a9dfe30d51bf0aeaec301e2c5a2c7 // CraftBukkit start // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up -@@ -366,6 +400,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -365,6 +399,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface } if (org.dreeam.leaf.config.modules.async.AsyncMobSpawning.enabled) mobSpawnExecutor.start(); // Pufferfish @@ -1296,7 +1305,7 @@ index e3fdd0677b3029be0ddc5f59489f66e28f5c2853..b9d9ef327753272a537bebccc54d9fbc } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f4829e31111bb640901e8143ed3afa4de3e28b7d..2707bc1dc8b45a239ffe0b0aeffe96a1359b9a5c 100644 +index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b5222917f066323 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -299,6 +299,10 @@ public class ServerPlayer extends Player { @@ -1492,7 +1501,7 @@ index f4829e31111bb640901e8143ed3afa4de3e28b7d..2707bc1dc8b45a239ffe0b0aeffe96a1 + if (afk) { + getBukkitEntity().setPlayerListName(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix + prefix + scoreboardName + suffix + org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, true); + } else { -+ getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix); ++ getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); + } + } + @@ -1513,7 +1522,7 @@ index f4829e31111bb640901e8143ed3afa4de3e28b7d..2707bc1dc8b45a239ffe0b0aeffe96a1 public ServerStatsCounter getStats() { return this.stats; } -@@ -2868,4 +2992,50 @@ public class ServerPlayer extends Player { +@@ -2874,4 +2998,50 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -1639,7 +1648,7 @@ index c3a1969e7d3e42b2f0fd0dd0a3d6a5f1dc9b1a1e..bc14f7ae7c5d3dab3a3fc1ce56c975c3 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 79894b08d778a73336b3d265759baeb837d14ada..8432a36a7b047cf2d930735feb426233769e1931 100644 +index 5c1e1ffcd63ab01ddea88acfc2744411f882dc24..c53e01260b4ca6f637b3d55798cda4cab822b5fe 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -336,6 +336,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1879,7 +1888,7 @@ index 79894b08d778a73336b3d265759baeb837d14ada..8432a36a7b047cf2d930735feb426233 org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack, enumhand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2785,6 +2865,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2768,6 +2848,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (this.player.canInteractWithEntity(axisalignedbb, 1.0D)) { @@ -1887,7 +1896,7 @@ index 79894b08d778a73336b3d265759baeb837d14ada..8432a36a7b047cf2d930735feb426233 packet.dispatch(new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); -@@ -2798,6 +2879,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2781,6 +2862,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -2079,11 +2088,11 @@ index 99a7e9eb75231c15bd8bb24fbb4e296bc9fdedff..4fb025a63628eb60509d90b680922a02 } } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 359a2f0492a9b938a4f015c546e100e0092ae1d4..25e614be19b2b29b36af136b823f27f85e1650fa 100644 +index dd9638bdb228a53e72820e0e7cf6fe6fcc08fe4b..1ce1235cbbf23fe975c85a0f713280b433459951 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java @@ -29,6 +29,8 @@ public class DamageSource { - private boolean withSweep = false; + private boolean sweep = false; private boolean melting = false; private boolean poison = false; + private boolean scissors = false; // Purpur @@ -2116,10 +2125,10 @@ index 359a2f0492a9b938a4f015c546e100e0092ae1d4..25e614be19b2b29b36af136b823f27f8 + // Purpur end + // Paper start - fix DamageSource API - public @Nullable Entity getCustomEventDamager() { - return (this.customEventDamager != null) ? this.customEventDamager : this.directEntity; -@@ -101,6 +123,8 @@ public class DamageSource { - damageSource.withSweep = this.isSweep(); + @Nullable + public Entity getCustomEventDamager() { +@@ -117,6 +139,8 @@ public class DamageSource { + damageSource.sweep = this.isSweep(); damageSource.poison = this.isPoison(); damageSource.melting = this.isMelting(); + damageSource.scissors = this.isScissors(); // Purpur @@ -2127,7 +2136,7 @@ index 359a2f0492a9b938a4f015c546e100e0092ae1d4..25e614be19b2b29b36af136b823f27f8 return damageSource; } // CraftBukkit end -@@ -173,10 +197,19 @@ public class DamageSource { +@@ -189,10 +213,19 @@ public class DamageSource { ItemStack itemstack1 = itemstack; @@ -2149,7 +2158,7 @@ index 359a2f0492a9b938a4f015c546e100e0092ae1d4..25e614be19b2b29b36af136b823f27f8 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index a1c53f04c2dd505e6af72e512e111d7994786035..5ffe772e29dfd422b664e8123e7f5cf396158674 100644 +index 5ec8cbd07a1830876f58e1fd33de6df4466d7e95..b1fb94380b7d6bd2a3be31a4e8fe95367e948fe2 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java @@ -44,11 +44,15 @@ public class DamageSources { @@ -2252,7 +2261,7 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7afab90526 100644 +index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb0943e8d996 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -163,7 +163,7 @@ import org.bukkit.plugin.PluginManager; @@ -2379,7 +2388,7 @@ index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7a } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -@@ -3109,6 +3141,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3115,6 +3147,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -2393,7 +2402,7 @@ index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7a this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3148,6 +3187,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3154,6 +3193,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -2408,7 +2417,7 @@ index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7a if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -3226,12 +3273,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3232,12 +3279,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } @@ -2425,7 +2434,7 @@ index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7a } this.isInsidePortal = true; -@@ -3456,7 +3506,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3462,7 +3512,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public int getMaxAirSupply() { @@ -2434,7 +2443,7 @@ index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7a } public int getAirSupply() { -@@ -3923,7 +3973,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3929,7 +3979,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean canChangeDimensions() { @@ -2443,7 +2452,7 @@ index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7a } public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { -@@ -4224,6 +4274,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4230,6 +4280,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return SlotAccess.NULL; } @@ -2464,7 +2473,7 @@ index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7a @Override public void sendSystemMessage(Component message) {} -@@ -4511,6 +4575,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4517,6 +4581,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.yRotO = this.getYRot(); } @@ -2477,7 +2486,7 @@ index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7a 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; -@@ -4919,7 +4989,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4925,7 +4995,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public float maxUpStep() { @@ -2486,7 +2495,7 @@ index 9c20cead889a736aab17ef8ef1f3c932b0dd37f1..88ef23e08df880d90fbf879f901c8c7a } public void onExplosionHit(@Nullable Entity entity) {} -@@ -5091,4 +5161,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5097,4 +5167,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end - Expose entity id counter @@ -2689,7 +2698,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..3e2ea26c23e88c395856b65001f2895d 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 d688c41ccfec36ab1715f4ae70fbd1adde3525a8..8fdcb4d25f7398aad76f907be60c146413667353 100644 +index 7c7e9f40b1d46b1780f55e1cfbf89b6dbd82f2ae..d06c5d16d312187b6a53c8995d524c0ec2d9f921 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -228,9 +228,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -2884,7 +2893,7 @@ index d688c41ccfec36ab1715f4ae70fbd1adde3525a8..8fdcb4d25f7398aad76f907be60c1464 + } // Purpur } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment - org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> { + org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, source, this.drops, () -> { @@ -2407,6 +2453,21 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -7806,7 +7815,7 @@ index d8e440e14b72dc48ae97244f1bed2c06abd997ab..15ca426701f1fc821da94a4dee577fdb this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 6f14607a88761171a72e274b3c9b476b20a272f1..3da1f7a6e443954e4976dd59391ea19b9c903cf7 100644 +index 0e797e2714a2fd103cbd51548764577fd9b6412d..52e1dd6e064dc03312e18ca515a24e7d3e9be957 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -106,6 +106,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -8270,7 +8279,7 @@ index 7ddca52f7fe3f289b4b867e134326b1ead1a2aee..4a98027a12c2535d1df3a9f6390eb851 } diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index c2bd2e303f956d390319f6bbbe9a6492ebec5154..6697cd8a632becd72ee132007a61d1221e817abf 100644 +index a02ca704e98ef42f32c3c50b111ee3537f60bf7b..92521cbedcf89a855f10a3401933acaf84bc3f98 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -103,10 +103,12 @@ public class ArmorStand extends LivingEntity { @@ -8310,7 +8319,7 @@ index c2bd2e303f956d390319f6bbbe9a6492ebec5154..6697cd8a632becd72ee132007a61d122 // Paper start - Allow ArmorStands not to tick if (!this.canTick) { if (this.noTickPoseDirty) { -@@ -1003,4 +1008,18 @@ public class ArmorStand extends LivingEntity { +@@ -1008,4 +1013,18 @@ public class ArmorStand extends LivingEntity { } } // Paper end @@ -8695,7 +8704,7 @@ index 87e4b300ac248f6c13d9b4a8f24fd78b24b565b4..43b5a0e7993ae9daef1c1ea67722347f 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 cbcb2bfa8f91099e5c374f590f48885390bdf7a7..1829bedfa8084c4932a0e67c36f48f19993e22b6 100644 +index 0ae4ba060b2ce2c79e1235c939f3c1926eb6e33e..76a0bc9bd6033f1c66e940392f5bed360e7db43c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -61,21 +61,99 @@ public class Creeper extends Monster implements PowerableMob { @@ -8851,8 +8860,8 @@ index cbcb2bfa8f91099e5c374f590f48885390bdf7a7..1829bedfa8084c4932a0e67c36f48f19 if (!event.isCancelled()) { // CraftBukkit end this.dead = true; -- this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit // Paper - fix DamageSource API -+ this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Paper - fix DamageSource API // Purpur +- this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this) ++ this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this) // Purpur this.discard(EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause this.spawnLingeringCloud(); // CraftBukkit start @@ -10478,7 +10487,7 @@ index 2d7b7c949faaaaae94c0043132a4a822f55df104..dbfcca8adb7afa7a3101f22c2bc48aff 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 5215fa54666979ef4da074ddfdb082e7274f2957..1afa6dc4f2a6437cd4cc3e49694e79641fcc13ad 100644 +index e03119f88719c8d6d44793a6b3706ae97b2da307..5e2a47d910f4bd2cd28008fcf5063cb3dd41da90 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -23,6 +23,8 @@ import net.minecraft.tags.DamageTypeTags; @@ -10559,7 +10568,7 @@ index 5215fa54666979ef4da074ddfdb082e7274f2957..1afa6dc4f2a6437cd4cc3e49694e7964 this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{this.getClass()})).setAlertOthers()); this.targetSelector.addGoal(2, new Shulker.ShulkerNearestAttackGoal(this)); this.targetSelector.addGoal(3, new Shulker.ShulkerDefenseAttackGoal(this)); -@@ -475,12 +526,21 @@ public class Shulker extends AbstractGolem implements VariantHolder getVariant() { @@ -10595,7 +10604,7 @@ index 5215fa54666979ef4da074ddfdb082e7274f2957..1afa6dc4f2a6437cd4cc3e49694e7964 } @Nullable -@@ -602,7 +662,7 @@ public class Shulker extends AbstractGolem implements VariantHolder 0) ? new ItemStack(Items.ARROW) : ItemStack.EMPTY; // Purpur + } + } + } @@ -2336,7 +2391,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { this.getFoodData().eat(stack); @@ -12806,10 +12824,10 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..1b9d0e28e518c501b4b93ae385ddd64a protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 1fb1e729d6879568d8b4943071fa940325b2e5b0..d9761d8fe746e925a7a32dfc15eb8045c6150fe5 100644 +index 519755b7f8bc7e8bb9fab135fc5bf7de3a9419f9..61bd2459f2b9164dce90134103abaddce42b0621 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -71,10 +71,11 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -70,10 +70,11 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { Bukkit.getPluginManager().callEvent(teleEvent); if (!teleEvent.isCancelled() && entityplayer.connection.isAcceptingMessages()) { @@ -12822,7 +12840,7 @@ index 1fb1e729d6879568d8b4943071fa940325b2e5b0..d9761d8fe746e925a7a32dfc15eb8045 entityendermite.moveTo(entity.getX(), entity.getY(), entity.getZ(), entity.getYRot(), entity.getXRot()); this.level().addFreshEntity(entityendermite, CreatureSpawnEvent.SpawnReason.ENDER_PEARL); } -@@ -86,7 +87,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -85,7 +86,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { entityplayer.connection.teleport(teleEvent.getTo()); entity.resetFallDistance(); @@ -13345,10 +13363,10 @@ index 0dbfd23bbfc6ad203f048142f8c90ef741849fe1..9a80427d2bb470b6b1638e59aba57216 return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6); } diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d432718806 100644 +index 480d093105073edfd3acdd7b079b4ca5aa5fdc6d..6d28f1097caa3e37c2917eb401018ebf48c13a39 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -38,6 +38,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; +@@ -39,6 +39,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; import org.bukkit.entity.Player; // CraftBukkit end @@ -13361,7 +13379,7 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d4 public class EnchantmentMenu extends AbstractContainerMenu { static final ResourceLocation EMPTY_SLOT_LAPIS_LAZULI = new ResourceLocation("item/empty_slot_lapis_lazuli"); -@@ -72,6 +78,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -73,6 +79,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { return context.getLocation(); } // CraftBukkit end @@ -13384,7 +13402,7 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d4 }; this.random = RandomSource.create(); this.enchantmentSeed = DataSlot.standalone(); -@@ -97,6 +119,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -98,6 +120,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { } }); @@ -13402,7 +13420,7 @@ index 5b3e33807e0e13480e3359c0cf067719e5749237..c3a644b0f8c7c5622acc9e1a496f95d4 int j; for (j = 0; j < 3; ++j) { -@@ -332,6 +365,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -333,6 +366,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { public void removed(net.minecraft.world.entity.player.Player player) { super.removed(player); this.access.execute((world, blockposition) -> { @@ -13617,7 +13635,7 @@ index 786e4a8700cb84b16dd9b8892a0d1d5803924d81..b108ca4c7900ccf6a14ebea01c21c103 // CraftBukkit start Level world = pointer.level(); diff --git a/src/main/java/net/minecraft/world/item/ArmorStandItem.java b/src/main/java/net/minecraft/world/item/ArmorStandItem.java -index 1634a7d5ff06583408cf2f02f2b5f90931b1e02a..dfe8473a880cbddfc3ac6a9c97f1a500624eeb38 100644 +index 1634a7d5ff06583408cf2f02f2b5f90931b1e02a..fd83261f64c6469aebde8ab13a6777b9b269cea2 100644 --- a/src/main/java/net/minecraft/world/item/ArmorStandItem.java +++ b/src/main/java/net/minecraft/world/item/ArmorStandItem.java @@ -58,6 +58,14 @@ public class ArmorStandItem extends Item { @@ -13628,7 +13646,7 @@ index 1634a7d5ff06583408cf2f02f2b5f90931b1e02a..dfe8473a880cbddfc3ac6a9c97f1a500 + if (!world.purpurConfig.persistentDroppableEntityDisplayNames) { + entityarmorstand.setCustomName(null); + } -+ if (world.purpurConfig.armorstandSetNameVisible) { ++ if (world.purpurConfig.armorstandSetNameVisible && entityarmorstand.getCustomName() != null) { + entityarmorstand.setCustomNameVisible(true); + } + // Purpur end @@ -13765,7 +13783,7 @@ index eb74d45ad458b80cf8455297c3bc550186adaea3..ef01856c487e4ab982996e0153761823 return InteractionResultHolder.fail(itemstack); } else { diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java -index 5ca843df5b4caa668953e5e36a9b20fabeb35046..8bca38ec152f9612298bf6b3e10e7e0566ec3b78 100644 +index 5ca843df5b4caa668953e5e36a9b20fabeb35046..ec21d3d00deac4ad51f0a4beec2894675a461618 100644 --- a/src/main/java/net/minecraft/world/item/BowItem.java +++ b/src/main/java/net/minecraft/world/item/BowItem.java @@ -31,7 +31,7 @@ public class BowItem extends ProjectileWeaponItem { @@ -13777,15 +13795,6 @@ index 5ca843df5b4caa668953e5e36a9b20fabeb35046..8bca38ec152f9612298bf6b3e10e7e05 } world.playSound( -@@ -81,7 +81,7 @@ public class BowItem extends ProjectileWeaponItem { - public InteractionResultHolder use(Level world, Player user, InteractionHand hand) { - ItemStack itemStack = user.getItemInHand(hand); - boolean bl = !user.getProjectile(itemStack).isEmpty(); -- if (!user.hasInfiniteMaterials() && !bl) { -+ if (!(world.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, itemStack) > 0) && !user.hasInfiniteMaterials() && !bl) { // Purpur - return InteractionResultHolder.fail(itemStack); - } else { - user.startUsingItem(hand); diff --git a/src/main/java/net/minecraft/world/item/BucketItem.java b/src/main/java/net/minecraft/world/item/BucketItem.java index 49557d6f22c5725c663a231deab019d4f6fe95fa..046652e8f9c5dcdf7c90acb9391214cac46bd7d8 100644 --- a/src/main/java/net/minecraft/world/item/BucketItem.java @@ -14441,7 +14450,7 @@ index ea0aee88c7d901034427db201c1b2430f8a1d522..1f28bfb435c1e4d97da713f96c452aba if (range < 0.0 || d < range * range) { return true; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index b9eea5996b7190b656a9c37bf96706a6b41a19f1..1dbb4a5ca3e9b9197ccc040d1d660e4c3bd58227 100644 +index eb152f9ab41fc7b7219f9be26b574d61506c55d5..e9e0c91299b2669e0ff452176bf9758ca6c53bc3 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -98,7 +98,7 @@ public class Explosion { @@ -14473,7 +14482,7 @@ index b9eea5996b7190b656a9c37bf96706a6b41a19f1..1dbb4a5ca3e9b9197ccc040d1d660e4c + }else { + Location location = new Location(this.level.getWorld(), this.x, this.y, this.z); + org.bukkit.block.Block block = location.getBlock(); -+ org.bukkit.block.BlockState blockState = (this.damageSource.blockState != null) ? this.damageSource.blockState : block.getState(); ++ org.bukkit.block.BlockState blockState = (this.damageSource.getDirectBlockState() != null) ? this.damageSource.getDirectBlockState() : block.getState(); + if (!new org.purpurmc.purpur.event.PreBlockExplodeEvent(location.getBlock(), this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, blockState).callEvent()) { + this.wasCanceled = true; + return; @@ -14678,7 +14687,7 @@ index ce9f189bdafec26360bfadd0f36a8bc2726e132b..d5465b48531fd4b4094874c135274abf return true; } else { diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index 4459685d1fb655f93a523ae50b62d6b97785ed90..a4a988ab1399702b943019e9c4e2cde3652b4e85 100644 +index 85d598c3354ee62f0fd1b26e485e0084967c0380..17c994a39a1b99cc7727e328ce7493d534247a21 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java @@ -104,7 +104,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @@ -14694,8 +14703,8 @@ index 4459685d1fb655f93a523ae50b62d6b97785ed90..a4a988ab1399702b943019e9c4e2cde3 Vec3 vec3d = blockposition.getCenter(); -- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition, blockEntity), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state // Paper - add BlockEntity -+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, iblockdata, blockposition, blockEntity), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Paper - add BlockEntity // Purpur +- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state ++ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur return InteractionResult.SUCCESS; } } @@ -15633,15 +15642,15 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2 } else { int j = pos.getX(); diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 0699211428f182d8d56a2ba019d89ce05c920430..351fb74d2cccd7f63c2efee197a2968f822eda42 100644 +index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b8eaa85e4 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -149,7 +149,7 @@ public class RespawnAnchorBlock extends Block { +@@ -150,7 +150,7 @@ public class RespawnAnchorBlock extends Block { }; Vec3 vec3d = explodedPos.getCenter(); -- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos, null), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state // Paper -+ if (world.purpurConfig.respawnAnchorExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, world, state, explodedPos, null), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect); // CraftBukkit - add state // Paper // Purpur +- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), explosiondamagecalculator, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state ++ if (world.purpurConfig.respawnAnchorExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), explosiondamagecalculator, vec3d, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect); // CraftBukkit - add state // Purpur } public static boolean canSetSpawn(Level world) { @@ -16952,13 +16961,13 @@ index 9d93130f23addb18b97d7f5ec013faef17a74529..29d2fb87a65778926aea2cfc7a5b486c + // 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 5f9cc88fbb05e587e022160b392e58a88b7d6fea..483e16f27cd07cc9a0276db9cb9d84d8a41f97d0 100644 +index c79dfb84412e9718d19415ac0d6d1cd82f0318d7..2a2f979fad5710ed35991671e54d1c2d52b95bbe 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -407,6 +407,20 @@ public final class CraftServer implements Server { - this.serverTickManager = new CraftServerTickManager(console.tickRateManager()); - - Bukkit.setServer(this); +@@ -409,6 +409,20 @@ public final class CraftServer implements Server { + this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); + this.pluginManager.paperPluginManager = this.paperPluginManager; + // Paper end + // Purpur start + org.purpurmc.purpur.language.Language.setLanguage(new org.purpurmc.purpur.language.Language() { + private net.minecraft.locale.Language language = net.minecraft.locale.Language.getInstance(); @@ -16976,7 +16985,7 @@ index 5f9cc88fbb05e587e022160b392e58a88b7d6fea..483e16f27cd07cc9a0276db9cb9d84d8 CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1059,6 +1073,7 @@ public final class CraftServer implements Server { +@@ -1038,6 +1052,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 @@ -16984,7 +16993,7 @@ index 5f9cc88fbb05e587e022160b392e58a88b7d6fea..483e16f27cd07cc9a0276db9cb9d84d8 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)) -@@ -1074,6 +1089,7 @@ public final class CraftServer implements Server { +@@ -1053,6 +1068,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -16992,7 +17001,7 @@ index 5f9cc88fbb05e587e022160b392e58a88b7d6fea..483e16f27cd07cc9a0276db9cb9d84d8 } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1089,6 +1105,7 @@ public final class CraftServer implements Server { +@@ -1069,6 +1085,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper @@ -17000,7 +17009,7 @@ index 5f9cc88fbb05e587e022160b392e58a88b7d6fea..483e16f27cd07cc9a0276db9cb9d84d8 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1595,6 +1612,55 @@ public final class CraftServer implements Server { +@@ -1581,6 +1598,55 @@ public final class CraftServer implements Server { return true; } @@ -17056,7 +17065,7 @@ index 5f9cc88fbb05e587e022160b392e58a88b7d6fea..483e16f27cd07cc9a0276db9cb9d84d8 @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3065,6 +3131,18 @@ public final class CraftServer implements Server { +@@ -3051,6 +3117,18 @@ public final class CraftServer implements Server { } // Gale end - Gale configuration - API @@ -17075,7 +17084,7 @@ index 5f9cc88fbb05e587e022160b392e58a88b7d6fea..483e16f27cd07cc9a0276db9cb9d84d8 @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3350,4 +3428,15 @@ public final class CraftServer implements Server { +@@ -3336,4 +3414,15 @@ public final class CraftServer implements Server { } // Gale end - YAPFA - last tick time - API @@ -17145,10 +17154,10 @@ index 2abe6131cc04ed397446c2aa08f77f9da00ce8c5..f27cf4efa3675cee8e6dd45c6f366cda public Collection getStructures(int x, int z) { return this.getStructures(x, z, struct -> true); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 87a82481476e2011ed33bded68e3a5c2e9e0fd9f..49aa5493f65e6e53553290ab82f91632e9dd6d20 100644 +index 6224bb20a2e3919b5fb33e5cfb8babc1929460c2..1b85f74a74b41d1f715abc55bf49613abbc3c97a 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -196,6 +196,14 @@ public class Main { +@@ -197,6 +197,14 @@ public class Main { .describedAs("Jar file"); // Paper end @@ -17163,7 +17172,7 @@ index 87a82481476e2011ed33bded68e3a5c2e9e0fd9f..49aa5493f65e6e53553290ab82f91632 // Paper start acceptsAll(asList("server-name"), "Name of the server") .withRequiredArg() -@@ -315,7 +323,7 @@ public class Main { +@@ -316,7 +324,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } @@ -17508,7 +17517,7 @@ index aa351df679f300018367244c7ccb3e5a59e9276f..b452ebbe11145987fb5e66b399938984 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -index 0ad16ee7b33582d214dab41eeee378d52c8e38ed..16bd1294c219f15ada653ef810bc2d748222d0da 100644 +index 351f42842b780d053cd2e5bad9ae299449141b10..4860574e7fad7a9527dda599703c573c5b4b234b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java @@ -90,4 +90,16 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys @@ -17529,7 +17538,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 5f896948d158651cd9837364759dbfbcce6b7d21..88948526f9acf4bb2157484b80891902fd843b02 100644 +index 7e6116963d835d4606ef3d93b69d3e44b61288e1..241340a6d66f17f2a31fb03ff0dfab121b856368 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -574,10 +574,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -17560,7 +17569,7 @@ index 5f896948d158651cd9837364759dbfbcce6b7d21..88948526f9acf4bb2157484b80891902 return false; } -@@ -2736,6 +2745,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2733,6 +2742,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -17589,7 +17598,7 @@ index 5f896948d158651cd9837364759dbfbcce6b7d21..88948526f9acf4bb2157484b80891902 private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3522,4 +3553,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3519,4 +3550,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSendViewDistance(final int viewDistance) { this.getHandle().setSendViewDistance(viewDistance); } @@ -17742,7 +17751,7 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64 + // 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 547ab158cd0cbf51da06ea97740cfce34bca651b..6fed586c9a778f7a57e1b4ca2e6f2dbc15c8769d 100644 +index 34b91eff3190848bae38b20e1d956ece497b1473..e650b85464ac886b4adb1a8924026d34f805aba6 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 { @@ -17761,8 +17770,8 @@ index 547ab158cd0cbf51da06ea97740cfce34bca651b..6fed586c9a778f7a57e1b4ca2e6f2dbc return event; } -@@ -1121,7 +1130,7 @@ public class CraftEventFactory { - return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); +@@ -1123,7 +1132,7 @@ public class CraftEventFactory { + return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), source.getDirectBlockState(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); } else if (source.getDirectBlock() != null) { DamageCause cause; - if (source.is(DamageTypes.CACTUS) || source.is(DamageTypes.SWEET_BERRY_BUSH) || source.is(DamageTypes.STALAGMITE) || source.is(DamageTypes.FALLING_STALACTITE) || source.is(DamageTypes.FALLING_ANVIL)) { @@ -17770,7 +17779,7 @@ index 547ab158cd0cbf51da06ea97740cfce34bca651b..6fed586c9a778f7a57e1b4ca2e6f2dbc cause = DamageCause.CONTACT; } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; -@@ -1179,6 +1188,7 @@ public class CraftEventFactory { +@@ -1181,6 +1190,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); @@ -18494,7 +18503,7 @@ index 0000000000000000000000000000000000000000..eaa8b63b0fb1f0ebefba9014cfec7f10 +} 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..4a385c42da7ab3be46d5e47d00daee5e0b6da88f +index 0000000000000000000000000000000000000000..2c5d79dfddcab0410a6d1556658992f027a9a401 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -0,0 +1,3291 @@ @@ -18597,7 +18606,7 @@ index 0000000000000000000000000000000000000000..4a385c42da7ab3be46d5e47d00daee5e + } + + public float armorstandStepHeight = 0.0F; -+ public boolean armorstandSetNameVisible = true; ++ public boolean armorstandSetNameVisible = false; + public boolean armorstandFixNametags = false; + public boolean armorstandMovement = true; + public boolean armorstandWaterMovement = true; diff --git a/patches/server/0011-Fix-Pufferfish-and-Purpur-patches.patch b/patches/server/0011-Fix-Pufferfish-and-Purpur-patches.patch index f4a8ee6f..a985890e 100644 --- a/patches/server/0011-Fix-Pufferfish-and-Purpur-patches.patch +++ b/patches/server/0011-Fix-Pufferfish-and-Purpur-patches.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix Pufferfish and Purpur patches diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 05725e2aed4ad03685bdadbf3bb898da3e62c1b7..367180dee333b071cfed805356b1def5201efaa9 100644 +index 1f4b3412396b1c5d142c0ad9123cacc2f225494b..561426280dff2af8015fec3108a8b8514d994679 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -296,7 +296,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -978,6 +978,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resourceKey = world.dimension(); BlockPos blockPos = entity.blockPosition(); diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 6697cd8a632becd72ee132007a61d1221e817abf..b6920eada151e1d282bf4ef70a64558eb592f879 100644 +index 92521cbedcf89a855f10a3401933acaf84bc3f98..0bd72f76a65b6248f4e700877b2bda702f9590df 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java @@ -680,7 +680,7 @@ public class ArmorStand extends LivingEntity { @@ -297,33 +297,21 @@ index 330d6badfbd096e4aec873dcb419df7975cb60a3..abb950417bf5db30f37e50605e897150 this.setDeltaMovement(0, this.getDeltaMovement().y, 0); } diff --git a/src/main/java/org/galemc/gale/version/AbstractPaperVersionFetcher.java b/src/main/java/org/galemc/gale/version/AbstractPaperVersionFetcher.java -index 7fee1c2779ab390586b2d3f75f56890846323500..ba8912e1a16ba77db6e194923d797a383041a147 100644 +index 75af21644eaf78abdebd722b671f3c47aa083a25..21d71db5ef632ae685c0a852fda54b8d6be183ee 100644 --- a/src/main/java/org/galemc/gale/version/AbstractPaperVersionFetcher.java +++ b/src/main/java/org/galemc/gale/version/AbstractPaperVersionFetcher.java -@@ -68,7 +68,7 @@ public abstract class AbstractPaperVersionFetcher implements VersionFetcher { +@@ -101,10 +101,10 @@ public abstract class AbstractPaperVersionFetcher implements VersionFetcher { // Gale end - branding changes - version fetcher - final Component history = getHistory(); -- return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage; -+ return history != null ? Component.join(net.kyori.adventure.text.JoinConfiguration.separator(Component.newline()), history, updateMessage) : updateMessage; // Purpur - } - - protected @Nullable String getMinecraftVersion() { // Gale - branding changes - version fetcher -@@ -120,13 +120,13 @@ public abstract class AbstractPaperVersionFetcher implements VersionFetcher { - - switch (distance) { - case -1: -- return Component.text("Error obtaining version information", NamedTextColor.YELLOW); -+ return Component.text("* Error obtaining version information", NamedTextColor.RED); // Purpur - case 0: -- return Component.text("You are running the latest version", NamedTextColor.GREEN); -+ return Component.text("* You are running the latest version", NamedTextColor.GREEN); // Purpur - case -2: -- return Component.text("Unknown version", NamedTextColor.YELLOW); -+ return Component.text("* Unknown version", NamedTextColor.YELLOW); // Purpur - default: -- return Component.text("You are " + distance + " version(s) behind", NamedTextColor.YELLOW) -+ return Component.text("* You are " + distance + " version(s) behind", NamedTextColor.YELLOW) // Purpur - .append(Component.newline()) - .append(Component.text("Download the new version at: ") - .append(Component.text(this.downloadPage, NamedTextColor.GOLD) // Gale - branding changes - version fetcher + return switch (distance) { +- case DISTANCE_ERROR -> text("Error obtaining version information", NamedTextColor.YELLOW); +- case 0 -> text("You are running the latest version", NamedTextColor.GREEN); +- case DISTANCE_UNKNOWN -> text("Unknown version", NamedTextColor.YELLOW); +- default -> text("You are " + distance + " version(s) behind", NamedTextColor.YELLOW) ++ case DISTANCE_ERROR -> text("* Error obtaining version information", NamedTextColor.RED); // Purpur ++ case 0 -> text("* You are running the latest version", NamedTextColor.GREEN); // Purpur ++ case DISTANCE_UNKNOWN -> text("* Unknown version", NamedTextColor.YELLOW); // Purpur ++ default -> text("* You are " + distance + " version(s) behind", NamedTextColor.YELLOW) // Purpur + .append(Component.newline()) + .append(text("Download the new version at: ") + .append(text(this.downloadPage, NamedTextColor.GOLD) // Gale - branding changes - version fetcher diff --git a/patches/server/0012-Purpur-Configurable-server-mod-name.patch b/patches/server/0012-Purpur-Configurable-server-mod-name.patch index eea20f44..207d8cbc 100644 --- a/patches/server/0012-Purpur-Configurable-server-mod-name.patch +++ b/patches/server/0012-Purpur-Configurable-server-mod-name.patch @@ -7,21 +7,21 @@ Original license: MIT Original project: https://github.com/PurpurMC/Purpur diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 367180dee333b071cfed805356b1def5201efaa9..9b6e36894f545670c4581a8c8452c183336adf93 100644 +index 561426280dff2af8015fec3108a8b8514d994679..68d560a5fc5b6d2f058625d4210b9a75c09e1da3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1923,7 +1923,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements ServerInfo, CommandSource, AutoCloseable { public static final int SERVER_THREAD_PRIORITY = Integer.getInteger("gale.thread.priority.server", -1); // Gale - server thread priority environment variable -@@ -969,7 +967,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return !this.canSleepForTickNoOversleep(); // Paper - move oversleep into full server tick -@@ -1481,8 +1477,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -1031,7 +1031,7 @@ index 9b6e36894f545670c4581a8c8452c183336adf93..76837c0bd930980519faf8a49e639f35 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1737,20 +1720,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop public - org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher -- co.aikar.timings.MinecraftTimings.playerCommandTimer.startTiming(); // Paper - if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot - this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); - -@@ -2565,7 +2564,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - this.cserver.getPluginManager().callEvent(event); - - if (event.isCancelled()) { -- co.aikar.timings.MinecraftTimings.playerCommandTimer.stopTiming(); // Paper - return; - } - -@@ -2577,8 +2575,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; -- } finally { -- co.aikar.timings.MinecraftTimings.playerCommandTimer.stopTiming(); // Paper - } - } - // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java index 743e1487048f70ed577452c27c7919d74d26ab19..c9673051ce9f4096b981087eefe8b72bbe34819a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1862,10 +1833,10 @@ index 35147d7a6649708c2b068065eb44831f40c3ab8e..1a2ef85cd8a62824b23f4212a5e2a70c @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 483e16f27cd07cc9a0276db9cb9d84d8a41f97d0..141056d003eaaee8b2a436554733e52d7d74689d 100644 +index 2a2f979fad5710ed35991671e54d1c2d52b95bbe..aa588fe83d508e1888ce9fb1c9fa9c1fe54d4cef 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -470,7 +470,6 @@ public final class CraftServer implements Server { +@@ -472,7 +472,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"); @@ -1874,10 +1845,10 @@ index 483e16f27cd07cc9a0276db9cb9d84d8a41f97d0..141056d003eaaee8b2a436554733e52d 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 49aa5493f65e6e53553290ab82f91632e9dd6d20..27edd8f2dec9426fb2b51641305a1c13c307a970 100644 +index 1b85f74a74b41d1f715abc55bf49613abbc3c97a..fa843d5b5ac9e0fe8886a95246a999ac02aacd6f 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -374,8 +374,6 @@ public class Main { +@@ -375,8 +375,6 @@ public class Main { tryPreloadClass("org.jline.terminal.impl.MouseSupport"); tryPreloadClass("org.jline.terminal.impl.MouseSupport$1"); tryPreloadClass("org.jline.terminal.Terminal$MouseTracking"); @@ -2027,10 +1998,10 @@ index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..e9798517b9211c50a20ea5c69603aab3 } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index d67089b621f3ba07f3cf4cd64ee6ccb99ed23445..44153969844ac521cc082c9bdb3bd02e100f2b7e 100644 +index fbb137b8e9bdf0376d346894b7939936647b3856..1a60d80553d9f242cb56fa044db241611d973de1 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -214,9 +214,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -218,9 +218,7 @@ public final class CraftMagicNumbers implements UnsafeValues { // ======================================================================== // Paper start @Override @@ -2041,7 +2012,7 @@ index d67089b621f3ba07f3cf4cd64ee6ccb99ed23445..44153969844ac521cc082c9bdb3bd02e // Paper end public static byte toLegacyData(BlockState data) { -@@ -502,7 +500,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -506,7 +504,7 @@ public final class CraftMagicNumbers implements UnsafeValues { // Paper start @Override public String getTimingsServerName() { diff --git a/patches/server/0015-Bump-Dependencies.patch b/patches/server/0015-Bump-Dependencies.patch index 9ed635f1..6d7e8362 100644 --- a/patches/server/0015-Bump-Dependencies.patch +++ b/patches/server/0015-Bump-Dependencies.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index aa9098d9a86ccac64777aeba875d724a6691c588..2def87c5f8db38e0736f4fea641aeca54ec91d07 100644 +index 431ac399769057642fdf4694b68d84b4423a7103..fa5b046a865672cfa9e9eabcb54236455e2193f5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -31,7 +31,7 @@ dependencies { +@@ -25,7 +25,7 @@ dependencies { // Leaf end - Legacy config // Paper start @@ -17,7 +17,7 @@ index aa9098d9a86ccac64777aeba875d724a6691c588..2def87c5f8db38e0736f4fea641aeca5 implementation("net.minecrell:terminalconsoleappender:1.3.0") implementation("net.kyori:adventure-text-serializer-ansi:4.17.0") // Keep in sync with adventureVersion from Paper-API build file /* -@@ -40,28 +40,32 @@ dependencies { +@@ -34,28 +34,32 @@ dependencies { all its classes to check if they are plugins. Scanning takes about 1-2 seconds so adding this speeds up the server start. */ @@ -58,7 +58,7 @@ index aa9098d9a86ccac64777aeba875d724a6691c588..2def87c5f8db38e0736f4fea641aeca5 // Purpur start implementation("org.mozilla:rhino-runtime:1.7.14") -@@ -69,7 +73,7 @@ dependencies { +@@ -63,7 +67,7 @@ dependencies { implementation("dev.omega24:upnp4j:1.0") // Purpur end @@ -67,7 +67,7 @@ index aa9098d9a86ccac64777aeba875d724a6691c588..2def87c5f8db38e0736f4fea641aeca5 testImplementation("org.junit.jupiter:junit-jupiter:5.10.2") testImplementation("org.hamcrest:hamcrest:2.2") testImplementation("org.mockito:mockito-core:5.11.0") -@@ -83,6 +87,8 @@ dependencies { +@@ -77,6 +81,8 @@ dependencies { implementation("io.papermc:reflection-rewriter-runtime:$reflectionRewriterVersion") implementation("io.papermc:reflection-rewriter-proxy-generator:$reflectionRewriterVersion") // Paper end - Remap reflection diff --git a/patches/server/0020-KeYi-Player-Skull-API.patch b/patches/server/0020-KeYi-Player-Skull-API.patch index 40edac09..2936924d 100644 --- a/patches/server/0020-KeYi-Player-Skull-API.patch +++ b/patches/server/0020-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 88948526f9acf4bb2157484b80891902fd843b02..1e5fb608ff04d2e9ae8db30896eb88fde914b8af 100644 +index 241340a6d66f17f2a31fb03ff0dfab121b856368..f2f6184589c72b82d041abae2c978edf084cc63f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3619,4 +3619,27 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3616,4 +3616,27 @@ 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/0029-Leaves-Server-Utils.patch b/patches/server/0029-Leaves-Server-Utils.patch index 5bad5508..383130f5 100644 --- a/patches/server/0029-Leaves-Server-Utils.patch +++ b/patches/server/0029-Leaves-Server-Utils.patch @@ -7,7 +7,7 @@ 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 7c347b26e9d65acbdc901a7197eee1a1cbb0be40..8b314a1ad2bf833cee950471d63e5538192bb1ab 100644 +index 47928af7b85543fe74ad7272286df4e8b1921426..638709c6393cb7f3ca4e3328b50ae8c0294953e1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -431,6 +431,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -38,7 +38,7 @@ index 7c347b26e9d65acbdc901a7197eee1a1cbb0be40..8b314a1ad2bf833cee950471d63e5538 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -@@ -5217,4 +5224,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5223,4 +5230,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // Purpur end diff --git a/patches/server/0050-SparklyPaper-Optimize-canSee-checks.patch b/patches/server/0050-SparklyPaper-Optimize-canSee-checks.patch index 35a9c1e8..86b7c7c7 100644 --- a/patches/server/0050-SparklyPaper-Optimize-canSee-checks.patch +++ b/patches/server/0050-SparklyPaper-Optimize-canSee-checks.patch @@ -16,7 +16,7 @@ This seems stupid, but it does seem that it improves the performance a bit, and We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 3852985ebf9643f6b1b17a3d090175800bcdd079..4f2f652cf7403221226e524586aa73feecd0d103 100644 +index 5e95d84c37d2d36d62a0b5b3f55bf28bd40bf7ee..2109fedc6d09fb783e0042289a9c5d372933f4ff 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -1434,7 +1434,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -29,7 +29,7 @@ index 3852985ebf9643f6b1b17a3d090175800bcdd079..4f2f652cf7403221226e524586aa73fe } // CraftBukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d2e869d35bfb12fe2e0fe1c4e144446883166dd3..65105a4fc797c9d7767fa9f837d9cef08f3f46ab 100644 +index bbc8135343b8206c5348eab802a257555b16836f..3bb35f002cecee7b5ffac8f8aedcce2336d662f1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -198,7 +198,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -56,6 +56,6 @@ index d2e869d35bfb12fe2e0fe1c4e144446883166dd3..65105a4fc797c9d7767fa9f837d9cef0 + } + // SparklyPaper end + - public boolean canSee(UUID uuid) { + public boolean canSeePlayer(UUID uuid) { org.bukkit.entity.Entity entity = this.getServer().getPlayer(uuid); - if (entity == null) { + diff --git a/patches/server/0055-Including-5s-in-getTPS.patch b/patches/server/0055-Including-5s-in-getTPS.patch index 43924db9..b23d133c 100644 --- a/patches/server/0055-Including-5s-in-getTPS.patch +++ b/patches/server/0055-Including-5s-in-getTPS.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Including 5s in getTPS() diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f17eb11741d09f9b04eac98918261680b600749a..25cbef3e87fd9924a86b019355df922eaf3773e1 100644 +index aa588fe83d508e1888ce9fb1c9fa9c1fe54d4cef..8d282abbf968ddab0f660a29b2a37bf7d569c481 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3170,6 +3170,8 @@ public final class CraftServer implements Server { +@@ -3156,6 +3156,8 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { diff --git a/patches/server/0059-Improve-Purpur-AFK-system.patch b/patches/server/0059-Improve-Purpur-AFK-system.patch index 30a40ea2..028d5fe5 100644 --- a/patches/server/0059-Improve-Purpur-AFK-system.patch +++ b/patches/server/0059-Improve-Purpur-AFK-system.patch @@ -9,7 +9,7 @@ AFK command & command cooldown AFK title message diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 6ad5245aebba43abf10fe980e63a8872e3e15484..9f48fc9bc38e0138c45000456a49c78d310b4959 100644 +index c0bd91b1cab7066f9582d2c734f61ee50e76098d..13d066f4d0c115445b807db22d365ad14926b734 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -250,6 +250,7 @@ public class Commands { @@ -21,7 +21,7 @@ index 6ad5245aebba43abf10fe980e63a8872e3e15484..9f48fc9bc38e0138c45000456a49c78d org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 7fc94ec08f6bd9649ad9168ea3b9aa6ac9bf60e0..2fac364c8ce66a4c00b65adc4c723b734e165ddc 100644 +index 3bbb3b5444976c859d7f357aa4283947b45f3100..cc9f8e8f871b64028351e4d061b7f01d1b9ca0be 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -2369,6 +2369,8 @@ public class ServerPlayer extends Player { @@ -42,9 +42,9 @@ index 7fc94ec08f6bd9649ad9168ea3b9aa6ac9bf60e0..2fac364c8ce66a4c00b65adc4c723b73 + getBukkitEntity().setPlayerListName(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix + prefix + scoreboardName + suffix + org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, true); } else { - getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix); + getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1acac1e6288e67db00599f98fbdf8ba12702c11a..5fe21ffe8a868184b909e444798701fab52e91c1 100644 +index cc9c30b8555e0509162a82c4a01de9fc51ba59af..7830e21dce33ad389441227d728750606dcd3c56 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2254,8 +2254,34 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -83,7 +83,7 @@ index 1acac1e6288e67db00599f98fbdf8ba12702c11a..5fe21ffe8a868184b909e444798701fa // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands if (this.player.hasDisconnected()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 300d5144d828330e3de934b1026a0f1b96496d79..e49f813b4ccb698d9d50c8c827d789d2a5274acf 100644 +index 276e605eae9034a19a382c36df04fcef8b7e3d9f..fef833511a749593d4ecf4ec82f940855ace1598 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -176,9 +176,13 @@ public class PurpurConfig { diff --git a/patches/server/0060-Virtual-Thread-for-async-scheduler.patch b/patches/server/0060-Virtual-Thread-for-async-scheduler.patch index 87f0f33d..b414b46d 100644 --- a/patches/server/0060-Virtual-Thread-for-async-scheduler.patch +++ b/patches/server/0060-Virtual-Thread-for-async-scheduler.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Virtual Thread for async scheduler diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index f236e7c56c6c72f3fcdba8314f258026e6561ecb..05b4d0ae35f203a62079cf19285d09d9d355a033 100644 +index fa843d5b5ac9e0fe8886a95246a999ac02aacd6f..b547c95d50ade495940c146ec5c39e4ef7d1d79e 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -386,7 +386,6 @@ public class Main { +@@ -387,7 +387,6 @@ public class Main { tryPreloadClass("org.bukkit.craftbukkit.scheduler.CraftScheduler$1"); tryPreloadClass("org.bukkit.craftbukkit.scheduler.CraftScheduler$2"); tryPreloadClass("org.bukkit.craftbukkit.scheduler.CraftScheduler$3"); diff --git a/patches/server/0061-Mirai-Configurable-chat-message-signatures.patch b/patches/server/0061-Mirai-Configurable-chat-message-signatures.patch index 92aa5a9d..53b90c93 100644 --- a/patches/server/0061-Mirai-Configurable-chat-message-signatures.patch +++ b/patches/server/0061-Mirai-Configurable-chat-message-signatures.patch @@ -71,10 +71,10 @@ index 50dc68a005490415b88780397ef6c26859596dd5..162115048cffc824376e54b7f60ae071 public static record Favicon(byte[] iconBytes) { private static final String PREFIX = "data:image/png;base64,"; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index a216177a2d02d19e0277085c851d72c878910ca2..e21b5f7d1e6f951865094be7ed824b38d4d3c499 100644 +index ee99b0e74abc6447937b1af627c10ffbeeb9e0c0..18554ce89a6de5dc6a8116e27f7210c013469c21 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -702,6 +702,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -701,6 +701,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @Override public boolean enforceSecureProfile() { @@ -83,7 +83,7 @@ index a216177a2d02d19e0277085c851d72c878910ca2..e21b5f7d1e6f951865094be7ed824b38 // Paper start - Add setting for proxy online mode status diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index f74f1411384945498823fbdcf9d2e0ce4fc3e8ae..98b081392d6d6fdfced4e25fe68224065ad0910a 100644 +index 4ff90467343ab5f9e6f40d77a7399456626cabda..97091e594b77c7d65c4b3fffad8f483d9bf1a2f7 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -329,10 +329,29 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack diff --git a/patches/server/0063-Cache-player-profileResult.patch b/patches/server/0063-Cache-player-profileResult.patch index 8a315e88..7251a62d 100644 --- a/patches/server/0063-Cache-player-profileResult.patch +++ b/patches/server/0063-Cache-player-profileResult.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cache player profileResult diff --git a/build.gradle.kts b/build.gradle.kts -index 7c663d28213322165245c6946c6a73cbc5cbf50b..506bdb19310291ec8770226cdcfbd0e104f5ba7e 100644 +index fa5b046a865672cfa9e9eabcb54236455e2193f5..d0a7999ae12f0e5314234ca6a97d5cd8124bd702 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -30,6 +30,10 @@ dependencies { +@@ -24,6 +24,10 @@ dependencies { } // Leaf end - Legacy config diff --git a/patches/server/0065-Matter-Secure-Seed.patch b/patches/server/0065-Matter-Secure-Seed.patch index 557c0f7b..37e0329d 100644 --- a/patches/server/0065-Matter-Secure-Seed.patch +++ b/patches/server/0065-Matter-Secure-Seed.patch @@ -70,7 +70,7 @@ index e6f6304724ae6acaf94ed9553c90c9650be5c0c6..e0f13719a239a2e06330b03a2e4b8d57 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index aa831bc5ffa44c55da9eea33c72df1d6d68c861a..3baae2d8f55101fe17f43caefe38583b2ebb582c 100644 +index 2cb1ce10c24f3a18d2d486c6d63cd24b1f3de2be..dced0a22e924838b13edd0c24a7d3fb3de9242d6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -180,6 +180,10 @@ import org.bukkit.event.weather.LightningStrikeEvent; @@ -581,10 +581,10 @@ index 82b4bd669c57b18fb0b443bcd94495023cd5a528..2d336a8bb12e9e41b717caf883d39de1 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 25cbef3e87fd9924a86b019355df922eaf3773e1..cbe7e050d0651d06fdc6a08331142914b8c49920 100644 +index 8d282abbf968ddab0f660a29b2a37bf7d569c481..3043b7a53269ed17aae3a531f495600d336a376a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -270,6 +270,10 @@ import net.md_5.bungee.api.chat.BaseComponent; // Spigot +@@ -266,6 +266,10 @@ import net.md_5.bungee.api.chat.BaseComponent; // Spigot import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper @@ -593,9 +593,9 @@ index 25cbef3e87fd9924a86b019355df922eaf3773e1..cbe7e050d0651d06fdc6a08331142914 +// Leaf end - Matter + public final class CraftServer implements Server { - private final String serverName = "Leaf"; // Paper // Gale - branding changes // Leaf + private final String serverName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); // Paper private final String serverVersion; -@@ -1374,7 +1378,7 @@ public final class CraftServer implements Server { +@@ -1360,7 +1364,7 @@ public final class CraftServer implements Server { iregistrycustom_dimension = leveldataanddimensions.dimensions().dimensionsRegistryAccess(); } else { LevelSettings worldsettings; diff --git a/patches/server/0067-Ignore-terminal-provider-warning.patch b/patches/server/0067-Ignore-terminal-provider-warning.patch index 8701f16a..a7a96725 100644 --- a/patches/server/0067-Ignore-terminal-provider-warning.patch +++ b/patches/server/0067-Ignore-terminal-provider-warning.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ignore terminal provider warning diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 05b4d0ae35f203a62079cf19285d09d9d355a033..b6c68c250826698c058b95642850ec42645de2f7 100644 +index b547c95d50ade495940c146ec5c39e4ef7d1d79e..1bcca095e70f586af1758447c29314a4256666ce 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -353,6 +353,9 @@ public class Main { +@@ -354,6 +354,9 @@ public class Main { // Paper end - Log Java and OS versioning to help with debugging plugin issues printlnStartupInfoToSystemOut("Loading libraries, please wait..."); // Gale - include time in startup logs diff --git a/patches/server/0068-Fix-console-freeze-above-JAVA-22.patch b/patches/server/0068-Fix-console-freeze-above-JAVA-22.patch index 0c672985..b527349a 100644 --- a/patches/server/0068-Fix-console-freeze-above-JAVA-22.patch +++ b/patches/server/0068-Fix-console-freeze-above-JAVA-22.patch @@ -7,10 +7,10 @@ Revert to old console provider, Fix https://github.com/PaperMC/Paper/issues/1040 Solution refers to https://inside.java/2023/07/31/quality-heads-up diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index b6c68c250826698c058b95642850ec42645de2f7..b4599dae7bc59e67eee22a7b70d148d4f63669b5 100644 +index 1bcca095e70f586af1758447c29314a4256666ce..d1565ffdb17460df4d788652e1c1afffba4e82d6 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -355,6 +355,7 @@ public class Main { +@@ -356,6 +356,7 @@ public class Main { printlnStartupInfoToSystemOut("Loading libraries, please wait..."); // Gale - include time in startup logs System.setProperty("org.jline.terminal.disableDeprecatedProviderWarning", "true"); // Leaf - Ignore terminal provider warning diff --git a/patches/server/0070-Skip-null-banner-pattern.patch b/patches/server/0070-Skip-null-banner-pattern.patch new file mode 100644 index 00000000..224dcdb1 --- /dev/null +++ b/patches/server/0070-Skip-null-banner-pattern.patch @@ -0,0 +1,111 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> +Date: Thu, 9 May 2024 20:30:32 -0400 +Subject: [PATCH] Skip null banner pattern + +Try to fix https://github.com/PaperMC/Paper/issues/10677 + +diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java +index 16dba0fe00150ea919deff052b5dc7a2732741c1..f838839aba8b00474c6f7c95c37a88bb3bf4a884 100644 +--- a/src/main/java/net/minecraft/server/players/PlayerList.java ++++ b/src/main/java/net/minecraft/server/players/PlayerList.java +@@ -377,6 +377,7 @@ public abstract class PlayerList { + ClientboundPlayerInfoUpdatePacket packet = ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player)); // Paper - Add Listing API for Player + + final List onlinePlayers = Lists.newArrayListWithExpectedSize(this.players.size() - 1); // Paper - Use single player info update packet on join ++ System.out.println("看380: " + this.players.size()); + for (int i = 0; i < this.players.size(); ++i) { + ServerPlayer entityplayer1 = (ServerPlayer) this.players.get(i); + +@@ -698,6 +699,7 @@ public abstract class PlayerList { + // CraftBukkit start + // this.broadcastAll(new ClientboundPlayerInfoRemovePacket(List.of(entityplayer.getUUID()))); + ClientboundPlayerInfoRemovePacket packet = new ClientboundPlayerInfoRemovePacket(List.of(entityplayer.getUUID())); ++ System.out.println("看702: " + this.players.size()); + for (int i = 0; i < this.players.size(); i++) { + ServerPlayer entityplayer2 = (ServerPlayer) this.players.get(i); + +@@ -724,6 +726,7 @@ public abstract class PlayerList { + + ServerPlayer entityplayer; + ++ System.out.println("看729: " + this.players.size()); + for (int i = 0; i < this.players.size(); ++i) { + entityplayer = (ServerPlayer) this.players.get(i); + if (entityplayer.getUUID().equals(uuid) || (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && entityplayer.getGameProfile().getName().equalsIgnoreCase(gameprofile.getName()))) { // Paper - validate usernames +@@ -776,6 +779,7 @@ public abstract class PlayerList { + event.disallow(PlayerLoginEvent.Result.KICK_BANNED, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure + } else { + // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; ++ System.out.println("看782: " + this.players.size()); + if (this.players.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameprofile))) { // Purpur + event.disallow(PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure + } +@@ -1080,6 +1084,7 @@ public abstract class PlayerList { + for (ServerPlayer targetPlayer : sendAllPlayerInfoBucket) { + // Gale end - Purpur - spread out sending all player info + var target = targetPlayer.getBukkitEntity();; ++ System.out.println("看1087: " + this.players.size()); + final List list = new java.util.ArrayList<>(this.players.size()); + for (ServerPlayer player : this.players) { + if (target.canSee(player.getUUID())) { +@@ -1111,6 +1116,7 @@ public abstract class PlayerList { + + // CraftBukkit start - add a world/entity limited version + public void broadcastAll(Packet packet, net.minecraft.world.entity.player.Player entityhuman) { ++ System.out.println("看1119: " + this.players.size()); + for (int i = 0; i < this.players.size(); ++i) { + ServerPlayer entityplayer = this.players.get(i); + if (entityhuman != null && !entityplayer.getBukkitEntity().canSee(entityhuman.getBukkitEntity())) { +@@ -1121,6 +1127,7 @@ public abstract class PlayerList { + } + + public void broadcastAll(Packet packet, Level world) { ++ System.out.println("看1130: " + this.players.size()); + for (int i = 0; i < world.players().size(); ++i) { + ((ServerPlayer) world.players().get(i)).connection.send(packet); + } +@@ -1180,6 +1187,7 @@ public abstract class PlayerList { + if (scoreboardteam == null) { + this.broadcastSystemMessage(message, false); + } else { ++ System.out.println("看1190: " + this.players.size()); + for (int i = 0; i < this.players.size(); ++i) { + ServerPlayer entityplayer = (ServerPlayer) this.players.get(i); + +@@ -1192,6 +1200,7 @@ public abstract class PlayerList { + } + + public String[] getPlayerNamesArray() { ++ System.out.println("看1203: " + this.players.size()); + String[] astring = new String[this.players.size()]; + + for (int i = 0; i < this.players.size(); ++i) { +@@ -1307,6 +1316,7 @@ public abstract class PlayerList { + } + + public void broadcast(@Nullable net.minecraft.world.entity.player.Player player, double x, double y, double z, double distance, ResourceKey worldKey, Packet packet) { ++ System.out.println("看1319: " + this.players.size()); + for (int i = 0; i < this.players.size(); ++i) { + ServerPlayer entityplayer = (ServerPlayer) this.players.get(i); + +@@ -1338,6 +1348,7 @@ public abstract class PlayerList { + io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main + int numSaved = 0; + long now = MinecraftServer.currentTick; ++ System.out.println("看1351: " + this.players.size()); + for (int i = 0; i < this.players.size(); ++i) { + ServerPlayer entityplayer = this.players.get(i); + if (interval == -1 || now - entityplayer.lastSave >= interval) { +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java +index 6a3b0c7f0cc3ffb17a231383ad103fa792d7b7ba..3286a2a485dab1fb35910ffa350b1d85fde3ad80 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java +@@ -79,6 +79,7 @@ public class CraftMetaBanner extends CraftMetaItem implements BannerMeta { + List patterns = entityTag.layers(); + for (int i = 0; i < Math.min(patterns.size(), 20); i++) { + BannerPatternLayers.Layer p = patterns.get(i); ++ if (p.pattern() == null || p.pattern().value() == null) continue; // Leaf - Skip null banner pattern + DyeColor color = DyeColor.getByWoolData((byte) p.color().getId()); + PatternType pattern = CraftPatternType.minecraftHolderToBukkit(p.pattern()); +