From b6cd7b81014de1a43c08227f8d4a5869c678d34d Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Fri, 27 Jun 2025 04:13:52 +0800 Subject: [PATCH] [ci skip] Updated Leaves patches to latest 1.21.4 --- .../features/0010-Leaves-Replay-Mod-API.patch | 98 ------------------- .../leavesmc/leaves/entity/Photographer.java | 27 +++++ .../leaves/entity/PhotographerManager.java | 32 ++++++ .../leaves/replay/BukkitRecorderOption.java | 18 ++++ .../features/0021-Leaves-Protocol-Core.patch | 5 +- .../features/0025-Leaves-Replay-Mod-API.patch | 8 +- 6 files changed, 82 insertions(+), 106 deletions(-) create mode 100644 leaf-api/src/main/java/org/leavesmc/leaves/entity/Photographer.java create mode 100644 leaf-api/src/main/java/org/leavesmc/leaves/entity/PhotographerManager.java create mode 100644 leaf-api/src/main/java/org/leavesmc/leaves/replay/BukkitRecorderOption.java diff --git a/leaf-api/paper-patches/features/0010-Leaves-Replay-Mod-API.patch b/leaf-api/paper-patches/features/0010-Leaves-Replay-Mod-API.patch index 0b9eac30..6a1a9e14 100644 --- a/leaf-api/paper-patches/features/0010-Leaves-Replay-Mod-API.patch +++ b/leaf-api/paper-patches/features/0010-Leaves-Replay-Mod-API.patch @@ -38,101 +38,3 @@ index 50984d397d9ff98e82d02efc166aba61f645e491..a1b76899a416b997c6844bcaf837219c + @NotNull org.leavesmc.leaves.entity.PhotographerManager getPhotographerManager(); + // Leaves end - Photographer API } -diff --git a/src/main/java/org/leavesmc/leaves/entity/Photographer.java b/src/main/java/org/leavesmc/leaves/entity/Photographer.java -new file mode 100644 -index 0000000000000000000000000000000000000000..5b564dfd8aa882d0dc8b1833a4b46e1bba699876 ---- /dev/null -+++ b/src/main/java/org/leavesmc/leaves/entity/Photographer.java -@@ -0,0 +1,27 @@ -+package org.leavesmc.leaves.entity; -+ -+import org.bukkit.entity.Player; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ -+import java.io.File; -+ -+public interface Photographer extends Player { -+ -+ @NotNull -+ public String getId(); -+ -+ public void setRecordFile(@NotNull File file); -+ -+ public void stopRecording(); -+ -+ public void stopRecording(boolean async); -+ -+ public void stopRecording(boolean async, boolean save); -+ -+ public void pauseRecording(); -+ -+ public void resumeRecording(); -+ -+ public void setFollowPlayer(@Nullable Player player); -+} -\ No newline at end of file -diff --git a/src/main/java/org/leavesmc/leaves/entity/PhotographerManager.java b/src/main/java/org/leavesmc/leaves/entity/PhotographerManager.java -new file mode 100644 -index 0000000000000000000000000000000000000000..ccb19e75748803eb9ad356ffcd0ccfd5145ed776 ---- /dev/null -+++ b/src/main/java/org/leavesmc/leaves/entity/PhotographerManager.java -@@ -0,0 +1,32 @@ -+package org.leavesmc.leaves.entity; -+ -+import org.bukkit.Location; -+import org.bukkit.util.Consumer; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+import org.leavesmc.leaves.replay.BukkitRecorderOption; -+ -+import java.util.Collection; -+import java.util.UUID; -+ -+public interface PhotographerManager { -+ @Nullable -+ public Photographer getPhotographer(@NotNull UUID uuid); -+ -+ @Nullable -+ public Photographer getPhotographer(@NotNull String id); -+ -+ @Nullable -+ public Photographer createPhotographer(@NotNull String id, @NotNull Location location); -+ -+ @Nullable -+ public Photographer createPhotographer(@NotNull String id, @NotNull Location location, @NotNull BukkitRecorderOption recorderOption); -+ -+ public void removePhotographer(@NotNull String id); -+ -+ public void removePhotographer(@NotNull UUID uuid); -+ -+ public void removeAllPhotographers(); -+ -+ public Collection getPhotographers(); -+} -\ No newline at end of file -diff --git a/src/main/java/org/leavesmc/leaves/replay/BukkitRecorderOption.java b/src/main/java/org/leavesmc/leaves/replay/BukkitRecorderOption.java -new file mode 100644 -index 0000000000000000000000000000000000000000..c985721bdf6be0b8a154e7abfd50e0168965a8d1 ---- /dev/null -+++ b/src/main/java/org/leavesmc/leaves/replay/BukkitRecorderOption.java -@@ -0,0 +1,18 @@ -+package org.leavesmc.leaves.replay; -+ -+public class BukkitRecorderOption { -+ -+ // public int recordDistance = -1; -+ public String serverName = "Leaf"; -+ public BukkitRecordWeather forceWeather = BukkitRecordWeather.NULL; -+ public int forceDayTime = -1; -+ public boolean ignoreChat = false; -+ // public boolean ignoreItem = false; -+ -+ public enum BukkitRecordWeather { -+ CLEAR, -+ RAIN, -+ THUNDER, -+ NULL -+ } -+} -\ No newline at end of file diff --git a/leaf-api/src/main/java/org/leavesmc/leaves/entity/Photographer.java b/leaf-api/src/main/java/org/leavesmc/leaves/entity/Photographer.java new file mode 100644 index 00000000..cc4226c5 --- /dev/null +++ b/leaf-api/src/main/java/org/leavesmc/leaves/entity/Photographer.java @@ -0,0 +1,27 @@ +package org.leavesmc.leaves.entity; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.File; + +public interface Photographer extends Player { + + @NotNull + public String getId(); + + public void setRecordFile(@NotNull File file); + + public void stopRecording(); + + public void stopRecording(boolean async); + + public void stopRecording(boolean async, boolean save); + + public void pauseRecording(); + + public void resumeRecording(); + + public void setFollowPlayer(@Nullable Player player); +} diff --git a/leaf-api/src/main/java/org/leavesmc/leaves/entity/PhotographerManager.java b/leaf-api/src/main/java/org/leavesmc/leaves/entity/PhotographerManager.java new file mode 100644 index 00000000..df01cd83 --- /dev/null +++ b/leaf-api/src/main/java/org/leavesmc/leaves/entity/PhotographerManager.java @@ -0,0 +1,32 @@ +package org.leavesmc.leaves.entity; + +import org.bukkit.Location; +import org.bukkit.util.Consumer; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.leavesmc.leaves.replay.BukkitRecorderOption; + +import java.util.Collection; +import java.util.UUID; + +public interface PhotographerManager { + @Nullable + public Photographer getPhotographer(@NotNull UUID uuid); + + @Nullable + public Photographer getPhotographer(@NotNull String id); + + @Nullable + public Photographer createPhotographer(@NotNull String id, @NotNull Location location); + + @Nullable + public Photographer createPhotographer(@NotNull String id, @NotNull Location location, @NotNull BukkitRecorderOption recorderOption); + + public void removePhotographer(@NotNull String id); + + public void removePhotographer(@NotNull UUID uuid); + + public void removeAllPhotographers(); + + public Collection getPhotographers(); +} diff --git a/leaf-api/src/main/java/org/leavesmc/leaves/replay/BukkitRecorderOption.java b/leaf-api/src/main/java/org/leavesmc/leaves/replay/BukkitRecorderOption.java new file mode 100644 index 00000000..320e8bc0 --- /dev/null +++ b/leaf-api/src/main/java/org/leavesmc/leaves/replay/BukkitRecorderOption.java @@ -0,0 +1,18 @@ +package org.leavesmc.leaves.replay; + +public class BukkitRecorderOption { + + // public int recordDistance = -1; + public String serverName = "Leaves"; + public BukkitRecordWeather forceWeather = BukkitRecordWeather.NULL; + public int forceDayTime = -1; + public boolean ignoreChat = false; + // public boolean ignoreItem = false; + + public enum BukkitRecordWeather { + CLEAR, + RAIN, + THUNDER, + NULL + } +} diff --git a/leaf-server/minecraft-patches/features/0021-Leaves-Protocol-Core.patch b/leaf-server/minecraft-patches/features/0021-Leaves-Protocol-Core.patch index 416eeaa0..0eb4322b 100644 --- a/leaf-server/minecraft-patches/features/0021-Leaves-Protocol-Core.patch +++ b/leaf-server/minecraft-patches/features/0021-Leaves-Protocol-Core.patch @@ -3,13 +3,10 @@ From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Tue, 26 Sep 2023 19:00:41 +0800 Subject: [PATCH] Leaves: Protocol Core -TODO: Check whether Leaves's Return-nether-portal-fix.patch improves performance -and change store way to sql maybe? - Original license: GPLv3 Original project: https://github.com/LeavesMC/Leaves -Commit: 99b3aafce1f162c68a771fe56d77f33648636b7d +Commit: f553c53e4230aa032e54a69b6479f1959ed24a60 diff --git a/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java b/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java index fb263fa1f30a7dfcb7ec2656abfb38e5fe88eac9..7e19dfe90a63ff26f03b95891dacb7360bba5a3c 100644 diff --git a/leaf-server/minecraft-patches/features/0025-Leaves-Replay-Mod-API.patch b/leaf-server/minecraft-patches/features/0025-Leaves-Replay-Mod-API.patch index 5e1529c6..2028715f 100644 --- a/leaf-server/minecraft-patches/features/0025-Leaves-Replay-Mod-API.patch +++ b/leaf-server/minecraft-patches/features/0025-Leaves-Replay-Mod-API.patch @@ -24,7 +24,7 @@ index 59c70c567051bc7dba0d308387352d1b15f3c842..e654387167cf3e9a88f0e62be940fe39 @Override diff --git a/net/minecraft/commands/arguments/selector/EntitySelector.java b/net/minecraft/commands/arguments/selector/EntitySelector.java -index b305ba9bab617bf4e52d0e6ddf160bacc5751a94..c9b4f00d5ccde83898ecf69efdbfee7a3f91b96d 100644 +index b305ba9bab617bf4e52d0e6ddf160bacc5751a94..eca2fe2222d0004b4e33b72f8ac0c0ced77b2d62 100644 --- a/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/net/minecraft/commands/arguments/selector/EntitySelector.java @@ -128,11 +128,12 @@ public class EntitySelector { @@ -58,7 +58,7 @@ index b305ba9bab617bf4e52d0e6ddf160bacc5751a94..c9b4f00d5ccde83898ecf69efdbfee7a return this.sortAndLimit(vec3, list); } -@@ -192,27 +194,30 @@ public class EntitySelector { +@@ -192,27 +194,29 @@ public class EntitySelector { this.checkPermissions(source); if (this.playerName != null) { ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName); @@ -73,8 +73,8 @@ index b305ba9bab617bf4e52d0e6ddf160bacc5751a94..c9b4f00d5ccde83898ecf69efdbfee7a AABB absoluteAabb = this.getAbsoluteAabb(vec3); Predicate predicate = this.getPredicate(vec3, absoluteAabb, null); if (this.currentEntity) { -+ //return source.getEntity() instanceof ServerPlayer serverPlayer && predicate.test(serverPlayer) && !(serverPlayer instanceof org.leavesmc.leaves.replay.ServerPhotographer) && canSee(source, serverPlayer) ? List.of(serverPlayer) : List.of(); // Purpur - Hide hidden players from entity selector // Leaves - skip photographer - return source.getEntity() instanceof ServerPlayer serverPlayer && predicate.test(serverPlayer) && canSee(source, serverPlayer) ? List.of(serverPlayer) : List.of(); // Purpur - Hide hidden players from entity selector +- return source.getEntity() instanceof ServerPlayer serverPlayer && predicate.test(serverPlayer) && canSee(source, serverPlayer) ? List.of(serverPlayer) : List.of(); // Purpur - Hide hidden players from entity selector ++ return source.getEntity() instanceof ServerPlayer serverPlayer && !(serverPlayer instanceof org.leavesmc.leaves.replay.ServerPhotographer) && predicate.test(serverPlayer) && canSee(source, serverPlayer) ? List.of(serverPlayer) : List.of(); // Purpur - Hide hidden players from entity selector // Leaves - skip photographer } else { int resultLimit = this.getResultLimit(); List players;