tModLoader v2024.10
A mod to make and play Terraria mods
|
ModSystem is an abstract class that your classes can derive from. It contains general-use hooks, and, unlike Mod, can have unlimited amounts of types deriving from it. More...
Inherits ModType< TEntity, TModType >.
Inherited by LegacyUnloadedTilesSystem, and UnloadedSystem.
Public Member Functions | |
virtual void | AddRecipeGroups () |
Override this method to add recipe groups to the game. You must add recipe groups by calling the RecipeGroup.RegisterGroup method here. A recipe group is a set of items that can be used interchangeably in the same recipe. | |
virtual void | AddRecipes () |
Override this method to add Recipes to the game. The Basic Recipes Guideteaches how to add new recipes to the game and how to manipulate existing recipes. | |
virtual bool | CanWorldBePlayed (PlayerFileData playerData, WorldFileData worldFileData) |
Allows you to prevent the world and player from being loaded/selected as a valid combination, similar to Journey Mode pairing. | |
virtual void | ClearWorld () |
Called whenever the world is cleared. Use this to reset world-related data structures before world-gen or loading in both single and multiplayer. Also called just before mods are unloaded. More... | |
virtual bool | HijackGetData (ref byte messageType, ref BinaryReader reader, int playerNumber) |
Allows you to modify net message / packet information that is received before the game can act on it. More... | |
virtual bool | HijackSendData (int whoAmI, int msgType, int remoteClient, int ignoreClient, NetworkText text, int number, float number2, float number3, float number4, int number5, int number6, int number7) |
Hijacks the send data method. Only use if you absolutely know what you are doing. If any hooks return true, the message is not sent. | |
virtual void | LoadWorldData (TagCompound tag) |
Allows you to load custom data you have saved for this system in the currently loading world. Try to write defensive loading code that won't crash if something's missing. More... | |
virtual void | ModifyGameTipVisibility (IReadOnlyList< GameTipData > gameTips) |
Allows you to set the visibility of any added vanilla or modded GameTips. In order to add your OWN tips, add them in your localization file, with the key prefix of "Mods.ModName.GameTips". More... | |
virtual void | ModifyHardmodeTasks (List< GenPass > list) |
Similar to ModifyWorldGenTasks(List<GenPass>, ref double), but occurs in-game when Hardmode starts. Can be used to modify which tasks should be done and/or add custom tasks. By default the list will only contain 5 items, the vanilla hardmode tasks called "Hardmode Good Remix", "Hardmode Good", "Hardmode Evil", "Hardmode Walls", and "Hardmode Announcement". "Hardmode Good Remix" will only be enabled on Don't dig upworlds (Main.remixWorld) while "Hardmode Good" and "Hardmode Evil" will be enabled otherwise.To disable or hide tasks, please use GenPass.Disable and defensive coding. | |
virtual void | ModifyInterfaceLayers (List< GameInterfaceLayer > layers) |
Allows you to modify the elements of the in-game interface that get drawn. GameInterfaceLayer can be found in the Terraria.UI namespace. Check the Vanilla Interface layers values wiki pagefor vanilla interface layer names More... | |
virtual void | ModifyLightingBrightness (ref float scale) |
Allows you to modify overall brightness of lights. Can be used to create effects similar to what night vision and darkness (de)buffs give you. Values too high or too low might result in glitches. For night vision effect use scale 1.03 More... | |
virtual void | ModifyScreenPosition () |
Use this hook to modify Main.screenPosition after weapon zoom and camera lerp have taken place. Also consider using Main.instance.CameraModifiers.Add(CameraModifier); as shown in ExampleMods MinionBossBody for screen shakes. | |
virtual void | ModifySunLightColor (ref Color tileColor, ref Color backgroundColor) |
Allows you to modify color of light the sun emits. More... | |
virtual void | ModifyTimeRate (ref double timeRate, ref double tileUpdateRate, ref double eventUpdateRate) |
Called after all other time calculations. Can be used to modify the speed at which time should progress per tick in seconds, along with the rate at which the tiles in the world and the events in the world should update with it. All fields are measured in in-game minutes per real-life second (min/sec). You may want to consider Main.IsFastForwardingTime and CreativePowerManager.Instance.GetPower<CreativePowers.FreezeTime>().Enabled here. More... | |
virtual void | ModifyTransformMatrix (ref SpriteViewMatrix Transform) |
Allows you to set the transformation of the screen that is drawn. (Translations, rotations, scales, etc.) | |
virtual void | ModifyWorldGenTasks (List< GenPass > tasks, ref double totalWeight) |
A more advanced option to PostWorldGen, this method allows you modify the list of Generation Passes before a new world begins to be generated. For example, disabling the "Planting Trees" pass will cause a world to generate without trees. Placing a new Generation Pass before the "Dungeon" pass will prevent the the mod's pass from cutting into the dungeon. To disable or hide generation passes, please use GenPass.Disable and defensive coding. See the "Determining a suitable index" section of the World Generation wiki guidefor more information about how to properly use this for adding new world generation passes. | |
virtual void | NetReceive (BinaryReader reader) |
Use this to receive information that was sent in NetSend. Called whenever MessageID.WorldData is successfully received. Only called on the client. More... | |
virtual void | NetSend (BinaryWriter writer) |
Allows you to send custom data between clients and server, which will be handled in NetReceive. This is useful for syncing information such as bosses that have been defeated. Called whenever MessageID.WorldData is successfully sent, for example after a boss is defeated, a new day starts, or a player joins the server. Only called on the server. More... | |
virtual void | OnLocalizationsLoaded () |
Allows mods to react to language changing. This happens whenever the language is changed, and when resource packs are reloaded. | |
virtual void | OnModLoad () |
This hook is called right after Mod.Load(), which is guaranteed to be called after all content has been autoloaded. | |
virtual void | OnModUnload () |
This hook is called right before Mod.UnLoad() | |
virtual void | OnWorldLoad () |
Called whenever a world is loaded, before LoadWorldData If you need to initialize tile or other world related data-structures, use ClearWorld instead | |
virtual void | OnWorldUnload () |
Called whenever a world is unloaded. | |
virtual void | PostAddRecipes () |
This provides a hook into the mod-loading process immediately after recipes have been added. You can use this to edit recipes added by other mods. | |
virtual void | PostDrawFullscreenMap (ref string mouseText) |
Called while the fullscreen map is active. Allows custom drawing to the map. Using ModMapLayer is more compatible and allows drawing on the minimap and fullscreen maps. More... | |
virtual void | PostDrawInterface (SpriteBatch spriteBatch) |
Called after interface is drawn but right before mouse and mouse hover text is drawn. Allows for drawing interface. More... | |
virtual void | PostDrawTiles () |
Called after drawing Tiles. Can be used for drawing a tile overlay akin to wires. Note that spritebatch should be begun and ended within this method. | |
virtual void | PostSetupContent () |
Allows you to load things in your system after the mod's content has been setup (arrays have been resized to fit the content, etc). | |
virtual void | PostSetupRecipes () |
Override this method to do treatment about recipes once they have been setup. You shouldn't edit any recipe here. | |
virtual void | PostUpdateDusts () |
Called after Dusts get updated. | |
virtual void | PostUpdateEverything () |
Called after the Network got updated, this is the last hook that happens in an update. | |
virtual void | PostUpdateGores () |
Called after Gores get updated. | |
virtual void | PostUpdateInput () |
Called after the input keys are polled. Allows for modifying things like scroll wheel if your custom drawing should capture that. | |
virtual void | PostUpdateInvasions () |
Called after Invasions get updated. This hook is not called for multiplayer clients. | |
virtual void | PostUpdateItems () |
Called after Items get updated. | |
virtual void | PostUpdateNPCs () |
Called after NPCs get updated. | |
virtual void | PostUpdatePlayers () |
Called after Players get updated. | |
virtual void | PostUpdateProjectiles () |
Called after Projectiles get updated. | |
virtual void | PostUpdateTime () |
Called after Time gets updated. | |
virtual void | PostUpdateWorld () |
Use this method to have things happen in the world. In vanilla Terraria, a good example of code suitable for this hook is how Falling Stars fall to the ground during the night. This hook is not called for multiplayer clients. | |
virtual void | PostWorldGen () |
Use this method to place tiles in the world after world generation is complete. | |
virtual void | PreDrawMapIconOverlay (IReadOnlyList< IMapLayer > layers, MapOverlayDrawContext mapOverlayDrawContext) |
Called right before map icon overlays are drawn. Use this hook to selectively hide existing IMapLayer or ModMapLayer More... | |
virtual void | PreSaveAndQuit () |
Called in SP or Client when the Save and Quit button is pressed. One use for this hook is clearing out custom UI slots to return items to the player. | |
virtual void | PreUpdateDusts () |
Called before Dusts get updated. | |
virtual void | PreUpdateEntities () |
Use this if you want to do something before anything in the World gets updated. Called after UI updates, but before anything in the World (Players, NPCs, Projectiles, Tiles) gets updated. More... | |
virtual void | PreUpdateGores () |
Called before Gores get updated. | |
virtual void | PreUpdateInvasions () |
Called before Invasions get updated. This hook is not called for multiplayer clients. | |
virtual void | PreUpdateItems () |
Called before Items get updated. | |
virtual void | PreUpdateNPCs () |
Called before NPCs get updated. | |
virtual void | PreUpdatePlayers () |
Called before Players get updated. | |
virtual void | PreUpdateProjectiles () |
Called before Projectiles get updated. | |
virtual void | PreUpdateTime () |
Called before Time gets updated. | |
virtual void | PreUpdateWorld () |
Use this method to have things happen in the world. In vanilla Terraria, a good example of code suitable for this hook is how Falling Stars fall to the ground during the night. This hook is not called for multiplayer clients. | |
virtual void | PreWorldGen () |
Allows a mod to run code before a world is generated. If you use this to initialize data used during worldgen, which you save on the world, also initialize it in OnWorldLoad. | |
virtual void | ResetNearbyTileEffects () |
Use this to reset any fields you set in any of your ModTile.NearbyEffects hooks back to their default values. | |
virtual void | SaveWorldData (TagCompound tag) |
Allows you to save custom data for this system in the current world. Useful for things like saving world specific flags. For example, if your mod adds a boss and you want certain NPC to only spawn once it has been defeated, this is where you would store the information that that boss has been defeated in this world. NOTE: The provided tag is always empty by default, and is provided as an argument only for the sake of convenience and optimization. NOTE: Try to only save data that isn't default values. More... | |
virtual void | SaveWorldHeader (TagCompound tag) |
Allows you to save custom data for this system in the current world, and have that data accessible in the world select UI and during vanilla world loading. WARNING: Saving too much data here will cause lag when opening the world select menu for users with many worlds. Can be retrieved via WorldFileData.TryGetHeaderData(ModSystem, out TagCompound) and Main.ActiveWorldFileData NOTE: The provided tag is always empty by default, and is provided as an argument only for the sake of convenience and optimization. NOTE: Try to only save data that isn't default values. More... | |
override void | SetupContent () |
Unlike other ModTypes, SetupContent is unsealed for you to do whatever you need. By default it just calls SetStaticDefaults. This is the place to finish initializing your mod's content. For content from other mods, and lookup tables, consider PostSetupContent More... | |
virtual void | TileCountsAvailable (ReadOnlySpan< int > tileCounts) |
Allows you to store information about how many of each tile is nearby the player. This is useful for counting how many tiles of a certain custom biome there are. The tileCounts parameter is a read-only span (treat this as an array) that stores the tile count indexed by tile type. | |
virtual void | UpdateUI (GameTime gameTime) |
Ran every update and suitable for calling Update for UserInterface classes | |
virtual string | WorldCanBePlayedRejectionMessage (PlayerFileData playerData, WorldFileData worldData) |
Public Member Functions inherited from ModType< TEntity, TModType > | |
virtual TModType | Clone (TEntity newEntity) |
Create a copy of this instanced global. Called when an entity is cloned. More... | |
virtual bool | IsLoadingEnabled (Mod mod) |
Allows you to stop Mod.AddContent from actually adding this content. Useful for items that can be disabled by a config. More... | |
virtual void | Load () |
Allows you to perform one-time loading tasks. Beware that mod content has not finished loading here, things like ModContent lookup tables or ID Sets are not fully populated. More... | |
virtual TModType | NewInstance (TEntity entity) |
Create a new instance of this ModType for a specific entity More... | |
string | PrettyPrintName () |
virtual void | SetStaticDefaults () |
Allows you to modify the properties after initial loading has completed. More... | |
virtual void | SetupContent () |
If you make a new ModType, seal this override, and call SetStaticDefaults in it. More... | |
virtual void | Unload () |
Allows you to safely unload things you added in Load. More... | |
virtual bool | IsLoadingEnabled (Mod mod) |
Whether or not this type should be loaded when it's told to. Returning false disables Mod.AddContent from actually loading this type. More... | |
abstract void | Load (Mod mod) |
Called when loading the type. More... | |
abstract void | Unload () |
Called during unloading when needed. More... | |
Public Member Functions inherited from ModType< TEntity > | |
virtual TModType | Clone (TEntity newEntity) |
Create a copy of this instanced global. Called when an entity is cloned. More... | |
virtual bool | IsLoadingEnabled (Mod mod) |
Allows you to stop Mod.AddContent from actually adding this content. Useful for items that can be disabled by a config. More... | |
virtual void | Load () |
Allows you to perform one-time loading tasks. Beware that mod content has not finished loading here, things like ModContent lookup tables or ID Sets are not fully populated. More... | |
virtual TModType | NewInstance (TEntity entity) |
Create a new instance of this ModType for a specific entity More... | |
string | PrettyPrintName () |
virtual void | SetStaticDefaults () |
Allows you to modify the properties after initial loading has completed. More... | |
virtual void | SetupContent () |
If you make a new ModType, seal this override, and call SetStaticDefaults in it. More... | |
virtual void | Unload () |
Allows you to safely unload things you added in Load. More... | |
Protected Member Functions | |
override void | Register () |
If you make a new ModType, seal this override. More... | |
override void | ValidateType () |
Check for the correct overrides of different hook methods and fields and properties More... | |
Protected Member Functions inherited from ModType< TEntity, TModType > | |
abstract TEntity | CreateTemplateEntity () |
virtual void | InitTemplateInstance () |
Create dummy objects for instanced mod-types More... | |
override void | InitTemplateInstance () |
Create dummy objects for instanced mod-types More... | |
abstract void | Register () |
If you make a new ModType, seal this override. More... | |
virtual void | ValidateType () |
Check for the correct overrides of different hook methods and fields and properties More... | |
Protected Member Functions inherited from ModType< TEntity > | |
abstract TEntity | CreateTemplateEntity () |
virtual void | InitTemplateInstance () |
Create dummy objects for instanced mod-types More... | |
override void | InitTemplateInstance () |
Create dummy objects for instanced mod-types | |
abstract void | Register () |
If you make a new ModType, seal this override. More... | |
virtual void | ValidateType () |
Check for the correct overrides of different hook methods and fields and properties More... | |
Additional Inherited Members | |
Properties inherited from ModType< TEntity, TModType > | |
virtual bool | CloneNewInstances [get] |
Whether to create new instances of this mod type via Clone(TEntity) or via the default constructor Defaults to false (default constructor). | |
TEntity | Entity [get, set] |
string | FullName [get] |
The internal name of this, including the mod it is from. More... | |
virtual bool | IsCloneable [get] |
Whether or not this type is cloneable. Cloning is supported if all reference typed fields in each sub-class which doesn't override Clone are marked with [CloneByReference] | |
Mod | Mod [get, set] |
The mod this belongs to. More... | |
virtual string | Name [get] |
The internal name of 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... | |
Properties inherited from ModType< TEntity > | |
virtual bool | CloneNewInstances [get] |
Whether to create new instances of this mod type via Clone(TEntity) or via the default constructor Defaults to false (default constructor). | |
TEntity | Entity [get, set] |
string | FullName [get] |
The internal name of this, including the mod it is from. More... | |
virtual bool | IsCloneable [get] |
Whether or not this type is cloneable. Cloning is supported if all reference typed fields in each sub-class which doesn't override Clone are marked with [CloneByReference] | |
Mod | Mod [get, set] |
The mod this belongs to. More... | |
virtual string | Name [get] |
The internal name of this. More... | |
ModSystem is an abstract class that your classes can derive from. It contains general-use hooks, and, unlike Mod, can have unlimited amounts of types deriving from it.
|
virtual |
Called whenever the world is cleared. Use this to reset world-related data structures before world-gen or loading in both single and multiplayer.
Also called just before mods are unloaded.
Reimplemented in UnloadedSystem.
|
virtual |
Allows you to modify net message / packet information that is received before the game can act on it.
messageType | Type of the message. |
reader | The reader. |
playerNumber | The player number the message is from. |
|
virtual |
Allows you to load custom data you have saved for this system in the currently loading world.
Try to write defensive loading code that won't crash if something's missing.
tag | The TagCompound to load data from. |
Reimplemented in UnloadedSystem.
|
virtual |
Allows you to set the visibility of any added vanilla or modded GameTips. In order to add your OWN tips, add them in your localization file, with the key prefix of "Mods.ModName.GameTips".
gameTips | The current list of all added game tips. |
|
virtual |
Allows you to modify the elements of the in-game interface that get drawn. GameInterfaceLayer can be found in the Terraria.UI namespace. Check the Vanilla Interface layers values wiki pagefor vanilla interface layer names
layers | The layers. |
|
virtual |
Allows you to modify overall brightness of lights. Can be used to create effects similar to what night vision and darkness (de)buffs give you. Values too high or too low might result in glitches. For night vision effect use scale 1.03
scale | Brightness scale |
|
virtual |
Allows you to modify color of light the sun emits.
tileColor | Tile lighting color |
backgroundColor | Background lighting color |
|
virtual |
Called after all other time calculations. Can be used to modify the speed at which time should progress per tick in seconds, along with the rate at which the tiles in the world and the events in the world should update with it. All fields are measured in in-game minutes per real-life second (min/sec). You may want to consider Main.IsFastForwardingTime and CreativePowerManager.Instance.GetPower<CreativePowers.FreezeTime>().Enabled here.
timeRate | The speed at which time flows in min/sec. |
tileUpdateRate | The speed at which tiles in the world update in min/sec. |
eventUpdateRate | The speed at which various events in the world (weather changes, fallen star/fairy spawns, etc.) update in min/sec. |
|
virtual |
Use this to receive information that was sent in NetSend.
Called whenever MessageID.WorldData is successfully received.
Only called on the client.
reader | The reader. |
|
virtual |
Allows you to send custom data between clients and server, which will be handled in NetReceive. This is useful for syncing information such as bosses that have been defeated.
Called whenever MessageID.WorldData is successfully sent, for example after a boss is defeated, a new day starts, or a player joins the server.
Only called on the server.
writer | The writer. |
|
virtual |
Called while the fullscreen map is active. Allows custom drawing to the map. Using ModMapLayer is more compatible and allows drawing on the minimap and fullscreen maps.
mouseText | The mouse text. |
|
virtual |
Called after interface is drawn but right before mouse and mouse hover text is drawn. Allows for drawing interface.
Note: This hook should no longer be used. It is better to use the ModifyInterfaceLayers hook.
spriteBatch | The sprite batch. |
|
virtual |
Called right before map icon overlays are drawn. Use this hook to selectively hide existing IMapLayer or ModMapLayer
layers | |
mapOverlayDrawContext |
|
virtual |
Use this if you want to do something before anything in the World gets updated. Called after UI updates, but before anything in the World (Players, NPCs, Projectiles, Tiles) gets updated.
When Main.autoPause is true or Main.FrameSkipMode is 0 or 2, the game may do a partial update. This means that it only updates menus and some animations, but not the World or Entities. This hook - and every hook after it - only gets called on frames with a full update.
|
protectedvirtual |
If you make a new ModType, seal this override.
Implements ModType< TEntity >.
|
virtual |
Allows you to save custom data for this system in the current world. Useful for things like saving world specific flags.
For example, if your mod adds a boss and you want certain NPC to only spawn once it has been defeated, this is where you would store the information that that boss has been defeated in this world.
NOTE: The provided tag is always empty by default, and is provided as an argument only for the sake of convenience and optimization.
NOTE: Try to only save data that isn't default values.
tag | The TagCompound to save data into. Note that this is always empty by default, and is provided as an argument only for the sake of convenience and optimization. |
Reimplemented in UnloadedSystem.
|
virtual |
Allows you to save custom data for this system in the current world, and have that data accessible in the world select UI and during vanilla world loading.
WARNING: Saving too much data here will cause lag when opening the world select menu for users with many worlds.
Can be retrieved via WorldFileData.TryGetHeaderData(ModSystem, out TagCompound) and Main.ActiveWorldFileData
NOTE: The provided tag is always empty by default, and is provided as an argument only for the sake of convenience and optimization.
NOTE: Try to only save data that isn't default values.
tag | The TagCompound to save data into. Note that this is always empty by default, and is provided as an argument only for the sake of convenience and optimization. |
|
virtual |
Unlike other ModTypes, SetupContent is unsealed for you to do whatever you need. By default it just calls SetStaticDefaults. This is the place to finish initializing your mod's content. For content from other mods, and lookup tables, consider PostSetupContent
Reimplemented from ModType< TEntity >.
|
protectedvirtual |
Check for the correct overrides of different hook methods and fields and properties
Reimplemented from ModType< TEntity >.