Config Swapper

Config Swapper

2M Downloads

Config Swapper is a tool designed for switching out a predefined amount of config options. Useful for changing game modes.

It does this by finding and changing the Strings in the actual config file. 

This means it should be compatible with most mods, even if they implement some form of custom config (only configs in TOML format are supported at this time).  

Config Swapper adds a command to change config "/mode <modename>" and also a file called mode.json with the current mode in the root directory of the instance. 

The mode in the mode.json gets applied to the game on launch in order to support pack updates.

Whether a specific config options requires a restart depends on the individual mods. Contact the specific mod developer if you need it. 

The /mode command also runs a /reload to make sure the player doesn't forget to. 

Please keep in mind that Configswapper cannot revert a mode in any way. As such all config changes need to the specified in every mode. 

Creating a Config Mode

On initial load, the mod will create a folder in the config folder called "configswapper".

In here, create a folder with your mode name. e.g. "expert". 

In this folder use the same folder structure as from the instances root. 

e.g. to change values in config/forge-client.toml add a folder called config and a file called forge-client.toml.

Add the category and key + value combination of the config you want to change to the file in the same format as it is in the original.

The simplest way is to copy the original and remove all values to you do not want to change.

For serverconfigs put them into a folder called serverconfig.

Format before 2.0

to add a config change you need to know:

- the mod ID of the mod it is from

- the type of the config (client/common/server)

- the categories the config option is under

- the name of the config option. 

With this information add a line into a text file in the folder of your mode with the following format

<modID>.<configtype>.<category1>.<category2>.<configname> = <result>

Example:

forge.client.client.disableStairSlabCulling = false

For convenience, I've added a way to reduce the amount of text needed if the options are in the same config/category

Example: 

$forge.client.client {

                         disableStairSlabCulling = false

                         zoomInMissingModelTextInGui = false

                          #this is a comment

}

You can make comments using #. As configs might use # as value, you cannot mix comment and actual value on a line.

Since 1.6 you can apply configswapper to any file (in TOML format) instead of just files registered to forge.

Example: 

customfilepath=config/forge-client.toml

client.disableStairSlabCulling = true

The customfilepath needs to be the first line in the file. ModID and configtype are gone, as they are only used to identify the file.

The file path can start at the instance root or at the world's root folder.

Questions? Ask me on Discord
https://discord.gg/fdvYUCvezx