tModLoader v2024.10
A mod to make and play Terraria mods
ModConfig Class Reference

ModConfig provides a way for mods to be configurable. ModConfigs can either be Client specific or Server specific. When joining a MP server, Client configs are kept but Server configs are synced from the server. Using serialization attributes such as [DefaultValue(5)] or [JsonIgnore] are critical for proper usage of ModConfig. tModLoader also provides its own attributes such as ReloadRequiredAttribute and LabelAttribute. More...

Inherits ILocalizedModType.

Public Member Functions

virtual bool AcceptClientChanges (ModConfig pendingConfig, int whoAmI, ref NetworkText message)
 Called on the Server for ServerSide configs to determine if the changes asked for by the Client will be accepted. Useful for enforcing permissions. Called after a check for NeedsReload. More...
 
virtual bool AcceptClientChanges (ModConfig pendingConfig, int whoAmI, ref string message)
 
virtual bool Autoload (ref string name)
 
virtual ModConfig Clone ()
 tModLoader will call Clone on ModConfig to facilitate proper implementation of the ModConfig user interface and detecting when a reload is required. Modders need to override this method if their config contains reference types. Failure to do so will lead to bugs. See ModConfigShowcaseDataTypes.Clone for examples and explanations. More...
 
virtual bool NeedsReload (ModConfig pendingConfig)
 Whether or not a reload is required. The default implementation compares properties and fields annotated with the ReloadRequiredAttribute. Unlike the other ModConfig hooks, this method is called on a clone of the ModConfig that was saved during mod loading. The pendingConfig has values that are about to take effect. Neither of these instances necessarily match the instance used in OnLoaded. More...
 
virtual void OnChanged ()
 This hook is called anytime new config values have been set and are ready to take effect. This will always be called right after OnLoaded and anytime new configuration values are ready to be used. The hook won't be called with values that violate NeedsReload. Use this hook to integrate with other code in your Mod to apply the effects of the configuration values. If your NeedsReload is correctly implemented, you should be able to apply the settings without error in this hook. Be aware that this hook can be called in-game and in the main menu, as well as in single player and multiplayer situations.
 
virtual void OnLoaded ()
 This method is called when the ModConfig has been loaded for the first time. This happens before regular Autoloading and Mod.Load. You can use this hook to assign a static reference to this instance for easy access. tModLoader will automatically assign (and later unload) this instance to a static field named Instance in the class prior to calling this method, if it exists.
 
void Open (Action onClose=null, string scrollToOption=null, bool centerScrolledOption=true, bool playSound=true)
 Opens this config in the config UI. Can be used to allow your own UI to access the config. onClose can be used to run code after the config is closed, such as opening a modded UI or showing a message to the user. scrollToOption can be used to scroll to a specific member of the config and highlight it. It can also be used to scroll to the header above a member using the format "Header:{MemberNameHere}". If the member has [SeparatePage] then the subpage will open automatically as well. Set centerScrolledOption to false if you'd like the config option to be at the top of the list when focused instead of at the center. More...
 

Properties

virtual LocalizedText DisplayName [get]
 
string FullName [get]
 => $"{Mod.Name}/{Name}" More...
 
virtual string LocalizationCategory [get]
 The category used by this modded content for use in localization keys. Localization keys follow the pattern of "Mods.{ModName}.{Category}.{ContentName}.{DataName}". The Localization wiki pageexplains how custom ModType classes can utilize this. More...
 
Mod Mod [get, set]
 The mod this belongs to. More...
 
abstract ConfigScope Mode [get]
 
string Name [get, set]
 The internal name of this instance. More...
 
- Properties inherited from ILocalizedModType
abstract string LocalizationCategory [get]
 The category used by this modded content for use in localization keys. Localization keys follow the pattern of "Mods.{ModName}.{Category}.{ContentName}.{DataName}". The Localization wiki pageexplains how custom ModType classes can utilize this. More...
 
- Properties inherited from IModType
string FullName [get]
 => $"{Mod.Name}/{Name}" More...
 
Mod Mod [get]
 The mod this belongs to. More...
 
string Name [get]
 The internal name of this instance. More...
 

Detailed Description

ModConfig provides a way for mods to be configurable. ModConfigs can either be Client specific or Server specific. When joining a MP server, Client configs are kept but Server configs are synced from the server. Using serialization attributes such as [DefaultValue(5)] or [JsonIgnore] are critical for proper usage of ModConfig. tModLoader also provides its own attributes such as ReloadRequiredAttribute and LabelAttribute.

Member Function Documentation

◆ AcceptClientChanges()

virtual bool ModConfig.AcceptClientChanges ( ModConfig  pendingConfig,
int  whoAmI,
ref NetworkText  message 
)
virtual

Called on the Server for ServerSide configs to determine if the changes asked for by the Client will be accepted. Useful for enforcing permissions. Called after a check for NeedsReload.

Parameters
pendingConfigAn instance of the ModConfig with the attempted changes
whoAmIThe client whoAmI
messageA message that will be returned to the client, set this to the reason the server rejects the changes.
Returns
Return false to reject client changes

◆ Clone()

virtual ModConfig ModConfig.Clone ( )
virtual

tModLoader will call Clone on ModConfig to facilitate proper implementation of the ModConfig user interface and detecting when a reload is required. Modders need to override this method if their config contains reference types. Failure to do so will lead to bugs. See ModConfigShowcaseDataTypes.Clone for examples and explanations.

Returns

◆ NeedsReload()

virtual bool ModConfig.NeedsReload ( ModConfig  pendingConfig)
virtual

Whether or not a reload is required. The default implementation compares properties and fields annotated with the ReloadRequiredAttribute. Unlike the other ModConfig hooks, this method is called on a clone of the ModConfig that was saved during mod loading. The pendingConfig has values that are about to take effect. Neither of these instances necessarily match the instance used in OnLoaded.

Parameters
pendingConfigThe other instance of ModConfig to compare against, it contains the values that are pending to take effect
Returns

◆ Open()

void ModConfig.Open ( Action  onClose = null,
string  scrollToOption = null,
bool  centerScrolledOption = true,
bool  playSound = true 
)

Opens this config in the config UI. Can be used to allow your own UI to access the config. onClose can be used to run code after the config is closed, such as opening a modded UI or showing a message to the user. scrollToOption can be used to scroll to a specific member of the config and highlight it. It can also be used to scroll to the header above a member using the format "Header:{MemberNameHere}". If the member has [SeparatePage] then the subpage will open automatically as well. Set centerScrolledOption to false if you'd like the config option to be at the top of the list when focused instead of at the center.

Parameters
onCloseA delegate that is called when the back button is pressed to allow for custom back button behavior.
scrollToOptionThe name of a field of the ModConfig to scroll to.
centerScrolledOption
playSoundWhether SoundID.MenuOpen will be played when the UI is opened.

Property Documentation

◆ FullName

string ModConfig.FullName
get

=> $"{Mod.Name}/{Name}"

Implements IModType.

◆ LocalizationCategory

virtual string ModConfig.LocalizationCategory
get

The category used by this modded content for use in localization keys. Localization keys follow the pattern of "Mods.{ModName}.{Category}.{ContentName}.{DataName}". The Localization wiki pageexplains how custom ModType classes can utilize this.

Implements ILocalizedModType.

◆ Mod

Mod ModConfig.Mod
getset

The mod this belongs to.

Implements IModType.

◆ Name

string ModConfig.Name
getset

The internal name of this instance.

Implements IModType.