From 8c8a8ac99686c4c84c190d0f5e2efe5ca70963be Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Thu, 29 Feb 2024 09:31:12 -0500 Subject: [PATCH] Add Legacy LeafConfig converter --- patches/removed/server/0002-Leaf-Config.patch | 214 ++++++++++++++++ .../0003-Leaf-Config-legacy-converter.patch | 242 ++++++++++++++++++ ...tils.patch => 0004-Pufferfish-Utils.patch} | 0 ...try.patch => 0005-Pufferfish-Sentry.patch} | 0 ...06-Pufferfish-Optimize-mob-spawning.patch} | 0 ...ferfish-Dynamic-Activation-of-Brain.patch} | 0 ...le-goal-selector-during-inactive-ti.patch} | 0 ...patch => 0009-Pufferfish-Entity-TTL.patch} | 0 ...patch => 0010-Purpur-Server-Changes.patch} | 6 +- ...Purpur-Configurable-server-mod-name.patch} | 0 ...> 0012-Configurable-server-GUI-name.patch} | 0 ...imings.patch => 0013-Remove-Timings.patch} | 8 +- ...ies.patch => 0014-Bump-Dependencies.patch} | 12 +- ... 0015-Remove-vanilla-username-check.patch} | 0 ...ck-for-Broken-BungeeCord-Configurat.patch} | 0 ...emove-UseItemOnPacket-Too-Far-Check.patch} | 0 ...llow-unknown-event-thread-execution.patch} | 0 ...patch => 0019-KeYi-Player-Skull-API.patch} | 0 ...le-arrow-despawn-counter-by-default.patch} | 0 ...n-for-spigot-item-merging-mechanism.patch} | 0 ...pet-Fixes-Optimized-getBiome-method.patch} | 0 ...t-Fixes-Use-optimized-RecipeManager.patch} | 0 ...on-optimized-PoweredRailBlock-logic.patch} | 0 ...karin-Save-Json-list-asynchronously.patch} | 0 ...atch => 0026-Slice-Smooth-Teleports.patch} | 0 ...chment-Make-FixLight-use-action-bar.patch} | 0 ...s.patch => 0028-Leaves-Server-Utils.patch} | 2 +- ....patch => 0029-Leaves-Protocol-Core.patch} | 2 +- ....patch => 0030-Leaves-Jade-Protocol.patch} | 0 ...h => 0031-Leaves-Appleskin-Protocol.patch} | 0 ...h => 0032-Leaves-Xaero-Map-Protocol.patch} | 0 ... => 0033-Leaves-Syncmatica-Protocol.patch} | 0 ...ves-Disable-moved-wrongly-threshold.patch} | 0 ...Fix-vehicle-teleport-by-end-gateway.patch} | 0 ...og4j-compatible-with-future-release.patch} | 0 ...Optimize-villager-data-storage.patc.patch} | 0 ...Gale-s-Optimize-sun-burn-tick.patch.patch} | 4 +- ...tch => 0039-Petal-Async-Pathfinding.patch} | 0 ...=> 0040-Petal-Multithreaded-Tracker.patch} | 0 ...duce-work-done-by-game-event-system.patch} | 0 ...r-NPE.patch => 0042-Fix-tracker-NPE.patch} | 4 +- ...-minecart-vehicle-collision-results.patch} | 0 ...rk.patch => 0044-Reduce-canSee-work.patch} | 0 ...tch => 0045-Faster-Natural-Spawning.patch} | 0 ...dom-for-xaeroMapServerID-generation.patch} | 0 ...-Fix-casting-in-Purpur-world-config.patch} | 0 ...tch.patch => 0048-Fix-sprint-glitch.patch} | 0 ...h => 0049-Fix-keepalive-kicked-name.patch} | 0 ...ble-movement-speed-of-more-entities.patch} | 0 ...leAppender-NPE-error-on-server-clos.patch} | 4 +- ...-of-futures-for-chunk-structure-gen.patch} | 0 ...e-items-finding-hopper-nearby-check.patch} | 2 +- ...nearPurpur-Add-Linear-region-format.patch} | 6 +- ...st-remove-all-locks-on-region-files.patch} | 0 ...issing-purpur-configuration-options.patch} | 6 +- ...e-missing-Pufferfish-configurations.patch} | 2 +- ... => 0058-Skip-event-if-no-listeners.patch} | 2 +- ...-Rewrite-framed-map-tracker-ticking.patch} | 0 ...-MapItem-update-if-the-map-does-not.patch} | 0 ...e-coordinate-key-used-for-nearby-pl.patch} | 2 +- ...SparklyPaper-Optimize-canSee-checks.patch} | 2 +- ...g-and-snowball-can-knockback-player.patch} | 0 ...s-method-to-fix-plugin-incompatibil.patch} | 0 ...0065-Configurable-fix-tripwire-dupe.patch} | 0 ...getProfiler-in-PathNavigationRegion.patch} | 0 ...-when-attempting-to-locate-a-buried.patch} | 0 ...atch => 0068-Including-5s-in-getTPS.patch} | 0 ...eating-stats-json-bases-on-player-n.patch} | 0 ...0-Fix-NPE-during-creating-GUI-graph.patch} | 0 ...eption-on-missing-ResourceKey-value.patch} | 0 70 files changed, 488 insertions(+), 32 deletions(-) create mode 100644 patches/removed/server/0002-Leaf-Config.patch create mode 100644 patches/server/0003-Leaf-Config-legacy-converter.patch rename patches/server/{0003-Pufferfish-Utils.patch => 0004-Pufferfish-Utils.patch} (100%) rename patches/server/{0004-Pufferfish-Sentry.patch => 0005-Pufferfish-Sentry.patch} (100%) rename patches/server/{0005-Pufferfish-Optimize-mob-spawning.patch => 0006-Pufferfish-Optimize-mob-spawning.patch} (100%) rename patches/server/{0006-Pufferfish-Dynamic-Activation-of-Brain.patch => 0007-Pufferfish-Dynamic-Activation-of-Brain.patch} (100%) rename patches/server/{0007-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch => 0008-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch} (100%) rename patches/server/{0008-Pufferfish-Entity-TTL.patch => 0009-Pufferfish-Entity-TTL.patch} (100%) rename patches/server/{0009-Purpur-Server-Changes.patch => 0010-Purpur-Server-Changes.patch} (99%) rename patches/server/{0010-Purpur-Configurable-server-mod-name.patch => 0011-Purpur-Configurable-server-mod-name.patch} (100%) rename patches/server/{0011-Configurable-server-GUI-name.patch => 0012-Configurable-server-GUI-name.patch} (100%) rename patches/server/{0012-Remove-Timings.patch => 0013-Remove-Timings.patch} (99%) rename patches/server/{0013-Bump-Dependencies.patch => 0014-Bump-Dependencies.patch} (93%) rename patches/server/{0014-Remove-vanilla-username-check.patch => 0015-Remove-vanilla-username-check.patch} (100%) rename patches/server/{0015-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch => 0016-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch} (100%) rename patches/server/{0016-Remove-UseItemOnPacket-Too-Far-Check.patch => 0017-Remove-UseItemOnPacket-Too-Far-Check.patch} (100%) rename patches/server/{0017-KTP-Allow-unknown-event-thread-execution.patch => 0018-KTP-Allow-unknown-event-thread-execution.patch} (100%) rename patches/server/{0018-KeYi-Player-Skull-API.patch => 0019-KeYi-Player-Skull-API.patch} (100%) rename patches/server/{0019-KeYi-Disable-arrow-despawn-counter-by-default.patch => 0020-KeYi-Disable-arrow-despawn-counter-by-default.patch} (100%) rename patches/server/{0020-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch => 0021-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch} (100%) rename patches/server/{0021-Carpet-Fixes-Optimized-getBiome-method.patch => 0022-Carpet-Fixes-Optimized-getBiome-method.patch} (100%) rename patches/server/{0022-Carpet-Fixes-Use-optimized-RecipeManager.patch => 0023-Carpet-Fixes-Use-optimized-RecipeManager.patch} (100%) rename patches/server/{0023-Rail-Optimization-optimized-PoweredRailBlock-logic.patch => 0024-Rail-Optimization-optimized-PoweredRailBlock-logic.patch} (100%) rename patches/server/{0024-Akarin-Save-Json-list-asynchronously.patch => 0025-Akarin-Save-Json-list-asynchronously.patch} (100%) rename patches/server/{0025-Slice-Smooth-Teleports.patch => 0026-Slice-Smooth-Teleports.patch} (100%) rename patches/server/{0026-Parchment-Make-FixLight-use-action-bar.patch => 0027-Parchment-Make-FixLight-use-action-bar.patch} (100%) rename patches/server/{0027-Leaves-Server-Utils.patch => 0028-Leaves-Server-Utils.patch} (99%) rename patches/server/{0028-Leaves-Protocol-Core.patch => 0029-Leaves-Protocol-Core.patch} (99%) rename patches/server/{0029-Leaves-Jade-Protocol.patch => 0030-Leaves-Jade-Protocol.patch} (100%) rename patches/server/{0030-Leaves-Appleskin-Protocol.patch => 0031-Leaves-Appleskin-Protocol.patch} (100%) rename patches/server/{0031-Leaves-Xaero-Map-Protocol.patch => 0032-Leaves-Xaero-Map-Protocol.patch} (100%) rename patches/server/{0032-Leaves-Syncmatica-Protocol.patch => 0033-Leaves-Syncmatica-Protocol.patch} (100%) rename patches/server/{0033-Leaves-Disable-moved-wrongly-threshold.patch => 0034-Leaves-Disable-moved-wrongly-threshold.patch} (100%) rename patches/server/{0034-Leaves-Fix-vehicle-teleport-by-end-gateway.patch => 0035-Leaves-Fix-vehicle-teleport-by-end-gateway.patch} (100%) rename patches/server/{0035-Fix-Make-log4j-compatible-with-future-release.patch => 0036-Fix-Make-log4j-compatible-with-future-release.patch} (100%) rename patches/server/{0036-Sync-with-Gale-s-Optimize-villager-data-storage.patc.patch => 0037-Sync-with-Gale-s-Optimize-villager-data-storage.patc.patch} (100%) rename patches/server/{0037-Sync-with-Gale-s-Optimize-sun-burn-tick.patch.patch => 0038-Sync-with-Gale-s-Optimize-sun-burn-tick.patch.patch} (94%) rename patches/server/{0038-Petal-Async-Pathfinding.patch => 0039-Petal-Async-Pathfinding.patch} (100%) rename patches/server/{0039-Petal-Multithreaded-Tracker.patch => 0040-Petal-Multithreaded-Tracker.patch} (100%) rename patches/server/{0040-Petal-reduce-work-done-by-game-event-system.patch => 0041-Petal-reduce-work-done-by-game-event-system.patch} (100%) rename patches/server/{0041-Fix-tracker-NPE.patch => 0042-Fix-tracker-NPE.patch} (95%) rename patches/server/{0042-Cache-minecart-vehicle-collision-results.patch => 0043-Cache-minecart-vehicle-collision-results.patch} (100%) rename patches/server/{0043-Reduce-canSee-work.patch => 0044-Reduce-canSee-work.patch} (100%) rename patches/server/{0044-Faster-Natural-Spawning.patch => 0045-Faster-Natural-Spawning.patch} (100%) rename patches/server/{0045-Faster-Random-for-xaeroMapServerID-generation.patch => 0046-Faster-Random-for-xaeroMapServerID-generation.patch} (100%) rename patches/server/{0046-Fix-casting-in-Purpur-world-config.patch => 0047-Fix-casting-in-Purpur-world-config.patch} (100%) rename patches/server/{0047-Fix-sprint-glitch.patch => 0048-Fix-sprint-glitch.patch} (100%) rename patches/server/{0048-Fix-keepalive-kicked-name.patch => 0049-Fix-keepalive-kicked-name.patch} (100%) rename patches/server/{0049-Configurable-movement-speed-of-more-entities.patch => 0050-Configurable-movement-speed-of-more-entities.patch} (100%) rename patches/server/{0050-Fix-TerminalConsoleAppender-NPE-error-on-server-clos.patch => 0051-Fix-TerminalConsoleAppender-NPE-error-on-server-clos.patch} (96%) rename patches/server/{0051-Faster-sequencing-of-futures-for-chunk-structure-gen.patch => 0052-Faster-sequencing-of-futures-for-chunk-structure-gen.patch} (100%) rename patches/server/{0052-Reduce-items-finding-hopper-nearby-check.patch => 0053-Reduce-items-finding-hopper-nearby-check.patch} (98%) rename patches/server/{0053-LinearPurpur-Add-Linear-region-format.patch => 0054-LinearPurpur-Add-Linear-region-format.patch} (99%) rename patches/server/{0054-LinearPurpur-Just-remove-all-locks-on-region-files.patch => 0055-LinearPurpur-Just-remove-all-locks-on-region-files.patch} (100%) rename patches/server/{0055-Plazma-Add-missing-purpur-configuration-options.patch => 0056-Plazma-Add-missing-purpur-configuration-options.patch} (98%) rename patches/server/{0056-Plazma-Add-some-missing-Pufferfish-configurations.patch => 0057-Plazma-Add-some-missing-Pufferfish-configurations.patch} (97%) rename patches/server/{0057-Skip-event-if-no-listeners.patch => 0058-Skip-event-if-no-listeners.patch} (93%) rename patches/server/{0058-PaperPR-Rewrite-framed-map-tracker-ticking.patch => 0059-PaperPR-Rewrite-framed-map-tracker-ticking.patch} (100%) rename patches/server/{0059-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch => 0060-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch} (100%) rename patches/server/{0060-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch => 0061-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch} (97%) rename patches/server/{0061-SparklyPaper-Optimize-canSee-checks.patch => 0062-SparklyPaper-Optimize-canSee-checks.patch} (97%) rename patches/server/{0062-Polpot-Make-egg-and-snowball-can-knockback-player.patch => 0063-Polpot-Make-egg-and-snowball-can-knockback-player.patch} (100%) rename patches/server/{0063-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch => 0064-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch} (100%) rename patches/server/{0064-Configurable-fix-tripwire-dupe.patch => 0065-Configurable-fix-tripwire-dupe.patch} (100%) rename patches/server/{0065-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch => 0066-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch} (100%) rename patches/server/{0066-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch => 0067-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch} (100%) rename patches/server/{0067-Including-5s-in-getTPS.patch => 0068-Including-5s-in-getTPS.patch} (100%) rename patches/server/{0068-Remove-useless-creating-stats-json-bases-on-player-n.patch => 0069-Remove-useless-creating-stats-json-bases-on-player-n.patch} (100%) rename patches/server/{0069-Fix-NPE-during-creating-GUI-graph.patch => 0070-Fix-NPE-during-creating-GUI-graph.patch} (100%) rename patches/server/{0070-Don-t-throw-exception-on-missing-ResourceKey-value.patch => 0071-Don-t-throw-exception-on-missing-ResourceKey-value.patch} (100%) diff --git a/patches/removed/server/0002-Leaf-Config.patch b/patches/removed/server/0002-Leaf-Config.patch new file mode 100644 index 00000000..8e1f9f44 --- /dev/null +++ b/patches/removed/server/0002-Leaf-Config.patch @@ -0,0 +1,214 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> +Date: Wed, 12 Oct 2022 10:42:15 -0400 +Subject: [PATCH] Leaf Config + +Deprecated. Legacy Leaf Config v1 + +diff --git a/build.gradle.kts b/build.gradle.kts +index a8a720045804cded8f8dffc1bfdd20710b8f0c82..c8ba9702926c55f783d35a7df9b3cfc3af27f005 100644 +--- a/build.gradle.kts ++++ b/build.gradle.kts +@@ -56,6 +56,13 @@ dependencies { + runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") + runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") + ++ // Leaf start ++ implementation("org.yaml:snakeyaml:2.2") ++ implementation("com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4") { ++ exclude(group = "org.yaml", module = "snakeyaml") ++ } ++ // Leaf end ++ + testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test + testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") + testImplementation("org.hamcrest:hamcrest:2.2") +diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +index 2c8eb9294890955f71382ed3884874cc827bab5e..ee29ceff6804383edc229cd302ab07345f96658b 100644 +--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java ++++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +@@ -232,6 +232,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface + SIMDDetection.initialize(); + } catch (Throwable ignored) {} + // Gale start - Pufferfish - SIMD support ++ org.dreeam.leaf.LeafConfig.load(); // Leaf + + this.setPvpAllowed(dedicatedserverproperties.pvp); + this.setFlightAllowed(dedicatedserverproperties.allowFlight); +diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java +new file mode 100644 +index 0000000000000000000000000000000000000000..74becc68c443917b0ec75bfe40ca4079532e0ac0 +--- /dev/null ++++ b/src/main/java/org/dreeam/leaf/LeafConfig.java +@@ -0,0 +1,171 @@ ++package org.dreeam.leaf; ++ ++import com.google.common.collect.ImmutableMap; ++import net.minecraft.server.MinecraftServer; ++import org.bukkit.configuration.ConfigurationSection; ++import org.bukkit.configuration.MemoryConfiguration; ++import org.jetbrains.annotations.Nullable; ++import org.simpleyaml.configuration.comments.CommentType; ++import org.simpleyaml.configuration.file.YamlFile; ++import org.simpleyaml.exceptions.InvalidConfigurationException; ++ ++import java.io.File; ++import java.io.IOException; ++import java.lang.reflect.Method; ++import java.lang.reflect.Modifier; ++import java.util.List; ++import java.util.Map; ++ ++public class LeafConfig { ++ ++ private static final YamlFile config = new YamlFile(); ++ private static int updates = 0; ++ ++ private static ConfigurationSection convertToBukkit(org.simpleyaml.configuration.ConfigurationSection section) { ++ ConfigurationSection newSection = new MemoryConfiguration(); ++ for (String key : section.getKeys(false)) { ++ if (section.isConfigurationSection(key)) { ++ newSection.set(key, convertToBukkit(section.getConfigurationSection(key))); ++ } else { ++ newSection.set(key, section.get(key)); ++ } ++ } ++ return newSection; ++ } ++ ++ public static ConfigurationSection getConfigCopy() { ++ return convertToBukkit(config); ++ } ++ ++ public static int getUpdates() { ++ return updates; ++ } ++ ++ public static void load() throws IOException { ++ File configFile = new File("leaf.yml"); ++ ++ if (configFile.exists()) { ++ try { ++ config.load(configFile); ++ } catch (InvalidConfigurationException e) { ++ throw new IOException(e); ++ } ++ } ++ ++ getString("info.version", "1.2"); ++ setComment("info", ++ "Leaf Config", ++ "Github Repo: https://github.com/Winds-Studio/Leaf", ++ "Discord: dreeam___ | QQ: 2682173972"); ++ ++ for (Method method : LeafConfig.class.getDeclaredMethods()) { ++ if (Modifier.isStatic(method.getModifiers()) && Modifier.isPrivate(method.getModifiers()) && method.getParameterCount() == 0 && ++ method.getReturnType() == Void.TYPE && !method.getName().startsWith("lambda")) { ++ method.setAccessible(true); ++ try { ++ method.invoke(null); ++ } catch (Throwable t) { ++ MinecraftServer.LOGGER.warn("Failed to load configuration option from {}", method.getName(), t); ++ } ++ } ++ } ++ ++ updates++; ++ ++ config.save(configFile); ++ ++ } ++ ++ private static void setComment(String key, String... comment) { ++ if (config.contains(key)) { ++ config.setComment(key, String.join("\n", comment), CommentType.BLOCK); ++ } ++ } ++ ++ private static void ensureDefault(String key, Object defaultValue, String... comment) { ++ if (!config.contains(key)) { ++ config.set(key, defaultValue); ++ config.setComment(key, String.join("\n", comment), CommentType.BLOCK); ++ } ++ } ++ ++ private static void set(String key, Object defaultValue) { ++ config.addDefault(key, defaultValue); ++ config.set(key, defaultValue); ++ } ++ ++ private static boolean getBoolean(String key, boolean defaultValue, String... comment) { ++ return getBoolean(key, null, defaultValue, comment); ++ } ++ ++ private static boolean getBoolean(String key, @Nullable String oldKey, boolean defaultValue, String... comment) { ++ ensureDefault(key, defaultValue, comment); ++ return config.getBoolean(key, defaultValue); ++ } ++ ++ private static int getInt(String key, int defaultValue, String... comment) { ++ return getInt(key, null, defaultValue, comment); ++ } ++ ++ private static int getInt(String key, @Nullable String oldKey, int defaultValue, String... comment) { ++ ensureDefault(key, defaultValue, comment); ++ return config.getInt(key, defaultValue); ++ } ++ ++ private static double getDouble(String key, double defaultValue, String... comment) { ++ return getDouble(key, null, defaultValue, comment); ++ } ++ ++ private static double getDouble(String key, @Nullable String oldKey, double defaultValue, String... comment) { ++ ensureDefault(key, defaultValue, comment); ++ return config.getDouble(key, defaultValue); ++ } ++ ++ private static String getString(String key, String defaultValue, String... comment) { ++ return getOldString(key, null, defaultValue, comment); ++ } ++ ++ private static String getOldString(String key, @Nullable String oldKey, String defaultValue, String... comment) { ++ ensureDefault(key, defaultValue, comment); ++ return config.getString(key, defaultValue); ++ } ++ ++ private static List getStringList(String key, List defaultValue, String... comment) { ++ return getStringList(key, null, defaultValue, comment); ++ } ++ ++ private static List getStringList(String key, @Nullable String oldKey, List defaultValue, String... comment) { ++ ensureDefault(key, defaultValue, comment); ++ return config.getStringList(key); ++ } ++ ++ static Map getMap(String key, Map defaultValue) { ++ if (defaultValue != null && getConfigCopy().getConfigurationSection(key) == null) { ++ config.addDefault(key, defaultValue); ++ return defaultValue; ++ } ++ return toMap(getConfigCopy().getConfigurationSection(key)); ++ } ++ ++ private static Map toMap(ConfigurationSection section) { ++ ImmutableMap.Builder builder = ImmutableMap.builder(); ++ if (section != null) { ++ for (String key : section.getKeys(false)) { ++ Object obj = section.get(key); ++ if (obj != null) { ++ builder.put(key, obj instanceof ConfigurationSection val ? toMap(val) : obj); ++ } ++ } ++ } ++ return builder.build(); ++ } ++ ++ private static void removal() { ++ } ++ ++ private static void performance() { ++ } ++ ++ private static void network() { ++ } ++} diff --git a/patches/server/0003-Leaf-Config-legacy-converter.patch b/patches/server/0003-Leaf-Config-legacy-converter.patch new file mode 100644 index 00000000..8959a3ca --- /dev/null +++ b/patches/server/0003-Leaf-Config-legacy-converter.patch @@ -0,0 +1,242 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> +Date: Tue, 27 Feb 2024 19:42:03 -0500 +Subject: [PATCH] Leaf Config legacy converter + + +diff --git a/build.gradle.kts b/build.gradle.kts +index a53b30ab2315fc0b2ce07d9449042842e6ca3b39..58dceb971983db152b77932d4d6ac9cffceddfec 100644 +--- a/build.gradle.kts ++++ b/build.gradle.kts +@@ -24,6 +24,13 @@ dependencies { + + implementation("com.electronwill.night-config:toml:3.6.7") // Leaf - Night config + ++ // Leaf start - Legacy config ++ implementation("org.yaml:snakeyaml:2.2") ++ implementation("com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4") { ++ exclude(group = "org.yaml", module = "snakeyaml") ++ } ++ // Leaf end ++ + // Paper start + implementation("org.jline:jline-terminal-jansi:3.21.0") + implementation("net.minecrell:terminalconsoleappender:1.3.0") +diff --git a/src/main/java/org/dreeam/leaf/config/LeafConfig.java b/src/main/java/org/dreeam/leaf/config/LeafConfig.java +index 86cb8a187d751c2e2842a0998ac07bcff15ca3cf..903ce6cdc7596140d56b5d8669a6bb121fe34cc3 100644 +--- a/src/main/java/org/dreeam/leaf/config/LeafConfig.java ++++ b/src/main/java/org/dreeam/leaf/config/LeafConfig.java +@@ -21,7 +21,9 @@ import org.apache.logging.log4j.Logger; + + public class LeafConfig { + public static final Logger logger = LogManager.getLogger("LeafConfig"); +- private static final File baseConfigFolder = new File("leaf_config"); ++ public static long beginTime; ++ private static final File legacyConfig = new File("leaf.yml"); ++ public static final File baseConfigFolder = new File("leaf_config"); + private static final File baseConfigFile = new File(baseConfigFolder, "leaf_global_config.toml"); + private static final Set allInstanced = new HashSet<>(); + private static CommentedFileConfig configFileInstance; +@@ -49,6 +51,21 @@ public class LeafConfig { + } + + configFileInstance.save(); ++ ++ if (legacyConfig.exists()) { ++ beginTime = System.nanoTime(); ++ logger.info("Detected legacy config file!"); ++ ++ try { ++ Class clazz = Class.forName("org.dreeam.leaf.config.legacy.upgrader.V1ToV2"); ++ if (IConfigModule.class.isAssignableFrom(clazz)) { ++ loadForSingle((IConfigModule) clazz.getConstructor().newInstance()); ++ } ++ } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | ++ InstantiationException | IllegalAccessException e) { ++ logger.error("Error in v1.x to v2 config upgrading process, this should not happen!", e); ++ } ++ } + } + + private static void loadAllModules() throws IllegalAccessException { +diff --git a/src/main/java/org/dreeam/leaf/config/legacy/upgrader/V1ToV2.java b/src/main/java/org/dreeam/leaf/config/legacy/upgrader/V1ToV2.java +new file mode 100644 +index 0000000000000000000000000000000000000000..66eba481afed722cf1fd59ea31532917c5dbbe8f +--- /dev/null ++++ b/src/main/java/org/dreeam/leaf/config/legacy/upgrader/V1ToV2.java +@@ -0,0 +1,175 @@ ++package org.dreeam.leaf.config.legacy.upgrader; ++ ++import com.electronwill.nightconfig.core.file.CommentedFileConfig; ++import org.dreeam.leaf.config.EnumConfigCategory; ++import org.dreeam.leaf.config.IConfigModule; ++import org.dreeam.leaf.config.LeafConfig; ++import org.simpleyaml.configuration.file.YamlFile; ++ ++import java.io.File; ++import java.io.IOException; ++import java.nio.file.Files; ++import java.nio.file.Path; ++import java.nio.file.StandardCopyOption; ++import java.util.Map; ++import java.util.concurrent.ConcurrentHashMap; ++ ++public class V1ToV2 implements IConfigModule { ++ ++ private static final YamlFile legacyConfig = new YamlFile(); ++ private static final File legacyConfigFile = new File("leaf.yml"); ++ ++ private static Object version, serverModName, serverGuiName, removeMojangUsernameCheck, removeSpigotCheckBungeeConfig, removeUseItemOnPacketTooFar, ++ maxUseItemDistance, disableMovedWronglyThreshold, enableAsyncMobSpawning, dabEnabled, startDistance, maximumActivationPrio, activationDistanceMod, ++ blackedEntities, throttleInactiveGoalSelectorTick, useSpigotItemMergingMechanism, optimizedPoweredRails, asyncPathfinding, asyncPathfindingMaxThreads, ++ asyncPathfindingKeepalive, asyncEntityTracker, asyncEntityTrackerMaxThreads, asyncEntityTrackerKeepalive, cacheMinecartCollision, ++ skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer, jadeProtocol, appleskinProtocol, xaeroMapProtocol, xaeroMapServerID, syncmaticaProtocol, syncmaticaQuota, ++ syncmaticaQuotaLimit, sentryDsn, useVanillaEndTeleport, snowballCanKnockback, eggCanKnockback, fixTripwireDupe, including5sIngetTPS; ++ private static Map ttls = new ConcurrentHashMap<>(); ++ ++ private static void initializeKeys() { ++ version = getKey("info.version"); ++ serverModName = getKey("server-mod-name"); ++ serverGuiName = getKey("server-Gui-name"); ++ removeMojangUsernameCheck = getKey("remove-Mojang-username-check"); ++ removeSpigotCheckBungeeConfig = getKey("remove-Spigot-check-bungee-config"); ++ removeUseItemOnPacketTooFar = getKey("remove-UseItemOnPacket-too-far-check"); ++ maxUseItemDistance = getKey("max-UseItem-distance"); ++ disableMovedWronglyThreshold = getKey("disable-MovedWronglyThreshold"); ++ enableAsyncMobSpawning = getKey("performance.enable-async-mob-spawning"); ++ dabEnabled = getKey("performance.dab.enabled", "dab.enabled"); ++ startDistance = getKey("performance.dab.start-distance", "dab.start-distance"); ++ maximumActivationPrio = getKey("performance.dab.max-tick-freq", "dab.max-tick-freq"); ++ activationDistanceMod = getKey("performance.dab.activation-dist-mod", "dab.activation-dist-mod"); ++ blackedEntities = getKey("performance.dab.blacklisted-entities", "dab.blacklisted-entities"); ++ throttleInactiveGoalSelectorTick = getKey("performance.inactive-goal-selector-throttle", "inactive-goal-selector-throttle"); ++ legacyConfig.getMapValues(true).forEach((key, ttl) -> { ++ if (key.startsWith("performance.entity_timeouts.")) { ++ String e = key.replaceAll("performance.entity_timeouts.", ""); ++ ttls.putIfAbsent(e, ttl); ++ } ++ }); ++ useSpigotItemMergingMechanism = getKey("performance.use-spigot-item-merging-mechanism"); ++ optimizedPoweredRails = getKey("performance.optimizedPoweredRails"); ++ asyncPathfinding = getKey("performance.async-pathfinding.enable"); ++ asyncPathfindingMaxThreads = getKey("performance.async-pathfinding.max-threads"); ++ asyncPathfindingKeepalive = getKey("performance.async-pathfinding.keepalive"); ++ asyncEntityTracker = getKey("performance.async-entity-tracker.enable"); ++ asyncEntityTrackerMaxThreads = getKey("performance.async-entity-tracker.max-threads"); ++ asyncEntityTrackerKeepalive = getKey("performance.async-entity-tracker.keepalive"); ++ cacheMinecartCollision = getKey("performance.cache-minecart-collision"); ++ skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer = getKey("performance.skip-map-item-data-updates-if-map-does-not-have-craftmaprenderer"); ++ jadeProtocol = getKey("network.protocol.jade-protocol"); ++ appleskinProtocol = getKey("network.protocol.appleskin-protocol"); ++ xaeroMapProtocol = getKey("network.protocol.xaero-map-protocol"); ++ xaeroMapServerID = getKey("network.protocol.xaero-map-server-id"); ++ syncmaticaProtocol = getKey("network.protocol.syncmatica.enable"); ++ syncmaticaQuota = getKey("network.protocol.syncmatica.quota"); ++ syncmaticaQuotaLimit = getKey("network.protocol.syncmatica.quota-limit"); ++ sentryDsn = getKey("sentry-dsn", "performance.sentry-dsn"); ++ useVanillaEndTeleport = getKey("use-vanilla-end-teleport"); ++ snowballCanKnockback = getKey("playerKnockback.snowball-knockback-players"); ++ eggCanKnockback = getKey("playerKnockback.egg-knockback-players"); ++ fixTripwireDupe = getKey("gameplay.fix-tripwire-dupe"); ++ including5sIngetTPS = getKey("including-5s-in-getTPS"); ++ } ++ ++ @Override ++ public EnumConfigCategory getCategory() { ++ return EnumConfigCategory.MISC; ++ } ++ ++ @Override ++ public String getBaseName() { ++ return "converter"; ++ } ++ ++ @Override ++ public void onLoaded(CommentedFileConfig config) { ++ loadLegacyConfig(); ++ ++ LeafConfig.logger.info("Converting config from v{} to v2.0 format...", version); ++ ++ updateConfig("misc.rebrand.server-mod-name", serverModName, config); ++ updateConfig("misc.rebrand.server-gui-name", serverGuiName, config); ++ updateConfig("misc.remove_vanilla_username_check.enabled", removeMojangUsernameCheck, config); ++ updateConfig("misc.remove_spigot_check_bungee_config.enabled", removeSpigotCheckBungeeConfig, config); ++ updateConfig("misc.configurable_max_use_item_distance.remove-max-distance-check", removeUseItemOnPacketTooFar, config); ++ updateConfig("gameplay.configurable_max_use_item_distance.max-use-item-distance", maxUseItemDistance, config); ++ updateConfig("gameplay.disable_moved_wrongly_threshold.enabled", disableMovedWronglyThreshold, config); ++ updateConfig("async.async_mob_spawning.enabled", enableAsyncMobSpawning, config); ++ updateConfig("performance.dab.enabled", dabEnabled, config); ++ updateConfig("performance.dab.start-distance", startDistance, config); ++ updateConfig("performance.dab.max-tick-freq", maximumActivationPrio, config); ++ updateConfig("performance.dab.activation-dist-mod", activationDistanceMod, config); ++ updateConfig("performance.dab.blacklisted-entities", blackedEntities, config); ++ updateConfig("performance.inactive_goal_selector_throttle.enabled", throttleInactiveGoalSelectorTick, config); ++ ttls.forEach((e, ttl) -> updateConfig("performance.entity_timeouts." + e, ttl, config)); ++ updateConfig("gameplay.use-spigot-item-merging-mechanism.enabled", useSpigotItemMergingMechanism, config); ++ updateConfig("performance.optimized_powered_rails.enabled", optimizedPoweredRails, config); ++ updateConfig("async.async_pathfinding.enabled", asyncPathfinding, config); ++ updateConfig("async.async_pathfinding.max-threads", asyncPathfindingMaxThreads, config); ++ updateConfig("async.async_pathfinding.keepalive", asyncPathfindingKeepalive, config); ++ updateConfig("async.async_entity_tracker.enabled", asyncEntityTracker, config); ++ updateConfig("async.async_entity_tracker.max-threads", asyncEntityTrackerMaxThreads, config); ++ updateConfig("async.async_entity_tracker.keepalive", asyncEntityTrackerKeepalive, config); ++ updateConfig("performance.cache_minecart_collision.enabled", cacheMinecartCollision, config); ++ updateConfig("performance.skip_map_item_data_updates_if_map_does_not_have_craftmaprenderer.enabled", skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer, config); ++ updateConfig("network.protocol_support.jade-protocol", jadeProtocol, config); ++ updateConfig("network.protocol_support.appleskin-protocol", appleskinProtocol, config); ++ updateConfig("network.protocol_support.xaero-map-protocol", xaeroMapProtocol, config); ++ updateConfig("network.protocol_support.xaero-map-server-id", xaeroMapServerID, config); ++ updateConfig("network.protocol_support.syncmatica-enabled", syncmaticaProtocol, config); ++ updateConfig("network.protocol_support.syncmatica-quota", syncmaticaQuota, config); ++ updateConfig("network.protocol_support.syncmatica-quota-limit", syncmaticaQuotaLimit, config); ++ updateConfig("misc.sentry_dsn.sentry-dsn", sentryDsn, config); ++ updateConfig("gameplay.use_vanilla_end_teleport.enabled", useVanillaEndTeleport, config); ++ updateConfig("gameplay.knockback.snowball-knockback-players", snowballCanKnockback, config); ++ updateConfig("gameplay.knockback.egg-knockback-players", eggCanKnockback, config); ++ updateConfig("fixes.fix_tripwire_dupe.enabled", fixTripwireDupe, config); ++ updateConfig("misc.including_5s_in_get_tps.enabled", including5sIngetTPS, config); ++ ++ config.save(); ++ ++ File backupFolder = new File(LeafConfig.baseConfigFolder + "/legacy_backup"); ++ ++ if (!backupFolder.exists()) { ++ backupFolder.mkdirs(); ++ } ++ ++ try { ++ Files.move(Path.of(legacyConfigFile.getPath()), Path.of(LeafConfig.baseConfigFolder + "/legacy_backup/leaf_v" + version + "_backup.yml"), StandardCopyOption.REPLACE_EXISTING); ++ } catch (IOException e) { ++ LeafConfig.logger.error("Config upgraded failed!"); ++ return; ++ } ++ ++ LeafConfig.logger.info("Config upgraded successfully!, elapsed {}ms.", (System.nanoTime() - LeafConfig.beginTime) / 1000000); ++ } ++ ++ private static void loadLegacyConfig() { ++ try { ++ legacyConfig.load(legacyConfigFile); ++ initializeKeys(); ++ } catch (IOException e) { ++ LeafConfig.logger.error("Failed to load legacy config! Config upgraded failed!"); ++ } ++ } ++ ++ private static Object getKey(String key) { ++ return legacyConfig.contains(key) ? legacyConfig.get(key) : null; ++ } ++ ++ // In v1.x config, the old key still exists after converting to new key ++ // So check the new key whether exists first, then check the old key. ++ private static Object getKey(String key, String oldKey) { ++ return legacyConfig.contains(key) ? legacyConfig.get(key) : ++ legacyConfig.contains(oldKey) ? legacyConfig.get(oldKey) : ++ null; ++ } ++ ++ // TOML doesn't allow null key value, so do a null check. ++ private static void updateConfig(String key, Object value, CommentedFileConfig config) { ++ if (value != null) config.set(key, value); ++ } ++} diff --git a/patches/server/0003-Pufferfish-Utils.patch b/patches/server/0004-Pufferfish-Utils.patch similarity index 100% rename from patches/server/0003-Pufferfish-Utils.patch rename to patches/server/0004-Pufferfish-Utils.patch diff --git a/patches/server/0004-Pufferfish-Sentry.patch b/patches/server/0005-Pufferfish-Sentry.patch similarity index 100% rename from patches/server/0004-Pufferfish-Sentry.patch rename to patches/server/0005-Pufferfish-Sentry.patch diff --git a/patches/server/0005-Pufferfish-Optimize-mob-spawning.patch b/patches/server/0006-Pufferfish-Optimize-mob-spawning.patch similarity index 100% rename from patches/server/0005-Pufferfish-Optimize-mob-spawning.patch rename to patches/server/0006-Pufferfish-Optimize-mob-spawning.patch diff --git a/patches/server/0006-Pufferfish-Dynamic-Activation-of-Brain.patch b/patches/server/0007-Pufferfish-Dynamic-Activation-of-Brain.patch similarity index 100% rename from patches/server/0006-Pufferfish-Dynamic-Activation-of-Brain.patch rename to patches/server/0007-Pufferfish-Dynamic-Activation-of-Brain.patch diff --git a/patches/server/0007-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch b/patches/server/0008-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch similarity index 100% rename from patches/server/0007-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch rename to patches/server/0008-Pufferfish-Throttle-goal-selector-during-inactive-ti.patch diff --git a/patches/server/0008-Pufferfish-Entity-TTL.patch b/patches/server/0009-Pufferfish-Entity-TTL.patch similarity index 100% rename from patches/server/0008-Pufferfish-Entity-TTL.patch rename to patches/server/0009-Pufferfish-Entity-TTL.patch diff --git a/patches/server/0009-Purpur-Server-Changes.patch b/patches/server/0010-Purpur-Server-Changes.patch similarity index 99% rename from patches/server/0009-Purpur-Server-Changes.patch rename to patches/server/0010-Purpur-Server-Changes.patch index 91dd3c07..e021b311 100644 --- a/patches/server/0009-Purpur-Server-Changes.patch +++ b/patches/server/0010-Purpur-Server-Changes.patch @@ -30,10 +30,10 @@ MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch Fire-Immunity-API.patch diff --git a/build.gradle.kts b/build.gradle.kts -index a53b30ab2315fc0b2ce07d9449042842e6ca3b39..e1f45b67457ba151a94b4709aeabc7a2fe730c28 100644 +index 58dceb971983db152b77932d4d6ac9cffceddfec..a850f63770e46293c0efe3ac03583bfcbc0ed946 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -59,6 +59,12 @@ dependencies { +@@ -66,6 +66,12 @@ dependencies { runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") @@ -46,7 +46,7 @@ index a53b30ab2315fc0b2ce07d9449042842e6ca3b39..e1f45b67457ba151a94b4709aeabc7a2 testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") testImplementation("org.hamcrest:hamcrest:2.2") -@@ -174,7 +180,7 @@ fun TaskContainer.registerRunTask( +@@ -181,7 +187,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { diff --git a/patches/server/0010-Purpur-Configurable-server-mod-name.patch b/patches/server/0011-Purpur-Configurable-server-mod-name.patch similarity index 100% rename from patches/server/0010-Purpur-Configurable-server-mod-name.patch rename to patches/server/0011-Purpur-Configurable-server-mod-name.patch diff --git a/patches/server/0011-Configurable-server-GUI-name.patch b/patches/server/0012-Configurable-server-GUI-name.patch similarity index 100% rename from patches/server/0011-Configurable-server-GUI-name.patch rename to patches/server/0012-Configurable-server-GUI-name.patch diff --git a/patches/server/0012-Remove-Timings.patch b/patches/server/0013-Remove-Timings.patch similarity index 99% rename from patches/server/0012-Remove-Timings.patch rename to patches/server/0013-Remove-Timings.patch index ab242285..b6f647e0 100644 --- a/patches/server/0012-Remove-Timings.patch +++ b/patches/server/0013-Remove-Timings.patch @@ -938,7 +938,7 @@ index 3e2d5dcd62775b6ed7c0ce0ba51a71b635b1d644..deca974c2a82bc341fe23ea46f61f42f } catch (Exception exception) { label25: diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f9952df410ca862ee6573abaaa1c9b5634bdad5e..9349e81ca3d133d87f7e26bf5cdc2f555ce1413c 100644 +index 16d3fc610fc15da85f3b0652e835d196c010c89d..86bb3df2915495387c43cf425e3183682c9e0344 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -178,8 +178,6 @@ import org.bukkit.craftbukkit.Main; @@ -1109,7 +1109,7 @@ index f9952df410ca862ee6573abaaa1c9b5634bdad5e..9349e81ca3d133d87f7e26bf5cdc2f55 private void synchronizeTime(ServerLevel world) { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index cca3e8284901518581ffbdb9ba71a757d857e3ff..b235b739fea8820e5a1ff35c5cfd52aa8571d9ac 100644 +index 8749010decf3a7d9490762c7641530bd91f4e19c..4ba34682cf4f8e610d8d456785a0da5591aa0c24 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -57,7 +57,6 @@ import org.apache.logging.log4j.Level; @@ -1240,7 +1240,7 @@ index 42869d35abb8d006fb720ca7190a770ce5cbf778..2b9968a8a3d0d66d9db5a83dcf2a4476 } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 01fe42fea45a359714ca3fdeee05d85c561d0bb9..3af5602ef3d6265a2ddcdc5038c35ea1ca36d705 100644 +index 6587ce30d88983cb42822e6ff3e012047d3ce16d..93ec0bdece165e5a5058f9a7ed2fd67dbcef2ab4 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -276,10 +276,8 @@ public class ServerChunkCache extends ChunkSource { @@ -2269,7 +2269,7 @@ index 139d946346594d2a59a8b2930c4eae794c880dbc..00000000000000000000000000000000 - -} diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index d88d553fc5b9d9e13d24d94275ed5b9c91d5e41f..83841079cb17d426a89e9d8b43afdc289d13dee6 100644 +index c6c58c398b2ce4741301afaa04d2ba2dbee475d4..67e33ce28e3a775b6611334471061f72cae18cae 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -35,7 +35,6 @@ import net.minecraft.world.entity.projectile.FireworkRocketEntity; diff --git a/patches/server/0013-Bump-Dependencies.patch b/patches/server/0014-Bump-Dependencies.patch similarity index 93% rename from patches/server/0013-Bump-Dependencies.patch rename to patches/server/0014-Bump-Dependencies.patch index 5a1354f1..38ac286b 100644 --- a/patches/server/0013-Bump-Dependencies.patch +++ b/patches/server/0014-Bump-Dependencies.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index e1f45b67457ba151a94b4709aeabc7a2fe730c28..7a5933a2bb8cde20d4d147cc2665b2e65b881c35 100644 +index a850f63770e46293c0efe3ac03583bfcbc0ed946..607d6a73daba955734f651530e4d3db87110eb16 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -25,9 +25,9 @@ dependencies { - implementation("com.electronwill.night-config:toml:3.6.7") // Leaf - Night config +@@ -32,9 +32,9 @@ dependencies { + // Leaf end // Paper start - implementation("org.jline:jline-terminal-jansi:3.21.0") @@ -20,7 +20,7 @@ index e1f45b67457ba151a94b4709aeabc7a2fe730c28..7a5933a2bb8cde20d4d147cc2665b2e6 implementation("net.kyori:ansi:1.0.3") // Manually bump beyond above transitive dep /* Required to add the missing Log4j2Plugins.dat file from log4j-core -@@ -35,24 +35,26 @@ dependencies { +@@ -42,24 +42,26 @@ dependencies { all its classes to check if they are plugins. Scanning takes about 1-2 seconds so adding this speeds up the server start. */ @@ -57,7 +57,7 @@ index e1f45b67457ba151a94b4709aeabc7a2fe730c28..7a5933a2bb8cde20d4d147cc2665b2e6 // Paper end - Use Velocity cipher runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") -@@ -65,11 +67,15 @@ dependencies { +@@ -72,11 +74,15 @@ dependencies { implementation("dev.omega24:upnp4j:1.0") // Purpur end @@ -76,7 +76,7 @@ index e1f45b67457ba151a94b4709aeabc7a2fe730c28..7a5933a2bb8cde20d4d147cc2665b2e6 } val craftbukkitPackageVersion = "1_20_R3" // Paper -@@ -261,3 +267,7 @@ sourceSets { +@@ -268,3 +274,7 @@ sourceSets { } } // Gale end - package license into jar diff --git a/patches/server/0014-Remove-vanilla-username-check.patch b/patches/server/0015-Remove-vanilla-username-check.patch similarity index 100% rename from patches/server/0014-Remove-vanilla-username-check.patch rename to patches/server/0015-Remove-vanilla-username-check.patch diff --git a/patches/server/0015-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch b/patches/server/0016-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch similarity index 100% rename from patches/server/0015-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch rename to patches/server/0016-Remove-Spigot-Check-for-Broken-BungeeCord-Configurat.patch diff --git a/patches/server/0016-Remove-UseItemOnPacket-Too-Far-Check.patch b/patches/server/0017-Remove-UseItemOnPacket-Too-Far-Check.patch similarity index 100% rename from patches/server/0016-Remove-UseItemOnPacket-Too-Far-Check.patch rename to patches/server/0017-Remove-UseItemOnPacket-Too-Far-Check.patch diff --git a/patches/server/0017-KTP-Allow-unknown-event-thread-execution.patch b/patches/server/0018-KTP-Allow-unknown-event-thread-execution.patch similarity index 100% rename from patches/server/0017-KTP-Allow-unknown-event-thread-execution.patch rename to patches/server/0018-KTP-Allow-unknown-event-thread-execution.patch diff --git a/patches/server/0018-KeYi-Player-Skull-API.patch b/patches/server/0019-KeYi-Player-Skull-API.patch similarity index 100% rename from patches/server/0018-KeYi-Player-Skull-API.patch rename to patches/server/0019-KeYi-Player-Skull-API.patch diff --git a/patches/server/0019-KeYi-Disable-arrow-despawn-counter-by-default.patch b/patches/server/0020-KeYi-Disable-arrow-despawn-counter-by-default.patch similarity index 100% rename from patches/server/0019-KeYi-Disable-arrow-despawn-counter-by-default.patch rename to patches/server/0020-KeYi-Disable-arrow-despawn-counter-by-default.patch diff --git a/patches/server/0020-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch b/patches/server/0021-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch similarity index 100% rename from patches/server/0020-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch rename to patches/server/0021-KeYi-Add-an-option-for-spigot-item-merging-mechanism.patch diff --git a/patches/server/0021-Carpet-Fixes-Optimized-getBiome-method.patch b/patches/server/0022-Carpet-Fixes-Optimized-getBiome-method.patch similarity index 100% rename from patches/server/0021-Carpet-Fixes-Optimized-getBiome-method.patch rename to patches/server/0022-Carpet-Fixes-Optimized-getBiome-method.patch diff --git a/patches/server/0022-Carpet-Fixes-Use-optimized-RecipeManager.patch b/patches/server/0023-Carpet-Fixes-Use-optimized-RecipeManager.patch similarity index 100% rename from patches/server/0022-Carpet-Fixes-Use-optimized-RecipeManager.patch rename to patches/server/0023-Carpet-Fixes-Use-optimized-RecipeManager.patch diff --git a/patches/server/0023-Rail-Optimization-optimized-PoweredRailBlock-logic.patch b/patches/server/0024-Rail-Optimization-optimized-PoweredRailBlock-logic.patch similarity index 100% rename from patches/server/0023-Rail-Optimization-optimized-PoweredRailBlock-logic.patch rename to patches/server/0024-Rail-Optimization-optimized-PoweredRailBlock-logic.patch diff --git a/patches/server/0024-Akarin-Save-Json-list-asynchronously.patch b/patches/server/0025-Akarin-Save-Json-list-asynchronously.patch similarity index 100% rename from patches/server/0024-Akarin-Save-Json-list-asynchronously.patch rename to patches/server/0025-Akarin-Save-Json-list-asynchronously.patch diff --git a/patches/server/0025-Slice-Smooth-Teleports.patch b/patches/server/0026-Slice-Smooth-Teleports.patch similarity index 100% rename from patches/server/0025-Slice-Smooth-Teleports.patch rename to patches/server/0026-Slice-Smooth-Teleports.patch diff --git a/patches/server/0026-Parchment-Make-FixLight-use-action-bar.patch b/patches/server/0027-Parchment-Make-FixLight-use-action-bar.patch similarity index 100% rename from patches/server/0026-Parchment-Make-FixLight-use-action-bar.patch rename to patches/server/0027-Parchment-Make-FixLight-use-action-bar.patch diff --git a/patches/server/0027-Leaves-Server-Utils.patch b/patches/server/0028-Leaves-Server-Utils.patch similarity index 99% rename from patches/server/0027-Leaves-Server-Utils.patch rename to patches/server/0028-Leaves-Server-Utils.patch index b120ad8c..613c473e 100644 --- a/patches/server/0027-Leaves-Server-Utils.patch +++ b/patches/server/0028-Leaves-Server-Utils.patch @@ -7,7 +7,7 @@ Original license: GPLv3 Original project: https://github.com/LeavesMC/Leaves diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6096528056dca47fd139fe27d1e0a5b919270aa6..b1c74e88cffb5e63a0fcba90522aa8e37f908f47 100644 +index 6c70002119d40a0074319d2ee85862930d6abf0e..3a1b8f57c74124dbb413651a099dbadbc2e28490 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -424,6 +424,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0028-Leaves-Protocol-Core.patch b/patches/server/0029-Leaves-Protocol-Core.patch similarity index 99% rename from patches/server/0028-Leaves-Protocol-Core.patch rename to patches/server/0029-Leaves-Protocol-Core.patch index 215333bd..1a8ac971 100644 --- a/patches/server/0028-Leaves-Protocol-Core.patch +++ b/patches/server/0029-Leaves-Protocol-Core.patch @@ -25,7 +25,7 @@ index af86f752c33a2990405fea058b7c41c437ba9d46..bada9fae1e7178162429e1f5a1608b9c } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9349e81ca3d133d87f7e26bf5cdc2f555ce1413c..0f6ecd180c2ee18575575264366b88ff62ac11f7 100644 +index 86bb3df2915495387c43cf425e3183682c9e0344..f2cef17007767a148d4957e654af8a655920790e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1711,6 +1711,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { @@ -139,7 +139,7 @@ index 9962e83e9478db6de3869d53eaa4c4dc9dc847b4..4e7867e7239eb573b287a70eee8191bd @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index da834424b655d49388926a0472cacb5ecc4d56fd..141c41c05623ab5802ae3e03ee772d310efda3a8 100644 +index df0d0868c11c26b2cadc1a07196a0191e16838a0..5ebef8ad47b8dc27de23b878eec86f5136e4c9ec 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java @@ -147,6 +147,23 @@ public class Warden extends Monster implements VibrationSystem { @@ -189,7 +189,7 @@ index bc3fe45d12ffc2069a03d1587b7623d31130565a..fd574aed480b980a231a017bab262acb @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c3f095236093c436d37c4730f5537d4fbc0ea6c0..d13bc7e913ebe816598f6104f928c90b320fee18 100644 +index 63b5a0993207c55357ac507c974dea77206e80f4..e45c11bf2c42e6d57f803349d8ca6936ac98c995 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -336,6 +336,7 @@ public class PurpurConfig { diff --git a/patches/server/0056-Plazma-Add-some-missing-Pufferfish-configurations.patch b/patches/server/0057-Plazma-Add-some-missing-Pufferfish-configurations.patch similarity index 97% rename from patches/server/0056-Plazma-Add-some-missing-Pufferfish-configurations.patch rename to patches/server/0057-Plazma-Add-some-missing-Pufferfish-configurations.patch index f845ca93..1d26c852 100644 --- a/patches/server/0056-Plazma-Add-some-missing-Pufferfish-configurations.patch +++ b/patches/server/0057-Plazma-Add-some-missing-Pufferfish-configurations.patch @@ -41,7 +41,7 @@ index 4e7867e7239eb573b287a70eee8191bdf434f686..2c6c153187f97cd07157d72cbe4c9829 SnifferAi.updateActivity(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 141c41c05623ab5802ae3e03ee772d310efda3a8..695458d1d45169ae36344984a5b66fa8c3ee907d 100644 +index 5ebef8ad47b8dc27de23b878eec86f5136e4c9ec..8acd9a0037e12670472734cd86c95336a04f9f13 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java @@ -319,7 +319,7 @@ public class Warden extends Monster implements VibrationSystem { diff --git a/patches/server/0057-Skip-event-if-no-listeners.patch b/patches/server/0058-Skip-event-if-no-listeners.patch similarity index 93% rename from patches/server/0057-Skip-event-if-no-listeners.patch rename to patches/server/0058-Skip-event-if-no-listeners.patch index abe71b8c..b743f9fe 100644 --- a/patches/server/0057-Skip-event-if-no-listeners.patch +++ b/patches/server/0058-Skip-event-if-no-listeners.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skip event if no listeners diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java -index 79fe719169c436a0138ffef3566a7b5a553f0498..ffa56aacf0b316310c7bdef1cfff8a3de05de40e 100644 +index cc38235d2b5f3fc5113a4d495f14f81cd24d7cb9..930711fd827d009a57171afa24d55fa8e53a08ca 100644 --- a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java +++ b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java @@ -36,6 +36,10 @@ class PaperEventManager { diff --git a/patches/server/0058-PaperPR-Rewrite-framed-map-tracker-ticking.patch b/patches/server/0059-PaperPR-Rewrite-framed-map-tracker-ticking.patch similarity index 100% rename from patches/server/0058-PaperPR-Rewrite-framed-map-tracker-ticking.patch rename to patches/server/0059-PaperPR-Rewrite-framed-map-tracker-ticking.patch diff --git a/patches/server/0059-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch b/patches/server/0060-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch similarity index 100% rename from patches/server/0059-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch rename to patches/server/0060-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch diff --git a/patches/server/0060-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch b/patches/server/0061-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch similarity index 97% rename from patches/server/0060-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch rename to patches/server/0061-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch index 82d9c3cf..845a5f29 100644 --- a/patches/server/0060-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch +++ b/patches/server/0061-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch @@ -32,7 +32,7 @@ index f164256d59b761264876ca0c85f812d101bfd5de..10465a33d90a1e43b9dbd7764c895dd3 final TrackedChunk chunk = this.byChunk.get(CoordinateUtils.getChunkKey(chunkX, chunkZ)); diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 3f8c94087ca4dd8454251f1a1c9aa9fec26ddb32..2e6eadd10efb08fe0c2a37420cb0fd8361b4ef65 100644 +index 70b35ce82701454017b44e8a2fb3b45fefc6420e..caef142261734aab264d1da420ff5e6d7117ea1c 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -594,7 +594,7 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0061-SparklyPaper-Optimize-canSee-checks.patch b/patches/server/0062-SparklyPaper-Optimize-canSee-checks.patch similarity index 97% rename from patches/server/0061-SparklyPaper-Optimize-canSee-checks.patch rename to patches/server/0062-SparklyPaper-Optimize-canSee-checks.patch index 5cf4fcc3..8a06b9d6 100644 --- a/patches/server/0061-SparklyPaper-Optimize-canSee-checks.patch +++ b/patches/server/0062-SparklyPaper-Optimize-canSee-checks.patch @@ -16,7 +16,7 @@ This seems stupid, but it does seem that it improves the performance a bit, and We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 9e896e1bbbbeaaf0e582d5e3f4c1fa7695ab6f09..53fb9ffc1b916b338a5b5f98f6f1f16b65bb6d41 100644 +index 8fed9395a4c91d25781000478fb83763cae3a50c..fb9f983a0f567e4c722693b120126ace7127800e 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -1420,7 +1420,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider diff --git a/patches/server/0062-Polpot-Make-egg-and-snowball-can-knockback-player.patch b/patches/server/0063-Polpot-Make-egg-and-snowball-can-knockback-player.patch similarity index 100% rename from patches/server/0062-Polpot-Make-egg-and-snowball-can-knockback-player.patch rename to patches/server/0063-Polpot-Make-egg-and-snowball-can-knockback-player.patch diff --git a/patches/server/0063-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch b/patches/server/0064-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch similarity index 100% rename from patches/server/0063-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch rename to patches/server/0064-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch diff --git a/patches/server/0064-Configurable-fix-tripwire-dupe.patch b/patches/server/0065-Configurable-fix-tripwire-dupe.patch similarity index 100% rename from patches/server/0064-Configurable-fix-tripwire-dupe.patch rename to patches/server/0065-Configurable-fix-tripwire-dupe.patch diff --git a/patches/server/0065-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch b/patches/server/0066-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch similarity index 100% rename from patches/server/0065-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch rename to patches/server/0066-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch diff --git a/patches/server/0066-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch b/patches/server/0067-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch similarity index 100% rename from patches/server/0066-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch rename to patches/server/0067-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch diff --git a/patches/server/0067-Including-5s-in-getTPS.patch b/patches/server/0068-Including-5s-in-getTPS.patch similarity index 100% rename from patches/server/0067-Including-5s-in-getTPS.patch rename to patches/server/0068-Including-5s-in-getTPS.patch diff --git a/patches/server/0068-Remove-useless-creating-stats-json-bases-on-player-n.patch b/patches/server/0069-Remove-useless-creating-stats-json-bases-on-player-n.patch similarity index 100% rename from patches/server/0068-Remove-useless-creating-stats-json-bases-on-player-n.patch rename to patches/server/0069-Remove-useless-creating-stats-json-bases-on-player-n.patch diff --git a/patches/server/0069-Fix-NPE-during-creating-GUI-graph.patch b/patches/server/0070-Fix-NPE-during-creating-GUI-graph.patch similarity index 100% rename from patches/server/0069-Fix-NPE-during-creating-GUI-graph.patch rename to patches/server/0070-Fix-NPE-during-creating-GUI-graph.patch diff --git a/patches/server/0070-Don-t-throw-exception-on-missing-ResourceKey-value.patch b/patches/server/0071-Don-t-throw-exception-on-missing-ResourceKey-value.patch similarity index 100% rename from patches/server/0070-Don-t-throw-exception-on-missing-ResourceKey-value.patch rename to patches/server/0071-Don-t-throw-exception-on-missing-ResourceKey-value.patch