From 97d5f7a299e577f3bf2fbfe09a4ad912ac341cd6 Mon Sep 17 00:00:00 2001 From: Michael G <10155689+DarthMDev@users.noreply.github.com> Date: Thu, 20 Mar 2025 19:02:37 -0400 Subject: [PATCH 1/7] Add user:// as mod source Fixes #548 --- addons/mod_loader/internal/path.gd | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/mod_loader/internal/path.gd b/addons/mod_loader/internal/path.gd index 9c67928d..f835b22f 100644 --- a/addons/mod_loader/internal/path.gd +++ b/addons/mod_loader/internal/path.gd @@ -8,6 +8,7 @@ extends RefCounted const LOG_NAME := "ModLoader:Path" const MOD_CONFIG_DIR_PATH := "user://mod_configs" const MOD_CONFIG_DIR_PATH_OLD := "user://configs" +const USER_MODS_DIR_PATH := "user://mods" # Get the path to a local folder. Primarily used to get the (packed) mods @@ -291,3 +292,6 @@ static func handle_mod_config_path_deprecation() -> void: ModLoaderLog.error("Failed to rename the config directory with error \"%s\"." % [error_string(error)], LOG_NAME) else: ModLoaderLog.success("Successfully renamed config directory to \"%s\"." % MOD_CONFIG_DIR_PATH, LOG_NAME) + +static func get_path_to_user_mods() -> String: + return USER_MODS_DIR_PATH From 16d237cf08554387ff93941cc6d887a720e90fc9 Mon Sep 17 00:00:00 2001 From: DarthM Date: Sat, 22 Mar 2025 01:12:29 -0400 Subject: [PATCH 2/7] add user_data_mods to different scene options and options_profile --- addons/mod_loader/options/profiles/current.tres | 1 + addons/mod_loader/options/profiles/default.tres | 1 + addons/mod_loader/options/profiles/disable_mods.tres | 1 + addons/mod_loader/options/profiles/editor.tres | 3 ++- addons/mod_loader/options/profiles/production_no_workshop.tres | 1 + addons/mod_loader/options/profiles/production_workshop.tres | 1 + addons/mod_loader/resources/options_profile.gd | 2 ++ 7 files changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/mod_loader/options/profiles/current.tres b/addons/mod_loader/options/profiles/current.tres index 94742bb4..d27c7e63 100644 --- a/addons/mod_loader/options/profiles/current.tres +++ b/addons/mod_loader/options/profiles/current.tres @@ -11,3 +11,4 @@ steam_workshop_enabled = false override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" +user_data_mods = false \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/default.tres b/addons/mod_loader/options/profiles/default.tres index 07774b34..27289bb7 100644 --- a/addons/mod_loader/options/profiles/default.tres +++ b/addons/mod_loader/options/profiles/default.tres @@ -12,3 +12,4 @@ steam_workshop_enabled = false override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" +user_data_mods = false \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/disable_mods.tres b/addons/mod_loader/options/profiles/disable_mods.tres index e1e30d3c..61529518 100644 --- a/addons/mod_loader/options/profiles/disable_mods.tres +++ b/addons/mod_loader/options/profiles/disable_mods.tres @@ -12,3 +12,4 @@ steam_workshop_enabled = false override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" +user_data_mods = false \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/editor.tres b/addons/mod_loader/options/profiles/editor.tres index 2183936f..a28ba973 100644 --- a/addons/mod_loader/options/profiles/editor.tres +++ b/addons/mod_loader/options/profiles/editor.tres @@ -14,4 +14,5 @@ override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" ignore_deprecated_errors = true -ignored_mod_names_in_log = [ ] \ No newline at end of file +ignored_mod_names_in_log = [ ] +user_data_mods = false diff --git a/addons/mod_loader/options/profiles/production_no_workshop.tres b/addons/mod_loader/options/profiles/production_no_workshop.tres index 7b5856c0..bfcc3818 100644 --- a/addons/mod_loader/options/profiles/production_no_workshop.tres +++ b/addons/mod_loader/options/profiles/production_no_workshop.tres @@ -17,3 +17,4 @@ ignore_deprecated_errors = false ignored_mod_names_in_log = [] load_from_steam_workshop = false load_from_local = true +user_data_mods = false diff --git a/addons/mod_loader/options/profiles/production_workshop.tres b/addons/mod_loader/options/profiles/production_workshop.tres index 0b610bcb..a49b3eae 100644 --- a/addons/mod_loader/options/profiles/production_workshop.tres +++ b/addons/mod_loader/options/profiles/production_workshop.tres @@ -17,3 +17,4 @@ ignore_deprecated_errors = false ignored_mod_names_in_log = [] load_from_steam_workshop = true load_from_local = true +user_data_mods = false \ No newline at end of file diff --git a/addons/mod_loader/resources/options_profile.gd b/addons/mod_loader/resources/options_profile.gd index f1982f48..4f975dbb 100644 --- a/addons/mod_loader/resources/options_profile.gd +++ b/addons/mod_loader/resources/options_profile.gd @@ -117,3 +117,5 @@ var custom_game_version_validation_callable: Callable ## Stores the instance of the script specified in [member customize_script_path]. var customize_script_instance: RefCounted + +export \ No newline at end of file From 99c7a0888ffdda6432772daeaf407da3a278cc81 Mon Sep 17 00:00:00 2001 From: DarthM Date: Sat, 22 Mar 2025 01:21:02 -0400 Subject: [PATCH 3/7] Update options_profile.gd --- addons/mod_loader/resources/options_profile.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mod_loader/resources/options_profile.gd b/addons/mod_loader/resources/options_profile.gd index 4f975dbb..991ff05e 100644 --- a/addons/mod_loader/resources/options_profile.gd +++ b/addons/mod_loader/resources/options_profile.gd @@ -118,4 +118,4 @@ var custom_game_version_validation_callable: Callable ## Stores the instance of the script specified in [member customize_script_path]. var customize_script_instance: RefCounted -export \ No newline at end of file +@export var user_data_mods: bool = true From 843f062cd46dbc6f68a39eaa9b66197efa8daaf8 Mon Sep 17 00:00:00 2001 From: DarthM Date: Sat, 22 Mar 2025 01:29:42 -0400 Subject: [PATCH 4/7] path: add option for user data path in get_mod_paths_from_all_sources --- addons/mod_loader/internal/path.gd | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/mod_loader/internal/path.gd b/addons/mod_loader/internal/path.gd index f835b22f..3d22aa58 100644 --- a/addons/mod_loader/internal/path.gd +++ b/addons/mod_loader/internal/path.gd @@ -210,6 +210,9 @@ static func get_mod_paths_from_all_sources() -> Array[String]: if ModLoaderStore.ml_options.load_from_steam_workshop: mod_paths.append_array(_ModLoaderSteam.find_steam_workshop_zips()) + + if ModLoaderStore.ml_options.user_data_mods: + mod_paths.append_array(get_zip_paths_in(get_path_to_user_mods())) return mod_paths From d9e45ae8e73c3561f0106f7819eaab71641bcf5a Mon Sep 17 00:00:00 2001 From: DarthM Date: Mon, 24 Mar 2025 04:46:54 -0400 Subject: [PATCH 5/7] add option to override path to user mods --- addons/mod_loader/internal/path.gd | 3 +++ addons/mod_loader/mod_loader_store.gd | 8 +++++++- addons/mod_loader/options/profiles/current.tres | 3 ++- addons/mod_loader/options/profiles/default.tres | 3 ++- addons/mod_loader/options/profiles/disable_mods.tres | 3 ++- addons/mod_loader/options/profiles/editor.tres | 1 + .../options/profiles/production_no_workshop.tres | 1 + .../mod_loader/options/profiles/production_workshop.tres | 3 ++- addons/mod_loader/resources/options_profile.gd | 2 ++ test/test_options/customize_script/custom_validation.tres | 1 + .../custom_validation_no_callable_set.tres | 1 + .../game_version_validation_default.tres | 1 + .../game_version_validation_disabled.tres | 1 + 13 files changed, 26 insertions(+), 5 deletions(-) diff --git a/addons/mod_loader/internal/path.gd b/addons/mod_loader/internal/path.gd index 3d22aa58..d9f99d3a 100644 --- a/addons/mod_loader/internal/path.gd +++ b/addons/mod_loader/internal/path.gd @@ -297,4 +297,7 @@ static func handle_mod_config_path_deprecation() -> void: ModLoaderLog.success("Successfully renamed config directory to \"%s\"." % MOD_CONFIG_DIR_PATH, LOG_NAME) static func get_path_to_user_mods() -> String: + if ModLoaderStore: + if ModLoaderStore.ml_options.override_path_to_user_data_mods: + return ModLoaderStore.ml_options.override_path_to_user_data_mods return USER_MODS_DIR_PATH diff --git a/addons/mod_loader/mod_loader_store.gd b/addons/mod_loader/mod_loader_store.gd index 5bc7bebd..909a9523 100644 --- a/addons/mod_loader/mod_loader_store.gd +++ b/addons/mod_loader/mod_loader_store.gd @@ -200,7 +200,13 @@ func _update_ml_options_from_cli_args() -> void: if cmd_line_mod_path: ml_options.override_path_to_mods = cmd_line_mod_path ModLoaderLog.info("The path mods are loaded from has been changed via the CLI arg `--mods-path`, to: " + cmd_line_mod_path, LOG_NAME) - + # Override paths to user data mods + # Set via: --mod-user-path + # Example: --mod-user-path="C://user/mods" + var cmd_line_mod_user_path := _ModLoaderCLI.get_cmd_line_arg_value("--mod-user-path") + if cmd_line_mod_user_path: + ml_options.override_path_to_user_data_mods = cmd_line_mod_user_path + ModLoaderLog.info("The path mod user data is loaded from has been changed via the CLI arg `--mod-user-path`, to: " + cmd_line_mod_user_path, LOG_NAME) # Override paths to configs # Set via: --configs-path # Example: --configs-path="C://path/configs" diff --git a/addons/mod_loader/options/profiles/current.tres b/addons/mod_loader/options/profiles/current.tres index d27c7e63..94d3f9f1 100644 --- a/addons/mod_loader/options/profiles/current.tres +++ b/addons/mod_loader/options/profiles/current.tres @@ -11,4 +11,5 @@ steam_workshop_enabled = false override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" -user_data_mods = false \ No newline at end of file +user_data_mods = false +override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/default.tres b/addons/mod_loader/options/profiles/default.tres index 27289bb7..a17ca99e 100644 --- a/addons/mod_loader/options/profiles/default.tres +++ b/addons/mod_loader/options/profiles/default.tres @@ -12,4 +12,5 @@ steam_workshop_enabled = false override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" -user_data_mods = false \ No newline at end of file +user_data_mods = false +override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/disable_mods.tres b/addons/mod_loader/options/profiles/disable_mods.tres index 61529518..72ffc0dd 100644 --- a/addons/mod_loader/options/profiles/disable_mods.tres +++ b/addons/mod_loader/options/profiles/disable_mods.tres @@ -12,4 +12,5 @@ steam_workshop_enabled = false override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" -user_data_mods = false \ No newline at end of file +user_data_mods = false +override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/editor.tres b/addons/mod_loader/options/profiles/editor.tres index a28ba973..e93f958e 100644 --- a/addons/mod_loader/options/profiles/editor.tres +++ b/addons/mod_loader/options/profiles/editor.tres @@ -16,3 +16,4 @@ override_path_to_workshop = "" ignore_deprecated_errors = true ignored_mod_names_in_log = [ ] user_data_mods = false +override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/production_no_workshop.tres b/addons/mod_loader/options/profiles/production_no_workshop.tres index bfcc3818..5de50e29 100644 --- a/addons/mod_loader/options/profiles/production_no_workshop.tres +++ b/addons/mod_loader/options/profiles/production_no_workshop.tres @@ -18,3 +18,4 @@ ignored_mod_names_in_log = [] load_from_steam_workshop = false load_from_local = true user_data_mods = false +override_path_to_user_data_mods \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/production_workshop.tres b/addons/mod_loader/options/profiles/production_workshop.tres index a49b3eae..53061227 100644 --- a/addons/mod_loader/options/profiles/production_workshop.tres +++ b/addons/mod_loader/options/profiles/production_workshop.tres @@ -17,4 +17,5 @@ ignore_deprecated_errors = false ignored_mod_names_in_log = [] load_from_steam_workshop = true load_from_local = true -user_data_mods = false \ No newline at end of file +user_data_mods = false +override_path_to_user_data_mods \ No newline at end of file diff --git a/addons/mod_loader/resources/options_profile.gd b/addons/mod_loader/resources/options_profile.gd index 991ff05e..46b95805 100644 --- a/addons/mod_loader/resources/options_profile.gd +++ b/addons/mod_loader/resources/options_profile.gd @@ -119,3 +119,5 @@ var custom_game_version_validation_callable: Callable var customize_script_instance: RefCounted @export var user_data_mods: bool = true + +@export_dir var override_path_to_user_data_mods := "" \ No newline at end of file diff --git a/test/test_options/customize_script/custom_validation.tres b/test/test_options/customize_script/custom_validation.tres index f390d4c3..ae3845f2 100644 --- a/test/test_options/customize_script/custom_validation.tres +++ b/test/test_options/customize_script/custom_validation.tres @@ -24,3 +24,4 @@ override_hook_pack_name = "" restart_notification_scene_path = "res://addons/mod_loader/restart_notification.tscn" disable_restart = false game_version_validation = 2 +override_path_to_user_data_mods \ No newline at end of file diff --git a/test/test_options/customize_script_no_callable_set/custom_validation_no_callable_set.tres b/test/test_options/customize_script_no_callable_set/custom_validation_no_callable_set.tres index 9e5b01ea..a471d77a 100644 --- a/test/test_options/customize_script_no_callable_set/custom_validation_no_callable_set.tres +++ b/test/test_options/customize_script_no_callable_set/custom_validation_no_callable_set.tres @@ -24,3 +24,4 @@ override_hook_pack_name = "" restart_notification_scene_path = "res://addons/mod_loader/restart_notification.tscn" disable_restart = false game_version_validation = 2 +override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/test/test_options/game_version_validation_default/game_version_validation_default.tres b/test/test_options/game_version_validation_default/game_version_validation_default.tres index 611aea76..06b5089e 100644 --- a/test/test_options/game_version_validation_default/game_version_validation_default.tres +++ b/test/test_options/game_version_validation_default/game_version_validation_default.tres @@ -24,3 +24,4 @@ override_hook_pack_name = "" restart_notification_scene_path = "res://addons/mod_loader/restart_notification.tscn" disable_restart = false game_version_validation = 0 +override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/test/test_options/game_version_validation_disabled/game_version_validation_disabled.tres b/test/test_options/game_version_validation_disabled/game_version_validation_disabled.tres index 5d9dbf34..a89c49d7 100644 --- a/test/test_options/game_version_validation_disabled/game_version_validation_disabled.tres +++ b/test/test_options/game_version_validation_disabled/game_version_validation_disabled.tres @@ -24,3 +24,4 @@ override_hook_pack_name = "" restart_notification_scene_path = "res://addons/mod_loader/restart_notification.tscn" disable_restart = false game_version_validation = 1 +override_path_to_user_data_mods = "" \ No newline at end of file From b3238d962909101da9fd9dc16e9b54c0fc995714 Mon Sep 17 00:00:00 2001 From: Michael G <10155689+DarthMDev@users.noreply.github.com> Date: Mon, 24 Mar 2025 17:54:10 -0400 Subject: [PATCH 6/7] Apply suggestions from code review Co-authored-by: steen --- addons/mod_loader/resources/options_profile.gd | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/mod_loader/resources/options_profile.gd b/addons/mod_loader/resources/options_profile.gd index 46b95805..a35c3eb6 100644 --- a/addons/mod_loader/resources/options_profile.gd +++ b/addons/mod_loader/resources/options_profile.gd @@ -118,6 +118,9 @@ var custom_game_version_validation_callable: Callable ## Stores the instance of the script specified in [member customize_script_path]. var customize_script_instance: RefCounted -@export var user_data_mods: bool = true +## Indicates whether to load mods from the "mods" folder located in the game's user data directory (user://) +@export var load_from_user_data_mods: bool = true +## Alternative path to a folder containing mods (originally within user://). [br] +## Mod zips should be directly in this folder @export_dir var override_path_to_user_data_mods := "" \ No newline at end of file From 7b989cc2b76a6ce306cdfb77d84bc7855079792b Mon Sep 17 00:00:00 2001 From: DarthM Date: Mon, 24 Mar 2025 18:06:56 -0400 Subject: [PATCH 7/7] minor changes as suggested --- addons/mod_loader/internal/path.gd | 7 +++---- addons/mod_loader/options/profiles/current.tres | 2 +- addons/mod_loader/options/profiles/default.tres | 2 +- addons/mod_loader/options/profiles/disable_mods.tres | 2 +- addons/mod_loader/options/profiles/editor.tres | 2 +- .../options/profiles/production_no_workshop.tres | 2 +- .../options/profiles/production_workshop.tres | 2 +- addons/mod_loader/resources/options_profile.gd | 12 +++++++----- 8 files changed, 16 insertions(+), 15 deletions(-) diff --git a/addons/mod_loader/internal/path.gd b/addons/mod_loader/internal/path.gd index d9f99d3a..7935d952 100644 --- a/addons/mod_loader/internal/path.gd +++ b/addons/mod_loader/internal/path.gd @@ -211,7 +211,7 @@ static func get_mod_paths_from_all_sources() -> Array[String]: if ModLoaderStore.ml_options.load_from_steam_workshop: mod_paths.append_array(_ModLoaderSteam.find_steam_workshop_zips()) - if ModLoaderStore.ml_options.user_data_mods: + if ModLoaderStore.ml_options.load_from_user_data_mods: mod_paths.append_array(get_zip_paths_in(get_path_to_user_mods())) return mod_paths @@ -297,7 +297,6 @@ static func handle_mod_config_path_deprecation() -> void: ModLoaderLog.success("Successfully renamed config directory to \"%s\"." % MOD_CONFIG_DIR_PATH, LOG_NAME) static func get_path_to_user_mods() -> String: - if ModLoaderStore: - if ModLoaderStore.ml_options.override_path_to_user_data_mods: - return ModLoaderStore.ml_options.override_path_to_user_data_mods + if ModLoaderStore and ModLoaderStore.ml_options.override_path_to_user_data_mods: + return ModLoaderStore.ml_options.override_path_to_user_data_mods return USER_MODS_DIR_PATH diff --git a/addons/mod_loader/options/profiles/current.tres b/addons/mod_loader/options/profiles/current.tres index 94d3f9f1..5b5718ad 100644 --- a/addons/mod_loader/options/profiles/current.tres +++ b/addons/mod_loader/options/profiles/current.tres @@ -11,5 +11,5 @@ steam_workshop_enabled = false override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" -user_data_mods = false +load_from_user_data_mods = false override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/default.tres b/addons/mod_loader/options/profiles/default.tres index a17ca99e..9c12cd76 100644 --- a/addons/mod_loader/options/profiles/default.tres +++ b/addons/mod_loader/options/profiles/default.tres @@ -12,5 +12,5 @@ steam_workshop_enabled = false override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" -user_data_mods = false +load_from_user_data_mods = false override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/disable_mods.tres b/addons/mod_loader/options/profiles/disable_mods.tres index 72ffc0dd..d749ef08 100644 --- a/addons/mod_loader/options/profiles/disable_mods.tres +++ b/addons/mod_loader/options/profiles/disable_mods.tres @@ -12,5 +12,5 @@ steam_workshop_enabled = false override_path_to_mods = "" override_path_to_configs = "" override_path_to_workshop = "" -user_data_mods = false +load_from_user_data_mods = false override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/editor.tres b/addons/mod_loader/options/profiles/editor.tres index e93f958e..4e57952c 100644 --- a/addons/mod_loader/options/profiles/editor.tres +++ b/addons/mod_loader/options/profiles/editor.tres @@ -15,5 +15,5 @@ override_path_to_configs = "" override_path_to_workshop = "" ignore_deprecated_errors = true ignored_mod_names_in_log = [ ] -user_data_mods = false +load_from_user_data_mods = false override_path_to_user_data_mods = "" \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/production_no_workshop.tres b/addons/mod_loader/options/profiles/production_no_workshop.tres index 5de50e29..2ce806d8 100644 --- a/addons/mod_loader/options/profiles/production_no_workshop.tres +++ b/addons/mod_loader/options/profiles/production_no_workshop.tres @@ -17,5 +17,5 @@ ignore_deprecated_errors = false ignored_mod_names_in_log = [] load_from_steam_workshop = false load_from_local = true -user_data_mods = false +load_from_user_data_mods = false override_path_to_user_data_mods \ No newline at end of file diff --git a/addons/mod_loader/options/profiles/production_workshop.tres b/addons/mod_loader/options/profiles/production_workshop.tres index 53061227..e08e9b85 100644 --- a/addons/mod_loader/options/profiles/production_workshop.tres +++ b/addons/mod_loader/options/profiles/production_workshop.tres @@ -17,5 +17,5 @@ ignore_deprecated_errors = false ignored_mod_names_in_log = [] load_from_steam_workshop = true load_from_local = true -user_data_mods = false +load_from_user_data_mods = false override_path_to_user_data_mods \ No newline at end of file diff --git a/addons/mod_loader/resources/options_profile.gd b/addons/mod_loader/resources/options_profile.gd index a35c3eb6..fc277f6b 100644 --- a/addons/mod_loader/resources/options_profile.gd +++ b/addons/mod_loader/resources/options_profile.gd @@ -74,6 +74,8 @@ enum VERSION_VALIDATION { @export var load_from_steam_workshop: bool = false ## Indicates whether to load mods from the "mods" folder located at the game's install directory, or the overridden mods path. @export var load_from_local: bool = true +## Indicates whether to load mods from the "mods" folder located in the game's user data directory (user://) +@export var load_from_user_data_mods: bool = true ## Indicates whether to load mods from [code]"res://mods-unpacked"[/code] in the exported game.[br] ## ===[br] ## [b]Note:[color=note "Load from unpacked in the editor"][/color][/b][br] @@ -83,6 +85,9 @@ enum VERSION_VALIDATION { ## Path to a folder containing mods [br] ## Mod zips should be directly in this folder @export_dir var override_path_to_mods = "" +## Alternative path to a folder containing mods (originally within user://). [br] +## Mod zips should be directly in this folder +@export_dir var override_path_to_user_data_mods := "" ## Use this option to override the default path where configs are stored. @export_dir var override_path_to_configs = "" ## Path to a folder containing workshop items.[br] @@ -118,9 +123,6 @@ var custom_game_version_validation_callable: Callable ## Stores the instance of the script specified in [member customize_script_path]. var customize_script_instance: RefCounted -## Indicates whether to load mods from the "mods" folder located in the game's user data directory (user://) -@export var load_from_user_data_mods: bool = true -## Alternative path to a folder containing mods (originally within user://). [br] -## Mod zips should be directly in this folder -@export_dir var override_path_to_user_data_mods := "" \ No newline at end of file + +