diff --git a/gradle.properties b/gradle.properties index 5e3e3eb7..110b2785 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=cn.dreeam.leaf mcVersion=1.21.6 version=1.21.6-R0.1-SNAPSHOT -paperCommit=40d5d31c83169419f25e618f5a0f731e67952ced +paperCommit=5edcf6ddf6a3c279fce5a4feca58e9679a140aec org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/leaf-api/build.gradle.kts.patch b/leaf-api/build.gradle.kts.patch index 9ca801ad..9dd03e4e 100644 --- a/leaf-api/build.gradle.kts.patch +++ b/leaf-api/build.gradle.kts.patch @@ -148,7 +148,7 @@ @@ -185,7 +_,7 @@ "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/", "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", - // "https://logging.apache.org/log4j/2.x/javadoc/log4j-api/", // TODO: Broken + "https://logging.apache.org/log4j/2.x/javadoc/log4j-api/", - "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", + "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.9.22", // Leaf - Bump Dependencies ) diff --git a/leaf-api/paper-patches/features/0002-Leaf-config.patch b/leaf-api/paper-patches/features/0002-Leaf-config.patch index 58fed9a8..cfc68054 100644 --- a/leaf-api/paper-patches/features/0002-Leaf-config.patch +++ b/leaf-api/paper-patches/features/0002-Leaf-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Leaf config diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index ed899c4cb4b5261ceff56bbc9ca806e20904508e..68e2cf06b59b1e3353ad57544d7edfeebcfc3ae0 100644 +index 9bab00ab10c78908090c8a1a12d4c84e9324b08b..e13b529dfa46ff2b4b6beaa198283b61c3639f93 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2380,6 +2380,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2387,6 +2387,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/leaf-api/paper-patches/features/0003-Gale-configuration.patch b/leaf-api/paper-patches/features/0003-Gale-configuration.patch index 91fa6dd4..c9e5faa0 100644 --- a/leaf-api/paper-patches/features/0003-Gale-configuration.patch +++ b/leaf-api/paper-patches/features/0003-Gale-configuration.patch @@ -13,10 +13,10 @@ As part of: Paper (https://github.com/PaperMC/Paper) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 68e2cf06b59b1e3353ad57544d7edfeebcfc3ae0..c1e4f01dbec2a796025ef35b6fdd68a82fa319d1 100644 +index e13b529dfa46ff2b4b6beaa198283b61c3639f93..c4d5af73aaaf632f84ab1a668a8fb672df145c88 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2378,6 +2378,15 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2385,6 +2385,15 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/leaf-api/paper-patches/features/0006-Vectorized-map-color-conversion.patch b/leaf-api/paper-patches/features/0006-Vectorized-map-color-conversion.patch index c518b2bf..43f990e0 100644 --- a/leaf-api/paper-patches/features/0006-Vectorized-map-color-conversion.patch +++ b/leaf-api/paper-patches/features/0006-Vectorized-map-color-conversion.patch @@ -110,7 +110,7 @@ index 0000000000000000000000000000000000000000..00b16e4aacba50996b81fac81c3f78b6 + +} diff --git a/src/main/java/org/bukkit/map/MapPalette.java b/src/main/java/org/bukkit/map/MapPalette.java -index 5bb3267f81a23d73baa3e4117563a13d61303013..047a33ef63cfc13b4d1ae31088538f2c1d8c404c 100644 +index fd6f3bce50a66004687b08fd80568543f814747a..2d6d7bc800a7c2c0f29b2d7f2512f2d27aaa9439 100644 --- a/src/main/java/org/bukkit/map/MapPalette.java +++ b/src/main/java/org/bukkit/map/MapPalette.java @@ -35,7 +35,7 @@ public final class MapPalette { @@ -120,7 +120,7 @@ index 5bb3267f81a23d73baa3e4117563a13d61303013..047a33ef63cfc13b4d1ae31088538f2c - static final Color[] colors = { + public static final Color[] colors = { // Gale - Pufferfish - vectorized map color conversion - package -> public // Start generate - MapPalette#colors - // @GeneratedFrom 1.21.6-rc1 + // @GeneratedFrom 1.21.6 new Color(0x00000000, true), @@ -395,9 +395,15 @@ public final class MapPalette { temp.getRGB(0, 0, temp.getWidth(), temp.getHeight(), pixels, 0, temp.getWidth()); diff --git a/leaf-api/paper-patches/features/0007-Do-not-log-plugin-library-loads.patch b/leaf-api/paper-patches/features/0007-Do-not-log-plugin-library-loads.patch index cef79fa0..0492a709 100644 --- a/leaf-api/paper-patches/features/0007-Do-not-log-plugin-library-loads.patch +++ b/leaf-api/paper-patches/features/0007-Do-not-log-plugin-library-loads.patch @@ -55,10 +55,10 @@ index 163e9a0e179dc88be93614ff66ee2be3eccc694f..539786355ac89b5eb8ad876e65662e84 * This class was not meant to be constructed explicitly * diff --git a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -index 3200a3c9af5fa2ecbbc2b07be3ec31a2681180a8..cfe41c0a67c8d729b6bd23b0cfa32db3c9db9f74 100644 +index a9cbd3d6cc00b8239cd7f8cdf97037f3ab12ebd2..70d57e6abbd876d7f3087905d5277777162d317c 100644 --- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java +++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -@@ -63,6 +63,7 @@ public class LibraryLoader { +@@ -66,6 +66,7 @@ public class LibraryLoader { session.setTransferListener(new AbstractTransferListener() { @Override public void transferStarted(@NotNull TransferEvent event) { @@ -66,7 +66,7 @@ index 3200a3c9af5fa2ecbbc2b07be3ec31a2681180a8..cfe41c0a67c8d729b6bd23b0cfa32db3 logger.log(Level.INFO, "Downloading {0}", event.getResource().getRepositoryUrl() + event.getResource().getResourceName()); } }); -@@ -88,6 +89,7 @@ public class LibraryLoader { +@@ -91,6 +92,7 @@ public class LibraryLoader { // Paper end - plugin loader api return null; } @@ -74,7 +74,7 @@ index 3200a3c9af5fa2ecbbc2b07be3ec31a2681180a8..cfe41c0a67c8d729b6bd23b0cfa32db3 logger.log(Level.INFO, "[{0}] Loading {1} libraries... please wait", new Object[] { java.util.Objects.requireNonNullElseGet(desc.getPrefix(), desc::getName), desc.getLibraries().size() // Paper - use configured log prefix -@@ -140,6 +142,7 @@ public class LibraryLoader { +@@ -143,6 +145,7 @@ public class LibraryLoader { } jarFiles.add(url); diff --git a/leaf-api/paper-patches/features/0009-Specific-interval-TPS-API.patch b/leaf-api/paper-patches/features/0009-Specific-interval-TPS-API.patch index fd013efa..da7f87ed 100644 --- a/leaf-api/paper-patches/features/0009-Specific-interval-TPS-API.patch +++ b/leaf-api/paper-patches/features/0009-Specific-interval-TPS-API.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index c9ea6559f809a6732588b8908001807be3d91196..1e810d7f61e07cddd99d3f827673b724ac93b6b5 100644 +index 3bde4ad79ade5aae18e9073307f637717e8dd9e3..bac8bf1996350e4c16ba9a494c5d9bf052ad7fa3 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2438,6 +2438,35 @@ public final class Bukkit { +@@ -2447,6 +2447,35 @@ public final class Bukkit { return server.getTPS(); } @@ -47,10 +47,10 @@ index c9ea6559f809a6732588b8908001807be3d91196..1e810d7f61e07cddd99d3f827673b724 * Get a sample of the servers last tick times (in nanos) * diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index c1e4f01dbec2a796025ef35b6fdd68a82fa319d1..cfe600ed503994376284d71d6754d1a736048401 100644 +index c4d5af73aaaf632f84ab1a668a8fb672df145c88..1b3ee5ef28e4687de605c7befd74539e292f0bae 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2126,6 +2126,29 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2133,6 +2133,29 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ public double @NotNull [] getTPS(); diff --git a/leaf-api/paper-patches/features/0010-5-second-TPS-average.patch b/leaf-api/paper-patches/features/0010-5-second-TPS-average.patch index dc31011d..395bd94c 100644 --- a/leaf-api/paper-patches/features/0010-5-second-TPS-average.patch +++ b/leaf-api/paper-patches/features/0010-5-second-TPS-average.patch @@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 1e810d7f61e07cddd99d3f827673b724ac93b6b5..f998208e0b26132d29d79fc2653d9f5572046f70 100644 +index bac8bf1996350e4c16ba9a494c5d9bf052ad7fa3..c899da328fca4dccbf69b2e2d74bcdf31e0e2c33 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2438,7 +2438,30 @@ public final class Bukkit { +@@ -2447,7 +2447,30 @@ public final class Bukkit { return server.getTPS(); } @@ -72,10 +72,10 @@ index 1e810d7f61e07cddd99d3f827673b724ac93b6b5..f998208e0b26132d29d79fc2653d9f55 * Gets the average server TPS over the last 1 minute * diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index cfe600ed503994376284d71d6754d1a736048401..d57a77ff531e8bc5c0fa41e66c64c28f9a4a1515 100644 +index 1b3ee5ef28e4687de605c7befd74539e292f0bae..1d685ae0c9e60fa741d7fd87616366171bc6fa15 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2126,7 +2126,27 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2133,7 +2133,27 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ public double @NotNull [] getTPS(); diff --git a/leaf-api/paper-patches/features/0011-Last-tick-time-API.patch b/leaf-api/paper-patches/features/0011-Last-tick-time-API.patch index 96f4cc79..25c8ae3c 100644 --- a/leaf-api/paper-patches/features/0011-Last-tick-time-API.patch +++ b/leaf-api/paper-patches/features/0011-Last-tick-time-API.patch @@ -23,10 +23,10 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index f998208e0b26132d29d79fc2653d9f5572046f70..2e316238da9377c046105249273b260912ebfcab 100644 +index c899da328fca4dccbf69b2e2d74bcdf31e0e2c33..ffb2f5d949cc255263674b2a03d4da809b0c36c5 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -3044,6 +3044,20 @@ public final class Bukkit { +@@ -3053,6 +3053,20 @@ public final class Bukkit { } // Paper end - Folia region threading API @@ -48,10 +48,10 @@ index f998208e0b26132d29d79fc2653d9f5572046f70..2e316238da9377c046105249273b2609 * @deprecated All methods on this class have been deprecated, see the individual methods for replacements. */ diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index d57a77ff531e8bc5c0fa41e66c64c28f9a4a1515..e8f192bad2ffa3cb1c5217293420a863d57b5377 100644 +index 1d685ae0c9e60fa741d7fd87616366171bc6fa15..298c789b20df33fe0d4c7abe0b0ff76aca1f6494 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2776,4 +2776,29 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2783,4 +2783,29 @@ 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 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 a0b23298..6f140d05 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: 469a4de5ce87dcf6461e067d29a88507231f4a6b +Commit: afcdf9bb72f88eb18266f5efd8c135904d82fd3d Patches listed below are removed in this patch, They exists in Gale or Leaf: * "co/aikar/timings/TimedEventExecutor.java.patch" @@ -21,7 +21,7 @@ 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 5b798fc97824a620796289e4000aa68a866f8c85..23289f28bc95fdba6a9f02a442fc350f59e190f1 100644 +index e4729256f444168dc8cb7121f66cae0df054692b..0db0e11f4e18a280f699004dc660ce211b7f895f 100644 --- a/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java @@ -446,6 +446,26 @@ public interface VanillaGoal extends Goal { @@ -70,10 +70,10 @@ index f738bbcefe288474c5f591dda03d713850633854..c198304386e83edc2ec582fdf66d97d6 /** * The brand id for Gale. diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 2e316238da9377c046105249273b260912ebfcab..98cfd68226494dbb1a2eaa6680e23a76c2129a62 100644 +index ffb2f5d949cc255263674b2a03d4da809b0c36c5..f04f42832a098836bf41e98787c2db35d154c892 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -3073,4 +3073,133 @@ public final class Bukkit { +@@ -3082,4 +3082,133 @@ public final class Bukkit { public static void restart() { server.restart(); } @@ -290,7 +290,7 @@ 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 6a559381d4a08f61eea93b925fc65ce657300a24..c95849d9ab1b6182704b5eca2c475f91c81275ca 100644 +index ac8d14010940d55e2d885e75ce6ff436c46e2d69..8f45823ea89c8208374115f8ed9c5a535a64c017 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java @@ -3636,4 +3636,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla @@ -444,10 +444,10 @@ 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..2557e141f4c8074a810a28f443903381e60a5d8f 100644 +index 298c789b20df33fe0d4c7abe0b0ff76aca1f6494..6803d010c5ccd6e005f35b01f684a239b8cb28d4 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 +@@ -2439,6 +2439,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi // Paper end @@ -466,7 +466,7 @@ index e8f192bad2ffa3cb1c5217293420a863d57b5377..2557e141f4c8074a810a28f443903381 // Leaf start - Leaf config - API @NotNull public org.bukkit.configuration.file.YamlConfiguration getLeafConfig() -@@ -2801,4 +2813,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2808,4 +2820,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ long getLastTickOversleepTime(); // Gale end - YAPFA - last tick time - API @@ -1161,7 +1161,7 @@ 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 c3d37131fbd6761ac2610f7eb70643d24cdaec70..568cb4f2139b59a42fc3528a56f82fddc7d69cb8 100644 +index 1be07639143cd80bd4fb304d6f3bbced58887617..120159852cae3b1a71c6c7ce949cadb386023095 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 { @@ -1204,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 693bc63cb9a4f27e04882ad817f4abfed1b2ff42..d759f26564732596ee58a98403870a53a1089717 100644 +index d0a64457e4bf40f2a78ffe90c2d402adc154e327..ea51840e4f40733a48ca34f7a8fcf17dc963d659 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/0017-Configurable-LibraryLoader-maven-repos.patch b/leaf-api/paper-patches/features/0017-Configurable-LibraryLoader-maven-repos.patch index c5f98235..52438b67 100644 --- a/leaf-api/paper-patches/features/0017-Configurable-LibraryLoader-maven-repos.patch +++ b/leaf-api/paper-patches/features/0017-Configurable-LibraryLoader-maven-repos.patch @@ -7,43 +7,37 @@ Add JVM flag `-DLeaf.library-download-repo=link` to choose library download repo e.g. `-DLeaf.library-download-repo=https://maven.aliyun.com/repository/public` diff --git a/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java b/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java -index 107705db2d82b7c191e5e625ec888e0bc3b03831..d7dc6ff0b372de04c956cae6fc27d2679b88e0f7 100644 +index c1fccd64b1329e31ccf7e6a11853ce3a749b7ea4..6537b44fbf7995ed7d49050465f71dd682eb3561 100644 --- a/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java +++ b/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java -@@ -3,9 +3,11 @@ package io.papermc.paper.plugin.loader.library.impl; - import io.papermc.paper.plugin.loader.library.ClassPathLibrary; - import io.papermc.paper.plugin.loader.library.LibraryLoadingException; - import io.papermc.paper.plugin.loader.library.LibraryStore; -+ - import java.io.File; - import java.util.ArrayList; - import java.util.List; -+ - import org.apache.maven.repository.internal.MavenRepositorySystemUtils; - import org.eclipse.aether.DefaultRepositorySystemSession; - import org.eclipse.aether.RepositorySystem; -@@ -57,6 +59,13 @@ public class MavenLibraryResolver implements ClassPathLibrary { - private final List repositories = new ArrayList<>(); - private final List dependencies = new ArrayList<>(); - +@@ -59,12 +59,16 @@ public class MavenLibraryResolver implements ClassPathLibrary { + *

This repository is also used by the legacy {@link org.bukkit.plugin.java.LibraryLoader}.

+ */ + public static final String MAVEN_CENTRAL_DEFAULT_MIRROR = getDefaultMavenCentralMirror(); +- private static final List MAVEN_CENTRAL_URLS = List.of( + // Leaf start - Configurable LibraryLoader maven repos + @org.jspecify.annotations.Nullable + public static final RemoteRepository MAVEN_CENTRAL_MIRROR_REPO = getCentralMirrorRepo(); + private static final String[] MAVEN_CENTRAL_URLS = new String[]{ + "https://repo1.maven.org/maven2", + "http://repo1.maven.org/maven2", + "https://repo.maven.apache.org/maven2", + "http://repo.maven.apache.org/maven2" +- ); + }; + // Leaf end - Configurable LibraryLoader maven repos -+ - /** - * Creates a new maven library resolver instance. - *

-@@ -102,9 +111,24 @@ public class MavenLibraryResolver implements ClassPathLibrary { - * repository. - * - * @param remoteRepository the configuration that defines the maven repository this library resolver should fetch -- * dependencies from -+ * dependencies from + private static final Logger LOGGER = LoggerFactory.getLogger("MavenLibraryResolver"); + + private final RepositorySystem repository; +@@ -120,12 +124,21 @@ public class MavenLibraryResolver implements ClassPathLibrary { + * dependencies from */ public void addRepository(final RemoteRepository remoteRepository) { +- if (MAVEN_CENTRAL_URLS.stream().anyMatch(remoteRepository.getUrl()::startsWith)) { +- LOGGER.warn( +- "Use of Maven Central as a CDN is against the Maven Central Terms of Service. Use MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR instead.", +- new RuntimeException("Plugin used Maven Central for library resolution") +- ); + // Leaf start - Configurable LibraryLoader maven repos + for (String url : MAVEN_CENTRAL_URLS) { + if (remoteRepository.getUrl().startsWith(url)) { @@ -57,14 +51,14 @@ index 107705db2d82b7c191e5e625ec888e0bc3b03831..d7dc6ff0b372de04c956cae6fc27d267 + new RuntimeException("Plugin used Maven Central for library resolution") + ); + } -+ } + } + // Leaf end - Configurable LibraryLoader maven repos this.repositories.add(remoteRepository); } -@@ -130,4 +154,15 @@ public class MavenLibraryResolver implements ClassPathLibrary { - store.addLibrary(file.toPath()); +@@ -162,4 +175,15 @@ public class MavenLibraryResolver implements ClassPathLibrary { } + return central; } + + // Leaf start - Configurable LibraryLoader maven repos @@ -79,15 +73,14 @@ index 107705db2d82b7c191e5e625ec888e0bc3b03831..d7dc6ff0b372de04c956cae6fc27d267 + // Leaf end - Configurable LibraryLoader maven repos } diff --git a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -index cfe41c0a67c8d729b6bd23b0cfa32db3c9db9f74..05d3b793bf9cb320774f9f488a3b78bedab6a9d4 100644 +index 70d57e6abbd876d7f3087905d5277777162d317c..1bbaac927eb746d5b9857b1ec2ab9ea674b474a4 100644 --- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java +++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -@@ -47,6 +47,8 @@ public class LibraryLoader { - public static java.util.function.BiFunction LIBRARY_LOADER_FACTORY; // Paper - rewrite reflection in libraries +@@ -47,6 +47,7 @@ public class LibraryLoader { public static java.util.function.Function, List> REMAPPER; // Paper - remap libraries -+ if (io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver.MAVEN_CENTRAL_MIRROR_REPO != null) return List.of(io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver.MAVEN_CENTRAL_MIRROR_REPO); // Leaf - Configurable LibraryLoader maven repos -+ - public LibraryLoader(@NotNull Logger logger) { - this.logger = logger; + private static List getRepositories() { ++ if (io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver.MAVEN_CENTRAL_MIRROR_REPO != null) return List.of(io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver.MAVEN_CENTRAL_MIRROR_REPO); // Leaf - Configurable LibraryLoader maven repos + return List.of(new RemoteRepository.Builder("central", "default", MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR).build()); + } 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 84136937..d22e0ae8 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 @@ -11,10 +11,10 @@ Original project: https://github.com/LeavesMC/Leaves This patch is Powered by ReplayMod(https://github.com/ReplayMod) diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 98cfd68226494dbb1a2eaa6680e23a76c2129a62..0f8a1b82dc9d3f4911a0aaa092ef06388ace5108 100644 +index f04f42832a098836bf41e98787c2db35d154c892..b7782de2fb8e636e82a6ef89a62edeec902b367e 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -3202,4 +3202,10 @@ public final class Bukkit { +@@ -3211,4 +3211,10 @@ public final class Bukkit { server.clearBlockHighlights(); } // Purpur end - Debug Marker API @@ -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 2557e141f4c8074a810a28f443903381e60a5d8f..680009900f2e82a498b43bea8d73c88ae1fcfc2f 100644 +index 6803d010c5ccd6e005f35b01f684a239b8cb28d4..506e7bd1acfd1b88b334589e2b1bbb68271e846e 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2920,4 +2920,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2927,4 +2927,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ void clearBlockHighlights(); // Purpur end - Debug Marker API diff --git a/leaf-server/paper-patches/features/0015-Optimize-entity-coordinate-key.patch b/leaf-archived-patches/removed/hardfork/paperserver/0015-Optimize-entity-coordinate-key.patch similarity index 97% rename from leaf-server/paper-patches/features/0015-Optimize-entity-coordinate-key.patch rename to leaf-archived-patches/removed/hardfork/paperserver/0015-Optimize-entity-coordinate-key.patch index 34ed20f0..6d49417e 100644 --- a/leaf-server/paper-patches/features/0015-Optimize-entity-coordinate-key.patch +++ b/leaf-archived-patches/removed/hardfork/paperserver/0015-Optimize-entity-coordinate-key.patch @@ -3,6 +3,8 @@ From: Martijn Muijsers Date: Wed, 23 Nov 2022 23:32:51 +0100 Subject: [PATCH] Optimize entity coordinate key +Removed since Leaf 1.21.6, added in Paper + License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/leaf-server/build.gradle.kts.patch b/leaf-server/build.gradle.kts.patch index 20e49076..48a0f6af 100644 --- a/leaf-server/build.gradle.kts.patch +++ b/leaf-server/build.gradle.kts.patch @@ -13,7 +13,7 @@ testRuntimeOnly("org.junit.platform:junit-platform-launcher") } -@@ -24,11 +_,25 @@ +@@ -24,6 +_,19 @@ minecraftVersion = providers.gradleProperty("mcVersion") gitFilePatches = false @@ -30,18 +30,9 @@ + activeFork = leaf + // Leaf end - project setup + -+ // Leaf start - Update spigot mapping to compat spigot reobf mapping plugins spigot { -- enabled = false -- buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc" -- packageVersion = "v1_21_R4" // also needs to be updated in MappingEnvironment -+ buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d" -+ packageVersion = "v1_21_R5" // also needs to be updated in MappingEnvironment - } -+ // Leaf end - Update spigot mapping to compat spigot reobf mapping plugins - - reobfPackagesToFix.addAll( - "co.aikar.timings", + enabled = true + buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d" @@ -47,6 +_,7 @@ libraryRepositories.addAll( "https://repo.maven.apache.org/maven2/", diff --git a/leaf-server/minecraft-patches/features/0003-Leaf-config.patch b/leaf-server/minecraft-patches/features/0003-Leaf-config.patch index 2f22a73a..7b74aa8a 100644 --- a/leaf-server/minecraft-patches/features/0003-Leaf-config.patch +++ b/leaf-server/minecraft-patches/features/0003-Leaf-config.patch @@ -28,10 +28,10 @@ index fd3553bdc1c3cdbf6aa3dc00e0a4987f8eaa4fb8..b16f3f515a76ddbbd74d73464396cf09 DedicatedServerSettings dedicatedServerSettings = new DedicatedServerSettings(optionSet); // CraftBukkit - CLI argument support dedicatedServerSettings.forceSave(); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 84f4f0c87f904a31f3f972e9fb1da8a01474dfca..1d79892613707c7a81b5f0686874070f7f98debd 100644 +index 54a9c4b14a51b3480d634703d4936b15330fba53..991833bfa8d6cb6ab3faccc94199b7105523583f 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1184,6 +1184,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop parseResults, String command, String label, boolean throwCommandError) { +@@ -349,7 +346,6 @@ public class Commands { + org.spigotmc.AsyncCatcher.catchOp("Cannot perform command async"); // Paper end CommandSourceStack commandSourceStack = parseResults.getContext().getSource(); - Profiler.get().push(() -> "/" + command); - ContextChain contextChain = this.finishParsing(parseResults, command, commandSourceStack, label); // CraftBukkit // Paper - Add UnknownCommandEvent + ContextChain contextChain = finishParsing(parseResults, command, commandSourceStack); try { -@@ -420,8 +416,6 @@ public class Commands { +@@ -385,8 +381,6 @@ public class Commands { commandSourceStack.sendFailure(Component.literal(Util.describeError(var12))); LOGGER.error("'/{}' threw an exception", command, var12); } @@ -81,7 +81,7 @@ index 30227063155e3ad386cc64c69927d82cf09428cc..b9b049e025de5393fa4ef6555f5900a7 } } -@@ -478,7 +472,7 @@ public class Commands { +@@ -443,7 +437,7 @@ public class Commands { int max = Math.max(1, server.getGameRules().getInt(GameRules.RULE_MAX_COMMAND_CHAIN_LENGTH)); int _int = server.getGameRules().getInt(GameRules.RULE_MAX_COMMAND_FORK_COUNT); @@ -169,7 +169,7 @@ index 18071dcc69cc28471dddb7de94e803ec1e5fc2e4..e30bb9c4046200c1a6e4e917d15b205f } } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c300393b6d 100644 +index 991833bfa8d6cb6ab3faccc94199b7105523583f..f4daf7ed86e5987ca9da8229402a154b69599f56 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -114,19 +114,8 @@ import net.minecraft.util.TimeUtil; @@ -206,7 +206,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3 private ServerConnectionListener connection; public final ChunkProgressListenerFactory progressListenerFactory; @Nullable -@@ -991,9 +973,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop false : this::haveTime); // Paper start - rewrite chunk system -@@ -1260,7 +1232,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1557,10 +1521,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop serverPlayer1.connection.suspendFlushing()); this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit // Paper start - Folia scheduler API -@@ -1675,9 +1631,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers @@ -348,7 +348,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3 try { serverLevel.tick(hasTimeLeft); } catch (Throwable var7) { -@@ -1731,34 +1680,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = this.calculateExplodedPositions(); this.hurtEntities(); if (this.interactsWithBlocks()) { diff --git a/leaf-server/minecraft-patches/features/0046-Reduce-array-allocations.patch b/leaf-server/minecraft-patches/features/0046-Reduce-array-allocations.patch index 826f0912..ae47dbb0 100644 --- a/leaf-server/minecraft-patches/features/0046-Reduce-array-allocations.patch +++ b/leaf-server/minecraft-patches/features/0046-Reduce-array-allocations.patch @@ -43,10 +43,10 @@ index b2bcfb3557a0326fd7ec1059f95d6da4568dfd80..fee4a7452178c274eb835d758b718d8e } else { this.storage = Arrays.copyOf(this.storage, this.storage.length * 2); diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java -index 26207443b1223119c03db478d7e816d9cdf8e618..bbd1c262674b42eb9ea2830acb8bf94182f971f9 100644 +index 5f2deeb5cc01d8bbeb7449bd4e59c466b3dfdf57..2cced8ed80e05ea398b234fa9871af0a43d9d9a1 100644 --- a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java +++ b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java -@@ -14,10 +14,8 @@ import net.minecraft.world.level.entity.LevelCallback; +@@ -19,10 +19,8 @@ import net.minecraft.world.level.entity.LevelCallback; public final class ServerEntityLookup extends EntityLookup { @@ -56,8 +56,8 @@ index 26207443b1223119c03db478d7e816d9cdf8e618..bbd1c262674b42eb9ea2830acb8bf941 - public final ReferenceList trackerEntities = new ReferenceList<>(EMPTY_ENTITY_ARRAY); // Moonrise - entity tracker + public final ReferenceList trackerEntities = new ReferenceList<>(me.titaniumtown.ArrayConstants.emptyEntityArray); // Moonrise - entity tracker // Gale - JettPack - reduce array allocations - public ServerEntityLookup(final ServerLevel world, final LevelCallback worldCallback) { - super(world, worldCallback); + // Vanilla does not increment ticket timeouts if the chunk is progressing in generation. They made this change in 1.21.6 so that the ender pearl + // ticket does not expire if the chunk fails to generate before the timeout expires. Rather than blindly adjusting the entire system behavior diff --git a/net/minecraft/nbt/ByteArrayTag.java b/net/minecraft/nbt/ByteArrayTag.java index 6fbb131b472a3093b137d8ced9889777a133bd5b..cecfd48f57bc11b84c18b4e5a723228fd3c18e23 100644 --- a/net/minecraft/nbt/ByteArrayTag.java @@ -217,7 +217,7 @@ index 3eea236bd1fd401fefdf7c5cc553a3db335029c7..3739272cbc73b7c4f15a2fbe874905cf if (!itemBySlot.isEmpty()) { newMob.setItemSlot(equipmentSlot, itemBySlot.copyAndClear()); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 96ff8384beabdfd471579d4626ce89d5587b0a35..6714668563e3a7543765064d9824b93ec3924473 100644 +index f4ee277dee9495a098030b563e417874a086c1d4..7aac71525a0472dc055d788904eac60118f1ec50 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3077,7 +3077,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/leaf-server/minecraft-patches/features/0073-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch b/leaf-server/minecraft-patches/features/0073-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch index 8bd095f3..bbf27ce2 100644 --- a/leaf-server/minecraft-patches/features/0073-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch +++ b/leaf-server/minecraft-patches/features/0073-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch @@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java -index b9b049e025de5393fa4ef6555f5900a7b5b2f032..189cba4369a029713bb3b0cdc77d5c103c6cd852 100644 +index edf507ce386b43c81c0e812dd3f3283379997170..561b25ff9b424c2a658860b17462137ce7ae3abd 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -531,6 +531,7 @@ public class Commands { +@@ -496,6 +496,7 @@ public class Commands { private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -48,7 +48,7 @@ index b9b049e025de5393fa4ef6555f5900a7b5b2f032..189cba4369a029713bb3b0cdc77d5c10 org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -541,6 +542,7 @@ public class Commands { +@@ -506,6 +507,7 @@ public class Commands { } } // CraftBukkit end diff --git a/leaf-server/minecraft-patches/features/0083-5-second-TPS-average.patch b/leaf-server/minecraft-patches/features/0083-5-second-TPS-average.patch index 28fb6fcd..d9edc767 100644 --- a/leaf-server/minecraft-patches/features/0083-5-second-TPS-average.patch +++ b/leaf-server/minecraft-patches/features/0083-5-second-TPS-average.patch @@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index eae529b69296f4c1329907ae6bb1b0c300393b6d..8b7b0232fa176e7034be34bf12cfdb63151ae059 100644 +index f4daf7ed86e5987ca9da8229402a154b69599f56..3cab16e4fef4acc7e56d60e1f2221806ad7ef355 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1093,6 +1093,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function threadFunction) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system -@@ -1048,6 +1049,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function threadFunction) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system -@@ -977,6 +980,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers @@ -492,7 +492,7 @@ index ea9db57a1fe2f11739ceb062ea7cce15776f959a..a919d91eeaaeef0f79190cc5e78e4f8b ItemEntity itemEntity = serverPlayer.drop(itemStack, false); if (itemEntity != null) { diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java -index 872e74d3d22c65b1d6ac624a2ccab7473dc65ff8..69880a8d52f60ac3a5e5cf1ccf0654f26d456812 100644 +index ca1406178cfb1a5a10947872585e2dcf3059b460..87fc8861948b50361ec04c5a23406d3abdec6eac 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java @@ -105,6 +105,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -1903,7 +1903,7 @@ index 1fc9e1ad541c46124183a401b2a7d99aea69cecf..881271f0bc77a8a8a7d31daad9a8188b } diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 57e669eeb2a05805b8ed81311344bc27292608f3..46938755cfd291bb2e4711a0651eacd7a4721aa0 100644 +index 9a6e0c203ae7f0436a0b87f6060a1cdb6623d181..d8209037e988bc7a68f634a6650930bd1082c4d1 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -146,6 +146,7 @@ import org.jetbrains.annotations.Contract; @@ -2111,7 +2111,7 @@ index 57e669eeb2a05805b8ed81311344bc27292608f3..46938755cfd291bb2e4711a0651eacd7 // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5138,7 +5204,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5143,7 +5209,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public float maxUpStep() { @@ -2120,7 +2120,7 @@ index 57e669eeb2a05805b8ed81311344bc27292608f3..46938755cfd291bb2e4711a0651eacd7 } public void onExplosionHit(@Nullable Entity entity) { -@@ -5391,4 +5457,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5396,4 +5462,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -2179,7 +2179,7 @@ index 15daba9062d54a5bdf335c3645a3227ccb5a8e06..1842cbe25cc0f9be937caf0a78e915bd public static final Predicate PLAYER_AFFECTS_SPAWNING = (entity) -> { return !entity.isSpectator() && entity.isAlive() && entity instanceof Player player && player.affectsSpawning; diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java -index 9dc5a7e9fdb83d98c3554fea064b06f022da4496..22d3dd6ba240dd8d9cedc01e43e58fef1953de1d 100644 +index 388689c44cf63ade939e271d490051c9b3fe8034..e65b1818c49e1b7d04d5bcc912804c821f00bdbc 100644 --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java @@ -1106,6 +1106,16 @@ public class EntityType implements FeatureElement, EntityTypeT @@ -8281,10 +8281,10 @@ index 7afdccf04e2239b0654e8f1ce7b7e22c39d84f44..20f4c879e46fdd0ed0515dbbb91f6411 @Override diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java -index f8a81f0b34aca0205123a8cb00078338ae1d7756..224f8b62809c0de33c182fceae1c41b14f4506fe 100644 +index 17d54d38dcec39eefeb989cd576cc640a36e82f5..ef070f8a9ab3a4676e2141f7c0bc20a000d0cc3a 100644 --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java -@@ -253,4 +253,32 @@ public class PrimedTnt extends Entity implements TraceableEntity { +@@ -238,4 +238,32 @@ public class PrimedTnt extends Entity implements TraceableEntity { return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water @@ -13022,15 +13022,15 @@ index 2419c1db39c9ffbc54352c7fa5e0ac1ef813c13a..3b68e1a73da3e70f459cdc31e8447bce protected void defineSynchedData(SynchedEntityData.Builder builder) { builder.define(DATA_DANGEROUS, false); diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java -index df0753c89b7c613f2abac9c50ce7f897ba280803..3baba21d106ab09ae476238f2636169c371f43cf 100644 +index a495789b2d21fa9a24d5dca4ecfa196ddce49466..2254493c889b8967011c09dc448ba375d82e2035 100644 --- a/net/minecraft/world/entity/raid/Raider.java +++ b/net/minecraft/world/entity/raid/Raider.java @@ -401,7 +401,7 @@ public abstract class Raider extends PatrollingMonster { } private boolean cannotPickUpBanner() { -- if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items -+ if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING, this.mob.level().purpurConfig.pillagerMobGriefingOverride) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur - Add mobGriefing override to everything affected +- if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING)) return true; // Paper - respect game and entity rules for picking up items ++ if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING, this.mob.level().purpurConfig.pillagerMobGriefingOverride)) return true; // Paper - respect game and entity rules for picking up items // Purpur - Add mobGriefing override to everything affected if (!this.mob.hasActiveRaid()) { return true; } else if (this.mob.getCurrentRaid().isOver()) { @@ -13280,7 +13280,7 @@ index 793e4528755fa5688efbad75418188e693ad0157..20f702c8266eb54a8835861188eb937f } diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java -index 813417a09b4acc7d57e80a53d970767e230d75b1..c4721eb0efe34f5e313bc890b4e960144eca4fe1 100644 +index f4548edae77eb86e54ba499acbb20613fd60d7bd..1f601781643945920c7522b9c6100d0a37ad535d 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu { @@ -14699,28 +14699,10 @@ index ec32d77447dd250857a2af1d8cc3e6e233aa3e6e..345d4b80bd4383e0fb66d744d87bc8ef double d2 = nearestPlayer.distanceToSqr(d, y, d1); if (level.isLoadedAndInBounds(mutableBlockPos) && isRightDistanceToPlayerAndSpawnPoint(level, chunk, mutableBlockPos, d2)) { // Paper - don't load chunks for mob spawn diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java -index 93ac791a028f7da821db448c503532acb4a5490e..6c02b986e328ead2040666d619fdb5d397d9b686 100644 +index fa4695b7ee56724b4d47ce4da0a5aeb8b5467db4..1669c21534a453c9cf16b992df7a6bf276dea887 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -314,7 +314,7 @@ public class ServerExplosion implements Explosion { - ) { - this.level = level; - this.source = source; -- this.radius = (float) Math.max(radius, 0.0); // CraftBukkit - clamp bad values -+ this.radius = (float) (level == null || level.purpurConfig.explosionClampRadius ? Math.max(radius, 0.0) : radius); // CraftBukkit - clamp bad values // Purpur - Config to remove explosion radius clamp - this.center = center; - this.fire = fire; - this.blockInteraction = blockInteraction; -@@ -636,7 +636,7 @@ public class ServerExplosion implements Explosion { - - public void explode() { - // CraftBukkit start -- if (this.radius < 0.1F) { -+ if ((this.level == null || this.level.purpurConfig.explosionClampRadius) && this.radius < 0.1F) { // Purpur - Config to remove explosion radius clamp - return; - } - // CraftBukkit end -@@ -648,6 +648,23 @@ public class ServerExplosion implements Explosion { +@@ -646,6 +646,23 @@ public class ServerExplosion implements Explosion { this.directMappedBlockCache = new ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH]; this.mutablePos = new BlockPos.MutableBlockPos(); // Paper end - collision optimisations @@ -17453,10 +17435,10 @@ index 0000000000000000000000000000000000000000..ed777b003140486fd5d8d1db7af77030 +} diff --git a/org/purpurmc/purpur/PurpurWorldConfig.java b/org/purpurmc/purpur/PurpurWorldConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..611847bd7576bb77fdfb734ddb2e3412f3831041 +index 0000000000000000000000000000000000000000..a03e166b490952534e8050654c1afa975795f731 --- /dev/null +++ b/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -0,0 +1,3619 @@ +@@ -0,0 +1,3614 @@ +package org.purpurmc.purpur; + +import java.util.ArrayList; @@ -17716,11 +17698,6 @@ index 0000000000000000000000000000000000000000..611847bd7576bb77fdfb734ddb2e3412 + infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); + } + -+ public boolean explosionClampRadius = true; -+ private void explosionSettings() { -+ explosionClampRadius = getBoolean("gameplay-mechanics.clamp-explosion-radius", explosionClampRadius); -+ } -+ + public List itemImmuneToCactus = new ArrayList<>(); + public List itemImmuneToExplosion = new ArrayList<>(); + public List itemImmuneToFire = new ArrayList<>(); diff --git a/leaf-server/minecraft-patches/features/0099-Fix-Pufferfish-and-Purpur-patches.patch b/leaf-server/minecraft-patches/features/0099-Fix-Pufferfish-and-Purpur-patches.patch index c05a17a7..7d30f106 100644 --- a/leaf-server/minecraft-patches/features/0099-Fix-Pufferfish-and-Purpur-patches.patch +++ b/leaf-server/minecraft-patches/features/0099-Fix-Pufferfish-and-Purpur-patches.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix Pufferfish and Purpur patches diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index b72834526c4ebbe24c975aa4b21f55f1986a773e..1109b12657e4f098b18e2a3cea18ddeed67bc224 100644 +index db1f0031a6ae6ba1b9ea265043b87817e2c746f8..1aab4d41054f8e780e6c0ccdb96affee19068311 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -277,7 +277,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= 0 && i <= maxSize) { diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 8da49dd5d56128df4fd3c3c5a4731be2eb5eb094..5f85127436732b3165ce6e5baea8bc6999eee176 100644 +index 586ba2d9c4ad684a4a7875c49cab048f949322ab..3a1822e0f37c86dfad56ae06c14fffb960ff99ec 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1738,6 +1738,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= resultLimit) { return players; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 5f85127436732b3165ce6e5baea8bc6999eee176..1635de2b25a4162036522615424d9e845def6258 100644 +index 3a1822e0f37c86dfad56ae06c14fffb960ff99ec..32c934a489df7a06892265c6d762e88c3716a5c6 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1641,7 +1641,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function threadFunction) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system -@@ -1665,6 +1666,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { for (final net.minecraft.world.entity.Entity entity : level.getEntities().getAll()) { if (entity.isRemoved()) { -@@ -1676,6 +1693,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop style.withClickEvent(new ClickEvent.SuggestCommand("/" + label))); // CraftBukkit // Paper +- .withStyle(style -> style.withClickEvent(new ClickEvent.SuggestCommand("/" + command))); - if (min > 10) { - mutableComponent.append(CommonComponents.ELLIPSIS); - } @@ -37,22 +37,22 @@ index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205 - .append(io.papermc.paper.adventure.PaperAdventure.asAdventure(mutableComponent)); - } - org.bukkit.event.command.UnknownCommandEvent event = new org.bukkit.event.command.UnknownCommandEvent(source.getBukkitSender(), command, org.spigotmc.SpigotConfig.unknownCommandMessage.isEmpty() ? null : builder.build()); -+ org.bukkit.event.command.UnknownCommandEvent event = new org.bukkit.event.command.UnknownCommandEvent(source.getBukkitSender(), command, getUnknownCommandMessage(builder, var7, label)); // Leaf - Configurable unknown command message ++ org.bukkit.event.command.UnknownCommandEvent event = new org.bukkit.event.command.UnknownCommandEvent(source.getBukkitSender(), command, getUnknownCommandMessage(builder, var7, command)); // Leaf - Configurable unknown command message org.bukkit.Bukkit.getServer().getPluginManager().callEvent(event); if (event.message() != null) { source.sendFailure(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.message()), false); -@@ -696,6 +673,92 @@ public class Commands { +@@ -661,6 +638,92 @@ public class Commands { }; } + // Leaf start - Configurable unknown command message + private static net.kyori.adventure.text.Component getUnknownCommandMessage( -+ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException commandSyntaxException, String label ++ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException commandSyntaxException, String command + ) { + String rawMessage = org.dreeam.leaf.config.modules.misc.UnknownCommandMessage.unknownCommandMessage; + + if ("default".equals(rawMessage)) { -+ return getVanillaUnknownCommandMessage(builder, commandSyntaxException, label); ++ return getVanillaUnknownCommandMessage(builder, commandSyntaxException, command); + } + + net.kyori.adventure.text.Component messageComponent = null; @@ -71,7 +71,7 @@ index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205 + final net.kyori.adventure.text.Component context = net.kyori.adventure.text.Component.translatable("command.context.here") + .color(net.kyori.adventure.text.format.NamedTextColor.RED) + .decorate(net.kyori.adventure.text.format.TextDecoration.ITALIC); -+ final net.kyori.adventure.text.event.ClickEvent event = net.kyori.adventure.text.event.ClickEvent.suggestCommand("/" + label); ++ final net.kyori.adventure.text.event.ClickEvent event = net.kyori.adventure.text.event.ClickEvent.suggestCommand("/" + command); + + detail.color(net.kyori.adventure.text.format.NamedTextColor.GRAY); + @@ -100,7 +100,7 @@ index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205 + } + + private static net.kyori.adventure.text.Component getVanillaUnknownCommandMessage( -+ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String label ++ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String command + ) { + builder.color(net.kyori.adventure.text.format.NamedTextColor.RED).append(io.papermc.paper.command.brigadier.MessageComponentSerializer.message().deserialize(var7.getRawMessage())); + @@ -108,7 +108,7 @@ index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205 + int min = Math.min(var7.getInput().length(), var7.getCursor()); + MutableComponent mutableComponent = Component.empty() + .withStyle(ChatFormatting.GRAY) -+ .withStyle(style -> style.withClickEvent(new ClickEvent.SuggestCommand("/" + label))); // CraftBukkit // Paper ++ .withStyle(style -> style.withClickEvent(new ClickEvent.SuggestCommand("/" + command))); + if (min > 10) { + mutableComponent.append(CommonComponents.ELLIPSIS); + } diff --git a/leaf-server/minecraft-patches/features/0174-Multithreaded-Tracker.patch b/leaf-server/minecraft-patches/features/0174-Multithreaded-Tracker.patch index 489b8d38..62e6fdf9 100644 --- a/leaf-server/minecraft-patches/features/0174-Multithreaded-Tracker.patch +++ b/leaf-server/minecraft-patches/features/0174-Multithreaded-Tracker.patch @@ -46,10 +46,10 @@ index 1b8193587814225c2ef2c5d9e667436eb50ff6c5..4200d22606c6a3dbdf282792a4007a51 { for (int i = 0; i < this.directByChunk.length; ++i) { diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java -index f3bac0906d8a1c5dea7b0dee13c5cd6fdbbcae49..673703726979562e01eea6add6942c24fd09a205 100644 +index bdc1200ef5317fdaf58973bf580b0a672aee800f..0bca3843e8568b37cda6ae312bdf4f423a0891a9 100644 --- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java +++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java -@@ -340,7 +340,7 @@ public final class RegionizedPlayerChunkLoader { +@@ -344,7 +344,7 @@ public final class RegionizedPlayerChunkLoader { private boolean canGenerateChunks = true; private final ArrayDeque> delayedTicketOps = new ArrayDeque<>(); @@ -631,29 +631,6 @@ index 24710041ccbc70e5506d8d89ae34f0141977f209..05de8a77b389691dd6986f36b4cb8cc0 AttributeInstance attributeInstance = this.instances.get(attribute); if (attributeInstance == null) { return null; -diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java -index 2a7f5f1801d22ca7b06ff9701588451c7f406515..7e517e9ae59c5d32268fae1cade7febe8b2325dc 100644 ---- a/net/minecraft/world/entity/item/PrimedTnt.java -+++ b/net/minecraft/world/entity/item/PrimedTnt.java -@@ -144,12 +144,14 @@ public class PrimedTnt extends Entity implements TraceableEntity { - net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket velocityPacket = new net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket(this); - net.minecraft.network.protocol.game.ClientboundTeleportEntityPacket positionPacket = net.minecraft.network.protocol.game.ClientboundTeleportEntityPacket.teleport(this.getId(), net.minecraft.world.entity.PositionMoveRotation.of(this), java.util.Set.of(), this.onGround); - -- ete.seenBy.stream() -- .filter(viewer -> (viewer.getPlayer().getX() - this.getX()) * (viewer.getPlayer().getY() - this.getY()) * (viewer.getPlayer().getZ() - this.getZ()) < 16 * 16) -- .forEach(viewer -> { -+ // Leaf start - Multithreaded tracker -+ for (var viewer : ete.seenBy()) { -+ if ((viewer.getPlayer().getX() - this.getX()) * (viewer.getPlayer().getY() - this.getY()) * (viewer.getPlayer().getZ() - this.getZ()) < 16 * 16) { - viewer.send(velocityPacket); - viewer.send(positionPacket); -- }); -+ } -+ } -+ // Leaf end - Multithreaded tracker - } - } - // Paper end - Option to prevent TNT from moving in water diff --git a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java index 325ec57df2885f5e81b8a6b61e3a9fed9484b30f..abc5c097861d0decf49d0d3970ab48f1cf8b1cf1 100644 --- a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java diff --git a/leaf-server/minecraft-patches/features/0181-Optimize-Entity-distanceToSqr.patch b/leaf-server/minecraft-patches/features/0181-Optimize-Entity-distanceToSqr.patch index d382d88f..8d772473 100644 --- a/leaf-server/minecraft-patches/features/0181-Optimize-Entity-distanceToSqr.patch +++ b/leaf-server/minecraft-patches/features/0181-Optimize-Entity-distanceToSqr.patch @@ -8,7 +8,7 @@ avoids multiple casting in Entity#distanceTo, using Math#sqrt directly instead o these methods more able to be inlined by the JIT compiler. diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 083d078f569aebbed1ab586ec99709e7c38e13b6..504aaa8fe43092442c3426c96d41dacb03371578 100644 +index 89f76c1f87719b84578ec322625eeadaa2397838..754fc507479f4b0bb4b270dfc18d45632d31cf46 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -2260,31 +2260,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -43,7 +43,7 @@ index 083d078f569aebbed1ab586ec99709e7c38e13b6..504aaa8fe43092442c3426c96d41dacb public void playerTouch(Player player) { } -@@ -5510,4 +5485,34 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5515,4 +5490,34 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // Purpur end - Ridables diff --git a/leaf-server/minecraft-patches/features/0184-TT20-Lag-compensation.patch b/leaf-server/minecraft-patches/features/0184-TT20-Lag-compensation.patch index 4488497e..ecb6fc9b 100644 --- a/leaf-server/minecraft-patches/features/0184-TT20-Lag-compensation.patch +++ b/leaf-server/minecraft-patches/features/0184-TT20-Lag-compensation.patch @@ -7,10 +7,10 @@ Original license: AGPL-3.0 Original project: https://github.com/snackbag/TT20 diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 385762df2014af0a643fb955d39871b818dde4ef..b66bec748d87151eafe8a055c3b659477c042092 100644 +index 993f303a90a7698f0e62b7c39469aa5bff0725d1..65f19d6b9b2a3edb8f24eca988c9f3dae7c1d6df 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1541,6 +1541,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getPlayersByChunk(final int chunkX, final int chunkZ, final NearbyMapType type) { diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java -index f473999938840562b1007a789600342e5796a123..ea4010df54dbd17cdae22d671ea1e4bd7b685b3e 100644 +index 6ce4a98e4d3b633e3c87944c23b6b3f0ff58f159..0f5966932c4211922eccac09ab164fcb69dad582 100644 --- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java +++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java -@@ -540,7 +540,7 @@ public final class ChunkHolderManager { +@@ -542,7 +542,7 @@ public final class ChunkHolderManager { public boolean addTicketAtLevel(final TicketType type, final ChunkPos chunkPos, final int level, final T identifier) { @@ -43,7 +43,7 @@ index f473999938840562b1007a789600342e5796a123..ea4010df54dbd17cdae22d671ea1e4bd } public boolean addTicketAtLevel(final TicketType type, final int chunkX, final int chunkZ, final int level, -@@ -687,7 +687,7 @@ public final class ChunkHolderManager { +@@ -689,7 +689,7 @@ public final class ChunkHolderManager { } public boolean removeTicketAtLevel(final TicketType type, final ChunkPos chunkPos, final int level, final T identifier) { @@ -52,7 +52,7 @@ index f473999938840562b1007a789600342e5796a123..ea4010df54dbd17cdae22d671ea1e4bd } public boolean removeTicketAtLevel(final TicketType type, final int chunkX, final int chunkZ, final int level, final T identifier) { -@@ -1309,7 +1309,7 @@ public final class ChunkHolderManager { +@@ -1330,7 +1330,7 @@ public final class ChunkHolderManager { } public static TicketOperation addOp(final ChunkPos chunk, final TicketType type, final int ticketLevel, final T identifier) { @@ -61,7 +61,7 @@ index f473999938840562b1007a789600342e5796a123..ea4010df54dbd17cdae22d671ea1e4bd } public static TicketOperation addOp(final int chunkX, final int chunkZ, final TicketType type, final int ticketLevel, final T identifier) { -@@ -1321,7 +1321,7 @@ public final class ChunkHolderManager { +@@ -1342,7 +1342,7 @@ public final class ChunkHolderManager { } public static TicketOperation removeOp(final ChunkPos chunk, final TicketType type, final int ticketLevel, final T identifier) { diff --git a/leaf-server/minecraft-patches/features/0217-Async-chunk-send.patch b/leaf-server/minecraft-patches/features/0217-Async-chunk-send.patch index e648120f..ca61c7ca 100644 --- a/leaf-server/minecraft-patches/features/0217-Async-chunk-send.patch +++ b/leaf-server/minecraft-patches/features/0217-Async-chunk-send.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Async chunk send diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java -index 32608df3da169159c070f37cb55407f4f6187744..3a78e7512772fd3f7cf8f221e3a72474def14bea 100644 +index 0bca3843e8568b37cda6ae312bdf4f423a0891a9..71561ac77e32d7f971c343ad83a268c076ce668a 100644 --- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java +++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java -@@ -436,7 +436,15 @@ public final class RegionizedPlayerChunkLoader { +@@ -440,7 +440,15 @@ public final class RegionizedPlayerChunkLoader { // Note: drop isAlive() check so that chunks properly unload client-side when the player dies ((ChunkSystemChunkHolder)((ChunkSystemServerLevel)this.world).moonrise$getChunkTaskScheduler().chunkHolderManager .getChunkHolder(chunkX, chunkZ).vanillaChunkHolder).moonrise$removeReceivedChunk(this.player); @@ -26,7 +26,7 @@ index 32608df3da169159c070f37cb55407f4f6187744..3a78e7512772fd3f7cf8f221e3a72474 if (io.papermc.paper.event.packet.PlayerChunkUnloadEvent.getHandlerList().getRegisteredListeners().length > 0) { new io.papermc.paper.event.packet.PlayerChunkUnloadEvent(player.getBukkitEntity().getWorld().getChunkAt(new ChunkPos(chunkX, chunkZ).longKey), player.getBukkitEntity()).callEvent(); diff --git a/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java b/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java -index 526c117e0d53ad527eb610c79cdc46ec16b18c0c..9151e580b4840fddab04e487d723130a5a769a1a 100644 +index 9f6d7c5dc0e591488a8a3763d8a1f1b3671d5299..6123afd9c27f1f9a954b173413e61bfb276b0f0a 100644 --- a/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java +++ b/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java @@ -75,6 +75,45 @@ public class ClientboundLevelChunkPacketData { @@ -98,7 +98,7 @@ index 8578d1f78ddd1bb75f3230f04bfaa35af9f5f822..4f54c4c8e49c1e0352ab2c5c23277b41 private ClientboundLevelChunkWithLightPacket(RegistryFriendlyByteBuf buffer) { this.x = buffer.readInt(); diff --git a/net/minecraft/server/network/PlayerChunkSender.java b/net/minecraft/server/network/PlayerChunkSender.java -index 14878690a88fd4de3e2c127086607e6c819c636c..69581890ab34af20f9c608678f378ec9fe3ec775 100644 +index 0376a10ee0544b13e8fd629a7b13f78811e57a30..638d622992b8bee993c48c170bba8ab9f0f534e6 100644 --- a/net/minecraft/server/network/PlayerChunkSender.java +++ b/net/minecraft/server/network/PlayerChunkSender.java @@ -64,13 +64,29 @@ public class PlayerChunkSender { diff --git a/leaf-server/minecraft-patches/features/0219-SparklyPaper-Parallel-world-ticking.patch b/leaf-server/minecraft-patches/features/0219-SparklyPaper-Parallel-world-ticking.patch index 350efe8c..5eb1a5fe 100644 --- a/leaf-server/minecraft-patches/features/0219-SparklyPaper-Parallel-world-ticking.patch +++ b/leaf-server/minecraft-patches/features/0219-SparklyPaper-Parallel-world-ticking.patch @@ -6,19 +6,19 @@ Subject: [PATCH] SparklyPaper: Parallel world ticking Original project: https://github.com/SparklyPower/SparklyPaper diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java -index ea4010df54dbd17cdae22d671ea1e4bd7b685b3e..8d53cb917e9f623a67aba066c6a21f278f1f0967 100644 +index 0f5966932c4211922eccac09ab164fcb69dad582..36ce2be30478d734d8326eeeb004ba7dc61e0642 100644 --- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java +++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java -@@ -1116,7 +1116,7 @@ public final class ChunkHolderManager { +@@ -1142,7 +1142,7 @@ public final class ChunkHolderManager { if (changedFullStatus.isEmpty()) { return; } - if (!TickThread.isTickThread()) { + if (org.dreeam.leaf.config.modules.async.SparklyPaperParallelWorldTicking.enabled && !TickThread.isTickThreadFor(world) || !TickThread.isTickThread()) { // SparklyPaper - parallel world ticking // Leaf - SparklyPaper - parallel world ticking mod (make configurable) - this.taskScheduler.scheduleChunkTask(() -> { - final ArrayDeque pendingFullLoadUpdate = ChunkHolderManager.this.pendingFullLoadUpdate; - for (int i = 0, len = changedFullStatus.size(); i < len; ++i) { -@@ -1142,7 +1142,12 @@ public final class ChunkHolderManager { + // These will be handled on the next ServerChunkCache$MainThreadExecutor#pollTask, as it runs the distance manager update + // which will invoke processTicketUpdates + this.offThreadPendingFullLoadUpdate.addAll(changedFullStatus); +@@ -1163,7 +1163,12 @@ public final class ChunkHolderManager { // note: never call while inside the chunk system, this will absolutely break everything public void processUnloads() { @@ -32,15 +32,15 @@ index ea4010df54dbd17cdae22d671ea1e4bd7b685b3e..8d53cb917e9f623a67aba066c6a21f27 if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) { throw new IllegalStateException("Cannot unload chunks recursively"); -@@ -1424,7 +1429,7 @@ public final class ChunkHolderManager { - - List changedFullStatus = null; - +@@ -1429,7 +1434,7 @@ public final class ChunkHolderManager { + if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) { + throw new IllegalStateException("Cannot update ticket level while unloading chunks or updating entity manager"); + } - final boolean isTickThread = TickThread.isTickThread(); + final boolean isTickThread = org.dreeam.leaf.config.modules.async.SparklyPaperParallelWorldTicking.enabled && TickThread.isTickThreadFor(world) || TickThread.isTickThread(); // SparklyPaper - parallel world ticking // Leaf - SparklyPaper - parallel world ticking mod (make configurable) - boolean ret = false; - final boolean canProcessFullUpdates = processFullUpdates & isTickThread; + if (!PlatformHooks.get().allowAsyncTicketUpdates() && isTickThread) { + TickThread.ensureTickThread("Cannot asynchronously process ticket updates"); diff --git a/io/papermc/paper/redstone/RedstoneWireTurbo.java b/io/papermc/paper/redstone/RedstoneWireTurbo.java index ff747a1ecdf3c888bca0d69de4f85dcd810b6139..b288d57d9f7bd0ccf1877cf9920bd67288ff22f7 100644 --- a/io/papermc/paper/redstone/RedstoneWireTurbo.java @@ -80,7 +80,7 @@ index 582e012222123e5001c34153f2ee1ab1d08935fd..c0bce2293d07ca58cc5bc9e036ab8dca List states = new java.util.ArrayList<>(level.capturedBlockStates.values()); level.capturedBlockStates.clear(); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index b66bec748d87151eafe8a055c3b659477c042092..212fe44eee637695555af510ea7c6800a52e6842 100644 +index 65f19d6b9b2a3edb8f24eca988c9f3dae7c1d6df..940aad1282c48dfeaa906d1c9abfc269fbe05bd7 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -291,6 +291,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop serverPlayer1.connection.suspendFlushing()); this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit -@@ -1728,28 +1759,50 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop, ServerLevel> oldLevels = this.levels; Map, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels); newLevels.remove(level.dimension()); @@ -379,7 +379,7 @@ index 4bf87ebb49880b8e09203a48fce6371398281561..27bbe0c43dd9b7f8bf932a6b4825ce2c } else if (this.visible.remove(advancementHolder)) { idOutput.add(advancementHolder.id()); diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java -index 5af545d4ad93bcd2a9dce7035d750bb19da0f3b2..50630dabe4220b8ac810a0395d70360879fdeabc 100644 +index 77f11179836636424927843f5f10c3fd23d2b2d4..9b8d119116b0c3a51d3fe2ff7efb33cc39627cc4 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java @@ -198,6 +198,12 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -396,7 +396,7 @@ index 5af545d4ad93bcd2a9dce7035d750bb19da0f3b2..50630dabe4220b8ac810a0395d703608 // Gale start - Pufferfish - SIMD support diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java -index eaaa66c4d86d4ebda0acf8f1dbe8ecb55aa28285..12cf6dc9bac109a4feeeeede5f3762b20ea582bb 100644 +index 8f41326fda8c5f9f6926038508be6c6529b051bc..46e171ca454253c32e22c0c18587e9a7ba19f331 100644 --- a/net/minecraft/server/level/ServerChunkCache.java +++ b/net/minecraft/server/level/ServerChunkCache.java @@ -175,7 +175,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @@ -731,7 +731,7 @@ index 3cd9b0df617715d0b3e70a6096e52bb5d22ab426..f1002643589f67adce26667b1750a129 serverPlayer.connection = player.connection; serverPlayer.restoreFrom(player, keepInventory); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 2e5d4b8fc6a0ec6692eac63bce13b3f32d3f3e76..0e0d87f2c45ac485af326adfec5a1779f06c6d6c 100644 +index 8d7e7dc019ff40f60006f3b2677c29251d7cecc5..71b4d54814c815bc9e8fc6be820260180d0aa208 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3510,15 +3510,40 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -972,7 +972,7 @@ index 2258736e6f9f52efe5bd353b8949a7a0b9a4fdb8..aa71eca6cd69cfa79b84cb181c25c4be } else { Entity entity = owner.teleport( diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java -index c4721eb0efe34f5e313bc890b4e960144eca4fe1..9dd3187fd968ab95e9d55b4c8cc74e782cc0f241 100644 +index 1f601781643945920c7522b9c6100d0a37ad535d..f32148322f56f766108c6958124731a885c3bbc7 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -96,8 +96,14 @@ public abstract class AbstractContainerMenu { diff --git a/leaf-server/minecraft-patches/features/0220-SparklyPaper-Track-each-world-MSPT.patch b/leaf-server/minecraft-patches/features/0220-SparklyPaper-Track-each-world-MSPT.patch index de962762..7294a800 100644 --- a/leaf-server/minecraft-patches/features/0220-SparklyPaper-Track-each-world-MSPT.patch +++ b/leaf-server/minecraft-patches/features/0220-SparklyPaper-Track-each-world-MSPT.patch @@ -6,10 +6,10 @@ Subject: [PATCH] SparklyPaper: Track each world MSPT Original project: https://github.com/SparklyPower/SparklyPaper diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 212fe44eee637695555af510ea7c6800a52e6842..eb3f6e638147c46e0cdb04d9c4bd08b11cff7347 100644 +index 940aad1282c48dfeaa906d1c9abfc269fbe05bd7..50da03adea9b496ef3622ee163daf169fd045c2d 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1684,7 +1684,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function threadFunction) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java -index 50630dabe4220b8ac810a0395d70360879fdeabc..2e03020a67c7f59a3c554ab720fba831ed13ec82 100644 +index 9b8d119116b0c3a51d3fe2ff7efb33cc39627cc4..436e73086678e4afbf94f1b7bca9b0c74266f762 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java @@ -204,6 +204,11 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -1002,7 +1002,7 @@ index 6463c3c9b08d6058f2843c225b08a40fc30a960b..126bd98bc5980a2f1177bd7c74918b86 @Override public boolean canContinueToUse() { diff --git a/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java -index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302f5cea0fe 100644 +index f15da598cb1d7872fafb8b173e5134b9667c9a9f..d84b7b797e526670ddbabecc3ff773e589489f7e 100644 --- a/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java +++ b/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java @@ -41,14 +41,73 @@ public abstract class MoveToBlockGoal extends Goal { @@ -1013,7 +1013,7 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302 + protected boolean poll() { + if (!(this.mob.getGoalCtx().result() instanceof BlockPos blockPos1)) return false; + if (!this.mob.level().hasChunkAt(blockPos1) -+ || !this.mob.isWithinRestriction(blockPos1) ++ || !this.mob.isWithinHome(blockPos1) + || !this.isValidTarget(this.mob.level(), blockPos1)) { + return false; + } @@ -1043,9 +1043,9 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302 + final int searchRange = this.searchRange; + final int verticalSearchRange = this.verticalSearchRange; + final BlockPos blockPos = mob.blockPosition(); -+ final float restrictRadius = mob.getRestrictRadius(); -+ final BlockPos restrictCenter = mob.getRestrictCenter(); -+ ctx.wake = () -> findNearestBlockAsync(ty, toRemove, mob, serverLevel, verticalSearchStart, searchRange, verticalSearchRange, blockPos, restrictRadius, restrictCenter); ++ final float homeRadius = mob.getHomeRadius(); ++ final BlockPos homePos = mob.getHomePosition(); ++ ctx.wake = () -> findNearestBlockAsync(ty, toRemove, mob, serverLevel, verticalSearchStart, searchRange, verticalSearchRange, blockPos, homeRadius, homePos); + return false; + } + @@ -1094,8 +1094,8 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302 + final int searchRange, + final int verticalSearchRange, + final BlockPos blockPos, -+ final float restrictRadius, -+ final BlockPos restrictCenter ++ final float homeRadius, ++ final BlockPos homePos + ) { + BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos(); + for (int i2 = verticalSearchStart; i2 <= verticalSearchRange; i2 = i2 > 0 ? -i2 : 1 - i2) { @@ -1104,7 +1104,7 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302 + for (int i5 = i4 < i3 && i4 > -i3 ? i3 : 0; i5 <= i3; i5 = i5 > 0 ? -i5 : 1 - i5) { + mutableBlockPos.setWithOffset(blockPos, i4, i2 - 1, i5); + if (!serverLevel.hasChunkAt(mutableBlockPos)) continue; -+ if (isWithinRestriction(restrictRadius, restrictCenter, mutableBlockPos) ++ if (isWithinHome(homeRadius, homePos, mutableBlockPos) + && isValidTargetAsync(ty, toRemove, mob, serverLevel, mutableBlockPos)) { + return mutableBlockPos.immutable(); + } @@ -1115,8 +1115,8 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302 + return null; + } + -+ private static boolean isWithinRestriction(float restrictRadius, BlockPos restrictCenter, BlockPos pos) { -+ return restrictRadius == -1.0F || restrictCenter.distSqr(pos) < restrictRadius * restrictRadius; ++ private static boolean isWithinHome(float homeRadius, BlockPos homePos, BlockPos pos) { ++ return homeRadius == -1.0F || homePos.distSqr(pos) < homeRadius * homeRadius; + } + // Leaf end - Async target finding + diff --git a/leaf-server/minecraft-patches/features/0243-PaperPR-Add-ticket-on-player-join-to-avoid-chunk-loa.patch b/leaf-server/minecraft-patches/features/0243-PaperPR-Add-ticket-on-player-join-to-avoid-chunk-loa.patch index 300f882f..52feb72f 100644 --- a/leaf-server/minecraft-patches/features/0243-PaperPR-Add-ticket-on-player-join-to-avoid-chunk-loa.patch +++ b/leaf-server/minecraft-patches/features/0243-PaperPR-Add-ticket-on-player-join-to-avoid-chunk-loa.patch @@ -15,19 +15,19 @@ The delay is currently set to 2 seconds, however, we may want to adjust this bef fixes Paper#9581 diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java -index 5b778b8366d99a8b03b4367d44ffabade2b58ebe..ef416d38f3ca57826c46e7401804630e46771146 100644 +index 71561ac77e32d7f971c343ad83a268c076ce668a..380aaa64a3e35e8b47165859e5107cbee333dc24 100644 --- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java +++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java @@ -48,6 +48,7 @@ public final class RegionizedPlayerChunkLoader { public static final TicketType PLAYER_TICKET = ChunkSystemTicketType.create("chunk_system:player_ticket", Long::compareTo); - public static final TicketType PLAYER_TICKET_DELAYED = ChunkSystemTicketType.create("chunk_system:player_ticket_delayed", Long::compareTo, 5L * 20L); + public static final TicketType PLAYER_TICKET_DELAYED = ChunkSystemTicketType.create("chunk_system:player_ticket_delayed", Long::compareTo, 1L); + public static final TicketType PLAYER_JOIN = ChunkSystemTicketType.create("chunk_system:player_join", (a, b) -> 0, 5 * 20); // Paper - Add ticket on player join to avoid chunk load-unload-load cycle public static final int GENERATED_TICKET_LEVEL = ChunkHolderManager.FULL_LOADED_TICKET_LEVEL; public static final int LOADED_TICKET_LEVEL = ChunkTaskScheduler.getTicketLevel(ChunkStatus.EMPTY); diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 42822499ad559bce6734a16056d6e04cef318569..cea9507d183920c3a7f5e96f7dafebe4c9e33a19 100644 +index f1002643589f67adce26667b1750a1296c1fb67d..1a03bf5184b1b85d4cea97dc73795e8725bf2613 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -435,6 +435,13 @@ public abstract class PlayerList { diff --git a/leaf-server/minecraft-patches/features/0245-Protocol-Core.patch b/leaf-server/minecraft-patches/features/0245-Protocol-Core.patch index f12dac18..06d9b7f9 100644 --- a/leaf-server/minecraft-patches/features/0245-Protocol-Core.patch +++ b/leaf-server/minecraft-patches/features/0245-Protocol-Core.patch @@ -22,10 +22,10 @@ index 56fd1ed7ccaf96e7eedea60fbdbf7f934939d563..d2f522ea6d0a209496848af073c9af1c } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 2d327688bf48cf2477f60dd2573fa5136a077427..e7cf3a1d5a8954ce7e1dd181deb5d0ba562a8eb1 100644 +index 440427d23747474a400487d372d079694caa1c18..7be848b2058bddc13a20b44a1853f4aec0eb4769 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1822,6 +1822,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop CODEC = StringRepresentable.fromEnum(() -> VALUES_ARRAY); // Gale end - JettPack - reduce array allocations diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java -index a4460f98830eba9cbd695b52f98d07fe0631a4a5..9b2f0af96085f52ab8e31bdc1de1ae7435c2128d 100644 +index 1039cf820ecac54e290dc5dfe7f714bf2b9d2bdd..7426a7f4bf17277b0355185b58973140dab3c7b9 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -529,7 +529,7 @@ public class ServerExplosion implements Explosion { +@@ -532,7 +532,7 @@ public class ServerExplosion implements Explosion { double d4 = (1.0 - d) * f1 * knockbackMultiplier; double d5; if (entity instanceof LivingEntity livingEntity) { @@ -29,7 +29,7 @@ index a4460f98830eba9cbd695b52f98d07fe0631a4a5..9b2f0af96085f52ab8e31bdc1de1ae74 } else { d5 = d4; } -@@ -558,6 +558,49 @@ public class ServerExplosion implements Explosion { +@@ -561,6 +561,49 @@ public class ServerExplosion implements Explosion { } } diff --git a/leaf-server/minecraft-patches/features/0274-Fix-crash-during-parsing-unknown-command-message.patch b/leaf-server/minecraft-patches/features/0274-Fix-crash-during-parsing-unknown-command-message.patch index 68096e14..7d94ac4d 100644 --- a/leaf-server/minecraft-patches/features/0274-Fix-crash-during-parsing-unknown-command-message.patch +++ b/leaf-server/minecraft-patches/features/0274-Fix-crash-during-parsing-unknown-command-message.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Fix crash during parsing unknown command message Use direct impl for unknown commands message parse to prevent crash diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java -index b30c69be528458792798724a1c6f7205785537bd..a6cd207eb10c7fd166fafb52d310c15e4019a981 100644 +index cc1c2152c6949d1130b55de31ef22f15f717c7a5..eed14e622b6a34ec55d9a6ce2efc2a2d149e650c 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -687,7 +687,7 @@ public class Commands { +@@ -652,7 +652,7 @@ public class Commands { net.kyori.adventure.text.Component detailComponent = null; if (rawMessage.contains("")) { @@ -18,9 +18,9 @@ index b30c69be528458792798724a1c6f7205785537bd..a6cd207eb10c7fd166fafb52d310c15e } final String input = commandSyntaxException.getInput(); -@@ -730,7 +730,7 @@ public class Commands { +@@ -695,7 +695,7 @@ public class Commands { private static net.kyori.adventure.text.Component getVanillaUnknownCommandMessage( - net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String label + net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String command ) { - builder.color(net.kyori.adventure.text.format.NamedTextColor.RED).append(io.papermc.paper.command.brigadier.MessageComponentSerializer.message().deserialize(var7.getRawMessage())); + builder.color(net.kyori.adventure.text.format.NamedTextColor.RED).append(io.papermc.paper.adventure.PaperAdventure.asAdventure(ComponentUtils.fromMessage(var7.getRawMessage()))); // Leaf - Fix crash during parsing unknown command message diff --git a/leaf-server/minecraft-patches/features/0276-do-not-log-invalid-flatten-text-component-parse.patch b/leaf-server/minecraft-patches/features/0276-do-not-log-invalid-flatten-text-component-parse.patch index 3a4c7244..68eecd26 100644 --- a/leaf-server/minecraft-patches/features/0276-do-not-log-invalid-flatten-text-component-parse.patch +++ b/leaf-server/minecraft-patches/features/0276-do-not-log-invalid-flatten-text-component-parse.patch @@ -5,10 +5,10 @@ Subject: [PATCH] do not log invalid flatten text component parse diff --git a/ca/spottedleaf/dataconverter/minecraft/versions/V4290.java b/ca/spottedleaf/dataconverter/minecraft/versions/V4290.java -index ca9e3667b420f54f42b358068c102fe0cae4102d..88901f4783a85cc764bb2db20aed69f96b2bc8c3 100644 +index d5dfa9a64e2d3f9a37a5bdde60b92ed93bd89aed..83155bf0befab0207a4b756b19527d071037a870 100644 --- a/ca/spottedleaf/dataconverter/minecraft/versions/V4290.java +++ b/ca/spottedleaf/dataconverter/minecraft/versions/V4290.java -@@ -189,7 +189,7 @@ public final class V4290 { +@@ -254,7 +254,7 @@ public final class V4290 { return ret; } } catch (final JsonParseException ex) { diff --git a/leaf-server/paper-patches/features/0004-Gale-configuration.patch b/leaf-server/paper-patches/features/0004-Gale-configuration.patch index 082ac3d2..b36f0270 100644 --- a/leaf-server/paper-patches/features/0004-Gale-configuration.patch +++ b/leaf-server/paper-patches/features/0004-Gale-configuration.patch @@ -144,10 +144,10 @@ index 05339a176083af667c16f77d76dc1878dafce3f0..9ca55cba185b9de566f911b08d671bee } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 1da86b25e3b89c79d4f3920c8d2ef10ee2757f65..c92adb939892e1054f7b2d24070f43e6104dda2b 100644 +index 03dfcb4665d0279c825a74f3f999c92fe2bd22cb..bcdd1581ed564e8002f8120ab2efa38871c40ba7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1073,6 +1073,7 @@ public final class CraftServer implements Server { +@@ -1045,6 +1045,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); @@ -155,7 +155,7 @@ index 1da86b25e3b89c79d4f3920c8d2ef10ee2757f65..c92adb939892e1054f7b2d24070f43e6 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -2967,6 +2968,14 @@ public final class CraftServer implements Server { +@@ -2944,6 +2945,14 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } 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 a5289ae4..6763d9b3 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: 469a4de5ce87dcf6461e067d29a88507231f4a6b +Commit: afcdf9bb72f88eb18266f5efd8c135904d82fd3d Patches listed below are removed in this patch, They exists in Gale or Leaf: * "Rebrand.patch" @@ -127,7 +127,7 @@ 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 9e32cbb2664f9e162b384050ea7f166702ba0029..0976a7289d424a81ca73c1e89f339431ec1b26ff 100644 +index 94bf04bb1c646ec5ba1d42f4b7b3e6c200707beb..3e41a308cf92b841b5375250d1380d16af3d0309 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -142,6 +142,10 @@ public class MobGoalHelper { @@ -486,10 +486,10 @@ index 54ab8a0b502a2665027f293e6ddebf6c0a2af215..f967560da343867fdc1c380a42874b07 + // 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 c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0ac01f8b7a 100644 +index bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcfe876f88e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -429,6 +429,20 @@ public final class CraftServer implements Server { +@@ -428,6 +428,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 @@ -510,7 +510,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1074,6 +1088,7 @@ public final class CraftServer implements Server { +@@ -1046,6 +1060,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 @@ -518,7 +518,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1089,6 +1104,7 @@ public final class CraftServer implements Server { +@@ -1061,6 +1076,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -526,7 +526,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1106,6 +1122,7 @@ public final class CraftServer implements Server { +@@ -1078,6 +1094,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -534,7 +534,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1605,6 +1622,60 @@ public final class CraftServer implements Server { +@@ -1577,6 +1594,60 @@ public final class CraftServer implements Server { return true; } @@ -595,7 +595,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2976,6 +3047,18 @@ public final class CraftServer implements Server { +@@ -2953,6 +3024,18 @@ public final class CraftServer implements Server { } // Gale end - Gale configuration - API @@ -614,7 +614,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a @Override public void restart() { CraftServer.this.restart(); -@@ -3215,4 +3298,18 @@ public final class CraftServer implements Server { +@@ -3192,4 +3275,18 @@ public final class CraftServer implements Server { public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } diff --git a/leaf-server/paper-patches/features/0012-Print-stack-trace-for-plugins-not-shutting-down-task.patch b/leaf-server/paper-patches/features/0012-Print-stack-trace-for-plugins-not-shutting-down-task.patch index 85468675..bd80c121 100644 --- a/leaf-server/paper-patches/features/0012-Print-stack-trace-for-plugins-not-shutting-down-task.patch +++ b/leaf-server/paper-patches/features/0012-Print-stack-trace-for-plugins-not-shutting-down-task.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 23bd30ad769507e3eeb4e397e57a2c0ac01f8b7a..889687ee9bcea490e8a7ee29d0a1f81011cd4a34 100644 +index b66a7e4da7fd3fe22fef65a201705dcfe876f88e..db4bbabf5f6c24a32fb96f0ce5e642adb468c805 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1184,6 +1184,13 @@ public final class CraftServer implements Server { +@@ -1156,6 +1156,13 @@ public final class CraftServer implements Server { plugin.getPluginMeta().getDisplayName(), "This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies." )); diff --git a/leaf-server/paper-patches/features/0016-Do-not-log-legacy-Material-initialization.patch b/leaf-server/paper-patches/features/0015-Do-not-log-legacy-Material-initialization.patch similarity index 100% rename from leaf-server/paper-patches/features/0016-Do-not-log-legacy-Material-initialization.patch rename to leaf-server/paper-patches/features/0015-Do-not-log-legacy-Material-initialization.patch diff --git a/leaf-server/paper-patches/features/0017-Do-not-log-Not-Secure-marker.patch b/leaf-server/paper-patches/features/0016-Do-not-log-Not-Secure-marker.patch similarity index 100% rename from leaf-server/paper-patches/features/0017-Do-not-log-Not-Secure-marker.patch rename to leaf-server/paper-patches/features/0016-Do-not-log-Not-Secure-marker.patch diff --git a/leaf-server/paper-patches/features/0018-Reduce-array-allocations.patch b/leaf-server/paper-patches/features/0017-Reduce-array-allocations.patch similarity index 98% rename from leaf-server/paper-patches/features/0018-Reduce-array-allocations.patch rename to leaf-server/paper-patches/features/0017-Reduce-array-allocations.patch index a75e6bde..be94a771 100644 --- a/leaf-server/paper-patches/features/0018-Reduce-array-allocations.patch +++ b/leaf-server/paper-patches/features/0017-Reduce-array-allocations.patch @@ -98,7 +98,7 @@ index db92261a6cb3758391108361096417c61bc82cdc..1a14fddb36ca3c14d243304db629d0c5 public SortedList(final E[] elements, final Comparator comparator) { diff --git a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java -index 84fab94f38e8ee51f2c82fc8c3ddffe2a24d7148..6d1d05caa7c3b6a43770aa185070317a89c1bd74 100644 +index af480008adc07c63344d625101d1bf42fab96b5d..8c9609b95cf27b6316c48a554b2c508aa527b964 100644 --- a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java +++ b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java @@ -178,7 +178,7 @@ public class PaperCommands implements Commands, PaperRegistrar getWorlds() { diff --git a/leaf-server/paper-patches/features/0048-Cache-chunk-key.patch b/leaf-server/paper-patches/features/0047-Cache-chunk-key.patch similarity index 87% rename from leaf-server/paper-patches/features/0048-Cache-chunk-key.patch rename to leaf-server/paper-patches/features/0047-Cache-chunk-key.patch index b0f13051..0bffa125 100644 --- a/leaf-server/paper-patches/features/0048-Cache-chunk-key.patch +++ b/leaf-server/paper-patches/features/0047-Cache-chunk-key.patch @@ -9,10 +9,10 @@ This patch didn't cahce SectionPos or BlockPos to chunkKey, since it needs to co TODO: Cache block pos and section pos, whether need? diff --git a/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java b/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java -index 036c1a287db04c0191e5f84b027ea68d31447cbc..3cda726b5ef7419da512889d3edd1fb6935e6a54 100644 +index bb5b9c9cb0c73edce1dbe3758ee2db0fcc8f4e40..7e3ec4b74406e040ae79d63845fc57bfa3d78a80 100644 --- a/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java -@@ -20,7 +20,7 @@ public final class CoordinateUtils { +@@ -21,7 +21,7 @@ public final class CoordinateUtils { } public static long getChunkKey(final ChunkPos pos) { diff --git a/leaf-server/paper-patches/features/0049-Async-structure-locate-api.patch b/leaf-server/paper-patches/features/0048-Async-structure-locate-api.patch similarity index 100% rename from leaf-server/paper-patches/features/0049-Async-structure-locate-api.patch rename to leaf-server/paper-patches/features/0048-Async-structure-locate-api.patch diff --git a/leaf-server/paper-patches/features/0050-PlayerInventoryOverflowEvent.patch b/leaf-server/paper-patches/features/0049-PlayerInventoryOverflowEvent.patch similarity index 100% rename from leaf-server/paper-patches/features/0050-PlayerInventoryOverflowEvent.patch rename to leaf-server/paper-patches/features/0049-PlayerInventoryOverflowEvent.patch diff --git a/leaf-server/paper-patches/features/0051-SparklyPaper-Parallel-world-ticking.patch b/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch similarity index 99% rename from leaf-server/paper-patches/features/0051-SparklyPaper-Parallel-world-ticking.patch rename to leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch index 8d6142db..fb3f3c31 100644 --- a/leaf-server/paper-patches/features/0051-SparklyPaper-Parallel-world-ticking.patch +++ b/leaf-server/paper-patches/features/0050-SparklyPaper-Parallel-world-ticking.patch @@ -1508,7 +1508,7 @@ index 196835bdf95ba0e149b2977e9ef41698971f501f..eb7e63d4549e672ff1206055d2d75439 net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item); diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java -index 4124d16267c58133c8053b61e056b056f3a28f31..83729e65520996b020386487caca9bf854322a8b 100644 +index eb51cfce4069035664d2d1e3d30ab681e917dee6..aea45592a3e870b9474e64317c329c55ffbebfdb 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java @@ -195,14 +195,14 @@ public final class CraftBlockStates { diff --git a/leaf-server/paper-patches/features/0052-Paper-PR-Throttle-failed-spawn-attempts.patch b/leaf-server/paper-patches/features/0051-Paper-PR-Throttle-failed-spawn-attempts.patch similarity index 94% rename from leaf-server/paper-patches/features/0052-Paper-PR-Throttle-failed-spawn-attempts.patch rename to leaf-server/paper-patches/features/0051-Paper-PR-Throttle-failed-spawn-attempts.patch index 45286aed..36593b54 100644 --- a/leaf-server/paper-patches/features/0052-Paper-PR-Throttle-failed-spawn-attempts.patch +++ b/leaf-server/paper-patches/features/0051-Paper-PR-Throttle-failed-spawn-attempts.patch @@ -31,10 +31,10 @@ vain. Throttling spawn attempts in suspected spawnproof chunks improves performance without noticeably advantaging or disadvantaging the mob farm. diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -index 9511f978f6c7da506f67928f5a5a92ecf28e5930..6c298304f842612d0e063b578f274eed04b32960 100644 +index 8e65586182bd586c95b8c4873fab6d6ff5975243..ed687b0ab589fd2ddb8bf77f42ba42cf8b1c2ea7 100644 --- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -@@ -182,6 +182,17 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -183,6 +183,17 @@ public class WorldConfiguration extends ConfigurationPart { @MergeMap public Reference2IntMap ticksPerSpawn = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1))); diff --git a/leaf-server/paper-patches/features/0053-Async-playerdata-saving.patch b/leaf-server/paper-patches/features/0052-Async-playerdata-saving.patch similarity index 100% rename from leaf-server/paper-patches/features/0053-Async-playerdata-saving.patch rename to leaf-server/paper-patches/features/0052-Async-playerdata-saving.patch diff --git a/leaf-server/paper-patches/features/0054-Async-chunk-send.patch b/leaf-server/paper-patches/features/0053-Async-chunk-send.patch similarity index 100% rename from leaf-server/paper-patches/features/0054-Async-chunk-send.patch rename to leaf-server/paper-patches/features/0053-Async-chunk-send.patch diff --git a/leaf-server/paper-patches/features/0055-Optimise-player-movement-checks.patch b/leaf-server/paper-patches/features/0054-Optimise-player-movement-checks.patch similarity index 100% rename from leaf-server/paper-patches/features/0055-Optimise-player-movement-checks.patch rename to leaf-server/paper-patches/features/0054-Optimise-player-movement-checks.patch diff --git a/leaf-server/paper-patches/features/0056-optimise-ReferenceList.patch b/leaf-server/paper-patches/features/0055-optimise-ReferenceList.patch similarity index 100% rename from leaf-server/paper-patches/features/0056-optimise-ReferenceList.patch rename to leaf-server/paper-patches/features/0055-optimise-ReferenceList.patch diff --git a/leaf-server/paper-patches/features/0057-cache-getBiome.patch b/leaf-server/paper-patches/features/0056-cache-getBiome.patch similarity index 100% rename from leaf-server/paper-patches/features/0057-cache-getBiome.patch rename to leaf-server/paper-patches/features/0056-cache-getBiome.patch diff --git a/leaf-server/paper-patches/features/0058-dump-pwt-thread.patch b/leaf-server/paper-patches/features/0057-dump-pwt-thread.patch similarity index 100% rename from leaf-server/paper-patches/features/0058-dump-pwt-thread.patch rename to leaf-server/paper-patches/features/0057-dump-pwt-thread.patch diff --git a/leaf-server/paper-patches/features/0059-Paw-optimization.patch b/leaf-server/paper-patches/features/0058-Paw-optimization.patch similarity index 95% rename from leaf-server/paper-patches/features/0059-Paw-optimization.patch rename to leaf-server/paper-patches/features/0058-Paw-optimization.patch index 1d382205..56c5e950 100644 --- a/leaf-server/paper-patches/features/0059-Paw-optimization.patch +++ b/leaf-server/paper-patches/features/0058-Paw-optimization.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Paw optimization Some random optimizations diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java -index 6ea7d087acd3c53b7a50849b18ee9bf6d01d0e7c..2ebe60d55deead635aa8ae6c611de6c097e2f9bc 100644 +index ae9c9a96ac070f629564fba867749df173fd4f85..461b7ae34a4448cac0f9ca315b25ed9e7564f0b8 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java @@ -244,13 +244,37 @@ public class CraftBlockData implements BlockData { diff --git a/leaf-server/paper-patches/features/0060-Update-spigot-mapping-to-compat-spigot-reobf-mapping.patch b/leaf-server/paper-patches/features/0060-Update-spigot-mapping-to-compat-spigot-reobf-mapping.patch deleted file mode 100644 index 9080b1e7..00000000 --- a/leaf-server/paper-patches/features/0060-Update-spigot-mapping-to-compat-spigot-reobf-mapping.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> -Date: Thu, 19 Jun 2025 07:37:19 +0800 -Subject: [PATCH] Update spigot mapping to compat spigot reobf mapping plugins - - -diff --git a/src/main/java/io/papermc/paper/util/MappingEnvironment.java b/src/main/java/io/papermc/paper/util/MappingEnvironment.java -index d22e477e3b1cebb3ffc5b96261b8d4fb4ef5b240..b9d5ee2f72993f1a9d65a55988f512b6e9c5f1d8 100644 ---- a/src/main/java/io/papermc/paper/util/MappingEnvironment.java -+++ b/src/main/java/io/papermc/paper/util/MappingEnvironment.java -@@ -11,7 +11,7 @@ import org.checkerframework.framework.qual.DefaultQualifier; - @DefaultQualifier(NonNull.class) - public final class MappingEnvironment { - public static final boolean DISABLE_PLUGIN_REMAPPING = Boolean.getBoolean("paper.disablePluginRemapping"); -- public static final String LEGACY_CB_VERSION = "v1_21_R4"; -+ public static final String LEGACY_CB_VERSION = "v1_21_R5"; // Leaf - Update spigot mapping to compat spigot reobf mapping plugins - private static final @Nullable String MAPPINGS_HASH = readMappingsHash(); - private static final boolean REOBF = checkReobf(); -