Rust Hooks

Server Hooks

Init
  • Called when a plugin is being initialized
  • Other plugins may or may not be present, dependant on load order
  • No return behavior
Copy
void Init()
{
    Puts("Init works!");
}
OnServerRestartInterrupt
  • Called when a server restart is being cancelled
  • Returning a non-null value overrides default behavior
Copy
object OnServerRestartInterrupt()
{
    Puts("OnServerRestartInterrupt works!");
    return null;
}
OnServerShutdown
  • Useful for saving something / etc on server shutdown
  • No return behavior
Copy
void OnServerShutdown()
{
    Puts("OnServerShutdown works!");
}
OnServerCommand
  • Useful for intercepting commands before they get to their intended target
  • Returning a non-null value overrides default behavior
Copy
object OnServerCommand(ConsoleSystem.Arg arg)
{
    Puts("OnServerCommand works!");
    return null;
}
OnMessagePlayer
  • Useful for intercepting server messages before they get to their intended target
  • Returning a non-null value overrides default behavior
Copy
object OnMessagePlayer(string message, BasePlayer player)
{
    Puts("OnMessagePlayer works!");
    return null;
}
OnFrame
  • Called each frame
  • No return behavior
Copy
void OnFrame()
{
    Puts("OnFrame works!");
}
OnServerInformationUpdated
  • Called after all steam information for the server has has been updated
  • No return behavior
Copy
void OnServerInformationUpdated()
{
    Puts("OnServerInformationUpdated works!");
}
OnRconCommand
  • Called when an RCON command is run
  • No return behavior
Copy
void OnRconCommand(IPAddress ip, string command, string[] args)
{
    Puts("OnRconCommand works!");
}
OnRconConnection
  • Called when a new RCON connection is opened
  • Returning a non-null value overrides default behavior
Copy
object OnRconConnection(IPAddress ip)
{
    Puts("OnRconConnection works!");
    return null;
}
OnPluginLoaded
  • Called when any plugin has been loaded
  • No return behavior
  • Not to be confused with Loaded
Copy
void OnPluginLoaded(Plugin plugin)
{
    Puts($"Plugin '{plugin.Name}' has been loaded");
}
OnNewSave
  • Called when a new savefile is created (usually when map has wiped)
  • No return behavior
Copy
void OnNewSave(string filename)
{
  Puts("OnNewSave works!");
}
OnSaveLoad
  • Called when a save file is loaded
  • Returning a non-null value overrides default behavior
Copy
object OnSaveLoad(Dictionary<BaseEntity, ProtoBuf.Entity> entities)
{
    Puts("OnSaveLoad works!");
    return null;
}
OnPluginUnloaded
  • Called when any plugin has been unloaded
  • No return behavior
  • Not to be confused with Unload
Copy
void OnPluginUnloaded(Plugin plugin)
{
    Puts($"Plugin '{plugin.Name}' has been unloaded");
}
OnServerMessage
  • Called before a SERVER message is sent to a player
  • Return a non-null value to stop message from being sent
Copy
//  Example that stops message from being sent

object OnServerMessage(string message, string playerName, string color, ulong playerId)
{
    if (message.Contains("gave"))
    {
        Puts($"Message to {playerName} ({playerId}) cancelled");
        return false;
    }

return null;
}
Copy
// Example that does not stop message from being sent

void OnServerMessage(string message, string playerName, string color, ulong playerId)
{
    Puts($"{playerName} ({playerId}) was sent message: {message}");
}
OnServerInitialized
  • Called after the server startup has been completed and is awaiting connections
  • Also called for plugins that are hotloaded while the server is already started running
  • Boolean parameter, false if called on plugin hotload and true if called on server initialization
  • No return behavior
Copy
void OnServerInitialized(bool initial)
{
    Puts("OnServerInitialized works!");
}
OnTick
  • Called every tick (defined by the tick rate of the server)
  • For better performance, avoid using heavy calculations in this hook.
  • No return behavior
Copy
void OnTick()
{
    Puts("OnTick works!");
}
OnServerSave
  • Called before the server saves
  • No return behavior
Copy
void OnServerSave()
{
    Puts("OnServerSave works!");
}

Player Hooks

CanAffordUpgrade
  • Called when the resources for an upgrade are checked
  • Returning true or false overrides default behavior
Copy
bool CanAffordUpgrade(BasePlayer player, BuildingBlock block, BuildingGrade.Enum grade)
{
    Puts("CanAffordUpgrade works!");
    return true;
}
CanAssignBed
  • Called when a player attempts to assign a bed or sleeping bag to another player
  • Returning a non-null value overrides default behavior
Copy
object CanAssignBed(BasePlayer player, SleepingBag bag, ulong targetPlayerId)
{
    Puts("CanAssignBed works!");
    return null;
}
CanUpdateSign
  • Called when the player attempts to change the text on a sign or lock it, or update a photo frame
  • Returning true or false overrides default behavior
Copy
bool CanUpdateSign(BasePlayer player, Signage sign)
{
    Puts("CanUpdateSign works!");
    return true;
}
Copy
bool CanUpdateSign(BasePlayer player, PhotoFrame photoFrame)
{
    Puts("CanUpdateSign works!");
    return true;
}
OnUserChat
  • Called when a player sends a chat message to the server
  • Returning true overrides default behavior of chat, not commands
Copy
object OnUserChat(IPlayer player, string message)
{
    Puts($"{player.Name} said: {message}");
    return null;
}
OnPlayerCommand
  • Useful for intercepting players' commands before their handling
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerCommand(BasePlayer player, string command, string[] args)
{
    Puts("OnPlayerCommand works!");
    return null;
}
OnUserCommand
  • Useful for intercepting players' commands before their handling
  • Returning a non-null value overrides default behavior
Copy
object OnUserCommand(IPlayer player, string command, string[] args)
{
    Puts("OnUserCommand works!");
    return null;
}
OnPlayerRevive
  • Called before the recover after reviving with a medical tool
  • Useful for canceling the reviving
  • Returning a non-null value cancels default behavior
Copy
object OnPlayerRevive(BasePlayer reviver, BasePlayer player)
{
    Puts($"{reviver.displayName} revived {player.displayName}");
    return null;
}
CanLock
  • Useful for canceling the lock action
  • Returning a non-null value cancels default behavior
Copy
object CanLock(BasePlayer player, BaseLock baseLock)
{
    Puts("CanLock works!");
    return null;
}
OnMeleeAttack
  • Useful for canceling melee attacks
  • Returning a non-null value cancels default behavior
Copy
object OnMeleeAttack(BasePlayer player, HitInfo info)
{
    Puts("OnMeleeAttack works!");
    return null;
}
OnPlayerRecovered
  • Called when the player was recovered
  • No return behavior
Copy
void OnPlayerRecovered(BasePlayer player)
{
    Puts("OnPlayerRecovered works!");
}
CanPushBoat
  • Useful for canceling boat push
  • Returning a non-null value cancels default behavior
Copy
object CanPushBoat(BasePlayer player, MotorRowboat boat)
{
    Puts("CanPushBoat works!");
    return null;
}
CanDeployItem
  • Useful for denying items' deployment
  • Returning a non-null value cancels default behavior
Copy
object CanDeployItem(BasePlayer player, Deployer deployer, NetworkableId entityId)
{
    Puts("CanDeployItem works!");
    return null;
}
OnPlayerAssist
  • Called when a player tries to assist target player (when target is wounded)
  • Returning a non-null value cancels default behavior
Copy
object OnPlayerAssist(BasePlayer target, BasePlayer player)
{
    Puts("OnPlayerAssist works!");
    return null;
}
OnPlayerSetInfo
  • Called when setting player's information (aka console variables)
  • No return behavior
Copy
void OnPlayerSetInfo(Connection connection, string key, string value)
{
    Puts($"{connection.userid}: {key} was set to {value}");
}
CanSpectateTarget
  • Called when spectate target is attempting to update
  • Returning a non-null value cancels default behavior
Copy
object CanSpectateTarget(BasePlayer player, string filter)
{
    Puts($"{player.displayName} tries to spectate with a filter: {filter}");
    return null;
}
OnActiveItemChange
  • Called when active item is attempting to update
  • Returning a non-null value cancels default behavior
Copy
object OnActiveItemChange(BasePlayer player, Item oldItem, ItemId newItemId)
{
    Puts("OnActiveItemChange works!");
    return null;
}
OnActiveItemChanged
  • Called when active item was changed
  • No return behavior
Copy
void OnActiveItemChanged(BasePlayer player, Item oldItem, Item newItem)
{
    Puts("OnActiveItemChanged works!");
}
OnPayForUpgrade
  • Called when player is paying for an upgrade. Useful for preventing paying for block upgrade
  • Returning a non-null value cancels default behavior
Copy
object OnPayForUpgrade(BasePlayer player, BuildingBlock block, ConstructionGrade gradeTarget)
{
    Puts("OnPayForUpgrade works!");
    return null;
}
OnMapMarkerRemove
  • Called when trying to remove a marker
  • Returning a non-null value cancels default behaviour
Copy
object OnMapMarkerRemove(BasePlayer player, MapNote note)
{
    Puts("OnMapMarkerRemove works!");
    return null;
}
OnMapMarkerAdd
  • Called when trying to add a marker
  • Returning a non-null value cancels default behavior
Copy
object OnMapMarkerAdd(BasePlayer player, MapNote note)
{
    Puts("OnMapMarkerAdd works!");
    return null;
}
OnMapMarkerAdded
  • Called after a marker was added
  • No return behavior
Copy
void OnMapMarkerAdded(BasePlayer player, MapNote note)
{
    Puts("OnMapMarkerAdded works!");
}
OnMapMarkersClear
  • Called when trying to clear map markers
  • Returning a non-null value cancels default behavior
Copy
object OnMapMarkersClear(BasePlayer player, List<MapNote> notes)
{
    Puts("OnMapMarkersClear works!");
    return null;
}
OnMapMarkersCleared
  • Called after markers were cleared
  • No return behavior
Copy
void OnMapMarkersCleared(BasePlayer player, List<MapNote> notes)
{
    Puts("OnMapMarkersCleared works!");
}
OnPayForPlacement
  • Called when a player is paying for placement. Useful for preventing paying for placing deployables, building blocks and etc
  • Returning a non-null value cancels default behavior
Copy
object OnPayForPlacement(BasePlayer player, Planner planner, Construction construction)
{
    Puts("OnPayForPlacement works!");
    return null;
}
CanAffordToPlace
  • Useful for ignoring resource requirements for placement
  • Returning true or false overrides default behavior
Copy
bool CanAffordToPlace(BasePlayer player, Planner planner, Construction construction)
{
    Puts("CanAffordToPlace works!");
    return false;
}
OnPlayerKeepAlive
  • Called before a player is kept alive (Example: You started "helping" player, it keeps him alive for at least 10 seconds more to be sure he won't die until you finish picking him up)
  • Returning a non-null value cancels default behavior
Copy
object OnPlayerKeepAlive(BasePlayer player, BasePlayer target)
{
    Puts("OnPlayerKeepAlive works!");
    return null;
}
OnSendCommand
  • Called before a command is sent from the server to a player (or a group of players)
  • Usually commands aren't sent to a group of players, so in most cases it's safe to use only OnSendCommand with a single Connection.
  • Returning a non-null value overwrites command arguments
Copy
object OnSendCommand(List<Connection> connections, string command, object[] args)
{
    Puts("OnSendCommand works!");
    return null;
}

object OnSendCommand(Connection connection, string command, object[] args)
{
    Puts("OnSendCommand works!");
    return null;
}
OnBroadcastCommand
  • Called before a command is broadcasted to all connected clients
  • Returning a non-null value overwrites command arguments
Copy
object OnBroadcastCommand(string command, object[] args)
{
    Puts("OnBroadcastCommand works!");
    return null;
}
OnUserRespawn
  • Called when a player is respawning
  • No return behavior
Copy
void OnUserRespawn(IPlayer player)
{
    Puts("OnUserRespawn works!");
}
OnUserRespawned
  • Called after a player has respawned
  • No return behavior
Copy
void OnUserRespawned(IPlayer player)
{
    Puts("OnUserRespawned works!");
}
OnPlayerReported
  • Called when a player has reported someone via F7
  • No return behavior
Copy
void OnPlayerReported(BasePlayer reporter, string targetName, string targetId, string subject, string message, string type)
{
    Puts($"{reporter.displayName} reported {targetName} for {subject}.");
}
OnPlayerCorpse
  • Called when a non-null corpse has just been spawned
  • No return behavior
Copy
void OnPlayerCorpse(BasePlayer player, BaseCorpse corpse)
{
    Puts($"A corpse for {player.displayName} has just been spawned!");
}
CanUseWires
  • Useful for allowing or preventing a player from using wires
  • Returning a non-null value overrides default behavior
Copy
object CanUseWires(BasePlayer player)
{
    Puts($"{player.displayName} has just tried to use wires");
    return null;
}
OnPlayerCorpseSpawn
  • Called when a non-null corpse is about to spawn
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerCorpseSpawn(BasePlayer player)
{
    Puts("OnPlayerCorpseSpawn works!");
    return null;
}
OnPlayerCorpseSpawned
  • Called when a non-null corpse has just been spawned
  • No return behavior
Copy
void OnPlayerCorpseSpawned(BasePlayer player, PlayerCorpse corpse)
{
    Puts("OnPlayerCorpseSpawned works!");
}
OnUserConnected
  • Called after a player has been approved and has connected to the server
  • No return behavior
Copy
void OnUserConnected(IPlayer player)
{
    Puts($"{player.Name} ({player.Id}) connected from {player.Address}");

if (player.IsAdmin)
    {
        Puts($"{player.Name} ({player.Id}) is admin");
    }

Puts($"{player.Name} is {(player.IsBanned ? "banned" : "not banned")}");

server.Broadcast($"Welcome {player.Name} to {server.Name}!");
}
OnUserDisconnected
  • Called after a player has disconnected from the server
  • No return behavior
Copy
void OnUserDisconnected(IPlayer player)
{
    Puts($"{player.Name} ({player.Id}) disconnected");
}
CanBeTargeted
  • Called when an autoturret, flame turret, shotgun trap, or helicopter turret is attempting to target the player
  • Returning true or false overrides default behavior
Copy
bool CanBeTargeted(BaseCombatEntity player, MonoBehaviour behaviour)
{
    Puts("CanBeTargeted works!");
    return true;
}
CanBeWounded
  • Called when any damage is attempted on player
  • Returning true or false overrides default behavior
Copy
bool CanBeWounded(BasePlayer player, HitInfo info)
{
    Puts("CanBeWounded works!");
    return true;
}
CanBuild
  • Called when the player tries to build something
  • Returning a non-null value overrides default behavior
Copy
object CanBuild(Planner planner, Construction prefab, Construction.Target target)
{
    Puts("CanBuild works!");
    return null;
}
CanBypassQueue
  • Called before the player is added to the connection queue
  • Returning true will bypass the queue, returning nothing will by default queue the player
Copy
bool CanBypassQueue(Network.Connection connection)
{
    Puts("CanBypassQueue works!");
    return true;
}
CanChangeCode
  • Called when a player tries to change the code on a codelock
  • Returning a non-null value overrides default behavior
Copy
object CanChangeCode(BasePlayer player, CodeLock codeLock, string newCode, bool isGuestCode)
{
    Puts("CanChangeCode works!");
    return null;
}
CanChangeGrade
  • Called when a player tries to change a building grade
  • Returning true or false overrides default behavior
Copy
bool CanChangeGrade(BasePlayer player, BuildingBlock block, BuildingGrade.Enum grade)
{
    Puts("CanChangeGrade works!");
    return true;
}
CanCraft
  • Called when the player attempts to craft an item
  • Returning true or false overrides default behavior
Copy
bool CanCraft(ItemCrafter itemCrafter, ItemBlueprint bp, int amount)
{
    Puts("CanCraft works!");
    return true;
}
Copy
bool CanCraft(PlayerBlueprints playerBlueprints, ItemDefinition itemDefinition, int skinItemId)
{
    Puts("CanCraft works!");
    return true;
}
CanClientLogin
  • Called when the player is attempting to login
  • Returning a string will use the string as the error message
  • Returning true allows the connection, returning nothing will by default allow the connection, returning anything else will reject it with an error message
Copy
object CanClientLogin(Network.Connection connection)
{
    Puts("CanClientLogin works!");
    return true;
}
CanUserLogin
  • Called when a player is attempting to connect to the server
  • Returning a string will kick the user with this reason. Returning a non-null value overrides default behavior
Copy
object CanUserLogin(string name, string id, string ipAddress)
{
    if (name.ToLower().Contains("admin"))
    {
        Puts($"{name} ({id}) at {ipAddress} tried to connect with 'admin' in name");
        return "Sorry, your name cannot have 'admin' in it";
    }

return true;
}
OnUserApproved
  • Called after a player is approved to connect to the server
  • No return behavior
Copy
void OnUserApproved(string name, string id, string ipAddress)
{
    Puts($"{name} ({id}) at {ipAddress} has been approved to connect");
}
CanDemolish
  • Called when a player tries to demolish a building block
  • Returning true or false overrides default behavior
Copy
bool CanDemolish(BasePlayer player, BuildingBlock block, BuildingGrade.Enum grade)
{
    Puts("CanDemolish works!");
    return true;
}
CanHackCrate
  • Called when a player starts hacking a locked crate
  • Returning a non-null value overrides default behavior
Copy
object CanHackCrate(BasePlayer player, HackableLockedCrate crate)
{
    Puts("CanHackCrate works!");
    return null;
}
OnUserNameUpdated
  • Called when a player's stored nickname has been changed
  • No return behavior
Copy
void OnUserNameUpdated(string id, string oldName, string newName)
{
    Puts($"Player name changed from {oldName} to {newName} for ID {id}");
}
CanDismountEntity
  • Called when the player attempts to dismount an entity
  • Returning a non-null value overrides default behavior
Copy
object CanDismountEntity(BasePlayer player, BaseMountable entity)
{
    Puts("CanDismountEntity works!");
    return null;
}
OnUserGroupAdded
  • Called when a player has been added to a group
  • No return behavior
Copy
void OnUserGroupAdded(string id, string groupName)
{
    Puts($"Player '{id}' added to group: {groupName}");
}
OnUserGroupRemoved
  • Called when a player has been removed from a group
  • No return behavior
Copy
void OnUserGroupRemoved(string id, string groupName)
{
    Puts($"Player '{id}' removed from group: {groupName}");
}
CanEquipItem
  • Called when the player attempts to equip an item
  • Returning true or false overrides default behavior
Copy
bool CanEquipItem(PlayerInventory inventory, Item item, int targetPos)
{
    Puts("CanEquipItem works!");
    return true;
}
OnExperimentStart
  • Called when the player attempts to experiment with at a workbench
  • Returning a non-null value overrides default behavior
Copy
object OnExperimentStart(Workbench workbench, BasePlayer player)
{
    Puts("OnExperimentStart works!");
    return null;
}
OnUserPermissionGranted
  • Called when a permission has been granted to a player
  • No return behavior
Copy
void OnUserPermissionGranted(string id, string permName)
{
    Puts($"Player '{id}' granted permission: {permName}");
}
OnUserPermissionRevoked
  • Called when a permission has been revoked from a player
  • No return behavior
Copy
void OnUserPermissionRevoked(string id, string permName)
{
    Puts($"Player '{id}' revoked permission: {permName}");
}
OnExperimentStarted
  • Called after the experimentation has started
  • No return behaviour
Copy
void OnExperimentStarted(Workbench workbench, BasePlayer player)
{
    Puts("OnExperimentStarted works!");
}
OnUserKicked
  • Called when a player has been kicked from the server
  • No return behavior
Copy
void OnUserKicked(IPlayer player, string reason)
{
    Puts($"Player {player.Name} ({player.Id}) was kicked");
}
OnExperimentEnd
  • Called when an experiment is about to end
  • Returning a non-null value overrides defualt behaviour.
Copy
object OnExperimentEnd(Workbench workbench)
{
    Puts("OnExperimentEnd works!");
    return null;
}
OnExperimentEnded
  • Called after the experiment has finished
  • No return behaviour
Copy
void OnExperimentEnded(Workbench workbench)
{
    Puts("OnExperimentEnded works!");
}
OnUserBanned
  • Called when a player has been banned from the server
  • Will have reason available if provided
  • No return behavior
Copy
void OnUserBanned(string name, string id, string ipAddress, string reason)
{
    Puts($"Player {name} ({id}) at {ipAddress} was banned: {reason}");
}
CanHideStash
  • Called when a player tries to hide a stash
  • Returning a non-null value overrides default behavior
Copy
object CanHideStash(BasePlayer player, StashContainer stash)
{
    Puts("CanHideStash works!");
    return null;
}
OnUserUnbanned
  • Called when a player has been unbanned from the server
  • No return behavior
Copy
void OnUserUnbanned(string name, string id, string ipAddress)
{
    Puts($"Player {name} ({id}) at {ipAddress} was unbanned");
}
CanLootPlayer
  • Called when the player attempts to loot another player
  • Returning true or false overrides default behavior
Copy
bool CanLootPlayer(BasePlayer target, BasePlayer looter)
{
    Puts("CanLootPlayer works!");
    return true;
}
CanLootEntity
  • Called when the player starts looting a DroppedItemContainer, LootableCorpse, ResourceContainer, BaseRidableAnimal, or StorageContainer entity
  • Returning a non-null value overrides default behavior
Copy
object CanLootEntity(BasePlayer player, DroppedItemContainer container)
{
    Puts("CanLootEntity works!");
    return null;
}
Copy
object CanLootEntity(BasePlayer player, LootableCorpse  corpse)
{
    Puts("CanLootEntity works!");
    return null;
}
Copy
object CanLootEntity(BasePlayer player, ResourceContainer container)
{
    Puts("CanLootEntity works!");
    return null;
}
Copy
object CanLootEntity(BasePlayer player, BaseRidableAnimal animal)
{
    Puts("CanLootEntity works!");
    return null;
}
Copy
object CanLootEntity(BasePlayer player, StorageContainer container)
{
    Puts("CanLootEntity works!");
    return null;
}
CanMountEntity
  • Called when the player attempts to mount an entity
  • Returning a non-null value overrides default behavior
Copy
object CanMountEntity(BasePlayer player, BaseMountable entity)
{
    Puts("CanMountEntity works!");
    return null;
}
CanPickupEntity
  • Called when a player attempts to pickup a deployed entity (AutoTurret, BaseMountable, BearTrap, DecorDeployable, Door, DoorCloser, ReactiveTarget, SamSite, SleepingBag, SpinnerWheel, StorageContainer, etc.)
  • Returning true or false overrides default behavior
Copy
bool CanPickupEntity(BasePlayer player, BaseEntity entity)
{
    Puts("CanPickupEntity works!");
    return true;
}
CanPickupLock
  • Called when a player attempts to pickup a lock
  • Returning true or false overrides default behavior
Copy
bool CanPickupLock(BasePlayer player, BaseLock baseLock)
{
    Puts("CanPickupLock works!");
    return true;
}
CanRenameBed
  • Called when the player attempts to rename a bed or sleeping bag
  • Returning a non-null value overrides default behavior
Copy
object CanRenameBed(BasePlayer player, SleepingBag bed, string bedName)
{
    Puts("CanRenameBed works!");
    return null;
}
CanResearchItem
  • Called when the player attempts to research an item
  • Returning a non-null value overrides default behavior
Copy
object CanResearchItem(BasePlayer player, Item targetItem)
{
    Puts("CanResearchItem works!");
    return null;
}
CanUseLockedEntity
  • Called when the player tries to use an entity that is locked
  • Returning true or false overrides default behavior
Copy
bool CanUseLockedEntity(BasePlayer player, BaseLock baseLock)
{
    Puts("CanUseLockedEntity works!");
    return true;
}
CanSeeStash
  • Called when a player is looking at a hidden stash
  • Returning a non-null value overrides default behavior
Copy
object CanSeeStash(BasePlayer player, StashContainer stash)
{
    Puts("CanSeeStash works!");
    return null;
}
OnStashExposed
  • Called when a player reveals a hidden stash
  • No return behavior
Copy
void OnStashExposed(StashContainer stash, BasePlayer player)
{
    Puts("OnStashExposed works");
}
OnStashHidden
  • Called when a player hides a stash
  • No return behavior
Copy
void OnStashHidden(StashContainer stash, BasePlayer player)
{
    Puts("OnStashHidden works!");
}
CanSetBedPublic
  • Called when a player tries to set a bed public
  • Returning a non-null value overrides default behavior
Copy
object CanSetBedPublic(BasePlayer player, SleepingBag bed)
{
    Puts("CanSetBedPublic works!");
    return null;
}
CanUnlock
  • Called when the player tries to unlock a keylock or codelock
  • Returning a non-null value overrides default behavior
Copy
object CanUnlock(BasePlayer player, BaseLock baseLock)
{
    Puts("CanUnlock works!");
    return null;
}
CanUseMailbox
  • Called when the player tries to use a mailbox
  • Returning true or false overrides default behavior
Copy
bool CanUseMailbox(BasePlayer player, Mailbox mailbox)
{
    Puts("CanUseMailbox works!");
    return true;
}
CanUseUI
  • Called when the player attempts to use a custom UI
  • Returning a non-null value overrides default behavior
Copy
object CanUseUI(BasePlayer player, string json)
{
    Puts("CanUseUI works!");
    return null;
}
CanWearItem
  • Called when the player attempts to equip an item
  • Returning a non-null value overrides default behavior
Copy
object CanWearItem(PlayerInventory inventory, Item item, int targetSlot)
{
    Puts("CanWearItem works!");
    return null;
}
OnClientAuth
  • Called when the player is giving server connection authorization information
  • No return behavior
Copy
void OnClientAuth(Connection connection)
{
    Puts("OnClientAuth works!");
}
OnDestroyUI
  • Called when a custom UI is destroyed for the player
  • No return behavior
Copy
void OnDestroyUI(BasePlayer player, string json)
{
    Puts("OnDestroyUI works!");
}
OnFindSpawnPoint
  • Useful for controlling player spawnpoints (like making all spawns occur in a set area)
  • Return a BasePlayer.SpawnPoint object to use that spawnpoint
Copy
void OnFindSpawnPoint(BasePlayer player)
{
    Puts("OnFindSpawnPoint works!");
}
OnLootEntity
  • Called when the player starts looting an entity
  • No return behavior
Copy
void OnLootEntity(BasePlayer player, BaseEntity entity)
{
    Puts("OnLootEntity works!");
}
OnLootEntityEnd
  • Called when the player stops looting an entity
  • No return behavior
Copy
void OnLootEntityEnd(BasePlayer player, BaseCombatEntity entity)
{
    Puts("OnLootEntityEnd works!");
}
OnLootItem
  • Called when the player starts looting an item
  • No return behavior
Copy
void OnLootItem(PlayerLoot playerLoot, Item item)
{
    Puts("OnLootItem works!");
}
OnLootPlayer
  • Called when the player starts looting another player
  • No return behavior
Copy
void OnLootPlayer(BasePlayer player, BasePlayer target)
{
    Puts("OnLootPlayer works!");
}
OnPlayerAttack
  • Useful for modifying an attack before it goes out
  • hitInfo.HitEntity should be the entity that this attack would hit
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerAttack(BasePlayer attacker, HitInfo info)
{
    Puts("OnPlayerAttack works!");
    return null;
}
OnPlayerBanned
  • Called when the player is banned (Facepunch, EAC, server ban, etc.)
  • No return behavior
Copy
void OnPlayerBanned(string name, ulong id, string address, string reason)
{
    Puts("OnPlayerBanned works!");
}
OnPlayerChat
  • Called when the player sends chat to the server
  • Returning a non-null value overrides default behavior of chat, not commands
Copy
object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
{
    Puts("OnPlayerChat works!");
    return null;
}
OnPlayerConnected
  • Called after the player object is created, but before the player has spawned
  • No return behavior
Copy
void OnPlayerConnected(BasePlayer player)
{
    Puts("OnPlayerConnected works!");
}
OnPlayerDeath
  • Called when the player is about to die
  • HitInfo may be null sometimes
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerDeath(BasePlayer player, HitInfo info)
{
    Puts("OnPlayerDeath works!");
    return null;
}
OnPlayerDisconnected
  • Called after the player has disconnected from the server
  • No return behavior
Copy
void OnPlayerDisconnected(BasePlayer player, string reason)
{
    Puts("OnPlayerDisconnected works!");
}
OnPlayerDropActiveItem
  • Called when the player drops their active held item
  • No return behavior
Copy
void OnPlayerDropActiveItem(BasePlayer player, Item item)
{
    Puts("OnPlayerDropActiveItem works!");
}
OnPlayerHealthChange
  • Called just before the player's health changes
  • Returning a non-null value cancels the health change
Copy
object OnPlayerHealthChange(BasePlayer player, float oldValue, float newValue)
{
    Puts("OnPlayerHealthChange works!");
    return null;
}
OnPlayerInput
  • Called when input is received from a connected client
  • No return behavior
Copy
void OnPlayerInput(BasePlayer player, InputState input)
{
    Puts("OnPlayerInput works!");
}
OnPlayerKicked
  • Called after the player is kicked from the server
  • No return behavior
Copy
void OnPlayerKicked(BasePlayer player, string reason)
{
    Puts("OnPlayerKicked works!");
}
OnPlayerLand
  • Called just before the player lands on the ground
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerLand(BasePlayer player, float num)
{
    Puts("OnPlayerLand works!");
    return null;
}
OnPlayerLanded
  • Called when the player landed on the ground
  • No return behavior
Copy
void OnPlayerLanded(BasePlayer player, float num)
{
    Puts("OnPlayerLanded works!");
}
OnPlayerLootEnd
  • Called when the player stops looting
  • No return behavior
Copy
void OnPlayerLootEnd(PlayerLoot inventory)
{
    Puts("OnPlayerLootEnd works!");
}
OnPlayerMetabolize
  • Called after the player's metabolism has been changed
  • No return behavior
Copy
void OnPlayerMetabolize(PlayerMetabolism metabolism, BaseCombatEntity entity, float delta)
{
    Puts("OnPlayerMetabolize works!");
}
OnPlayerRecover
  • Called when the player is about to recover from the 'wounded' state
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerRecover(BasePlayer player)
{
    Puts("OnPlayerRecover works!");
    return null;
}
OnPlayerRespawn
  • Called when a player is attempting to respawn
  • Returning a BasePlayer.SpawnPoint (takes a position and rotation), overrides the respawn location, for the variant that receives a BasePlayer.SpawnPoint argument
  • Returning a SleepingBag overrides the respawn location, for the variant that receives a SleepingBag argument
Copy
object OnPlayerRespawn(BasePlayer player, BasePlayer.SpawnPoint spawnPoint)
{
    Puts("OnPlayerRespawn works!");
    return null;
}
Copy
object OnPlayerRespawn(BasePlayer player, SleepingBag sleepingBag)
{
    Puts("OnPlayerRespawn works!");
    return null;
}
OnPlayerRespawned
  • Called when the player has respawned (specifically when they click the "Respawn" button)
  • ONLY called after the player has transitioned from dead to not-dead, so not when they're waking up
  • This means it's possible for the player to connect and disconnect from a server without OnPlayerRespawned ever triggering for them
  • No return behavior
Copy
void OnPlayerRespawned(BasePlayer player)
{
    Puts("OnPlayerRespawned works!");
}
OnRespawnInformationGiven
  • Called when a player is about to be sent respawn information
  • No return behavior
Copy
void OnRespawnInformationGiven(BasePlayer player, RespawnInformation respawnInformation)
{
    Puts("OnRespawnInformationGiven works!");
}
OnPlayerSleep
  • Called when the player is about to go to sleep
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerSleep(BasePlayer player)
{
    Puts("OnPlayerSleep works!");
    return null;
}
OnPlayerSleepEnded
  • Called when the player awakes
  • No return behavior
Copy
void OnPlayerSleepEnded(BasePlayer player)
{
    Puts("OnPlayerSleepEnded works!");
}
OnPlayerSpawn
  • Called when a player is attempting to spawn for the first time
  • Returning true overrides default behavior
Copy
object OnPlayerSpawn(BasePlayer player)
{
    Puts("OnPlayerSpawn works!");
    return null;
}
OnPlayerSpectate
  • Called when the player starts spectating
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerSpectate(BasePlayer player, string spectateFilter)
{
    Puts("OnPlayerSpectate works!");
    return null;
}
OnPlayerSpectateEnd
  • Called when the player stops spectating
  • Returning a non-null value stops the spectate from ending
Copy
object OnPlayerSpectateEnd(BasePlayer player, string spectateFilter)
{
    Puts("OnPlayerSpectateEnd works!");
    return null;
}
OnPlayerTick
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerTick(BasePlayer player, PlayerTick msg, bool wasPlayerStalled)
{
    Puts("OnPlayerTick works!");
    return null;
}
OnPlayerViolation
  • Called when the player triggers an anti-hack violation
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerViolation(BasePlayer player, AntiHackType type, float amount)
{
    Puts("OnPlayerViolation works!");
    return null;
}
OnPlayerVoice
  • Called when the player uses the in-game voice chat
  • Returning a non-null value overrides default behavior
Copy
object OnPlayerVoice(BasePlayer player, Byte[] data)
{
    Puts("OnPlayerVoice works!");
    return null;
}
OnPlayerWound
  • Called when the player is about to go down to the 'wounded' state
  • source might be null, check it before use
  • Returning a non-null value cancels the wounded state
Copy
object OnPlayerWound(BasePlayer player, HitInfo info)
{
    Puts("OnPlayerWound works!");
    return null;
}
OnRunPlayerMetabolism
  • Called before a metabolism update occurs for the specified player
  • Metabolism update consists of managing the player's temperature, health etc.
  • You can use this to turn off or change certain aspects of the metabolism, either by editing values before returning, or taking complete control of the method
  • Returning a non-null value cancels the update
Copy
object OnRunPlayerMetabolism(PlayerMetabolism metabolism, BasePlayer player, float delta)
{
    Puts("OnRunPlayerMetabolism works!");
    return null;
}
OnUserApprove
  • Used by RustCore and abstracted into CanClientLogin
  • Returning a non-null value overrides default behavior, plugin should call Reject if it does this
Copy
object OnUserApprove(Network.Connection connection)
{
    Puts("OnUserApprove works!");
    return null;
}
OnDefaultItemsReceive
  • Called when a player is about to receive default items
  • Returning a non-null value overrides default behavior
Copy
object OnDefaultItemsReceive(PlayerInventory inventory)
{
    Puts("OnDefaultItemsReceive works!");
    return null;
}
OnDefaultItemsReceived
  • Called after a player has received default items
  • Returning a non-null value overrides default behavior
Copy
void OnDefaultItemsReceived(PlayerInventory inventory)
{
    Puts("OnDefaultItemsReceived works!");
}
OnAnalysisComplete
  • Called right after a player completes a survey crater analysis
  • No return behavior
Copy
void OnAnalysisComplete(SurveyCrater surveyCrater, BasePlayer player)
{
    Puts("OnAnalysisComplete works!");
}
OnNpcConversationStart
  • Called when a player tries to start a conversation with an NPC
  • Returning a non-null value overrides default behavior
Copy
object OnNpcConversationStart(NPCTalking npcTalking, BasePlayer player, ConversationData conversationData)
{
    Puts("OnNpcConversationStart works!");
    return null;
}
OnNpcConversationRespond
  • Called when a player chooses an NPC conversation response
  • Returning a non-null value overrides default behavior
Copy
object OnNpcConversationRespond(NPCTalking npcTalking, BasePlayer player, ConversationData conversationData, ConversationData.ResponseNode responseNode)
{
    Puts("OnNpcConversationRespond works!");
    return null;
}
OnNpcConversationResponded
  • Called right after a player's chosen NPC conversation response has been processed
  • No return behavior
Copy
void OnNpcConversationResponded(NPCTalking npcTalking, BasePlayer player, ConversationData conversationData, ConversationData.ResponseNode responseNode)
{
    Puts("OnNpcConversationResponded works!");
}
OnNpcConversationEnded
  • Called right after a player has ended an NPC conversation
  • No return behavior
Copy
void OnNpcConversationEnded(NPCTalking npcTalking, BasePlayer player)
{
    Puts("OnNpcConversationEnded works!");
}
OnNetworkGroupEntered
  • Called after a player has entered a network group
  • No return behavior
Copy
void OnNetworkGroupEntered(BasePlayer player, Network.Visibility.Group group)
{
    Puts("OnNetworkGroupEntered works!");
}
OnNetworkGroupLeft
  • Called after a player has left a network group
  • No return behavior
Copy
void OnNetworkGroupLeft(BasePlayer player, Network.Visibility.Group group)
{
    Puts("OnNetworkGroupLeft works!");
}
OnDemoRecordingStart
  • Called right before a demo of a player starts recording
  • Returning a non-null value overrides default behavior
Copy
object OnDemoRecordingStart(string filename, BasePlayer player)
{
    Puts("OnDemoRecordingStart works!");
    return null;
}
OnDemoRecordingStarted
  • Called after a demo of a player has started recording
  • No return behavior
Copy
void OnDemoRecordingStarted(string filename, BasePlayer player)
{
    Puts("OnDemoRecordingStarted works!");
}
OnDemoRecordingStop
  • Called right before a demo of a player stops recording
  • Returning a non-null value overrides default behavior
Copy
object OnDemoRecordingStop(string filename, BasePlayer player)
{
    Puts("OnDemoRecordingStop works!");
    return null;
}
OnDemoRecordingStopped
  • Called after a demo of a player has stopped recording
  • No return behavior
Copy
void OnDemoRecordingStopped(string filename, BasePlayer player)
{
    Puts("OnDemoRecordingStopped works!");
}
OnLootNetworkUpdate
  • Called when a player is trying to loot a container or a container they are looting has changed its contents
  • Returning a non-null value overrides default behavior
Copy
object OnLootNetworkUpdate(PlayerLoot loot)
{
    Puts("OnLootNetworkUpdate works!");
    return null;
}
OnInventoryNetworkUpdate
  • Called after a player's inventory contents have changed, before it is sent over the network to one or more clients
  • Returning a non-null value overrides default behavior
Copy
object OnInventoryNetworkUpdate(PlayerInventory inventory, ItemContainer container, ProtoBuf.UpdateItemContainer updateItemContainer, PlayerInventory.Type type, PlayerInventory.PlayerInventory.NetworkInventoryMode networkInventoryMode)
{
    Puts("OnInventoryNetworkUpdate works!");
    return null;
}
OnPlayerAddModifiers
  • Called after a player consumes an item such as tea that is about to apply modifiers
  • Returning a non-null value overrides default behavior (prevents the modifiers from being applied)
Copy
object OnPlayerAddModifiers(BasePlayer player, Item item, ItemModConsumable consumable)
{
    Puts("OnPlayerAddModifiers works!");
    return null;
}
OnThreatLevelUpdate
  • Called when a player's threat level is about to be updated
  • Returning a non-null value cancels default behavior
Copy
object OnThreatLevelUpdate(BasePlayer player)
{
    Puts("OnThreatLevelUpdate works!");
    return null;
}
CanUseGesture
  • Called when a player attempts to use a gesture
  • Returning true or false overrides default behavior
Copy
bool? CanUseGesture(BasePlayer player, GestureConfig gesture)
{
    Puts("CanUseGesture works!");
    return null;
}
OnCentralizedBanCheck
  • Called when a player is about to be checked in the centralized ban database
  • Returning a non-null value cancels default behavior
Copy
object OnCentralizedBanCheck(Network.Connection connection)
{
    Puts("OnCentralizedBanCheck works!");
    return null;
}
OnClientCommand
  • Useful for intercepting players' commands before their handling
  • Called before OnPlayerCommand and OnUserCommand
  • Returning a non-null value overrides default behavior
Copy
object OnClientCommand(Connection connection, string command)
{
    Puts("OnClientCommand works!");
    return null;
}
OnCorpsePopulate
  • Called when an NPC player corpse is about to be populated with loot
  • Returning a BaseCorpse overrides default behavior
Copy
BaseCorpse OnCorpsePopulate(BasePlayer npcPlayer, BaseCorpse corpse)
{
    Puts("OnCorpsePopulate works!");
    return null;
}
CanSetRelationship
  • Called when a player's relationship with another is about to be updated
  • Returning true or false overrides default behavior
Copy
bool? CanSetRelationship(BasePlayer player, BasePlayer otherPlayer, RelationshipManager.RelationshipType relationshipType, int weight)
{
    Puts("CanSetRelationship works!");
    return null;
}

Entity Hooks

CanBradleyApcTarget
  • Called when an APC targets an entity
  • Returning true or false overrides default behavior
Copy
bool CanBradleyApcTarget(BradleyAPC apc, BaseEntity entity)
{
    Puts("CanBradleyApcTarget works!");
    return true;
}
OnNpcPlayerResume
  • Useful for canceling the invoke of TryForceToNavmesh
  • Returning a non-null value cancels default behavior
Copy
object OnNpcPlayerResume(NPCPlayerApex npc)
{
    Puts("OnNpcPlayerResume works!");
    return null;
}
OnNpcDestinationSet
  • Useful for canceling the destination change on NPCs
  • Returning a non-null value cancels default behavior
Copy
object OnNpcDestinationSet(NPCPlayerApex npc, Vector3 newPosition)
{
    Puts("OnNpcDestinationSet works!");
    return null;
}
OnNpcStopMoving
  • Useful for denying the move stop of NPCs
  • Returning a non-null value cancels default behavior
Copy
object OnNpcStopMoving(NPCPlayerApex npc)
{
    Puts("OnNpcStopMoving works!");
    return null;
}
OnEntityMarkHostile
  • Useful for denying marking the entity hostile
  • Returning a non-null value cancels default behavior
Copy
object OnEntityMarkHostile(BaseCombatEntity entity, float duration)
{
    Puts("OnEntityMarkHostile works!");
    return null;
}
CanEntityBeHostile
  • Useful for overriding hostility of an entity
  • Returning a non-null value overrides default behavior
Copy
object CanEntityBeHostile(BaseCombatEntity entity)
{
    Puts("CanEntityBeHostile works!");
    return null;
}
CanSamSiteShoot
  • Useful for canceling the shoot of SamSite
  • Returning a non-null value cancels default behavior
Copy
object CanSamSiteShoot(SamSite samSite)
{
    Puts("CanSamSiteShoot works!");
    return null;
}
OnDieselEngineToggle
  • Called when a player is trying to toggle diesel engine
  • Returning a non-null value cancels default behavior
Copy
object OnDieselEngineToggle(DieselEngine engine, BasePlayer player)
{
    Puts("OnDieselEngineToggle works!");
    return null;
}
OnDieselEngineToggled
  • Called when diesel engine is toggled
  • No return behavior
Copy
void OnDieselEngineToggled(DieselEngine engine)
{
    Puts("OnDieselEngineToggled works!");
}
OnExcavatorMiningToggled
  • Called when excavator mining arm is toggled
  • No return behavior
Copy
void OnExcavatorMiningToggled(ExcavatorArm arm)
{
    Puts("OnExcavatorMiningToggled works!");
}
OnExcavatorGather
  • Called right before moving gathered resource to container
  • Returning a non-null value cancels default behavior
Copy
object OnExcavatorGather(ExcavatorArm arm, Item item)
{
    Puts("OnExcavatorGather works!");
    return null;
}
OnExcavatorResourceSet
  • Called when a player is trying to set a new resource target
  • Returning a non-null value cancels default behavior
Copy
object OnExcavatorResourceSet(ExcavatorArm arm, string resourceName, BasePlayer player)
{
    Puts("OnExcavatorResourceSet works!");
    return null;
}
OnInputUpdate
  • Called when an input of IOEntity is updated
  • Returning a non-null value cancels default behavior
Copy
object OnInputUpdate(IOEntity entity, int inputAmount, int slot)
{
    Puts("OnInputUpdate works!");
    return null;
}
OnOutputUpdate
  • Called when outputs of IOEntity are updated
  • Returning a non-null value cancels default behavior
Copy
object OnOutputUpdate(IOEntity entity)
{
    Puts("OnOutputUpdate works!");
    return null;
}
OnButtonPress
  • Called when a player is trying to press a button
  • Returning a non-null value cancels default behavior
Copy
object OnButtonPress(PressButton button, BasePlayer player)
{
    Puts("OnButtonPress works!");
    return null;
}
OnShopAcceptClick
  • Called when a player is trying to accept a trade in ShopFront
  • Returning a non-null value cancels default behavior
Copy
object OnShopAcceptClick(ShopFront entity, BasePlayer player)
{
    Puts("OnShopAcceptClick works!");
    return null;
}
OnShopCancelClick
  • Called when a player is cancelling a trade
  • Returning a non-null value cancels default behavior
Copy
object OnShopCancelClick(ShopFront entity, BasePlayer player)
{
    Puts("OnShopCancelClick works!");
    return null;
}
OnShopCompleteTrade
  • Called before the trade is completed in ShopFront
  • Returning a non-null value cancels default behavior
Copy
object OnShopCompleteTrade(ShopFront entity)
{
    Puts("OnShopCompleteTrade works!");
    return null;
}
OnSamSiteTarget
  • Called before last target visible time is updated
  • Returning a non-null value cancels default behavior
Copy
object OnSamSiteTarget(SamSite samSite, BaseCombatEntity target)
{
    Puts("OnSamSiteTarget works!");
    return null;
}
OnHelicopterStrafeEnter
  • Called when helicopter is entering strafe
  • Returning a non-null value cancels default behavior
Copy
object OnHelicopterStrafeEnter(PatrolHelicopterAI helicopter, Vector3 strafePosition)
{
    Puts("OnHelicopterStrafeEnter works!");
    return null;
}
OnSupplyDropLanded
  • Called after Supply Drop has landed
  • No return behavior
Copy
void OnSupplyDropLanded(SupplyDrop entity)
{
    Puts("OnSupplyDropLanded works!");
}
OnEntityStabilityCheck
  • Called when stability of an entity is checked
  • Returning a non-null value cancels default behavior
Copy
object OnEntityStabilityCheck(StabilityEntity entity)
{
    Puts("OnEntityStabilityCheck works!");
    return null;
}
OnBuildingPrivilege
  • Useful for overriding a building privilege on specific entities and etc.
  • Returning BuildingPrivlidge value overrides default behavior
Copy
BuildingPrivlidge OnBuildingPrivilege(BaseEntity entity, OBB obb)
{
    Puts($"Getting a building privilege for {entity.ShortPrefabName}!");
    return null;
}
OnHorseLead
  • Called when a player tries to lead a horse
  • Returning a non-null value overrides default behavior
Copy
object OnHorseLead(BaseRidableAnimal animal, BasePlayer player)
{
    Puts($"{player.displayName} tries to lead {animal.ShortPrefabName}");
    return null;
}
OnHorseHitch
  • Called just before setting the hitch
  • Returning a non-null value overrides default behavior
Copy
object OnHorseHitch(RidableHorse horse, HitchTrough hitch)
{
    Puts("OnHorseHitch works!");
    return null;
}
OnWireConnect
  • Useful for preventing a wire to connect
  • Returning a non-null value cancels default behavior
Copy
object OnWireConnect(BasePlayer player, IOEntity entity1, int inputs, IOEntity entity2, int outputs)
{
    Puts("OnWireConnect works!");
    return null;
}
OnWireClear
  • Useful for preventing clearing wires
  • Returning a non-null value cancels default behavior
Copy
object OnWireClear(BasePlayer player, IOEntity entity1, int connected, IOEntity entity2, bool flag)
{
    Puts("OnWireClear works!");
    return null;
}
OnReactiveTargetReset
  • Called after the reactive target is reset
  • No return behaviour
Copy
void OnReactiveTargetReset(ReactiveTarget target)
{
    Puts("OnReactiveTargetReset works!");
}
OnMlrsFire
  • Called just before the MLRS is fired.
  • Returning a non-null value overrides default behaviour.
Copy
object OnMlrsFire(MLRS mlrs, BasePlayer player)
{
    Puts("OnMlrsFire works!");
    return null;
}
OnMlrsFired
  • Called just after the MLRS has been fired.
  • No return behaviour.
Copy
void OnMlrsFired(MLRS mlrs, BasePlayer player)
{
    Puts("OnMlrsFired works!");
}
OnTurretAssign
  • Called when a player attempts to authorize another player on a turret
  • Returning a non-null value cancels default behavior
Copy
object OnTurretAssign(AutoTurret turret, ulong targetId, BasePlayer initiator)
{
    Puts("{targetId} has been authorized on a turret by {initiator.displayName}");
    return null;
}
OnTurretAssigned
  • Called when a player has been authorized on a turret by another player
  • No return behaviour
Copy
void OnTurretAssigned(AutoTurret turret, ulong targetId, BasePlayer initiator)
{
    Puts($"{targetId} has been authorized on a turret by {initiator.displayName});
}
CanHelicopterDropCrate
  • Called when a CH47 helicopter attempts to drop a crate
  • Returning true or false overrides default behavior
Copy
bool CanHelicopterDropCrate(CH47HelicopterAIController heli)
{
    Puts("CanHelicopterDropCrate works!");
    return true;
}
OnEngineLoadoutRefresh
  • Called before engine loadout data is refreshed
  • Returning a non-null value overrides default behaviour
Copy
object OnEngineLoadoutRefresh(EngineStorage storage)
{
    Puts("OnEngineLoadoutRefresh works!");
    return null;
}
CanHelicopterStrafe
  • Called when a patrol helicopter attempts to strafe
  • Returning true or false overrides default behavior
Copy
bool CanHelicopterStrafe(PatrolHelicopterAI heli)
{
    Puts("CanHelicopterStrafe works!");
    return true;
}
CanHelicopterStrafeTarget
  • Called when a patrol helicopter attempts to target a player to attack while strafing
  • Returning true or false overrides default behavior
Copy
bool CanHelicopterStrafeTarget(PatrolHelicopterAI entity, BasePlayer target)
{
    Puts("CanHelicopterStrafeTarget works!");
    return true;
}
CanHelicopterTarget
  • Called when a patrol helicopter attempts to target a player to attack
  • Returning true or false overrides default behavior
Copy
bool CanHelicopterTarget(PatrolHelicopterAI heli, BasePlayer player)
{
    Puts("CanHelicopterTarget works!");
    return true;
}
CanHelicopterUseNapalm
  • Called when a patrol helicopter attempts to use napalm
  • Returning true or false overrides default behavior
Copy
bool CanHelicopterUseNapalm(PatrolHelicopterAI heli)
{
    Puts("CanHelicopterUseNapalm works!");
    return true;
}
CanNetworkTo
  • Called when an entity attempts to network with a player
  • For better performance, avoid using heavy calculations in this hook.
  • Returning true or false overrides default behavior
Copy
bool CanNetworkTo(BaseNetworkable entity, BasePlayer target)
{
    Puts("CanNetworkTo works!");
    return true;
}
OnHelicopterRetire
  • Called before the patrol helicopter starts leaving the map.
  • Returning a non-null value overrides default behaviour.
Copy
object OnHelicopterRetire(PatrolHelicopterAI helicopter)
{
    Puts("OnHelicopterRetire works!");
    return null;
}
CanNpcAttack
  • Called when a NPC attempts to attack another entity
  • Returning true or false overrides default behavior
Copy
bool CanNpcAttack(BaseNpc npc, BaseEntity target)
{
    Puts("CanNpcAttack works!");
    return true;
}
CanNpcEat
  • Called when a NPC attempts to eat another entity
  • Returning true or false overrides default behavior
Copy
bool CanNpcEat(BaseNpc npc, BaseEntity target)
{
    Puts("CanNpcEat works!");
    return true;
}
CanRecycle
  • Called when the recycler attempts to recycle an item
  • Returning true or false overrides default behavior
Copy
bool CanRecycle(Recycler recycler, Item item)
{
    Puts("CanRecycle works!");
    return true;
}
OnAirdrop
  • Called when an airdrop has been called
  • No return behavior
Copy
void OnAirdrop(CargoPlane plane, Vector3 dropPosition)
{
    Puts("OnAirdrop works!");
}
OnBradleyApcInitialize
  • Called when an APC initializes
  • Returning a non-null value overrides default behavior
Copy
object OnBradleyApcInitialize(BradleyAPC apc)
{
    Puts("OnBradleyApcInitialize works!");
    return null;
}
OnBradleyApcHunt
  • Called when an APC starts hunting
  • Returning a non-null value overrides default behavior
Copy
object OnBradleyApcHunt(BradleyAPC apc)
{
    Puts("OnBradleyApcHunt works!");
    return null;
}
OnBradleyApcPatrol
  • Called when an APC is starts patrolling
  • Returning a non-null value overrides default behavior
Copy
object OnBradleyApcPatrol(BradleyAPC apc)
{
    Puts("OnBradleyApcPatrol works!");
    return null;
}
OnContainerDropItems
  • Called when a container is destroyed and all items are about to be dropped
  • Returning a non-null value overrides default behavior
Copy
object OnContainerDropItems(ItemContainer container)
{
    Puts("OnContainerDropItems works!");
    return null;
}
OnCrateDropped
  • Called when a locked crate from the CH47 (Chinook) has dropped
  • No return behavior
Copy
void OnCrateDropped(HackableLockedCrate crate)
{
    Puts("OnCrateDropped works!");
}
OnCrateHack
  • Called when a player starts hacking a locked crate
  • No return behavior
Copy
void OnCrateHack(HackableLockedCrate crate)
{
    Puts("OnCrateHack works!");
}
OnCrateHackEnd
  • Called when a player stops hacking a locked crate
  • No return behavior
Copy
void OnCrateHackEnd(HackableLockedCrate crate)
{
    Puts("OnCrateHackEnd works!");
}
OnCrateLanded
  • Called when a locked crate from the CH47 (Chinook) has landed
  • No return behavior
Copy
void OnCrateLanded(HackableLockedCrate crate)
{
    Puts("OnCrateLanded works!");
}
OnEntityDeath
  • HitInfo might be null, check it before use
  • Editing hitInfo has no effect because the death has already happened
  • No return behavior
Copy
void OnEntityDeath(BaseCombatEntity entity, HitInfo info)
{
    Puts("OnEntityDeath works!");
}
OnEntityDismounted
  • Called when an entity is dismounted by a player
  • No return behavior
Copy
void OnEntityDismounted(BaseMountable entity, BasePlayer player)
{
    Puts("OnEntityDismounted works!");
}
OnEntityEnter
  • Called when an entity enters a trigger (water area, radiation zone, hurt zone, etc.)
  • No return behavior
Copy
void OnEntityEnter(TriggerBase trigger, BaseEntity entity)
{
    Puts("OnEntityEnter works!");
}
OnEntityGroundMissing
  • Called when an entity (sleepingbag, sign, furnace,...) is going to be destroyed because the buildingblock it is on was removed
  • Returning a non-null value overrides default behavior
Copy
object OnEntityGroundMissing(BaseEntity entity)
{
    Puts("OnEntityGroundMissing works!");
    return null;
}
OnEntityKill
  • Called when an entity is destroyed
  • Returning a non-null value overrides default behavior
Copy
object OnEntityKill(BaseNetworkable entity)
{
    Puts("OnEntityKill works!");
    return null;
}
OnEntityLeave
  • Called when an entity leaves a trigger (water area, radiation zone, hurt zone, etc.)
  • No return behavior
Copy
void OnEntityLeave(TriggerBase trigger, BaseEntity entity)
{
    Puts("OnEntityLeave works!");
}
OnEntityMounted
  • Called when an entity is mounted by a player
  • No return behavior
Copy
void OnEntityMounted(BaseMountable entity, BasePlayer player)
{
    Puts("OnEntityMounted works!");
}
OnEntitySpawned
  • Called after any networked entity has spawned (including trees)
  • No return behavior
Copy
void OnEntitySpawned(BaseNetworkable entity)
{
    Puts("OnEntitySpawned works!");
}
OnEntityTakeDamage
  • Alternatively, modify the HitInfo object to change the damage
  • It should be okay to set the damage to 0, but if you don't return non-null, the player's client will receive a damage indicator (if entity is a BasePlayer)
  • HitInfo has all kinds of useful things in it, such as Weapon, damageProperties or damageTypes
Copy
object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
{
    Puts("OnEntityTakeDamage works!");
    return null;
}
OnFireBallDamage
  • Called when a fire ball does damage to another entity
  • No return behavior
Copy
void OnFireBallDamage(FireBall fire, BaseCombatEntity entity, HitInfo info)
{
    Puts("OnFireBallDamage works!");
}
OnFireBallSpread
  • Called when a fire ball fire spreads
  • No return behavior
Copy
void OnFireBallSpread(FireBall ball, BaseEntity fire)
{
    Puts("OnFireBallSpread works!");
}
OnFlameExplosion
  • Called when a flame explodes
  • No return behavior
Copy
void OnFlameExplosion(FlameExplosive explosive, BaseEntity flame)
{
    Puts("OnFlameExplosion works!");
}
OnHelicopterAttack
  • Called when a CH47 helicopter is being attacked
  • Returning a non-null value overrides default behavior
Copy
object OnHelicopterAttack(CH47HelicopterAIController heli)
{
    Puts("OnHelicopterAttack works!");
    return null;
}
OnHelicopterDropCrate
  • Called when a CH47 helicopter is dropping a crate
  • Returning a non-null value overrides default behavior
Copy
object OnHelicopterDropCrate(CH47HelicopterAIController heli)
{
    Puts("OnHelicopterDropCrate works!");
    return null;
}
OnHelicopterDropDoorOpen
  • Called when a CH47 helicopter is opening its drop door
  • Returning a non-null value overrides default behavior
Copy
object OnHelicopterDropDoorOpen(CH47HelicopterAIController heli)
{
    Puts("OnHelicopterDropDoorOpen works!");
    return null;
}
OnHelicopterKilled
  • Called when a CH47 helicopter is going to be killed
  • Returning a non-null value overrides default behavior
Copy
object OnHelicopterKilled(CH47HelicopterAIController heli)
{
    Puts("OnHelicopterKilled works!");
    return null;
}
OnHelicopterOutOfCrates
  • Called when a CH47 helicopter runs out of crates
  • Returning true or false overrides default behavior
Copy
bool? OnHelicopterOutOfCrates(CH47HelicopterAIController heli)
{
    Puts("OnHelicopterOutOfCrates works!");
    return null;
}
OnHelicopterTarget
  • Called when a helicopter turret attempts to target an entity
  • Returning a non-null value overrides default behavior
Copy
object OnHelicopterTarget(HelicopterTurret turret, BaseCombatEntity entity)
{
    Puts("OnHelicopterTarget works!");
    return null;
}
OnLiftUse
  • Called when a player calls a lift or procedural lift
  • Returning a non-null value overrides default behavior
Copy
object OnLiftUse(Lift lift, BasePlayer player)
{
    Puts("OnLiftUse works!");
    return null;
}
Copy
object OnLiftUse(ProceduralLift lift, BasePlayer player)
{
    Puts("OnLiftUse works!");
    return null;
}
OnLootSpawn
  • Called when loot spawns in a container
  • Returning a non-null value overrides default behavior
Copy
object OnLootSpawn(LootContainer container)
{
    Puts("OnLootSpawn works!");
    return null;
}
OnNpcTargetSense
  • Called when an NPC becomes aware of another entity
  • Returning a non-null value overrides default behavior
Copy
object OnNpcTargetSense(BaseEntity owner, BaseEntity entity, AIBrainSenses brainSenses)
{
    Puts("OnNpcTargetSense works!");
    return null;
}
OnNpcTarget
  • Called when an NPC targets another entity
  • Returning a non-null value overrides default behavior
Copy
object OnNpcTarget(BaseEntity npc, BaseEntity entity)
{
    Puts("OnNpcTarget works!");
    return null;
}
OnOvenToggle
  • Called when an oven (Campfire, Furnace,...) is turned on or off
  • Returning a non-null value overrides default behavior
Copy
object OnOvenToggle(BaseOven oven, BasePlayer player)
{
    Puts("OnOvenToggle works!");
    return null;
}
OnItemRecycle
  • Called when an item is recycled in a recycler
  • Returning a non-null value overrides default behavior
Copy
object OnItemRecycle(Item item, Recycler recycler)
{
    Puts("OnItemRecycle works!");
    return null;
}
OnOvenCook
  • Called before an oven cooks an item
  • Returning a non-null value overrides default behavior
Copy
object OnOvenCook(BaseOven oven, Item item)
{
    Puts("OnOvenCook works!");
    return null;
}
OnOvenCooked
  • Called after an oven cooks an item
  • No return behavior
Copy
void OnOvenCooked(BaseOven oven, Item item, BaseEntity slot)
{
    Puts("OnOvenCooked works!");
}
OnRecyclerToggle
  • Called when a recycler is turned on or off
  • Returning a non-null value overrides default behavior
Copy
object OnRecyclerToggle(Recycler recycler, BasePlayer player)
{
    Puts("OnRecyclerToggle works!");
    return null;
}
OnResourceDepositCreated
  • Called when a resource deposit has been created
  • No return behavior
Copy
void OnResourceDepositCreated(ResourceDepositManager.ResourceDeposit deposit)
{
    Puts("OnResourceDepositCreated works!");
}
OnShopCompleteTrade
  • Called when a shopfront trade is complete
  • Returning a non-null value overrides default behavior
Copy
object OnShopCompleteTrade(ShopFront shop, BasePlayer customer)
{
    Puts("OnShopCompleteTrade works!");
    return null;
}
OnTurretAuthorize
  • Called when a player attempts to authorize on a turret
  • Returning a non-null value overrides default behavior
Copy
object OnTurretAuthorize(AutoTurret turret, BasePlayer player)
{
    Puts("OnTurretAuthorize works!");
    return null;
}
OnTurretClearList
  • Called when a player attempts to clear an autoturret's authorized list
  • Returning a non-null value overrides default behavior
Copy
object OnTurretClearList(AutoTurret turret, BasePlayer player)
{
    Puts("OnTurretClearList works!");
    return null;
}
OnTurretDeauthorize
  • Called when a player is deauthorized on an autoturret
  • Returning a non-null value overrides default behavior
Copy
object OnTurretDeauthorize(AutoTurret turret, BasePlayer player)
{
    Puts("OnTurretDeauthorize works!");
    return null;
}
OnTurretModeToggle
  • Called when the mode of an autoturrent is toggled
  • No return behavior
Copy
void OnTurretModeToggle(AutoTurret turret)
{
    Puts("OnTurretModeToggle works!");
}
OnTurretShutdown
  • Called when an autoturret is shut down
  • Returning a non-null value overrides default behavior
Copy
object OnTurretShutdown(AutoTurret turret)
{
    Puts("OnTurretShutdown works!");
    return null;
}
OnTurretStartup
  • Called when an autoturret starts up
  • Returning a non-null value overrides default behavior
Copy
object OnTurretStartup(AutoTurret turret)
{
    Puts("OnTurretStartup works!");
    return null;
}
OnTurretTarget
  • Called when an autoturret attempts to target an entity
  • Returning a non-null value overrides default behavior
Copy
object OnTurretTarget(AutoTurret turret, BaseCombatEntity entity)
{
    Puts("OnTurretTarget works!");
    return null;
}
OnTurretToggle
  • Called when an autoturret toggles powerstate (on/off)
  • Returning a non-null value overrides default behavior
Copy
object OnTurretToggle(AutoTurret turret)
{
    Puts("OnTurretToggle works!");
    return null;
}
OnBigWheelWin
  • Called before multiplier is applied.
  • Returning non-null value overrides default behaviour.
Copy
object OnBigWheelWin(BigWheelGame bigWheel, Item scrap, BigWheelBettingTerminal terminal, int multiplier)
{
    Puts("OnBigWheelWin works!");
    return null;
}
OnBigWheelLoss
  • Called when a specific item is lost on the big wheel game
  • No return behavior
Copy
void OnBigWheelLoss(BigWheelGame wheel, Item item)
{
    Puts("OnBigWheelLoss works!");
}
OnSolarPanelSunUpdate
  • Called when a solar panel updates the amount of energy it is getting from the sun
  • Returning a non-null value overrides default behavior
Copy
object OnSolarPanelSunUpdate(SolarPanel panel, int currentEnergy)
{
    Puts("OnSolarPanelSunUpdate works!");
    return null;
}
OnBookmarkControl
  • Called when a player tries to select a bookmark at a computer station
  • Returning a non-null value overrides default behavior
Copy
object OnBookmarkControl(ComputerStation computerStation, BasePlayer player, string bookmarkName, IRemoteControllable remoteControllable)
{
    Puts("OnBookmarkControl works!");
    return null;
}
OnBookmarkControlStarted
  • Called after a player has selected a bookmark at a computer station
  • No return behavior
Copy
void OnBookmarkControlStarted(ComputerStation computerStation, BasePlayer player, string bookmarkName, IRemoteControllable remoteControllable)
{
    Puts("OnBookmarkControlStarted works!");
}
OnBookmarkDelete
  • Called when a player tries to delete a bookmark at a computer station
  • Returning a non-null value overrides default behavior
Copy
object OnBookmarkDelete(ComputerStation computerStation, BasePlayer player, string bookmarkName)
{
    Puts("OnBookmarkDelete works!");
    return null;
}
OnBookmarkAdd
  • Called when a player tries to add a bookmark at a computer station
  • Returning a non-null value overrides default behavior
Copy
object OnBookmarkAdd(ComputerStation computerStation, BasePlayer player, string bookmarkName)
{
    Puts("OnBookmarkAdd works!");
    return null;
}
OnBookmarksSendControl
  • Called when a player is being sent a list of bookmarks for a computer station
  • Returning a non-null value overrides default behavior
Copy
object OnBookmarksSendControl(ComputerStation computerStation, BasePlayer player, string bookmarks)
{
    Puts("OnBookmarksSendControl works!");
    return null;
}
OnBookmarkControlEnd
  • Called when a player tries to stop viewing/controlling an entity at a computer station
  • Returning a non-null value overrides default behavior
Copy
object OnBookmarkControlEnd(ComputerStation computerStation, BasePlayer player, BaseEntity controlledEntity)
{
    Puts("OnBookmarkControlEnd works!");
    return null;
}
OnBookmarkControlEnded
  • Called after a player has stopped viewing/controlling an entity at a computer station
  • No return behavior
Copy
void OnBookmarkControlEnded(ComputerStation computerStation, BasePlayer player, BaseEntity controlledEntity)
{
    Puts("OnBookmarkControlEnded works!");
}
OnRfBroadcasterAdd
  • Called right before an object starts broadcasting an RF frequency
  • Returning a non-null value overrides default behavior
Copy
object OnRfBroadcasterAdd(IRFObject obj, int frequency)
{
    Puts("OnRfBroadcasterAdd works!");
    return null;
}
OnRfBroadcasterAdded
  • Called right after an object has started broadcasting an RF frequency
  • No return behavior
Copy
void OnRfBroadcasterAdded(IRFObject obj, int frequency)
{
    Puts("OnRfBroadcasterAdded works!");
}
OnRfBroadcasterRemove
  • Called right before an object stops broadasting an RF frequency
  • Returning a non-null value overrides default behavior
Copy
object OnRfBroadcasterRemove(IRFObject obj, int frequency)
{
    Puts("OnRfBroadcasterRemove works!");
    return null;
}
OnRfBroadcasterRemoved
  • Called right after an object has stopped broadcasting an RF frequency
  • No return behavior
Copy
void OnRfBroadcasterRemoved(IRFObject obj, int frequency)
{
    Puts("OnRfBroadcasterRemoved works!");
}
OnRfListenerAdd
  • Called right before an object starts listening to an RF frequency
  • Returning a non-null value overrides default behavior
Copy
object OnRfListenerAdd(IRFObject obj, int frequency)
{
    Puts("OnRfListenerAdd works!");
    return null;
}
OnRfListenerAdded
  • Called right after an object has started listening to an RF frequency
  • No return behavior
Copy
void OnRfListenerAdded(IRFObject obj, int frequency)
{
    Puts("OnRfListenerAdded works!");
}
OnRfListenerRemove
  • Called right before an object stops listening to an RF frequency
  • Returning a non-null value overrides default behavior
Copy
object OnRfListenerRemove(IRFObject obj, int frequency)
{
    Puts("OnRfListenerRemove works!");
    return null;
}
OnRfListenerRemoved
  • Called right after an object has stopped listening to an RF frequency
  • No return behavior
Copy
void OnRfListenerRemoved(IRFObject obj, int frequency)
{
    Puts("OnRfListenerRemoved works!");
}
OnSleepingBagDestroy
  • Called when a player tries to remove a sleeping bag from their respawn screen
  • Returning a non-null value overrides default behavior
Copy
object OnSleepingBagDestroy(SleepingBag sleepingBag, BasePlayer player)
{
    Puts("OnSleepingBagDestroy works!");
    return null;
}
OnRfFrequencyChange
  • Called when a player tries to change the frequency of an RF broadcaster or receiver
  • Returning a non-null value overrides default behavior
  • Useful for preventing particular reserved frequencies from being selected
Copy
object OnRfFrequencyChange(IRFObject obj, int frequency, BasePlayer player)
{
    Puts("OnRfFrequencyChange works!");
    return null;
}
OnRfFrequencyChanged
  • Called after a player has changed the frequency of an RF broadcaster or receiver
  • No return behavior
Copy
void OnRfFrequencyChanged(IRFObject obj, int frequency, BasePlayer player)
{
    Puts("OnRfFrequencyChanged works!");
}
OnSleepingBagDestroyed
  • Called after a player removes a sleeping bag from their respawn screen
  • No return behavior
Copy
void OnSleepingBagDestroyed(SleepingBag sleepingBag, BasePlayer player)
{
    Puts("OnSleepingBagDestroyed works!");
}
OnNetworkSubscriptionsUpdate
  • Called after the Rust has determined which network groups to subscribe a player to (`groupsToAdd`), and which network groups to unsubscribe the player from (`groupsToRemove`)
  • Returning a non-null value prevents Rust from applying the proposed subscription changes
  • This hook is useful for situations where you want to subscribe a player to a network group that is outside their network range -- To do so, you can prevent Rust from automatically unsubscribing them by removing that group from the `groupsToRemove` list
Copy
object OnNetworkSubscriptionsUpdate(Network.Networkable networkable, List<Network.Visibility.Group> groupsToAdd, List<Network.Visibility.Group> groupsToRemove)
{
    Puts("OnNetworkSubscriptionsUpdate works!");
}
OnBookmarkInput
  • Called when input is received from a player who is using a computer station with a bookmark selected
  • Returning a non-null value overrides default behavior
Copy
object OnBookmarkInput(ComputerStation computerStation, BasePlayer player, InputState inputState)
{
    Puts("OnBookmarkInput works!");
    return null;
}
OnEntityControl
  • Called when a player tries to remote control an entity
  • Returning true or false overrides default behavior
Copy
object OnEntityControl(IRemoteControllable entity)
{
    Puts("OnEntityControl works!");
    return null;
}
OnTurretRotate
  • Called when a player tries to rotate an auto turret
  • Returning a non-null value overrides default behavior
Copy
object OnTurretRotate(AutoTurret turret, BasePlayer player)
{
    Puts("OnTurretRotate works!");
    return null;
}
OnCounterTargetChange
  • Called when a player tries to change the target number of a power counter
  • Returning a non-null value overrides default behavior
Copy
object OnCounterTargetChange(PowerCounter counter, BasePlayer player, int targetNumber)
{
    Puts("OnCounterTargetChange works!");
    return null;
}
OnCounterModeToggle
  • Called when a player ties to toggle a power counter between modes
  • Returning a non-null value overrides default behavior
Copy
object OnCounterModeToggle(PowerCounter counter, BasePlayer player, bool mode)
{
    Puts("OnCounterModeToggle works!");
    return null;
}
OnSwitchToggle
  • Called when a player tries to switch and ElectricSwitch or FuelGenerator
  • Returning a non-null value cancels default behavior
Copy
object OnSwitchToggle(IOEntity entity, BasePlayer player)
{
    Puts("OnSwitchToggle works!");
    return null;
}
OnSwitchToggled
  • Called right after a player switches an ElectricSwitch or FuelGenerator
  • No return behavior
Copy
void OnSwitchToggled(IOEntity entity, BasePlayer player)
{
    Puts("OnSwitchToggled works!");
}
OnEntityDestroy
  • Called right before a CH47Helicopter or BradleyAPC is destroyed
  • Returning a non-null value overrides default behavior
Copy
object OnEntityDestroy(BaseCombatEntity entity)
{
    Puts("OnEntityDestroy works!");
    return null;
}
OnElevatorButtonPress
  • Called when a player presses a button on an elevator lift
  • Returning a non-null value overrides default behavior
Copy
object OnElevatorButtonPress(ElevatorLift lift, BasePlayer player, Elevator.Direction direction, bool toTopOrBottom)
{
    Puts("OnElevatorButtonPress works!");
    return null;
}
OnElevatorCall
  • Called when an elevator lift is called to a specific floor by electricity
  • Returning a non-null value overrides default behavior
Copy
object OnElevatorCall(Elevator elevator, Elevator topElevator)
{
    Puts("OnElevatorCall works!");
    return null;
}
OnElevatorMove
  • Called right before an elevator starts moving to the target floor
  • Returning a non-null value overrides default behavior
Copy
object OnElevatorMove(Elevator topElevator, int targetFloor)
{
    Puts("OnElevatorMove works!");
    return null;
}
CanSwapToSeat
  • Called when a player tries to switch seats, to determine whether each seat is eligible to be swapped to
  • Returning true or false overrides default behavior
Copy
bool CanSwapToSeat(BasePlayer player, BaseMountable mountable)
{
    Puts("CanSwapToSeat works!");
    return true;
}
OnRidableAnimalClaim
  • Called when a player tries to claim a horse
  • Returning a non-null value overrides default behavior
Copy
object OnRidableAnimalClaim(BaseRidableAnimal animal, BasePlayer player)
{
    Puts("OnRidableAnimalClaim works!");
    return null;
}
OnRidableAnimalClaimed
  • Called after a player has claimed a horse
  • No return behavior
Copy
void OnRidableAnimalClaimed(BaseRidableAnimal animal, BasePlayer player)
{
    Puts("OnRidableAnimalClaimed works!");
}
OnEntitySaved
  • Called after a BaseNetworkable has been saved to a ProtoBuf object and is about to be serialized to a network stream or network cache
  • No return behavior
Copy
void OnEntitySaved(BaseNetworkable entity, BaseNetworkable.SaveInfo saveInfo)
{
    Puts("OnEntitySaved works!");
}
OnEntitySnapshot
  • Called when an entity snapshot is about to be sent to a client connection
  • Returning a non-null value overrides default behavior
Copy
object OnEntitySnapshot(BaseNetworkable entity, Connection connection)
{
    Puts("OnEntitySnapshot works!");
    return null;
}
OnIORefCleared
  • Called after a wire has been disconnected from an electrical entity, such as when its connected entity was destroyed or when a player removed the wire
  • No return behavior
Copy
void OnIORefCleared(IOEntity.IORef ioRef, IOEntity ioEntity)
{
    Puts("OnIORefCleared works!");
}
OnEntityFlagsNetworkUpdate
  • Called after an entity's flags have been updated on the server, before they are sent over the network
  • Returning a non-null value overrides default behavior
Copy
object OnEntityFlagsNetworkUpdate(BaseEntity entity)
{
    Puts("OnEntityFlagsNetworkUpdate works!");
    return null;
}
OnSupplyDropDropped
  • Called right after a cargo plane has dropped a supply drop
  • No return behavior
Copy
void OnSupplyDropDropped(SupplyDrop supplyDrop, CargoPlane cargoPlane)
{
    Puts("OnSupplyDropDropped works!");
}
OnCargoPlaneSignaled
  • Called right after a supply signal has called a cargo plane
  • No return behavior
Copy
void OnCargoPlaneSignaled(CargoPlane cargoPlane, SupplySignal supplySignal)
{
    Puts("OnCargoPlaneSignaled works!");
}
OnWaterPurify
  • Called when salt water is about to be converted to fresh water in a water purifier
  • Returning a non-null value cancels default behavior
Copy
object OnWaterPurify(WaterPurifier waterPurifier, float timeCooked)
{
    Puts("OnWaterPurify works!");
    return null;
}
OnWaterPurified
  • Called after salt water has been converted to fresh water in a water purifier
  • No return behavior
Copy
void OnWaterPurified(WaterPurifier waterPurifier, float timeCooked)
{
    Puts("OnWaterPurified works!");
}
OnSleepingBagValidCheck
  • Called when determining if a sleeping bag is a valid respawn location for a player
  • Useful in conjunction with OnRespawnInformationGiven since a custom sleeping bag will need to pass this check
  • Returning true or false overrides default behavior
Copy
bool? OnSleepingBagValidCheck(SleepingBag bag, ulong targetPlayerID, bool ignoreTimers)
{
    Puts("OnSleepingBagValidCheck works!");
    return null;
}
OnCCTVDirectionChange
  • Called when a player attempts to change the direction of a CCTV camera to face them
  • Returning a non-null value cancels default behavior
Copy
object OnCCTVDirectionChange(CCTV_RC camera, BasePlayer player)
{
    Puts("OnCCTVDirectionChange works!");
    return null;
}
OnWaterCollect
  • Called when a water catcher is about to collect water
  • Returning a non-null value cancels default behavior
Copy
object OnWaterCollect(WaterCatcher waterCatcher)
{
    Puts("OnWaterCollect works!");
    return null;
}
OnLiquidVesselFill
  • Called when a player is attempting to fill a liquid vessel
  • Returning a non-null value cancels default behavior
Copy
object OnLiquidVesselFill(BaseLiquidVessel liquidVessel, BasePlayer player, LiquidContainer facingLiquidContainer)
{
    Puts("OnLiquidVesselFill works!");
    return null;
}
OnLockerSwap
  • Called when a player clicks the "Swap" button while viewing a locker interface
  • Returning non-null value overrides default behavior
Copy
object OnLockerSwap(Locker locker, int startIndex, BasePlayer player)
{
    Puts("OnLockerSwap works!");
    return null;
}
CanLockerAcceptItem
  • Called before an item is attempted to be placed inside a locker
  • Returning true or false overrides default behavior
Copy
object CanLockerAcceptItem(Locker locker, Item item, int targetPos)
{
    Puts("CanLockerAcceptItem works!");
    return null;
}

Item Hooks

CanAcceptItem
  • Called when attempting to put an item in a container
  • Returning CanAcceptResult value overrides default behavior
Copy
ItemContainer.CanAcceptResult? CanAcceptItem(ItemContainer container, Item item, int targetPos)
{
    Puts("CanAcceptItem works!");
    return null;
}
OnBackpackDrop
  • Called just before a backpack is dropped from a player on death.
  • Return non-null to override default behaviour.
Copy
object OnBackpackDrop(Item backpack, BasePlayer player)
{
    Puts("OnBackpackDrop works!");
    return null;
}
OnCardSwipe
  • Called when a player is trying to swipe a card
  • Returning a non-null value cancels default behavior
Copy
object OnCardSwipe(CardReader cardReader, Keycard card, BasePlayer player)
{
    Puts("OnCardSwipe works!");
    return null;
}
OnItemRemove
  • Called before an item is destroyed
  • Return a non-null value stop item from being destroyed
Copy
// Example that stops item from being destroyed

object OnItemRemove(Item item)
{
    Puts("OnItemRemove works!");
    return null;
}
Copy
// Example that does not stop item from being destroyed

void OnItemRemove(Item item)
{
    Puts("OnItemRemove works!");
}
OnMapImageUpdated
  • Called when player updates map item's image
  • Useful for executing any action when map image is updated
  • No return behavior
Copy
void OnMapImageUpdated()
{
    Puts("OnMapImageUpdated works!");
}
CanDropActiveItem
  • Called when a player attempts to drop their active item
  • Returning true or false overrides default behavior
Copy
bool CanDropActiveItem(BasePlayer player)
{
    Puts("CanDropActiveItem works!");
    return true;
}
CanCombineDroppedItem
  • Called when an item is dropped on another item
  • Returning a non-null value overwrites command arguments
Copy
object CanCombineDroppedItem(DroppedItem item, DroppedItem targetItem)
{
    Puts("CanCombineDroppedItem works!");
    return null;
}
CanMoveItem
  • Called when moving an item from one inventory slot to another
  • Returning a non-null value overrides default behavior
Copy
object CanMoveItem(Item item, PlayerInventory playerLoot, ItemContainerId targetContainer, int targetSlot, int amount, ItemMoveModifier itemMoveModifier)
{
    Puts("CanMoveItem works!");
    return null;
}
CanStackItem
  • Called when moving an item onto another item
  • Returning true or false overrides default behavior
Copy
bool CanStackItem(Item item, Item targetItem)
{
    Puts("CanStackItem works!");
    return true;
}
OnFuelConsumed
  • Called after fuel is used (furnace, lanterns, camp fires, etc.)
  • No return behavior
Copy
void OnFuelConsumed(BaseOven oven, Item fuel, ItemModBurnable burnable)
{
    Puts("OnFuelConsumed works!");
}
OnFuelConsume
  • Called right before fuel is used (furnace, lanterns, camp fires, etc.)
  • Returning a non-null value overrides default behavior
Copy
object OnFuelConsume(BaseOven oven, Item fuel, ItemModBurnable burnable)
{
    Puts("OnFuelConsume works!");
    return null;
}
OnFindBurnable
  • Called when looking for fuel for the oven
  • Returning an Item overrides default behavior
Copy
Item OnFindBurnable(BaseOven oven)
{
    Puts("OnFindBurnable works!");
    return null;
}
OnHealingItemUse
  • Called when a player attempts to use a medical tool
  • Returning a non-null value overrides default behavior
Copy
object OnHealingItemUse(MedicalTool tool, BasePlayer player)
{
    Puts("OnHealingItemUse works!");
    return null;
}
OnItemAction
  • Called when a button is clicked on an item in the inventory (drop, unwrap, ...)
  • Returning a non-null value overrides default behavior
Copy
object OnItemAction(Item item, string action, BasePlayer player)
{
    Puts("OnItemAction works!");
    return null;
}
OnItemAddedToContainer
  • Called right after an item was added to a container
  • An entire stack has to be created, not just adding more wood to a wood stack for example
  • No return behavior
Copy
void OnItemAddedToContainer(ItemContainer container, Item item)
{
    Puts("OnItemAddedToContainer works!");
}
OnItemCraft
  • Called just before an item is added to the crafting queue
  • Returning true or false overrides default behavior
Copy
object OnItemCraft(ItemCraftTask task, BasePlayer player, Item item)
{
    Puts("OnItemCraft works!");
    return null;
}
OnItemCraftCancelled
  • Called before an item has been crafted
  • No return behavior
Copy
void OnItemCraftCancelled(ItemCraftTask task)
{
    Puts("OnItemCraftCancelled works!");
}
OnItemCraftFinished
  • Called right after an item has been crafted
  • No return behavior
Copy
void OnItemCraftFinished(ItemCraftTask task, Item item)
{
    Puts("OnItemCraftFinished works!");
}
OnItemDeployed
  • Called right after an item has been deployed
  • No return behavior
Copy
void OnItemDeployed(Deployer deployer, BaseEntity entity, BaseEntity slotEntity)
{
    Puts("OnItemDeployed works!");
}
OnItemDropped
  • Called right after an item has been dropped
  • No return behavior
Copy
void OnItemDropped(Item item, BaseEntity entity)
{
    Puts("OnItemDropped works!");
}
OnItemPickup
  • Called right after an item has been picked up
  • Returning a non-null value overrides default behavior
Copy
object OnItemPickup(Item item, BasePlayer player)
{
    Puts("OnItemPickup works!");
    return null;
}
OnItemRemovedFromContainer
  • Called right after an item was removed from a container
  • The entire stack has to be removed for this to be called, not just a little bit
  • No return behavior
Copy
void OnItemRemovedFromContainer(ItemContainer container, Item item)
{
    Puts("OnItemRemovedFromContainer works!");
}
OnItemRepair
  • Called right before an item is repaired
  • Returning a non-null value overrides default behavior
Copy
object OnItemRepair(BasePlayer player, Item item)
{
    Puts("OnItemRepair works!");
    return null;
}
OnItemResearch
  • Called right before a player begins to research an item
  • No return behavior
Copy
void OnItemResearch(ResearchTable table, Item targetItem, BasePlayer player)
{
    Puts("OnItemResearch works!");
}
OnItemResearched
  • Called right before a player finishes researching an item
  • Returning a float will affect if researching is successful or not
Copy
float OnItemResearched(ResearchTable table, float chance)
{
    Puts("OnItemResearched works!");
    return 1;
}
OnResearchCostDetermine
  • Called when an item is being scrapped at a research table or when a blueprint is being unlocked in a tech tree
  • Returning a numeric value (int) overrides the default value
Copy
object OnResearchCostDetermine(Item item, ResearchTable researchTable)
{
    Puts("OnResearchCostDetermine works!");
    return null;
}
Copy
object OnResearchCostDetermine(ItemDefinition itemDefinition)
{
    Puts("OnResearchCostDetermine works!");
    return null;
}
OnItemSplit
  • Called right before an item is split into multiple stacks
  • Returning an Item overrides default behavior
Copy
Item OnItemSplit(Item item, int amount)
{
    Puts("OnItemSplit works!");
    return null;
}
OnItemUpgrade
  • Called right before an item is upgraded
  • No return behavior
Copy
void OnItemUpgrade(Item item, Item upgraded, BasePlayer player)
{
    Puts("OnItemUpgrade works!");
}
OnItemUse
  • Called when an item is used
  • Returning an int overrides the amount consumed.
Copy
int OnItemUse(Item item, int amountToUse)
{
    Puts("OnItemUse works!");
    return amountToUse;
}
OnLoseCondition
  • Called right before the condition of the item is modified
  • No return behavior
Copy
void OnLoseCondition(Item item, ref float amount)
{
    Puts("OnLoseCondition works!");
}
OnMaxStackable
  • Called when an items max stackable is calculated
  • Returning a numeric value (int) overrides the default value
Copy
int OnMaxStackable(Item item)
{
    Puts("OnMaxStackable works!");
    return 1;
}
OnTrapArm
  • Called when the player arms a bear trap
  • Returning a non-null value overrides default behavior
Copy
object OnTrapArm(BearTrap trap, BasePlayer player)
{
    Puts("OnTrapArm works!");
    return null;
}
OnTrapDisarm
  • Called when the player disarms a land mine
  • Returning a non-null value overrides default behavior
Copy
object OnTrapDisarm(Landmine trap, BasePlayer player)
{
    Puts("OnTrapDisarm works!");
    return null;
}
OnTrapSnapped
  • Called when a trap is triggered by a game object
  • No return behavior
Copy
void OnTrapSnapped(BaseTrapTrigger trap, GameObject go)
{
    Puts("OnTrapSnapped works!");
}
OnTrapTrigger
  • Called when a trap is triggered by a game object
  • Returning a non-null value overrides default behavior
Copy
object OnTrapTrigger(BaseTrap trap, GameObject go)
{
    Puts("OnTrapTrigger works!");
    return null;
}
OnBonusItemDrop
  • Called when a loot container is about to drop bonus scrap for a player who has a corresponding tea buff
  • Returning a non-null value overrides default behavior
Copy
object OnBonusItemDrop(Item item, BasePlayer player)
{
    Puts("OnBonusItemDrop works!");
    return null;
}
OnBonusItemDropped
  • Called after a loot container has dropped bonus scrap for a player who has a corresponding tea buff
  • No return behavior
Copy
void OnBonusItemDropped(Item item, BasePlayer player)
{
    Puts("OnBonusItemDropped works!");
}
OnItemRefill
  • Called right before an item such as a diving tank is repaired without using a repair bench
  • Returning a non-null value overrides default behavior
Copy
object OnItemRefill(Item item, BasePlayer player)
{
    Puts("OnItemRefill works!");
    return null;
}
OnItemLock
  • Called right before an item is locked, such as in a modular car inventory
  • Returning a non-null value overrides default behavior
Copy
object OnItemLock(Item item)
{
    Puts("OnItemLock works!");
    return null;
}
OnItemUnlock
  • Called right before an item is unlocked, such as in a modular car inventory
  • Returning a non-null value overrides default behavior
Copy
object OnItemUnlock(Item item)
{
    Puts("OnItemUnlock works!");
    return null;
}
OnItemSubmit
  • Called when a player submits an item into a mailbox or dropbox
  • Returning a non-null value cancels default behavior
Copy
object OnItemSubmit(Item item, Mailbox mailbox, BasePlayer player)
{
    Puts("OnItemSubmit works!");
    return null;
}
OnItemStacked
  • Called after an item has been stacked
  • No return behavior
Copy
void OnItemStacked(Item destinationItem, Item sourceItem, ItemContainer destinationContainer)
{
    Puts("OnItemStacked works!");
}
OnIngredientsCollect
  • Called when ingredients are about to be collected for crafting an item
  • Returning a non-null value cancels default behavior
Copy
bool? OnIngredientsCollect(ItemCrafter itemCrafter, ItemBlueprint blueprint, ItemCraftTask task, int amount, BasePlayer player)
{
    Puts("OnIngredientsCollect works!");
    return null;
}

Resource Hooks

OnCollectiblePickup
  • Called when the player collects an item
  • Returning a non-null value overrides default behavior
Copy
object OnCollectiblePickup(CollectibleEntity collectible, BasePlayer player)
{
    Puts("OnCollectiblePickup works!");
    return null;
}
CanTakeCutting
  • Called when a player is trying to take a cutting (clone) of a GrowableEntity
  • Returning a non-null value cancels default behavior
Copy
object CanTakeCutting(BasePlayer player, GrowableEntity entity)
{
    Puts("CanTakeCutting works!");
    return null;
}
OnQuarryToggled
  • Called when a quarry has just been toggled
  • No return behavior
Copy
void OnQuarryToggled(MiningQuarry quarry, BasePlayer player)
{
    Puts($"{player.displayName} has toggled a quarry");
}
OnGrowableGathered
  • Called before the player receives an item from gathering a growable entity
  • No return behavior
Copy
void OnGrowableGathered(GrowableEntity plant, Item item, BasePlayer player)
{
    Puts($"{player.displayName} has gathered {item.info.shortname} x {item.amount}.");
}
OnRemoveDying
  • Called when a player is trying to harvest a dying growable entity
  • Returning a non-null value overrides default behavior
Copy
object OnRemoveDying(GrowableEntity plant, BasePlayer player)
{
    Puts("OnRemoveDying works!");
    return null;
}
OnGrowableGather
  • Called when the player gathers a growable entity
  • Returning a non-null value overrides default behavior
Copy
object OnGrowableGather(GrowableEntity plant, BasePlayer player)
{
    Puts("OnGrowableGather works!");
    return null;
}
OnDispenserBonus
  • Called before the player is given a bonus item for gathering
  • Returning an Item replaces the existing Item
Copy
void OnDispenserBonus(ResourceDispenser dispenser, BasePlayer player, Item item)
{
    Puts("OnDispenserBonus works!");
}
OnDispenserGather
  • Called before the player is given items from a resource
  • Returning a non-null value overrides default behavior
Copy
object OnDispenserGather(ResourceDispenser dispenser, BasePlayer player, Item item)
{
    Puts("OnDispenserGather works!");
    return null;
}
OnQuarryEnabled
  • Called when a mining quarry is turned on/enabled
  • No return behavior
Copy
void OnQuarryEnabled(MiningQuarry quarry)
{
    Puts("OnQuarryEnabled works!");
}
OnTreeMarkerHit
  • Called when a player hits a tree with a tool (rock, hatchet, etc.)
  • Returning true or false overrides default behaviour
Copy
bool? OnTreeMarkerHit(TreeEntity tree, HitInfo info)
{
    Puts("OnTreeMarkerHit works!");
    return null;
}
OnQuarryGather
  • Called before items are gathered from a quarry
  • No return behavior
Copy
void OnQuarryGather(MiningQuarry quarry, Item item)
{
    Puts("OnQuarryGather works!");
}
OnSurveyGather
  • Called before items are gathered from a survey charge
  • No return behavior
Copy
void OnSurveyGather(SurveyCharge survey, Item item)
{
    Puts("OnSurveyGather works!");
}

Structure Hooks

OnCodeEntered
  • Called when the player has entered a code in a codelock
  • Returning a non-null value overrides default behavior
Copy
object OnCodeEntered(CodeLock codeLock, BasePlayer player, string code)
{
    Puts("OnCodeEntered works!");
    return null;
}
OnCupboardAuthorize
  • Called when a cupboard attempts to authorize a player
  • Returning a non-null value overrides default behavior
Copy
object OnCupboardAuthorize(BuildingPrivlidge privilege, BasePlayer player)
{
    Puts("OnCupboardAuthorize works!");
    return null;
}
OnCupboardClearList
  • Called when an attempt is made to clear a cupboard authorized list
  • Returning a non-null value overrides default behavior
Copy
object OnCupboardClearList(BuildingPrivlidge privilege, BasePlayer player)
{
    Puts("OnCupboardClearList works!");
    return null;
}
OnCupboardDeauthorize
  • Called when a cupboard attempts to deauthorize a player
  • Returning a non-null value overrides default behavior
Copy
object OnCupboardDeauthorize(BuildingPrivlidge privilege, BasePlayer player)
{
    Puts("OnCupboardDeauthorize works!");
    return null;
}
OnDoorClosed
  • Called when the player closed a door
  • No return behavior
Copy
void OnDoorClosed(Door door, BasePlayer player)
{
    Puts("OnDoorClosed works!");
}
OnDoorOpened
  • Called when the player opened a door
  • No return behavior
Copy
void OnDoorOpened(Door door, BasePlayer player)
{
    Puts("OnDoorOpened works!");
}
OnDoorKnocked
  • Called when the player knocks on a door
  • No return behavior
Copy
void OnDoorKnocked(Door door, BasePlayer player)
{
    Puts("OnDoorKnocked works!");
}
OnEntityBuilt
  • Called when any structure is built (walls, ceilings, stairs, etc.)
  • No return behavior
Copy
void OnEntityBuilt(Planner plan, GameObject go)
{
    Puts("OnEntityBuilt works!");
}
OnHammerHit
  • Called when the player has hit something with a hammer
  • Returning a non-null value overrides default behavior
Copy
object OnHammerHit(BasePlayer player, HitInfo info)
{
    Puts("OnHammerHit works!");
    return null;
}
OnStructureDemolish
  • Called when the player selects Demolish or DemolishImmediate from the BuildingBlock or BaseCombatEntity menu
  • Returning a non-null value overrides default behavior
Copy
object OnStructureDemolish(BaseCombatEntity entity, BasePlayer player, bool immediate)
{
    Puts("OnStructureDemolish works!");
    return null;
}
OnStructureRepair
  • Called when the player repairs a BuildingBlock or BaseCombatEntity
  • Returning a non-null value cancels repair
Copy
object OnStructureRepair(BaseCombatEntity entity, BasePlayer player)
{
    Puts("OnStructureRepair works!");
    return null;
}
OnStructureRotate
  • Called when the player rotates a BuildingBlock or BaseCombatEntity
  • Returning a non-null value cancels rotate
Copy
object OnStructureRotate(BaseCombatEntity entity, BasePlayer player)
{
    Puts("OnStructureRotate works!");
    return null;
}
OnStructureUpgrade
  • Called when the player upgrades the grade of a BuildingBlock or BaseCombatEntity
  • Returning a non-null value overrides default behavior
Copy
object OnStructureUpgrade(BaseCombatEntity entity, BasePlayer player, BuildingGrade.Enum grade)
{
    Puts("OnStructureUpgrade works!");
    return null;
}
OnConstructionPlace
  • Called when a player tries to place a building block
  • Returning a non-null value overrides default behavior
Copy
object OnConstructionPlace(BaseEntity entity, Construction component, Construction.Target constructionTarget, BasePlayer player)
{
    Puts("OnConstructionPlace works!");
    return null;
}
OnBuildingSplit
  • Called when a building is split into two
  • No return behavior
Copy
void OnBuildingSplit(BuildingManager.Building building, uint newBuildingId)
{
    Puts("OnBuildingSplit works!");
}

Terrain Hooks

OnTerrainInitialized
  • Called after the terrain generation process has completed
  • No return behavior
Copy
void OnTerrainInitialized()
{
    Puts("OnTerrainInitialized works!");
}

Vending Hooks

CanAdministerVending
  • Called when a player attempts to administer a vending machine
  • Returning true or false overrides default behavior
Copy
bool CanAdministerVending(BasePlayer player, VendingMachine machine)
{
    Puts("CanAdministerVending works!");
    return true;
}
OnTakeCurrencyItem
  • Called before currency item is taken
  • Returning a non-null value cancels default behavior
Copy
object OnTakeCurrencyItem(VendingMachine vending, Item item)
{
    Puts("OnTakeCurrencyItem works!");
    return null;
}
OnGiveSoldItem
  • Called before a sold item is given
  • Returning a non-null value cancels default behavior
Copy
object OnGiveSoldItem(NPCVendingMachine vending, Item soldItem, BasePlayer buyer)
{
    Puts("OnGiveSoldItem works!");
    return null;
}
Copy
object OnGiveSoldItem(VendingMachine vending, Item soldItem, BasePlayer buyer)
{
    Puts("OnGiveSoldItem works!");
    return null;
}
OnVendingShopRename
  • Called when a player tries to rename vending shop
  • Returning a non-null value cancels default behavior
Copy
object OnVendingShopRename(VendingMachine vending, string newName, BasePlayer player)
{
    Puts("OnVendingShopRename works!");
    return null;
}
CanUseVending
  • Called when a player attempts to use a vending machine
  • Returning true or false overrides default behavior
Copy
bool CanUseVending(BasePlayer player, VendingMachine machine)
{
    Puts("CanUseVending works!");
    return true;
}
CanVendingAcceptItem
  • Called when a player attempts to administer a vending machine
  • Returning true or false overrides default behavior
Copy
bool CanVendingAcceptItem(VendingMachine vending, Item item, int targetPos)
{
    Puts("CanVendingAcceptItem works!");
    return true;
}
OnAddVendingOffer
  • Called when a sell order/offer is added to a vending machine
  • No return behavior
Copy
void OnAddVendingOffer(VendingMachine machine, ProtoBuf.VendingMachine.SellOrder sellOrder)
{
    Puts("OnAddVendingOffer works!");
}
OnBuyVendingItem
  • Called when a player buys an item from a vending machine
  • Returning a non-null value overrides default behavior
Copy
object OnBuyVendingItem(VendingMachine machine, BasePlayer player, int sellOrderId, int numberOfTransactions)
{
    Puts("OnBuyVendingItem works!");
    return null;
}
OnDeleteVendingOffer
  • Called when a sell order/offer is deleted from a vending machine
  • No return behavior
Copy
void OnDeleteVendingOffer(VendingMachine machine, int offerId)
{
    Puts("OnDeleteVendingOffer works!");
}
OnOpenVendingAdmin
  • Called when a player opens the admin ui for a vending machine
  • No return behavior
Copy
void OnOpenVendingAdmin(VendingMachine machine, BasePlayer player)
{
    Puts("OnOpenVendingAdmin works!");
}
OnVendingShopOpened
  • Called when a player opens the customer ui for a vending machine
  • No return behavior
Copy
void OnVendingShopOpened(VendingMachine machine, BasePlayer player)
{
    Puts("OnVendingShopOpened works!");
}
OnRefreshVendingStock
  • Called when the stock on a vending machine is updated
  • No return behavior
Copy
void OnRefreshVendingStock(VendingMachine machine, Item item)
{
    Puts("OnRefreshVendingStock works!");
}
OnRotateVendingMachine
  • Called when a player attempts to rotate a vending machine
  • Returning a non-null value overrides default behavior
Copy
object OnRotateVendingMachine(VendingMachine machine, BasePlayer player)
{
    Puts("OnRotateVendingMachine works!");
    return null;
}
OnToggleVendingBroadcast
  • Called when a player toggles the broadcasting of the vending machine
  • No return behavior
Copy
void OnToggleVendingBroadcast(VendingMachine machine, BasePlayer player)
{
    Puts("OnToggleVendingBroadcast works!");
}
OnVendingTransaction
  • Called when a player attempts to buy an item from a vending machine
  • Returning true or false overrides default behavior
Copy
bool OnVendingTransaction(VendingMachine machine, BasePlayer buyer, int sellOrderId, int numberOfTransactions)
{
    Puts("OnVendingTransaction works!");
    return true;
}
OnNpcGiveSoldItem
  • Called before a non-player controlled vending machine (at outpost etc.) gives the player the item they purchased.
  • Returning a non-null value overrides default behaviour.
Copy
object OnNpcGiveSoldItem(NPCVendingMachine machine, Item soldItem, BasePlayer buyer)
{
    Puts("OnNpcGiveSoldItem works!");
    return null;
}

Weapon Hooks

CanCreateWorldProjectile
  • Called when the item creates a projectile in the world
  • Returning a non-null value overrides default behavior
Copy
object CanCreateWorldProjectile(HitInfo info, ItemDefinition itemDef)
{
    Puts("CanCreateWorldProjectile works!");
    return null;
}
OnProjectileRicochet
  • Called when a player's weapon projectile ricochets
  • Returning a non-null value overrides default behavior
Copy
object OnProjectileRicochet(BasePlayer player, PlayerProjectileRicochet ricochet)
{
    Puts("OnProjectileRicochet works!");
    return null;
}
OnExplosiveDud
  • Called when explosive tries to become dud
  • Returning a non-null value cancels default behavior
Copy
object OnExplosiveDud(DudTimedExplosive explosive)
{
    Puts("OnExplosiveDud works!");
    return null;
}
OnAmmoUnload
  • Called when a player is trying to unload ammo
  • Returning a non-null value cancels default behavior
Copy
object OnAmmoUnload(BaseProjectile projectile, Item item, BasePlayer player)
{
    Puts("OnAmmoUnload works!");
    return null;
}
OnExplosiveFuseSet
  • Called when a fuse of an explosive is set
  • Returning a non-null value overwrites fuse length
Copy
object OnExplosiveFuseSet(TimedExplosive explosive, float fuseLength)
{
    Puts("OnExplosiveFuseSet works!");
    return null;
}
CanExplosiveStick
  • Called when a Timed Explosive is attempting to stick to another entity
  • Returning a non-null value overwrites the default behavior
Copy
object CanExplosiveStick(TimedExplosive explosive, BaseEntity entity)
{
    Puts("CanExplosiveStick works!");
    return null;
}
OnWorldProjectileCreate
  • Called when a projectile is created
  • Returning a non-null value overrides default behavior
Copy
object OnWorldProjectileCreate(HitInfo hitInfo, Item item)
{
    Puts("OnWorldProjectileCreate works!");
    return null;
}
OnExplosiveDropped
  • Called when the player drops an explosive item (C4, grenade, ...)
  • No return behavior
Copy
void OnExplosiveDropped(BasePlayer player, BaseEntity entity, ThrownWeapon item)
{
    Puts("OnExplosiveDropped works!");
}
OnExplosiveThrown
  • Called when the player throws an explosive item (C4, grenade, ...)
  • No return behavior
Copy
void OnExplosiveThrown(BasePlayer player, BaseEntity entity, ThrownWeapon item)
{
    Puts("OnExplosiveThrown works!");
}
OnFlameThrowerBurn
  • Called when the burn from a flame thrower spreads
  • No return behavior
Copy
void OnFlameThrowerBurn(FlameThrower thrower, BaseEntity flame)
{
    Puts("OnFlameThrowerBurn works!");
}
OnMeleeThrown
  • Called when the player throws a melee item (axe, rock, ...)
  • No return behavior
Copy
void OnMeleeThrown(BasePlayer player, Item item)
{
    Puts("OnMeleeThrown works!");
}
OnMagazineReload
  • Called when the player reloads a magazine
  • Returning a non-null value overrides default behavior
Copy
object OnMagazineReload(BaseProjectile weapon, IAmmoContainer desiredAmount, BasePlayer player)
{
    Puts("OnMagazineReload works!");
    return null;
}
OnWeaponReload
  • Called when the player reloads a weapon
  • Returning a non-null value overrides default behavior
Copy
object OnWeaponReload(BaseProjectile weapon, BasePlayer player)
{
    Puts("OnWeaponReload works!");
    return null;
}
OnRocketLaunched
  • Called when the player launches a rocket
  • No return behavior
Copy
void OnRocketLaunched(BasePlayer player, BaseEntity entity)
{
    Puts("OnRocketLaunched works!");
}
OnAmmoSwitch
  • Called when the player starts to switch the ammo in a weapon
  • Returning a non-null value overrides default behavior
Copy
object OnAmmoSwitch(BaseProjectile weapon, BasePlayer player)
{
    Puts("OnAmmoSwitch works!");
    return null;
}
OnWeaponFired
  • Called when the player fires a weapon
  • No return behavior
Copy
void OnWeaponFired(BaseProjectile projectile, BasePlayer player, ItemModProjectile mod, ProtoBuf.ProjectileShoot projectiles)
{
    Puts("OnWeaponFired works!");
}

Vehicle Hooks

CanUseHelicopter
  • Useful for denying to mount a CH47 helicopter
  • Returning a non-null value cancels default behavior
Copy
object CanUseHelicopter(BasePlayer player, CH47HelicopterAIController helicopter)
{
    Puts("CanUseHelicopter works!");
    return null;
}
OnBoatPathGenerate
  • Called when generating ocean patrol path for CargoShip
  • Returning a List overrides default behavior
Copy
List<Vector3> OnBoatPathGenerate()
{
    Puts("OnBoatPathGenerate works!");
    return null;
}
OnVehicleModuleMove
  • Called when a player tries to move a vehicle module item that is currently on a vehicle
  • Returning a non-null value overrides default behavior
Copy
object OnVehicleModuleMove(BaseVehicleModule module, BaseModularVehicle vehicle, BasePlayer player)
{
    Puts("OnVehicleModuleMove works!");
    return null;
}
OnEngineStart
  • Called when a player tries to start a vehicle engine
  • Returning a non-null value overrides default behavior
Copy
object OnEngineStart(BaseVehicle vehicle, BasePlayer driver)
{
    Puts("OnEngineStart works!");
    return null;
}
OnEngineStarted
  • Called right after a vehicle engine has started
  • No return behavior
Copy
void OnEngineStarted(BaseVehicle vehicle, BasePlayer driver)
{
    Puts("OnEngineStarted works!");
}
OnEngineStopped
  • Called right after a vehicle engine has stopped
  • No return behavior
Copy
void OnEngineStopped(BaseVehicle vehicle)
{
    Puts("OnEngineStopped works!");
}
OnEngineStop
  • Called when a vehicle engine is about to stop
  • Returning a non-null value overrides default behavior
Copy
object OnEngineStop(BaseVehicle vehicle)
{
    Puts("OnEngineStop works!");
    return null;
}
OnEngineStatsRefresh
  • Called right before the stats of a modular car engine are refreshed
  • Returning a non-null value overrides default behavior
Copy
object OnEngineStatsRefresh(VehicleModuleEngine engineModule, EngineStorage engineStorage)
{
    Puts("OnEngineStatsRefresh works!");
    return null;
}
OnEngineStatsRefreshed
  • Called right after the stats of a modular car engine are refreshed
  • No return behavior
Copy
void OnEngineStatsRefreshed(VehicleModuleEngine engineModule, EngineStorage engineStorage)
{
    Puts("OnEngineStatsRefreshed works!");
}
OnVehicleModuleSelect
  • Called right after a player has selected a vehicle module item in a car inventory, but before they are shown the corresponding storage container
  • Returning a non-null value overrides default behavior
Copy
object OnVehicleModuleSelect(Item moduleItem, ModularCarGarage carLift, BasePlayer player)
{
    Puts("OnVehicleModuleSelect works!");
    return null;
}
OnVehicleModuleSelected
  • Called right after a player has selected a vehicle module item in a car's inventory, and after they have been shown the corresponding storage container if applicable
  • No return behavior
Copy
void OnVehicleModuleSelected(Item moduleItem, ModularCarGarage carLift, BasePlayer player)
{
    Puts("OnVehicleModuleSelected works!");
}
OnVehicleModuleDeselected
  • Called right after a player deselects a vehicle module item in a car's inventory
  • No return behavior
Copy
void OnVehicleModuleDeselected(ModularCarGarage carLift, BasePlayer player)
{
    Puts("OnVehicleModuleDeselected works!");
}
OnHotAirBalloonToggle
  • Called when a player tries to toggle a hot air balloon on or off
  • Returning a non-null value overrides default behavior
Copy
object OnHotAirBalloonToggle(HotAirBalloon balloon, BasePlayer player)
{
    Puts("OnHotAirBalloonToggle works!");
    return null;
}
OnHotAirBalloonToggled
  • Called right after a player has toggled a hot air balloon on or off
  • No return behavior
Copy
void OnHotAirBalloonToggled(HotAirBalloon balloon, BasePlayer player)
{
    Puts("OnHotAirBalloonToggled works!");
}
OnVehicleModulesAssign
  • Called right after a modular car has spawned, but before module items are added to its inventory from a preset
  • Returning a non-null value overrides default behavior
Copy
object OnVehicleModulesAssign(ModularCar car, ItemModVehicleModule[] modulePreset)
{
    Puts("OnVehicleModulesAssign works!");
    return null;
}
OnVehicleModulesAssigned
  • Called right after a car has spawned and its module inventory has been filled with module items from a preset
  • No return behavior
Copy
void OnVehicleModulesAssigned(ModularCar car, ItemModVehicleModule[] modulePreset)
{
    Puts("OnVehicleModulesAssigned works!");
}
OnVehiclePush
  • Called when a player tries to push a vehicle
  • Returning a non-null value overrides default behavior
Copy
object OnVehiclePush(BaseVehicle vehicle, BasePlayer player)
{
    Puts("OnVehiclePush works!");
    return null;
}
CanCheckFuel
  • Called when a player tries to loot a vehicle's fuel container
  • Returning true or false overrides default behavior
Copy
object CanCheckFuel(EntityFuelSystem fuelSystem, StorageContainer fuelContainer, BasePlayer player)
{
    Puts("CanCheckFuel works!");
    return null;
}
CanUseFuel
  • Called before a vehicle fuel system consumes fuel
  • Returning true or false overrides default behavior
Copy
object CanUseFuel(EntityFuelSystem fuelSystem, StorageContainer fuelContainer, float currentSeconds, float fuelPerSecond)
{
    Puts("CanUseFuel works!");
    return null;
}
OnFuelCheck
  • Called when determining whether a vehicle has sufficient fuel
  • Returning true or false overrides default behavior
Copy
object OnFuelCheck(EntityFuelSystem fuelSystem)
{
    Puts("OnFuelCheck works!");
    return null;
}
OnFuelAmountCheck
  • Called when the amount of fuel in a vehicle is being determined
  • Returning a numeric value (int) overrides the default value
Copy
object OnFuelAmountCheck(EntityFuelSystem fuelSystem, Item fuelItem)
{
    Puts("OnFuelAmountCheck works!");
    return null;
}
OnFuelItemCheck
  • Called when determining which item should be used to fuel a vehicle
  • Returning an Item overrides default behavior
Copy
object OnFuelItemCheck(EntityFuelSystem fuelSystem, StorageContainer fuelContainer)
{
    Puts("OnFuelItemCheck works!");
    return null;
}

Team Hooks

OnTeamCreate
  • Useful for canceling team creation
  • Returning a non-null value cancels default behavior
Copy
object OnTeamCreate(BasePlayer player)
{
    Puts("OnTeamCreate works!");
    return null;
}
OnTeamInvite
  • Useful for canceling an invitation
  • Returning a non-null value cancels default behavior
Copy
object OnTeamInvite(BasePlayer inviter, BasePlayer target)
{
    Puts($"{inviter.displayName} invited {target.displayName} to his team");
    return null;
}
OnTeamRejectInvite
  • Useful for canceling the invitation rejection
  • Returning a non-null value cancels default behavior
Copy
object OnTeamRejectInvite(BasePlayer rejector, RelationshipManager.PlayerTeam team)
{
    Puts("OnTeamRejectInvite works!");
    return null;
}
OnTeamPromote
  • Useful for canceling player's promotion in the team
  • Returning a non-null value cancels default behavior
Copy
object OnTeamPromote(RelationshipManager.PlayerTeam team, BasePlayer newLeader)
{
    Puts("OnTeamPromote works!");
    return null;
}
OnTeamLeave
  • Useful for canceling the leave from the team
  • Returning a non-null value cancels default behavior
Copy
object OnTeamLeave(RelationshipManager.PlayerTeam team, BasePlayer player)
{
    Puts("OnTeamLeave works!");
    return null;
}
OnTeamKick
  • Useful for canceling kick of the player from the team
  • Returning a non-null value cancels default behavior
Copy
object OnTeamKick(RelationshipManager.PlayerTeam team, BasePlayer player, ulong target)
{
    Puts("OnTeamKick works!");
    return null;
}
OnTeamAcceptInvite
  • Useful for canceling team invitation acceptation
  • Returning a non-null value cancels default behavior
Copy
object OnTeamAcceptInvite(RelationshipManager.PlayerTeam team, BasePlayer player)
{
    Puts("OnTeamAcceptInvite works!");
    return null;
}
OnTeamDisband
  • Useful for canceling team disbandment
  • Returning a non-null value cancels default behavior
Copy
object OnTeamDisband(RelationshipManager.PlayerTeam team)
{
    Puts("OnTeamDisband works!");
    return null;
}
OnTeamDisbanded
  • Called when the team was disbanded
  • No return behavior
Copy
void OnTeamDisbanded(RelationshipManager.PlayerTeam team)
{
    Puts("OnTeamDisbanded works!");
}
OnTeamUpdate
  • Called when player's team is updated
  • Returning a non-null value cancels default behavior
Copy
object OnTeamUpdate(ulong currentTeam, ulong newTeam, BasePlayer player)
{
    Puts("OnTeamUpdate works!");
    return null;
}
OnTeamUpdated
  • Called before sending team info to player
  • Returning a non-null value cancels default behavior
Copy
object OnTeamUpdated(ulong currentTeam, PlayerTeam playerTeam, BasePlayer player)
{
    Puts("OnTeamUpdate works!");
    return null;
}
OnTeamCreated
  • Called after a team was created
  • No return behavior
Copy
void OnTeamCreated(BasePlayer player, RelationshipManager.PlayerTeam team)
{
    Puts("OnTeamCreated works!");
}

World Hooks

OnWorldPrefabSpawned
  • Called when a world prefab was spawned
  • No return behavior
Copy
void OnWorldPrefabSpawned(GameObject gameObject, string category)
{
    Puts("OnWorldPrefabSpawned works!");
}

Fishing Hooks

OnFishCaught
  • Called after a fish is caught
  • No return behavior
Copy
void OnFishCaught(ItemDefinition definition, BaseFishingRod rod, BasePlayer player)
{
    Puts($"A fish ({definition.shortname}) has just been caught by {player.displayName}!");
}
CanCatchFish
  • Called before a fish is caught
  • Returning true or false overrides default behavior
Copy
bool? CanCatchFish(BasePlayer player, BaseFishingRod rod, Item item)
{
    Puts("can we catch em fishes?");
    return null;
}
OnFishCatch
  • Called after a fish is caught, before the item is given
  • Returning a non-null value overrides default behavior
Copy
Item OnFishCatch(Item item, BaseFishingRod rod, BasePlayer player)
{
    Puts($"{player.displayName} has just caught {item.amount} x {item.info.shortname}!");
    return null;
}
OnFishingStopped
  • Called just after the fishing minigame has been stopped.
  • No return behaviour
Copy
void OnFishingStopped(BaseFishingRod rod, BaseFishingRod.FailReason reason)
{
    Puts("OnFishingStopped works!");
}

Electronic Hooks

OnExcavatorSuppliesRequest
  • Called just after the excavator supply computer is triggered, before the plane is spawned.
  • Returning non-null overrides default behaviour.
Copy
object OnExcavatorSuppliesRequest(ExcavatorSignalComputer computer, BasePlayer player)
{
    Puts("OnExcavatorSuppliesRequest works!");
    return null;
}
OnExcavatorSuppliesRequested
  • Called after the excavator signal computer was triggered, just after the supply plane is spawned.
Copy
void OnExcavatorSuppliesRequested(ExcavatorSignalComputer computer, BasePlayer player, BaseEntity cargoPlane)
{
    Puts("OnExcavatorSuppliesRequested works!");
}

Clan Hooks

OnClanLogoChanged
  • Called after a player changes a clan logo
  • No return behavior
Copy
void OnClanLogoChanged(LocalClan clan, byte[] logo, ulong steamId)
{
    Puts("OnClanLogoChanged works!");
}
OnClanColorChanged
  • Called after a player changes a clan color
  • No return behavior
Copy
void OnClanColorChanged(LocalClan clan, Color32 color, ulong steamId)
{
    Puts("OnClanColorChanged works!");
}
OnClanMemberKicked
  • Called after a player has kicked another player from a clan
  • No return behavior
Copy
void OnClanMemberKicked(LocalClan clan, ulong steamId, ulong bySteamId)
{
    Puts("OnClanMemberKicked works!");
}
OnClanMemberLeft
  • Called after a player has voluntarily left a clan
  • No return behavior
Copy
void OnClanMemberLeft(LocalClan clan, ulong steamId)
{
    Puts("OnClanMemberLeft works!");
}
OnClanMemberAdded
  • Called after a player has accepted a clan invite
  • No return behavior
Copy
void OnClanMemberAdded(long clanId, ulong steamId)
{
    Puts("OnClanMemberAdded works!");
}
OnClanCreated
  • Called after a player has created a clan
  • No return behavior
Copy
void OnClanCreated(LocalClan clan, ulong steamId)
{
    Puts("OnClanCreated works!");
}
OnClanDisbanded
  • Called after a player disbands a clan
  • No return behavior
Copy
void OnClanDisbanded(LocalClan clan, ulong steamId)
{
    Puts("OnClanDisbanded works!");
}

Sign Hooks

OnSignLocked
  • Called after the player has locked a sign or photo frame
  • No return behavior
Copy
void OnSignLocked(Signage sign, BasePlayer player)
{
    Puts("OnSignLocked works!");
}
Copy
void OnSignLocked(PhotoFrame photoFrame, BasePlayer player)
{
    Puts("OnSignLocked works!");
}
OnSignUpdated
  • Called after the player has changed the text on a sign or updated a photo frame
  • No return behavior
Copy
void OnSignUpdated(Signage sign, BasePlayer player, int textureIndex)
{
    Puts("OnSignUpdated works!");
}
Copy
void OnSignUpdated(PhotoFrame photoFrame, BasePlayer player)
{
    Puts("OnSignUpdated works!");
}
Copy
void OnSignUpdated(CarvablePumpkin pumpkin, BasePlayer player)
{
    Puts("OnSignUpdated works!");
}
OnSpinWheel
  • Called when the player spins a spinner wheel
  • No return behavior
Copy
void OnSpinWheel(BasePlayer player, SpinnerWheel wheel)
{
    Puts("OnSpinWheel works!");
}

TechTree Hooks

CanUnlockTechTreeNode
  • Called when a player is attempting to unlock a blueprint in a tech tree
  • Returning true or false overrides default behavior
  • Useful for bypassing unlock requirements or disallowing particular blueprints from being unlocked
Copy
object CanUnlockTechTreeNode(BasePlayer player, TechTreeData.NodeInstance node, TechTreeData techTree)
{
    Puts("CanUnlockTechTreeNode works!");
    return null;
}
CanUnlockTechTreeNodePath
  • Called when a player is attempting to unlock a blueprint in a tech tree, after the CanUnlockTechTreeNode hook, when determining whether they have the prerequisite blueprints unlocked
  • Returning true or false overrides default behavior
  • Useful for customizing prerequisites without conflicting with the CanPlayerUnlock hook
Copy
object CanUnlockTechTreeNodePath(BasePlayer player, TechTreeData.NodeInstance node, TechTreeData techTree)
{
    Puts("CanUnlockTechTreeNodePath works!");
    return null;
}
OnTechTreeNodeUnlock
  • Called when a player is attempting to unlock a blueprint in a tech tree, after the CanUnlockTechTreeNode and CanUnlockTechTreeNodePath hooks, before the player is charged scrap
  • Returning a non-null value overrides default behavior
  • Useful for replacing the default behavior to charge the player a different currency, or to unlock multiple blueprints at once (such as those leading up to the one selected)
Copy
object OnTechTreeNodeUnlock(Workbench workbench, TechTreeData.NodeInstance node, BasePlayer player)
{
    Puts("OnTechTreeNodeUnlock works!");
    return null;
}
OnTechTreeNodeUnlocked
  • Called after a player has unlocked a blueprint in a tech tree
  • No return behavior
  • Useful for automatically unlocking blueprints for team members
Copy
void OnTechTreeNodeUnlocked(Workbench workbench, TechTreeData.NodeInstance node, BasePlayer player)
{
    Puts("OnTechTreeNodeUnlocked works!");
}

Phone Hooks

OnPhoneDial
  • Called when a player places a phone call
  • Returning a non-null value overrides default behavior
Copy
object OnPhoneDial(PhoneController callerPhone, PhoneController receiverPhone, BasePlayer player)
{
    Puts("OnPhoneDial works!");
    return null;
}
CanReceiveCall
  • Called when a player tries to place a phone call
  • Returning true or false overrides default behavior
Copy
object CanReceiveCall(PhoneController receiverPhone)
{
    Puts("CanReceiveCall works!");
    return null;
}
OnPhoneAnswer
  • Called when a player tries to answer a phone call
  • Returning a non-null value overrides default behavior
Copy
object OnPhoneAnswer(PhoneController receiverPhone, PhoneController callerPhone)
{
    Puts("OnPhoneAnswer works!");
    return null;
}
OnPhoneAnswered
  • Called right after a player has answered a phone call
  • No return behavior
Copy
void OnPhoneAnswered(PhoneController receiverPhone, PhoneController callerPhone)
{
    Puts("OnPhoneAnswered works!");
}
OnPhoneCallStart
  • Called after a phone has been answered, right before voice communication is established
  • Returning a non-null value overrides default behavior
Copy
object OnPhoneCallStart(PhoneController phone, PhoneController otherPhone, BasePlayer player)
{
    Puts("OnPhoneCallStart works!");
    return null;
}
OnPhoneCallStarted
  • Called right after a phone call has been answered and voice communication has been established
Copy
void OnPhoneCallStarted(PhoneController phone, PhoneController otherPhone, BasePlayer player)
{
    Puts("OnPhoneCallStarted works!");
}
OnPhoneDialFail
  • Called when a phone call is about to end or fail to start
  • Returning a non-null value overrides default behavior
Copy
object OnPhoneDialFail(PhoneController phone, Telephone.DialFailReason reason, BasePlayer player)
{
    Puts("OnPhoneDialFail works!");
    return null;
}
OnPhoneDialFailed
  • Called after a phone call has ended or failed to start
  • No return behavior
Copy
void OnPhoneDialFailed(PhoneController phone, Telephone.DialFailReason reason, BasePlayer player)
{
    Puts("OnPhoneDialFailed works!");
}
OnPhoneDialTimeout
  • Called when a phone is about to automatically hang up because the receiver phone wasn't answered in time
  • Returning a non-null value overrides default behavior
Copy
object OnPhoneDialTimeout(PhoneController callerPhone, PhoneController receiverPhone, BasePlayer player)
{
    Puts("OnPhoneDialTimeout works!");
    return null;
}
OnPhoneDialTimedOut
  • Called right after a phone was automatically hung up because the receiver phone wasn't answered in time
  • No return behavior
Copy
void OnPhoneDialTimedOut(PhoneController callerPhone, PhoneController receiverPhone, BasePlayer player)
{
    Puts("OnPhoneDialTimedOut works!");
}
OnPhoneNameUpdate
  • Called when a player tries to update a phone name
  • Returning a non-null value overrides default behavior
Copy
object OnPhoneNameUpdate(PhoneController phoneController, string name, BasePlayer player)
{
    Puts("OnPhoneNameUpdate works!");
    return null;
}
OnPhoneNameUpdated
  • Called after a player has updated a phone name
  • No return behavior
Copy
void OnPhoneNameUpdated(PhoneController phoneController, string name, BasePlayer player)
{
    Puts("OnPhoneNameUpdated works!");
}

Plugin Hooks

Loaded
  • Called when a plugin has finished loading
  • Other plugins may or may not be present, dependant on load order
  • No return behavior
Copy
void Loaded()
{
    Puts("Loaded works!");
}
Unload
  • Called when a plugin is being unloaded
  • No return behavior
Copy
void Unload()
{
    Puts("Save data, nullify static variables, etc.");
}
LoadDefaultConfig
  • Called when the config for a plugin should be initialized
  • Only called if the config file does not already exist
  • No return behavior
Copy
protected override void LoadDefaultConfig()
{
    Puts("Default configuration created");
}
LoadDefaultMessages
  • Called when the localization for a plugin should be registered
  • No return behavior
Copy
protected override void LoadDefaultMessages()
{
    lang.RegisterMessages(new Dictionary<string, string>
    {
        ["Example"] = "This is an example message!",
        ["AnotherExample"] = "Here is another example"
    }, this);
}

Permission Hooks

OnPermissionRegistered
  • Called when a permission has been registered
  • No return behavior
Copy
void OnPermissionRegistered(string name, Plugin owner)
{
    Puts($"Permission '{name}' has been registered {(owner != null ? $"for {owner.Title}" : "")}");
}
OnGroupPermissionGranted
  • Called when a permission has been granted to a group
  • No return behavior
Copy
void OnGroupPermissionGranted(string name, string perm)
{
    Puts($"Group '{name}' granted permission: {perm}");
}
OnGroupPermissionRevoked
  • Called when a permission has been revoked from a group
  • No return behavior
Copy
void OnGroupPermissionRevoked(string name, string perm)
{
    Puts($"Group '{name}' revoked permission: {perm}");
}
OnGroupCreated
  • Called when a group has been created successfully
  • No return behavior
Copy
void OnGroupCreated(string name)
{
    Puts($"Group '{name}' has been created!");
}
OnGroupDeleted
  • Called when a group has been deleted successfully
  • No return behavior
Copy
void OnGroupDeleted(string name)
{
    Puts($"Group '{name}' has been deleted!");
}
OnGroupTitleSet
  • Called when a group title has been updated
  • No return behavior
Copy
void OnGroupTitleSet(string name, string title)
{
    Puts($"Title '{title}' set on group '{name}'");
}
OnGroupRankSet
  • Called when a group rank has been updated
  • No return behavior
Copy
void OnGroupRankSet(string name, int rank)
{
    Puts($"Rank '{rank}' set on group '{name}'");
}
OnGroupParentSet
  • Called when a group parent has been updated
  • No return behavior
Copy
void OnGroupParentSet(string name, string parent)
{
    Puts($"Parent '{parent}' set on group '{name}'");
}