mirror of
				https://github.com/factoriotools/factorio-docker.git
				synced 2025-10-31 00:48:07 +01:00 
			
		
		
		
	Added DLC_SPACE_AGE environment variable (#519)
* Added DLC_SPACE_AGE environment variable to enable or disable dlc related mods
Took 53 minutes
* 🎨
Took 2 minutes
			
			
This commit is contained in:
		
							
								
								
									
										25
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								README.md
									
									
									
									
									
								
							| @@ -261,18 +261,19 @@ The `server-settings.json` file may then contain the variable references like th | ||||
|  | ||||
| These are the environment variables which can be specified at container run time. | ||||
|  | ||||
| | Variable Name | Description | Default | Available in | | ||||
| | - | - | - | - | | ||||
| | GENERATE_NEW_SAVE | Generate a new save if one does not exist before starting the server  | false | 0.17+ | | ||||
| | LOAD_LATEST_SAVE | Load latest when true. Otherwise load SAVE_NAME | true | 0.17+ | | ||||
| | PORT | UDP port the server listens on | 34197 | 0.15+ | | ||||
| | BIND | IP address (v4 or v6) the server listens on (IP\[:PORT]) | | 0.15+ | | ||||
| | RCON_PORT | TCP port the rcon server listens on | 27015 | 0.15+ | | ||||
| | SAVE_NAME | Name to use for the save file | _autosave1 | 0.17+ | | ||||
| | TOKEN | factorio.com token | | 0.17+ | | ||||
| | UPDATE_MODS_ON_START | If mods should be updated before starting the server | | 0.17+ | | ||||
| | USERNAME | factorio.com username | | 0.17+ | | | ||||
| | CONSOLE_LOG_LOCATION | Saves the console log to the specifies location | | | ||||
| | Variable Name        | Description                                                          | Default    | Available in | | ||||
| |----------------------|----------------------------------------------------------------------|------------|--------------| | ||||
| | GENERATE_NEW_SAVE    | Generate a new save if one does not exist before starting the server | false      | 0.17+        | | ||||
| | LOAD_LATEST_SAVE     | Load latest when true. Otherwise load SAVE_NAME                      | true       | 0.17+        | | ||||
| | PORT                 | UDP port the server listens on                                       | 34197      | 0.15+        | | ||||
| | BIND                 | IP address (v4 or v6) the server listens on (IP\[:PORT])             |            | 0.15+        | | ||||
| | RCON_PORT            | TCP port the rcon server listens on                                  | 27015      | 0.15+        | | ||||
| | SAVE_NAME            | Name to use for the save file                                        | _autosave1 | 0.17+        | | ||||
| | TOKEN                | factorio.com token                                                   |            | 0.17+        | | ||||
| | UPDATE_MODS_ON_START | If mods should be updated before starting the server                 |            | 0.17+        | | ||||
| | USERNAME             | factorio.com username                                                |            | 0.17+        | | ||||
| | CONSOLE_LOG_LOCATION | Saves the console log to the specifies location                      |            |              | | ||||
| | DLC_SPACE_AGE        | Enables or disables the mods for DLC Space Age in mod-list.json      | true       | 2.0.8+       | | ||||
|  | ||||
| **Note:** All environment variables are compared as strings | ||||
|  | ||||
|   | ||||
							
								
								
									
										38
									
								
								docker/files/docker-dlc.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								docker/files/docker-dlc.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| #!/bin/bash | ||||
| set -eou pipefail | ||||
|  | ||||
| # Path to the mod-list.json file | ||||
| MOD_LIST_FILE="$MODS/mod-list.json" | ||||
|  | ||||
| enable_mod() | ||||
| { | ||||
|   echo "Enable mod $1 for DLC" | ||||
|   jq --arg mod_name "$1" 'if .mods | map(.name) | index($mod_name) then .mods |= map(if .name == $mod_name and .enabled == false then .enabled = true else . end) else . end' "$MOD_LIST_FILE" > "$MOD_LIST_FILE.tmp" | ||||
|   mv "$MOD_LIST_FILE.tmp" "$MOD_LIST_FILE" | ||||
| } | ||||
|  | ||||
| disable_mod() | ||||
| { | ||||
|   echo "Disable mod $1 for DLC" | ||||
|   jq --arg mod_name "$1" 'if .mods | map(.name) | index($mod_name) then .mods |= map(if .name == $mod_name and .enabled == true then .enabled = false else . end) else .mods += [{"name": $mod_name, "enabled": false}] end' "$MOD_LIST_FILE" > "$MOD_LIST_FILE.tmp" | ||||
|   mv "$MOD_LIST_FILE.tmp" "$MOD_LIST_FILE" | ||||
| } | ||||
|  | ||||
| # Enable or disable DLCs if configured | ||||
| if [[ ${DLC_SPACE_AGE:-} == "true" ]]; then | ||||
|   # Define the DLC mods | ||||
|   DLC_MODS=("elevated-rails" "quality" "space-age") | ||||
|  | ||||
|   # Iterate over each DLC mod | ||||
|   for MOD in "${DLC_MODS[@]}"; do | ||||
|     enable_mod "$MOD" | ||||
|   done | ||||
| else | ||||
|   # Define the DLC mods | ||||
|   DLC_MODS=("elevated-rails" "quality" "space-age") | ||||
|  | ||||
|   # Iterate over each DLC mod | ||||
|   for MOD in "${DLC_MODS[@]}"; do | ||||
|     disable_mod "$MOD" | ||||
|   done | ||||
| fi | ||||
| @@ -43,6 +43,8 @@ if [[ ${UPDATE_MODS_ON_START:-} == "true" ]]; then | ||||
|   ./docker-update-mods.sh | ||||
| fi | ||||
|  | ||||
| ./docker-dlc.sh | ||||
|  | ||||
| EXEC="" | ||||
| if [[ $(id -u) = 0 ]]; then | ||||
|   # Update the User and Group ID based on the PUID/PGID variables | ||||
|   | ||||
		Reference in New Issue
	
	Block a user