9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-23 17:09:29 +00:00

Add Legacy LeafConfig converter

This commit is contained in:
Dreeam
2024-02-29 09:31:12 -05:00
parent 71f9709da9
commit 8c8a8ac996
70 changed files with 488 additions and 32 deletions

View File

@@ -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<String> getStringList(String key, List<String> defaultValue, String... comment) {
+ return getStringList(key, null, defaultValue, comment);
+ }
+
+ private static List<String> getStringList(String key, @Nullable String oldKey, List<String> defaultValue, String... comment) {
+ ensureDefault(key, defaultValue, comment);
+ return config.getStringList(key);
+ }
+
+ static Map<String, Object> getMap(String key, Map<String, Object> defaultValue) {
+ if (defaultValue != null && getConfigCopy().getConfigurationSection(key) == null) {
+ config.addDefault(key, defaultValue);
+ return defaultValue;
+ }
+ return toMap(getConfigCopy().getConfigurationSection(key));
+ }
+
+ private static Map<String, Object> toMap(ConfigurationSection section) {
+ ImmutableMap.Builder<String, Object> 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() {
+ }
+}

View File

@@ -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<IConfigModule> 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<String, Object> 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);
+ }
+}

View File

@@ -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<JavaExec> = register<JavaExec>(name) {

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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<TickTa

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Sync with Gale's Optimize-sun-burn-tick.patch
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index b1c74e88cffb5e63a0fcba90522aa8e37f908f47..381579e0b86af5e2b661a1a19658417027b7dd47 100644
index 3a1b8f57c74124dbb413651a099dbadbc2e28490..c2cd75fe46adaa59b8f25dbb5f29c66796e1b60e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -567,13 +567,29 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
@@ -42,7 +42,7 @@ index b1c74e88cffb5e63a0fcba90522aa8e37f908f47..381579e0b86af5e2b661a1a196584170
}
}
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 4f045c799087709ef3a39983533776e9fedd00eb..69c0b1c756b5e18eefd825421662f2ae237e164e 100644
index 2f06a3226f05797d6e2427e444a568bf06c67e3a..b0f151360a6263192aed9c1ff79c442bfe488483 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1740,11 +1740,6 @@ public abstract class Mob extends LivingEntity implements Targeting {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Fix tracker NPE
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 7873646019080bde586cc95634b483910536cc67..5eed5d9737f9eb694e05033d658821efcd04cbe5 100644
index e95f6053982f9637c195243ceab37061b31355b5..af1cd2916a892b4c20ca26187a801ed713325a73 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -241,7 +241,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -18,7 +18,7 @@ index 7873646019080bde586cc95634b483910536cc67..5eed5d9737f9eb694e05033d658821ef
// Paper end - optimise chunk tick iteration
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 3af5602ef3d6265a2ddcdc5038c35ea1ca36d705..3f8c94087ca4dd8454251f1a1c9aa9fec26ddb32 100644
index 93ec0bdece165e5a5058f9a7ed2fd67dbcef2ab4..70b35ce82701454017b44e8a2fb3b45fefc6420e 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -9,6 +9,7 @@ import java.io.IOException;

View File

@@ -13,10 +13,10 @@ Fixed errors in console has no color,also fixed`Advanced terminal features are n
or `Unable to create terminal` like issues
diff --git a/build.gradle.kts b/build.gradle.kts
index 7a5933a2bb8cde20d4d147cc2665b2e65b881c35..1916967f583ebdb70682cf754a3f641ff80cc440 100644
index 607d6a73daba955734f651530e4d3db87110eb16..7953623fe9858b9d8996a73a2c0145a9d736337e 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -26,7 +26,7 @@ dependencies {
@@ -33,7 +33,7 @@ dependencies {
// Paper start
implementation("org.jline:jline-terminal-jansi:3.25.1") // Leaf - Bump Dependencies

View File

@@ -10,7 +10,7 @@ But still recommend to turn-off `checkForMinecartNearItemWhileActive`
Since `Reduce-hopper-item-checks.patch` will cause lag under massive dropped items
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
index 7f1803d073ba3a4be2c93c52dd1775f678ced7ae..50ce38ec45d2123c230373ad8f888f76ddd78172 100644
index fbee057a90fb47f4b31388cdff052fbaf04b33d6..a68a6649d4ab40de1703ecc188566c9499ed4abc 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
@@ -1,7 +1,9 @@

View File

@@ -17,11 +17,11 @@ This format saves about 50% of disk space.
Documentation: https://github.com/xymb-endcrystalme/LinearRegionFileFormatTools
diff --git a/build.gradle.kts b/build.gradle.kts
index 1916967f583ebdb70682cf754a3f641ff80cc440..8cdd625ea7258996a2d5b4d3d6c256134a7564d6 100644
index 7953623fe9858b9d8996a73a2c0145a9d736337e..8fd100c7caa71044fcfad0fe463862fb484327f3 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -25,6 +25,8 @@ dependencies {
implementation("com.electronwill.night-config:toml:3.6.7") // Leaf - Night config
@@ -32,6 +32,8 @@ dependencies {
// Leaf end
// Paper start
+ implementation("com.github.luben:zstd-jni:1.5.5-11") // LinearPurpur

View File

@@ -60,7 +60,7 @@ index c7cd4ecf7cec85802c234d72619c9e191d6ca794..d68368f0d620e3d7a843c149cf06ad96
@Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
index 27fd37b650698cb73b93f84d536043ca1f7875d4..2c22e463efcfbcb36714d41e0c09272be77f2ea9 100644
index 2957a7617acae18e23d8ffb90ed5c790681da9c1..4da22d7e536706f2ce892d15435b56a63c11b544 100644
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
@@ -137,6 +137,23 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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