tModLoader v2024.03
A mod to make and play Terraria mods
ModTileEntity Class Referenceabstract

Tile Entities are Entities tightly coupled with tiles, allowing the possibility of tiles to exhibit cool behavior. TileEntity.Update is called in SP and on Server, not on Clients. More...

Inherits TileEntity, IModType, and ILoadable.

Inherited by TEModdedPylon, and UnloadedTileEntity.

Public Member Functions

int Find (int i, int j)
 Returns the entity ID of this kind of tile entity at the given coordinates for you.
 
sealed override TileEntity GenerateInstance ()
 
virtual int Hook_AfterPlacement (int i, int j, int type, int style, int direction, int alternate)
 This method does not get called by tModLoader, and is only included for you convenience so you do not have to cast the result of Mod.GetTileEntity. 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 override bool IsTileValidForEntity (int x, int y)
 Whether or not this tile entity is allowed to survive at the given coordinates. You should check whether the tile is active, as well as the tile's type and frame. More...
 
void Kill (int i, int j)
 A helper method that removes this kind of tile entity from the given coordinates for you.
 
virtual void Load ()
 
virtual void Load (Mod mod)
 Called when loading the type. More...
 
override void NetPlaceEntityAttempt (int i, int j)
 You should never use this. It is only included here for completion's sake. More...
 
override void NetReceive (BinaryReader reader)
 Receives custom data sent in the NetSend hook.
Called while receiving tile data (!lightReceive) and when MessageID.TileEntitySharing is received (lightReceive).
Only called on the client. More...
 
override void NetSend (BinaryWriter writer)
 Allows you to send custom data for this tile entity between client and server, which will be handled in NetReceive.
Called while sending tile data (!lightSend) and when MessageID.TileEntitySharing is sent (lightSend).
Only called on the server. More...
 
virtual void OnKill ()
 This method only gets called in the Kill method. If you plan to use that, you can put code here to make things happen when it is called.
 
virtual void OnNetPlace ()
 Code that should be run when this tile entity is placed by means of server-syncing. Called on Server only.
 
int Place (int i, int j)
 A helper method that places this kind of tile entity in the given coordinates for you.
 
virtual void PostGlobalUpdate ()
 Code that should be run after all tile entities in the world update.
 
virtual void PreGlobalUpdate ()
 Code that should be run before all tile entities in the world update.
 
sealed override void ReadExtraData (BinaryReader reader, bool networkSend)
 Should never be called on ModTileEntity. Replaced by NetReceive and Load Would make the base method internal if not for patch size More...
 
sealed override void RegisterTileEntityID (int assignedID)
 
virtual void Unload ()
 Called during unloading when needed. More...
 
sealed override void WriteExtraData (BinaryWriter writer, bool networkSend)
 Should never be called on ModTileEntity. Replaced by NetSend and Save. Would make the base method internal if not for patch size More...
 
- Public Member Functions inherited from TileEntity
virtual TileEntity GenerateInstance ()
 
virtual string GetItemGamepadInstructions (int slot=0)
 
virtual bool IsTileValidForEntity (int x, int y)
 
virtual void LoadData (TagCompound tag)
 Allows you to load custom data that you have saved for this tile entity.
Try to write defensive loading code that won't crash if something's missing. More...
 
virtual void NetPlaceEntityAttempt (int x, int y)
 
virtual void NetReceive (BinaryReader reader)
 Receives custom data sent in the NetSend hook.
Called while receiving tile data (!lightReceive) and when MessageID.TileEntitySharing is received (lightReceive).
Only called on the client. More...
 
virtual void NetSend (BinaryWriter writer)
 Allows you to send custom data for this tile entity between client and server, which will be handled in NetReceive.
Called while sending tile data (!lightSend) and when MessageID.TileEntitySharing is sent (lightSend).
Only called on the server. More...
 
virtual void OnInventoryDraw (Player player, SpriteBatch spriteBatch)
 
virtual void OnPlayerUpdate (Player player)
 
virtual bool OverrideItemSlotHover (Item[] inv, int context=0, int slot=0)
 
virtual bool OverrideItemSlotLeftClick (Item[] inv, int context=0, int slot=0)
 
virtual void ReadExtraData (BinaryReader reader, bool networkSend)
 
virtual void RegisterTileEntityID (int assignedID)
 
virtual void SaveData (TagCompound tag)
 Allows you to save custom data for this tile entity.

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 bool TryGetItemGamepadOverrideInstructions (Item[] inv, int context, int slot, out string instruction)
 
virtual void Update ()
 
virtual void WriteExtraData (BinaryWriter writer, bool networkSend)
 
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...
 

Static Public Member Functions

static ModTileEntity ConstructFromBase (ModTileEntity tileEntity)
 Returns a new ModTileEntity with the same class, mod, name, and type as the parameter. It is very rare that you should have to use this.
 
static ModTileEntity ConstructFromType (int type)
 Returns a new ModTileEntity with the same class, mod, name, and type as the ModTileEntity with the given type. It is very rare that you should have to use this.
 
static int CountInWorld ()
 Returns the number of modded tile entities that exist in the world currently being played.
 
- Static Public Member Functions inherited from TileEntity
static int AssignNewID ()
 
static void BasicOpenCloseInteraction (Player player, int x, int y, int id)
 
static void Clear ()
 
static void InitializeAll ()
 
static bool IsOccupied (int id, out int interactingPlayer)
 
static void PlaceEntityNet (int x, int y, int type)
 
static TileEntity Read (BinaryReader reader, bool networkSend=false, bool lightSend=false)
 
static void SetInteractionAnchor (Player player, int x, int y, int id)
 
static void UpdateEnd ()
 
static void UpdateStart ()
 
static void Write (BinaryWriter writer, TileEntity ent, bool networkSend=false, bool lightSend=false)
 

Static Public Attributes

static readonly int NumVanilla
 
- Static Public Attributes inherited from TileEntity
static Dictionary< int, TileEntityByID = new Dictionary<int, TileEntity>()
 
static Dictionary< Point16, TileEntityByPosition = new Dictionary<Point16, TileEntity>()
 
static object EntityCreationLock = new object()
 
static TileEntitiesManager manager
 
const int MaxEntitiesPerChunk = 1000
 
static int TileEntitiesNextID
 

Properties

string FullName [get]
 => $"{Mod.Name}/{Name}" More...
 
Mod Mod [get, set]
 The mod that added this ModTileEntity. More...
 
virtual string Name [get]
 The internal name of this ModTileEntity. More...
 
int Type [get, set]
 The numeric type used to identify this kind of tile entity.
 
- 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...
 

Additional Inherited Members

- Public Attributes inherited from TileEntity
int ID
 
Point16 Position
 
byte type
 
- Events inherited from TileEntity
static Action _UpdateEnd
 
static Action _UpdateStart
 

Detailed Description

Tile Entities are Entities tightly coupled with tiles, allowing the possibility of tiles to exhibit cool behavior. TileEntity.Update is called in SP and on Server, not on Clients.

See also
TileEntity

Member Function Documentation

◆ GenerateInstance()

sealed override TileEntity ModTileEntity.GenerateInstance ( )
virtual

Reimplemented from TileEntity.

◆ Hook_AfterPlacement()

virtual int ModTileEntity.Hook_AfterPlacement ( int  i,
int  j,
int  type,
int  style,
int  direction,
int  alternate 
)
virtual

This method does not get called by tModLoader, and is only included for you convenience so you do not have to cast the result of Mod.GetTileEntity.

Reimplemented in TEModdedPylon.

◆ IsLoadingEnabled()

virtual bool ModTileEntity.IsLoadingEnabled ( Mod  mod)
virtual

Whether or not this type should be loaded when it's told to. Returning false disables Mod.AddContent from actually loading this type.

Parameters
modThe mod instance trying to add this content

Implements ILoadable.

◆ IsTileValidForEntity()

abstract override bool ModTileEntity.IsTileValidForEntity ( int  x,
int  y 
)
pure virtual

Whether or not this tile entity is allowed to survive at the given coordinates. You should check whether the tile is active, as well as the tile's type and frame.

Reimplemented from TileEntity.

Implemented in UnloadedTileEntity, and TEModdedPylon.

◆ Load()

virtual void ModTileEntity.Load ( Mod  mod)
virtual

Called when loading the type.

Parameters
modThe mod instance associated with this type.

Implements ILoadable.

◆ NetPlaceEntityAttempt()

override void ModTileEntity.NetPlaceEntityAttempt ( int  i,
int  j 
)
virtual

You should never use this. It is only included here for completion's sake.

Reimplemented from TileEntity.

◆ NetReceive()

override void ModTileEntity.NetReceive ( BinaryReader  reader)
virtual

Receives custom data sent in the NetSend hook.
Called while receiving tile data (!lightReceive) and when MessageID.TileEntitySharing is received (lightReceive).
Only called on the client.

Parameters
readerThe reader.

Reimplemented from TileEntity.

◆ NetSend()

override void ModTileEntity.NetSend ( BinaryWriter  writer)
virtual

Allows you to send custom data for this tile entity between client and server, which will be handled in NetReceive.
Called while sending tile data (!lightSend) and when MessageID.TileEntitySharing is sent (lightSend).
Only called on the server.

Parameters
writerThe writer.

Reimplemented from TileEntity.

◆ ReadExtraData()

sealed override void ModTileEntity.ReadExtraData ( BinaryReader  reader,
bool  networkSend 
)
virtual

Should never be called on ModTileEntity. Replaced by NetReceive and Load Would make the base method internal if not for patch size

Reimplemented from TileEntity.

◆ RegisterTileEntityID()

sealed override void ModTileEntity.RegisterTileEntityID ( int  assignedID)
virtual

Reimplemented from TileEntity.

◆ Unload()

virtual void ModTileEntity.Unload ( )
virtual

Called during unloading when needed.

Implements ILoadable.

◆ WriteExtraData()

sealed override void ModTileEntity.WriteExtraData ( BinaryWriter  writer,
bool  networkSend 
)
virtual

Should never be called on ModTileEntity. Replaced by NetSend and Save. Would make the base method internal if not for patch size

Reimplemented from TileEntity.

Member Data Documentation

◆ NumVanilla

readonly int ModTileEntity.NumVanilla
static
Initial value:
= Assembly.GetExecutingAssembly()
.GetTypes()
.Count(t => !t.IsAbstract && t.IsSubclassOf(typeof(TileEntity)) && !typeof(ModTileEntity).IsAssignableFrom(t))
Tile Entities are Entities tightly coupled with tiles, allowing the possibility of tiles to exhibit c...
Definition: ModTileEntity.cs:14
Definition: TileEntity.cs:12

Property Documentation

◆ FullName

string ModTileEntity.FullName
get

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

Implements IModType.

◆ Mod

Mod ModTileEntity.Mod
getset

The mod that added this ModTileEntity.

Implements IModType.

◆ Name

virtual string ModTileEntity.Name
get

The internal name of this ModTileEntity.

Implements IModType.