This is a tool which allows batch upload and download of mods for both Space Engineers and Medieval Engineers.
It is also known as SEWT (for Space Engineers Workshop Tool), or MEWT (Medieval Engineers Workshop Tool).
This tools allows you to script mod uploads to the workshop. It takes various command-line options, which can be displayed by running SEWorkshopTool.exe without arguments.
Please note, this is a command-line application only. A GUI may be considered in the future, however at this time it is not planned.
If you are not interested in building this from source, skip ahead to Installation.
These steps refer to Space Engineers. If you are working with Medieval Engineers, just subsititute as appropriate.
SEWorkshopTool.exe
(.\SEWorkshopTool.exe
in PowerShell) to get started.Want to skip ahead to the important bits?
Starting with 0.7.14, the command-line argument format has changed. The examples below have been updated to reflect this change.
The previous command-line options will still be accepted at least until 0.8, and a warning will show if you attempt to use one, with the corrected format displayed.
In addition, some defaults changed:
Commands are broken down into several distinct categories:
Each category corresponds to a command 'verb'. The various verbs are shown in more detail below.
Any command-line can be appended with --help to get a listing of the the arguments accepted by the program, or the specified verb.
For example:
SEWorkshopTool --help
SEWorkshopTool push --help
To download a set of mods, use the get verb. Then supply a list of workshop IDs with the --ids argument.
SEWorkshopTool get --ids 754173702 681276386
To download a collection or collections, use the exact same command as above. Then supply a list of collection IDs with the --ids argument.
SEWorkshopTool get --ids 814381863
Workshop items will be automatically extracted to their respective locations in %AppData%.
If this is not desired, you can prevent this by passing --no-extract:
SEWorkshopTool get --no-extract --mods 754173702 681276386
They will be extracted to their appropriate directory in the format: [_SEWT_] <Workshop Title> (<WorkshopId>)
To upload a mod, execute the following:
SEWorkshopTool push --mods %appdata%\SpaceEngineers\Mods\FTL
To upload multiple mods at the same time, just append more directories to the command:
SEWorkshopTool push --mods %appdata%\SpaceEngineers\Mods\FTL %appdata%\SpaceEngineers\Mods\Stargate
Relative paths are allowed and, if used, the default data path for that mod type will be prepended:
SEWorkshopTool push --mods FTL Stargate --script Off-Roading
By default, --compile is enabled, if you want to publish a script even if it has compilaiton errors, you can use the --no-compile argument to disable the compilation check:
SEWorkshopTool push --no-compile --mods FTL %appdata%\SpaceEngineers\Mods\Stargate
For compile testing, refer to the new compile verb.
If you prefer to test publishing, but not actually publish, you can use the --dry-run argument:
SEWorkshopTool push --dry-run --mods FTL %appdata%\SpaceEngineers\Mods\Stargate
If the mod directory or name contains spaces, surround the path with double-quotes:
SEWorkshopTool push --mods "%appdata%\SpaceEngineers\Mods\Mod Folder" "My Fabulous Mod"
You can pass custom file extensions to ignore during the upload with the --exclude-ext argument (with or without a leading dot):
SEWorkshopTool push --mods FTL --exclude-ext .fbx .pdb xml
You can pass custom paths to ignore during the upload with the --exclude-path argument:
SEWorkshopTool push --mods FTL --exclude-path bin obj
Note: The --exclude-ext and --exclude-path are recommended for one-time use. For a regular list of extensions or paths to be ignored for all publish operations, use a .wtignore file.
See the change verb below for more options that apply to this verb.
The workshop changelog can also be set with the content changes, using the --message argument.
Assuming you have your changelog stored inside changelog.txt, setting the changelog for this specific operation is similiar:
SEWorkshopTool change --mods FTL --message changelog.txt
If your changelog is short, you can specify the entire message as the argument, instead of a filename:
SEWorkshopTool change --mods FTL --message "Made a fix for the latest SE version."
If you specify the changelog as a filename, it's recommended to add your changelog filename to .wtignore to avoid uploading it as a file in your mod content.
Notes:
The changelog option first checks if the supplied argument is an existing file. If it is, it reads the contents. If not, it simply uses the argument as-is as the changelog note.
Be sure to check the output for the message that will be sent to Steam (the log will show a shortened version, but the entire content will be sent to steam).
It's important to surround the message with double-quotes.
The changelog requires a content update and as such, it's not a valid option for metadata changes.
The change verb allows you change various metadata about a mod, without actually pushing a content change.
All arguments below also apply to the push verb. They are just listed once, and separately, for brevity.
You can update the the preview image (thumb.jpg) separately, without reuploading the entire mod. This also works for updating tags, DLC and dependencies as well.
To update the thumbnail (any image steam supports, can be in any location):
SEWorkshopTool change --mods FTL --thumb "path\to\filename"
By default, any thumb.* file (thumb.jpg, .png, etc.) in the mod folder will be automatically detected and used during normal push operations.
To upload a with hidden visibility:
SEWorkshopTool change --mods "Mod Folder" --visibility Private
You can specify the mod categories/tags with the --tags argument:
SEWorkshopTool change --mods FTL --tags block script
Note with Tags:
If you do not specify any tags, then the existing tags on the workshop will be preserved (for updating mods). However if you specify any tags using --tags, then all tags will be replaced with what was entered.
For example: If a workshop mod contains the Block and Script categories, and you pass only --tags block, then Script will be removed.
This does not apply to --add-tags or --remove-tags.
Starting with 0.7.14, tags can be added or removed selectively, with the --add-tags or --remove-tags options, respectively:
SEWorkshopTool change --mods FTL --add-tags script --remove-tags block
The above command will add the script tag, if it wasn't already present on the workshop item; it will also remove the 'block' tag if it was present. All other tags will remain untouched.
You can add DLC as a requirement for workshop items.
This is highly recommended if you intend to upload mods using DLC assets.
To see the list of the available DLC:
SEWorkshopTool.exe --listdlc
To set a mod as requiring the Style Pack DLC:
SEWorkshopTool change --mods FTL --dlc StylePack
or
SEWorkshopTool change --mods FTL --dlc 1084680
Notice that either the string name, or the AppID of the DLC can be specified.
To easily remove all DLC from an item, pass either 0 or none as the argument:
SEWorkshopTool change --mods FTL --dlc none
As with tags, starting with 0.7.14, you can add or remove individual DLC items with --add-dlc and --remove-dlc, respectively, without affecting existing DLC listed on the item.
You can add other workshop items as a requirement for your items. This operates similar to the DLC requirement feature.
To set a mod as requiring another mod:
SEWorkshopTool change --mods FTL --dependencies 1992410560
To easily remove all dependencies from an item, pass either 0 or none as the argument:
SEWorkshopTool change --mods FTL --dependencies none
As with tags, starting with 0.7.14, you can add or remove individual item dependencies with --add-dependencies or --remove-dependencies, respectively, without affecting existing dependencies listed on the item.
For convenience, local mods can be specified, as long as they have already been published. The Workshop ID will be determined from the local mod or mods, if possible.
Notes:
Dependencies must be workshop items under the Mod category. Blueprints, IngameScripts, and other items cannot be specified as dependencies, and will cause errors in the game if used. This tool will enforce that restriction, and cannot be overridden.
The entire workshop description can be set from the contents of a file using --description.
If you have a file in your mod directory named description.txt, you can set your workshop page to the contents of that file using the following:
SEWorkshopTool change --mods FTL --description description.txt
It is recommended to add your description file to .wtignore, so it isn't uploaded with the mod file contents (unless you want to do that).
Unlike the changelog option, this requires a filename. Passing the content directly on the command-line is not allowed.
Notes:
Steam limits the workshop description to 8k bytes. For unicode, that means 4k characters.
This command is useful for only compile testing mods, without uploading.
This accepts a subset of the arguments of push, but only applies to Progammable Block (ingame) scripts, and mods.
Example: SEWorkshopTool compile --mods FTL %appdata%\SpaceEngineers\Mods\Stargate
To see a listing of all the files associated on your Steam cloud account:
SEWorkshopTool cloud --list
The result will display a tabular list of all the steam cloud files, their size, and status.
Example output:
Quota: total = 390,625 kiB, available = 389,692 kiB
Listing 13 cloud files
Filename |Size (kiB)|In Cloud|Forgotten
------------------------------------------|----------|--------|---------
Blueprints/cloud/Large Grid 836/bp.sbc | 2 | True | N/A
Blueprints/cloud/Large Grid 836/thumb.png | 457 | True | N/A
previewfile_1668739492.gif | 1,018 | False | N/A
previewfile_754173702.jpg | 21 | False | N/A
previewfile_637504549.png | 219 | True | N/A
previewfile_1992410560.png | 219 | False | N/A
previewfile_714651334.png | 364 | False | N/A
previewfile_1701891397.jpg | 312 | False | N/A
previewfile_1473969256.png | 536 | False | N/A
previewfile_2200904480.jpg | 182 | False | N/A
previewfile_2217821984.jpg | 267 | False | N/A
previewfile_633376731.png | 364 | False | N/A
previewfile_2362147824.jpg | 254 | True | N/A
This naming scheme comes from the Steamworks API for FileForget and FileDelete.
To see a listing of all the files associated on your Steam cloud account:
SEWorkshopTool cloud --list
To delete a file from the cloud, but keep it locally (forget):
SEWorkshopTool cloud --delete "Blueprints/cloud/Large Grid 836/bp.sbc"
To permanently delete a file both locally and on the cloud (delete):
SEWorkshopTool cloud --delete --force "Blueprints/cloud/Large Grid 836/bp.sbc"
Either of the above operations (forget or delete) will print the file list again, and populate the rightmost column in the list with True
if the forget or delete operation was successful.
Support for .gitignore style ignore list (but simpler). This file is .wtignore, and can be placed either in your mod directory, or in the parent Mods\ directory, ie. %appdata%\SpaceEngineers\Mods. An example file is included with the release zip, just copy it to one of the directories above and edit to taste. Further documentation is in the file itself.
Mod.io support, for uploading or downloading mods used by the XBox version.
THIS IS EXPERIMENTAL AND BUGGY
It can only upload and download mods. It cannot update tags. Thumbnail editing is untested.
Authentication is required, this is done via email. SEWT does not ask for your account password!
If you do not want to use SEWT for authentication, you might be able to manually create an OAuth2 token from the mod.io website, however this is untested.
If so, add the following to SEWorkshopTool.exe.config, just below:
<appSettings>
<add key="auth-login" value="your mod.io email address" />
<add key="auth-token" value="your mod.io token here" />
<add key="auth-expires" value="unix timestamp expiration" />
</appSettings>
To switch to mod.io, use the --modio option, in combination with all the other commands.
For example, to upload a large ship blueprint named "My First Ship":
SEWorkshopTool.exe push --modio --blueprints "My First Ship" --tags ship,large_grid