mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-23 17:09:29 +00:00
180 lines
10 KiB
Diff
180 lines
10 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martijn Muijsers <martijnmuijsers@live.nl>
|
|
Date: Wed, 23 Nov 2022 21:05:47 +0100
|
|
Subject: [PATCH] Gale configuration
|
|
|
|
License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
|
Gale - https://galemc.org
|
|
|
|
This patch is based on the following patch:
|
|
"Paper config files"
|
|
By: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
As part of: Paper (https://github.com/PaperMC/Paper)
|
|
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/configuration/Configurations.java b/src/main/java/io/papermc/paper/configuration/Configurations.java
|
|
index d0c4037c3cc60c54ea4c60ffc2c227107fecd01c..c01f3bd5022371b71f2bdc00ebf9d1340afe86d2 100644
|
|
--- a/src/main/java/io/papermc/paper/configuration/Configurations.java
|
|
+++ b/src/main/java/io/papermc/paper/configuration/Configurations.java
|
|
@@ -95,7 +95,7 @@ public abstract class Configurations<G, W> {
|
|
};
|
|
}
|
|
|
|
- static <T> CheckedFunction<ConfigurationNode, T, SerializationException> reloader(Class<T> type, T instance) {
|
|
+ public static <T> CheckedFunction<ConfigurationNode, T, SerializationException> reloader(Class<T> type, T instance) { // Gale - Gale configuration
|
|
return node -> {
|
|
ObjectMapper.Factory factory = (ObjectMapper.Factory) Objects.requireNonNull(node.options().serializers().get(type));
|
|
ObjectMapper.Mutable<T> mutable = (ObjectMapper.Mutable<T>) factory.get(type);
|
|
@@ -169,7 +169,7 @@ public abstract class Configurations<G, W> {
|
|
final YamlConfigurationLoader loader = result.loader();
|
|
final ConfigurationNode node = loader.load();
|
|
if (result.isNewFile()) { // add version to new files
|
|
- node.node(Configuration.VERSION_FIELD).raw(this.worldConfigVersion());
|
|
+ node.node(Configuration.VERSION_FIELD).raw(getWorldConfigurationCurrentVersion()); // Gale - Gale configuration
|
|
} else {
|
|
this.verifyWorldConfigVersion(contextMap, node);
|
|
}
|
|
@@ -231,7 +231,7 @@ public abstract class Configurations<G, W> {
|
|
.build();
|
|
final ConfigurationNode worldNode = worldLoader.load();
|
|
if (newFile) { // set the version field if new file
|
|
- worldNode.node(Configuration.VERSION_FIELD).set(this.worldConfigVersion());
|
|
+ worldNode.node(Configuration.VERSION_FIELD).set(getWorldConfigurationCurrentVersion()); // Gale - Gale configuration
|
|
} else {
|
|
this.verifyWorldConfigVersion(contextMap, worldNode);
|
|
}
|
|
@@ -357,4 +357,25 @@ public abstract class Configurations<G, W> {
|
|
return "ContextKey{" + this.name + "}";
|
|
}
|
|
}
|
|
+
|
|
+ // Gale start - Gale configuration
|
|
+
|
|
+ public static final String legacyWorldsSectionKey = "__________WORLDS__________";
|
|
+ public static final String legacyWorldDefaultsSectionKey = "__defaults__";
|
|
+
|
|
+ @Deprecated
|
|
+ public org.bukkit.configuration.file.YamlConfiguration createLegacyObject(final net.minecraft.server.MinecraftServer server) {
|
|
+ org.bukkit.configuration.file.YamlConfiguration global = org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(this.globalFolder.resolve(this.globalConfigFileName).toFile());
|
|
+ org.bukkit.configuration.ConfigurationSection worlds = global.createSection(legacyWorldsSectionKey);
|
|
+ worlds.set(legacyWorldDefaultsSectionKey, org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(this.globalFolder.resolve(this.defaultWorldConfigFileName).toFile()));
|
|
+ for (ServerLevel level : server.getAllLevels()) {
|
|
+ worlds.set(level.getWorld().getName(), org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(getWorldConfigFile(level).toFile()));
|
|
+ }
|
|
+ return global;
|
|
+ }
|
|
+
|
|
+ public abstract int getWorldConfigurationCurrentVersion();
|
|
+
|
|
+ // Gale end - Gale configuration
|
|
+
|
|
}
|
|
diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
|
|
index a972eeddbdc59e53279a7c5c704e28c2fcdf7290..c18f917171a5ba62afbeedd3638f020117394aff 100644
|
|
--- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
|
|
+++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
|
|
@@ -341,13 +341,13 @@ public class PaperConfigurations extends Configurations<GlobalConfiguration, Wor
|
|
}
|
|
}
|
|
|
|
- private static List<Definition<? extends Annotation, ?, ? extends FieldProcessor.Factory<?, ?>>> defaultFieldProcessors() {
|
|
+ public static List<Definition<? extends Annotation, ?, ? extends FieldProcessor.Factory<?, ?>>> defaultFieldProcessors() { // Gale - Gale configuration - private -> public
|
|
return List.of(
|
|
MergeMap.DEFINITION
|
|
);
|
|
}
|
|
|
|
- private static ContextMap createWorldContextMap(ServerLevel level) {
|
|
+ public static ContextMap createWorldContextMap(ServerLevel level) { // Gale - Gale configuration - private -> public
|
|
return createWorldContextMap(level.levelStorageAccess.levelDirectory.path(), level.serverLevelData.getLevelName(), level.dimension().location(), level.spigotConfig, level.registryAccess(), level.getGameRules());
|
|
}
|
|
|
|
@@ -450,17 +450,6 @@ public class PaperConfigurations extends Configurations<GlobalConfiguration, Wor
|
|
return Files.exists(legacyConfig) && Files.isRegularFile(legacyConfig);
|
|
}
|
|
|
|
- @Deprecated
|
|
- public YamlConfiguration createLegacyObject(final MinecraftServer server) {
|
|
- YamlConfiguration global = YamlConfiguration.loadConfiguration(this.globalFolder.resolve(this.globalConfigFileName).toFile());
|
|
- ConfigurationSection worlds = global.createSection("__________WORLDS__________");
|
|
- worlds.set("__defaults__", YamlConfiguration.loadConfiguration(this.globalFolder.resolve(this.defaultWorldConfigFileName).toFile()));
|
|
- for (ServerLevel level : server.getAllLevels()) {
|
|
- worlds.set(level.getWorld().getName(), YamlConfiguration.loadConfiguration(getWorldConfigFile(level).toFile()));
|
|
- }
|
|
- return global;
|
|
- }
|
|
-
|
|
@Deprecated
|
|
public static YamlConfiguration loadLegacyConfigFile(File configFile) throws Exception {
|
|
YamlConfiguration config = new YamlConfiguration();
|
|
@@ -483,9 +472,16 @@ public class PaperConfigurations extends Configurations<GlobalConfiguration, Wor
|
|
}
|
|
|
|
// Symlinks are not correctly checked in createDirectories
|
|
- static void createDirectoriesSymlinkAware(Path path) throws IOException {
|
|
+ public static void createDirectoriesSymlinkAware(Path path) throws IOException { // Gale - Gale configuration
|
|
if (!Files.isDirectory(path)) {
|
|
Files.createDirectories(path);
|
|
}
|
|
}
|
|
+
|
|
+ // Gale start - Gale configuration
|
|
+ @Override
|
|
+ public int getWorldConfigurationCurrentVersion() {
|
|
+ return WorldConfiguration.CURRENT_VERSION;
|
|
+ }
|
|
+ // Gale end - Gale configuration
|
|
}
|
|
diff --git a/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java b/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java
|
|
index a8a82aca70a97e30ca680c86421c6a04ed8172f8..db23f74b4c02c43ab42cf8db15c400eedf35d343 100644
|
|
--- a/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java
|
|
+++ b/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java
|
|
@@ -97,7 +97,19 @@ public final class InnerClassFieldDiscoverer implements FieldDiscoverer<Map<Fiel
|
|
return create(overrides, fieldProcessors);
|
|
}
|
|
|
|
- public static FieldDiscoverer<?> globalConfig(final List<Definition<?, ?, ? extends FieldProcessor.Factory<?, ?>>> fieldProcessors) {
|
|
+ // Gale start - Gale configuration
|
|
+ public static FieldDiscoverer<?> galeWorldConfig(final io.papermc.paper.configuration.Configurations.ContextMap contextMap, final List<Definition<?, ?, ? extends FieldProcessor.Factory<?, ?>>> fieldProcessors) {
|
|
+ final Map<Class<?>, Object> overrides = Map.of(
|
|
+ org.galemc.gale.configuration.GaleWorldConfiguration.class, new org.galemc.gale.configuration.GaleWorldConfiguration(
|
|
+ contextMap.require(io.papermc.paper.configuration.PaperConfigurations.SPIGOT_WORLD_CONFIG_CONTEXT_KEY).get(),
|
|
+ contextMap.require(io.papermc.paper.configuration.Configurations.WORLD_KEY)
|
|
+ )
|
|
+ );
|
|
+ return create(overrides, fieldProcessors);
|
|
+ }
|
|
+ // Gale end - Gale configuration
|
|
+
|
|
+ public static FieldDiscoverer<?> globalConfig(final List<Definition<?, ?, ? extends FieldProcessor.Factory<?, ?>>> fieldProcessors) { // Gale - Gale configuration
|
|
return create(Collections.emptyMap(), fieldProcessors);
|
|
}
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index 03dfcb4665d0279c825a74f3f999c92fe2bd22cb..bcdd1581ed564e8002f8120ab2efa38871c40ba7 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -1045,6 +1045,7 @@ public final class CraftServer implements Server {
|
|
|
|
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
|
|
this.console.paperConfigurations.reloadConfigs(this.console);
|
|
+ this.console.galeConfigurations.reloadConfigs(this.console); // Gale - Gale configuration
|
|
for (ServerLevel world : this.console.getAllLevels()) {
|
|
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
|
|
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
|
|
@@ -2944,6 +2945,14 @@ public final class CraftServer implements Server {
|
|
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
|
|
}
|
|
|
|
+ // Gale start - Gale configuration - API
|
|
+ @Override
|
|
+ public YamlConfiguration getGaleConfig()
|
|
+ {
|
|
+ return CraftServer.this.console.galeConfigurations.createLegacyObject(CraftServer.this.console);
|
|
+ }
|
|
+ // Gale end - Gale configuration - API
|
|
+
|
|
@Override
|
|
public void restart() {
|
|
CraftServer.this.restart();
|