diff --git a/src/main/java/ru/bclib/api/dataexchange/handler/autosync/AutoSync.java b/src/main/java/ru/bclib/api/dataexchange/handler/autosync/AutoSync.java index 3d96ea25..783de73d 100644 --- a/src/main/java/ru/bclib/api/dataexchange/handler/autosync/AutoSync.java +++ b/src/main/java/ru/bclib/api/dataexchange/handler/autosync/AutoSync.java @@ -4,6 +4,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.loader.api.FabricLoader; import ru.bclib.BCLib; +import ru.bclib.api.dataexchange.DataExchangeAPI; import ru.bclib.api.dataexchange.SyncFileHash; import ru.bclib.config.ConfigUI; import ru.bclib.config.Configs; @@ -208,11 +209,21 @@ public class AutoSync { return syncFolderContent; } - //we call this from HelloServer to prepare transfer + private static boolean didRegisterAdditionalMods = false; + //we call this from HelloClient on the Srérver to prepare transfer protected static void loadSyncFolder() { - if (Configs.MAIN_CONFIG.getBoolean(AutoSync.SYNC_CATEGORY, "offersSyncFolders", true)) { + if (Configs.SERVER_CONFIG.isOfferingFiles()) { syncFolderDescriptions.forEach(desc -> desc.loadCache()); } + + if (!didRegisterAdditionalMods && Configs.SERVER_CONFIG.isOfferingMods()){ + didRegisterAdditionalMods = true; + List modIDs = Configs.SERVER_CONFIG.get(ServerConfig.ADDITIONAL_MODS); + if (modIDs != null){ + modIDs.stream().forEach(modID -> DataExchangeAPI.registerModDependency(modID)); + } + } + } protected static SyncFolderDescriptor getSyncFolderDescriptor(String folderID) { diff --git a/src/main/java/ru/bclib/config/Configs.java b/src/main/java/ru/bclib/config/Configs.java index 621fd848..c39ba429 100644 --- a/src/main/java/ru/bclib/config/Configs.java +++ b/src/main/java/ru/bclib/config/Configs.java @@ -7,15 +7,20 @@ import ru.bclib.api.dataexchange.handler.autosync.AutoSync.ClientConfig; import ru.bclib.api.dataexchange.handler.autosync.AutoSync.ServerConfig; public class Configs { + // Client and Server-Config must be the first entries. They are not part of the Auto-Sync process + // But will be needed by other Auto-Sync Config-Files + @Environment(EnvType.CLIENT) + public static final ClientConfig CLIENT_CONFIG = new ClientConfig(); + public static final ServerConfig SERVER_CONFIG = new ServerConfig(); + + public static final PathConfig GENERATOR_CONFIG = new PathConfig(BCLib.MOD_ID, "generator"); public static final PathConfig MAIN_CONFIG = new PathConfig(BCLib.MOD_ID, "main", true, true); public static final String MAIN_PATCH_CATEGORY = "patches"; public static final PathConfig RECIPE_CONFIG = new PathConfig(BCLib.MOD_ID, "recipes"); - @Environment(EnvType.CLIENT) - public static final ClientConfig CLIENT_CONFIG = new ClientConfig(); - public static final ServerConfig SERVER_CONFIG = new ServerConfig(); + public static void save() { MAIN_CONFIG.saveChanges(); diff --git a/src/main/java/ru/bclib/config/NamedPathConfig.java b/src/main/java/ru/bclib/config/NamedPathConfig.java index 1bf295c7..3dedc87d 100644 --- a/src/main/java/ru/bclib/config/NamedPathConfig.java +++ b/src/main/java/ru/bclib/config/NamedPathConfig.java @@ -241,6 +241,7 @@ public class NamedPathConfig extends PathConfig{ public void set(ConfigToken> what, List value) { this.setStringArray(what, value); } + private List _getStringArray(ConfigToken> what){ return this.getStringArray(what, what.defaultValue); }