From 6d58834bca80abc6ee121f344c528656116d707b Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Sun, 15 Jun 2025 08:52:32 +0800 Subject: [PATCH] Finish API patches --- .../features/0013-Purpur-API-Changes.patch | 69 ++++++++---------- ...imings.patch => 0014-Remove-Timings.patch} | 10 +-- ...patch => 0015-KeYi-Player-Skull-API.patch} | 10 +-- ...atch => 0016-Slice-Smooth-Teleports.patch} | 2 +- ...figurable-LibraryLoader-maven-repos.patch} | 0 .../features/0018-Leaves-Replay-Mod-API.patch | 4 +- ... => 0019-Async-structure-locate-api.patch} | 2 +- ...> 0020-PlayerInventoryOverflowEvent.patch} | 0 ...1-Raytrace-AntiXray-SDK-integration.patch} | 0 ...095-Pufferfish-Optimize-mob-spawning.patch | 24 +++---- ...fferfish-Dynamic-Activation-of-Brain.patch | 70 +++++++++---------- ...tle-goal-selector-during-inactive-ti.patch | 4 +- 12 files changed, 93 insertions(+), 102 deletions(-) rename leaf-api/paper-patches/features/{0013-Remove-Timings.patch => 0014-Remove-Timings.patch} (99%) rename leaf-api/paper-patches/features/{0014-KeYi-Player-Skull-API.patch => 0015-KeYi-Player-Skull-API.patch} (80%) rename leaf-api/paper-patches/features/{0015-Slice-Smooth-Teleports.patch => 0016-Slice-Smooth-Teleports.patch} (95%) rename leaf-api/paper-patches/features/{0016-Configurable-LibraryLoader-maven-repos.patch => 0017-Configurable-LibraryLoader-maven-repos.patch} (100%) rename leaf-api/paper-patches/features/{0017-Async-structure-locate-api.patch => 0019-Async-structure-locate-api.patch} (97%) rename leaf-api/paper-patches/features/{0018-PlayerInventoryOverflowEvent.patch => 0020-PlayerInventoryOverflowEvent.patch} (100%) rename leaf-api/paper-patches/features/{0019-Raytrace-AntiXray-SDK-integration.patch => 0021-Raytrace-AntiXray-SDK-integration.patch} (100%) 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 e9f0a5fa..7d6ccd7b 100644 --- a/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch +++ b/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch @@ -1,12 +1,12 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Github Actions -Date: Sun, 6 Apr 2025 06:33:23 +0000 +Date: Fri, 13 Jun 2025 14:00:12 +0000 Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: aa289e2c6ff801551fb2f585269ccffed3a154fa +Commit: 25d39e94edc23f338ee659655ab532ffb0d7e276 Patches listed below are removed in this patch, They exists in Gale or Leaf: * "co/aikar/timings/TimedEventExecutor.java.patch" @@ -21,10 +21,10 @@ Patches listed below are removed in this patch, They exists in Gale or Leaf: * "org/spigotmc/CustomTimingsHandler.java.patch" diff --git a/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 12207256ae0fa5f2f822116cd22f1a1250e6ee1c..07a9ccf572e514047a5af7071b9270d2ed9c1c72 100644 +index 5b798fc97824a620796289e4000aa68a866f8c85..23289f28bc95fdba6a9f02a442fc350f59e190f1 100644 --- a/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -@@ -441,6 +441,26 @@ public interface VanillaGoal extends Goal { +@@ -446,6 +446,26 @@ public interface VanillaGoal extends Goal { GoalKey ZOMBIE_ATTACK_TURTLE_EGG = create("zombie_attack_turtle_egg", Zombie.class); @@ -52,10 +52,10 @@ index 12207256ae0fa5f2f822116cd22f1a1250e6ee1c..07a9ccf572e514047a5af7071b9270d2 return GoalKey.of(type, NamespacedKey.minecraft(key)); } diff --git a/src/main/java/io/papermc/paper/ServerBuildInfo.java b/src/main/java/io/papermc/paper/ServerBuildInfo.java -index f738bbcefe288474c5f591dda03d713850633854..5c10ab3deb359bd0045ba5999bcbce19a7949eaa 100644 +index f738bbcefe288474c5f591dda03d713850633854..c198304386e83edc2ec582fdf66d97d624004771 100644 --- a/src/main/java/io/papermc/paper/ServerBuildInfo.java +++ b/src/main/java/io/papermc/paper/ServerBuildInfo.java -@@ -19,6 +19,12 @@ public interface ServerBuildInfo { +@@ -19,6 +19,13 @@ public interface ServerBuildInfo { */ Key BRAND_PAPER_ID = Key.key("papermc", "paper"); @@ -65,6 +65,7 @@ index f738bbcefe288474c5f591dda03d713850633854..5c10ab3deb359bd0045ba5999bcbce19 + */ + Key BRAND_PURPUR_ID = Key.key("purpurmc", "purpur"); + // Purpur end ++ // Leaf start - Rebrand /** * The brand id for Gale. @@ -289,10 +290,10 @@ index 918a045165cdcde264bc24082b7afebb407271de..f283bcabff7fe6eede6cf4344537e430 + // Purpur end - ChatColor conveniences } diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 5a1b9f81830dee052bafd743f4a1bf0c39288c7a..cf8fd9a981c7fbaa304988df17233ccf40d6829e 100644 +index 6a559381d4a08f61eea93b925fc65ce657300a24..c95849d9ab1b6182704b5eca2c475f91c81275ca 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -3616,4 +3616,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla +@@ -3636,4 +3636,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla return this.asItemType().getDefaultDataTypes(); } // Paper end - data component API @@ -443,7 +444,7 @@ index 6f83097b1097d0ffa81a95e6f0300cb410dfee2b..c1f19d5c1b819873fce1185b4fbf4c72 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931ce1158d2 100644 +index e8f192bad2ffa3cb1c5217293420a863d57b5377..2557e141f4c8074a810a28f443903381e60a5d8f 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -2432,6 +2432,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @@ -465,7 +466,7 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 // Leaf start - Leaf config - API @NotNull public org.bukkit.configuration.file.YamlConfiguration getLeafConfig() -@@ -2801,4 +2813,121 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2801,4 +2813,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ long getLastTickOversleepTime(); // Gale end - YAPFA - last tick time - API @@ -473,7 +474,6 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + // Purpur start - Bring back server name + /** + * Get the name of this server -+ * + * @return the name of the server + */ + @NotNull @@ -481,7 +481,6 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + // Purpur end - Bring back server name + + // Purpur start - Lagging threshold -+ + /** + * Check if server is lagging according to laggy threshold setting + * @@ -491,7 +490,6 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + // Purpur end - Lagging threshold + + // Purpur start - Added the ability to add combustible items -+ + /** + * Add an Item as fuel for furnaces + * @@ -509,12 +507,10 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + // Purpur end - Added the ability to add combustible items + + // Purpur start - Debug Marker API -+ + /** + * Creates debug block highlight on specified block location and show it to all players on the server. + *

+ * Clients may be inconsistent in displaying it. -+ * + * @param location Location to highlight + * @param duration Duration for highlight to show in milliseconds + */ @@ -524,10 +520,9 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + * Creates debug block highlight on specified block location and show it to all players on the server. + *

+ * Clients may be inconsistent in displaying it. -+ * + * @param location Location to highlight + * @param duration Duration for highlight to show in milliseconds -+ * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client ++ * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client + */ + void sendBlockHighlight(@NotNull Location location, int duration, int argb); + @@ -535,10 +530,9 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + * Creates debug block highlight on specified block location and show it to all players on the server. + *

+ * Clients may be inconsistent in displaying it. -+ * + * @param location Location to highlight + * @param duration Duration for highlight to show in milliseconds -+ * @param text Text to show above the highlight ++ * @param text Text to show above the highlight + */ + void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text); + @@ -546,11 +540,10 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + * Creates debug block highlight on specified block location and show it to all players on the server. + *

+ * Clients may be inconsistent in displaying it. -+ * + * @param location Location to highlight + * @param duration Duration for highlight to show in milliseconds -+ * @param text Text to show above the highlight -+ * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client ++ * @param text Text to show above the highlight ++ * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client + */ + void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text, int argb); + @@ -558,10 +551,9 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + * Creates debug block highlight on specified block location and show it to all players on the server. + *

+ * Clients may be inconsistent in displaying it. -+ * -+ * @param location Location to highlight -+ * @param duration Duration for highlight to show in milliseconds -+ * @param color Color of the highlight. Will be ignored on some versions of vanilla client ++ * @param location Location to highlight ++ * @param duration Duration for highlight to show in milliseconds ++ * @param color Color of the highlight. Will be ignored on some versions of vanilla client + * @param transparency Transparency of the highlight + * @throws IllegalArgumentException If transparency is outside 0-255 range + */ @@ -571,11 +563,10 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + * Creates debug block highlight on specified block location and show it to all players on the server. + *

+ * Clients may be inconsistent in displaying it. -+ * -+ * @param location Location to highlight -+ * @param duration Duration for highlight to show in milliseconds -+ * @param text Text to show above the highlight -+ * @param color Color of the highlight. Will be ignored on some versions of vanilla client ++ * @param location Location to highlight ++ * @param duration Duration for highlight to show in milliseconds ++ * @param text Text to show above the highlight ++ * @param color Color of the highlight. Will be ignored on some versions of vanilla client + * @param transparency Transparency of the highlight + * @throws IllegalArgumentException If transparency is outside 0-255 range + */ @@ -588,10 +579,10 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..002c998368dea33872d65beb79eb4931 + // Purpur end - Debug Marker API } diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index a8b64f78bf3c453094074b4b4d3c8fd07b9eb273..d0c2ff65893c1fd3903633ebc24aae879dc91f10 100644 +index 04a1379f5fe281ab72610d2f8f18e1355fe3a134..f75b76bf5c0025d4f74037de435d9cb1aa8defee 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4290,6 +4290,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4308,6 +4308,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); @@ -811,7 +802,7 @@ index 332c55fd6b4b3a8c0cad920a6e765ecc40e684e4..10a8d64ad2da0be2c14f34c3e7d1957c // Paper start /** diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 66a31c5d83b78dddb43e70cfd5ce7c7fb8a551b6..b6ee04873c1ee57f7e8804f6d247806f2c0e448f 100644 +index 0aa51b777fd28444b53ccc74362798553954c52d..a3d2013adf038f1fe96127c5dba442ffd2e031a8 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -1261,4 +1261,59 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent @@ -1170,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 4d88bb2eaa43709fb6103a6f77d8c01e83bfe743..bb3773e002ebcfd8eced792bf0236c4cfbae8663 100644 +index b86ef7cb610f8f9bc1b5f5d5c5f637e04291aeb4..5c5e4db7f70acb3ade10b4ee8ad20fc425e819a8 100644 --- a/src/main/java/org/bukkit/entity/Villager.java +++ b/src/main/java/org/bukkit/entity/Villager.java -@@ -408,4 +408,13 @@ public interface Villager extends AbstractVillager { - * Demand is still updated even if all events are canceled. +@@ -391,4 +391,13 @@ public interface Villager extends AbstractVillager { + * reputation regardless of its impact and the player associated. */ - public void restock(); + public void clearReputations(); + + // Purpur start + /** @@ -1213,7 +1204,7 @@ index 11ae1b3ad8c215f9245945d223c52f4a62ac47d9..7f23eb5a60ff08fb31e8ba3731a43bd7 + // Purpur end } diff --git a/src/main/java/org/bukkit/entity/Wolf.java b/src/main/java/org/bukkit/entity/Wolf.java -index a6414ffc4a6d8ebef3486abc877688507e34e5c8..ade8b061f0a3d94f990e997659d5ad32aa1631c4 100644 +index 693bc63cb9a4f27e04882ad817f4abfed1b2ff42..d759f26564732596ee58a98403870a53a1089717 100644 --- a/src/main/java/org/bukkit/entity/Wolf.java +++ b/src/main/java/org/bukkit/entity/Wolf.java @@ -163,4 +163,20 @@ public interface Wolf extends Tameable, Sittable, io.papermc.paper.entity.Collar diff --git a/leaf-api/paper-patches/features/0013-Remove-Timings.patch b/leaf-api/paper-patches/features/0014-Remove-Timings.patch similarity index 99% rename from leaf-api/paper-patches/features/0013-Remove-Timings.patch rename to leaf-api/paper-patches/features/0014-Remove-Timings.patch index 7753529c..f03ab68e 100644 --- a/leaf-api/paper-patches/features/0013-Remove-Timings.patch +++ b/leaf-api/paper-patches/features/0014-Remove-Timings.patch @@ -2861,7 +2861,7 @@ index 59fada9b1eb78238d280c6bbb711f52facba52c6..eb4d78c6111a530d015a0b91d14c40ad 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 4acda947b7d69ab4133b4cc94e76d945e4d148d5..737e96a7ce91d65a4899873b681e421207ecd76c 100644 +index 613a0bad5c07cf14098218652eba1f4deaf77c6d..25a0414cc9482925ad0426dde57e65012d62e637 100644 --- a/src/main/java/org/bukkit/command/SimpleCommandMap.java +++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java @@ -32,7 +32,6 @@ public class SimpleCommandMap implements CommandMap { @@ -2880,9 +2880,9 @@ index 4acda947b7d69ab4133b4cc94e76d945e4d148d5..737e96a7ce91d65a4899873b681e4212 label = label.toLowerCase(Locale.ROOT).trim(); fallbackPrefix = fallbackPrefix.toLowerCase(Locale.ROOT).trim(); boolean registered = register(label, command, false, fallbackPrefix); -@@ -146,23 +144,13 @@ public class SimpleCommandMap implements CommandMap { - return false; - } +@@ -159,23 +157,13 @@ public class SimpleCommandMap implements CommandMap { + parsedArgs = event.getArgs(); + // Purpur end - ExecuteCommandEvent - // Paper start - Plugins do weird things to workaround normal registration - if (target.timings == null) { @@ -2893,7 +2893,7 @@ index 4acda947b7d69ab4133b4cc94e76d945e4d148d5..737e96a7ce91d65a4899873b681e4212 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) - target.execute(sender, sentCommandLabel, Arrays.copyOfRange(args, 1, args.length)); + target.execute(sender, sentCommandLabel, parsedArgs); // Purpur - ExecuteCommandEvent - } // target.timings.stopTiming(); // Spigot // Paper } catch (CommandException ex) { server.getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper diff --git a/leaf-api/paper-patches/features/0014-KeYi-Player-Skull-API.patch b/leaf-api/paper-patches/features/0015-KeYi-Player-Skull-API.patch similarity index 80% rename from leaf-api/paper-patches/features/0014-KeYi-Player-Skull-API.patch rename to leaf-api/paper-patches/features/0015-KeYi-Player-Skull-API.patch index e42dcc49..24bb7dec 100644 --- a/leaf-api/paper-patches/features/0014-KeYi-Player-Skull-API.patch +++ b/leaf-api/paper-patches/features/0015-KeYi-Player-Skull-API.patch @@ -7,13 +7,13 @@ Original license: MIT Original project: https://github.com/KeYiMC/KeYi diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index c44453789834c544b0e78b52bb9b09ffbd5958fb..36209081ad96bfd2f44e9aa150e8eb4d3527b988 100644 +index d4082cd6dae07958ace3b9e9769ccb7da4c2a828..d17f7881e55d61c2137f29d0b903016958b05b5d 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3935,4 +3935,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM - * @param score New death screen score of player - */ - void setDeathScreenScore(int score); +@@ -4054,4 +4054,23 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM + sendDeathScreen(message); + } + // Purpur end + + // Leaf start - KeYi - Player Skull API + /** diff --git a/leaf-api/paper-patches/features/0015-Slice-Smooth-Teleports.patch b/leaf-api/paper-patches/features/0016-Slice-Smooth-Teleports.patch similarity index 95% rename from leaf-api/paper-patches/features/0015-Slice-Smooth-Teleports.patch rename to leaf-api/paper-patches/features/0016-Slice-Smooth-Teleports.patch index 1858fa33..97fe3d3d 100644 --- a/leaf-api/paper-patches/features/0015-Slice-Smooth-Teleports.patch +++ b/leaf-api/paper-patches/features/0016-Slice-Smooth-Teleports.patch @@ -9,7 +9,7 @@ Original project: https://github.com/Cryptite/Slice Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 36209081ad96bfd2f44e9aa150e8eb4d3527b988..431435c9666b000197722a36d3a7b8999025e2b5 100644 +index d17f7881e55d61c2137f29d0b903016958b05b5d..09f70aa4d206a1b7fc5f3274f34c6885a9e2d60d 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -3716,6 +3716,33 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM diff --git a/leaf-api/paper-patches/features/0016-Configurable-LibraryLoader-maven-repos.patch b/leaf-api/paper-patches/features/0017-Configurable-LibraryLoader-maven-repos.patch similarity index 100% rename from leaf-api/paper-patches/features/0016-Configurable-LibraryLoader-maven-repos.patch rename to leaf-api/paper-patches/features/0017-Configurable-LibraryLoader-maven-repos.patch diff --git a/leaf-api/paper-patches/features/0018-Leaves-Replay-Mod-API.patch b/leaf-api/paper-patches/features/0018-Leaves-Replay-Mod-API.patch index ae56bc5a..84136937 100644 --- a/leaf-api/paper-patches/features/0018-Leaves-Replay-Mod-API.patch +++ b/leaf-api/paper-patches/features/0018-Leaves-Replay-Mod-API.patch @@ -26,10 +26,10 @@ index 98cfd68226494dbb1a2eaa6680e23a76c2129a62..0f8a1b82dc9d3f4911a0aaa092ef0638 + // Leaves end - Photographer API } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 002c998368dea33872d65beb79eb4931ce1158d2..b11bd139e2ca7015207145c022b5822e184d8fd0 100644 +index 2557e141f4c8074a810a28f443903381e60a5d8f..680009900f2e82a498b43bea8d73c88ae1fcfc2f 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2930,4 +2930,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2920,4 +2920,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ void clearBlockHighlights(); // Purpur end - Debug Marker API diff --git a/leaf-api/paper-patches/features/0017-Async-structure-locate-api.patch b/leaf-api/paper-patches/features/0019-Async-structure-locate-api.patch similarity index 97% rename from leaf-api/paper-patches/features/0017-Async-structure-locate-api.patch rename to leaf-api/paper-patches/features/0019-Async-structure-locate-api.patch index 52b985bf..d144d14c 100644 --- a/leaf-api/paper-patches/features/0017-Async-structure-locate-api.patch +++ b/leaf-api/paper-patches/features/0019-Async-structure-locate-api.patch @@ -9,7 +9,7 @@ Added some asynchronous structure locate methods in World, requires async-locator to be enabled in Leaf config, or else it will fall back to sync methods. diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 04a1379f5fe281ab72610d2f8f18e1355fe3a134..37c0ea84ffac85bab6344a46abe6a79d20566bda 100644 +index f75b76bf5c0025d4f74037de435d9cb1aa8defee..0f1a6ac47c1b6d66d611a4c9bb0198b07d3e7a1c 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java @@ -4102,6 +4102,60 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient diff --git a/leaf-api/paper-patches/features/0018-PlayerInventoryOverflowEvent.patch b/leaf-api/paper-patches/features/0020-PlayerInventoryOverflowEvent.patch similarity index 100% rename from leaf-api/paper-patches/features/0018-PlayerInventoryOverflowEvent.patch rename to leaf-api/paper-patches/features/0020-PlayerInventoryOverflowEvent.patch diff --git a/leaf-api/paper-patches/features/0019-Raytrace-AntiXray-SDK-integration.patch b/leaf-api/paper-patches/features/0021-Raytrace-AntiXray-SDK-integration.patch similarity index 100% rename from leaf-api/paper-patches/features/0019-Raytrace-AntiXray-SDK-integration.patch rename to leaf-api/paper-patches/features/0021-Raytrace-AntiXray-SDK-integration.patch diff --git a/leaf-server/minecraft-patches/features/0095-Pufferfish-Optimize-mob-spawning.patch b/leaf-server/minecraft-patches/features/0095-Pufferfish-Optimize-mob-spawning.patch index cc8eca55..9fd98e57 100644 --- a/leaf-server/minecraft-patches/features/0095-Pufferfish-Optimize-mob-spawning.patch +++ b/leaf-server/minecraft-patches/features/0095-Pufferfish-Optimize-mob-spawning.patch @@ -22,18 +22,18 @@ and, in my opinion, worth the low risk of minor mob-spawning-related inconsistencies. diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index c1b3d2b4c56b657ff51c8b27b4b80e0c0d01ddbe..18a0bf81562f61fd6ede72d51d836ae28e9226c3 100644 +index d1f79b29bc56afe62503f8b3caf0b7bf443add9e..74f760cf52fa16a5e023ca348dadc9dbb761497d 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -285,6 +285,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation + public gg.pufferfish.pufferfish.util.AsyncExecutor mobSpawnExecutor = new gg.pufferfish.pufferfish.util.AsyncExecutor("MobSpawning"); // Pufferfish - optimize mob spawning public static S spin(Function threadFunction) { - AtomicReference atomicReference = new AtomicReference<>(); -@@ -1046,6 +1047,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop filteredSpawningCategories; -@@ -557,7 +612,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -558,7 +613,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } // Paper end - PlayerNaturallySpawnCreaturesEvent boolean flag = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && this.level.getLevelData().getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit @@ -159,7 +159,7 @@ index 3d7d336c2043b533012ee390e6da02ac4f64e1f2..e67196b815dad6baa823822285cff838 } else { filteredSpawningCategories = List.of(); } -@@ -572,7 +627,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -573,7 +628,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon // Paper end - chunk tick iteration optimisation for (LevelChunk levelChunk : list) { @@ -168,7 +168,7 @@ index 3d7d336c2043b533012ee390e6da02ac4f64e1f2..e67196b815dad6baa823822285cff838 } } finally { list.clear(); -@@ -592,7 +647,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -593,7 +648,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } if (!spawnCategories.isEmpty()) { diff --git a/leaf-server/minecraft-patches/features/0096-Pufferfish-Dynamic-Activation-of-Brain.patch b/leaf-server/minecraft-patches/features/0096-Pufferfish-Dynamic-Activation-of-Brain.patch index f6d2ac4f..71c0dcd7 100644 --- a/leaf-server/minecraft-patches/features/0096-Pufferfish-Dynamic-Activation-of-Brain.patch +++ b/leaf-server/minecraft-patches/features/0096-Pufferfish-Dynamic-Activation-of-Brain.patch @@ -32,10 +32,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/io/papermc/paper/entity/activation/ActivationRange.java b/io/papermc/paper/entity/activation/ActivationRange.java -index bdbbbc5e0c06c71584e7514623d0c8be168befd7..f3ca86e09a4a076d143fb21eac529967ff004df4 100644 +index 63ff39f3db2e695c8a14b021045c17f6d3d2f23d..3c3fe6d2e46a811932143a782bb50f9a7c87c4d2 100644 --- a/io/papermc/paper/entity/activation/ActivationRange.java +++ b/io/papermc/paper/entity/activation/ActivationRange.java -@@ -173,6 +173,22 @@ public final class ActivationRange { +@@ -179,6 +179,22 @@ public final class ActivationRange { } ActivationRange.activateEntity(entity); @@ -58,7 +58,7 @@ index bdbbbc5e0c06c71584e7514623d0c8be168befd7..f3ca86e09a4a076d143fb21eac529967 } } } -@@ -184,11 +200,11 @@ public final class ActivationRange { +@@ -190,11 +206,11 @@ public final class ActivationRange { */ private static void activateEntity(final Entity entity) { if (MinecraftServer.currentTick > entity.activatedTick) { @@ -73,10 +73,10 @@ index bdbbbc5e0c06c71584e7514623d0c8be168befd7..f3ca86e09a4a076d143fb21eac529967 } } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index d99ac6eb59e10ff6af841c4496ee46fbfbf57c22..074869245407abb32775b17140e1ffadabc5fcd5 100644 +index ad114ca013e0d09d40755acbe916586868a519ed..3f70fca36f67fa421314ff92d372a97112a19025 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -771,6 +771,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -775,6 +775,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.entityTickList .forEach( entity -> { @@ -85,10 +85,10 @@ index d99ac6eb59e10ff6af841c4496ee46fbfbf57c22..074869245407abb32775b17140e1ffad if (!tickRateManager.isEntityFrozen(entity)) { entity.checkDespawn(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 8508f4b94f3e4532ce36baff4e68189540b0b59a..8370be95e4f0d1d3b99274fea415f77845ad5712 100644 +index e457dc20f76d813c32225733af0b29646d501202..57e669eeb2a05805b8ed81311344bc27292608f3 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -343,6 +343,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -364,6 +364,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public boolean fixedPose = false; // Paper - Expand Pose API private final int despawnTime; // Paper - entity despawn time limit public int totalEntityAge; // Paper - age-like counter for all entities @@ -98,10 +98,10 @@ index 8508f4b94f3e4532ce36baff4e68189540b0b59a..8370be95e4f0d1d3b99274fea415f778 // Paper start - EAR 2 public final boolean defaultActivationState; diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java -index ed11697d81789ee6cd48ee2de2c9fcb8ff2be0d4..a1379aa8eaf84868ceb8b3762f7ca3b87a2d7785 100644 +index b87c6da5272becfa1159e8352f5be5491824f66f..9dc5a7e9fdb83d98c3554fea064b06f022da4496 100644 --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java -@@ -1075,6 +1075,7 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -1085,6 +1085,7 @@ public class EntityType implements FeatureElement, EntityTypeT private final boolean canSpawnFarFromPlayer; private final int clientTrackingRange; private final int updateInterval; @@ -110,10 +110,10 @@ index ed11697d81789ee6cd48ee2de2c9fcb8ff2be0d4..a1379aa8eaf84868ceb8b3762f7ca3b8 @Nullable private Component description; diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 6cc000611dc58a5487034ad87af4156059dd37d7..7e466022af0f023b409462ed4d4f3a8aa80c4183 100644 +index dcea538d00d3751b887c71450026ce2ced0093b1..968422c673e23774f6b162ed9cdb02b9bb67f9a8 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -205,10 +205,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -208,10 +208,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @Override public void inactiveTick() { super.inactiveTick(); @@ -126,7 +126,7 @@ index 6cc000611dc58a5487034ad87af4156059dd37d7..7e466022af0f023b409462ed4d4f3a8a this.targetSelector.tick(); } } -@@ -717,10 +717,14 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -734,10 +734,14 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.sensing.tick(); int i = this.tickCount + this.getId(); if (i % 2 != 0 && this.tickCount > 1) { @@ -159,10 +159,10 @@ index f6c673b1abe53afcb14fd68d590431027ed29f67..21deb221b87ecb70c8a0dc963ab79124 } } diff --git a/net/minecraft/world/entity/ai/goal/GoalSelector.java b/net/minecraft/world/entity/ai/goal/GoalSelector.java -index b816b2de8eb327060ca6ea7c4afc17373fa77ff6..e82e32407cec6109b9c3b0106295217f4a3f4aa2 100644 +index 653c58c7637c46c8b46a5082f671324a2221d431..55f1c138039b80894f655d180192f5cb95e32778 100644 --- a/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -36,9 +36,13 @@ public class GoalSelector { +@@ -34,9 +34,13 @@ public class GoalSelector { } // Paper start - EAR 2 @@ -179,10 +179,10 @@ index b816b2de8eb327060ca6ea7c4afc17373fa77ff6..e82e32407cec6109b9c3b0106295217f public boolean hasTasks() { diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java -index fc2290a62c0a01cfa3143e77384f30e17d94f039..2ab261bba5f9e0babfc9072afd2ebbee0536041c 100644 +index de3bf0b62371f06ecb5d2035638e352ca0c06182..69500fa0b207fc3d5b1bc2bd665fa39f6725d23d 100644 --- a/net/minecraft/world/entity/animal/allay/Allay.java +++ b/net/minecraft/world/entity/animal/allay/Allay.java -@@ -237,8 +237,10 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -222,8 +222,10 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS return 0.4F; } @@ -194,10 +194,10 @@ index fc2290a62c0a01cfa3143e77384f30e17d94f039..2ab261bba5f9e0babfc9072afd2ebbee AllayAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index d3d4d8b025480f9e2202157591319df3af43f9de..f54b854adedd58a37b5c38c63abc3fc94ed9ba80 100644 +index 6a5e9e9582e322aaa1555933de97e545ba74f8f4..3475ecbd95fac6c6b6e792a23cb15cdb3395985f 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -323,8 +323,10 @@ public class Axolotl extends Animal implements Bucketable { +@@ -325,8 +325,10 @@ public class Axolotl extends Animal implements Bucketable { return true; } @@ -209,11 +209,11 @@ index d3d4d8b025480f9e2202157591319df3af43f9de..f54b854adedd58a37b5c38c63abc3fc9 AxolotlAi.updateActivity(this); if (!this.isNoAi()) { diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index fdf40dc10aad108db6ca68fcfec9ecf48f76a9c1..bd80e58179fe577693fa419a77989b0db39abb04 100644 +index b8703409dd3dc8e3020ed81b44ce4812984c88c3..f5c9ef8909f3852fc7a203265ae057232fa403ad 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java -@@ -199,8 +199,10 @@ public class Frog extends Animal { - VariantUtils.readVariant(compound, this.registryAccess(), Registries.FROG_VARIANT).ifPresent(this::setVariant); +@@ -200,8 +200,10 @@ public class Frog extends Animal { + VariantUtils.readVariant(input, Registries.FROG_VARIANT).ifPresent(this::setVariant); } + private int behaviorTick = 0; // Pufferfish @@ -224,10 +224,10 @@ index fdf40dc10aad108db6ca68fcfec9ecf48f76a9c1..bd80e58179fe577693fa419a77989b0d FrogAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java -index faaa8197e8421c2bbdc2a8bbaae4f4d0820dbbe7..72c4403a4b5fa817f91dbcd842d4b7939a4834ab 100644 +index c1510a6f1146f446ed65a1f08984af6c29de439a..5392cb211a3dc841ab38710a4ef688bde7fbe067 100644 --- a/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -94,8 +94,10 @@ public class Tadpole extends AbstractFish { +@@ -96,8 +96,10 @@ public class Tadpole extends AbstractFish { return SoundEvents.TADPOLE_FLOP; } @@ -239,10 +239,10 @@ index faaa8197e8421c2bbdc2a8bbaae4f4d0820dbbe7..72c4403a4b5fa817f91dbcd842d4b793 TadpoleAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 9047e75a5edf9fec2b73aec272284d8003793eaa..048e62b361e33b3edd5122fd4a47c5627491bcaf 100644 +index bdac4929db71a39fc02985109cedc9cd316ec3cc..2a72d7f422c340dabef11a6dc680358207bee637 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -185,8 +185,10 @@ public class Goat extends Animal { +@@ -186,8 +186,10 @@ public class Goat extends Animal { return (Brain)super.getBrain(); } @@ -254,10 +254,10 @@ index 9047e75a5edf9fec2b73aec272284d8003793eaa..048e62b361e33b3edd5122fd4a47c562 GoatAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 2989add9a4746646f06ec3f6c386ac5df4a64726..6691dc90c35d05a7c28c4e3ac887ed9d3bb88de9 100644 +index bde6f9d9d1cc7a5ee8334ee9207afae304ddcfa9..084f82a7baaa309aa80cc33b4c01e54cf6da4b42 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -157,8 +157,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -158,8 +158,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return (Brain)super.getBrain(); } @@ -269,10 +269,10 @@ index 2989add9a4746646f06ec3f6c386ac5df4a64726..6691dc90c35d05a7c28c4e3ac887ed9d HoglinAi.updateActivity(this); if (this.isConverting()) { diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 27052ded60db7c3916de3f4c8b48227f53fd7249..634c518c105c8dc50838a4a6690641d82fd637fb 100644 +index 689f200554d8c03313b3d194f209c527f315c29a..3e6cbf0166486995f7adcbd7b99a8b8c919956cd 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -315,8 +315,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -316,8 +316,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento return !this.cannotHunt; } @@ -284,10 +284,10 @@ index 27052ded60db7c3916de3f4c8b48227f53fd7249..634c518c105c8dc50838a4a6690641d8 PiglinAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/monster/warden/Warden.java b/net/minecraft/world/entity/monster/warden/Warden.java -index 67fdcbe05e8d5f4000255f753565591825f54f67..42ca4243d86ef4a14a9ce70da4b79f6c8eeb3a7d 100644 +index dd6666bd8b8df4148a1557627ce2a6ddab245ed6..6a9d3b749e251d3dac6fda13318bf5a0bf21f82b 100644 --- a/net/minecraft/world/entity/monster/warden/Warden.java +++ b/net/minecraft/world/entity/monster/warden/Warden.java -@@ -277,8 +277,10 @@ public class Warden extends Monster implements VibrationSystem { +@@ -275,8 +275,10 @@ public class Warden extends Monster implements VibrationSystem { } } @@ -299,10 +299,10 @@ index 67fdcbe05e8d5f4000255f753565591825f54f67..42ca4243d86ef4a14a9ce70da4b79f6c super.customServerAiStep(level); if ((this.tickCount + this.getId()) % 120 == 0) { diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index c62eee45d661b6f9d2b862a709b4d23645ed41e6..202bcb28218b0d9a2a5e211fee173ecd5f625896 100644 +index 73214ccad93ccd186c149e8ce8913eb0e3fa324a..9b9514362f32ab79816678ce4be25a4a87fe49aa 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -177,6 +177,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -178,6 +178,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler (villager, poiType) -> poiType.is(PoiTypes.MEETING) ); @@ -311,7 +311,7 @@ index c62eee45d661b6f9d2b862a709b4d23645ed41e6..202bcb28218b0d9a2a5e211fee173ecd public Villager(EntityType entityType, Level level) { this(entityType, level, VillagerType.PLAINS); } -@@ -285,6 +287,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -286,6 +288,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Paper end - EAR 2 @@ -319,7 +319,7 @@ index c62eee45d661b6f9d2b862a709b4d23645ed41e6..202bcb28218b0d9a2a5e211fee173ecd @Override protected void customServerAiStep(ServerLevel level) { // Paper start - EAR 2 -@@ -292,7 +295,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -293,7 +296,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } protected void customServerAiStep(ServerLevel level, final boolean inactive) { // Paper end - EAR 2 diff --git a/leaf-server/minecraft-patches/features/0097-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch b/leaf-server/minecraft-patches/features/0097-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch index 2f0e4f92..4ab26276 100644 --- a/leaf-server/minecraft-patches/features/0097-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch +++ b/leaf-server/minecraft-patches/features/0097-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch @@ -7,10 +7,10 @@ Original license: GPL v3 Original project: https://github.com/pufferfish-gg/Pufferfish diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 7e466022af0f023b409462ed4d4f3a8aa80c4183..92ebc61aa7f6f70292a384b56bd8ef77a15e485c 100644 +index 968422c673e23774f6b162ed9cdb02b9bb67f9a8..275f8697031251f7e106ac3fcc165e42af362434 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -201,11 +201,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -204,11 +204,13 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab return this.lookControl; }