From 4180f041c17d7983aec58f906a8720380d4a4bab Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Tue, 17 Jun 2025 01:39:35 +0800 Subject: [PATCH] Updated Upstream (Paper/Purpur) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@6aafe29e 1.21.6 dev PaperMC/Paper@ae7c74ec tweak mob goal keys, generate missing api PaperMC/Paper@9ea1460b Revert "fix sponge-absorb deleting chest content (#12647)" Purpur Changes: PurpurMC/Purpur@eb0ba67d Updated Upstream (Paper) PurpurMC/Purpur@7c6502dc Updated Upstream (Paper) PurpurMC/Purpur@aa289e2c Updated Upstream (Paper) PurpurMC/Purpur@b1d412fb Updated Upstream (Paper) PurpurMC/Purpur@293e28a0 use empty registryaccess where context is not needed, closes #1676 PurpurMC/Purpur@452bb319 port PaperMC/Paper#12654, closes #1665 PurpurMC/Purpur@849bc79c register test subcommands used for debugging, closes #1675 --- gradle.properties | 2 +- .../features/0013-Purpur-API-Changes.patch | 10 ++--- leaf-server/build.gradle.kts.patch | 29 +++++-------- ...0098-Purpur-Server-Minecraft-Changes.patch | 28 +++++++++--- .../0009-Purpur-Server-Paper-Changes.patch | 43 +++++++++---------- scripts/upstreamCommit.sh | 2 +- 6 files changed, 61 insertions(+), 53 deletions(-) diff --git a/gradle.properties b/gradle.properties index fbe2006e..056f306b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=cn.dreeam.leaf mcVersion=1.21.6-rc1 version=1.21.6-R0.1-SNAPSHOT -paperCommit=6fddc93a93c7cd9081f550b32f53803759857bf9 +paperCommit=9ea1460b4032565c90d9ebdebeb1971ad1b9e638 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch b/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch index 7d6ccd7b..d1401ae0 100644 --- a/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch +++ b/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 25d39e94edc23f338ee659655ab532ffb0d7e276 +Commit: a3c11d6845ae4a8b1cee0ee0d800e26adf5bfbff Patches listed below are removed in this patch, They exists in Gale or Leaf: * "co/aikar/timings/TimedEventExecutor.java.patch" @@ -1161,13 +1161,13 @@ index 7fbfdb07585c7b28acea1f0c1f58ada0cc744441..21fcca092e2e31baa5ece0de9e44e3fa + // Purpur end } diff --git a/src/main/java/org/bukkit/entity/Villager.java b/src/main/java/org/bukkit/entity/Villager.java -index b86ef7cb610f8f9bc1b5f5d5c5f637e04291aeb4..5c5e4db7f70acb3ade10b4ee8ad20fc425e819a8 100644 +index c3d37131fbd6761ac2610f7eb70643d24cdaec70..568cb4f2139b59a42fc3528a56f82fddc7d69cb8 100644 --- a/src/main/java/org/bukkit/entity/Villager.java +++ b/src/main/java/org/bukkit/entity/Villager.java -@@ -391,4 +391,13 @@ public interface Villager extends AbstractVillager { - * reputation regardless of its impact and the player associated. +@@ -408,4 +408,13 @@ public interface Villager extends AbstractVillager { + * Demand is still updated even if all events are canceled. */ - public void clearReputations(); + public void restock(); + + // Purpur start + /** diff --git a/leaf-server/build.gradle.kts.patch b/leaf-server/build.gradle.kts.patch index d68d15d6..863ccf00 100644 --- a/leaf-server/build.gradle.kts.patch +++ b/leaf-server/build.gradle.kts.patch @@ -13,18 +13,10 @@ testRuntimeOnly("org.junit.platform:junit-platform-launcher") } -@@ -24,9 +_,26 @@ +@@ -24,6 +_,19 @@ minecraftVersion = providers.gradleProperty("mcVersion") gitFilePatches = false -+ // Purpur start - project setup -+ /* - updatingMinecraft { - oldPaperCommit = "a033e3b9ef78cfe85be807ac3fd1dd956274d4db" - } -+ */ -+ // Purpur end - project setup -+ + // Leaf start - project setup + val leaf = forks.register("leaf") { + upstream.patchDir("paperServer") { @@ -37,10 +29,11 @@ + + activeFork = leaf + // Leaf end - project setup - ++ spigot { enabled = false -@@ -51,6 +_,7 @@ + buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc" +@@ -47,6 +_,7 @@ libraryRepositories.addAll( "https://repo.maven.apache.org/maven2/", paperMavenPublicUrl, @@ -48,7 +41,7 @@ ) } -@@ -109,7 +_,22 @@ +@@ -105,7 +_,22 @@ } } @@ -72,7 +65,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { extendsFrom(configurations.compileClasspath.get()) } -@@ -131,10 +_,20 @@ +@@ -127,10 +_,20 @@ } dependencies { @@ -96,7 +89,7 @@ implementation("net.minecrell:terminalconsoleappender:1.3.0") implementation("net.kyori:adventure-text-serializer-ansi:4.21.0") // Keep in sync with adventureVersion from Paper-API build file runtimeConfiguration(sourceSets.main.map { it.runtimeClasspath }) -@@ -145,41 +_,58 @@ +@@ -141,41 +_,58 @@ all its classes to check if they are plugins. Scanning takes about 1-2 seconds so adding this speeds up the server start. */ @@ -168,7 +161,7 @@ implementation("net.neoforged:srgutils:1.0.9") // Mappings handling implementation("net.neoforged:AutoRenamingTool:2.0.3") // Remap plugins -@@ -193,28 +_,40 @@ +@@ -189,28 +_,40 @@ // Spark implementation("me.lucko:spark-api:0.1-20240720.200737-2") implementation("me.lucko:spark-paper:1.10.133-20250413.112336-1") @@ -216,7 +209,7 @@ "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, -@@ -273,7 +_,7 @@ +@@ -269,7 +_,7 @@ jvmArgumentProviders.add(provider) } @@ -225,7 +218,7 @@ idea { module { generatedSourceDirs.add(generatedDir.toFile()) -@@ -331,6 +_,8 @@ +@@ -327,6 +_,8 @@ val memoryGb = providers.gradleProperty("paper.runMemoryGb").getOrElse("2") minHeapSize = "${memoryGb}G" maxHeapSize = "${memoryGb}G" @@ -234,7 +227,7 @@ doFirst { workingDir.mkdirs() -@@ -376,3 +_,62 @@ +@@ -372,3 +_,62 @@ classpath(tasks.createReobfPaperclipJar.flatMap { it.outputZip }) mainClass.set(null as String?) } diff --git a/leaf-server/minecraft-patches/features/0098-Purpur-Server-Minecraft-Changes.patch b/leaf-server/minecraft-patches/features/0098-Purpur-Server-Minecraft-Changes.patch index 4b0d1b80..da9c558a 100644 --- a/leaf-server/minecraft-patches/features/0098-Purpur-Server-Minecraft-Changes.patch +++ b/leaf-server/minecraft-patches/features/0098-Purpur-Server-Minecraft-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Minecraft Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 25d39e94edc23f338ee659655ab532ffb0d7e276 +Commit: a3c11d6845ae4a8b1cee0ee0d800e26adf5bfbff Patches listed below are removed in this patch, They exists in Gale or Leaf: * "net/minecraft/CrashReport.java.patch" @@ -38,6 +38,8 @@ Patches listed below are removed in this patch, They exists in Gale or Leaf: - MC-238526 - Fix spawner not spawning water animals correctly * "net/minecraft/world/entity/projectile/AbstractArrow.java.patch" - Arrows should not reset despawn counter +* "net/minecraft/world/inventory/AbstractContainerMenu.java.patch" + - PaperPR#12654 * "net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch" - Rebrand @@ -264,6 +266,19 @@ index 9fb53bc1330bf5370769200599b022a985f88db2..d6e8bd3b302f821b286b15db3d66c8b2 @Override public boolean isClientAuthoritative() { return false; +diff --git a/net/minecraft/gametest/framework/TestCommand.java b/net/minecraft/gametest/framework/TestCommand.java +index 17f33a309ead525975a3090514a6367260f0af09..f4360d9472ba344f2e7afd6d798d313d5423fcb5 100644 +--- a/net/minecraft/gametest/framework/TestCommand.java ++++ b/net/minecraft/gametest/framework/TestCommand.java +@@ -449,7 +449,7 @@ public class TestCommand { + ) + ) + ); +- if (SharedConstants.IS_RUNNING_IN_IDE) { ++ if (org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands || SharedConstants.IS_RUNNING_IN_IDE) { // Purpur - register minecraft debug commands + literalArgumentBuilder = literalArgumentBuilder.then( + Commands.literal("export") + .then( diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java index 34524dc5a503bebcec99ada0d9560d6f4df48cdf..1014ab2aeb5e496124c99c938538e88d75561cd5 100644 --- a/net/minecraft/network/Connection.java @@ -12291,7 +12306,7 @@ index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db632830 this.spawnCat(pos, level, true); } diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 9b9514362f32ab79816678ce4be25a4a87fe49aa..a4c474b6804020317750da06f00dcb2ec049d0b7 100644 +index 6ecd99adc1c22681553714ff23e557b8f7854737..165d0f50e7818b6daf834507033feaa2fabcaf19 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -179,6 +179,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -12474,7 +12489,7 @@ index 9b9514362f32ab79816678ce4be25a4a87fe49aa..a4c474b6804020317750da06f00dcb2e @@ -507,7 +618,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - private void updateDemand() { + public void updateDemand() { for (MerchantOffer merchantOffer : this.getOffers()) { - merchantOffer.updateDemand(); + merchantOffer.updateDemand(this.level().purpurConfig.villagerMinimumDemand); // Purpur - Configurable minimum demand for trades @@ -21873,15 +21888,16 @@ index 0000000000000000000000000000000000000000..922e48799c43ca322a8f550c98a26e1e +} diff --git a/org/purpurmc/purpur/entity/PurpurStoredBee.java b/org/purpurmc/purpur/entity/PurpurStoredBee.java new file mode 100644 -index 0000000000000000000000000000000000000000..cdaa50276c2077fa1067b26f094a6b1285ae8e5e +index 0000000000000000000000000000000000000000..683a98b424f170b4f819422550f3f7865abd39cf --- /dev/null +++ b/org/purpurmc/purpur/entity/PurpurStoredBee.java -@@ -0,0 +1,115 @@ +@@ -0,0 +1,116 @@ +package org.purpurmc.purpur.entity; + +import com.mojang.logging.LogUtils; +import io.papermc.paper.adventure.PaperAdventure; +import net.kyori.adventure.text.Component; ++import net.minecraft.core.RegistryAccess; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.ProblemReporter; +import net.minecraft.world.level.block.entity.BeehiveBlockEntity; @@ -21918,7 +21934,7 @@ index 0000000000000000000000000000000000000000..cdaa50276c2077fa1067b26f094a6b12 + CompoundTag customData = handle.occupant.entityData().copyTag(); + + try (ProblemReporter.ScopedCollector scopedCollector = new ProblemReporter.ScopedCollector(blockEntity.problemPath(), LOGGER)) { -+ ValueInput valueInput = TagValueInput.create(scopedCollector, blockEntity.getLevel().registryAccess(), customData); ++ ValueInput valueInput = TagValueInput.create(scopedCollector, RegistryAccess.EMPTY, customData); + + net.minecraft.network.chat.Component customNameMinecraft = BlockEntity.parseCustomNameSafe(valueInput, "CustomName"); + this.customName = customNameMinecraft == null ? null : PaperAdventure.asAdventure(customNameMinecraft); diff --git a/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch b/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch index 0d8cd547..3ded51d4 100644 --- a/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch +++ b/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Paper Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 25d39e94edc23f338ee659655ab532ffb0d7e276 +Commit: a3c11d6845ae4a8b1cee0ee0d800e26adf5bfbff Patches listed below are removed in this patch, They exists in Gale or Leaf: * "Rebrand.patch" @@ -127,20 +127,20 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} 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 8aefb75823594007a27738f7ae1cc9f1bb35056c..1081f5bb3d63d8fcfba0a79755e51ac3a3407f70 100644 +index 9e32cbb2664f9e162b384050ea7f166702ba0029..0976a7289d424a81ca73c1e89f339431ec1b26ff 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -@@ -27,6 +27,10 @@ public class MobGoalHelper { - static { - // TODO these kinda should be checked on each release, in case obfuscation changes - deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee"); +@@ -142,6 +142,10 @@ public class MobGoalHelper { + // TODO these kinda should be checked on each release, in case nested classes changes + private static final Map NESTED_CLASS_NAMES = Util.make(new HashMap<>(), map -> { + map.put("AbstractSkeleton$1", "AbstractSkeletonMelee"); + // Purpur start - Add option to disable zombie aggressiveness towards villagers -+ deobfuscationMap.put("zombie_1", "zombie_attack_villager"); -+ deobfuscationMap.put("drowned_1", "drowned_attack_villager"); ++ map.put("Zombie$1", "ZombieAttackVillager"); ++ map.put("Drowned$1", "DrownedAttackVillager"); + // Purpur end - Add option to disable zombie aggressiveness towards villagers - ignored.add("goal_selector_1"); - ignored.add("goal_selector_2"); + // remove duplicate + map.put("TraderLlama$TraderLlamaDefendWanderingTraderGoal", "TraderLlamaDefendWanderingTraderGoal"); diff --git a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..2eaf27ddf0bddb23b8850310c332b202b1d7e69c 100644 --- a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java @@ -1016,10 +1016,10 @@ index 33a0e5de4b96e3752ed60a77e9f20f38e434104e..24c169aeb21a9abf30e98362408dcd35 + // Purpur end - Item entity immunities } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 13feb2f7a0e4be92cc8d57512475b7e335d581a8..5f30621d717bd0728ddc074072ab7a02c487b253 100644 +index 6b4e74b808b4fb6ac0143d5c82571657b2c49683..fc4fa99a993a017676da2be3cb254399d421bce1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -513,7 +513,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -514,7 +514,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { @@ -1028,7 +1028,7 @@ index 13feb2f7a0e4be92cc8d57512475b7e335d581a8..5f30621d717bd0728ddc074072ab7a02 } else { this.getHandle().lastHurtByPlayer = null; this.getHandle().lastHurtByPlayerMemoryTime = 0; -@@ -1165,4 +1165,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1167,4 +1167,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public CombatTracker getCombatTracker() { return this.getHandle().getCombatTracker().paperCombatTracker; } @@ -1233,14 +1233,13 @@ index f03f9f94c51ef2f2eb24e4f65ec69b542b1c0a07..af60e3ef00ce1e98708d9963d466e72b + // Purpur end - Summoner API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index 258e149a4c239328f4b068ac4617ca63b788dab3..a69b1b56a0e34673005e5da700943c656d2ec724 100644 +index 66f0089ee33c36b9d13fb0b87303d33f08021ed1..26f056294e19f509bfd4986b9650e13f92a8feaf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -380,4 +380,12 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { - public void clearReputations() { - getHandle().getGossips().gossips.clear(); +@@ -258,4 +258,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { + public void restock() { + getHandle().restock(); } -+ // Paper end + + // Purpur start - Lobotomize stuck villagers + @Override @@ -1273,11 +1272,11 @@ index 2e11df97e5c8ff5fbf22ba87946d6018ac8bbbed..83b779eb0adcaf2e6d5658cddc2607f6 + // Purpur end - Summoner API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -index c3bd4cc1458bf62639d43854c2fdd0b479993b22..52a492ed8651e2ecb8b47cc3394fa4c722f99b71 100644 +index 33866c5a5591150de4c1d8f4c175122db3bd5bd4..5fd656f43985e3972c9f572d5b05bf5c81da2678 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -228,4 +228,15 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { - return this.getKey().hashCode(); +@@ -135,4 +135,15 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { + super(holder); } } + // Purpur start - Configurable chance for wolves to spawn rabid @@ -1416,7 +1415,7 @@ index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..5734c5caffda79383ae30df20c3defb5 + // Purpur end - Anvil API } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -index 02109a3ca53796fa4733e98eefd5829f71681daa..9f30b3d8f457301a552440afc2e48d52179d6abb 100644 +index 4a7b4b603c2c555c320911e618a4392628c2c754..0a3ad330e1d40cbe9e03fc3585ee309fe9f5c930 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java @@ -667,4 +667,285 @@ public final class CraftItemStack extends ItemStack { diff --git a/scripts/upstreamCommit.sh b/scripts/upstreamCommit.sh index 4fd006df..ccae079b 100755 --- a/scripts/upstreamCommit.sh +++ b/scripts/upstreamCommit.sh @@ -53,7 +53,7 @@ logsuffix="" # Paper updates if [ -n "$paperHash" ]; then newHash=$(git diff gradle.properties | awk '/^+paperCommit =/{print $NF}') - paper=$(getCommits "PaperMC/Paper" "$paperHash" $(echo $newHash | grep . -q && echo $newHash || echo "HEAD")) + paper=$(getCommits "PaperMC/Paper" "$paperHash" $(echo $newHash | grep . -q && echo $newHash || echo "dev/1.21.6")) # Updates found if [ -n "$paper" ]; then