9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-23 00:49:23 +00:00

Update Paper

This commit is contained in:
violetc
2025-03-23 14:02:08 +08:00
parent 2e22de1dff
commit 6db1b4ba57
13 changed files with 91 additions and 58 deletions

View File

@@ -85,6 +85,12 @@ val patchTasks = listOf(
":leaves-server:applyMinecraftPatches" to ":leaves-server:rebuildMinecraftPatches",
":leaves-server:applyPaperServerPatches" to ":leaves-server:rebuildPaperServerPatches"
)
val patchDir = listOf(
"paper-api",
"leaves-server",
"leaves-server/src/minecraft/java",
"paper-server",
)
val statusFile = layout.buildDirectory.file("patchTaskStatus.json").get().asFile
fun readTaskStatus(): Map<String, String> {
@@ -103,28 +109,10 @@ fun writeTaskStatus(status: Map<String, String>) {
statusFile.writeText(JsonBuilder(status).toPrettyString())
}
fun executeTask(taskPath: String): Boolean {
val parts = taskPath.split(":")
val projectPath = if (parts.size > 2) parts.subList(0, parts.size - 1).joinToString(":") else ":"
val taskName = parts.last()
val fullTaskPath = if (projectPath == ":" || projectPath.isEmpty()) taskName else "$projectPath:$taskName"
fun executeCommand(command: List<String>, directory: File): Boolean {
try {
val gradlew = if (System.getProperty("os.name").lowercase(Locale.getDefault()).contains("windows"))
"${project.rootDir}\\gradlew.bat"
else
"${project.rootDir}/gradlew"
val processBuilder = ProcessBuilder(
gradlew,
fullTaskPath,
// "--console=verbose",
// "--info"
)
processBuilder.directory(project.rootDir)
val env = processBuilder.environment()
env["TERM"] = "xterm-256color"
val processBuilder = ProcessBuilder(command)
processBuilder.directory(directory)
val process = processBuilder.start()
@@ -154,15 +142,36 @@ fun executeTask(taskPath: String): Boolean {
outputThread.join()
errorThread.join()
if (exitCode != 0) {
throw GradleException("Task $fullTaskPath FAILED$exitCode")
return exitCode == 0
} catch (_: Exception) {
return false
}
}
fun hasGitChanges(directory: File): Boolean {
val process = ProcessBuilder("git", "status", "--porcelain").directory(directory).start()
val output = process.inputStream.bufferedReader().readText()
process.waitFor()
return output.isNotEmpty()
}
fun executeTask(taskPath: String): Boolean {
val parts = taskPath.split(":")
val projectPath = if (parts.size > 2) parts.subList(0, parts.size - 1).joinToString(":") else ":"
val taskName = parts.last()
val fullTaskPath = if (projectPath == ":" || projectPath.isEmpty()) taskName else "$projectPath:$taskName"
val gradlew = if (System.getProperty("os.name").lowercase(Locale.getDefault()).contains("windows"))
"${project.rootDir}\\gradlew.bat"
else
"${project.rootDir}/gradlew"
if (!executeCommand(listOf(gradlew, fullTaskPath), project.projectDir)) {
throw GradleException("Task $fullTaskPath FAILED")
}
return true
} catch (e: Exception) {
println("⚠️ Task FAILED: $taskPath - ${e.message}")
throw e
}
}
tasks.register("applyAllPatchesSequentially") {
@@ -228,6 +237,31 @@ tasks.register("applyAllPatchesSequentially") {
}
}
tasks.register("applyNextPatch") {
group = "leaves"
description = "Apply the next patch"
doLast {
val taskStatus = readTaskStatus().toMutableMap()
val failedIndex = patchTasks.indexOfFirst { (applyTaskPath, _) ->
taskStatus[applyTaskPath] == "FAILED"
}
if (failedIndex >= 0) {
val directory = project.projectDir.resolve(patchDir[failedIndex])
val gitCommand = if (hasGitChanges(directory)) {
listOf("git", "am", "--continue")
} else {
listOf("git", "am", "--skip")
}
executeCommand(gitCommand, directory)
}
}
}
tasks.register("resetPatchTaskStatus") {
group = "leaves"
description = "Reset the status of all patch tasks"

View File

@@ -1,7 +1,7 @@
group=org.leavesmc.leaves
version=1.21.4-R0.1-SNAPSHOT
mcVersion=1.21.4
paperRef=bb1beda67bfd94632815acc8ac5d68f5a8e3e410
paperRef=894631f0d091a3de52aed4b6ec0c4f6c7584d697
preVersion=false
org.gradle.jvmargs=-Xmx2G
org.gradle.caching=true

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add isShrink to EntityResurrectEvent
diff --git a/src/main/java/org/bukkit/event/entity/EntityResurrectEvent.java b/src/main/java/org/bukkit/event/entity/EntityResurrectEvent.java
index 372825dc8ae52983f0e8ff2fd80e02887f0044ad..2a598f7dc7de0be7a83a4f7a52ec22c42f417c71 100644
index 2a7426c157f6a06f2491d95d67df95a0fb809926..8fe7d559ad6cbb8f15584c202067250dd55a8ede 100644
--- a/src/main/java/org/bukkit/event/entity/EntityResurrectEvent.java
+++ b/src/main/java/org/bukkit/event/entity/EntityResurrectEvent.java
@@ -15,19 +15,43 @@ import org.jetbrains.annotations.Nullable;
@@ -16,20 +16,44 @@ import org.jetbrains.annotations.Nullable;
public class EntityResurrectEvent extends EntityEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
@@ -19,6 +19,7 @@ index 372825dc8ae52983f0e8ff2fd80e02887f0044ad..2a598f7dc7de0be7a83a4f7a52ec22c4
private final EquipmentSlot hand;
@ApiStatus.Internal
- public EntityResurrectEvent(@NotNull LivingEntity what, @Nullable EquipmentSlot hand) {
+ public EntityResurrectEvent(@NotNull LivingEntity what, @Nullable EquipmentSlot hand, boolean shrink) {
super(what);
@@ -30,7 +31,7 @@ index 372825dc8ae52983f0e8ff2fd80e02887f0044ad..2a598f7dc7de0be7a83a4f7a52ec22c4
+ this(what, hand, true);
+ }
+
@Deprecated(since = "1.19.2")
@Deprecated(since = "1.19.2", forRemoval = true)
public EntityResurrectEvent(@NotNull LivingEntity what) {
- this(what, null);
+ this(what, null, true);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add fakeplayer api
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index db47fe6560e1b0c737889698cf52c5c3fb06185f..699c71f6749352aaf8cb82a51a82f86c3a8d3abc 100644
index 4eb723afaca049a816d16370b383fa37441eafd4..e1c6974cfd96b406314901862c2d92ad0a4ba8f2 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -2998,4 +2998,15 @@ public final class Bukkit {
@@ -2996,4 +2996,15 @@ public final class Bukkit {
public static void restart() {
server.restart();
}
@@ -25,7 +25,7 @@ index db47fe6560e1b0c737889698cf52c5c3fb06185f..699c71f6749352aaf8cb82a51a82f86c
+ // Leaves end - Bot API
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 2eb72a31cc36a41694654da15be5a1f4983aa1bd..68c45204d1d6b8c33ab47a2414158fc273873414 100644
index 0c1f3053ecb415a6dfbbe283bae8c1f6d8477e9c..e42fa3dc7f70a5e4426564f26d471c5bfc3d57f2 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -66,6 +66,7 @@ import org.jetbrains.annotations.ApiStatus;
@@ -36,7 +36,7 @@ index 2eb72a31cc36a41694654da15be5a1f4983aa1bd..68c45204d1d6b8c33ab47a2414158fc2
/**
* Represents a server implementation.
@@ -2696,4 +2697,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -2698,4 +2699,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
*/
void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value);
// Paper end - API to check if the server is sleeping

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Force peaceful mode switch
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
index 015d852d5a0c01042a2153a6916d408660356c59..41c3c561d3d23136fbfa19c23d5e82ab1f2f06f3 100644
index 96120ce0e00f902ba6139af8e21d7174d647c8ce..1e840cf229b20096ba982869b5d20982f804215a 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -4346,6 +4346,12 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
@@ -4345,6 +4345,12 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
void setSendViewDistance(int viewDistance);
// Paper end - view distance api

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Replay Mod API
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 699c71f6749352aaf8cb82a51a82f86c3a8d3abc..8018a4e88c9392fd68c3bd03f13e7443e6a3966d 100644
index e1c6974cfd96b406314901862c2d92ad0a4ba8f2..27bd3867836744a6e10507d165215ebf8dd7da53 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -3009,4 +3009,10 @@ public final class Bukkit {
@@ -3007,4 +3007,10 @@ public final class Bukkit {
return server.getBotManager();
}
// Leaves end - Bot API
@@ -20,7 +20,7 @@ index 699c71f6749352aaf8cb82a51a82f86c3a8d3abc..8018a4e88c9392fd68c3bd03f13e7443
+ // Leaves end - Photographer API
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 68c45204d1d6b8c33ab47a2414158fc273873414..f1519b243b676017185308145fe972702073c222 100644
index e42fa3dc7f70a5e4426564f26d471c5bfc3d57f2..f4f83b1534a90127a77420a1768cd4b255a04868 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -67,6 +67,7 @@ import org.jetbrains.annotations.Contract;
@@ -31,7 +31,7 @@ index 68c45204d1d6b8c33ab47a2414158fc273873414..f1519b243b676017185308145fe97270
/**
* Represents a server implementation.
@@ -2706,4 +2707,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -2708,4 +2709,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
*/
@NotNull BotManager getBotManager();
// Leaves end - Bot API

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Bytebuf API
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 8018a4e88c9392fd68c3bd03f13e7443e6a3966d..1d347aefb56dcd5c9bcc21f2d8bc4a884ba488fa 100644
index 27bd3867836744a6e10507d165215ebf8dd7da53..190e532fd3ddaf78eae3ea0ba2b4b986ab5f9540 100644
--- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java
@@ -3015,4 +3015,10 @@ public final class Bukkit {
@@ -3013,4 +3013,10 @@ public final class Bukkit {
return server.getPhotographerManager();
}
// Leaves end - Photographer API
@@ -20,10 +20,10 @@ index 8018a4e88c9392fd68c3bd03f13e7443e6a3966d..1d347aefb56dcd5c9bcc21f2d8bc4a88
+ // Leaves end - Bytebuf API
}
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index f1519b243b676017185308145fe972702073c222..a3f895426062c97cba925c845404dbfe732e6cc8 100644
index f4f83b1534a90127a77420a1768cd4b255a04868..8d4c10d7d8b3982a960ca2cee52ce069b1916c24 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -2711,4 +2711,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
@@ -2713,4 +2713,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
// Leaves start - Photographer API
@NotNull PhotographerManager getPhotographerManager();
// Leaves end - Photographer API

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Revert raid changes
diff --git a/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java b/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java
index 8fdfcbc7d20fe0af6b220ab94516247093637621..3eb836575307116ce0668eadd6a6ee0a9aafc7cd 100644
index f6218d317af4f4d83292a10abdf583fb01824232..3eb836575307116ce0668eadd6a6ee0a9aafc7cd 100644
--- a/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java
+++ b/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java
@@ -219,9 +219,7 @@ public class EntityPotionEffectEvent extends EntityEvent implements Cancellable
@@ -14,7 +14,7 @@ index 8fdfcbc7d20fe0af6b220ab94516247093637621..3eb836575307116ce0668eadd6a6ee0a
*
- * @deprecated no longer used, player now gets an ominous bottle instead
*/
- @Deprecated(since = "1.21") // Paper
- @Deprecated(since = "1.21", forRemoval = true)
PATROL_CAPTAIN,
/**
* When a potion effect is modified through the plugin methods.

View File

@@ -34,7 +34,7 @@ index adc6741e0e017660fbd39a62b69be1e67e0e143f..9bc40b07b8eebded4f748fd053b45571
if (nmsEntity.level() != this.getHandle().getLevel()) {
nmsEntity = nmsEntity.teleport(new TeleportTransition(this.getHandle().getLevel(), nmsEntity, TeleportTransition.DO_NOTHING));
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index f7814ab48e02c443a574106f4eafbfcf8cb528c9..174b45019c5e6089556df4ebf8aef0decf23b91d 100644
index c06b12e9d5535c8018c5b7f305946758dd9afd99..7e93baa65715383092fd43132b6f4da9eddcf39c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -315,6 +315,7 @@ public final class CraftServer implements Server {
@@ -62,7 +62,7 @@ index f7814ab48e02c443a574106f4eafbfcf8cb528c9..174b45019c5e6089556df4ebf8aef0de
return false;
}
@@ -3299,4 +3301,11 @@ public final class CraftServer implements Server {
@@ -3294,4 +3296,11 @@ public final class CraftServer implements Server {
this.console.addPluginAllowingSleep(plugin.getName(), value);
}
// Paper end - API to check if the server is sleeping

View File

@@ -19,7 +19,7 @@ index a0a6cde96322df8e455b26b32b1c593f332d4db6..b5031ba5c48c7d007a7c05766a2beff4
}
// Leaves end - skip bot
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 174b45019c5e6089556df4ebf8aef0decf23b91d..9668eeb821075abee8da35d849090d4f5ba75cae 100644
index 7e93baa65715383092fd43132b6f4da9eddcf39c..af648b9301a7a964af88a55e181b68780a9f4ca5 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -316,6 +316,7 @@ public final class CraftServer implements Server {
@@ -39,7 +39,7 @@ index 174b45019c5e6089556df4ebf8aef0decf23b91d..9668eeb821075abee8da35d849090d4f
@Override
public CraftPlayer apply(ServerPlayer player) {
return player.getBukkitEntity();
@@ -3308,4 +3309,11 @@ public final class CraftServer implements Server {
@@ -3303,4 +3304,11 @@ public final class CraftServer implements Server {
return botManager;
}
// Leaves end - Bot API

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Bytebuf API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 9668eeb821075abee8da35d849090d4f5ba75cae..d0639618ff9c179aaa8d591f7c1b9251f8a5a93d 100644
index af648b9301a7a964af88a55e181b68780a9f4ca5..09a9c062a0ad15df3896fba161bdfb17d34181ba 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -317,6 +317,7 @@ public final class CraftServer implements Server {
@@ -16,7 +16,7 @@ index 9668eeb821075abee8da35d849090d4f5ba75cae..d0639618ff9c179aaa8d591f7c1b9251
// Paper start - Folia region threading API
private final io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler regionizedScheduler = new io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler();
@@ -3316,4 +3317,15 @@ public final class CraftServer implements Server {
@@ -3311,4 +3312,15 @@ public final class CraftServer implements Server {
return photographerManager;
}
// Leaves end - replay mod api

View File

@@ -619,9 +619,6 @@ public final class LeavesConfig {
@GlobalConfig("cache-climb-check")
public boolean cacheClimbCheck = true;
@GlobalConfig(value = "biome-temperatures-use-aging-cache", lock = true)
public boolean biomeTemperaturesUseAgingCache = true;
@GlobalConfig("reduce-chuck-load-and-lookup")
public boolean reduceChuckLoadAndLookup = true;
@@ -661,6 +658,7 @@ public final class LeavesConfig {
@GlobalConfig("fix-villagers-dont-release-memory")
public boolean villagersDontReleaseMemoryFix = false;
@RemovedConfig(name = "biome-temperatures-use-aging-cache", category = "performance")
@RemovedConfig(name = "cache-world-generator-sea-level", category = "performance")
@RemovedConfig(name = "cache-ominous-banner-item", category = "performance")
@RemovedConfig(name = "use-optimized-collection", category = "performance")